diff --git a/.c8rc.json b/.c8rc.json new file mode 100644 index 0000000000..fde64f42b6 --- /dev/null +++ b/.c8rc.json @@ -0,0 +1,17 @@ +{ + "reporter": ["html", "text"], + "reportsDirectory": "./coverage", + "src": ["src"], + "exclude": [ + "std/**/*", + "tests/**/*", + "dist/**/*", + "bin/asinit.js", + "lib/**/*", + "scripts/**/*", + "src/glue/wasm/**/*", + "util/browser/**/*" + ], + "clean": true, + "exclude-after-remap": true +} diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 1b5cc9d0e7..0000000000 --- a/.eslintignore +++ /dev/null @@ -1,6 +0,0 @@ -dist/ -docs/ -lib/parse/index.js -out/ -raw/ -tests/parser/ diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 1b86de1dfb..0000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,255 +0,0 @@ -module.exports = { - root: true, - parser: "@typescript-eslint/parser", - plugins: [ - "@typescript-eslint", - ], - extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - ], - parserOptions: { - ecmaVersion: 2020, - sourceType: "module", - ecmaFeatures: {} - }, - globals: { - "BigInt64Array": "readonly", - "BigUint64Array": "readonly", - "__non_webpack_require__": "readonly" - }, - - // === General rules ========================================================= - - rules: { - // Omitted semicolons are hugely popular, yet within the compiler it makes - // sense to be better safe than sorry. - "semi": "error", - - // Our code bases uses 2 spaces for indentation, and we enforce it here so - // files don't mix spaces, tabs or different indentation levels. - "indent": ["error", 2, { - "SwitchCase": 1, - "VariableDeclarator": "first", - "offsetTernaryExpressions": true, - "ignoredNodes": [ // FIXME: something's odd here - "ConditionalExpression > *", - "ConditionalExpression > * > *", - "ConditionalExpression > * > * > *" - ] - }], - - // This is mostly visual style, making comments look uniform. - "spaced-comment": ["error", "always", { - "markers": ["/"], // triple-slash - "exceptions": ["/"] // all slashes - }], - - // This tends to be annoying as it encourages developers to make everything - // that is never reassigned a 'const', sometimes semantically incorrect so, - // typically leading to huge diffs in follow-up PRs modifying affected code. - "prefer-const": "off", - - // It is perfectly fine to declare top-level variables with `var`, yet this - // rule doesn't provide configuration options that would help. - "no-var": "off", - - // Quite often, dealing with multiple related cases at once or otherwise - // falling through is exactly the point of using a switch. - "no-fallthrough": "off", - - // Typical false-positives here are `do { ... } while (true)` statements or - // similar, but the only option provided here is not checking any loops. - "no-constant-condition": ["error", { checkLoops: false }], - - // Functions are nested in blocks occasionally, and there haven't been any - // problems with this so far, so turning the check off. - "no-inner-declarations": "off", - - // Quite common in scenarios where an iteration starts at `current = this`. - "@typescript-eslint/no-this-alias": "off", - - // Disabled here, but enabled again for JavaScript files. - "no-unused-vars": "off", - - // Disabled here, but enabled again for TypeScript files. - "@typescript-eslint/no-unused-vars": "off" - }, - overrides: [ - - // === JavaScript rules ==================================================== - - { - env: { - "browser": true, - "amd": true, - "node": true, - "es6": true - }, - files: [ - "**/*.js", - "bin/*" - ], - rules: { - // Node's support for ESM is still not great, but this rule is likely - // to become activated once compatibility doesn't suck anymore. - "@typescript-eslint/no-var-requires": "off", - - // Enforcing to remove function parameters on stubs makes code less - // maintainable, so we instead allow unused function parameters. - "no-unused-vars": [ - "warn", { - "vars": "local", - "args": "none", - "ignoreRestSiblings": false - } - ] - } - }, - - // === TypeScript rules ==================================================== - - { - files: [ - "**/*.ts" - ], - rules: { - // Enforcing to remove function parameters on stubs makes code less - // maintainable, so we instead allow unused function parameters. - "@typescript-eslint/no-unused-vars": [ - "warn", { - "vars": "local", - "varsIgnorePattern": "^[A-Z](?:From|To)?$", // ignore type params - "args": "none", - "ignoreRestSiblings": false - } - ] - } - }, - - // === AssemblyScript rules (extends TypeScript rules) ===================== - - { - files: [ - "**/assembly/**/*.ts", - "src/**/*.ts", - "lib/parse/src/**/*.ts" - ], - rules: { - // Namespaces are quite useful in AssemblyScript - "@typescript-eslint/no-namespace": "off", - - // There is actually codegen difference here - "@typescript-eslint/no-array-constructor": "off", - - // Sometimes it can't be avoided to add a @ts-ignore - "@typescript-eslint/ban-ts-comment": "off", - - // Utilized to achieve portability in some cases - "@typescript-eslint/no-non-null-assertion": "off", - } - }, - - // === Compiler rules (extends AssemblyScript rules) ======================= - - { - files: [ - "src/**/*.ts", - "std/assembly/**/*.ts" - ], - rules: { - // There is an actual codegen difference here - TODO: revisit - "no-cond-assign": "off", - - // Not all types can be omitted in AS yet - TODO: revisit - "@typescript-eslint/no-inferrable-types": "off", - - // Used rarely to reference internals that are not user-visible - "@typescript-eslint/triple-slash-reference": "off", - - // The compiler has its own `Function` class for example - "no-shadow-restricted-names": "off", - "@typescript-eslint/ban-types": "off" - } - }, - - // === Standard Library rules (extends AssemblyScript rules) =============== - - { - files: [ - "std/assembly/**/*.ts" - ], - rules: { - // We are implementing with --noLib, so we shadow all the time - "no-shadow-restricted-names": "off", - - // Similarly, sometimes we need the return type to be String, not string - "@typescript-eslint/ban-types": "off" - } - }, - - // === Standard Definition rules (extends TypeScript rules) ================ - - { - files: [ - "std/**/*.d.ts" - ], - rules: { - // Often required to achieve compatibility with TypeScript - "@typescript-eslint/no-explicit-any": "off", - - // Interfaces can be stubs here, i.e. not yet fully implemented - "@typescript-eslint/no-empty-interface": "off", - - // Definitions make use of `object` to model rather unusual constraints - "@typescript-eslint/ban-types": "off" - } - }, - - // === Compiler Definition rules (extends TypeScript rules) ================ - - { - files: [ - "./index.d.ts", - "./index.release.d.ts", - ], - rules: { - // Our definitions are complicated, and all attempts to describe them - // as modules have failed so far. As such, we re-export namespaces. - "@typescript-eslint/no-namespace": "off", - "@typescript-eslint/triple-slash-reference": "off" - } - }, - - // === Test rules (extends TypeScript rules) =============================== - - { - files: [ - "./tests/compiler/**/*.ts", - "./lib/loader/tests/assembly/**/*.ts" - ], - rules: { - // Tests typically include unusual code patterns on purpose. This is - // very likely not an extensive list, but covers what's there so far. - "no-empty": "off", - "no-cond-assign": "off", - "no-compare-neg-zero": "off", - "no-inner-declarations": "off", - "no-constant-condition": "off", - "use-isnan": "off", - "@typescript-eslint/no-namespace": "off", - "@typescript-eslint/no-unused-vars": "off", - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/no-extra-semi": "off", - "@typescript-eslint/no-inferrable-types": "off", - "@typescript-eslint/ban-types": "off", - "@typescript-eslint/triple-slash-reference": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/no-extra-non-null-assertion": "off", - "@typescript-eslint/no-empty-interface": "off" - } - }, - ] -}; diff --git a/.gitattributes b/.gitattributes index b817804567..219d8546ed 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,6 @@ bin/* text eol=lf dist/* binary scripts/*.sh eol=lf -lib/binaryen.js binary tests/compiler/std/string-encoding.ts eol=lf +src/bindings/js.ts eol=lf +src/bindings/tsd.ts eol=lf diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 6ed9129c68..0000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 0000000000..9919f1b62f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,33 @@ +name: Bug Report +description: Encountered an issue? File a bug report! +labels: [bug] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! To get off to a good start, make sure to: + * Search if there is an existing issue on the topic + * Get familiar with the [contributing guidelines](https://github.com/AssemblyScript/assemblyscript/blob/main/CONTRIBUTING.md) + - type: textarea + id: description + attributes: + label: Bug description + description: What happened? What was the expected behavior? + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Steps to reproduce + description: | + How can the issue be reproduced? A minimum example is best. Tip: Use [code blocks](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks). + validations: + required: true + - type: input + id: version + attributes: + label: AssemblyScript version + description: "What's the AssemblyScript version used?" + placeholder: "vX.Y.Z" + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml new file mode 100644 index 0000000000..15fa469b9c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.yml @@ -0,0 +1,18 @@ +name: Feature suggestion +description: Got a neat idea? File a feature suggestion! +labels: [enhancement] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this feature suggestion! To get off to a good start, make sure to: + * Search if there is an existing issue on the topic + * See if the feature is mentioned at [implementation status](https://www.assemblyscript.org/status.html) + * Get familiar with the [contributing guidelines](https://github.com/AssemblyScript/assemblyscript/blob/main/CONTRIBUTING.md) + - type: textarea + id: description + attributes: + label: Feature suggestion + description: Please describe the feature you'd like to suggest. + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml new file mode 100644 index 0000000000..9975feabe7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -0,0 +1,17 @@ +name: Ask a question +description: Wondering how to achieve something specific? Ask a question! +labels: [question] +body: + - type: markdown + attributes: + value: | + To get off to a good start, make sure to: + * Consider asking questions on our [community Discord](https://discord.gg/assemblyscript) instead + * Search if there is an existing issue on the topic + - type: textarea + id: description + attributes: + label: Question + description: What would you like to know? + validations: + required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index ad286f4976..5abd484e8b 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -2,9 +2,12 @@ Thanks for submitting a pull request to AssemblyScript! Please take a moment to review the contributing guidelines linked below, and confirm with an [x] 🙂 --> +Fixes # . +Changes proposed in this pull request: ⯈ ⯈ ⯈ -- [ ] I've read the contributing guidelines \ No newline at end of file +- [ ] I've read the contributing guidelines +- [ ] I've added my name and email to the NOTICE file diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index 2ccd92d651..0000000000 --- a/.github/stale.yml +++ /dev/null @@ -1,18 +0,0 @@ -# Automatically close questions and other uncategorized issues on inactivity -only: issues -daysUntilStale: 30 -daysUntilClose: 7 -exemptLabels: - - bug - - enhancement - - compatibility -exemptProjects: true -exemptMilestones: true -exemptAssignees: true -staleLabel: stale -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. -closeComment: false -limitPerRun: 1 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 0000000000..ac9170348d --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,19 @@ +name: PR + +on: + pull_request: + types: [opened, edited, synchronize] + +jobs: + check-title: + runs-on: ubuntu-latest + steps: + - name: Check PR Title Prefix + id: title-check + uses: actions/github-script@v7 + with: + script: | + const titlePrefixes = ["feat", "fix", "breaking", "chore"]; + const title = context.payload.pull_request.title.toLowerCase(); + const titleHasValidPrefix = titlePrefixes.some((prefix) => title.startsWith(`${prefix}:`)); + if (!titleHasValidPrefix) { process.exit(-1); } diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index e4fcbf64ba..269112457d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,5 +1,8 @@ name: Publish on: + # Note that the main branch will be used regardless of the branch chosen + # in the web interface. + workflow_dispatch: schedule: - cron: '0 0 * * *' jobs: @@ -7,33 +10,57 @@ jobs: name: Packages if: github.repository == 'AssemblyScript/assemblyscript' runs-on: ubuntu-latest + permissions: + id-token: write + contents: write steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v6 with: - ref: master - - uses: dcodeIO/setup-node-nvm@master + ref: main + fetch-depth: 0 + - uses: actions/setup-node@v6 with: node-version: current - name: Install dependencies run: npm ci - - name: Build distribution files + - name: Build packages run: | - npm run clean - npm run build - - name: Test distribution files - run: npm test - - name: Make semantic release + VERSION=$(npx aspublish --version) + if [[ "$VERSION" == "" ]]; then + echo "Changes do not trigger a release" + elif [[ "$VERSION" != "0."* ]]; then + echo "Unexpected version: $VERSION" + exit 1 + else + echo "Building version: $VERSION" + npm version "$VERSION" --no-git-tag-version + npm run build + npm test + cd lib/loader + npm version "$VERSION" --no-git-tag-version + npm run build + npm test + cd ../rtrace + npm version "$VERSION" --no-git-tag-version + npm run build + npm test + cd ../.. + fi + - name: Publish packages env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - # On success, semantic-release will update the version and publish, - # triggering the postversion script that'll update the loader's version - # as well. If nothing was published, the version will still be '0.0.0'. run: | - node node_modules/semantic-release/bin/semantic-release.js --unstable + node ./scripts/prepublish + if [ $(node -pe "require('./package.json').version") != "0.0.0" ]; then + npx aspublish + fi cd lib/loader if [ $(node -pe "require('./package.json').version") != "0.0.0" ]; then - npm config set "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" + npm publish --access public + fi + cd ../rtrace + if [ $(node -pe "require('./package.json').version") != "0.0.0" ]; then npm publish --access public fi cd ../.. + node ./scripts/prepublish --reset diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000000..b170c52285 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,22 @@ +name: Stale +on: + schedule: + - cron: '30 23 * * *' +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v9 + with: + stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed in one week if no further activity occurs. Thank you for your contributions!' + stale-issue-label: 'stale' + stale-pr-message: 'This PR has been automatically marked as stale because it has not had recent activity. It will be closed in one week if no further activity occurs. Thank you for your contributions!' + close-pr-message: 'This PR has been automatically closed due to lack of recent activity, but feel free to reopen it as long as you merge in the main branch afterwards.' + exempt-issue-labels: 'bug,enhancement,compatibility' + exempt-pr-labels: 'breaking change' + exempt-draft-pr: true + exempt-all-milestones: true + exempt-all-assignees: true + days-before-issue-stale: 30 + days-before-pr-stale: 60 + days-before-close: 7 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 60f636a26a..550ee0d7ab 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,192 +2,142 @@ name: Test on: push: branches: - - master + - main pull_request: jobs: check: name: "Check" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1.0.0 - - name: "Check that author is present in the NOTICE file" - if: github.event_name == 'pull_request' - run: | - AUTHOR=$(git log -1 --format="%aE") - if [ -z "$AUTHOR" ]; then - printf "\Cannot perform NOTICE check: Commit does not include an email address.\n" && - exit 1; - elif ! grep -q "$AUTHOR" NOTICE || false; then - printf "\nAuthor '$AUTHOR' does not appear to be listed in the NOTICE file, yet.\n" && - printf "Please see https://github.com/AssemblyScript/assemblyscript/blob/master/CONTRIBUTING.md\n" && - exit 1; - else - printf "\nOK: Author is present in the NOTICE file.\n"; - fi + - uses: actions/checkout@v4 - name: "Check that distribution files are unmodified" if: github.event_name == 'pull_request' run: | if git --no-pager diff --name-only $(git rev-parse origin/${{ github.base_ref }})...${{ github.sha }} | grep -q "^dist/"; then printf "\nThe pull request modifies distribution files, but it shouldn't.\n" && - printf "Please see https://github.com/AssemblyScript/assemblyscript/blob/master/CONTRIBUTING.md\n" && + printf "Please see https://github.com/AssemblyScript/assemblyscript/blob/main/CONTRIBUTING.md\n" && exit 1; else printf "\nOK: Distributions files have not been modified.\n"; fi - test: - name: "Compiler (Linux, node ${{ matrix.node_version }})" - runs-on: ubuntu-latest + compiler: + name: "Compiler (${{ matrix.os }}, node ${{ matrix.node_version }})" + runs-on: ${{ matrix.os }}-latest needs: check strategy: matrix: - node_version: ["current", "lts_latest"] + os: ["ubuntu", "macos", "windows"] + node_version: ["current", "lts/*"] steps: - - uses: actions/checkout@v1.0.0 - - uses: dcodeIO/setup-node-nvm@master + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node_version }} - name: Install dependencies run: npm ci --no-audit - - name: Clean distribution files - run: npm run clean - - name: Check sources - run: npm run check - - name: Test sources - run: | - if [[ `node bin/asc --version` != *"-dev" ]]; then - echo "ERROR: Not testing sources" - exit 1 - fi - npm test - - name: Build distribution files - run: npm run build - - name: Test distribution - run: | - if [[ `node bin/asc --version` == *"-dev" ]]; then - echo "ERROR: Not testing distribution" - exit 1 - fi - npm test - - name: Test browser build - run: node tests/browser-asc - test-windows: - name: "Compiler (Windows, node current)" - runs-on: windows-latest - needs: check - steps: - - uses: actions/checkout@v1.0.0 - - uses: dcodeIO/setup-node-nvm@master - with: - node-version: current - - name: Install dependencies - run: npm ci --no-audit - - name: Clean distribution files - run: npm run clean - - name: Test sources - run: npm test - - name: Build distribution files + - name: Build run: npm run build - - name: Test distribution + - name: Check + run: npm run check + - name: Test run: npm test - - name: Test browser build - run: node tests/browser-asc - test-macos: - name: "Compiler (MacOS, node current)" - runs-on: macos-latest + bootstrap: + name: "Bootstrap (${{ matrix.target }})" + runs-on: ubuntu-latest needs: check + strategy: + matrix: + target: ["debug", "release"] steps: - - uses: actions/checkout@v1.0.0 - - uses: dcodeIO/setup-node-nvm@master + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: current - name: Install dependencies run: npm ci --no-audit - - name: Clean distribution files - run: npm run clean - - name: Test sources - run: npm test - - name: Build distribution files + - name: Build run: npm run build - - name: Test distribution - run: npm test - - name: Test browser build - run: node tests/browser-asc - test-features: + - name: "Bootstrap ${{ matrix.target }}" + run: npm run bootstrap:${{ matrix.target }} + - name: "Test ${{ matrix.target }}" + run: npm run test:compiler -- --wasm build/assemblyscript.${{ matrix.target }}-bootstrap.js + - name: "Compile ${{ matrix.target }} -> ${{ matrix.target == 'debug' && 'release' || 'debug' }}" + run: node bin/asc --config src/asconfig.json --target ${{ matrix.target == 'debug' && 'release' || 'debug' }}-bootstrap --wasm ./build/assemblyscript.${{ matrix.target }}-bootstrap.js + - name: "Test ${{ matrix.target == 'debug' && 'release' || 'debug' }}" + run: npm run test:compiler -- --wasm build/assemblyscript.${{ matrix.target == 'debug' && 'release' || 'debug' }}-bootstrap.js + features: name: "Features" runs-on: ubuntu-latest needs: check steps: - - uses: actions/checkout@v1.0.0 - - uses: dcodeIO/setup-node-nvm@master - with: - node-mirror: https://nodejs.org/download/v8-canary/ - node-version: "15.0.0-v8-canary202007077c53168ead" + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 - name: Install dependencies run: npm ci --no-audit - - name: Clean distribution files - run: npm run clean + - name: Build + run: npm run build - name: Test experimental features env: - ASC_FEATURES: mutable-globals,threads,reference-types,bigint-integration + ASC_FEATURES: threads,reference-types,gc,exception-handling run: | - npm run test:compiler rt/flags features/js-bigint-integration features/reference-types features/threads - test-runtimes: + npm run test:compiler features/threads features/reference-types features/gc features/exception-handling bindings/esm bindings/raw + runtimes: name: "Runtimes" runs-on: ubuntu-latest needs: check steps: - - uses: actions/checkout@v1.0.0 - - uses: dcodeIO/setup-node-nvm@master + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: current - name: Install dependencies run: npm ci --no-audit - - name: Clean distribution files - run: npm run clean - - name: Test full runtime + - name: Build + run: npm run build + - name: Test default allocator run: | - cd tests/allocators/rt-full + cd tests/allocators/default npm run build cd .. - npm test rt-full - - name: Test stub runtime + npm test default + - name: Test stub allocator run: | - cd tests/allocators/rt-stub + cd tests/allocators/stub npm run build cd .. - npm test rt-stub - test-loader: + npm test stub + loader: name: "Loader" runs-on: ubuntu-latest needs: check steps: - - uses: actions/checkout@v1.0.0 - - uses: dcodeIO/setup-node-nvm@master + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: current - name: Install dependencies run: npm ci --no-audit - - name: Clean distribution files - run: npm run clean + - name: Build + run: npm run build - name: Test the loader run: | cd lib/loader npm run asbuild npm run test - test-bootstrap: - name: "Bootstrap" + coverage: + name: "Coverage" runs-on: ubuntu-latest needs: check steps: - - uses: actions/checkout@v1.0.0 - - uses: dcodeIO/setup-node-nvm@master + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: - node-version: current + node-version: 24 - name: Install dependencies run: npm ci --no-audit - - name: Clean distribution files - run: npm run clean - - name: Test self-compilation - run: | - npm run asbuild - npm run astest + - name: Build + run: npm run build + - name: Collect coverage + run: npx c8 -r none -- npm test + - name: Output coverage summary + run: npx c8 report -r text-summary diff --git a/.gitignore b/.gitignore index 57082f26a3..79bb9e71d8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,18 @@ -npm-debug.* -dist/ -docs/ node_modules/ -out/ +*debug.log +build/ raw/ .history *.backup -.vscode \ No newline at end of file +.vscode +.idea +cli/index.generated.js +src/diagnosticMessages.generated.ts +coverage/ + +dist/*.generated.d.ts +dist/*.map +dist/asc.js +dist/assemblyscript.js +dist/importmap.json +dist/web.js diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000000..b6f27f1359 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 9cd16c0d9e..0000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version] - -[homepage]: https://contributor-covenant.org -[version]: https://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e903ed7941..aed33dc531 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,12 +1,12 @@ Contributing ============ -The following is a set of guidelines for contributing to AssemblyScript and its packages, which are hosted in the [AsssemblyScript Organization](https://github.com/AssemblyScript) on GitHub. These are mostly guidelines, not rules. Use your best judgement, and feel free to proposse changes to this document in a pull request. +The following is a set of guidelines for contributing to AssemblyScript and its packages, which are hosted in the [AsssemblyScript Organization](https://github.com/AssemblyScript) on GitHub. These are mostly guidelines, not rules. Use your best judgement, and feel free to propose changes to this document in a pull request. Code of Conduct --------------- -This project and everyone participating in it is governed by the [AssemblyScript Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. +This project and everyone participating in it is governed by the [AssemblyScript Code of Conduct](https://github.com/AssemblyScript/.github/blob/main/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Filing Issues ------------- @@ -15,7 +15,7 @@ Bugs and enhancement suggestions are tracked as GitHub issues. #### How Do I Submit A (Good) Bug Report? -After you've determined which repository your bug is related to and that the issue is still present in the latest version of the master branch, create an issue on that repository and provide the following information: +After you've determined which repository your bug is related to and that the issue is still present in the latest version of the main branch, create an issue on that repository and provide the following information: * Use a **clear and descriptive title** for the issue to identify the problem. * Explain which **behavior you expected** to see instead and why. diff --git a/NOTICE b/NOTICE index 198b982544..148bc0ca87 100644 --- a/NOTICE +++ b/NOTICE @@ -26,6 +26,43 @@ under the licensing terms detailed in LICENSE: * ncave <777696+ncave@users.noreply.github.com> * Andrew Davis * Maël Nison +* Valeria Viana Gusmao +* Gabor Greif +* Martin Fredriksson +* forcepusher +* Piotr Oleś +* Saúl Cabrera +* Chance Snow +* Peter Salomonsen +* ookangzheng +* yjhmelody +* bnbarak +* Colin Eberhardt +* Ryan Pivovar +* Roman F. <70765447+romdotdog@users.noreply.github.com> +* Joe Pea +* Felipe Gasper +* Congcong Cai +* mooooooi +* Yasushi Ando +* Syed Jafri +* Peter Hayman +* ApsarasX +* Adrien Zinger +* Ruixiang Chen +* Daniel Salvadori +* Jairus Tanaka +* CountBleck +* Abdul Rauf +* Bach Le +* Xinquan Xu +* Matt Johnson-Pint +* Fabián Heredia Montiel +* Jonas Minnberg +* Kam Chehresa +* Mopsgamer <79159094+Mopsgamer@users.noreply.github.com> +* EDM115 +* Weixie Cui Portions of this software are derived from third-party works licensed under the following terms: @@ -51,6 +88,6 @@ the following terms: The 3-Clause BSD License (https://opensource.org/licenses/BSD-3-Clause) * Arm Optimized Routines: https://github.com/ARM-software/optimized-routines - + Copyright (c) Arm Limited The MIT License (https://opensource.org/licenses/MIT) diff --git a/README.md b/README.md index 854624a3b4..5df1fa3c5b 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,52 @@

- AssemblyScript logo + AssemblyScript logo

- Test status - Publish status - npm compiler version - npm loader version - Discord online + Test status + Publish status + npm compiler version + Discord online + #StandWithUkraine

-

AssemblyScript compiles a strict variant of TypeScript (basically JavaScript with types) to WebAssembly using Binaryen. It generates lean and mean WebAssembly modules while being just an npm install away.

+

AssemblyScript compiles a variant of TypeScript (basically JavaScript with types) to WebAssembly using Binaryen. It generates lean and mean WebAssembly modules while being just an npm install away.

- About  ·  - Introduction  ·  - Quick start  ·  - Development instructions + About  ·  + Getting started  ·  + Examples  ·  + Built with AssemblyScript


Contributors

- Contributor logos + Contributor logos

Thanks to our sponsors!

-

Most of the core team members and most contributors do this open source work in their free time. If you use AssemblyScript for a serious task or plan to do so, and you'd like us to invest more time on it, please donate to our OpenCollective. By sponsoring this project, your logo will show up below. Thank you so much for your support!

+

Most of the maintainers and contributors do this open source work in their free time. If you use AssemblyScript for a serious task or plan to do so, and you'd like us to invest more time on it, please donate to our OpenCollective. By sponsoring this project, your logo will show up below. Thank you so much for your support!

- Sponsor logos + Sponsor logos

+ +## Development instructions + +A development environment can be set up by cloning the repository: + +```sh +git clone https://github.com/AssemblyScript/assemblyscript.git +cd assemblyscript +npm install +npm link +``` + +The link step is optional and makes the development instance available globally. The full process is documented as part of the repository: + +* [Compiler instructions](./src) +* [Runtime instructions](./std/assembly/rt) +* [Test instructions](./tests) diff --git a/bin/asc b/bin/asc deleted file mode 100755 index 968ae71cbc..0000000000 --- a/bin/asc +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env node - -/* tslint:disable */ - -const tailArgs = process.argv.indexOf("--"); -if (~tailArgs) { - require("child_process").spawnSync( - process.argv[0], - process.argv.slice(tailArgs + 1).concat( - process.argv.slice(1, tailArgs) - ), - { stdio: "inherit" } - ); - return; -} - -try { require("source-map-support").install(); } catch (e) {} - -const asc = module.exports = require("../cli/asc.js"); -if (/\basc$/.test(process.argv[1])) { - asc.ready.then(() => process.exitCode = asc.main(process.argv.slice(2))); -} diff --git a/bin/asc.js b/bin/asc.js new file mode 100755 index 0000000000..8924e92340 --- /dev/null +++ b/bin/asc.js @@ -0,0 +1,35 @@ +#!/usr/bin/env node + +const [ nodePath, thisPath, ...args ] = process.argv; +const nodeArgs = process.execArgv; + +const hasSourceMaps = nodeArgs.includes("--enable-source-maps"); +const posCustomArgs = args.indexOf("--"); +const isDeno = typeof Deno !== "undefined"; + +if (isDeno) { + process.on = function() { /* suppress 'not implemented' message */ }; +} + +if ((!hasSourceMaps || ~posCustomArgs) && !isDeno) { + if (!hasSourceMaps) { + nodeArgs.push("--enable-source-maps"); + } + if (~posCustomArgs) { + nodeArgs.push(...args.slice(posCustomArgs + 1)); + args.length = posCustomArgs; + } + const { status, signal } = (await import("child_process")).spawnSync( + nodePath, + [...nodeArgs, thisPath, ...args], + { stdio: "inherit" } + ); + if (status || signal) process.exitCode = 1; +} else { + const apiResult = (await import("../dist/asc.js")).main(process.argv.slice(2), { + stdout: process.stdout, + stderr: process.stderr + }); + const { error } = await apiResult; + if (error) process.exitCode = 1; +} diff --git a/bin/asinit b/bin/asinit deleted file mode 100755 index 8081bd1082..0000000000 --- a/bin/asinit +++ /dev/null @@ -1,418 +0,0 @@ -#!/usr/bin/env node - -/* tslint:disable */ - -const fs = require("fs"); -const path = require("path"); -const colors = require("../cli/util/colors"); -const version = require("../package.json").version; -const options = require("../cli/util/options"); - -const npmDefaultTest = "echo \"Error: no test specified\" && exit 1"; - -const commands = { - "npm": { - install: "npm install", - run: "npm run", - test: "npm test" - }, - "yarn": { - install: "yarn install", - run: "yarn", - test: "yarn test" - }, - "pnpm": { - install: "pnpm install", - run: "pnpm run", - test: "pnpm test" - } -}; - -let pm = "npm"; -if (typeof process.env.npm_config_user_agent === "string") { - if (/\byarn\//.test(process.env.npm_config_user_agent)) { - pm = "yarn"; - } else if (/\bpnpm\//.test(process.env.npm_config_user_agent)) { - pm = "pnpm"; - } -} - -const asinitOptions = { - "help": { - "category": "General", - "description": "Prints a help message.", - "type": "b", - "alias": "h" - }, - "yes": { - "category": "General", - "description": "Answers all questions with their default option for non-interactive usage.", - "type": "b", - "alias": "y" - } -}; - -const cliOptions = options.parse(process.argv.slice(2), asinitOptions); - -if (cliOptions.options.help || cliOptions.arguments.length === 0) printHelp(); - -function printHelp() { - console.log([ - "Sets up a new AssemblyScript project or updates an existing one.", - "For example, to create a new project in the current directory:", - "", - " " + colors.cyan("asinit") + " .", - ].join("\n")); - process.exit(0); -} - -const projectDir = path.resolve(cliOptions.arguments[0]); -const compilerDir = path.join(__dirname, ".."); -const compilerVersion = require(path.join(compilerDir, "package.json")).version; -const assemblyDir = path.join(projectDir, "assembly"); -const tsconfigFile = path.join(assemblyDir, "tsconfig.json"); -const asconfigFile = path.join(projectDir, "asconfig.json"); -let tsconfigBase = path.relative(assemblyDir, path.join(compilerDir, "std", "assembly.json")); -if (/^(\.\.[/\\])*node_modules[/\\]assemblyscript[/\\]/.test(tsconfigBase)) { - // Use node resolution if the compiler is a normal dependency - tsconfigBase = "assemblyscript/std/assembly.json"; -} -const entryFile = path.join(assemblyDir, "index.ts"); -const buildDir = path.join(projectDir, "build"); -const testsDir = path.join(projectDir, "tests"); -const gitignoreFile = path.join(buildDir, ".gitignore"); -const packageFile = path.join(projectDir, "package.json"); -const indexFile = path.join(projectDir, "index.js"); -const testsIndexFile = path.join(testsDir, "index.js"); - -console.log([ - "Version: " + version, - "", - colors.white([ - "This command will make sure that the following files exist in the project", - "directory '" + projectDir + "':" - ].join("\n")), - "", - colors.cyan(" ./assembly"), - " Directory holding the AssemblyScript sources being compiled to WebAssembly.", - "", - colors.cyan(" ./assembly/tsconfig.json"), - " TypeScript configuration inheriting recommended AssemblyScript settings.", - "", - colors.cyan(" ./assembly/index.ts"), - " Example entry file being compiled to WebAssembly to get you started.", - "", - colors.cyan(" ./build"), - " Build artifact directory where compiled WebAssembly files are stored.", - "", - colors.cyan(" ./build/.gitignore"), - " Git configuration that excludes compiled binaries from source control.", - "", - colors.cyan(" ./index.js"), - " Main file loading the WebAssembly module and exporting its exports.", - "", - colors.cyan(" ./tests/index.js"), - " Example test to check that your module is indeed working.", - "", - colors.cyan(" ./asconfig.json"), - " Configuration file defining both a 'debug' and a 'release' target.", - "", - colors.cyan(" ./package.json"), - " Package info containing the necessary commands to compile to WebAssembly.", - "", - "The command will try to update existing files to match the correct settings", - "for this instance of the compiler in '" + compilerDir + "'.", - "" -].join("\n")); - -function createProject(answer) { - if (!/^y?$/i.test(answer)) { - process.exit(1); - return; - } - console.log(); - ensureProjectDirectory(); - ensureAssemblyDirectory(); - ensureTsconfigJson(); - ensureEntryFile(); - ensureBuildDirectory(); - ensureGitignore(); - ensurePackageJson(); - ensureIndexJs(); - ensureTestsDirectory(); - ensureTestsIndexJs(); - ensureAsconfigJson(); - console.log([ - colors.green("Done!"), - "", - "Don't forget to install dependencies before you start:", - "", - colors.white(" " + commands[pm].install), - "", - "To edit the entry file, open '" + colors.cyan("assembly/index.ts") + "' in your editor of choice.", - "Create as many additional files as necessary and use them as imports.", - "", - "To build the entry file to WebAssembly when you are ready, run:", - "", - colors.white(" " + commands[pm].run + " asbuild"), - "", - "Running the command above creates the following binaries incl. their respective", - "text format representations and source maps:", - "", - colors.cyan(" ./build/untouched.wasm"), - colors.cyan(" ./build/untouched.wasm.map"), - colors.cyan(" ./build/untouched.wat"), - "", - " ^ The untouched WebAssembly module as generated by the compiler.", - " This one matches your sources exactly, without any optimizations.", - "", - colors.cyan(" ./build/optimized.wasm"), - colors.cyan(" ./build/optimized.wasm.map"), - colors.cyan(" ./build/optimized.wat"), - "", - " ^ The optimized WebAssembly module using default optimization settings.", - " You can change the optimization settings in '" + colors.cyan("package.json")+ "'.", - "", - "To run the tests, do:", - "", - colors.white(" " + commands[pm].test), - "", - "The AssemblyScript documentation covers all the details:", - "", - " https://docs.assemblyscript.org", - "", - "Have a nice day!" - ].join("\n")); -} - -if (cliOptions.options.yes) { - createProject("y"); -} else { - const rl = require("readline").createInterface({ - input: process.stdin, - output: process.stdout - }); - rl.question(colors.white("Do you want to proceed?") + " [Y/n] ", result => { - rl.close(); - createProject(result); - }); -} - -function ensureProjectDirectory() { - console.log("- Making sure that the project directory exists..."); - if (!fs.existsSync(projectDir)) { - fs.mkdirSync(projectDir); - console.log(colors.green(" Created: ") + projectDir); - } else { - console.log(colors.yellow(" Exists: ") + projectDir); - } - console.log(); -} - -function ensureAssemblyDirectory() { - console.log("- Making sure that the 'assembly' directory exists..."); - if (!fs.existsSync(assemblyDir)) { - fs.mkdirSync(assemblyDir); - console.log(colors.green(" Created: ") + assemblyDir); - } else { - console.log(colors.yellow(" Exists: ") + assemblyDir); - } - console.log(); -} - -function ensureTsconfigJson() { - console.log("- Making sure that 'assembly/tsconfig.json' is set up..."); - const base = tsconfigBase.replace(/\\/g, "/"); - if (!fs.existsSync(tsconfigFile)) { - fs.writeFileSync(tsconfigFile, JSON.stringify({ - "extends": base, - "include": [ - "./**/*.ts" - ] - }, null, 2)); - console.log(colors.green(" Created: ") + tsconfigFile); - - } else { - let tsconfig = JSON.parse(fs.readFileSync(tsconfigFile, "utf8")); - tsconfig["extends"] = base; - fs.writeFileSync(tsconfigFile, JSON.stringify(tsconfig, null, 2)); - console.log(colors.green(" Updated: ") + tsconfigFile); - } - console.log(); -} - -function ensureAsconfigJson() { - console.log("- Making sure that 'asconfig.json' is set up..."); - if (!fs.existsSync(asconfigFile)) { - fs.writeFileSync(asconfigFile, JSON.stringify({ - targets: { - debug: { - // -b build/untouched.wasm -t build/untouched.wat --sourceMap --debug - binaryFile: "build/untouched.wasm", - textFile: "build/untouched.wat", - sourceMap: true, - debug: true - }, - release: { - // -b build/optimized.wasm -t build/optimized.wat --sourceMap --optimize - binaryFile: "build/optimized.wasm", - textFile: "build/optimized.wat", - sourceMap: true, - optimize: true - } - }, - options: {} - }, null, 2)); - console.log(colors.green(" Created: ") + asconfigFile); - } else { - console.log(colors.yellow(" Exists: ") + asconfigFile); - } - console.log(); -} - -function ensureEntryFile() { - console.log("- Making sure that 'assembly/index.ts' exists..."); - if (!fs.existsSync(entryFile)) { - fs.writeFileSync(entryFile, [ - "// The entry file of your WebAssembly module.", - "", - "export function add(a: i32, b: i32): i32 {", - " return a + b;", - "}" - ].join("\n") + "\n"); - console.log(colors.green(" Created: ") + entryFile); - } else { - console.log(colors.yellow(" Exists: ") + entryFile); - } - console.log(); -} - -function ensureBuildDirectory() { - console.log("- Making sure that the 'build' directory exists..."); - if (!fs.existsSync(buildDir)) { - fs.mkdirSync(buildDir); - console.log(colors.green(" Created: ") + buildDir); - } else { - console.log(colors.yellow(" Exists: ") + buildDir); - } - console.log(); -} - -function ensureGitignore() { - console.log("- Making sure that 'build/.gitignore' is set up..."); - if (!fs.existsSync(gitignoreFile)) { - fs.writeFileSync(gitignoreFile, [ - "*.wasm", - "*.wasm.map", - "*.asm.js" - ].join("\n") + "\n"); - console.log(colors.green(" Created: ") + gitignoreFile); - } else { - console.log(colors.yellow(" Exists: ") + gitignoreFile); - } - console.log(); -} - -function ensurePackageJson() { - console.log("- Making sure that 'package.json' contains the build commands..."); - const entryPath = path.relative(projectDir, entryFile).replace(/\\/g, "/"); - const buildUntouched = "asc " + entryPath + " --target debug"; - const buildOptimized = "asc " + entryPath + " --target release"; - const buildAll = commands[pm].run + " asbuild:untouched && " + commands[pm].run + " asbuild:optimized"; - if (!fs.existsSync(packageFile)) { - fs.writeFileSync(packageFile, JSON.stringify({ - "scripts": { - "asbuild:untouched": buildUntouched, - "asbuild:optimized": buildOptimized, - "asbuild": buildAll, - "test": "node tests" - }, - "dependencies": { - "@assemblyscript/loader": "^" + compilerVersion - }, - "devDependencies": { - "assemblyscript": "^" + compilerVersion - } - }, null, 2)); - console.log(colors.green(" Created: ") + packageFile); - } else { - let pkg = JSON.parse(fs.readFileSync(packageFile)); - let scripts = pkg.scripts || {}; - let updated = false; - if (!scripts["asbuild"]) { - scripts["asbuild:untouched"] = buildUntouched; - scripts["asbuild:optimized"] = buildOptimized; - scripts["asbuild"] = buildAll; - pkg["scripts"] = scripts; - updated = true; - } - if (!scripts["test"] || scripts["test"] == npmDefaultTest) { - scripts["test"] = "node tests"; - pkg["scripts"] = scripts; - updated = true; - } - let dependencies = pkg["dependencies"] || {}; - if (!dependencies["@assemblyscript/loader"]) { - dependencies["@assemblyscript/loader"] = "^" + compilerVersion; - pkg["dependencies"] = dependencies; - updated = true; - } - let devDependencies = pkg["devDependencies"] || {}; - if (!devDependencies["assemblyscript"]) { - devDependencies["assemblyscript"] = "^" + compilerVersion; - pkg["devDependencies"] = devDependencies; - updated = true; - } - if (updated) { - fs.writeFileSync(packageFile, JSON.stringify(pkg, null, 2)); - console.log(colors.green(" Updated: ") + packageFile); - } else { - console.log(colors.yellow(" Exists: ") + packageFile); - } - } - console.log(); -} - -function ensureIndexJs() { - console.log("- Making sure that 'index.js' exists..."); - if (!fs.existsSync(indexFile)) { - fs.writeFileSync(indexFile, [ - "const fs = require(\"fs\");", - "const loader = require(\"@assemblyscript/loader\");", - "const imports = { /* imports go here */ };", - "const wasmModule = loader.instantiateSync(fs.readFileSync(__dirname + \"/build/optimized.wasm\"), imports);", - "module.exports = wasmModule.exports;" - ].join("\n") + "\n"); - console.log(colors.green(" Created: ") + indexFile); - } else { - console.log(colors.yellow(" Exists: ") + indexFile); - } - console.log(); -} - -function ensureTestsDirectory() { - console.log("- Making sure that the 'tests' directory exists..."); - if (!fs.existsSync(testsDir)) { - fs.mkdirSync(testsDir); - console.log(colors.green(" Created: ") + testsDir); - } else { - console.log(colors.yellow(" Exists: ") + testsDir); - } - console.log(); -} - -function ensureTestsIndexJs() { - console.log("- Making sure that 'tests/index.js' exists..."); - if (!fs.existsSync(testsIndexFile)) { - fs.writeFileSync(testsIndexFile, [ - "const assert = require(\"assert\");", - "const myModule = require(\"..\");", - "assert.equal(myModule.add(1, 2), 3);", - "console.log(\"ok\");" - ].join("\n") + "\n"); - console.log(colors.green(" Created: ") + testsIndexFile); - } else { - console.log(colors.yellow(" Exists: ") + testsIndexFile); - } - console.log(); -} diff --git a/bin/asinit.js b/bin/asinit.js new file mode 100755 index 0000000000..5e3566ddc1 --- /dev/null +++ b/bin/asinit.js @@ -0,0 +1,468 @@ +#!/usr/bin/env node + +import fs from "fs"; +import path from "path"; +import { createRequire } from "module"; +import { fileURLToPath } from "url"; +import { stdoutColors } from "../util/terminal.js"; +import * as optionsUtil from "../util/options.js"; + +const dirname = path.dirname(fileURLToPath(import.meta.url)); +const require = createRequire(import.meta.url); +const version = require("../package.json").version; // TODO + +const npmDefaultTest = "echo \"Error: no test specified\" && exit 1"; + +const commands = { + "npm": { + install: "npm install", + run: "npm run", + test: "npm test" + }, + "yarn": { + install: "yarn install", + run: "yarn", + test: "yarn test" + }, + "pnpm": { + install: "pnpm install", + run: "pnpm run", + test: "pnpm test" + } +}; + +let pm = "npm"; +if (typeof process.env.npm_config_user_agent === "string") { + if (/\byarn\//.test(process.env.npm_config_user_agent)) { + pm = "yarn"; + } else if (/\bpnpm\//.test(process.env.npm_config_user_agent)) { + pm = "pnpm"; + } +} + +const asinitOptions = { + "help": { + "category": "General", + "description": "Prints this help message.", + "type": "b", + "alias": "h" + }, + "yes": { + "category": "General", + "description": [ + "Answers all questions with their default option", + "for non-interactive usage." + ], + "type": "b", + "alias": "y" + }, + "noColors": { + "description": "Disables terminal colors.", + "type": "b", + "default": false + }, +}; + +const cliOptions = optionsUtil.parse(process.argv.slice(2), asinitOptions); + +if (cliOptions.options.noColors) { + stdoutColors.enabled = false; +} + +if (cliOptions.options.help || cliOptions.arguments.length === 0) printHelp(); + +function printHelp() { + console.log([ + "Sets up a new AssemblyScript project or updates an existing one.", + "", + stdoutColors.white("SYNTAX"), + " " + stdoutColors.cyan("asinit") + " directory [options]", + "", + stdoutColors.white("EXAMPLES"), + " " + stdoutColors.cyan("asinit") + " .", + " " + stdoutColors.cyan("asinit") + " ./newProject -y", + "", + stdoutColors.white("OPTIONS"), + optionsUtil.help(asinitOptions, { noCategories: true }) + ].join("\n")); + process.exit(0); +} + +const compilerDir = path.join(dirname, ".."); +const projectDir = path.resolve(cliOptions.arguments[0]); +const assemblyDir = path.join(projectDir, "assembly"); +const tsconfigFile = path.join(assemblyDir, "tsconfig.json"); +const asconfigFile = path.join(projectDir, "asconfig.json"); +let tsconfigBase = path.relative(assemblyDir, path.join(compilerDir, "std", "assembly.json")); +if (/^(\.\.[/\\])*node_modules[/\\]assemblyscript[/\\]/.test(tsconfigBase)) { + // Use node resolution if the compiler is a normal dependency + tsconfigBase = "assemblyscript/std/assembly.json"; +} +const entryFile = path.join(assemblyDir, "index.ts"); +const buildDir = path.join(projectDir, "build"); +const testsDir = path.join(projectDir, "test"); +const gitignoreFile = path.join(buildDir, ".gitignore"); +const packageFile = path.join(projectDir, "package.json"); + +const indexHtmlFile = path.join(projectDir, "index.html"); +const testsIndexFile = path.join(testsDir, "index.js"); + +const paths = [ + [assemblyDir, "Directory holding the AssemblyScript sources being compiled to WebAssembly."], + [tsconfigFile, "TypeScript configuration inheriting recommended AssemblyScript settings."], + [entryFile, "Example entry file being compiled to WebAssembly to get you started."], + [buildDir, "Build artifact directory where compiled WebAssembly files are stored."], + [gitignoreFile, "Git configuration that excludes compiled binaries from source control."], + [asconfigFile, "Configuration file defining both a 'debug' and a 'release' target."], + [packageFile, "Package info containing the necessary commands to compile to WebAssembly."], + [testsIndexFile, "Starter test to check that the module is functioning."], + [indexHtmlFile, "Starter HTML file that loads the module in a browser."] +]; + +const formatPath = filePath => "./" + path.relative(projectDir, filePath).replace(/\\/g, "/"); + +if (fs.existsSync(packageFile)) { + const pkg = JSON.parse(fs.readFileSync(packageFile)); + if ("type" in pkg && pkg["type"] !== "module") { + console.error(stdoutColors.red([ + `Error: The "type" field in ${formatPath(packageFile)} is set to "${pkg["type"]}".`, + ` asinit requires the "type" field to be set to "module" (ES modules).` + ].join("\n"))); + process.exit(1); + } +} + +console.log([ + "Version: " + version, + "", + stdoutColors.white([ + "This command will make sure that the following files exist in the project", + "directory '" + projectDir + "':" + ].join("\n")), + ...paths.map(([filePath, description]) => "\n " + stdoutColors.cyan(formatPath(filePath)) + "\n " + description), + "", + "The command will try to update existing files to match the correct settings", + "for this instance of the compiler in '" + compilerDir + "'.", + "" +].join("\n")); + +function createProject(answer) { + if (!/^y?$/i.test(answer)) { + process.exit(1); + return; + } + console.log(); + ensureProjectDirectory(); + ensureAssemblyDirectory(); + ensureTsconfigJson(); + ensureEntryFile(); + ensureBuildDirectory(); + ensureGitignore(); + ensurePackageJson(); + ensureAsconfigJson(); + ensureTestsDirectory(); + ensureTestsIndexJs(); + ensureIndexHtml(); + + console.log([ + stdoutColors.green("Done!"), + "", + "Don't forget to install dependencies before you start:", + "", + stdoutColors.white(" " + commands[pm].install), + "", + "To edit the entry file, open '" + stdoutColors.cyan("assembly/index.ts") + "' in your editor of choice.", + "Create as many additional files as necessary and use them as imports.", + "", + "To build the entry file to WebAssembly when you are ready, run:", + "", + stdoutColors.white(" " + commands[pm].run + " asbuild"), + "", + "Running the command above creates the following binaries incl. their respective", + "text format representations and source maps:", + "", + stdoutColors.cyan(" ./build/debug.wasm"), + stdoutColors.cyan(" ./build/debug.wasm.map"), + stdoutColors.cyan(" ./build/debug.wat"), + "", + " ^ The debuggable WebAssembly module as generated by the compiler.", + " This one matches your sources exactly, without any optimizations.", + "", + stdoutColors.cyan(" ./build/release.wasm"), + stdoutColors.cyan(" ./build/release.wasm.map"), + stdoutColors.cyan(" ./build/release.wat"), + "", + " ^ The optimized WebAssembly module using default optimization settings.", + " You can change the optimization settings in '" + stdoutColors.cyan("package.json")+ "'.", + "", + "To run the tests, do:", + "", + stdoutColors.white(" " + commands[pm].test), + "", + "The AssemblyScript documentation covers all the details:", + "", + " https://www.assemblyscript.org", + "", + "Have a nice day!" + ].join("\n")); +} + +if (cliOptions.options.yes) { + createProject("y"); +} else { + const rl = require("readline").createInterface({ + input: process.stdin, + output: process.stdout + }); + rl.question(stdoutColors.white("Do you want to proceed?") + " [Y/n] ", result => { + rl.close(); + createProject(result); + }); +} + +function ensureProjectDirectory() { + console.log("- Making sure that the project directory exists..."); + if (!fs.existsSync(projectDir)) { + fs.mkdirSync(projectDir); + console.log(stdoutColors.green(" Created: ") + projectDir); + } else { + console.log(stdoutColors.yellow(" Exists: ") + projectDir); + } + console.log(); +} + +function ensureAssemblyDirectory() { + console.log("- Making sure that the 'assembly' directory exists..."); + if (!fs.existsSync(assemblyDir)) { + fs.mkdirSync(assemblyDir); + console.log(stdoutColors.green(" Created: ") + assemblyDir); + } else { + console.log(stdoutColors.yellow(" Exists: ") + assemblyDir); + } + console.log(); +} + +function ensureTsconfigJson() { + console.log("- Making sure that 'assembly/tsconfig.json' is set up..."); + const base = tsconfigBase.replace(/\\/g, "/"); + if (!fs.existsSync(tsconfigFile)) { + fs.writeFileSync(tsconfigFile, JSON.stringify({ + "extends": base, + "include": [ + "./**/*.ts" + ] + }, null, 2)); + console.log(stdoutColors.green(" Created: ") + tsconfigFile); + + } else { + let tsconfig = JSON.parse(fs.readFileSync(tsconfigFile, "utf8")); + tsconfig["extends"] = base; + fs.writeFileSync(tsconfigFile, JSON.stringify(tsconfig, null, 2)); + console.log(stdoutColors.green(" Updated: ") + tsconfigFile); + } + console.log(); +} + +function ensureAsconfigJson() { + console.log("- Making sure that 'asconfig.json' is set up..."); + if (!fs.existsSync(asconfigFile)) { + fs.writeFileSync(asconfigFile, JSON.stringify({ + targets: { + debug: { + // -o build/debug.wasm -t build/debug.wat --sourceMap --debug + outFile: "build/debug.wasm", + textFile: "build/debug.wat", + sourceMap: true, + debug: true + }, + release: { + // -o build/release.wasm -t build/release.wat --sourceMap --optimize + outFile: "build/release.wasm", + textFile: "build/release.wat", + sourceMap: true, + optimizeLevel: 3, + shrinkLevel: 0, + converge: false, + noAssert: false + } + }, + options: { + bindings: "esm" + } + }, null, 2)); + console.log(stdoutColors.green(" Created: ") + asconfigFile); + } else { + console.log(stdoutColors.yellow(" Exists: ") + asconfigFile); + } + console.log(); +} + +function ensureEntryFile() { + console.log("- Making sure that 'assembly/index.ts' exists..."); + if (!fs.existsSync(entryFile)) { + fs.writeFileSync(entryFile, [ + "// The entry file of your WebAssembly module.", + "", + "export function add(a: i32, b: i32): i32 {", + " return a + b;", + "}" + ].join("\n") + "\n"); + console.log(stdoutColors.green(" Created: ") + entryFile); + } else { + console.log(stdoutColors.yellow(" Exists: ") + entryFile); + } + console.log(); +} + +function ensureBuildDirectory() { + console.log("- Making sure that the 'build' directory exists..."); + if (!fs.existsSync(buildDir)) { + fs.mkdirSync(buildDir); + console.log(stdoutColors.green(" Created: ") + buildDir); + } else { + console.log(stdoutColors.yellow(" Exists: ") + buildDir); + } + console.log(); +} + +function ensureGitignore() { + console.log("- Making sure that 'build/.gitignore' is set up..."); + if (!fs.existsSync(gitignoreFile)) { + fs.writeFileSync(gitignoreFile, [ + "*", + "!.gitignore" + ].join("\n") + "\n"); + console.log(stdoutColors.green(" Created: ") + gitignoreFile); + } else { + console.log(stdoutColors.yellow(" Exists: ") + gitignoreFile); + } + console.log(); +} + +function ensurePackageJson() { + console.log("- Making sure that 'package.json' contains the build commands..."); + const entryPath = path.relative(projectDir, entryFile).replace(/\\/g, "/"); + const buildDebug = "asc " + entryPath + " --target debug"; + const buildRelease = "asc " + entryPath + " --target release"; + const buildAll = commands[pm].run + " asbuild:debug && " + commands[pm].run + " asbuild:release"; + if (!fs.existsSync(packageFile)) { + fs.writeFileSync(packageFile, JSON.stringify({ + "type": "module", + "exports": { + ".": { + "import": "./build/release.js", + "types": "./build/release.d.ts" + } + }, + "scripts": { + "asbuild:debug": buildDebug, + "asbuild:release": buildRelease, + "asbuild": buildAll, + "test": "node --test", + "start": "npx serve ." + }, + "devDependencies": { + "assemblyscript": "^" + version + } + }, null, 2)); + console.log(stdoutColors.green(" Created: ") + packageFile); + } else { + let pkg = JSON.parse(fs.readFileSync(packageFile)); + let scripts = pkg.scripts || {}; + let updated = false; + if (!pkg["type"]) { + pkg["type"] = "module"; + updated = true; + } + if (!pkg["exports"]) { + pkg["exports"] = { + ".": { + "import": "./build/release.js", + "types": "./build/release.d.ts" + } + }; + } + if (!scripts["asbuild"]) { + scripts["asbuild:debug"] = buildDebug; + scripts["asbuild:release"] = buildRelease; + scripts["asbuild"] = buildAll; + pkg["scripts"] = scripts; + updated = true; + } + if (!scripts["test"] || scripts["test"] == npmDefaultTest) { + scripts["test"] = "node --test"; + pkg["scripts"] = scripts; + updated = true; + } + if (!scripts["start"]) { + scripts["start"] = "npx serve ."; + pkg["scripts"] = scripts; + updated = true; + } + let devDependencies = pkg["devDependencies"] || {}; + if (!devDependencies["assemblyscript"]) { + devDependencies["assemblyscript"] = "^" + version; + pkg["devDependencies"] = devDependencies; + updated = true; + } + if (updated) { + fs.writeFileSync(packageFile, JSON.stringify(pkg, null, 2)); + console.log(stdoutColors.green(" Updated: ") + packageFile); + } else { + console.log(stdoutColors.yellow(" Exists: ") + packageFile); + } + } + console.log(); +} + +function ensureTestsDirectory() { + console.log("- Making sure that the 'test' directory exists..."); + if (!fs.existsSync(testsDir)) { + fs.mkdirSync(testsDir); + console.log(stdoutColors.green(" Created: ") + testsDir); + } else { + console.log(stdoutColors.yellow(" Exists: ") + testsDir); + } + console.log(); +} + +function ensureTestsIndexJs() { + console.log("- Making sure that 'test/index.js' exists..."); + if (!fs.existsSync(testsIndexFile)) { + fs.writeFileSync(testsIndexFile, [ + "import assert from \"node:assert/strict\";", + "import { it } from \"node:test\";", + "import { add } from \"../build/debug.js\";", + "", + "it(\"add\", () => {", + " assert.equal(add(1, 2), 3);", + "});" + ].join("\n") + "\n"); + console.log(stdoutColors.green(" Created: ") + testsIndexFile); + } else { + console.log(stdoutColors.yellow(" Exists: ") + testsIndexFile); + } + console.log(); +} + +function ensureIndexHtml() { + console.log("- Making sure that 'index.html' exists..."); + if (!fs.existsSync(indexHtmlFile)) { + fs.writeFileSync(indexHtmlFile, [ + "", + "", + "", + "", + "", + "", + "", + ].join("\n") + "\n"); + console.log(stdoutColors.green(" Created: ") + indexHtmlFile); + } else { + console.log(stdoutColors.yellow(" Exists: ") + indexHtmlFile); + } + console.log(); +} diff --git a/cli/README.md b/cli/README.md index 6033f60451..9e048005e3 100644 --- a/cli/README.md +++ b/cli/README.md @@ -1,5 +1,5 @@ -Compiler frontend for node.js -============================= +Frontend for Node.js +==================== Usage ----- @@ -13,41 +13,46 @@ $> asc --help API --- -The API accepts the same options as the CLI but also lets you override stdout and stderr and/or provide a callback. Example: +The API accepts the same options as the CLI but also lets you override stdout and stderr. Example: ```js -const asc = require("assemblyscript/cli/asc"); -asc.ready.then(() => { - asc.main([ - "myModule.ts", - "--binaryFile", "myModule.wasm", - "--optimize", - "--sourceMap", - "--measure" - ], { - stdout: process.stdout, - stderr: process.stderr - }, function(err) { - if (err) - throw err; - ... - }); -}); +import asc from "assemblyscript/asc"; + +const { error, stdout } = await asc.main([ + "myModule.ts", + "--outFile", "myModule.wasm", + "--optimize", + "--sourceMap", + "--stats" +]); +if (error) { + console.log("Compilation failed: " + error.message); +} else { + console.log(stdout.toString()); +} ``` -Available command line options can also be obtained programmatically: +The result has the following structure: + +| Property | Description +|----------|------------- +| error | Encountered error, if any +| stdout | Standard output stream +| stderr | Standard error stream +| stats | Statistics + +You can also compile a single source string directly (note that this API has limited functionality): ```js -const options = require("assemblyscript/cli/asc.json"); +import asc from "assemblyscript/asc"; +const { binary, text, stdout, stderr } = await asc.compileString(`...`, { optimize: 2 }); ... ``` -You can also compile a source string directly, for example in a browser environment: + +Available command line options can also be obtained programmatically: ```js -const asc = require("assemblyscript/cli/asc"); -asc.ready.then(() => { - const { binary, text, stdout, stderr } = asc.compileString(`...`, { optimize: 2 }); -}); +import { options } from "assemblyscript/asc"; ... ``` diff --git a/cli/asc.d.ts b/cli/asc.d.ts deleted file mode 100644 index 7957ac7c2f..0000000000 --- a/cli/asc.d.ts +++ /dev/null @@ -1,215 +0,0 @@ -/** - * @fileoverview Definitions for asc. - * @license Apache-2.0 - */ - -import { OptionDescription } from "./util/options"; -export { OptionDescription }; - -/** Ready promise resolved once/if the compiler is ready. */ -export const ready: Promise; - -/** Whether this is a webpack bundle or not. */ -export const isBundle: boolean; - -/** Whether asc runs the sources directly or not. */ -export const isDev: boolean; - -/** AssemblyScript version. */ -export const version: string; - -/** Available CLI options. */ -export const options: { [key: string]: OptionDescription }; - -/** Common root used in source maps. */ -export var sourceMapRoot: string; - -/** Prefix used for library files. */ -export var libraryPrefix: string; - -/** Default Binaryen optimization level. */ -export var defaultOptimizeLevel: number; - -/** Default Binaryen shrink level. */ -export var defaultShrinkLevel: number; - -/** Bundled library files. */ -export const libraryFiles: { [key: string]: string }; - -/** Bundled definition files. */ -export const definitionFiles: { assembly: string, portable: string }; - -/** A compatible output stream. */ -export interface OutputStream { - /** Writes another chunk of data to the stream. */ - write(chunk: Uint8Array | string): void; -} - -/** An in-memory output stream. */ -export interface MemoryStream extends OutputStream { - /** Resets the stream to offset zero. */ - reset(): void; - /** Converts the output to a buffer. */ - toBuffer(): Uint8Array; - /** Converts the output to a string. */ - toString(): string; -} - -/** Compiler options. */ -export interface CompilerOptions { - /** Prints just the compiler's version and exits. */ - version?: boolean; - /** Prints the help message and exits. */ - help?: boolean; - /** Optimizes the module. */ - optimize?: boolean; - /** How much to focus on optimizing code. */ - optimizeLevel?: number; - /** How much to focus on shrinking code size. */ - shrinkLevel?: number; - /** Re-optimizes until no further improvements can be made. */ - converge?: boolean; - /** Specifies the base directory of input and output files. */ - baseDir?: string; - /** Specifies the output file. File extension indicates format. */ - outFile?: string; - /** Specifies the binary output file (.wasm). */ - binaryFile?: string; - /** Specifies the text output file (.wat). */ - textFile?: string; - /** Specifies the JavaScript (via wasm2js) output file (.js). */ - jsFile?: string; - /** Specifies the WebIDL output file (.webidl). */ - idlFile?: string; - /** Specifies the TypeScript definition output file (.d.ts). */ - tsdFile?: string; - /** Enables source map generation. Optionally takes the URL. */ - sourceMap?: boolean | string; - /** Specifies the runtime variant to include in the program. */ - runtime?: string; - /** Disallows the use of unsafe features in user code. */ - noUnsafe?: boolean; - /** Enables debug information in emitted binaries. */ - debug?: boolean; - /** Replaces assertions with just their value without trapping. */ - noAssert?: boolean; - /** Performs compilation as usual but does not emit code. */ - noEmit?: boolean; - /** Imports the memory provided as 'env.memory'. */ - importMemory?: boolean; - /** Does not export the memory as 'memory'. */ - noExportMemory?: boolean; - /** Sets the initial memory size in pages. */ - initialMemory?: number; - /** Sets the maximum memory size in pages. */ - maximumMemory?: number; - /** Declare memory as shared. Requires maximumMemory. */ - sharedMemory?: boolean; - /** Sets the start offset of compiler-generated static memory. */ - memoryBase?: number; - /** Imports the function table provided as 'env.table'. */ - importTable?: boolean; - /** Exports the function table as 'table'. */ - exportTable?: boolean; - /** Exports an explicit start function to be called manually. */ - explicitStart?: boolean; - /** "Adds one or multiple paths to custom library components. */ - lib?: string | string[]; - /** Adds one or multiple paths to package resolution. */ - path?: string | string[]; - /** Aliases a global object under another name. */ - use?: string | string[]; - /** Sets the trap mode to use. */ - trapMode?: "allow" | "clamp" | "js"; - /** Specifies additional Binaryen passes to run. */ - runPasses?: string | string[]; - /** Skips validating the module using Binaryen. */ - noValidate?: boolean; - /** Enables WebAssembly features that are disabled by default. */ - enable?: string | string[]; - /** Disables WebAssembly features that are enabled by default. */ - disable?: string | string[]; - /** Specifies the path to a custom transform to 'require'. */ - transform?: string | string[]; - /** Make yourself sad for no good reason. */ - pedantic?: boolean; - /** Enables tracing of package resolution. */ - traceResolution?: boolean; - /** Lists files to be compiled and exits. */ - listFiles?: boolean; - /** Prints measuring information on I/O and compile times. */ - measure?: boolean; - /** Disables terminal colors. */ - noColors?: boolean; - /** Specifies an alternative file extension. */ - extension?: string; -} - -/** Compiler API options. */ -export interface APIOptions { - /** Standard output stream to use. */ - stdout?: OutputStream; - /** Standard error stream to use. */ - stderr?: OutputStream; - /** Reads a file from disk (or memory). */ - readFile?: (filename: string, baseDir: string) => string | null; - /** Writes a file to disk (or memory). */ - writeFile?: (filename: string, contents: Uint8Array, baseDir: string) => void; - /** Lists all files within a directory. */ - listFiles?: (dirname: string, baseDir: string) => string[] | null; -} - -/** Convenience function that parses and compiles source strings directly. */ -export function compileString(sources: { [key: string]: string } | string, options?: CompilerOptions): { - /** Standard output. */ - stdout: OutputStream, - /** Standard error. */ - stderr: OutputStream, - /** Emitted binary. */ - binary: Uint8Array | null, - /** Emitted text format. */ - text: string | null -} - -/** Runs the command line utility using the specified arguments array. */ -export function main(argv: string[], options: APIOptions, callback?: (err: Error | null) => number): number; -export function main(argv: string[], callback?: (err: Error | null) => number): number; - -/** Checks diagnostics emitted so far for errors. */ -export function checkDiagnostics(emitter: Record, stderr?: OutputStream): boolean; - -/** An object of stats for the current task. */ -export interface Stats { - readTime: number, - readCount: number, - writeTime: number, - writeCount: number, - parseTime: number, - parseCount: number, - compileTime: number, - compileCount: number, - emitTime: number, - emitCount: number, - validateTime: number, - validateCount: number, - optimizeTime: number, - optimizeCount: number -} - -/** Creates an empty set of stats. */ -export function createStats(): Stats; - -/** Measures the execution time of the specified function. */ -export function measure(fn: () => void): number; - -/** Formats a high resolution time to a human readable string. */ -export function formatTime(time: number): string; - -/** Formats and prints out the contents of a set of stats. */ -export function printStats(stats: Stats, output: OutputStream): void; - -/** Creates a memory stream that can be used in place of stdout/stderr. */ -export function createMemoryStream(fn?: (chunk: Uint8Array | string) => void): MemoryStream; - -/** Compatible TypeScript compiler options for syntax highlighting etc. */ -export const tscOptions: Record; diff --git a/cli/asc.js b/cli/asc.js deleted file mode 100644 index 65a095c66e..0000000000 --- a/cli/asc.js +++ /dev/null @@ -1,1192 +0,0 @@ -/** - * @license - * Copyright 2020 Daniel Wirtz / The AssemblyScript Authors. - * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Compiler frontend for node.js - * - * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to - * JavaScript as well as the compiler compiled to WebAssembly (eventually). Runs the sources - * directly through ts-node if distribution files are not present (indicated by a `-dev` version). - * - * Can also be packaged as a bundle suitable for in-browser use with the standard library injected - * in the build step. See dist/asc.js for the bundle and webpack.config.js for building details. - */ - -/* global BUNDLE_VERSION, BUNDLE_LIBRARY, BUNDLE_DEFINITIONS */ - -const fs = require("fs"); -const path = require("path"); -const process = require("process"); // ensure shim - -const utf8 = require("./util/utf8"); -const colorsUtil = require("./util/colors"); -const optionsUtil = require("./util/options"); -const mkdirp = require("./util/mkdirp"); -const find = require("./util/find"); -const binaryen = global.binaryen || (global.binaryen = require("binaryen")); - -const dynrequire = typeof __webpack_require__ === "function" - ? __non_webpack_require__ - : require; - -const WIN = process.platform === "win32"; -const EOL = WIN ? "\r\n" : "\n"; -const SEP = WIN ? "\\" : "/"; - -// Sets up an extension with its definition counterpart and relevant regexes. -function setupExtension(ext) { - if (!ext.startsWith(".")) ext = "." + ext; - return { - ext, - ext_d: ".d" + ext, - re: new RegExp("\\" + ext + "$"), - re_d: new RegExp("\\.d\\" + ext + "$"), - re_except_d: new RegExp("^(?!.*\\.d\\" + ext + "$).*\\" + ext + "$"), - re_index: new RegExp("(?:^|[\\\\\\/])index\\" + ext + "$") - }; -} - -const defaultExtension = setupExtension(".ts"); - -// Proxy Binaryen's ready event -Object.defineProperty(exports, "ready", { - get() { return binaryen.ready; } -}); - -// Emscripten adds an `uncaughtException` listener to Binaryen that results in an additional -// useless code fragment on top of an actual error. suppress this: -if (process.removeAllListeners) process.removeAllListeners("uncaughtException"); - -// Use distribution files if present, otherwise run the sources directly. -var assemblyscript; -var isDev = false; -(function loadAssemblyScript() { - try { - assemblyscript = require("assemblyscript"); - } catch (e) { - try { // `asc` on the command line - assemblyscript = dynrequire("../dist/assemblyscript.js"); - } catch (e) { - try { // `asc` on the command line without dist files - dynrequire("ts-node").register({ - project: path.join(__dirname, "..", "src", "tsconfig.json"), - skipIgnore: true, - compilerOptions: { target: "ES2016" } - }); - dynrequire("../src/glue/js"); - assemblyscript = dynrequire("../src"); - isDev = true; - } catch (e_ts) { - try { // `require("dist/asc.js")` in explicit browser tests - assemblyscript = dynrequire("./assemblyscript"); - } catch (e) { - throw Error(e_ts.stack + "\n---\n" + e.stack); - } - } - } - } -})(); - -/** Whether this is a webpack bundle or not. */ -exports.isBundle = typeof BUNDLE_VERSION === "string"; - -/** Whether asc runs the sources directly or not. */ -exports.isDev = isDev; - -/** AssemblyScript version. */ -exports.version = exports.isBundle ? BUNDLE_VERSION : dynrequire("../package.json").version; - -/** Available CLI options. */ -exports.options = require("./asc.json"); - -/** Prefix used for library files. */ -exports.libraryPrefix = assemblyscript.LIBRARY_PREFIX; - -/** Default Binaryen optimization level. */ -exports.defaultOptimizeLevel = 3; - -/** Default Binaryen shrink level. */ -exports.defaultShrinkLevel = 1; - -/** Bundled library files. */ -exports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if not a bundle - const libDir = path.join(__dirname, "..", "std", "assembly"); - const bundled = {}; - find - .files(libDir, defaultExtension.re_except_d) - .forEach(file => { - bundled[file.replace(defaultExtension.re, "")] = fs.readFileSync(path.join(libDir, file), "utf8"); - }); - return bundled; -})(); - -/** Bundled definition files. */ -exports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : (() => { // set up if not a bundle - const readDefinition = name => fs.readFileSync( - path.join(__dirname, "..", "std", name, "index" + defaultExtension.ext_d), - "utf8" - ); - return { - assembly: readDefinition("assembly"), - portable: readDefinition("portable") - }; -})(); - -/** Convenience function that parses and compiles source strings directly. */ -exports.compileString = (sources, options) => { - if (typeof sources === "string") sources = { ["input" + defaultExtension.ext]: sources }; - const output = Object.create({ - stdout: createMemoryStream(), - stderr: createMemoryStream() - }); - var argv = [ - "--binaryFile", "binary", - "--textFile", "text", - ]; - Object.keys(options || {}).forEach(key => { - var val = options[key]; - var opt = exports.options[key]; - if (opt && opt.type === "b") { - if (val) argv.push("--" + key); - } else { - if (Array.isArray(val)) { - val.forEach(val => { argv.push("--" + key, String(val)); }); - } - else argv.push("--" + key, String(val)); - } - }); - exports.main(argv.concat(Object.keys(sources)), { - stdout: output.stdout, - stderr: output.stderr, - readFile: name => Object.prototype.hasOwnProperty.call(sources, name) ? sources[name] : null, - writeFile: (name, contents) => { output[name] = contents; }, - listFiles: () => [] - }); - return output; -}; - -/** Runs the command line utility using the specified arguments array. */ -exports.main = function main(argv, options, callback) { - if (typeof options === "function") { - callback = options; - options = {}; - } else if (!options) { - options = {}; - } - - const stdout = options.stdout || process.stdout; - const stderr = options.stderr || process.stderr; - const readFile = options.readFile || readFileNode; - const writeFile = options.writeFile || writeFileNode; - const listFiles = options.listFiles || listFilesNode; - const stats = options.stats || createStats(); - let extension = defaultExtension; - - // Output must be specified if not present in the environment - if (!stdout) throw Error("'options.stdout' must be specified"); - if (!stderr) throw Error("'options.stderr' must be specified"); - - // Parse command line options but do not populate option defaults yet - const optionsResult = optionsUtil.parse(argv, exports.options, false); - let opts = optionsResult.options; - argv = optionsResult.arguments; - - if (opts.noColors) { - colorsUtil.stdout.supported = - colorsUtil.stderr.supported = false; - } else { - colorsUtil.stdout = colorsUtil.from(stdout); - colorsUtil.stderr = colorsUtil.from(stderr); - } - - // Check for unknown options - const unknownOpts = optionsResult.unknown; - if (unknownOpts.length) { - unknownOpts.forEach(arg => { - stderr.write(colorsUtil.stderr.yellow("WARNING ") + "Unknown option '" + arg + "'" + EOL); - }); - } - - // Check for trailing arguments - const trailingArgv = optionsResult.trailing; - if (trailingArgv.length) { - stderr.write(colorsUtil.stderr.yellow("WARNING ") + "Unsupported trailing arguments: " + trailingArgv.join(" ") + EOL); - } - - // Use default callback if none is provided - if (!callback) callback = function defaultCallback(err) { - var code = 0; - if (err) { - stderr.write(colorsUtil.stderr.red("FAILURE ") + err.stack.replace(/^ERROR: /i, "") + EOL); - code = 1; - } - return code; - }; - - // Just print the version if requested - if (opts.version) { - stdout.write("Version " + exports.version + (isDev ? "-dev" : "") + EOL); - return callback(null); - } - - // Use another extension if requested - if (typeof opts.extension === "string") { - if (/^\.?[0-9a-zA-Z]{1,14}$/.test(opts.extension)) { - extension = setupExtension(opts.extension); - } else { - return callback(Error("Invalid extension: " + opts.extension)); - } - } - - // Print the help message if requested or no source files are provided - if (opts.help || !argv.length) { - var out = opts.help ? stdout : stderr; - var color = opts.help ? colorsUtil.stdout : colorsUtil.stderr; - out.write([ - color.white("SYNTAX"), - " " + color.cyan("asc") + " [entryFile ...] [options]", - "", - color.white("EXAMPLES"), - " " + color.cyan("asc") + " hello" + extension.ext, - " " + color.cyan("asc") + " hello" + extension.ext + " -b hello.wasm -t hello.wat", - " " + color.cyan("asc") + " hello1" + extension.ext + " hello2" + extension.ext + " -b -O > hello.wasm", - "", - color.white("OPTIONS"), - ].concat( - optionsUtil.help(exports.options, 24, EOL) - ).join(EOL) + EOL); - return callback(null); - } - - // I/O must be specified if not present in the environment - if (!fs.readFileSync) { - if (readFile === readFileNode) throw Error("'options.readFile' must be specified"); - if (writeFile === writeFileNode) throw Error("'options.writeFile' must be specified"); - if (listFiles === listFilesNode) throw Error("'options.listFiles' must be specified"); - } - - // Set up base directory - const baseDir = path.normalize(opts.baseDir || "."); - - // Load additional options from asconfig.json - let asconfigPath = optionsUtil.resolvePath(opts.config || "asconfig.json", baseDir); - let asconfigFile = path.basename(asconfigPath); - let asconfigDir = path.dirname(asconfigPath); - let asconfig = getAsconfig(asconfigFile, asconfigDir, readFile); - - const seenAsconfig = new Set(); - seenAsconfig.add(asconfigPath); - - const target = opts.target || "release"; - while (asconfig) { - // Merge target first - if (asconfig.targets) { - const targetOptions = asconfig.targets[target]; - if (targetOptions) { - opts = optionsUtil.merge(exports.options, opts, targetOptions, asconfigDir); - } - } - // Merge general options - const generalOptions = asconfig.options; - if (generalOptions) { - opts = optionsUtil.merge(exports.options, opts, generalOptions, asconfigDir); - } - - // Append entries - if (asconfig.entries) { - for (let entry of asconfig.entries) { - argv.push(optionsUtil.resolvePath(entry, asconfigDir)); - } - } - - // Look up extended asconfig and repeat - if (asconfig.extends) { - asconfigPath = optionsUtil.resolvePath(asconfig.extends, asconfigDir, true); - asconfigFile = path.basename(asconfigPath); - asconfigDir = path.dirname(asconfigPath); - if (seenAsconfig.has(asconfigPath)) break; - seenAsconfig.add(asconfigPath); - asconfig = getAsconfig(asconfigFile, asconfigDir, readFile); - } else { - break; - } - } - - // Populate option defaults once user-defined options are set - optionsUtil.addDefaults(exports.options, opts); - - // If showConfig print options and exit - if (opts.showConfig) { - stderr.write(JSON.stringify({ - options: opts, - entries: argv - }, null, 2)); - return callback(null); - } - - // create a unique set of values - function unique(values) { - return [...new Set(values)]; - } - - // Set up options - const compilerOptions = assemblyscript.newOptions(); - assemblyscript.setTarget(compilerOptions, 0); - assemblyscript.setNoAssert(compilerOptions, opts.noAssert); - assemblyscript.setExportMemory(compilerOptions, !opts.noExportMemory); - assemblyscript.setImportMemory(compilerOptions, opts.importMemory); - assemblyscript.setInitialMemory(compilerOptions, opts.initialMemory >>> 0); - assemblyscript.setMaximumMemory(compilerOptions, opts.maximumMemory >>> 0); - assemblyscript.setSharedMemory(compilerOptions, opts.sharedMemory); - assemblyscript.setImportTable(compilerOptions, opts.importTable); - assemblyscript.setExportTable(compilerOptions, opts.exportTable); - assemblyscript.setExplicitStart(compilerOptions, opts.explicitStart); - assemblyscript.setMemoryBase(compilerOptions, opts.memoryBase >>> 0); - assemblyscript.setTableBase(compilerOptions, opts.tableBase >>> 0); - assemblyscript.setSourceMap(compilerOptions, opts.sourceMap != null); - assemblyscript.setNoUnsafe(compilerOptions, opts.noUnsafe); - assemblyscript.setPedantic(compilerOptions, opts.pedantic); - assemblyscript.setLowMemoryLimit(compilerOptions, opts.lowMemoryLimit >>> 0); - - // Add or override aliases if specified - if (opts.use) { - let aliases = opts.use; - for (let i = 0, k = aliases.length; i < k; ++i) { - let part = aliases[i]; - let p = part.indexOf("="); - if (p < 0) return callback(Error("Global alias '" + part + "' is invalid.")); - let alias = part.substring(0, p).trim(); - let name = part.substring(p + 1).trim(); - if (!alias.length) return callback(Error("Global alias '" + part + "' is invalid.")); - assemblyscript.setGlobalAlias(compilerOptions, alias, name); - } - } - - // Disable default features if specified - var features; - if ((features = opts.disable) != null) { - if (typeof features === "string") features = features.split(","); - for (let i = 0, k = features.length; i < k; ++i) { - let name = features[i].trim(); - let flag = assemblyscript["FEATURE_" + name.replace(/-/g, "_").toUpperCase()]; - if (!flag) return callback(Error("Feature '" + name + "' is unknown.")); - assemblyscript.disableFeature(compilerOptions, flag); - } - } - - // Enable experimental features if specified - if ((features = opts.enable) != null) { - if (typeof features === "string") features = features.split(","); - for (let i = 0, k = features.length; i < k; ++i) { - let name = features[i].trim(); - let flag = assemblyscript["FEATURE_" + name.replace(/-/g, "_").toUpperCase()]; - if (!flag) return callback(Error("Feature '" + name + "' is unknown.")); - assemblyscript.enableFeature(compilerOptions, flag); - } - } - - // Set up optimization levels - var optimizeLevel = 0; - var shrinkLevel = 0; - if (opts.optimize) { - optimizeLevel = exports.defaultOptimizeLevel; - shrinkLevel = exports.defaultShrinkLevel; - } - if (typeof opts.optimizeLevel === "number") optimizeLevel = opts.optimizeLevel; - if (typeof opts.shrinkLevel === "number") shrinkLevel = opts.shrinkLevel; - optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3); - shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2); - assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel); - - // Initialize the program - const program = assemblyscript.newProgram(compilerOptions); - - // Set up transforms - const transforms = []; - if (opts.transform) { - let tsNodeRegistered = false; - let transformArgs = unique(opts.transform); - for (let i = 0, k = transformArgs.length; i < k; ++i) { - let filename = transformArgs[i].trim(); - if (!tsNodeRegistered && filename.endsWith(".ts")) { // ts-node requires .ts specifically - dynrequire("ts-node").register({ transpileOnly: true, skipProject: true, compilerOptions: { target: "ES2016" } }); - tsNodeRegistered = true; - } - try { - const classOrModule = dynrequire(dynrequire.resolve(filename, { paths: [baseDir, process.cwd()] })); - if (typeof classOrModule === "function") { - Object.assign(classOrModule.prototype, { - program, - baseDir, - stdout, - stderr, - log: console.error, - readFile, - writeFile, - listFiles - }); - transforms.push(new classOrModule()); - } else { - transforms.push(classOrModule); // legacy module - } - } catch (e) { - return callback(e); - } - } - } - - function applyTransform(name, ...args) { - for (let i = 0, k = transforms.length; i < k; ++i) { - let transform = transforms[i]; - if (typeof transform[name] === "function") { - try { - stats.transformCount++; - stats.transfromTime += measure(() => { - transform[name](...args); - }); - } catch (e) { - return e; - } - } - } - } - - // Parse library files - Object.keys(exports.libraryFiles).forEach(libPath => { - if (libPath.indexOf("/") >= 0) return; // in sub-directory: imported on demand - stats.parseCount++; - stats.parseTime += measure(() => { - assemblyscript.parse(program, exports.libraryFiles[libPath], exports.libraryPrefix + libPath + extension.ext, false); - }); - }); - let customLibDirs = []; - if (opts.lib) { - let lib = opts.lib; - if (typeof lib === "string") lib = lib.split(","); - customLibDirs.push(...lib.map(p => p.trim())); - customLibDirs = unique(customLibDirs); // `lib` and `customLibDirs` may include duplicates - for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom - let libDir = customLibDirs[i]; - let libFiles; - if (libDir.endsWith(extension.ext)) { - libFiles = [ path.basename(libDir) ]; - libDir = path.dirname(libDir); - } else { - libFiles = listFiles(libDir, baseDir) || []; - } - for (let j = 0, l = libFiles.length; j < l; ++j) { - let libPath = libFiles[j]; - let libText = readFile(libPath, libDir); - if (libText === null) return callback(Error("Library file '" + libPath + "' not found.")); - stats.parseCount++; - exports.libraryFiles[libPath.replace(extension.re, "")] = libText; - stats.parseTime += measure(() => { - assemblyscript.parse(program, libText, exports.libraryPrefix + libPath, false); - }); - } - } - } - opts.path = opts.path || []; - - // Maps package names to parent directory - var packageMains = new Map(); - var packageBases = new Map(); - - // Gets the file matching the specified source path, imported at the given dependee path - function getFile(internalPath, dependeePath) { - var sourceText = null; // text reported back to the compiler - var sourcePath = null; // path reported back to the compiler - - const libraryPrefix = exports.libraryPrefix; - const libraryFiles = exports.libraryFiles; - - // Try file.ext, file/index.ext, file.d.ext - if (!internalPath.startsWith(libraryPrefix)) { - if ((sourceText = readFile(sourcePath = internalPath + extension.ext, baseDir)) == null) { - if ((sourceText = readFile(sourcePath = internalPath + "/index" + extension.ext, baseDir)) == null) { - // portable d.ext: uses the .js file next to it in JS or becomes an import in Wasm - sourcePath = internalPath + extension.ext; - sourceText = readFile(internalPath + extension.ext_d, baseDir); - } - } - - // Search library in this order: stdlib, custom lib dirs, paths - } else { - const plainName = internalPath.substring(libraryPrefix.length); - const indexName = plainName + "/index"; - if (Object.prototype.hasOwnProperty.call(libraryFiles, plainName)) { - sourceText = libraryFiles[plainName]; - sourcePath = libraryPrefix + plainName + extension.ext; - } else if (Object.prototype.hasOwnProperty.call(libraryFiles, indexName)) { - sourceText = libraryFiles[indexName]; - sourcePath = libraryPrefix + indexName + extension.ext; - } else { // custom lib dirs - for (const libDir of customLibDirs) { - if ((sourceText = readFile(plainName + extension.ext, libDir)) != null) { - sourcePath = libraryPrefix + plainName + extension.ext; - break; - } else { - if ((sourceText = readFile(indexName + extension.ext, libDir)) != null) { - sourcePath = libraryPrefix + indexName + extension.ext; - break; - } - } - } - if (sourceText == null) { // paths - const match = internalPath.match(/^~lib\/((?:@[^/]+\/)?[^/]+)(?:\/(.+))?/); // ~lib/(pkg)/(path), ~lib/(@org/pkg)/(path) - if (match) { - const packageName = match[1]; - const isPackageRoot = match[2] === undefined; - const filePath = isPackageRoot ? "index" : match[2]; - const basePath = packageBases.has(dependeePath) ? packageBases.get(dependeePath) : "."; - if (opts.traceResolution) stderr.write("Looking for package '" + packageName + "' file '" + filePath + "' relative to '" + basePath + "'" + EOL); - const paths = []; - const parts = path.resolve(baseDir, basePath).split(SEP); - for (let i = parts.length, k = WIN ? 1 : 0; i >= k; --i) { - if (parts[i - 1] !== "node_modules") paths.push(parts.slice(0, i).join(SEP) + SEP + "node_modules"); - } - for (const currentPath of paths.concat(...opts.path).map(p => path.relative(baseDir, p))) { - if (opts.traceResolution) stderr.write(" in " + path.join(currentPath, packageName) + EOL); - let mainPath = "assembly"; - if (packageMains.has(packageName)) { // use cached - mainPath = packageMains.get(packageName); - } else { // evaluate package.json - let jsonPath = path.join(currentPath, packageName, "package.json"); - let jsonText = readFile(jsonPath, baseDir); - if (jsonText != null) { - try { - let json = JSON.parse(jsonText); - if (typeof json.ascMain === "string") { - mainPath = json.ascMain.replace(extension.re_index, ""); - packageMains.set(packageName, mainPath); - } - } catch (e) { /* nop */ } - } - } - const mainDir = path.join(currentPath, packageName, mainPath); - const plainName = filePath; - if ((sourceText = readFile(path.join(mainDir, plainName + extension.ext), baseDir)) != null) { - sourcePath = libraryPrefix + packageName + "/" + plainName + extension.ext; - packageBases.set(sourcePath.replace(extension.re, ""), path.join(currentPath, packageName)); - if (opts.traceResolution) stderr.write(" -> " + path.join(mainDir, plainName + extension.ext) + EOL); - break; - } else if (!isPackageRoot) { - const indexName = filePath + "/index"; - if ((sourceText = readFile(path.join(mainDir, indexName + extension.ext), baseDir)) !== null) { - sourcePath = libraryPrefix + packageName + "/" + indexName + extension.ext; - packageBases.set(sourcePath.replace(extension.re, ""), path.join(currentPath, packageName)); - if (opts.traceResolution) stderr.write(" -> " + path.join(mainDir, indexName + extension.ext) + EOL); - break; - } - } - } - } - } - } - } - // No such file - if (sourceText == null) return null; - return { sourceText, sourcePath }; - } - - // Parses the backlog of imported files after including entry files - function parseBacklog() { - var internalPath; - while ((internalPath = assemblyscript.nextFile(program)) != null) { - let file = getFile(internalPath, assemblyscript.getDependee(program, internalPath)); - if (file) { - stats.parseCount++; - stats.parseTime += measure(() => { - assemblyscript.parse(program, file.sourceText, file.sourcePath, false); - }); - } else { - assemblyscript.parse(program, null, internalPath + extension.ext, false); - } - } - var numErrors = checkDiagnostics(program, stderr); - if (numErrors) { - const err = Error(numErrors + " parse error(s)"); - err.stack = err.message; // omit stack - return callback(err); - } - } - - // Include runtime template before entry files so its setup runs first - { - let runtimeName = String(opts.runtime); - let runtimePath = "rt/index-" + runtimeName; - let runtimeText = exports.libraryFiles[runtimePath]; - if (runtimeText == null) { - runtimePath = runtimeName; - runtimeText = readFile(runtimePath + extension.ext, baseDir); - if (runtimeText == null) return callback(Error("Runtime '" + runtimeName + "' not found.")); - } else { - runtimePath = "~lib/" + runtimePath; - } - stats.parseCount++; - stats.parseTime += measure(() => { - assemblyscript.parse(program, runtimeText, runtimePath + extension.ext, true); - }); - } - - // Include entry files - for (let i = 0, k = argv.length; i < k; ++i) { - const filename = argv[i]; - - let sourcePath = String(filename).replace(/\\/g, "/").replace(extension.re, "").replace(/[\\/]$/, ""); - - // Setting the path to relative path - sourcePath = path.isAbsolute(sourcePath) ? path.relative(baseDir, sourcePath).replace(/\\/g, "/") : sourcePath; - - // Try entryPath.ext, then entryPath/index.ext - let sourceText = readFile(sourcePath + extension.ext, baseDir); - if (sourceText == null) { - sourceText = readFile(sourcePath + "/index" + extension.ext, baseDir); - if (sourceText != null) sourcePath += "/index" + extension.ext; - else sourcePath += extension.ext; - } else { - sourcePath += extension.ext; - } - - stats.parseCount++; - stats.parseTime += measure(() => { - assemblyscript.parse(program, sourceText, sourcePath, true); - }); - } - - // Parse entry files - { - let code = parseBacklog(); - if (code) return code; - } - - // Call afterParse transform hook - { - let error = applyTransform("afterParse", program.parser); - if (error) return callback(error); - } - - // Parse additional files, if any - { - let code = parseBacklog(); - if (code) return code; - } - - // Print files and exit if listFiles - if (opts.listFiles) { - // FIXME: not a proper C-like API - stderr.write(program.sources.map(s => s.normalizedPath).sort().join(EOL) + EOL); - return callback(null); - } - - // Pre-emptively initialize the program - stats.initializeCount++; - stats.initializeTime += measure(() => { - assemblyscript.initializeProgram(program); - }); - - // Call afterInitialize transform hook - { - let error = applyTransform("afterInitialize", program); - if (error) return callback(error); - } - - var module; - stats.compileCount++; - stats.compileTime += measure(() => { - module = assemblyscript.compile(program); - }); - var numErrors = checkDiagnostics(program, stderr); - if (numErrors) { - if (module) module.dispose(); - const err = Error(numErrors + " compile error(s)"); - err.stack = err.message; // omit stack - return callback(err); - } - - // Call afterCompile transform hook - { - let error = applyTransform("afterCompile", module); - if (error) return callback(error); - } - - // Validate the module if requested - if (!opts.noValidate) { - stats.validateCount++; - let isValid; - stats.validateTime += measure(() => { - isValid = module.validate(); - }); - if (!isValid) { - module.dispose(); - return callback(Error("validate error")); - } - } - - // Set Binaryen-specific options - if (opts.trapMode === "clamp") { - stats.optimizeCount++; - stats.optimizeTime += measure(() => { - module.runPass("trap-mode-clamp"); - }); - } else if (opts.trapMode === "js") { - stats.optimizeCount++; - stats.optimizeTime += measure(() => { - module.runPass("trap-mode-js"); - }); - } else if (opts.trapMode !== "allow") { - module.dispose(); - return callback(Error("Unsupported trap mode")); - } - - // Optimize the module - const debugInfo = opts.debug; - const usesARC = opts.runtime == "half" || opts.runtime == "full"; - const converge = opts.converge; - const runPasses = []; - if (opts.runPasses) { - if (typeof opts.runPasses === "string") { - opts.runPasses = opts.runPasses.split(","); - } - if (opts.runPasses.length) { - opts.runPasses.forEach(pass => { - if (runPasses.indexOf(pass = pass.trim()) < 0) - runPasses.push(pass); - }); - } - } - - stats.optimizeTime += measure(() => { - stats.optimizeCount++; - module.optimize(optimizeLevel, shrinkLevel, debugInfo, usesARC); - module.runPasses(runPasses); - if (converge) { - let last = module.toBinary(); - do { - stats.optimizeCount++; - module.optimize(optimizeLevel, shrinkLevel, debugInfo, usesARC); - module.runPasses(runPasses); - let next = module.toBinary(); - if (next.output.length >= last.output.length) { - if (next.output.length > last.output.length) { - stderr.write("Last converge was suboptimial." + EOL); - } - break; - } - last = next; - } while (true); - } - }); - - // Prepare output - if (!opts.noEmit) { - if (opts.outFile != null) { - if (/\.was?t$/.test(opts.outFile) && opts.textFile == null) { - opts.textFile = opts.outFile; - } else if (/\.js$/.test(opts.outFile) && opts.jsFile == null) { - opts.jsFile = opts.outFile; - } else if (opts.binaryFile == null) { - opts.binaryFile = opts.outFile; - } - } - - let hasStdout = false; - let hasOutput = opts.textFile != null - || opts.binaryFile != null - || opts.jsFile != null - || opts.tsdFile != null - || opts.idlFile != null; - - // Write binary - if (opts.binaryFile != null) { - let basename = path.basename(opts.binaryFile); - let sourceMapURL = opts.sourceMap != null - ? opts.sourceMap.length - ? opts.sourceMap - : "./" + basename + ".map" - : null; - - let wasm; - stats.emitCount++; - stats.emitTime += measure(() => { - wasm = module.toBinary(sourceMapURL); - }); - - if (opts.binaryFile.length) { - writeFile(opts.binaryFile, wasm.output, baseDir); - } else { - writeStdout(wasm.output); - hasStdout = true; - } - - // Post-process source map - if (wasm.sourceMap != null) { - if (opts.binaryFile.length) { - let map = JSON.parse(wasm.sourceMap); - map.sourceRoot = "./" + basename; - let contents = []; - map.sources.forEach((name, index) => { - let text = assemblyscript.getSource(program, name.replace(extension.re, "")); - if (text == null) return callback(Error("Source of file '" + name + "' not found.")); - contents[index] = text; - }); - map.sourcesContent = contents; - writeFile(path.join( - path.dirname(opts.binaryFile), - path.basename(sourceMapURL) - ).replace(/^\.\//, ""), JSON.stringify(map), baseDir); - } else { - stderr.write("Skipped source map (stdout already occupied)" + EOL); - } - } - } - - // Write text (also fallback) - if (opts.textFile != null || !hasOutput) { - let wat; - if (opts.textFile != null && opts.textFile.length) { - stats.emitCount++; - stats.emitTime += measure(() => { - wat = module.toText(); - }); - writeFile(opts.textFile, wat, baseDir); - } else if (!hasStdout) { - stats.emitCount++; - stats.emitTime += measure(() => { - wat = module.toText(); - }); - writeStdout(wat); - } - } - - // Write WebIDL - if (opts.idlFile != null) { - let idl; - if (opts.idlFile.length) { - stats.emitCount++; - stats.emitTime += measure(() => { - idl = assemblyscript.buildIDL(program); - }); - writeFile(opts.idlFile, idl, baseDir); - } else if (!hasStdout) { - stats.emitCount++; - stats.emitTime += measure(() => { - idl = assemblyscript.buildIDL(program); - }); - writeStdout(idl); - hasStdout = true; - } - } - - // Write TypeScript definition - if (opts.tsdFile != null) { - let tsd; - if (opts.tsdFile.length) { - stats.emitCount++; - stats.emitTime += measure(() => { - tsd = assemblyscript.buildTSD(program); - }); - writeFile(opts.tsdFile, tsd, baseDir); - } else if (!hasStdout) { - stats.emitCount++; - stats.emitTime += measure(() => { - tsd = assemblyscript.buildTSD(program); - }); - writeStdout(tsd); - hasStdout = true; - } - } - - // Write JS (modifies the binary, so must be last) - if (opts.jsFile != null) { - let js; - if (opts.jsFile.length) { - stats.emitCount++; - stats.emitTime += measure(() => { - js = module.toAsmjs(); - }); - writeFile(opts.jsFile, js, baseDir); - } else if (!hasStdout) { - stats.emitCount++; - stats.emitTime += measure(() => { - js = module.toAsmjs(); - }); - writeStdout(js); - } - } - } - - module.dispose(); - if (opts.measure) { - printStats(stats, stderr); - } - - return callback(null); - - function readFileNode(filename, baseDir) { - let name = path.resolve(baseDir, filename); - try { - let text; - stats.readCount++; - stats.readTime += measure(() => { - text = fs.readFileSync(name, { encoding: "utf8" }); - }); - return text; - } catch (e) { - return null; - } - } - - function writeFileNode(filename, contents, baseDir) { - try { - stats.writeCount++; - stats.writeTime += measure(() => { - const dirPath = path.resolve(baseDir, path.dirname(filename)); - filename = path.basename(filename); - const outputFilePath = path.join(dirPath, filename); - if (!fs.existsSync(dirPath)) mkdirp(dirPath); - fs.writeFileSync( - outputFilePath, contents, - typeof contents === "string" ? { encoding: "utf8" } : void 0 - ); - }); - return true; - } catch (e) { - return false; - } - } - - function listFilesNode(dirname, baseDir) { - var files; - try { - stats.readCount++; - stats.readTime += measure(() => { - files = fs.readdirSync(path.join(baseDir, dirname)) - .filter(file => extension.re_except_d.test(file)); - }); - return files; - } catch (e) { - return null; - } - } - - function writeStdout(contents) { - if (!writeStdout.used) { - stats.writeCount++; - writeStdout.used = true; - } - stats.writeTime += measure(() => { - if (typeof contents === "string") { - stdout.write(contents, { encoding: "utf8" }); - } else { - stdout.write(contents); - } - }); - } -}; - -const toString = Object.prototype.toString; - -function isObject(arg) { - return toString.call(arg) === "[object Object]"; -} - -function getAsconfig(file, baseDir, readFile) { - const contents = readFile(file, baseDir); - const location = path.join(baseDir, file); - if (!contents) return null; - - // obtain the configuration - let config; - try { - config = JSON.parse(contents); - } catch(ex) { - throw new Error("Asconfig is not valid json: " + location); - } - - // validate asconfig shape - if (config.options && !isObject(config.options)) { - throw new Error("Asconfig.options is not an object: " + location); - } - - if (config.include && !Array.isArray(config.include)) { - throw new Error("Asconfig.include is not an array: " + location); - } - - if (config.targets) { - if (!isObject(config.targets)) { - throw new Error("Asconfig.targets is not an object: " + location); - } - const targets = Object.keys(config.targets); - for (let i = 0; i < targets.length; i++) { - const target = targets[i]; - if (!isObject(config.targets[target])) { - throw new Error("Asconfig.targets." + target + " is not an object: " + location); - } - } - } - - if (config.extends && typeof config.extends !== "string") { - throw new Error("Asconfig.extends is not a string: " + location); - } - - return config; -} - -exports.getAsconfig = getAsconfig; - -/** Checks diagnostics emitted so far for errors. */ -function checkDiagnostics(program, stderr) { - var diagnostic; - var numErrors = 0; - while ((diagnostic = assemblyscript.nextDiagnostic(program)) != null) { - if (stderr) { - stderr.write( - assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) + - EOL + EOL - ); - } - if (assemblyscript.isError(diagnostic)) ++numErrors; - } - return numErrors; -} - -exports.checkDiagnostics = checkDiagnostics; - -/** Creates an empty set of stats. */ -function createStats() { - return { - readTime: 0, - readCount: 0, - writeTime: 0, - writeCount: 0, - parseTime: 0, - parseCount: 0, - initializeTime: 0, - initializeCount: 0, - compileTime: 0, - compileCount: 0, - emitTime: 0, - emitCount: 0, - validateTime: 0, - validateCount: 0, - optimizeTime: 0, - optimizeCount: 0, - transformTime: 0, - transformCount: 0 - }; -} - -exports.createStats = createStats; - -/** Measures the execution time of the specified function. */ -function measure(fn) { - const start = process.hrtime(); - fn(); - const times = process.hrtime(start); - return times[0] * 1e9 + times[1]; -} - -exports.measure = measure; - -function pad(str, len) { - while (str.length < len) str = " " + str; - return str; -} - -/** Formats a high resolution time to a human readable string. */ -function formatTime(time) { - return time ? (time / 1e6).toFixed(3) + " ms" : "n/a"; -} - -exports.formatTime = formatTime; - -/** Formats and prints out the contents of a set of stats. */ -function printStats(stats, output) { - const format = (time, count) => pad(formatTime(time), 12) + " n=" + count; - (output || process.stdout).write([ - "I/O Read : " + format(stats.readTime, stats.readCount), - "I/O Write : " + format(stats.writeTime, stats.writeCount), - "Parse : " + format(stats.parseTime, stats.parseCount), - "Initialize : " + format(stats.initializeTime, stats.initializeCount), - "Compile : " + format(stats.compileTime, stats.compileCount), - "Emit : " + format(stats.emitTime, stats.emitCount), - "Validate : " + format(stats.validateTime, stats.validateCount), - "Optimize : " + format(stats.optimizeTime, stats.optimizeCount), - "Transform : " + format(stats.transformTime, stats.transformCount) - ].join(EOL) + EOL); -} - -exports.printStats = printStats; - -var allocBuffer = typeof global !== "undefined" && global.Buffer - ? global.Buffer.allocUnsafe || (len => new global.Buffer(len)) - : len => new Uint8Array(len); - -/** Creates a memory stream that can be used in place of stdout/stderr. */ -function createMemoryStream(fn) { - var stream = []; - stream.write = function(chunk) { - if (fn) fn(chunk); - if (typeof chunk === "string") { - let buffer = allocBuffer(utf8.length(chunk)); - utf8.write(chunk, buffer, 0); - chunk = buffer; - } - this.push(chunk); - }; - stream.reset = function() { - stream.length = 0; - }; - stream.toBuffer = function() { - var offset = 0, i = 0, k = this.length; - while (i < k) offset += this[i++].length; - var buffer = allocBuffer(offset); - offset = i = 0; - while (i < k) { - buffer.set(this[i], offset); - offset += this[i].length; - ++i; - } - return buffer; - }; - stream.toString = function() { - var buffer = this.toBuffer(); - return utf8.read(buffer, 0, buffer.length); - }; - return stream; -} - -exports.createMemoryStream = createMemoryStream; - -/** Compatible TypeScript compiler options for syntax highlighting etc. */ -exports.tscOptions = { - alwaysStrict: true, - noImplicitAny: true, - noImplicitReturns: true, - noImplicitThis: true, - noEmitOnError: true, - strictNullChecks: true, - experimentalDecorators: true, - target: "esnext", - module: "commonjs", - noLib: true, - types: [], - allowJs: false -}; diff --git a/cli/asc.json b/cli/asc.json deleted file mode 100644 index b9de41a05a..0000000000 --- a/cli/asc.json +++ /dev/null @@ -1,366 +0,0 @@ -{ - "version": { - "category": "General", - "description": "Prints just the compiler's version and exits.", - "type": "b", - "alias": "v" - }, - "help": { - "category": "General", - "description": "Prints this message and exits.", - "type": "b", - "alias": "h" - }, - "noColors": { - "category": "General", - "description": "Disables terminal colors.", - "type": "b", - "default": false - }, - "config": { - "category": "General", - "description": "Configuration file to apply. CLI arguments take precedence.", - "type": "s", - "cliOnly": true - }, - "target": { - "category": "General", - "description": "Target configuration to use. Defaults to 'release'.", - "type": "s", - "cliOnly": true - }, - - "optimize": { - "category": "Optimization", - "description": [ - "Optimizes the module. Typical shorthands are:", - "", - " Default optimizations -O / -O3s", - " Make a release build -O --noAssert", - " Make a debug build --debug", - " Optimize for speed -O3", - " Optimize for size -O3z --converge", - "" - ], - "type": "b", - "alias": "O" - }, - "optimizeLevel": { - "category": "Optimization", - "description": "How much to focus on optimizing code. [0-3]", - "type": "i" - }, - "shrinkLevel": { - "category": "Optimization", - "description": "How much to focus on shrinking code size. [0-2, s=1, z=2]", - "type": "i" - }, - "converge": { - "category": "Optimization", - "description": "Re-optimizes until no further improvements can be made.", - "type": "b", - "default": false - }, - "noAssert": { - "category": "Optimization", - "description": "Replaces assertions with just their value without trapping.", - "type": "b", - "default": false - }, - "runtime": { - "category": "Optimization", - "description": [ - "Specifies the runtime variant to include in the program.", - "", - " full Default runtime based on TLSF and reference counting.", - " half Same as 'full', but not exported to the host.", - " stub Minimal stub implementation without free/GC support.", - " none Same as 'stub', but not exported to the host.", - "" - ], - "type": "s", - "default": "full" - }, - - "outFile": { - "category": "Output", - "description": "Specifies the output file. File extension indicates format.", - "type": "s", - "alias": "o" - }, - "binaryFile": { - "category": "Output", - "description": "Specifies the binary output file (.wasm).", - "type": "s", - "alias": "b" - }, - "textFile": { - "category": "Output", - "description": "Specifies the text output file (.wat).", - "type": "s", - "alias": "t" - }, - "jsFile": { - "category": "Output", - "description": "Specifies the JavaScript (via wasm2js) output file (.js).", - "type": "s", - "alias": "j" - }, - "idlFile": { - "category": "Output", - "description": "Specifies the WebIDL output file (.webidl).", - "type": "s", - "alias": "i" - }, - "tsdFile": { - "category": "Output", - "description": "Specifies the TypeScript definition output file (.d.ts).", - "type": "s", - "alias": "d" - }, - - "sourceMap": { - "category": "Debugging", - "description": [ - "Enables source map generation. Optionally takes the URL", - "used to reference the source map from the binary file." - ], - "type": "s" - }, - "debug": { - "category": "Debugging", - "description": "Enables debug information in emitted binaries.", - "type": "b", - "default": false - }, - - "importMemory": { - "category": "Features", - "description": "Imports the memory provided as 'env.memory'.", - "type": "b", - "default": false - }, - "noExportMemory": { - "category": "Features", - "description": "Does not export the memory as 'memory'.", - "type": "b", - "default": false - }, - "initialMemory": { - "category": "Features", - "description": "Sets the initial memory size in pages.", - "type": "i", - "default": 0 - }, - "maximumMemory": { - "category": "Features", - "description": "Sets the maximum memory size in pages.", - "type": "i", - "default": 0 - }, - "sharedMemory": { - "category": "Features", - "description": "Declare memory as shared. Requires maximumMemory.", - "type": "b", - "default": false - }, - "importTable": { - "category": "Features", - "description": "Imports the function table provided as 'env.table'.", - "type": "b", - "default": false - }, - "exportTable": { - "category": "Features", - "description": "Exports the function table as 'table'.", - "type": "b", - "default": false - }, - "explicitStart": { - "category": "Features", - "description": "Exports an explicit '_start' function to call.", - "type": "b", - "default": false - }, - "enable": { - "category": "Features", - "description": [ - "Enables WebAssembly features being disabled by default.", - "", - " sign-extension Sign-extension operations", - " bulk-memory Bulk memory operations.", - " simd SIMD types and operations.", - " threads Threading and atomic operations.", - " reference-types Reference types and operations.", - "" - ], - "TODO_doesNothingYet": [ - " nontrapping-f2i Non-trapping float to integer ops.", - " exception-handling Exception handling.", - " tail-calls Tail call operations.", - " multi-value Multi value types." - ], - "type": "S", - "mutuallyExclusive": "disable" - }, - "disable": { - "category": "Features", - "description": [ - "Disables WebAssembly features being enabled by default.", - "", - " mutable-globals Mutable global imports and exports.", - "" - ], - "type": "S", - "mutuallyExclusive": "enable" - }, - "use": { - "category": "Features", - "description": [ - "Aliases a global object under another name, e.g., to switch", - "the default 'Math' implementation used: --use Math=JSMath", - "Can also be used to introduce an integer constant." - ], - "type": "S", - "alias": "u" - }, - "lowMemoryLimit": { - "category": "Features", - "description": "Enforces very low (<64k) memory constraints.", - "default": 0, - "type": "i" - }, - - "memoryBase": { - "category": "Linking", - "description": "Sets the start offset of emitted memory segments.", - "type": "i", - "default": 0 - }, - "tableBase": { - "category": "Linking", - "description": "Sets the start offset of emitted table elements.", - "type": "i", - "default": 0 - }, - - "transform": { - "category": "API", - "description": "Specifies the path to a custom transform to 'require'.", - "type": "S", - "isPath": true, - "useNodeResolution": true - }, - - "trapMode": { - "category": "Binaryen", - "description": [ - "Sets the trap mode to use.", - "", - " allow Allow trapping operations. This is the default.", - " clamp Replace trapping operations with clamping semantics.", - " js Replace trapping operations with JS semantics.", - "" - ], - "type": "s", - "default": "allow" - }, - "runPasses": { - "category": "Binaryen", - "description": [ - "Specifies additional Binaryen passes to run after other", - "optimizations, if any. See: Binaryen/src/passes/pass.cpp" - ], - "type": "s" - }, - "noValidate": { - "category": "Binaryen", - "description": "Skips validating the module using Binaryen.", - "type": "b", - "default": false - }, - - "baseDir": { - "description": "Specifies the base directory of input and output files.", - "type": "s", - "default": "." - }, - "extension": { - "description": "Specifies an alternative file extension to use.", - "type": "s", - "cliOnly": true - }, - "noUnsafe": { - "description": [ - "Disallows the use of unsafe features in user code.", - "Does not affect library files and external modules." - ], - "type": "b", - "default": false - }, - "noEmit": { - "description": "Performs compilation as usual but does not emit code.", - "type": "b", - "default": false - }, - "showConfig": { - "description": "Print computed compiler options and exit.", - "type": "b", - "default": false - }, - "measure": { - "description": "Prints measuring information on I/O and compile times.", - "type": "b", - "default": false - }, - "pedantic": { - "description": "Make yourself sad for no good reason.", - "type": "b", - "default": false - }, - "lib": { - "description": [ - "Adds one or multiple paths to custom library components and", - "uses exports of all top-level files at this path as globals." - ], - "type": "S", - "isPath": true - }, - "path": { - "description": [ - "Adds one or multiple paths to package resolution, similar", - "to node_modules. Prefers an 'ascMain' entry in a package's", - "package.json and falls back to an inner 'assembly/' folder." - ], - "type": "S", - "isPath": true - }, - "traceResolution": { - "description": "Enables tracing of package resolution.", - "type": "b", - "default": false - }, - "listFiles": { - "description": "Lists files to be compiled and exits.", - "type": "b", - "default": false - }, - " ...": { - "description": "Specifies node.js options (CLI only). See: node --help" - }, - - "-Os": { "value": { "optimize": true, "shrinkLevel": 1 } }, - "-Oz": { "value": { "optimize": true, "shrinkLevel": 2 } }, - "-O0": { "value": { "optimizeLevel": 0, "shrinkLevel": 0 } }, - "-O1": { "value": { "optimizeLevel": 1, "shrinkLevel": 0 } }, - "-O2": { "value": { "optimizeLevel": 2, "shrinkLevel": 0 } }, - "-O3": { "value": { "optimizeLevel": 3, "shrinkLevel": 0 } }, - "-O0s": { "value": { "optimizeLevel": 0, "shrinkLevel": 1 } }, - "-O1s": { "value": { "optimizeLevel": 1, "shrinkLevel": 1 } }, - "-O2s": { "value": { "optimizeLevel": 2, "shrinkLevel": 1 } }, - "-O3s": { "value": { "optimizeLevel": 3, "shrinkLevel": 1 } }, - "-O0z": { "value": { "optimizeLevel": 0, "shrinkLevel": 2 } }, - "-O1z": { "value": { "optimizeLevel": 1, "shrinkLevel": 2 } }, - "-O2z": { "value": { "optimizeLevel": 2, "shrinkLevel": 2 } }, - "-O3z": { "value": { "optimizeLevel": 3, "shrinkLevel": 2 } } -} diff --git a/cli/index.d.ts b/cli/index.d.ts new file mode 100644 index 0000000000..58c7fb4ef6 --- /dev/null +++ b/cli/index.d.ts @@ -0,0 +1,284 @@ +/** + * @fileoverview Definitions for asc. + * @license Apache-2.0 + */ + +import { OptionDescription } from "../util/options"; +export { OptionDescription }; + +/** AssemblyScript version. */ +export const version: string; + +/** Available CLI options. */ +export const options: { [key: string]: OptionDescription }; + +/** Prefix used for library files. */ +export const libraryPrefix: string; + +/** Bundled library files. */ +export const libraryFiles: { [key: string]: string }; + +/** Bundled definition files. */ +export const definitionFiles: { assembly: string, portable: string }; + +/** Default Binaryen optimization level. */ +export const defaultOptimizeLevel: number; + +/** Default Binaryen shrink level. */ +export const defaultShrinkLevel: number; + +/** A compatible output stream. */ +export interface OutputStream { + /** Writes a chunk of data to the stream. */ + write(chunk: Uint8Array | string): void; +} + +/** An in-memory output stream. */ +export interface MemoryStream extends OutputStream { + /** Resets the stream to offset zero. */ + reset(): void; + /** Converts the output to a buffer. */ + toBuffer(): Uint8Array; + /** Converts the output to a string. */ + toString(): string; +} + +/** Relevant subset of the Source class for diagnostic reporting. */ +export interface Source { + /** Normalized path with file extension. */ + normalizedPath: string; +} + +/** Relevant subset of the Range class for diagnostic reporting. */ +export interface Range { + /** Start offset within the source file. */ + start: number; + /** End offset within the source file. */ + end: number; + /** Respective source file. */ + source: Source; +} + +/** Relevant subset of the DiagnosticMessage class for diagnostic reporting. */ +export interface DiagnosticMessage { + /** Message code. */ + code: number; + /** Message category. */ + category: number; + /** Message text. */ + message: string; + /** Respective source range, if any. */ + range: Range | null; + /** Related range, if any. */ + relatedRange: Range | null; +} + +/** A function handling diagnostic messages. */ +type DiagnosticReporter = (diagnostic: DiagnosticMessage) => void; + +/** Compiler options. */ +export interface CompilerOptions { + /** Prints just the compiler's version and exits. */ + version?: boolean; + /** Prints the help message and exits. */ + help?: boolean; + /** Optimizes the module. */ + optimize?: boolean; + /** How much to focus on optimizing code. */ + optimizeLevel?: number; + /** How much to focus on shrinking code size. */ + shrinkLevel?: number; + /** Re-optimizes until no further improvements can be made. */ + converge?: boolean; + /** Specifies the base directory of input and output files. */ + baseDir?: string; + /** Specifies the WebAssembly output file (.wasm). */ + outFile?: string; + /** Specifies the WebAssembly text output file (.wat). */ + textFile?: string; + /** Specified the bindings to generate. */ + bindings?: string[]; + /** Enables source map generation. Optionally takes the URL. */ + sourceMap?: boolean | string; + /** Specifies the runtime variant to include in the program. */ + runtime?: string; + /** Disallows the use of unsafe features in user code. */ + noUnsafe?: boolean; + /** Enables debug information in emitted binaries. */ + debug?: boolean; + /** Replaces assertions with just their value without trapping. */ + noAssert?: boolean; + /** Performs compilation as usual but does not emit code. */ + noEmit?: boolean; + /** Imports the memory provided as 'env.memory'. */ + importMemory?: boolean; + /** Does not export the memory as 'memory'. */ + noExportMemory?: boolean; + /** Sets the initial memory size in pages. */ + initialMemory?: number; + /** Sets the maximum memory size in pages. */ + maximumMemory?: number; + /** Declare memory as shared. Requires maximumMemory. */ + sharedMemory?: boolean; + /** Assume that imported memory is zero filled. Requires importMemory. */ + zeroFilledMemory?: boolean; + /** Sets the start offset of compiler-generated static memory. */ + memoryBase?: number; + /** Imports the function table provided as 'env.table'. */ + importTable?: boolean; + /** Exports the function table as 'table'. */ + exportTable?: boolean; + /** Exports the start function instead of calling it implicitly. */ + exportStart?: string; + /** "Adds one or multiple paths to custom library components. */ + lib?: string | string[]; + /** Adds one or multiple paths to package resolution. */ + path?: string | string[]; + /** Aliases a global object under another name. */ + use?: string | string[]; + /** Sets the trap mode to use. */ + trapMode?: "allow" | "clamp" | "js"; + /** Specifies additional Binaryen passes to run. */ + runPasses?: string | string[]; + /** Skips validating the module using Binaryen. */ + noValidate?: boolean; + /** Enables WebAssembly features that are disabled by default. */ + enable?: string | string[]; + /** Disables WebAssembly features that are enabled by default. */ + disable?: string | string[]; + /** Specifies the path to a custom transform to 'require'. */ + transform?: string | string[]; + /** Make yourself sad for no good reason. */ + pedantic?: boolean; + /** Prints measuring information on I/O and compile times. */ + stats?: boolean; + /** Disables terminal colors. */ + noColors?: boolean; +} + +/** Compiler API options. */ +export interface APIOptions { + /** Standard output stream to use. */ + stdout?: OutputStream; + /** Standard error stream to use. */ + stderr?: OutputStream; + /** Reads a file from disk (or memory). */ + readFile?: (filename: string, baseDir: string) => (string | null) | Promise; + /** Writes a file to disk (or memory). */ + writeFile?: (filename: string, contents: Uint8Array | string, baseDir: string) => void | Promise; + /** Lists all files within a directory. */ + listFiles?: (dirname: string, baseDir: string) => (string[] | null) | Promise; + /** Handler for diagnostic messages. */ + reportDiagnostic?: DiagnosticReporter; + /** Additional transforms to apply. */ + transforms?: Transform[]; +} + +/** Compiler API result. */ +export interface APIResult { + /** Encountered error, if any. */ + error: Error | null; + /** Standard output stream. */ + stdout: OutputStream; + /** Standard error stream. */ + stderr: OutputStream; + /** Statistics. */ + stats: Stats; +} + +/** Runs the command line utility using the specified arguments array. */ +export function main(argv: string[] | CompilerOptions, options?: APIOptions): Promise; + +/** Convenience function that parses and compiles source strings directly. */ +export function compileString(sources: { [key: string]: string } | string, options?: CompilerOptions): Promise; + +/** Checks diagnostics emitted so far for errors. */ +export function checkDiagnostics(emitter: Record, stderr?: OutputStream, reportDiagnostic?: DiagnosticReporter, useColors?: boolean): boolean; + +/** Statistics for the current task. */ +export class Stats { + /** Number of files read. */ + readCount: number; + /** Number of files written. */ + writeCount: number; + /** Time taken to parse files. */ + parseTime: number; + /** Number of files parsed. */ + parseCount: number; + /** Time taken to compile programs. */ + compileTime: number; + /** Number of programs compiled. */ + compileCount: number; + /** Time taken to emit files. */ + emitTime: number; + /** Number of emitted files. */ + emitCount: number; + /** Time taken to validate modules. */ + validateTime: number; + /** Number of modules validated. */ + validateCount: number; + /** Time taken to optimize modules. */ + optimizeTime: number; + /** Number of modules optimized. */ + optimizeCount: number; + /** Begins measuring execution time. */ + begin(): number; + /** Ends measuring execution time since `begin`. */ + end(begin: number): number; + /** Returns a string representation. */ + toString(): string; +} + +/** Creates a memory stream that can be used in place of stdout/stderr. */ +export function createMemoryStream(fn?: (chunk: Uint8Array | string) => void): MemoryStream; + +/** Compatible TypeScript compiler options for syntax highlighting etc. */ +export const tscOptions: Record; + +import binaryen from "../lib/binaryen"; +import { Program, Parser } from "../src"; + +/** Compiler transform base class. */ +export abstract class Transform { + + /** Program reference. */ + readonly program: Program; + + /** Binaryen reference. */ + readonly binaryen: typeof binaryen; + + /** Base directory. */ + readonly baseDir: string; + + /** Output stream used by the compiler. */ + readonly stdout: OutputStream; + + /** Error stream used by the compiler. */ + readonly stderr: OutputStream; + + /** Logs a message to console. */ + readonly log: typeof console.log; + + /** Reads a file from disk. */ + readFile(filename: string, baseDir: string): (string | null) | Promise; + + /** Writes a file to disk. */ + writeFile(filename: string, contents: string | Uint8Array, baseDir: string): void | Promise; + + /** Lists all files in a directory. */ + listFiles(dirname: string, baseDir: string): (string[] | null) | Promise; + + /** Called when parsing is complete, before a program is instantiated from the AST. */ + afterParse?(parser: Parser): void | Promise; + + /** Called after the program is instantiated. */ + afterInitialize?(program: Program): void | Promise; + + /** Called when compilation is complete, before the module is being validated. */ + afterCompile?(module: binaryen.Module): void | Promise; +} diff --git a/cli/index.js b/cli/index.js new file mode 100644 index 0000000000..7e202e4f61 --- /dev/null +++ b/cli/index.js @@ -0,0 +1,1290 @@ +/** + * @license + * Copyright 2020 Daniel Wirtz / The AssemblyScript Authors. + * + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Compiler frontend for node.js + * + * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to + * JavaScript as well as the compiler compiled to WebAssembly (eventually). + * + * Can also be packaged as a bundle suitable for in-browser use with the standard library injected + * in the build step. See dist/asc.js for the bundle. + */ + +import { fs, module, path, process, url } from "../util/node.js"; +import { Colors } from "../util/terminal.js"; +import { utf8 } from "../util/text.js"; +import * as optionsUtil from "../util/options.js"; +import * as generated from "./index.generated.js"; + +import binaryen from "../lib/binaryen.js"; +import * as assemblyscriptJS from "assemblyscript"; + +// Use the TS->JS variant by default +let assemblyscript = assemblyscriptJS; + +// Use the AS->Wasm variant as an option (experimental) +const wasmPos = process.argv.indexOf("--wasm"); +if (~wasmPos) { + const wasmPath = String(process.argv[wasmPos + 1]); + process.argv.splice(wasmPos, 2); + assemblyscript = await import(new URL(wasmPath, url.pathToFileURL(process.cwd() + "/"))); +} + +const require = module.createRequire(import.meta.url); + +const WIN = process.platform === "win32"; +const EOL = WIN ? "\r\n" : "\n"; +const SEP = WIN ? "\\" : "/"; + +const extension = ".ts"; +const extension_d = `.d${extension}`; +const extension_re = new RegExp("\\" + extension + "$"); +const extension_re_except_d = new RegExp("^(?!.*\\.d\\" + extension + "$).*\\" + extension + "$"); + +function toUpperSnakeCase(str) { + return str.replace(/-/g, "_").toUpperCase(); +} + +function isNonEmptyString(value) { + return typeof value === "string" && value !== ""; +} + +/** Ensures that an object is a wrapper class instead of just a pointer. */ +// function __wrap(ptrOrObj, wrapperClass) { +// if (typeof ptrOrObj === "number") { +// return ptrOrObj === 0 ? null : wrapperClass.wrap(ptrOrObj); +// } +// return ptrOrObj; +// } + +/** AssemblyScript version. */ +export const version = generated.version; + +/** Available CLI options. */ +export const options = generated.options; + +/** Prefix used for library files. */ +export const libraryPrefix = generated.libraryPrefix; + +/** Bundled library files. */ +export const libraryFiles = generated.libraryFiles; + +/** Bundled definition files. */ +export const definitionFiles = generated.definitionFiles; + +/** Default Binaryen optimization level. */ +export const defaultOptimizeLevel = 3; + +/** Default Binaryen shrink level. */ +export const defaultShrinkLevel = 0; + +/** Converts a configuration object to an arguments array. */ +export function configToArguments(options, argv = []) { + Object.keys(options || {}).forEach(key => { + const val = options[key]; + const opt = generated.options[key]; + if (opt && opt.type === "b") { + if (val) argv.push(`--${key}`); + } else { + if (Array.isArray(val)) { + val.forEach(val => { argv.push(`--${key}`, String(val)); }); + } + else argv.push(`--${key}`, String(val)); + } + }); + return argv; +} + +/** Convenience function that parses and compiles source strings directly. */ +export async function compileString(sources, config = {}) { + if (typeof sources === "string") sources = { [`input${extension}`]: sources }; + let argv = [ + "--outFile", "binary", + "--textFile", "text", + ]; + configToArguments(config, argv); + const output = {}; + const result = await main(argv.concat(Object.keys(sources)), { + readFile: name => Object.prototype.hasOwnProperty.call(sources, name) ? sources[name] : null, + writeFile: (name, contents) => { output[name] = contents; }, + listFiles: () => [] + }); + return Object.assign(result, output); +} + +/** Runs the command line utility using the specified arguments array. */ +export async function main(argv, options) { + if (!Array.isArray(argv)) argv = configToArguments(argv); + if (!options) options = {}; + + const stats = options.stats || new Stats(); + const statsBegin = stats.begin(); + + // Bundle semantic version + let bundleMinorVersion = 0, bundleMajorVersion = 0, bundlePatchVersion = 0; + const versionParts = (version || "").split("."); + if (versionParts.length === 3) { + bundleMajorVersion = parseInt(versionParts[0]) | 0; + bundleMinorVersion = parseInt(versionParts[1]) | 0; + bundlePatchVersion = parseInt(versionParts[2]) | 0; + } + + const stdout = options.stdout || createMemoryStream(); + const stderr = options.stderr || createMemoryStream(); + const readFile = options.readFile || readFileNode; + const writeFile = options.writeFile || writeFileNode; + const listFiles = options.listFiles || listFilesNode; + + // Parse command line options but do not populate option defaults yet + const optionsResult = optionsUtil.parse(argv, generated.options, false); + let opts = optionsResult.options; + argv = optionsResult.arguments; + + const stdoutColors = new Colors(stdout); + const stderrColors = new Colors(stderr); + if (opts.noColors) { + stdoutColors.enabled = false; + stderrColors.enabled = false; + } + + // Check for unknown options + const unknownOpts = optionsResult.unknown; + if (unknownOpts.length) { + unknownOpts.forEach(arg => { + stderr.write( + `${stderrColors.yellow("WARNING ")}Unknown option '${arg}'${EOL}` + ); + }); + } + + // Check for trailing arguments + const trailingArgv = optionsResult.trailing; + if (trailingArgv.length) { + stderr.write( + `${stderrColors.yellow("WARNING ")}Unsupported trailing arguments: ${trailingArgv.join(" ")}${EOL}` + ); + } + + let module = null; + let binaryenModule = null; + + // Prepares the result object + let prepareResult = (error, result = {}) => { + if (error) { + stderr.write(`${stderrColors.red("FAILURE ")}${error.stack.replace(/^ERROR: /i, "")}${EOL}`); + } + if (binaryenModule) binaryenModule.dispose(); + if (!stats.total) stats.total = stats.end(statsBegin); + return Object.assign({ error, stdout, stderr, stats }, result); + }; + + // Just print the version if requested + if (opts.version) { + stdout.write(`Version ${version}${EOL}`); + return prepareResult(null); + } + + // Set up base directory + const baseDir = path.normalize(opts.baseDir || "."); + + // Check if a config file is present + let configPath = optionsUtil.resolvePath(opts.config || "asconfig.json", baseDir); + let configFile = path.basename(configPath); + let configDir = path.dirname(configPath); + let config = await getConfig(configFile, configDir, readFile); + let configHasEntries = config != null && Array.isArray(config.entries) && config.entries.length; + + // Print the help message if requested or no source files are provided + if (opts.help || (!argv.length && !configHasEntries)) { + let out = opts.help ? stdout : stderr; + let colors = opts.help ? stdoutColors : stderrColors; + out.write([ + colors.white("SYNTAX"), + " " + colors.cyan("asc") + " [entryFile ...] [options]", + "", + colors.white("EXAMPLES"), + " " + colors.cyan("asc") + " hello" + extension, + " " + colors.cyan("asc") + " hello" + extension + " -o hello.wasm -t hello.wat", + " " + colors.cyan("asc") + " hello1" + extension + " hello2" + extension + " -o -O > hello.wasm", + " " + colors.cyan("asc") + " --config asconfig.json --target release", + "", + colors.white("OPTIONS"), + ].concat( + optionsUtil.help(generated.options, 24, EOL) + ).join(EOL) + EOL); + return prepareResult(null); + } + + // I/O must be specified if not present in the environment + if (!(fs.promises && fs.promises.readFile)) { + if (readFile === readFileNode) throw Error("'options.readFile' must be specified"); + if (writeFile === writeFileNode) throw Error("'options.writeFile' must be specified"); + if (listFiles === listFilesNode) throw Error("'options.listFiles' must be specified"); + } + + // Load additional options from asconfig.json + const seenAsconfig = new Set(); + seenAsconfig.add(configPath); + const target = opts.target || "release"; + while (config) { + // Merge target first + if (config.targets) { + const targetOptions = config.targets[target]; + if (targetOptions) { + opts = optionsUtil.merge(generated.options, opts, targetOptions, configDir); + } + } + // Merge general options + const generalOptions = config.options; + if (generalOptions) { + opts = optionsUtil.merge(generated.options, opts, generalOptions, configDir); + } + + // Append entries + if (config.entries) { + for (let entry of config.entries) { + argv.push(optionsUtil.resolvePath(entry, configDir)); + } + } + + // Look up extended asconfig and repeat + if (config.extends) { + configPath = optionsUtil.resolvePath(config.extends, configDir, true); + configFile = path.basename(configPath); + configDir = path.dirname(configPath); + if (seenAsconfig.has(configPath)) break; + seenAsconfig.add(configPath); + config = await getConfig(configFile, configDir, readFile); + } else { + break; + } + } + + // Populate option defaults once user-defined options are set + optionsUtil.addDefaults(generated.options, opts); + + // If showConfig print options and exit + if (opts.showConfig) { + stderr.write(JSON.stringify({ + options: opts, + entries: argv + }, null, 2)); + return prepareResult(null); + } + + // create a unique set of values + function unique(values) { + return [...new Set(values)]; + } + + // Set up options + let program, runtime, uncheckedBehavior; + const compilerOptions = assemblyscript.newOptions(); + switch (opts.runtime) { + case "stub": runtime = 0; break; + case "minimal": runtime = 1; break; + /* incremental */ + default: runtime = 2; break; + } + switch (opts.uncheckedBehavior) { + /* default */ + default: uncheckedBehavior = 0; break; + case "never": uncheckedBehavior = 1; break; + case "always": uncheckedBehavior = 2; break; + } + assemblyscript.setTarget(compilerOptions, 0); + assemblyscript.setDebugInfo(compilerOptions, !!opts.debug); + assemblyscript.setRuntime(compilerOptions, runtime); + assemblyscript.setNoAssert(compilerOptions, opts.noAssert); + assemblyscript.setExportMemory(compilerOptions, !opts.noExportMemory); + assemblyscript.setImportMemory(compilerOptions, opts.importMemory); + assemblyscript.setInitialMemory(compilerOptions, opts.initialMemory >>> 0); + assemblyscript.setMaximumMemory(compilerOptions, opts.maximumMemory >>> 0); + assemblyscript.setSharedMemory(compilerOptions, opts.sharedMemory); + assemblyscript.setImportTable(compilerOptions, opts.importTable); + assemblyscript.setExportTable(compilerOptions, opts.exportTable); + if (opts.exportStart != null) { + assemblyscript.setExportStart(compilerOptions, isNonEmptyString(opts.exportStart) ? opts.exportStart : "_start"); + } + assemblyscript.setMemoryBase(compilerOptions, opts.memoryBase >>> 0); + assemblyscript.setTableBase(compilerOptions, opts.tableBase >>> 0); + assemblyscript.setSourceMap(compilerOptions, opts.sourceMap != null); + assemblyscript.setUncheckedBehavior(compilerOptions, uncheckedBehavior); + assemblyscript.setNoUnsafe(compilerOptions, opts.noUnsafe); + assemblyscript.setPedantic(compilerOptions, opts.pedantic); + assemblyscript.setLowMemoryLimit(compilerOptions, opts.lowMemoryLimit >>> 0); + assemblyscript.setExportRuntime(compilerOptions, opts.exportRuntime); + assemblyscript.setBundleVersion(compilerOptions, bundleMajorVersion, bundleMinorVersion, bundlePatchVersion); + if (!opts.stackSize && runtime === 2 /* incremental */) { + opts.stackSize = assemblyscript.DEFAULT_STACK_SIZE; + } + assemblyscript.setStackSize(compilerOptions, opts.stackSize); + assemblyscript.setBindingsHint(compilerOptions, opts.bindings && opts.bindings.length > 0); + + // Instrument callback to perform GC + // prepareResult = (original => { + // return function gcBeforePrepareResult(err) { + // __unpin(compilerOptions); + // if (program) __unpin(program); + // __collect(); + // return original(err); + // }; + // })(prepareResult); + + // Add or override aliases if specified + if (opts.use) { + let aliases = opts.use; + for (let i = 0, k = aliases.length; i < k; ++i) { + let part = aliases[i]; + let p = part.indexOf("="); + if (p < 0) return prepareResult(Error(`Global alias '${part}' is invalid.`)); + let alias = part.substring(0, p).trim(); + let name = part.substring(p + 1).trim(); + if (!alias.length) { + return prepareResult(Error(`Global alias '${part}' is invalid.`)); + } + assemblyscript.addGlobalAlias(compilerOptions, alias, name); + } + } + + // Disable default features if specified + let features; + if ((features = opts.disable) != null) { + if (typeof features === "string") features = features.split(","); + for (let i = 0, k = features.length; i < k; ++i) { + let name = features[i].trim(); + let flag = assemblyscript[`FEATURE_${toUpperSnakeCase(name)}`]; + if (!flag) return prepareResult(Error(`Feature '${name}' is unknown.`)); + assemblyscript.setFeature(compilerOptions, flag, false); + } + } + + // Enable experimental features if specified + if ((features = opts.enable) != null) { + if (typeof features === "string") features = features.split(","); + for (let i = 0, k = features.length; i < k; ++i) { + let name = features[i].trim(); + let flag = assemblyscript[`FEATURE_${toUpperSnakeCase(name)}`]; + if (!flag) return prepareResult(Error(`Feature '${name}' is unknown.`)); + assemblyscript.setFeature(compilerOptions, flag, true); + } + } + + // Set up optimization levels + let optimizeLevel = 0; + let shrinkLevel = 0; + if (opts.optimize) { + optimizeLevel = defaultOptimizeLevel; + shrinkLevel = defaultShrinkLevel; + } + if (typeof opts.optimizeLevel === "number") optimizeLevel = opts.optimizeLevel; + if (typeof opts.shrinkLevel === "number") shrinkLevel = opts.shrinkLevel; + optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3); + shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2); + assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel); + + // Initialize the program + program = assemblyscript.newProgram(compilerOptions); + + // Collect transforms *constructors* from the `--transform` CLI flag as well + // as the `transform` option into the `transforms` array. + let transforms = []; + // `transform` option from `main()` + if (Array.isArray(options.transforms)) { + transforms.push(...options.transforms); + } + // `--transform` CLI flag + if (opts.transform) { + let transformArgs = unique(opts.transform); + for (let i = 0, k = transformArgs.length; i < k; ++i) { + let filename = transformArgs[i].trim(); + let resolved; + let transform; + if (require.resolve) { + try { + resolved = require.resolve(filename, { paths: [process.cwd(), baseDir] }); + transform = await import(url.pathToFileURL(resolved)); + if (transform.default) transform = transform.default; + } catch (e1) { + try { + transform = require(resolved); + } catch { + return prepareResult(e1); + } + } + } else { + try { + transform = await import(new URL(filename, import.meta.url)); + if (transform.default) transform = transform.default; + } catch (e) { + return prepareResult(e); + } + } + if (!transform || (typeof transform !== "function" && typeof transform !== "object")) { + return prepareResult(Error("not a transform: " + transformArgs[i])); + } + transforms.push(transform); + } + } + + // Fix up the prototype of the transforms’ constructors and instantiate them. + try { + transforms = transforms.map(transform => { + if (typeof transform === "function") { + Object.assign(transform.prototype, { + program, + binaryen, + baseDir, + stdout, + stderr, + log: console.error, + readFile, + writeFile, + listFiles + }); + transform = new transform(); + } + return transform; + }); + } catch (e) { + return prepareResult(e); + } + + async function applyTransform(name, ...args) { + for (let i = 0, k = transforms.length; i < k; ++i) { + let transform = transforms[i]; + if (typeof transform[name] === "function") { + try { + let start = stats.begin(); + stats.transformCount++; + await transform[name](...args); + stats.transformTime += stats.end(start); + } catch (e) { + return e; + } + } + } + } + + // Parse library files + Object.keys(libraryFiles).forEach(libPath => { + if (libPath.includes("/")) return; // in sub-directory: imported on demand + let begin = stats.begin(); + stats.parseCount++; + assemblyscript.parse(program, libraryFiles[libPath], libraryPrefix + libPath + extension, false); + stats.parseTime += stats.end(begin); + }); + let customLibDirs = []; + if (opts.lib) { + let lib = opts.lib; + if (typeof lib === "string") lib = lib.split(","); + customLibDirs.push(...lib.map(p => p.trim())); + customLibDirs = unique(customLibDirs); // `lib` and `customLibDirs` may include duplicates + for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom + let libDir = customLibDirs[i]; + let libFiles; + if (libDir.endsWith(extension)) { + libFiles = [ path.basename(libDir) ]; + libDir = path.dirname(libDir); + } else { + libFiles = await listFiles(libDir, baseDir) || []; + } + for (let libPath of libFiles) { + let libText = await readFile(libPath, libDir); + if (libText == null) { + return prepareResult(Error(`Library file '${libPath}' not found.`)); + } + libraryFiles[libPath.replace(extension_re, "")] = libText; + let begin = stats.begin(); + stats.parseCount++; + assemblyscript.parse(program, libText, libraryPrefix + libPath, false); + stats.parseTime += stats.end(begin); + } + } + } + opts.path = opts.path || []; + + // Maps package names to parent directory + const packageBases = new Map(); + + // Gets the file matching the specified source path, imported at the given dependee path + async function getFile(internalPath, dependeePath) { + let sourceText = null; // text reported back to the compiler + let sourcePath = null; // path reported back to the compiler + + // Try file.ext, file/index.ext, file.d.ext + if (!internalPath.startsWith(libraryPrefix)) { + if ((sourceText = await readFile(sourcePath = internalPath + extension, baseDir)) == null) { + if ((sourceText = await readFile(sourcePath = internalPath + "/index" + extension, baseDir)) == null) { + // portable d.ext: uses the .js file next to it in JS or becomes an import in Wasm + sourcePath = internalPath + extension; + sourceText = await readFile(internalPath + extension_d, baseDir); + } + } + + // Search library in this order: stdlib, custom lib dirs, paths + } else { + const plainName = internalPath.substring(libraryPrefix.length); + const indexName = `${plainName}/index`; + if (Object.prototype.hasOwnProperty.call(libraryFiles, plainName)) { + sourceText = libraryFiles[plainName]; + sourcePath = libraryPrefix + plainName + extension; + } else if (Object.prototype.hasOwnProperty.call(libraryFiles, indexName)) { + sourceText = libraryFiles[indexName]; + sourcePath = libraryPrefix + indexName + extension; + } else { // custom lib dirs + for (const libDir of customLibDirs) { + if ((sourceText = await readFile(plainName + extension, libDir)) != null) { + sourcePath = libraryPrefix + plainName + extension; + break; + } else { + if ((sourceText = await readFile(indexName + extension, libDir)) != null) { + sourcePath = libraryPrefix + indexName + extension; + break; + } + } + } + if (sourceText == null) { // paths + const match = internalPath.match(/^~lib\/((?:@[^/]+\/)?[^/]+)(?:\/(.+))?/); // ~lib/(pkg)/(path), ~lib/(@org/pkg)/(path) + if (match) { + const packageName = match[1]; + const filePath = match[2] || "index"; + const basePath = packageBases.has(dependeePath) ? packageBases.get(dependeePath) : "."; + const paths = []; + const parts = path.resolve(baseDir, basePath).split(SEP); + for (let i = parts.length, k = WIN ? 1 : 0; i >= k; --i) { + if (parts[i - 1] !== "node_modules") { + paths.push(`${parts.slice(0, i).join(SEP)}${SEP}node_modules`); + } + } + paths.push(...opts.path); + for (const currentDir of paths.map(p => path.relative(baseDir, p))) { + const plainName = filePath; + if ((sourceText = await readFile(path.join(currentDir, packageName, plainName + extension), baseDir)) != null) { + sourcePath = `${libraryPrefix}${packageName}/${plainName}${extension}`; + packageBases.set(sourcePath.replace(extension_re, ""), path.join(currentDir, packageName)); + break; + } + const indexName = `${filePath}/index`; + if ((sourceText = await readFile(path.join(currentDir, packageName, indexName + extension), baseDir)) != null) { + sourcePath = `${libraryPrefix}${packageName}/${indexName}${extension}`; + packageBases.set(sourcePath.replace(extension_re, ""), path.join(currentDir, packageName)); + break; + } + } + } + } + } + } + // No such file + if (sourceText == null) return null; + return { sourceText, sourcePath }; + } + + // Gets all pending imported files from the backlog + function getBacklog(paths = []) { + do { + let internalPath = assemblyscript.nextFile(program); + if (internalPath == null) break; + paths.push(internalPath); + } while (true); + return paths; + } + + // Parses the backlog of imported files after including entry files + async function parseBacklog() { + let backlog; + while ((backlog = getBacklog()).length) { + let files = []; + for (let internalPath of backlog) { + const dependee = assemblyscript.getDependee(program, internalPath); + files.push(getFile(internalPath, dependee)); // queue + } + files = await Promise.all(files); // parallel + for (let i = 0, k = backlog.length; i < k; ++i) { + const internalPath = backlog[i]; + const file = files[i]; + const begin = stats.begin(); + stats.parseCount++; + if (file) { + assemblyscript.parse(program, file.sourceText, file.sourcePath, false); + } else { + assemblyscript.parse(program, null, internalPath + extension, false); + } + stats.parseTime += stats.end(begin); + } + } + const numErrors = checkDiagnostics(program, stderr, opts.disableWarning, options.reportDiagnostic, stderrColors.enabled); + if (numErrors) { + const err = Error(`${numErrors} parse error(s)`); + err.stack = err.message; // omit stack + return prepareResult(err); + } + } + + // Include runtime before entry files so its setup runs first + { + let runtimeName = String(opts.runtime); + let runtimePath = `rt/index-${runtimeName}`; + let runtimeText = libraryFiles[runtimePath]; + if (runtimeText == null) { + runtimePath = runtimeName; + runtimeText = await readFile(runtimePath + extension, baseDir); + if (runtimeText == null) return prepareResult(Error(`Runtime '${path.resolve(baseDir, runtimePath + extension)}' is not found.`)); + } else { + runtimePath = `~lib/${runtimePath}`; + } + let begin = stats.begin(); + stats.parseCount++; + assemblyscript.parse(program, runtimeText, runtimePath + extension, true); + stats.parseTime += stats.end(begin); + } + + // Include entry files + for (let i = 0, k = argv.length; i < k; ++i) { + const filename = String(argv[i]); + + // Setting the path to relative path + let sourcePath = path.isAbsolute(filename) + ? path.relative(baseDir, filename) + : path.normalize(filename); + + sourcePath = sourcePath + .replace(/\\/g, "/") + .replace(extension_re, "") + .replace(/\/$/, ""); + + // Try entryPath.ext, then entryPath/index.ext + let sourceText = await readFile(sourcePath + extension, baseDir); + if (sourceText == null) { + const path = `${sourcePath}/index${extension}`; + sourceText = await readFile(path, baseDir); + if (sourceText != null) sourcePath = path; + else sourcePath += extension; + } else { + sourcePath += extension; + } + + let begin = stats.begin(); + stats.parseCount++; + assemblyscript.parse(program, sourceText, sourcePath, true); + stats.parseTime += stats.end(begin); + } + + // Parse entry files + { + let code = await parseBacklog(); + if (code) return code; + } + + // Call afterParse transform hook + { + let error = await applyTransform("afterParse", program.parser); + if (error) return prepareResult(error); + } + + // Parse additional files, if any + { + let code = await parseBacklog(); + if (code) return code; + } + + // Pre-emptively initialize the program + { + let begin = stats.begin(); + stats.initializeCount++; + try { + assemblyscript.initializeProgram(program); + } catch (e) { + crash("initialize", e); + } + stats.initializeTime += stats.end(begin); + } + + // Call afterInitialize transform hook + { + let error = await applyTransform("afterInitialize", program); + if (error) return prepareResult(error); + } + + // Compile the program + { + let begin = stats.begin(); + stats.compileCount++; + try { + module = assemblyscript.compile(program); + } catch (e) { + crash("compile", e); + } + stats.compileTime += stats.end(begin); + } + // From here on we are going to use Binaryen.js + binaryenModule = binaryen.wrapModule( + typeof module === "number" || module instanceof Number + ? assemblyscript.getBinaryenModuleRef(module) + : module.ref + ); + let numErrors = checkDiagnostics(program, stderr, opts.disableWarning, options.reportDiagnostic, stderrColors.enabled); + if (numErrors) { + const err = Error(`${numErrors} compile error(s)`); + err.stack = err.message; // omit stack + return prepareResult(err); + } + + // Call afterCompile transform hook + { + let error = await applyTransform("afterCompile", binaryenModule); + if (error) return prepareResult(error); + } + + numErrors = checkDiagnostics(program, stderr, opts.disableWarning, options.reportDiagnostic, stderrColors.enabled); + if (numErrors) { + const err = Error(`${numErrors} afterCompile error(s)`); + err.stack = err.message; // omit stack + return prepareResult(err); + } + + // Validate the module if requested + if (!opts.noValidate) { + let begin = stats.begin(); + stats.validateCount++; + let isValid = assemblyscript.validate(module); + stats.validateTime += stats.end(begin); + if (!isValid) { + return prepareResult(Error("validate error")); + } + } + + // Set Binaryen-specific options + if (opts.trapMode === "clamp" || opts.trapMode === "js") { + let begin = stats.begin(); + try { + binaryenModule.runPasses([`trap-mode-${opts.trapMode}`]); + } catch (e) { + crash("runPasses", e); + } + stats.compileTime += stats.end(begin); + } else if (opts.trapMode !== "allow") { + return prepareResult(Error("Unsupported trap mode")); + } + + // Optimize the module + const debugInfo = opts.debug; + const converge = opts.converge; + const zeroFilledMemory = opts.importMemory + ? opts.zeroFilledMemory + : false; + + const runPasses = []; + if (opts.runPasses) { + if (typeof opts.runPasses === "string") { + opts.runPasses = opts.runPasses.split(","); + } + if (opts.runPasses.length) { + opts.runPasses.forEach(pass => { + if (!runPasses.includes(pass = pass.trim())) { + runPasses.push(pass); + } + }); + } + } + + { + let begin = stats.begin(); + try { + stats.optimizeCount++; + assemblyscript.optimize(module, optimizeLevel, shrinkLevel, debugInfo, zeroFilledMemory); + } catch (e) { + crash("optimize", e); + } + try { + binaryenModule.runPasses(runPasses); + } catch (e) { + crash("runPasses", e); + } + if (converge) { + let last; + try { + let begin = stats.begin(); + stats.emitCount++; + last = binaryenModule.emitBinary(); + stats.emitTime += stats.end(begin); + } catch (e) { + crash("emitBinary (converge)", e); + } + do { + try { + stats.optimizeCount++; + assemblyscript.optimize(module, optimizeLevel, shrinkLevel, debugInfo, zeroFilledMemory); + } catch (e) { + crash("optimize (converge)", e); + } + try { + binaryenModule.runPasses(runPasses); + } catch (e) { + crash("runPasses (converge)", e); + } + let next; + try { + let begin = stats.begin(); + stats.emitCount++; + next = binaryenModule.emitBinary(); + stats.emitTime += stats.end(begin); + } catch (e) { + crash("emitBinary (converge)", e); + } + if (next.length >= last.length) { + if (next.length > last.length) { + stderr.write(`Last converge was suboptimal.${EOL}`); + } + break; + } + last = next; + } while (true); + } + stats.optimizeTime += stats.end(begin); + } + + const pending = []; + + // Prepare output + if (!opts.noEmit) { + if (opts.binaryFile) { + // We caught legacy field for binary output (before 0.20) + return prepareResult(Error("Usage of the --binaryFile compiler option is no longer supported. Use --outFile instead.")); + } + let bindings = opts.bindings || []; + let hasStdout = false; + let hasOutFile = opts.outFile != null; + let hasTextFile = opts.textFile != null; + let hasOutput = hasOutFile || hasTextFile; + let hasFileOutput = (hasOutFile && opts.outFile.length > 0) || (hasTextFile && opts.textFile.length > 0); + let basepath = hasFileOutput + ? (opts.outFile || opts.textFile).replace(/\.\w+$/, "") + : null; + let basename = hasFileOutput + ? path.basename(basepath) + : "output"; + + assemblyscript.setBasenameHint(compilerOptions, basename); + + // Write binary + if (opts.outFile != null) { + let sourceMapURL = opts.sourceMap != null + ? opts.sourceMap.length + ? opts.sourceMap + : `./${basename}.wasm.map` + : null; + + let begin = stats.begin(); + stats.emitCount++; + let wasm; + try { + wasm = binaryenModule.emitBinary(sourceMapURL); + } catch (e) { + crash("emitBinary", e); + } + stats.emitTime += stats.end(begin); + + if (opts.outFile.length) { + pending.push( + writeFile(opts.outFile, wasm.binary, baseDir) + ); + } else { + hasStdout = true; + writeStdout(wasm.binary); + } + + // Post-process source map + if (wasm.sourceMap != "") { + if (opts.outFile.length) { + let map = JSON.parse(wasm.sourceMap); + map.sourceRoot = `./${basename}`; + let contents = []; + for (let i = 0, k = map.sources.length; i < k; ++i) { + let name = map.sources[i]; + let text = assemblyscript.getSource(program, name.replace(extension_re, "")); + if (text == null) return prepareResult(Error(`Source of file '${name}' not found.`)); + contents[i] = text; + } + map.sourcesContent = contents; + pending.push( + writeFile(path.join( + path.dirname(opts.outFile), + path.basename(sourceMapURL) + ).replace(/^\.\//, ""), JSON.stringify(map), baseDir) + ); + } else { + stderr.write(`Skipped source map (no output path)${EOL}`); + } + } + } + + // Write text (also fallback) + if (opts.textFile != null || !hasOutput) { + let begin = stats.begin(); + stats.emitCount++; + let out; + try { + // use superset text format when extension is `.wast`. + // Otherwise use official stack IR format (wat). + binaryen.setOptimizeStackIR(true); + out = opts.textFile?.endsWith(".wast") + ? binaryenModule.emitText() + : binaryenModule.emitStackIR(); + } catch (e) { + crash("emitText", e); + } + stats.emitTime += stats.end(begin); + + if (opts.textFile != null && opts.textFile.length) { + pending.push( + writeFile(opts.textFile, out, baseDir) + ); + } else if (!hasStdout) { + // hasStdout = true; + writeStdout(out); + } + } + + // Write TypeScript definition + const bindingsEsm = bindings.includes("esm"); + const bindingsRaw = !bindingsEsm && bindings.includes("raw"); + if (bindingsEsm || bindingsRaw) { + if (basepath) { + let begin = stats.begin(); + stats.emitCount++; + let source; + try { + source = assemblyscript.buildTSD(program, bindingsEsm); + } catch (e) { + crash("buildTSD", e); + } + stats.emitTime += stats.end(begin); + pending.push( + writeFile(basepath + ".d.ts", source, baseDir) + ); + } else { + stderr.write(`Skipped TypeScript binding (no output path)${EOL}`); + } + } + + // Write JavaScript bindings + if (bindingsEsm || bindingsRaw) { + if (basepath) { + let begin = stats.begin(); + stats.emitCount++; + let source; + try { + source = assemblyscript.buildJS(program, bindingsEsm); + } catch (e) { + crash("buildJS", e); + } + stats.emitTime += stats.end(begin); + pending.push( + writeFile(basepath + ".js", source, baseDir) + ); + } else { + stderr.write(`Skipped JavaScript binding (no output path)${EOL}`); + } + } + } + + try { + await Promise.all(pending); + } catch (err) { + return prepareResult(err); + } + + stats.total = stats.end(statsBegin); + if (opts.stats) stderr.write(stats.toString()); + + return prepareResult(null); + + // Default implementation to read files on node + async function readFileNode(filename, baseDir) { + let name = path.resolve(baseDir, filename); + try { + stats.readCount++; + return await fs.promises.readFile(name, "utf8"); + } catch { + return null; + } + } + + // Default implementation to write files on node + async function writeFileNode(filename, contents, baseDir) { + try { + stats.writeCount++; + const dirPath = path.resolve(baseDir, path.dirname(filename)); + const filePath = path.join(dirPath, path.basename(filename)); + await fs.promises.mkdir(dirPath, { recursive: true }); + await fs.promises.writeFile(filePath, contents); + return true; + } catch { + return false; + } + } + + // Default implementation to list files on node + async function listFilesNode(dirname, baseDir) { + try { + stats.readCount++; + return (await fs.promises.readdir(path.join(baseDir, dirname))) + .filter(file => extension_re_except_d.test(file)); + } catch { + return null; + } + } + + // Writes to stdout + function writeStdout(contents) { + if (!writeStdout.used) { + writeStdout.used = true; + stats.writeCount++; + } + stdout.write(contents); + } + + // Crash handler + function crash(stage, e) { + const BAR = stdoutColors.red("▌ "); + console.error([ + EOL, + BAR, "Whoops, the AssemblyScript compiler has crashed during ", stage, " :-(", EOL, + BAR, EOL, + (typeof e.stack === "string" + ? [ + BAR, "Here is the stack trace hinting at the problem, perhaps it's useful?", EOL, + BAR, EOL, + e.stack.replace(/^/mg, BAR), EOL + ] + : [ + BAR, "There is no stack trace. Perhaps a Binaryen exception above / in console?", EOL, + BAR, EOL, + BAR, "> " + e.stack, EOL + ] + ).join(""), + BAR, EOL, + BAR, "If you see where the error is, feel free to send us a pull request. If not,", EOL, + BAR, "please let us know: https://github.com/AssemblyScript/assemblyscript/issues", EOL, + BAR, EOL, + BAR, "Thank you!", EOL + ].join("")); + process.exit(1); + } +} + +function isObject(arg) { + return Object.prototype.toString.call(arg) === "[object Object]"; +} + +async function getConfig(file, baseDir, readFile) { + const contents = await readFile(file, baseDir); + const location = path.join(baseDir, file); + if (!contents) return null; + + // obtain the configuration + let config; + try { + config = JSON.parse(contents); + } catch(ex) { + throw new Error(`Asconfig is not valid json: ${location}`, { cause: ex }); + } + + // validate asconfig shape + if (config.options && !isObject(config.options)) { + throw new Error(`Asconfig.options is not an object: ${location}`); + } + + if (config.include && !Array.isArray(config.include)) { + throw new Error(`Asconfig.include is not an array: ${location}`); + } + + if (config.targets) { + if (!isObject(config.targets)) { + throw new Error(`Asconfig.targets is not an object: ${location}`); + } + const targets = Object.keys(config.targets); + for (let i = 0; i < targets.length; i++) { + const target = targets[i]; + if (!isObject(config.targets[target])) { + throw new Error(`Asconfig.targets.${target} is not an object: ${location}`); + } + } + } + + if (config.extends && typeof config.extends !== "string") { + throw new Error(`Asconfig.extends is not a string: ${location}`); + } + + return config; +} + +/** Checks diagnostics emitted so far for errors. */ +export function checkDiagnostics(program, stderr, disableWarning, reportDiagnostic, useColors) { + if (typeof useColors === "undefined" && stderr) useColors = stderr.isTTY; + let numErrors = 0; + do { + let diagnostic = assemblyscript.nextDiagnostic(program); + if (!diagnostic) break; + if (stderr) { + const isDisabledWarning = (diagnostic) => { + if (disableWarning == null) return false; + if (!disableWarning.length) return true; + const code = assemblyscript.getDiagnosticCode(diagnostic); + return disableWarning.includes(code); + }; + if (assemblyscript.isError(diagnostic) || !isDisabledWarning(diagnostic)) { + stderr.write(assemblyscript.formatDiagnostic(diagnostic, useColors, true) + EOL + EOL); + } + } + if (reportDiagnostic) { + function wrapRange(range) { + return range && { + start: assemblyscript.getRangeStart(range), + end: assemblyscript.getRangeEnd(range), + source: wrapSource(assemblyscript.getRangeSource(range)) + } || null; + } + function wrapSource(source) { + return source && { + normalizedPath: assemblyscript.getSourceNormalizedPath(source) + } || null; + } + reportDiagnostic({ + message: assemblyscript.getDiagnosticMessage(diagnostic), + code: assemblyscript.getDiagnosticCode(diagnostic), + category: assemblyscript.getDiagnosticCategory(diagnostic), + range: wrapRange(assemblyscript.getDiagnosticRange(diagnostic)), + relatedRange: wrapRange(assemblyscript.getDiagnosticRelatedRange(diagnostic)) + }); + } + if (assemblyscript.isError(diagnostic)) ++numErrors; + } while (true); + return numErrors; +} + +export class Stats { + readCount = 0; + writeCount = 0; + parseTime = 0; + parseCount = 0; + initializeTime = 0; + initializeCount = 0; + compileTime = 0; + compileCount = 0; + emitTime = 0; + emitCount = 0; + validateTime = 0; + validateCount = 0; + optimizeTime = 0; + optimizeCount = 0; + transformTime = 0; + transformCount = 0; + begin() { + return process.hrtime(); + } + end(begin) { + const hrtime = process.hrtime(begin); + return hrtime[0] * 1e9 + hrtime[1]; + } + toString() { + const formatTime = time => time ? `${(time / 1e6).toFixed(3)} ms` : "n/a"; + const keys = Object.keys(this).filter(key => key.endsWith("Time")).map(key => key.substring(0, key.length - 4)); + const times = keys.map(key => formatTime(this[`${key}Time`])); + const counts = keys.map(key => this[`${key}Count`].toString()); + const keysLen = keys.reduce((current, key) => Math.max(key.length, current), 0); + const timesLen = times.reduce((current, time) => Math.max(time.length, current), 0); + const countsLen = counts.reduce((current, count) => Math.max(count.length, current), 0); + const totalLen = keysLen + timesLen + countsLen + 6; + const out = []; + out.push(`╭─${"─".repeat(totalLen)}─╮${EOL}`); + const header = `Stats`; + out.push(`│ ${header}${" ".repeat(totalLen - header.length)} │${EOL}`); + out.push(`╞═${"═".repeat(keysLen)}═╤═${"═".repeat(timesLen)}═╤═${"═".repeat(countsLen)}═╡${EOL}`); + for (let i = 0, k = keys.length; i < k; ++i) { + out.push(`│ ${keys[i].padEnd(keysLen)} │ ${times[i].padStart(timesLen)} │ ${counts[i].padStart(countsLen)} │${EOL}`); + } + out.push(`├─${"─".repeat(keysLen)}─┴─${"─".repeat(timesLen)}─┴─${"─".repeat(countsLen)}─┤${EOL}`); + const totalTime = `Took ${formatTime(this.total)}`; + out.push(`│ ${totalTime}${" ".repeat(totalLen - totalTime.length)} │${EOL}`); + const readsWrites = `${this.readCount} reads, ${this.writeCount} writes`; + out.push(`│ ${readsWrites}${" ".repeat(totalLen - readsWrites.length)} │${EOL}`); + out.push(`╰─${"─".repeat(totalLen)}─╯${EOL}`); + return out.join(""); + } +} + +let allocBuffer = typeof global !== "undefined" && global.Buffer + ? global.Buffer.allocUnsafe || (len => new global.Buffer(len)) + : len => new Uint8Array(len); + +/** Creates a memory stream that can be used in place of stdout/stderr. */ +export function createMemoryStream(fn) { + let stream = []; + stream.write = function(chunk) { + if (fn) fn(chunk); + if (typeof chunk === "string") { + let buffer = allocBuffer(utf8.length(chunk)); + utf8.write(chunk, buffer, 0); + chunk = buffer; + } + this.push(chunk); + }; + stream.reset = function() { + stream.length = 0; + }; + stream.toBuffer = function() { + let offset = 0, i = 0, k = this.length; + while (i < k) offset += this[i++].length; + let buffer = allocBuffer(offset); + offset = i = 0; + while (i < k) { + buffer.set(this[i], offset); + offset += this[i].length; + ++i; + } + return buffer; + }; + stream.toString = function() { + let buffer = this.toBuffer(); + return utf8.read(buffer, 0, buffer.length); + }; + return stream; +} + +/** Compatible TypeScript compiler options for syntax highlighting etc. */ +export const tscOptions = { + alwaysStrict: true, + strictNullChecks: true, + noImplicitAny: true, + noImplicitReturns: true, + noImplicitThis: true, + noEmitOnError: true, + noPropertyAccessFromIndexSignature: true, + experimentalDecorators: true, + target: "esnext", + noLib: true, + types: [], + allowJs: false +}; + +export * as default from "./index.js"; diff --git a/cli/options.json b/cli/options.json new file mode 100644 index 0000000000..f6776dbe26 --- /dev/null +++ b/cli/options.json @@ -0,0 +1,403 @@ +{ + "version": { + "category": "General", + "description": "Prints just the compiler's version and exits.", + "type": "b", + "alias": "v" + }, + "help": { + "category": "General", + "description": "Prints this message and exits.", + "type": "b", + "alias": "h" + }, + "config": { + "category": "General", + "description": "Configuration file to apply. CLI arguments take precedence.", + "type": "s", + "cliOnly": true + }, + "target": { + "category": "General", + "description": "Configuration file target to use. Defaults to 'release'.", + "type": "s", + "cliOnly": true + }, + + "optimize": { + "category": "Optimization", + "description": [ + "Optimizes the module. Typical shorthands are:", + "", + " Default optimizations -O", + " Make a release build -O --noAssert", + " Make a debug build --debug", + " Optimize for speed -Ospeed", + " Optimize for size -Osize", + "" + ], + "type": "b", + "alias": "O" + }, + "optimizeLevel": { + "category": "Optimization", + "description": "How much to focus on optimizing code. [0-3]", + "type": "i" + }, + "shrinkLevel": { + "category": "Optimization", + "description": "How much to focus on shrinking code size. [0-2, s=1, z=2]", + "type": "i" + }, + "converge": { + "category": "Optimization", + "description": "Re-optimizes until no further improvements can be made.", + "type": "b", + "default": false + }, + "noAssert": { + "category": "Optimization", + "description": "Replaces assertions with just their value without trapping.", + "type": "b", + "default": false + }, + + "outFile": { + "category": "Output", + "description": "Specifies the WebAssembly output file (.wasm).", + "type": "s", + "alias": "o", + "isPath": true + }, + "textFile": { + "category": "Output", + "description": "Specifies the WebAssembly text output file (.wat).", + "type": "s", + "alias": "t", + "isPath": true + }, + "bindings": { + "category": "Output", + "description": [ + "Specifies the bindings to generate (.js + .d.ts).", + "", + " esm JavaScript bindings & typings for ESM integration.", + " raw Like esm, but exports just the instantiate function.", + " Useful where modules are meant to be instantiated", + " multiple times or non-ESM imports must be provided." + ], + "type": "S", + "alias": "b" + }, + + "sourceMap": { + "category": "Debugging", + "description": [ + "Enables source map generation. Optionally takes the URL", + "used to reference the source map from the binary file." + ], + "type": "s" + }, + "uncheckedBehavior": { + "category": "Debugging", + "description": [ + "Changes the behavior of unchecked() expressions.", + "Using this option can potentially cause breakage.", + "", + " default The default behavior: unchecked operations are", + " only used inside of unchecked().", + " never Unchecked operations are never used, even when", + " inside of unchecked().", + " always Unchecked operations are always used if possible,", + " whether or not unchecked() is used." + ], + "type": "s", + "default": "default" + }, + "debug": { + "category": "Debugging", + "description": "Enables debug information in emitted binaries.", + "type": "b", + "default": false + }, + + "importMemory": { + "category": "Features", + "description": "Imports the memory from 'env.memory'.", + "type": "b", + "default": false + }, + "noExportMemory": { + "category": "Features", + "description": "Does not export the memory as 'memory'.", + "type": "b", + "default": false + }, + "initialMemory": { + "category": "Features", + "description": "Sets the initial memory size in pages.", + "type": "i", + "default": 0 + }, + "maximumMemory": { + "category": "Features", + "description": "Sets the maximum memory size in pages.", + "type": "i", + "default": 0 + }, + "sharedMemory": { + "category": "Features", + "description": "Declare memory as shared. Requires maximumMemory.", + "type": "b", + "default": false + }, + "zeroFilledMemory": { + "category": "Features", + "description": "Assume imported memory is zeroed. Requires importMemory.", + "type": "b", + "default": false + }, + "importTable": { + "category": "Features", + "description": "Imports the function table from 'env.table'.", + "type": "b", + "default": false + }, + "exportTable": { + "category": "Features", + "description": "Exports the function table as 'table'.", + "type": "b", + "default": false + }, + "exportStart": { + "category": "Features", + "description": [ + "Exports the start function using the specified name instead", + "of calling it implicitly. Useful to obtain the exported memory", + "before executing any code accessing it." + ], + "type": "s" + }, + "runtime": { + "category": "Features", + "description": [ + "Specifies the runtime variant to include in the program.", + "", + " incremental TLSF + incremental GC (default)", + " minimal TLSF + lightweight GC invoked externally", + " stub Minimal runtime stub (never frees)", + " ... Path to a custom runtime implementation", + "" + ], + "type": "s", + "default": "incremental" + }, + "exportRuntime": { + "category": "Features", + "description": [ + "Always exports the runtime helpers (__new, __collect, __pin etc.).", + "Automatically determined when generation of --bindings is enabled." + ], + "type": "b", + "default": false + }, + "stackSize": { + "category": "Features", + "description": [ + "Overrides the stack size. Only relevant for incremental GC", + "or when using a custom runtime that requires stack space.", + "Defaults to 0 without and to 32768 with incremental GC." + ], + "default": 0, + "type": "i" + }, + "enable": { + "category": "Features", + "description": [ + "Enables WebAssembly features being disabled by default.", + "", + " threads Threading and atomic operations.", + " simd SIMD types and operations.", + " reference-types Reference types and operations.", + " gc Garbage collection (WIP).", + " stringref String reference types.", + " relaxed-simd Relaxed SIMD operations.", + "" + ], + "TODO_doesNothingYet": [ + " exception-handling Exception handling.", + " tail-calls Tail call operations.", + " multi-value Multi value types.", + " memory64 Memory64 operations.", + " extended-const Extended const expressions." + ], + "type": "S", + "mutuallyExclusive": "disable" + }, + "disable": { + "category": "Features", + "description": [ + "Disables WebAssembly features being enabled by default.", + "", + " mutable-globals Mutable global imports and exports.", + " sign-extension Sign-extension operations", + " nontrapping-f2i Non-trapping float to integer ops.", + " bulk-memory Bulk memory operations.", + "" + ], + "type": "S", + "mutuallyExclusive": "enable" + }, + "use": { + "category": "Features", + "description": [ + "Aliases a global object under another name, e.g., to switch", + "the default 'Math' implementation used: --use Math=JSMath", + "Can also be used to introduce an integer constant." + ], + "type": "S", + "alias": "u" + }, + "lowMemoryLimit": { + "category": "Features", + "description": "Enforces very low (<64k) memory constraints.", + "default": 0, + "type": "i" + }, + + "memoryBase": { + "category": "Linking", + "description": "Sets the start offset of emitted memory segments.", + "type": "i", + "default": 0 + }, + "tableBase": { + "category": "Linking", + "description": "Sets the start offset of emitted table elements.", + "type": "i", + "default": 0 + }, + + "transform": { + "category": "API", + "description": "Specifies the path to a custom transform to load.", + "type": "S", + "isPath": true, + "useNodeResolution": true + }, + + "trapMode": { + "category": "Binaryen", + "description": [ + "Sets the trap mode to use.", + "", + " allow Allow trapping operations. This is the default.", + " clamp Replace trapping operations with clamping semantics.", + " js Replace trapping operations with JS semantics.", + "" + ], + "type": "s", + "default": "allow" + }, + "runPasses": { + "category": "Binaryen", + "description": [ + "Specifies additional Binaryen passes to run after other", + "optimizations, if any. See: Binaryen/src/passes/pass.cpp" + ], + "type": "s" + }, + "noValidate": { + "category": "Binaryen", + "description": "Skips validating the module using Binaryen.", + "type": "b", + "default": false + }, + + "baseDir": { + "description": "Specifies the base directory of input and output files.", + "type": "s", + "default": "." + }, + "noColors": { + "description": "Disables terminal colors.", + "type": "b", + "default": false + }, + "noUnsafe": { + "description": [ + "Disallows the use of unsafe features in user code.", + "Does not affect library files and external modules." + ], + "type": "b", + "default": false + }, + "disableWarning": { + "description": [ + "Disables warnings matching the given diagnostic code.", + "If no diagnostic code is given, all warnings are disabled." + ], + "type": "I" + }, + "noEmit": { + "description": "Performs compilation as usual but does not emit code.", + "type": "b", + "default": false + }, + "showConfig": { + "description": "Print computed compiler options and exit.", + "type": "b", + "default": false + }, + "stats": { + "description": "Prints statistics on I/O and compile times.", + "type": "b", + "default": false + }, + "pedantic": { + "description": "Make yourself sad for no good reason.", + "type": "b", + "default": false + }, + "lib": { + "description": [ + "Adds one or multiple paths to custom library components and", + "uses exports of all top-level files at this path as globals." + ], + "type": "S", + "isPath": true + }, + "path": { + "description": [ + "Adds one or multiple paths to package resolution, similar", + "to node_modules. Prefers an 'ascMain' entry in a package's", + "package.json and falls back to an inner 'assembly/' folder." + ], + "type": "S", + "isPath": true + }, + "wasm": { + "description": "Uses the specified Wasm binary of the compiler.", + "type": "s" + }, + " ...": { + "description": "Specifies node.js options (CLI only). See: node --help" + }, + "-Os": { "value": { "optimizeLevel": 0, "shrinkLevel": 1 } }, + "-Oz": { "value": { "optimizeLevel": 0, "shrinkLevel": 2 } }, + "-O0": { "value": { "optimizeLevel": 0, "shrinkLevel": 0 } }, + "-O1": { "value": { "optimizeLevel": 1, "shrinkLevel": 0 } }, + "-O2": { "value": { "optimizeLevel": 2, "shrinkLevel": 0 } }, + "-O3": { "value": { "optimizeLevel": 3, "shrinkLevel": 0 } }, + "-O0s": { "value": { "optimizeLevel": 0, "shrinkLevel": 1 } }, + "-O1s": { "value": { "optimizeLevel": 1, "shrinkLevel": 1 } }, + "-O2s": { "value": { "optimizeLevel": 2, "shrinkLevel": 1 } }, + "-O3s": { "value": { "optimizeLevel": 3, "shrinkLevel": 1 } }, + "-O0z": { "value": { "optimizeLevel": 0, "shrinkLevel": 2 } }, + "-O1z": { "value": { "optimizeLevel": 1, "shrinkLevel": 2 } }, + "-O2z": { "value": { "optimizeLevel": 2, "shrinkLevel": 2 } }, + "-O3z": { "value": { "optimizeLevel": 3, "shrinkLevel": 2 } }, + "-Ospeed": { "value": { "optimizeLevel": 3, "shrinkLevel": 0 } }, + "-Osize": { "value": { "optimizeLevel": 0, "shrinkLevel": 2, "converge": true } }, + "--measure": { "value": { "stats": true } } +} diff --git a/cli/shim/README.md b/cli/shim/README.md deleted file mode 100644 index 73b7e60d3c..0000000000 --- a/cli/shim/README.md +++ /dev/null @@ -1 +0,0 @@ -Shims used when bundling asc for browser usage. diff --git a/cli/shim/fs.js b/cli/shim/fs.js deleted file mode 100644 index f053ebf797..0000000000 --- a/cli/shim/fs.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {}; diff --git a/cli/shim/path.js b/cli/shim/path.js deleted file mode 100644 index 28978caf27..0000000000 --- a/cli/shim/path.js +++ /dev/null @@ -1,531 +0,0 @@ -const process = require("process"); // ensure shim - -// https://github.com/browserify/path-browserify v1.0.1 -// -// Copyright (c) 2013 James Halliday -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -function assertPath(path) { - if (typeof path !== 'string') { - throw new TypeError('Path must be a string. Received ' + JSON.stringify(path)); - } -} - -// Resolves . and .. elements in a path with directory names -function normalizeStringPosix(path, allowAboveRoot) { - var res = ''; - var lastSegmentLength = 0; - var lastSlash = -1; - var dots = 0; - var code; - for (var i = 0; i <= path.length; ++i) { - if (i < path.length) - code = path.charCodeAt(i); - else if (code === 47 /*/*/) - break; - else - code = 47 /*/*/; - if (code === 47 /*/*/) { - if (lastSlash === i - 1 || dots === 1) { - // NOOP - } else if (lastSlash !== i - 1 && dots === 2) { - if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) { - if (res.length > 2) { - var lastSlashIndex = res.lastIndexOf('/'); - if (lastSlashIndex !== res.length - 1) { - if (lastSlashIndex === -1) { - res = ''; - lastSegmentLength = 0; - } else { - res = res.slice(0, lastSlashIndex); - lastSegmentLength = res.length - 1 - res.lastIndexOf('/'); - } - lastSlash = i; - dots = 0; - continue; - } - } else if (res.length === 2 || res.length === 1) { - res = ''; - lastSegmentLength = 0; - lastSlash = i; - dots = 0; - continue; - } - } - if (allowAboveRoot) { - if (res.length > 0) - res += '/..'; - else - res = '..'; - lastSegmentLength = 2; - } - } else { - if (res.length > 0) - res += '/' + path.slice(lastSlash + 1, i); - else - res = path.slice(lastSlash + 1, i); - lastSegmentLength = i - lastSlash - 1; - } - lastSlash = i; - dots = 0; - } else if (code === 46 && dots !== -1) { - ++dots; - } else { - dots = -1; - } - } - return res; -} - -function _format(sep, pathObject) { - var dir = pathObject.dir || pathObject.root; - var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || ''); - if (!dir) { - return base; - } - if (dir === pathObject.root) { - return dir + base; - } - return dir + sep + base; -} - -var posix = { - // path.resolve([from ...], to) - resolve: function resolve() { - var resolvedPath = ''; - var resolvedAbsolute = false; - var cwd; - - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path; - if (i >= 0) - path = arguments[i]; - else { - if (cwd === undefined) - cwd = process.cwd(); - path = cwd; - } - - assertPath(path); - - // Skip empty entries - if (path.length === 0) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/; - } - - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - - // Normalize the path - resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute); - - if (resolvedAbsolute) { - if (resolvedPath.length > 0) - return '/' + resolvedPath; - else - return '/'; - } else if (resolvedPath.length > 0) { - return resolvedPath; - } else { - return '.'; - } - }, - - normalize: function normalize(path) { - assertPath(path); - - if (path.length === 0) return '.'; - - var isAbsolute = path.charCodeAt(0) === 47 /*/*/; - var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/; - - // Normalize the path - path = normalizeStringPosix(path, !isAbsolute); - - if (path.length === 0 && !isAbsolute) path = '.'; - if (path.length > 0 && trailingSeparator) path += '/'; - - if (isAbsolute) return '/' + path; - return path; - }, - - isAbsolute: function isAbsolute(path) { - assertPath(path); - return path.length > 0 && path.charCodeAt(0) === 47 /*/*/; - }, - - join: function join() { - if (arguments.length === 0) - return '.'; - var joined; - for (var i = 0; i < arguments.length; ++i) { - var arg = arguments[i]; - assertPath(arg); - if (arg.length > 0) { - if (joined === undefined) - joined = arg; - else - joined += '/' + arg; - } - } - if (joined === undefined) - return '.'; - return posix.normalize(joined); - }, - - relative: function relative(from, to) { - assertPath(from); - assertPath(to); - - if (from === to) return ''; - - from = posix.resolve(from); - to = posix.resolve(to); - - if (from === to) return ''; - - if (from === ".") return to; // FIX for 'odule.ts' (see issue #1398) - - // Trim any leading backslashes - var fromStart = 1; - for (; fromStart < from.length; ++fromStart) { - if (from.charCodeAt(fromStart) !== 47 /*/*/) - break; - } - var fromEnd = from.length; - var fromLen = fromEnd - fromStart; - - // Trim any leading backslashes - var toStart = 1; - for (; toStart < to.length; ++toStart) { - if (to.charCodeAt(toStart) !== 47 /*/*/) - break; - } - var toEnd = to.length; - var toLen = toEnd - toStart; - - // Compare paths to find the longest common path from root - var length = fromLen < toLen ? fromLen : toLen; - var lastCommonSep = -1; - var i = 0; - for (; i <= length; ++i) { - if (i === length) { - if (toLen > length) { - if (to.charCodeAt(toStart + i) === 47 /*/*/) { - // We get here if `from` is the exact base path for `to`. - // For example: from='/foo/bar'; to='/foo/bar/baz' - return to.slice(toStart + i + 1); - } else if (i === 0) { - // We get here if `from` is the root - // For example: from='/'; to='/foo' - return to.slice(toStart + i); - } - } else if (fromLen > length) { - if (from.charCodeAt(fromStart + i) === 47 /*/*/) { - // We get here if `to` is the exact base path for `from`. - // For example: from='/foo/bar/baz'; to='/foo/bar' - lastCommonSep = i; - } else if (i === 0) { - // We get here if `to` is the root. - // For example: from='/foo'; to='/' - lastCommonSep = 0; - } - } - break; - } - var fromCode = from.charCodeAt(fromStart + i); - var toCode = to.charCodeAt(toStart + i); - if (fromCode !== toCode) - break; - else if (fromCode === 47 /*/*/) - lastCommonSep = i; - } - - var out = ''; - // Generate the relative path based on the path difference between `to` - // and `from` - for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { - if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) { - if (out.length === 0) - out += '..'; - else - out += '/..'; - } - } - - // Lastly, append the rest of the destination (`to`) path that comes after - // the common path parts - if (out.length > 0) - return out + to.slice(toStart + lastCommonSep); - else { - toStart += lastCommonSep; - if (to.charCodeAt(toStart) === 47 /*/*/) - ++toStart; - return to.slice(toStart); - } - }, - - _makeLong: function _makeLong(path) { - return path; - }, - - dirname: function dirname(path) { - assertPath(path); - if (path.length === 0) return '.'; - var code = path.charCodeAt(0); - var hasRoot = code === 47 /*/*/; - var end = -1; - var matchedSlash = true; - for (var i = path.length - 1; i >= 1; --i) { - code = path.charCodeAt(i); - if (code === 47 /*/*/) { - if (!matchedSlash) { - end = i; - break; - } - } else { - // We saw the first non-path separator - matchedSlash = false; - } - } - - if (end === -1) return hasRoot ? '/' : '.'; - if (hasRoot && end === 1) return '//'; - return path.slice(0, end); - }, - - basename: function basename(path, ext) { - if (ext !== undefined && typeof ext !== 'string') throw new TypeError('"ext" argument must be a string'); - assertPath(path); - - var start = 0; - var end = -1; - var matchedSlash = true; - var i; - - if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { - if (ext.length === path.length && ext === path) return ''; - var extIdx = ext.length - 1; - var firstNonSlashEnd = -1; - for (i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } else { - if (firstNonSlashEnd === -1) { - // We saw the first non-path separator, remember this index in case - // we need it if the extension ends up not matching - matchedSlash = false; - firstNonSlashEnd = i + 1; - } - if (extIdx >= 0) { - // Try to match the explicit extension - if (code === ext.charCodeAt(extIdx)) { - if (--extIdx === -1) { - // We matched the extension, so mark this as the end of our path - // component - end = i; - } - } else { - // Extension does not match, so our result is the entire path - // component - extIdx = -1; - end = firstNonSlashEnd; - } - } - } - } - - if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length; - return path.slice(start, end); - } else { - for (i = path.length - 1; i >= 0; --i) { - if (path.charCodeAt(i) === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } else if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // path component - matchedSlash = false; - end = i + 1; - } - } - - if (end === -1) return ''; - return path.slice(start, end); - } - }, - - extname: function extname(path) { - assertPath(path); - var startDot = -1; - var startPart = 0; - var end = -1; - var matchedSlash = true; - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0; - for (var i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === 46) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) - startDot = i; - else if (preDotState !== 1) - preDotState = 1; - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - - if (startDot === -1 || end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { - return ''; - } - return path.slice(startDot, end); - }, - - format: function format(pathObject) { - if (pathObject === null || typeof pathObject !== 'object') { - throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject); - } - return _format('/', pathObject); - }, - - parse: function parse(path) { - assertPath(path); - - var ret = { root: '', dir: '', base: '', ext: '', name: '' }; - if (path.length === 0) return ret; - var code = path.charCodeAt(0); - var isAbsolute = code === 47 /*/*/; - var start; - if (isAbsolute) { - ret.root = '/'; - start = 1; - } else { - start = 0; - } - var startDot = -1; - var startPart = 0; - var end = -1; - var matchedSlash = true; - var i = path.length - 1; - - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0; - - // Get non-dir info - for (; i >= start; --i) { - code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === 46) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1; - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - - if (startDot === -1 || end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { - if (end !== -1) { - if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end); - } - } else { - if (startPart === 0 && isAbsolute) { - ret.name = path.slice(1, startDot); - ret.base = path.slice(1, end); - } else { - ret.name = path.slice(startPart, startDot); - ret.base = path.slice(startPart, end); - } - ret.ext = path.slice(startDot, end); - } - - if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/'; - - return ret; - }, - - sep: '/', - delimiter: ':', - win32: null, - posix: null -}; - -posix.posix = posix; - -module.exports = posix; diff --git a/cli/transform.d.ts b/cli/transform.d.ts deleted file mode 100644 index c63b3cb4ee..0000000000 --- a/cli/transform.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * @fileoverview Compiler transform interface definitions. - * @license Apache-2.0 - */ - -import { Program, Parser, Module } from ".."; -import { OutputStream } from "./asc"; - -export abstract class Transform { - - /** Program reference. */ - readonly program: Program; - - /** Base directory. */ - readonly baseDir: string; - - /** Output stream used by the compiler. */ - readonly stdout: OutputStream; - - /** Error stream used by the compiler. */ - readonly stderr: OutputStream; - - /** Logs a message to console. */ - readonly log: typeof console.log; - - /** Writes a file to disk. */ - writeFile(filename: string, contents: string | Uint8Array, baseDir: string): boolean; - - /** Reads a file from disk. */ - readFile(filename: string, baseDir: string): string | null; - - /** Lists all files in a directory. */ - listFiles(dirname: string, baseDir: string): string[] | null; - - /** Called when parsing is complete, before a program is instantiated from the AST. */ - afterParse?(parser: Parser): void; - - /** Called after the program is instantiated. */ - afterInitialize?(program: Program): void; - - /** Called when compilation is complete, before the module is being validated. */ - afterCompile?(module: Module): void; -} diff --git a/cli/transform.js b/cli/transform.js deleted file mode 100644 index 8f68d7a2e5..0000000000 --- a/cli/transform.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @fileoverview Compiler transform interface. - * @license Apache-2.0 - */ - -// becomes replaced with the actual base by asc -exports.Transform = function Transform() { /* nop */ }; diff --git a/cli/tsconfig.json b/cli/tsconfig.json new file mode 100644 index 0000000000..bcb1b8a11d --- /dev/null +++ b/cli/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../tsconfig-base.json", + "include": [ + "./**/*.ts" + ] +} diff --git a/cli/util/colors.d.ts b/cli/util/colors.d.ts deleted file mode 100644 index 75d689a50f..0000000000 --- a/cli/util/colors.d.ts +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @fileoverview Terminal colors utility definitions. - * @license Apache-2.0 - */ - -interface Colors { - /** Whether terminal colors are supported. */ - supported: boolean; - /** Colors a string in gray if {@link supported}. */ - gray(text: string): string; - /** Colors a string in red if {@link supported}. */ - red(text: string): string; - /** Colors a string in green if {@link supported}. */ - green(text: string): string; - /** Colors a string in yellow if {@link supported}. */ - yellow(text: string): string; - /** Colors a string in blue if {@link supported}. */ - blue(text: string): string; - /** Colors a string in magenta if {@link supported}. */ - magenta(text: string): string; - /** Colors a string in cyan if {@link supported}. */ - cyan(text: string): string; - /** Colors a string in white if {@link supported}. */ - white(text: string): string; -} - -interface Exports extends Colors { - /** Standard output wrapper. */ - stdout: Colors; - /** Standard error wrapper. */ - stderr: Colors; - /** Creates an instance for the specified stream. */ - from(stream: Record, base?: Record): Colors; - /** Gray color escape sequence. */ - GRAY: string; - /** Red color escape sequence. */ - RED: string; - /** Green color escape sequence. */ - GREEN: string; - /** Yellow color escape sequence. */ - YELLOW: string; - /** Blue color escape sequence. */ - BLUE: string; - /** Magenta color escape sequence. */ - MAGENTA: string; - /** Cyan color escape sequence. */ - CYAN: string; - /** White color escape sequence. */ - WHITE: string; - /** Reset color escape sequence. */ - RESET: string; -} - -declare const colors: Exports; -export = colors; diff --git a/cli/util/colors.js b/cli/util/colors.js deleted file mode 100644 index 798960c7a0..0000000000 --- a/cli/util/colors.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * @fileoverview Terminal colors utility. - * @license Apache-2.0 - */ - -var proc = typeof process !== "undefined" && process || {}; -var isCI = proc.env && "CI" in proc.env; // doesn't work when bundled because 'process' is a mock - -function from(stream, base) { - var colors = base || {}; - colors.supported = (stream && !!stream.isTTY) || isCI; - colors.gray = text => colors.supported ? exports.GRAY + text + exports.RESET : text; - colors.red = text => colors.supported ? exports.RED + text + exports.RESET : text; - colors.green = text => colors.supported ? exports.GREEN + text + exports.RESET : text; - colors.yellow = text => colors.supported ? exports.YELLOW + text + exports.RESET : text; - colors.blue = text => colors.supported ? exports.BLUE + text + exports.RESET : text; - colors.magenta = text => colors.supported ? exports.MAGENTA + text + exports.RESET : text; - colors.cyan = text => colors.supported ? exports.CYAN + text + exports.RESET : text; - colors.white = text => colors.supported ? exports.WHITE + text + exports.RESET : text; - return colors; -} - -exports.stdout = from(proc.stdout, exports); -exports.stderr = from(proc.stderr); -exports.from = from; - -exports.GRAY = "\u001b[90m"; -exports.RED = "\u001b[91m"; -exports.GREEN = "\u001b[92m"; -exports.YELLOW = "\u001b[93m"; -exports.BLUE = "\u001b[94m"; -exports.MAGENTA = "\u001b[95m"; -exports.CYAN = "\u001b[96m"; -exports.WHITE = "\u001b[97m"; -exports.RESET = "\u001b[0m"; diff --git a/cli/util/find.d.ts b/cli/util/find.d.ts deleted file mode 100644 index cc2aeaed37..0000000000 --- a/cli/util/find.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @fileoverview File finding utility definitions. - * @license Apache-2.0 - */ - -export function files(dirname: string, filter?: ((name: string) => bool) | RegExp): string[]; diff --git a/cli/util/mkdirp.d.ts b/cli/util/mkdirp.d.ts deleted file mode 100644 index 7a0658d500..0000000000 --- a/cli/util/mkdirp.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * @fileoverview Recursive mkdir definitions. - * @license Apache-2.0 - */ - -interface Options { - mode?: number; -} -declare function mkdirp(path: string, options?: Options): string | null; -export = mkdirp; diff --git a/cli/util/mkdirp.js b/cli/util/mkdirp.js deleted file mode 100644 index 24d94043b0..0000000000 --- a/cli/util/mkdirp.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @fileoverview Recursive mkdir. - * @license - * Copyright 2010 James Halliday (mail@substack.net) - * - * This project is free software released under the MIT/X11 license: - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -const path = require("path"); -const fs = require("fs"); -const process = require("process"); // ensure shim - -module.exports = function mkdirp(p, opts, made) { - if (!opts || typeof opts !== "object") { - opts = { mode: opts }; - } - var mode = opts.mode; - if (mode === undefined) { - mode = 0o777 & (~process.umask()); - } - if (!made) made = null; - p = path.resolve(p); - try { - fs.mkdirSync(p, mode); - made = made || p; - } catch (err0) { - switch (err0.code) { - case "ENOENT": - made = mkdirp(path.dirname(p), opts, made); - mkdirp(p, opts, made); - break; - default: - var stat; - try { - stat = fs.statSync(p); - } catch (err1) { - throw err0; - } - if (!stat.isDirectory()) throw err0; - break; - } - } - return made; -}; diff --git a/cli/util/utf8.d.ts b/cli/util/utf8.d.ts deleted file mode 100644 index d419c041e3..0000000000 --- a/cli/util/utf8.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @fileoverview UTF8 utility definitions. - * @license Apache-2.0 - */ - -/** - * Calculates the UTF8 byte length of a string. - * @param {string} string String - * @returns {number} Byte length - */ -export function length(string: string): number; - -/** - * Reads UTF8 bytes as a string. - * @param {Uint8Array} buffer Source buffer - * @param {number} start Source start - * @param {number} end Source end - * @returns {string} String read - */ -export function read(buffer: Uint8Array, start: number, end: number): string; - -/** - * Writes a string as UTF8 bytes. - * @param {string} string Source string - * @param {Uint8Array} buffer Destination buffer - * @param {number} offset Destination offset - * @returns {number} Bytes written - */ -export function write(string: string, buffer: Uint8Array, offset: number): number; diff --git a/cli/util/utf8.js b/cli/util/utf8.js deleted file mode 100644 index 22f16671e9..0000000000 --- a/cli/util/utf8.js +++ /dev/null @@ -1,110 +0,0 @@ -/** - * @fileoverview UTF8 utility. - * @license Apache-2.0 - */ - -// @protobufjs/utf8 - -/** - * A minimal UTF8 implementation for number arrays. - * @memberof util - * @namespace - */ -var utf8 = exports; - -/** - * Calculates the UTF8 byte length of a string. - * @param {string} string String - * @returns {number} Byte length - */ -utf8.length = function utf8_length(string) { - var len = 0, - c = 0; - for (var i = 0, l = string.length; i < l; ++i) { - c = string.charCodeAt(i); - if (c < 128) - len += 1; - else if (c < 2048) - len += 2; - else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) { - ++i; - len += 4; - } else - len += 3; - } - return len; -}; - -/** - * Reads UTF8 bytes as a string. - * @param {Uint8Array} buffer Source buffer - * @param {number} start Source start - * @param {number} end Source end - * @returns {string} String read - */ -utf8.read = function utf8_read(buffer, start, end) { - var len = end - start; - if (len < 1) - return ""; - var parts = null, - chunk = [], - i = 0, // char offset - t; // temporary - while (start < end) { - t = buffer[start++]; - if (t < 128) - chunk[i++] = t; - else if (t > 191 && t < 224) - chunk[i++] = (t & 31) << 6 | buffer[start++] & 63; - else if (t > 239 && t < 365) { - t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000; - chunk[i++] = 0xD800 + (t >> 10); - chunk[i++] = 0xDC00 + (t & 1023); - } else - chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63; - if (i > 8191) { - (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk)); - i = 0; - } - } - if (parts) { - if (i) - parts.push(String.fromCharCode.apply(String, chunk.slice(0, i))); - return parts.join(""); - } - return String.fromCharCode.apply(String, chunk.slice(0, i)); -}; - -/** - * Writes a string as UTF8 bytes. - * @param {string} string Source string - * @param {Uint8Array} buffer Destination buffer - * @param {number} offset Destination offset - * @returns {number} Bytes written - */ -utf8.write = function utf8_write(string, buffer, offset) { - var start = offset, - c1, // character 1 - c2; // character 2 - for (var i = 0; i < string.length; ++i) { - c1 = string.charCodeAt(i); - if (c1 < 128) { - buffer[offset++] = c1; - } else if (c1 < 2048) { - buffer[offset++] = c1 >> 6 | 192; - buffer[offset++] = c1 & 63 | 128; - } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) { - c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF); - ++i; - buffer[offset++] = c1 >> 18 | 240; - buffer[offset++] = c1 >> 12 & 63 | 128; - buffer[offset++] = c1 >> 6 & 63 | 128; - buffer[offset++] = c1 & 63 | 128; - } else { - buffer[offset++] = c1 >> 12 | 224; - buffer[offset++] = c1 >> 6 & 63 | 128; - buffer[offset++] = c1 & 63 | 128; - } - } - return offset - start; -}; diff --git a/dist/asc.d.ts b/dist/asc.d.ts new file mode 100644 index 0000000000..17fcb31434 --- /dev/null +++ b/dist/asc.d.ts @@ -0,0 +1,4 @@ +/// +export * from "types:assemblyscript/cli/index"; +import * as asc from "types:assemblyscript/cli/index"; +export default asc; diff --git a/dist/assemblyscript.d.ts b/dist/assemblyscript.d.ts new file mode 100644 index 0000000000..2b2e4a4403 --- /dev/null +++ b/dist/assemblyscript.d.ts @@ -0,0 +1,4 @@ +/// +export * from "types:assemblyscript/src/index"; +import * as assemblyscript from "types:assemblyscript/src/index"; +export default assemblyscript; diff --git a/dist/transform.cjs b/dist/transform.cjs new file mode 100644 index 0000000000..a245e852c8 --- /dev/null +++ b/dist/transform.cjs @@ -0,0 +1 @@ +module.exports = class Transform { /* stub */ }; diff --git a/dist/transform.d.ts b/dist/transform.d.ts new file mode 100644 index 0000000000..14efe05e8f --- /dev/null +++ b/dist/transform.d.ts @@ -0,0 +1 @@ +export { Transform } from "./asc"; diff --git a/dist/transform.js b/dist/transform.js new file mode 100644 index 0000000000..f6c0877686 --- /dev/null +++ b/dist/transform.js @@ -0,0 +1 @@ +export class Transform { /* stub */ }; diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000000..4c53f86f2b --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,231 @@ +import { defineConfig, globalIgnores } from "eslint/config"; + +import js from "@eslint/js"; +import tseslint from "typescript-eslint"; +import globals from "globals"; + +export default defineConfig([ + globalIgnores([ + "**/*.d.ts", + + "dist/**", + "lib/binaryen.js", + "lib/parse/index.js", + "build/**", + "raw/**", + + // Exclude AS sources with non-standard decorators + "src/glue/wasm/**/*.ts", + "std/assembly/**/*.ts", + + "tests/parser/**", + "tests/compiler/**", + "tests/asconfig/**", + "lib/loader/tests/**", + + // FIXME: Tagged template literal tests with invalid escapes + "tests/compiler/templateliteral.ts", + ]), + + js.configs.recommended, + ...tseslint.configs.recommended, + + { + files: ["**/*.{js,ts}"], + + languageOptions: { + parser: tseslint.parser, + ecmaVersion: 2024, + sourceType: "module", + globals: { + ...globals.es2024, + globalThis: "readonly", + BigInt64Array: "readonly", + BigUint64Array: "readonly", + WebAssembly: "readonly", + FinalizationRegistry: "readonly", + fetch: "readonly", + URL: "readonly", + console: "readonly", + }, + }, + + plugins: { + "@typescript-eslint": tseslint.plugin, + }, + + rules: { + semi: "error", + + indent: ["error", 2, { + SwitchCase: 1, + VariableDeclarator: "first", + offsetTernaryExpressions: true, + ignoredNodes: [ + "ConditionalExpression > *", + "ConditionalExpression > * > *", + "ConditionalExpression > * > * > *", + ], + }], + + "spaced-comment": ["error", "always", { + markers: ["/"], + exceptions: ["/"], + }], + + "prefer-const": "off", + "no-var": "off", + "no-fallthrough": "off", + + "no-constant-condition": ["error", { checkLoops: false }], + "no-inner-declarations": "off", + + "no-loss-of-precision": "off", + "no-unused-vars": "off", + "no-useless-assignment": "off", + + "@typescript-eslint/no-this-alias": "off", + "@typescript-eslint/no-unused-vars": "off", + }, + }, + + // === JavaScript === + { + files: ["**/*.js", "bin/*"], + + languageOptions: { + globals: { + ...globals.browser, + ...globals.amd, + ...globals.node, + ...globals.es6, + }, + }, + + rules: { + "@typescript-eslint/no-var-requires": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + + "no-unused-vars": ["warn", { + vars: "local", + args: "none", + ignoreRestSiblings: false, + }], + + "@typescript-eslint/no-loss-of-precision": "error", + }, + }, + + // === TypeScript === + { + files: ["**/*.ts"], + + rules: { + "@typescript-eslint/no-unused-vars": ["warn", { + vars: "local", + varsIgnorePattern: "^[A-Z](?:From|To)?$", + args: "none", + ignoreRestSiblings: false, + }], + }, + }, + + // === AssemblyScript === + { + files: [ + "**/assembly/**/*.ts", + "src/**/*.ts", + "lib/parse/src/**/*.ts", + ], + + rules: { + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-array-constructor": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/no-non-null-assertion": "off", + }, + }, + + // === Compiler === + { + files: [ + "src/**/*.ts", + "std/assembly/**/*.ts", + ], + + rules: { + "no-cond-assign": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/triple-slash-reference": "off", + "no-shadow-restricted-names": "off", + "@typescript-eslint/ban-types": "off", + }, + }, + + // === Standard Library === + { + files: ["std/assembly/**/*.ts"], + + rules: { + "no-shadow-restricted-names": "off", + "@typescript-eslint/ban-types": "off", + }, + }, + + // === Definition files === + { + files: ["std/**/*.d.ts"], + + rules: { + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-empty-interface": "off", + "@typescript-eslint/ban-types": "off", + }, + }, + + // === Dist definitions === + { + files: ["./dist/*.d.ts"], + + rules: { + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/triple-slash-reference": "off", + }, + }, + + // === Tests === + { + files: [ + "./tests/compiler/**/*.ts", + "./lib/loader/tests/assembly/**/*.ts", + ], + + rules: { + "no-empty": "off", + "no-cond-assign": "off", + "no-compare-neg-zero": "off", + "no-inner-declarations": "off", + "no-constant-condition": "off", + "use-isnan": "off", + + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-extra-semi": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/ban-types": "off", + "@typescript-eslint/triple-slash-reference": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/no-extra-non-null-assertion": "off", + "@typescript-eslint/no-empty-interface": "off", + }, + }, + + { + files: ["tests/transform/cjs/**/*.js"], + rules: { + "@typescript-eslint/no-require-imports": "off", + }, + }, +]); diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index c039a8000c..0000000000 --- a/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import "./src/glue/js"; -export * from "./src"; diff --git a/index.js b/index.js deleted file mode 100644 index e8e52df9a7..0000000000 --- a/index.js +++ /dev/null @@ -1,7 +0,0 @@ -try { require("source-map-support").install(); } catch (e) { /* nop */ } -require("ts-node").register({ - project: require("path").join(__dirname, "src", "tsconfig.json"), - skipIgnore: true -}); -require("./src/glue/js"); -module.exports = require("./src"); diff --git a/index.release.d.ts b/index.release.d.ts deleted file mode 100644 index 388aca2060..0000000000 --- a/index.release.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// -export * from "assemblyscript"; diff --git a/index.release.js b/index.release.js deleted file mode 100644 index b459cec30a..0000000000 --- a/index.release.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./dist/assemblyscript"); diff --git a/lib/README.md b/lib/README.md new file mode 100644 index 0000000000..9ac01cc665 --- /dev/null +++ b/lib/README.md @@ -0,0 +1,14 @@ +Library +======= + +Additional packages provided by the main package. + +| Package | Description +|------------------------------------|------------------------- +| [@assemblyscript/loader](./loader) | Module loader utility +| [@assemblyscript/rtrace](./rtrace) | Runtime tracing utility +| binaryen | Binaryen proxy + +The Binaryen proxy herein is imported accross the code base and forwards the +`binaryen` npm package by default. It can be modified to use a custom build, +for example for testing purposes. diff --git a/lib/binaryen.d.ts b/lib/binaryen.d.ts new file mode 100644 index 0000000000..facd164949 --- /dev/null +++ b/lib/binaryen.d.ts @@ -0,0 +1,2 @@ +export * from "binaryen"; +export { default } from "binaryen"; diff --git a/lib/binaryen.js b/lib/binaryen.js new file mode 100644 index 0000000000..facd164949 --- /dev/null +++ b/lib/binaryen.js @@ -0,0 +1,2 @@ +export * from "binaryen"; +export { default } from "binaryen"; diff --git a/lib/loader/README.md b/lib/loader/README.md index 58ce74c630..ff1e805977 100644 --- a/lib/loader/README.md +++ b/lib/loader/README.md @@ -1,5 +1,318 @@ # AssemblyScript Loader -A convenient loader for [AssemblyScript](https://assemblyscript.org) modules. Demangles module exports to a friendly object structure compatible with TypeScript definitions and provides useful utility to read/write data from/to memory. +A tiny module loader that makes working with AssemblyScript modules as convenient as it gets without sacrificing efficiency. It about mirrors the relevant parts of the WebAssembly API while also providing utility to allocate and read strings, arrays and classes. -[Documentation](https://assemblyscript.org/loader.html) +**DEPRECATION NOTICE:** The loader has been deprecated in AssemblyScript 0.20. It will likely continue to work for a while, but it is recommended to switch to the new [static bindings](https://www.assemblyscript.org/compiler.html#host-bindings) generation. + +## Example + +```ts +import loader from "@assemblyscript/loader"; // or require +loader.instantiate( + // Binary to instantiate + fetch("optimized.wasm"), // or fs.readFileSync + // or fs.promises.readFile + // or just a buffer + // Additional imports + { ... } +).then(({ exports }) => { + ... +}) +``` + +The loader basically instantiates the module using `WebAssembly` APIs, but also adds additional utility. + +## Installation + +The loader can be installed from [npm](https://www.npmjs.com/package/@assemblyscript/loader): + +```sh +npm install --save @assemblyscript/loader +``` + +On the web: + +```html + + + + +``` + +## Usage + +One task the loader does not perform is to implicitly translate between WebAssembly pointers and JavaScript objects, and that's where the mixed in utility comes into play. For example, if one has + +```ts +// AssemblyScript +export function concat(a: string, b: string): string { + return a + b +} +``` + +and then wants to call `concat` externally, the string arguments cannot just be JavaScript strings but must first be allocated in the module's memory with their lifetime tracked, like so: + +```js +// JavaScript +const { concat } = myModule.exports +const { __newString, __getString } = myModule.exports + +function doConcat(aStr, bStr) { + let aPtr = __newString(aStr) + let bPtr = __newString(bStr) + let cPtr = concat(aPtr, bPtr) + let cStr = __getString(cPtr) + return cStr +} + +console.log(doConcat("Hello ", "world!")) +``` + +### Creating arrays + +Arrays (or more advanced classes for that matter) require a bit more cooperation because we need to know their value type in order to work with them properly. To achieve this, every class has a unique id internally, and a chunk of runtime type information (RTTI) is shipped with the module to evaluate class types. Here's an example of working with an `Int32Array`: + +```ts +// AssemblyScript +export function sum(arr: Int32Array): i32 { + let sum = 0 + for (let i = 0, k = arr.length; i < k; ++i) { + sum += unchecked(arr[i]) + } + return sum +} +export const Int32Array_ID = idof() +``` + +```js +// JavaScript +const { sum, Int32Array_ID } = myModule.exports +const { __newArray } = myModule.exports + +function doSum(values) { + const arrPtr = __newArray(Int32Array_ID, values) + return sum(arrPtr) +} + +console.log(doSum([1, 2, 3])) +``` + +This works with all kinds of arrays, except that ids are different and values are interpreted differently, of course. + +### Reading arrays + +If one is instead interested in the values of an array being returned by the module, there are two approaches to this. Let's say we have the following module: + +```ts +// AssemblyScript +export function getRandomArray(len: i32): Int32Array { + const arr = new Int32Array(len) + // fill with random values + return arr +} +``` + +The first is, obviously, to read the array's values from the module's memory by essentially copying them to a JS array + +```js +// JavaScript +const { getRandomArray } = myModule.exports +const { __getArray } = myModule.exports + +function doGetRandomArray(len) { + const arrPtr = getRandomArray(len) + const values = __getArray(arrPtr) + return values +} + +console.log(doGetRandomArray(10)) +``` + +which is always safe, while the second is to create a live view on the array, enabling two-way modification of its values: + +```js +// JavaScript +const { getRandomArray } = myModule.exports +const { __getArrayView, __pin, __unpin } = myModule.exports + +function doGetRandomArrayView(len) { + const arrPtr = __pin(getRandomArray(len)) // pin if necessary + const view = __getArrayView(arrPtr) + return { ptr, view } +} + +const randomArray = doGetRandomArrayView(10) +console.log(randomArray.view) +__unpin(randomArray.ptr) // unpin if necessary +``` + +The latter variant can be more efficient (and useful) but is a little dangerous because the view may become detached from the module's memory when memory automatically grows. Also, the viewed array can grow automatically when pushed to, with the view then referencing random memory. Pushing to an array can be avoided quite easily, yet it is notoriously hard to predict when module memory grows - but one can try to set a sufficiently large size of `--initialMemory` or defensively trigger a sufficiently large dynamic allocation being freed immediately before dealing with potentially problematic views. + +### Custom classes + +As mentioned earlier, the loader understands how to make a nice object structure of a module's exports, and it is possible to utilize it to work with classes in a more natural way. For example, when calling the following function externally + +```ts +// AssemblyScript +export class Foo { + constructor(public str: string) {} + getString(): string { + return this.str + } +} + +export function getFoo(): Foo { // this one + return new Foo("Hello world!") +} +``` + +one can wrap the received pointer in a `myModule.exports.Foo` instance: + +```js +// JavaScript +const { Foo, getFoo } = myModule.exports +const { __getString, __pin, __unpin } = myModule.exports + +const fooPtr = __pin(getFoo()) // pin if necessary +const foo = Foo.wrap(fooPtr) +const strPtr = foo.getString() +console.log(__getString(strPtr)) +__unpin(fooPtr) // unpin if necessary +``` + +## API + +For reference, here comes the full API provided by the loader. + +::: tip +Copying from and extending the examples above is typically sufficient. +::: + +### Static members + +* ```ts + function instantiate( + moduleOrBuffer: WasmInstantiable, + imports?: WasmImports + ): Promise + ``` + Asynchronously instantiates an AssemblyScript module from anything that can be instantiated. + +* ```ts + function instantiateSync( + moduleOrBuffer: WasmInstantiable, + imports?: WasmImports + ): ASUtil & T + ``` + Synchronously instantiates an AssemblyScript module from a WebAssembly.Module or binary buffer. Not recommended. + +* ```ts + function instantiateStreaming( + response: Response | PromiseLike, + imports?: WasmImports + ): Promise + ``` + Asynchronously instantiates an AssemblyScript module from a response, i.e. as obtained by fetch. + +* ```ts + function demangle( + exports: WasmExports, + baseModule?: Object + ): T + ``` + Demangles an AssemblyScript module's exports to a friendly object structure. You usually don't have to call this manually as instantiation does this implicitly. + +Note that `T` above can either be omitted if the shape of the module is unknown, or can reference a `.d.ts` (i.e. `typeof MyModule`) as produced by the compiler with the `-d` option. + +### Module instance utility + +The following utility functions are mixed into the module's exports. + +* ```ts + function __newString(str: string): number + ``` + Allocates a new string in the module's memory and returns a pointer to it. Requires `--exportRuntime` for access to `__new`. + +* ```ts + function __newArray( + id: number, + values: valuesOrCapacity?: number[] | ArrayBufferView | number + ): number + ``` + Allocates a new array in the module's memory and returns a pointer to it. The `id` is the unique runtime id of the respective array class. If you are using `Int32Array` for example, the best way to know the id is an `export const Int32Array_ID = idof()`. Requires `--exportRuntime` for access to `__new`. The `values` parameter сan also be used to pre-allocate an otherwise empty array of a certain capacity. + +* ```ts + function __getString(ptr: number): string + ``` + Copies a string's value from the module's memory to a JavaScript string. `ptr` must not be zero. + +* ```ts + function __getFunction(ptr: number): ((...args: unknown[]) => unknown) | null + ``` + Gets a callable function object from the module's memory containing its table index. `ptr` must not be zero. + +* ```ts + function __getArrayBuffer(ptr: number): ArrayBuffer + ``` + Copies an ArrayBuffer's value from the module's memory to a JavaScript buffer. `ptr` must not be zero. + +* ```ts + function __getArray(ptr: number): number[] + ``` + Copies an array's values from the module's memory to a JavaScript array. Infers the array type from RTTI. `ptr` must not be zero. + +* ```ts + function __getArrayView(ptr: number): TypedArray + ``` + Gets a live view on the values of an array in the module's memory. Infers the array type from RTTI. `ptr` must not be zero. + + This differs from `__getArray` in that the data isn't copied but remains live in both directions. That's faster but also unsafe because if the array grows or becomes garbage collected, the view will no longer represent the correct memory region and modifying its values in this state will most likely corrupt memory or otherwise explode. Use, but use with care. + +* ```ts + function __getInt8ArrayView(ptr: number): Int8Array + function __getUint8ArrayView(ptr: number): Uint8Array + function __getUint8ClampedArrayView(ptr: number): Uint8ClampedArray + function __getInt16ArrayView(ptr: number): Int16Array + function __getUint16ArrayView(ptr: number): Uint16Array + function __getInt32ArrayView(ptr: number): Int32Array + function __getUint32ArrayView(ptr: number): Uint32Array + function __getInt64ArrayView(ptr: number): BigInt64Array + function __getUint64ArrayView(ptr: number): BigUint64Array + function __getFloat32ArrayView(ptr: number): Float32Array + function __getFloat64ArrayView(ptr: number): Float64Array + ``` + Slightly more efficient variants of `__getArrayView` where the type of the array is know beforehand. Doesn't try to infer the type. + +### Module instance runtime interface + +When compiling with `--exportRuntime`, the loader will expose the runtime interface (`__new`, `__pin`, `__unpin`, `__collect`) as well. + +## Convenience vs. efficiency + +Making the loader's API any more convenient has its tradeoffs. One would either have to include extended type information with the module itself or generate an additional JavaScript file of glue code that does (and hides) all the lifting. As such, one can consider the loader as a small and efficient building block that can do it all, yet does not sacrifice efficiency. If that's not exactly what you are looking for, take a look at more convenient tools below. Just remember that these have tradeoffs. + +### More convenient tools + +* [as-bind](https://github.com/torch2424/as-bind) is a library, built on top of the loader, to make passing high-level data structures between AssemblyScript and JavaScript more convenient. + +## Advanced usage + +### Direct memory access + +All of the above can be mixed with direct memory accesses on `myModule.exports.memory.buffer`, for instance by adhering to class layout. + +### TypeScript definitions + +The compiler is able to emit definitions using the `-d` command line option that are compatible with modules demangled by the loader, and these can be used for proper typings in development: + +```ts +// TypeScript +import type * as MyModule from "myModule"; // pointing at the generated d.ts + +loader.instantiate( + fetch("myModule.wasm"), + { ... } +).then(({ exports }) => { + ... +}) +``` diff --git a/lib/loader/index.d.ts b/lib/loader/index.d.ts index bc6854277a..39b3dd75ed 100644 --- a/lib/loader/index.d.ts +++ b/lib/loader/index.d.ts @@ -8,13 +8,14 @@ export interface ResultObject { /** WebAssembly imports with an optional env object and two levels of nesting. */ export type Imports = { - [key: string]: Record; + [key: string]: Record | undefined; env?: { memory?: WebAssembly.Memory; table?: WebAssembly.Table; seed?(): number; abort?(msg: number, file: number, line: number, column: number): void; trace?(msg: number, numArgs?: number, ...args: number[]): void; + mark?(): void; }; }; @@ -23,13 +24,6 @@ export interface ASUtil { memory?: WebAssembly.Memory; table?: WebAssembly.Table; - /** Explicit start function, if requested. */ - _start(): void; - /** Allocates a new string in the module's memory and returns a reference (pointer) to it. */ - __allocString(str: string): number; - /** Allocates a new array in the module's memory and returns a reference (pointer) to it. */ - __allocArray(id: number, values: ArrayLike): number; - /** Copies a string's value from the module's memory. */ __getString(ptr: number): string; /** Copies an ArrayBuffer's value from the module's memory. */ @@ -85,18 +79,24 @@ export interface ASUtil { /** Gets a live view on a Float64Array's values in the module's memory. */ __getFloat64ArrayView(ptr: number): Float64Array; - /** Retains a reference to a managed object externally, making sure that it doesn't become collected prematurely. Returns the pointer. */ - __retain(ptr: number): number; - /** Releases a previously retained reference to a managed object, allowing the runtime to collect it once its reference count reaches zero. */ - __release(ptr: number): void; - /** Forcefully resets the heap to its initial offset, effectively clearing dynamic memory. Stub runtime only. */ - __reset?(): void; + /** Gets a function from poiner which contain table's index. */ + __getFunction(ptr: number): ((...args: unknown[]) => unknown) | null; + + /** Allocates a new string in the module's memory and returns a reference (pointer) to it. */ + __newString(str: string): number; + /** Allocates a new ArrayBuffer in the module's memory and returns a reference (pointer) to it. */ + __newArrayBuffer(buf: ArrayBuffer): number; + /** Allocates a new array in the module's memory and returns a reference (pointer) to it. */ + __newArray(id: number, valuesOrCapacity?: Array | ArrayBufferView | number): number; + /** Allocates an instance of the class represented by the specified id. */ - __alloc(size: number, id: number): number; - /** Tests whether a managed object is an instance of the class represented by the specified base id. */ - __instanceof(ptr: number, baseId: number): boolean; - /** Forces a cycle collection. Only relevant if objects potentially forming reference cycles are used. */ - __collect(): void; + __new(size: number, id: number): number; + /** Pins a managed object externally, preventing it from becoming garbage collected. */ + __pin(ptr: number): number; + /** Unpins a managed object externally, allowing it to become garbage collected. */ + __unpin(ptr: number): void; + /** Performs a full garbage collection cycle. */ + __collect(incremental?: boolean): void; } /** Asynchronously instantiates an AssemblyScript module from anything that can be instantiated. */ diff --git a/lib/loader/index.js b/lib/loader/index.js index 85b757be93..3c97d7b741 100644 --- a/lib/loader/index.js +++ b/lib/loader/index.js @@ -1,13 +1,11 @@ -"use strict"; - // Runtime header offsets const ID_OFFSET = -8; const SIZE_OFFSET = -4; // Runtime ids -const ARRAYBUFFER_ID = 0; -const STRING_ID = 1; -// const ARRAYBUFFERVIEW_ID = 2; +// const OBJECT_ID = 0; +const ARRAYBUFFER_ID = 1; +const STRING_ID = 2; // Runtime type information const ARRAYBUFFERVIEW = 1 << 0; @@ -31,30 +29,41 @@ const VAL_MANAGED = 1 << 14; // Array(BufferView) layout const ARRAYBUFFERVIEW_BUFFER_OFFSET = 0; const ARRAYBUFFERVIEW_DATASTART_OFFSET = 4; -const ARRAYBUFFERVIEW_DATALENGTH_OFFSET = 8; +const ARRAYBUFFERVIEW_BYTELENGTH_OFFSET = 8; const ARRAYBUFFERVIEW_SIZE = 12; const ARRAY_LENGTH_OFFSET = 12; const ARRAY_SIZE = 16; +const E_NO_EXPORT_TABLE = "Operation requires compiling with --exportTable"; +const E_NO_EXPORT_RUNTIME = "Operation requires compiling with --exportRuntime"; +const F_NO_EXPORT_RUNTIME = () => { throw Error(E_NO_EXPORT_RUNTIME); }; + const BIGINT = typeof BigUint64Array !== "undefined"; const THIS = Symbol(); -const CHUNKSIZE = 1024; -/** Gets a string from an U32 and an U16 view on a memory. */ +const STRING_SMALLSIZE = 192; // break-even point in V8 +const STRING_CHUNKSIZE = 1024; // mitigate stack overflow +const utf16 = new TextDecoder("utf-16le", { fatal: true }); // != wtf16 + +/** polyfill for Object.hasOwn */ +Object.hasOwn = Object.hasOwn || function(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +}; + +/** Gets a string from memory. */ function getStringImpl(buffer, ptr) { - const U32 = new Uint32Array(buffer); - const U16 = new Uint16Array(buffer); - let length = U32[ptr + SIZE_OFFSET >>> 2] >>> 1; - let offset = ptr >>> 1; - if (length <= CHUNKSIZE) return String.fromCharCode.apply(String, U16.subarray(offset, offset + length)); - let parts = ''; - do { - const last = U16[offset + CHUNKSIZE - 1]; - const size = last >= 0xD800 && last < 0xDC00 ? CHUNKSIZE - 1 : CHUNKSIZE; - parts += String.fromCharCode.apply(String, U16.subarray(offset, offset += size)); - length -= size; - } while (length > CHUNKSIZE); - return parts + String.fromCharCode.apply(String, U16.subarray(offset, offset + length)); + let len = new Uint32Array(buffer)[ptr + SIZE_OFFSET >>> 2] >>> 1; + const wtf16 = new Uint16Array(buffer, ptr, len); + if (len <= STRING_SMALLSIZE) return String.fromCharCode(...wtf16); + try { + return utf16.decode(wtf16); + } catch { + let str = "", off = 0; + while (len - off > STRING_CHUNKSIZE) { + str += String.fromCharCode(...wtf16.subarray(off, off += STRING_CHUNKSIZE)); + } + return str + String.fromCharCode(...wtf16.subarray(off)); + } } /** Prepares the base module prior to instantiation. */ @@ -88,33 +97,32 @@ function postInstantiate(extendedExports, instance) { const exports = instance.exports; const memory = exports.memory; const table = exports.table; - const alloc = exports["__alloc"]; - const retain = exports["__retain"]; - const rttiBase = exports["__rtti_base"] || ~0; // oob if not present + const __new = exports.__new || F_NO_EXPORT_RUNTIME; + const __pin = exports.__pin || F_NO_EXPORT_RUNTIME; + const __unpin = exports.__unpin || F_NO_EXPORT_RUNTIME; + const __collect = exports.__collect || F_NO_EXPORT_RUNTIME; + const __rtti_base = exports.__rtti_base; + const getTypeinfoCount = __rtti_base ? arr => arr[__rtti_base >>> 2] : F_NO_EXPORT_RUNTIME; + + extendedExports.__new = __new; + extendedExports.__pin = __pin; + extendedExports.__unpin = __unpin; + extendedExports.__collect = __collect; /** Gets the runtime type info for the given id. */ - function getInfo(id) { + function getTypeinfo(id) { const U32 = new Uint32Array(memory.buffer); - const count = U32[rttiBase >>> 2]; - if ((id >>>= 0) >= count) throw Error(`invalid id: ${id}`); - return U32[(rttiBase + 4 >>> 2) + id * 2]; + if ((id >>>= 0) >= getTypeinfoCount(U32)) throw Error(`invalid id: ${id}`); + return U32[(__rtti_base + 4 >>> 2) + id]; } - /** Gets and validate runtime type info for the given id for array like objects */ + /** Gets and validates runtime type info for the given id for array like objects */ function getArrayInfo(id) { - const info = getInfo(id); + const info = getTypeinfo(id); if (!(info & (ARRAYBUFFERVIEW | ARRAY | STATICARRAY))) throw Error(`not an array: ${id}, flags=${info}`); return info; } - /** Gets the runtime base id for the given id. */ - function getBase(id) { - const U32 = new Uint32Array(memory.buffer); - const count = U32[rttiBase >>> 2]; - if ((id >>>= 0) >= count) throw Error(`invalid id: ${id}`); - return U32[(rttiBase + 4 >>> 2) + id * 2 + 1]; - } - /** Gets the runtime alignment of a collection's values. */ function getValueAlign(info) { return 31 - Math.clz32((info >>> VAL_ALIGN_OFFSET) & 31); // -1 if none @@ -125,19 +133,33 @@ function postInstantiate(extendedExports, instance) { // return 31 - Math.clz32((info >>> KEY_ALIGN_OFFSET) & 31); // -1 if none // } - /** Allocates a new string in the module's memory and returns its retained pointer. */ - function __allocString(str) { + /** Allocates a new string in the module's memory and returns its pointer. */ + function __newString(str) { + if (str == null) return 0; const length = str.length; - const ptr = alloc(length << 1, STRING_ID); + const ptr = __new(length << 1, STRING_ID); const U16 = new Uint16Array(memory.buffer); - for (var i = 0, p = ptr >>> 1; i < length; ++i) U16[p + i] = str.charCodeAt(i); + for (let i = 0, p = ptr >>> 1; i < length; ++i) U16[p + i] = str.charCodeAt(i); return ptr; } - extendedExports.__allocString = __allocString; + extendedExports.__newString = __newString; + + /** Allocates a new ArrayBuffer in the module's memory and returns its pointer. */ + function __newArrayBuffer(buf) { + if (buf == null) return 0; + const bufview = new Uint8Array(buf); + const ptr = __new(bufview.length, ARRAYBUFFER_ID); + const U8 = new Uint8Array(memory.buffer); + U8.set(bufview, ptr); + return ptr; + } + + extendedExports.__newArrayBuffer = __newArrayBuffer; /** Reads a string from the module's memory by its pointer. */ function __getString(ptr) { + if (!ptr) return null; const buffer = memory.buffer; const id = new Uint32Array(buffer)[ptr + ID_OFFSET >>> 2]; if (id !== STRING_ID) throw Error(`not a string: ${ptr}`); @@ -165,34 +187,43 @@ function postInstantiate(extendedExports, instance) { throw Error(`unsupported align: ${alignLog2}`); } - /** Allocates a new array in the module's memory and returns its retained pointer. */ - function __allocArray(id, values) { + /** Allocates a new array in the module's memory and returns its pointer. */ + function __newArray(id, valuesOrCapacity = 0) { + const input = valuesOrCapacity; const info = getArrayInfo(id); const align = getValueAlign(info); - const length = values.length; - const buf = alloc(length << align, info & STATICARRAY ? id : ARRAYBUFFER_ID); + const isArrayLike = typeof input !== "number"; + const length = isArrayLike ? input.length : input; + const buf = __new(length << align, info & STATICARRAY ? id : ARRAYBUFFER_ID); let result; if (info & STATICARRAY) { result = buf; } else { - const arr = alloc(info & ARRAY ? ARRAY_SIZE : ARRAYBUFFERVIEW_SIZE, id); + __pin(buf); + const arr = __new(info & ARRAY ? ARRAY_SIZE : ARRAYBUFFERVIEW_SIZE, id); + __unpin(buf); const U32 = new Uint32Array(memory.buffer); - U32[arr + ARRAYBUFFERVIEW_BUFFER_OFFSET >>> 2] = retain(buf); + U32[arr + ARRAYBUFFERVIEW_BUFFER_OFFSET >>> 2] = buf; U32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2] = buf; - U32[arr + ARRAYBUFFERVIEW_DATALENGTH_OFFSET >>> 2] = length << align; + U32[arr + ARRAYBUFFERVIEW_BYTELENGTH_OFFSET >>> 2] = length << align; if (info & ARRAY) U32[arr + ARRAY_LENGTH_OFFSET >>> 2] = length; result = arr; } - const view = getView(align, info & VAL_SIGNED, info & VAL_FLOAT); - if (info & VAL_MANAGED) { - for (let i = 0; i < length; ++i) view[(buf >>> align) + i] = retain(values[i]); - } else { - view.set(values, buf >>> align); + if (isArrayLike) { + const view = getView(align, info & VAL_SIGNED, info & VAL_FLOAT); + const start = buf >>> align; + if (info & VAL_MANAGED) { + for (let i = 0; i < length; ++i) { + view[start + i] = input[i]; + } + } else { + view.set(input, start); + } } return result; } - extendedExports.__allocArray = __allocArray; + extendedExports.__newArray = __newArray; /** Gets a live view on an array's values in the module's memory. Infers the array type from RTTI. */ function __getArrayView(arr) { @@ -231,6 +262,15 @@ function postInstantiate(extendedExports, instance) { extendedExports.__getArrayBuffer = __getArrayBuffer; + /** Gets a function from poiner which contain table's index. */ + function __getFunction(ptr) { + if (!table) throw Error(E_NO_EXPORT_TABLE); + const index = new Uint32Array(memory.buffer)[ptr >>> 2]; + return table.get(index); + } + + extendedExports.__getFunction = __getFunction; + /** Copies a typed array's values from the module's memory. */ function getTypedArray(Type, alignLog2, ptr) { return new Type(getTypedArrayView(Type, alignLog2, ptr)); @@ -240,8 +280,11 @@ function postInstantiate(extendedExports, instance) { function getTypedArrayView(Type, alignLog2, ptr) { const buffer = memory.buffer; const U32 = new Uint32Array(buffer); - const bufPtr = U32[ptr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2]; - return new Type(buffer, bufPtr, U32[bufPtr + SIZE_OFFSET >>> 2] >>> alignLog2); + return new Type( + buffer, + U32[ptr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2], + U32[ptr + ARRAYBUFFERVIEW_BYTELENGTH_OFFSET >>> 2] >>> alignLog2 + ); } /** Attach a set of get TypedArray and View functions to the exports. */ @@ -270,21 +313,6 @@ function postInstantiate(extendedExports, instance) { }); } - /** Tests whether an object is an instance of the class represented by the specified base id. */ - function __instanceof(ptr, baseId) { - const U32 = new Uint32Array(memory.buffer); - let id = U32[ptr + ID_OFFSET >>> 2]; - if (id <= U32[rttiBase >>> 2]) { - do { - if (id == baseId) return true; - id = getBase(id); - } while (id); - } - return false; - } - - extendedExports.__instanceof = __instanceof; - // Pull basic exports to extendedExports so code in preInstantiate can use them extendedExports.memory = extendedExports.memory || memory; extendedExports.table = extendedExports.table || table; @@ -302,7 +330,7 @@ function isModule(src) { } /** Asynchronously instantiates an AssemblyScript module from anything that can be instantiated. */ -async function instantiate(source, imports = {}) { +export async function instantiate(source, imports = {}) { if (isResponse(source = await source)) return instantiateStreaming(source, imports); const module = isModule(source) ? source : await WebAssembly.compile(source); const extended = preInstantiate(imports); @@ -311,10 +339,8 @@ async function instantiate(source, imports = {}) { return { module, instance, exports }; } -exports.instantiate = instantiate; - /** Synchronously instantiates an AssemblyScript module from a WebAssembly.Module or binary buffer. */ -function instantiateSync(source, imports = {}) { +export function instantiateSync(source, imports = {}) { const module = isModule(source) ? source : new WebAssembly.Module(source); const extended = preInstantiate(imports); const instance = new WebAssembly.Instance(module, imports); @@ -322,10 +348,8 @@ function instantiateSync(source, imports = {}) { return { module, instance, exports }; } -exports.instantiateSync = instantiateSync; - /** Asynchronously instantiates an AssemblyScript module from a response, i.e. as obtained by `fetch`. */ -async function instantiateStreaming(source, imports = {}) { +export async function instantiateStreaming(source, imports = {}) { if (!WebAssembly.instantiateStreaming) { return instantiate( isResponse(source = await source) @@ -340,22 +364,18 @@ async function instantiateStreaming(source, imports = {}) { return { ...result, exports }; } -exports.instantiateStreaming = instantiateStreaming; - /** Demangles an AssemblyScript module's exports to a friendly object structure. */ -function demangle(exports, extendedExports = {}) { - extendedExports = Object.create(extendedExports); +export function demangle(exports, extendedExports = {}) { const setArgumentsLength = exports["__argumentsLength"] ? length => { exports["__argumentsLength"].value = length; } : exports["__setArgumentsLength"] || exports["__setargc"] || (() => { /* nop */ }); - for (let internalName in exports) { - if (!Object.prototype.hasOwnProperty.call(exports, internalName)) continue; + for (let internalName of Object.keys(exports)) { const elem = exports[internalName]; let parts = internalName.split("."); let curr = extendedExports; while (parts.length > 1) { let part = parts.shift(); - if (!Object.prototype.hasOwnProperty.call(curr, part)) curr[part] = {}; + if (!Object.hasOwn(curr, part)) curr[part] = {}; curr = curr[part]; } let name = parts[0]; @@ -381,7 +401,7 @@ function demangle(exports, extendedExports = {}) { name = name.substring(hash + 1); curr = curr[className].prototype; if (/^(get|set):/.test(name)) { - if (!Object.prototype.hasOwnProperty.call(curr, name = name.substring(4))) { + if (!Object.hasOwn(curr, name = name.substring(4))) { let getter = exports[internalName.replace("set:", "get:")]; let setter = exports[internalName.replace("get:", "set:")]; Object.defineProperty(curr, name, { @@ -392,7 +412,7 @@ function demangle(exports, extendedExports = {}) { } } else { if (name === 'constructor') { - (curr[name] = (...args) => { + (curr[name] = function(...args) { setArgumentsLength(args.length); return elem(...args); }).original = elem; @@ -405,7 +425,7 @@ function demangle(exports, extendedExports = {}) { } } else { if (/^(get|set):/.test(name)) { - if (!Object.prototype.hasOwnProperty.call(curr, name = name.substring(4))) { + if (!Object.hasOwn(curr, name = name.substring(4))) { Object.defineProperty(curr, name, { get: exports[internalName.replace("set:", "get:")], set: exports[internalName.replace("get:", "set:")], @@ -425,4 +445,9 @@ function demangle(exports, extendedExports = {}) { return extendedExports; } -exports.demangle = demangle; +export default { + instantiate, + instantiateSync, + instantiateStreaming, + demangle +}; diff --git a/lib/loader/package-lock.json b/lib/loader/package-lock.json new file mode 100644 index 0000000000..a6d2d6962f --- /dev/null +++ b/lib/loader/package-lock.json @@ -0,0 +1,1355 @@ +{ + "name": "@assemblyscript/loader", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@assemblyscript/loader", + "version": "0.0.0", + "license": "Apache-2.0", + "devDependencies": { + "esm2umd": "^0.1.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.18.2", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001344", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz", + "integrity": "sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.141", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.141.tgz", + "integrity": "sha512-mfBcbqc0qc6RlxrsIgLG2wCqkiPAjEezHxGTu7p3dHHFOurH4EjS9rFZndX5axC8264rI1Pcbw8uQP39oZckeA==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esm2umd": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/esm2umd/-/esm2umd-0.1.2.tgz", + "integrity": "sha512-SoCump2d/jzZJ9/0ZY/2AVOWJbyd5bGOMlRSSNqChPvQrwa9Rqzo9wPP+kT77Gys03Sb+rIgseAReVvIrqvglA==", + "dev": true, + "dependencies": { + "@babel/core": "^7", + "@babel/plugin-transform-modules-commonjs": "^7" + }, + "bin": { + "esm2umd": "bin/esm2umd.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "dev": true + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "requires": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + } + }, + "@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true + }, + "@babel/core": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "dev": true, + "requires": { + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "requires": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", + "dev": true, + "requires": { + "@babel/types": "^7.18.2" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + } + }, + "@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "dev": true + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.18.2", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + } + }, + "@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caniuse-lite": { + "version": "1.0.30001344", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz", + "integrity": "sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "electron-to-chromium": { + "version": "1.4.141", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.141.tgz", + "integrity": "sha512-mfBcbqc0qc6RlxrsIgLG2wCqkiPAjEezHxGTu7p3dHHFOurH4EjS9rFZndX5axC8264rI1Pcbw8uQP39oZckeA==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "esm2umd": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/esm2umd/-/esm2umd-0.1.2.tgz", + "integrity": "sha512-SoCump2d/jzZJ9/0ZY/2AVOWJbyd5bGOMlRSSNqChPvQrwa9Rqzo9wPP+kT77Gys03Sb+rIgseAReVvIrqvglA==", + "dev": true, + "requires": { + "@babel/core": "^7", + "@babel/plugin-transform-modules-commonjs": "^7" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node-releases": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } +} diff --git a/lib/loader/package.json b/lib/loader/package.json index 09449c325d..c62c4dc63d 100644 --- a/lib/loader/package.json +++ b/lib/loader/package.json @@ -11,6 +11,9 @@ ], "version": "0.0.0", "author": "Daniel Wirtz ", + "contributors": [ + "MaxGraey " + ], "license": "Apache-2.0", "homepage": "https://assemblyscript.org", "repository": { @@ -21,18 +24,30 @@ "bugs": { "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, - "main": "index.js", + "type": "module", + "main": "./umd/index.js", "types": "index.d.ts", + "exports": { + "import": "./index.js", + "require": "./umd/index.js" + }, "scripts": { "asbuild": "npm run asbuild:default && npm run asbuild:legacy", - "asbuild:default": "node ../../bin/asc tests/assembly/index.ts -b tests/build/default.wasm", - "asbuild:legacy": "node ../../bin/asc tests/assembly/index.ts --disable mutable-globals -b tests/build/legacy.wasm", - "test": "node tests" + "asbuild:default": "node ../../bin/asc tests/assembly/index.ts --outFile tests/build/default.wasm --exportRuntime --exportTable", + "asbuild:legacy": "node ../../bin/asc tests/assembly/index.ts --disable mutable-globals --outFile tests/build/legacy.wasm --exportRuntime --exportTable", + "build": "npx esm2umd loader index.js > umd/index.js", + "test": "node tests && node tests/umd" }, "files": [ "index.d.ts", "index.js", "package.json", + "umd/index.d.ts", + "umd/index.js", + "umd/package.json", "README.md" - ] -} \ No newline at end of file + ], + "devDependencies": { + "esm2umd": "^0.1.2" + } +} diff --git a/lib/loader/tests/assembly/index.ts b/lib/loader/tests/assembly/index.ts index af9801e6af..f1cd80592a 100644 --- a/lib/loader/tests/assembly/index.ts +++ b/lib/loader/tests/assembly/index.ts @@ -40,13 +40,13 @@ export class Car { } export function sum(arr: Int32Array): i32 { - var v = 0; + let v = 0; for (let i = 0, k = arr.length; i < k; ++i) v += arr[i]; return v; } export function sumStatic(arr: StaticArray): i32 { - var v = 0; + let v = 0; for (let i = 0, k = arr.length; i < k; ++i) v += arr[i]; return v; } @@ -69,6 +69,10 @@ export function dotrace(num: f64): void { trace("The answer is", 1, num); } +export function getVaraddFunc(): (a: i32, b: i32) => i32 { + return varadd; +} + export const UINT8ARRAY_ID = idof(); export const INT16ARRAY_ID = idof(); export const UINT16ARRAY_ID = idof(); diff --git a/lib/loader/tests/build/default.wasm b/lib/loader/tests/build/default.wasm index af296fe028..b9188bb52e 100644 Binary files a/lib/loader/tests/build/default.wasm and b/lib/loader/tests/build/default.wasm differ diff --git a/lib/loader/tests/build/legacy.wasm b/lib/loader/tests/build/legacy.wasm index af296fe028..b9188bb52e 100644 Binary files a/lib/loader/tests/build/legacy.wasm and b/lib/loader/tests/build/legacy.wasm differ diff --git a/lib/loader/tests/index.html b/lib/loader/tests/index.html index 68a98e4c22..7f716575ce 100644 --- a/lib/loader/tests/index.html +++ b/lib/loader/tests/index.html @@ -5,39 +5,39 @@ if (!c) throw Error("assertion failed"); } (async () => { - var module; + let module; - module = await exports.instantiate(fetch("./build/untouched.wasm")); + module = await exports.instantiate(fetch("./build/debug.wasm")); assert(module.memory); - module = await exports.instantiate(await fetch("./build/untouched.wasm")); + module = await exports.instantiate(await fetch("./build/debug.wasm")); assert(module.memory); - module = await exports.instantiate((await fetch("./build/untouched.wasm")).arrayBuffer()); + module = await exports.instantiate((await fetch("./build/debug.wasm")).arrayBuffer()); assert(module.memory); - module = await exports.instantiate(await (await fetch("./build/untouched.wasm")).arrayBuffer()); + module = await exports.instantiate(await (await fetch("./build/debug.wasm")).arrayBuffer()); assert(module.memory); - module = await exports.instantiateStreaming(fetch("./build/untouched.wasm")); + module = await exports.instantiateStreaming(fetch("./build/debug.wasm")); assert(module.memory); - module = await exports.instantiateStreaming(await fetch("./build/untouched.wasm")); + module = await exports.instantiateStreaming(await fetch("./build/debug.wasm")); assert(module.memory); - var instantiateStreaming = WebAssembly.instantiateStreaming; + let instantiateStreaming = WebAssembly.instantiateStreaming; delete WebAssembly.instantiateStreaming; - module = await exports.instantiate(fetch("./build/untouched.wasm")); + module = await exports.instantiate(fetch("./build/debug.wasm")); assert(module.memory); - module = await exports.instantiate(await fetch("./build/untouched.wasm")); + module = await exports.instantiate(await fetch("./build/debug.wasm")); assert(module.memory); - module = await exports.instantiateStreaming(fetch("./build/untouched.wasm")); + module = await exports.instantiateStreaming(fetch("./build/debug.wasm")); assert(module.memory); - module = await exports.instantiateStreaming(await fetch("./build/untouched.wasm")); + module = await exports.instantiateStreaming(await fetch("./build/debug.wasm")); assert(module.memory); WebAssembly.instantiateStreaming = instantiateStreaming; diff --git a/lib/loader/tests/index.js b/lib/loader/tests/index.js index 72dc1996c6..48d008b0da 100644 --- a/lib/loader/tests/index.js +++ b/lib/loader/tests/index.js @@ -1,8 +1,12 @@ -var fs = require("fs"); -var assert = require("assert"); -var inspect = require("util").inspect; +import fs from "fs"; +import assert from "assert"; +import { inspect } from "util"; +import loader from "../index.js"; +import { dirname } from "path"; +import { fileURLToPath } from "url"; -var loader = require(".."); +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); test("default.wasm"); test("legacy.wasm"); @@ -10,91 +14,119 @@ test("legacy.wasm"); testInstantiate("default.wasm"); testInstantiate("legacy.wasm"); +async function wrapToResponse(source) { + return new Response(await source, { + status: 200, + headers: new Headers([["Content-Type", "application/wasm"]]) + }); +} + function test(file) { - var buffer = fs.readFileSync(__dirname + "/build/" + file); - var result = loader.instantiateSync(buffer, {}); + let buffer = fs.readFileSync(__dirname + "/build/" + file); + let result = loader.instantiateSync(buffer, {}); const exports = result.exports; console.log(inspect(exports, true, 100, true)); // should export memory assert(exports.memory instanceof WebAssembly.Memory); - assert(typeof exports.memory.compare === "function"); + + // NOTE: Namespace exports have been removed in 0.20 + // assert(typeof exports.memory.compare === "function"); // should be able to get an exported string assert.strictEqual(exports.__getString(exports.COLOR), "red"); - // should be able to allocate and work with a new string + // should be able to allocate and work with a new small string { let str = "Hello world!𤭢"; - let ref = exports.__retain(exports.__allocString(str)); + let ref = exports.__newString(str); + assert.strictEqual(exports.__getString(ref), str); + assert.strictEqual(exports.strlen(ref), str.length); + } + + // should be able to allocate and work with a new small ArrayBuffer + { + let input = new Uint8Array([1, 2, 3, 4]); + let bufPtr = exports.__newArrayBuffer(input.buffer); + let output = new Uint8Array(exports.__getArrayBuffer(bufPtr)); + + assert.deepStrictEqual(output, input); + } + + // should be able to allocate and work with a new big string + { + let str = ` + ∀ ∁ ∂ ∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏ ∐ ∑ − ∓ ∔ ∕ ∖ ∗ ∘ ∙ √ ∛ + ∜ ∝ ∞ ∟ ∠ ∡ ∢ ∣ ∤ ∥ ∦ ∧ ∨ ∩ ∪ ∫ ∬ ∭ ∮ ∯ ∰ ∱ ∲ ∳ ∴ ∵ ∶ ∷ + ∸ ∹ ∺ ∻ ∼ ∽ ∾ ∿ ≀ ≁ ≂ ≃ ≄ ≅ ≆ ≇ ≈ ≉ ≊ ≋ ≌ ≍ ≎ ≏ ≐ ≑ ≒ ≓ + ≔ ≕ ≖ ≗ ≘ ≙ ≚ ≛ ≜ ≝ ≞ ≟ ≠ ≡ ≢ ≣ ≤ ≥ ≦ ≧ ≨ ≩ ≪ ≫ ≬ ≭ ≮ ≯ + ≰ ≱ ≲ ≳ ≴ ≵ ≶ ≷ ≸ ≹ ≺ ≻ ≼ ≽ ≾ ≿ + `; + let ref = exports.__newString(str); + assert.strictEqual(exports.__getString(ref), str); + assert.strictEqual(exports.strlen(ref), str.length); + } + + // should be able to allocate and work with a string containing an isolated high surrogate + { + let str = "𝄞".substring(0, 1); + let ref = exports.__newString(str); + assert.strictEqual(exports.__getString(ref), str); + assert.strictEqual(exports.strlen(ref), str.length); + } + + // should be able to allocate and work with a string containing an isolated low surrogate + { + let str = "𝄞".substring(1); + let ref = exports.__newString(str); assert.strictEqual(exports.__getString(ref), str); assert.strictEqual(exports.strlen(ref), str.length); - exports.__release(ref); } // should be able to allocate a typed array { let arr = [1, 2, 3, 4, 5, 0x80000000 | 0]; - let ref = exports.__retain(exports.__allocArray(exports.INT32ARRAY_ID, arr)); - assert(exports.__instanceof(ref, exports.INT32ARRAY_ID)); + let ref = exports.__newArray(exports.INT32ARRAY_ID, arr); // should be able to get the values of an array - assert.deepEqual(exports.__getArray(ref), arr); + assert.deepStrictEqual(exports.__getArray(ref), arr); // should be able to get a view on an array - assert.deepEqual(exports.__getArrayView(ref), new Int32Array(arr)); + assert.deepStrictEqual(exports.__getArrayView(ref), new Int32Array(arr)); // should be able to sum up its values assert.strictEqual(exports.sum(ref), arr.reduce((a, b) => (a + b) | 0, 0) | 0); - - // should be able to release no longer needed references - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } } // should be able to allocate a typed array { let arr = [1, 2, 3, 4, 5, 0x80000000 | 0]; - let ref = exports.__retain(exports.__allocArray(exports.STATICARRAYI32_ID, arr)); - assert(exports.__instanceof(ref, exports.STATICARRAYI32_ID)); + let ref = exports.__newArray(exports.STATICARRAYI32_ID, arr); // should be able to get the values of an array - assert.deepEqual(exports.__getArray(ref), arr); + assert.deepStrictEqual(exports.__getArray(ref), arr); // should be able to get a view on an array - assert.deepEqual(exports.__getArrayView(ref), new Int32Array(arr)); + assert.deepStrictEqual(exports.__getArrayView(ref), new Int32Array(arr)); // should be able to sum up its values assert.strictEqual(exports.sumStatic(ref), arr.reduce((a, b) => (a + b) | 0, 0) | 0); - - // should be able to release no longer needed references - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } } /* { let arrU8Arr = new Uint8Array([0, 1, 2]); - let refU8Arr = module.__retain(module.__allocUint8Array(arrU8Arr)); - assert(module.__instanceof(refU8Arr, module.UINT8ARRAY_ID)); - assert.deepEqual(module.__getUint8Array(refU8Arr), arrU8Arr); - module.__release(refU8Arr); - try { module.__release(refU8Arr); assert(false); } catch (e) {}; + let refU8Arr = module.__newUint8Array(arrU8Arr); + assert.deepStrictEqual(module.__getUint8Array(refU8Arr), arrU8Arr); let arrU16Arr = new Uint16Array([0, 0x7FFF, 0xFFFF]); - let refU16Arr = module.__retain(module.__allocUint16Array(arrU16Arr)); - assert(module.__instanceof(refU16Arr, module.UINT16ARRAY_ID)); - assert.deepEqual(module.__getUint16Array(refU16Arr), arrU16Arr); - module.__release(refU16Arr); - try { module.__release(refU16Arr); assert(false); } catch (e) {}; + let refU16Arr = module.__newUint16Array(arrU16Arr); + assert.deepStrictEqual(module.__getUint16Array(refU16Arr), arrU16Arr); let arrI16Arr = new Int16Array([0, -1, -2]); - let refI16Arr = module.__retain(module.__allocInt16Array(arrI16Arr)); - assert(module.__instanceof(refI16Arr, module.INT16ARRAY_ID)); - assert.deepEqual(module.__getInt16Array(refI16Arr), arrI16Arr); - module.__release(refI16Arr); - try { module.__release(refI16Arr); assert(false); } catch (e) {}; + let refI16Arr = module.__newInt16Array(arrI16Arr); + assert.deepStrictEqual(module.__getInt16Array(refI16Arr), arrI16Arr); } */ @@ -102,103 +134,97 @@ function test(file) { { let values = [0, 255, 127]; let arr = new Uint8Array(values); - let ref = exports.__retain(exports.__allocArray(exports.UINT8ARRAY_ID, arr)); - assert(exports.__instanceof(ref, exports.UINT8ARRAY_ID)); - assert.deepEqual(exports.__getUint8Array(ref), arr); - assert.deepEqual(exports.__getUint8ArrayView(ref), arr); - assert.deepEqual(exports.__getArray(ref), values); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + let ref = exports.__newArray(exports.UINT8ARRAY_ID, arr); + assert.deepStrictEqual(exports.__getUint8Array(ref), arr); + assert.deepStrictEqual(exports.__getUint8ArrayView(ref), arr); + assert.deepStrictEqual(exports.__getArray(ref), values); } // should be able to distinguish between signed and unsigned for static array layout { let arr = [0, 255, 127]; - let ref = exports.__retain(exports.__allocArray(exports.STATICARRAYU8_ID, arr)); - assert(exports.__instanceof(ref, exports.STATICARRAYU8_ID)); - assert.deepEqual(exports.__getArray(ref), arr); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + let ref = exports.__newArray(exports.STATICARRAYU8_ID, arr); + assert.deepStrictEqual(exports.__getArray(ref), arr); } // should be able to distinguish between signed and unsigned { let values = [0, 0xFFFF, -0x00FF]; let arr = new Int16Array(values); - let ref = exports.__retain(exports.__allocArray(exports.INT16ARRAY_ID, arr)); - assert(exports.__instanceof(ref, exports.INT16ARRAY_ID)); - assert.deepEqual(exports.__getInt16Array(ref), arr); - assert.deepEqual(exports.__getInt16ArrayView(ref), arr); - assert.deepEqual(exports.__getArray(ref), [0, -1, -255]); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + let ref = exports.__newArray(exports.INT16ARRAY_ID, arr); + assert.deepStrictEqual(exports.__getInt16Array(ref), arr); + assert.deepStrictEqual(exports.__getInt16ArrayView(ref), arr); + assert.deepStrictEqual(exports.__getArray(ref), [0, -1, -255]); } // should be able to distinguish between signed and unsigned for static array layout { let arr = [0, 0xFFFF, -0x00FF]; - let ref = exports.__retain(exports.__allocArray(exports.STATICARRAYI16_ID, arr)); - assert(exports.__instanceof(ref, exports.STATICARRAYI16_ID)); - assert.deepEqual(exports.__getArray(ref), [0, -1, -255]); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + let ref = exports.__newArray(exports.STATICARRAYI16_ID, arr); + assert.deepStrictEqual(exports.__getArray(ref), [0, -1, -255]); } // should be able to distinguish between signed and unsigned { let values = [1, -1 >>> 0, 0x80000000]; let arr = new Uint32Array(values); - let ref = exports.__retain(exports.__allocArray(exports.UINT32ARRAY_ID, arr)); - assert(exports.__instanceof(ref, exports.UINT32ARRAY_ID)); - assert.deepEqual(exports.__getUint32Array(ref), arr); - assert.deepEqual(exports.__getUint32ArrayView(ref), arr); - assert.deepEqual(exports.__getArray(ref), values); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + let ref = exports.__newArray(exports.UINT32ARRAY_ID, arr); + assert.deepStrictEqual(exports.__getUint32Array(ref), arr); + assert.deepStrictEqual(exports.__getUint32ArrayView(ref), arr); + assert.deepStrictEqual(exports.__getArray(ref), values); } // should be able to distinguish between signed and unsigned with static array layout { let arr = [1, -1 >>> 0, 0x80000000]; - let ref = exports.__retain(exports.__allocArray(exports.STATICARRAYU32_ID, arr)); - assert(exports.__instanceof(ref, exports.STATICARRAYU32_ID)); - assert.deepEqual(exports.__getArray(ref), arr); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + let ref = exports.__newArray(exports.STATICARRAYU32_ID, arr); + assert.deepStrictEqual(exports.__getArray(ref), arr); } // should be able to distinguish between integer and float { let values = [0.0, 1.5, 2.5]; let arr = new Float32Array(values); - let ref = exports.__retain(exports.__allocArray(exports.FLOAT32ARRAY_ID, arr)); - assert(exports.__instanceof(ref, exports.FLOAT32ARRAY_ID)); - assert.deepEqual(exports.__getFloat32Array(ref), arr); - assert.deepEqual(exports.__getFloat32ArrayView(ref), arr); - assert.deepEqual(exports.__getArray(ref), values); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + let ref = exports.__newArray(exports.FLOAT32ARRAY_ID, arr); + assert.deepStrictEqual(exports.__getFloat32Array(ref), arr); + assert.deepStrictEqual(exports.__getFloat32ArrayView(ref), arr); + assert.deepStrictEqual(exports.__getArray(ref), values); } // should be able to distinguish between integer and float static arrays { let arr = [0.0, 1.5, 2.5]; - let ref = exports.__retain(exports.__allocArray(exports.STATICARRAYF32_ID, arr)); - assert(exports.__instanceof(ref, exports.STATICARRAYF32_ID)); - assert.deepEqual(exports.__getArray(ref), arr); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + let ref = exports.__newArray(exports.STATICARRAYF32_ID, arr); + assert.deepStrictEqual(exports.__getArray(ref), arr); + } + + // should be able to create empty arrays + { + let ref = exports.__newArray(exports.ARRAYI32_ID); + assert.deepStrictEqual(exports.__getArray(ref), []); + } + + // should be able to create arrays with capacity + { + let ref = exports.__newArray(exports.ARRAYI32_ID, 32); + assert.strictEqual(exports.__getArray(ref).length, 32); } // should be able to work with normal arrays { let arr = [1, 2, 3, 4, 5]; - let ref = exports.__retain(exports.__allocArray(exports.ARRAYI32_ID, arr)); - assert(exports.__instanceof(ref, exports.ARRAYI32_ID)); + let ref = exports.__newArray(exports.ARRAYI32_ID, arr); exports.changeLength(ref, 3); - assert.deepEqual(exports.__getArray(ref), [1, 2, 3]); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + assert.deepStrictEqual(exports.__getArray(ref), [1, 2, 3]); + } + + // should be able to pin references externally + { + let ptr = exports.__newString("test"); + exports.__pin(ptr); + try { exports.__pin(ptr); assert(false); } catch (e) { /* nop */ } + exports.__unpin(ptr); + try { exports.__unpin(ptr); assert(false); } catch (e) { /* nop */ } } // should be able to correctly call a function with variable arguments @@ -209,7 +235,7 @@ function test(file) { // TBD: table is no more exported by default to allow more optimizations // should be able to get a function from the table and just call it with variable arguments - // var fn = module.getFunction(module.varadd_ref); + // let fn = module.getFunction(module.varadd_ref); // assert.strictEqual(fn(), 3); // assert.strictEqual(fn(2, 3), 5); // assert.strictEqual(fn(2), 4); @@ -218,49 +244,61 @@ function test(file) { // ref = module.newFunction(module.varadd); // assert.strictEqual(module.calladd(ref, 2, 3), 5); + // NOTE: Class exports have been removed in 0.20 // should be able to use a class - var car = new exports.Car(5); - assert.strictEqual(car.numDoors, 5); - assert.strictEqual(car.isDoorsOpen, 0); - car.openDoors(); - assert.strictEqual(car.isDoorsOpen, 1); - car.closeDoors(); - assert.strictEqual(car.isDoorsOpen, 0); - exports.__release(car); // uses Car.prototype.valueOf to obtain `thisPtr` + // let car = new exports.Car(5); + // assert.strictEqual(car.numDoors, 5); + // assert.strictEqual(car.isDoorsOpen, 0); + // car.openDoors(); + // assert.strictEqual(car.isDoorsOpen, 1); + // car.closeDoors(); + // assert.strictEqual(car.isDoorsOpen, 0); + // assert(typeof +car === "number"); // uses Car.prototype.valueOf to obtain `thisPtr` + + // should be able to return a function + { + const addFunc = exports.__getFunction(exports.getVaraddFunc()); + assert(typeof addFunc === "function"); + assert.strictEqual(addFunc(1, 2), 3); + + const invalidFunc = exports.__getFunction(0); + assert(invalidFunc == null); + } // should be able to use trace exports.dotrace(42); // should be able to mutate an array in place using getArrayView { - let ptr = exports.__retain(exports.__allocArray(exports.FLOAT32ARRAY_ID, [1, 2, 3])); + let ptr = exports.__newArray(exports.FLOAT32ARRAY_ID, [1, 2, 3]); let view = exports.__getArrayView(ptr); - assert.deepEqual(view, new Float32Array([1, 2, 3])); + assert.deepStrictEqual(view, new Float32Array([1, 2, 3])); exports.modifyFloat32Array(ptr, 0, 4); - assert.deepEqual(view, new Float32Array([4, 2, 3])); - exports.__release(ptr); + assert.deepStrictEqual(view, new Float32Array([4, 2, 3])); } // should be able to mutate an array in place using getFloat32Array { - let ptr = exports.newFloat32Array(3); // returns are pre-retained + let ptr = exports.newFloat32Array(3); let view = exports.__getFloat32ArrayView(ptr); let arr = exports.__getFloat32Array(ptr); - assert.deepEqual(view, new Float32Array([0, 0, 0])); - assert.deepEqual(arr, new Float32Array([0, 0, 0])); + assert.deepStrictEqual(view, new Float32Array([0, 0, 0])); + assert.deepStrictEqual(arr, new Float32Array([0, 0, 0])); exports.modifyFloat32Array(ptr, 0, 3); exports.modifyFloat32Array(ptr, 1, 2); exports.modifyFloat32Array(ptr, 2, 1); - assert.deepEqual(view, new Float32Array([3, 2, 1])); - assert.deepEqual(arr, new Float32Array([0, 0, 0])); - exports.__release(ptr); + assert.deepStrictEqual(view, new Float32Array([3, 2, 1])); + assert.deepStrictEqual(arr, new Float32Array([0, 0, 0])); } } function testInstantiate(file) { // should be able to instantiate from a buffer (async () => { - const { exports, instance, module } = await loader.instantiate(fs.readFileSync(__dirname + "/build/" + file), {}); + const { exports, instance, module } = await loader.instantiate( + fs.readFileSync(__dirname + "/build/" + file), + {} + ); assert(exports.memory); assert(instance && instance instanceof WebAssembly.Instance); assert(module && module instanceof WebAssembly.Module); @@ -268,8 +306,10 @@ function testInstantiate(file) { // should be able to instantiate from a wasm module (async () => { - const wasmModule = new WebAssembly.Module(fs.readFileSync(__dirname + "/build/" + file)); - const { exports, instance, module } = await loader.instantiate(wasmModule, {}); + const { exports, instance, module } = await loader.instantiate( + new WebAssembly.Module(fs.readFileSync(__dirname + "/build/" + file)), + {} + ); assert(exports.memory); assert(instance && instance instanceof WebAssembly.Instance); assert(module && module instanceof WebAssembly.Module); @@ -277,7 +317,10 @@ function testInstantiate(file) { // should be able to instantiate from a promise yielding a buffer (async () => { - const { exports, instance, module } = await loader.instantiate(fs.promises.readFile(__dirname + "/build/" + file), {}); + const { exports, instance, module } = await loader.instantiate( + fs.promises.readFile(__dirname + "/build/" + file), + {} + ); assert(exports.memory); assert(instance && instance instanceof WebAssembly.Instance); assert(module && module instanceof WebAssembly.Module); @@ -285,9 +328,12 @@ function testInstantiate(file) { // should be able to mimic instantiateStreaming under node (for now) (async () => { - const { exports, instance, module } = await loader.instantiateStreaming(fs.promises.readFile(__dirname + "/build/" + file), {}); + const { exports, instance, module } = await loader.instantiateStreaming( + wrapToResponse(fs.promises.readFile(__dirname + "/build/" + file)), + {} + ); assert(exports.memory); assert(instance && instance instanceof WebAssembly.Instance); assert(module && module instanceof WebAssembly.Module); })(); -} \ No newline at end of file +} diff --git a/lib/loader/tests/umd/index.js b/lib/loader/tests/umd/index.js new file mode 100644 index 0000000000..accb854ec3 --- /dev/null +++ b/lib/loader/tests/umd/index.js @@ -0,0 +1,4 @@ +const assert = require("assert"); +const loader = require("../../umd"); + +assert(typeof loader.instantiate === "function"); diff --git a/lib/loader/tests/umd/package.json b/lib/loader/tests/umd/package.json new file mode 100644 index 0000000000..5bbefffbab --- /dev/null +++ b/lib/loader/tests/umd/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/lib/loader/umd/index.d.ts b/lib/loader/umd/index.d.ts new file mode 100644 index 0000000000..f1c27f20e8 --- /dev/null +++ b/lib/loader/umd/index.d.ts @@ -0,0 +1 @@ +export * from "../index"; diff --git a/lib/loader/umd/index.js b/lib/loader/umd/index.js new file mode 100644 index 0000000000..3625fc2cc7 --- /dev/null +++ b/lib/loader/umd/index.js @@ -0,0 +1,541 @@ +// GENERATED FILE. DO NOT EDIT. +var loader = (function(exports) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.instantiate = instantiate; + exports.instantiateSync = instantiateSync; + exports.instantiateStreaming = instantiateStreaming; + exports.demangle = demangle; + exports.default = void 0; + // Runtime header offsets + const ID_OFFSET = -8; + const SIZE_OFFSET = -4; // Runtime ids + // const OBJECT_ID = 0; + + const ARRAYBUFFER_ID = 1; + const STRING_ID = 2; // Runtime type information + + const ARRAYBUFFERVIEW = 1 << 0; + const ARRAY = 1 << 1; + const STATICARRAY = 1 << 2; // const SET = 1 << 3; + // const MAP = 1 << 4; + + const VAL_ALIGN_OFFSET = 6; // const VAL_ALIGN = 1 << VAL_ALIGN_OFFSET; + + const VAL_SIGNED = 1 << 11; + const VAL_FLOAT = 1 << 12; // const VAL_NULLABLE = 1 << 13; + + const VAL_MANAGED = 1 << 14; // const KEY_ALIGN_OFFSET = 15; + // const KEY_ALIGN = 1 << KEY_ALIGN_OFFSET; + // const KEY_SIGNED = 1 << 20; + // const KEY_FLOAT = 1 << 21; + // const KEY_NULLABLE = 1 << 22; + // const KEY_MANAGED = 1 << 23; + // Array(BufferView) layout + + const ARRAYBUFFERVIEW_BUFFER_OFFSET = 0; + const ARRAYBUFFERVIEW_DATASTART_OFFSET = 4; + const ARRAYBUFFERVIEW_BYTELENGTH_OFFSET = 8; + const ARRAYBUFFERVIEW_SIZE = 12; + const ARRAY_LENGTH_OFFSET = 12; + const ARRAY_SIZE = 16; + const E_NO_EXPORT_TABLE = "Operation requires compiling with --exportTable"; + const E_NO_EXPORT_RUNTIME = "Operation requires compiling with --exportRuntime"; + + const F_NO_EXPORT_RUNTIME = () => { + throw Error(E_NO_EXPORT_RUNTIME); + }; + + const BIGINT = typeof BigUint64Array !== "undefined"; + const THIS = Symbol(); + const STRING_SMALLSIZE = 192; // break-even point in V8 + + const STRING_CHUNKSIZE = 1024; // mitigate stack overflow + + const utf16 = new TextDecoder("utf-16le", { + fatal: true + }); // != wtf16 + + /** polyfill for Object.hasOwn */ + + Object.hasOwn = Object.hasOwn || function (obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + }; + /** Gets a string from memory. */ + + + function getStringImpl(buffer, ptr) { + let len = new Uint32Array(buffer)[ptr + SIZE_OFFSET >>> 2] >>> 1; + const wtf16 = new Uint16Array(buffer, ptr, len); + if (len <= STRING_SMALLSIZE) return String.fromCharCode(...wtf16); + + try { + return utf16.decode(wtf16); + } catch { + let str = "", + off = 0; + + while (len - off > STRING_CHUNKSIZE) { + str += String.fromCharCode(...wtf16.subarray(off, off += STRING_CHUNKSIZE)); + } + + return str + String.fromCharCode(...wtf16.subarray(off)); + } + } + /** Prepares the base module prior to instantiation. */ + + + function preInstantiate(imports) { + const extendedExports = {}; + + function getString(memory, ptr) { + if (!memory) return ""; + return getStringImpl(memory.buffer, ptr); + } // add common imports used by stdlib for convenience + + + const env = imports.env = imports.env || {}; + + env.abort = env.abort || function abort(msg, file, line, colm) { + const memory = extendedExports.memory || env.memory; // prefer exported, otherwise try imported + + throw Error(`abort: ${getString(memory, msg)} at ${getString(memory, file)}:${line}:${colm}`); + }; + + env.trace = env.trace || function trace(msg, n, ...args) { + const memory = extendedExports.memory || env.memory; + console.log(`trace: ${getString(memory, msg)}${n ? " " : ""}${args.slice(0, n).join(", ")}`); + }; + + env.seed = env.seed || Date.now; + imports.Math = imports.Math || Math; + imports.Date = imports.Date || Date; + return extendedExports; + } + /** Prepares the final module once instantiation is complete. */ + + + function postInstantiate(extendedExports, instance) { + const exports = instance.exports; + const memory = exports.memory; + const table = exports.table; + + const __new = exports.__new || F_NO_EXPORT_RUNTIME; + + const __pin = exports.__pin || F_NO_EXPORT_RUNTIME; + + const __unpin = exports.__unpin || F_NO_EXPORT_RUNTIME; + + const __collect = exports.__collect || F_NO_EXPORT_RUNTIME; + + const __rtti_base = exports.__rtti_base; + const getTypeinfoCount = __rtti_base ? arr => arr[__rtti_base >>> 2] : F_NO_EXPORT_RUNTIME; + extendedExports.__new = __new; + extendedExports.__pin = __pin; + extendedExports.__unpin = __unpin; + extendedExports.__collect = __collect; + /** Gets the runtime type info for the given id. */ + + function getTypeinfo(id) { + const U32 = new Uint32Array(memory.buffer); + if ((id >>>= 0) >= getTypeinfoCount(U32)) throw Error(`invalid id: ${id}`); + return U32[(__rtti_base + 4 >>> 2) + id]; + } + /** Gets and validates runtime type info for the given id for array like objects */ + + + function getArrayInfo(id) { + const info = getTypeinfo(id); + if (!(info & (ARRAYBUFFERVIEW | ARRAY | STATICARRAY))) throw Error(`not an array: ${id}, flags=${info}`); + return info; + } + /** Gets the runtime alignment of a collection's values. */ + + + function getValueAlign(info) { + return 31 - Math.clz32(info >>> VAL_ALIGN_OFFSET & 31); // -1 if none + } + /** Gets the runtime alignment of a collection's keys. */ + // function getKeyAlign(info) { + // return 31 - Math.clz32((info >>> KEY_ALIGN_OFFSET) & 31); // -1 if none + // } + + /** Allocates a new string in the module's memory and returns its pointer. */ + + + function __newString(str) { + if (str == null) return 0; + const length = str.length; + + const ptr = __new(length << 1, STRING_ID); + + const U16 = new Uint16Array(memory.buffer); + + for (let i = 0, p = ptr >>> 1; i < length; ++i) U16[p + i] = str.charCodeAt(i); + + return ptr; + } + + extendedExports.__newString = __newString; + /** Allocates a new ArrayBuffer in the module's memory and returns its pointer. */ + + function __newArrayBuffer(buf) { + if (buf == null) return 0; + const bufview = new Uint8Array(buf); + + const ptr = __new(bufview.length, ARRAYBUFFER_ID); + + const U8 = new Uint8Array(memory.buffer); + U8.set(bufview, ptr); + return ptr; + } + + extendedExports.__newArrayBuffer = __newArrayBuffer; + /** Reads a string from the module's memory by its pointer. */ + + function __getString(ptr) { + if (!ptr) return null; + const buffer = memory.buffer; + const id = new Uint32Array(buffer)[ptr + ID_OFFSET >>> 2]; + if (id !== STRING_ID) throw Error(`not a string: ${ptr}`); + return getStringImpl(buffer, ptr); + } + + extendedExports.__getString = __getString; + /** Gets the view matching the specified alignment, signedness and floatness. */ + + function getView(alignLog2, signed, float) { + const buffer = memory.buffer; + + if (float) { + switch (alignLog2) { + case 2: + return new Float32Array(buffer); + + case 3: + return new Float64Array(buffer); + } + } else { + switch (alignLog2) { + case 0: + return new (signed ? Int8Array : Uint8Array)(buffer); + + case 1: + return new (signed ? Int16Array : Uint16Array)(buffer); + + case 2: + return new (signed ? Int32Array : Uint32Array)(buffer); + + case 3: + return new (signed ? BigInt64Array : BigUint64Array)(buffer); + } + } + + throw Error(`unsupported align: ${alignLog2}`); + } + /** Allocates a new array in the module's memory and returns its pointer. */ + + + function __newArray(id, valuesOrCapacity = 0) { + const input = valuesOrCapacity; + const info = getArrayInfo(id); + const align = getValueAlign(info); + const isArrayLike = typeof input !== "number"; + const length = isArrayLike ? input.length : input; + + const buf = __new(length << align, info & STATICARRAY ? id : ARRAYBUFFER_ID); + + let result; + + if (info & STATICARRAY) { + result = buf; + } else { + __pin(buf); + + const arr = __new(info & ARRAY ? ARRAY_SIZE : ARRAYBUFFERVIEW_SIZE, id); + + __unpin(buf); + + const U32 = new Uint32Array(memory.buffer); + U32[arr + ARRAYBUFFERVIEW_BUFFER_OFFSET >>> 2] = buf; + U32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2] = buf; + U32[arr + ARRAYBUFFERVIEW_BYTELENGTH_OFFSET >>> 2] = length << align; + if (info & ARRAY) U32[arr + ARRAY_LENGTH_OFFSET >>> 2] = length; + result = arr; + } + + if (isArrayLike) { + const view = getView(align, info & VAL_SIGNED, info & VAL_FLOAT); + const start = buf >>> align; + + if (info & VAL_MANAGED) { + for (let i = 0; i < length; ++i) { + view[start + i] = input[i]; + } + } else { + view.set(input, start); + } + } + + return result; + } + + extendedExports.__newArray = __newArray; + /** Gets a live view on an array's values in the module's memory. Infers the array type from RTTI. */ + + function __getArrayView(arr) { + const U32 = new Uint32Array(memory.buffer); + const id = U32[arr + ID_OFFSET >>> 2]; + const info = getArrayInfo(id); + const align = getValueAlign(info); + let buf = info & STATICARRAY ? arr : U32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2]; + const length = info & ARRAY ? U32[arr + ARRAY_LENGTH_OFFSET >>> 2] : U32[buf + SIZE_OFFSET >>> 2] >>> align; + return getView(align, info & VAL_SIGNED, info & VAL_FLOAT).subarray(buf >>>= align, buf + length); + } + + extendedExports.__getArrayView = __getArrayView; + /** Copies an array's values from the module's memory. Infers the array type from RTTI. */ + + function __getArray(arr) { + const input = __getArrayView(arr); + + const len = input.length; + const out = new Array(len); + + for (let i = 0; i < len; i++) out[i] = input[i]; + + return out; + } + + extendedExports.__getArray = __getArray; + /** Copies an ArrayBuffer's value from the module's memory. */ + + function __getArrayBuffer(ptr) { + const buffer = memory.buffer; + const length = new Uint32Array(buffer)[ptr + SIZE_OFFSET >>> 2]; + return buffer.slice(ptr, ptr + length); + } + + extendedExports.__getArrayBuffer = __getArrayBuffer; + /** Gets a function from poiner which contain table's index. */ + + function __getFunction(ptr) { + if (!table) throw Error(E_NO_EXPORT_TABLE); + const index = new Uint32Array(memory.buffer)[ptr >>> 2]; + return table.get(index); + } + + extendedExports.__getFunction = __getFunction; + /** Copies a typed array's values from the module's memory. */ + + function getTypedArray(Type, alignLog2, ptr) { + return new Type(getTypedArrayView(Type, alignLog2, ptr)); + } + /** Gets a live view on a typed array's values in the module's memory. */ + + + function getTypedArrayView(Type, alignLog2, ptr) { + const buffer = memory.buffer; + const U32 = new Uint32Array(buffer); + return new Type(buffer, U32[ptr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2], U32[ptr + ARRAYBUFFERVIEW_BYTELENGTH_OFFSET >>> 2] >>> alignLog2); + } + /** Attach a set of get TypedArray and View functions to the exports. */ + + + function attachTypedArrayFunctions(ctor, name, align) { + extendedExports[`__get${name}`] = getTypedArray.bind(null, ctor, align); + extendedExports[`__get${name}View`] = getTypedArrayView.bind(null, ctor, align); + } + + [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array].forEach(ctor => { + attachTypedArrayFunctions(ctor, ctor.name, 31 - Math.clz32(ctor.BYTES_PER_ELEMENT)); + }); + + if (BIGINT) { + [BigUint64Array, BigInt64Array].forEach(ctor => { + attachTypedArrayFunctions(ctor, ctor.name.slice(3), 3); + }); + } // Pull basic exports to extendedExports so code in preInstantiate can use them + + + extendedExports.memory = extendedExports.memory || memory; + extendedExports.table = extendedExports.table || table; // Demangle exports and provide the usual utility on the prototype + + return demangle(exports, extendedExports); + } + + function isResponse(src) { + return typeof Response !== "undefined" && src instanceof Response; + } + + function isModule(src) { + return src instanceof WebAssembly.Module; + } + /** Asynchronously instantiates an AssemblyScript module from anything that can be instantiated. */ + + + async function instantiate(source, imports = {}) { + if (isResponse(source = await source)) return instantiateStreaming(source, imports); + const module = isModule(source) ? source : await WebAssembly.compile(source); + const extended = preInstantiate(imports); + const instance = await WebAssembly.instantiate(module, imports); + const exports = postInstantiate(extended, instance); + return { + module, + instance, + exports + }; + } + /** Synchronously instantiates an AssemblyScript module from a WebAssembly.Module or binary buffer. */ + + + function instantiateSync(source, imports = {}) { + const module = isModule(source) ? source : new WebAssembly.Module(source); + const extended = preInstantiate(imports); + const instance = new WebAssembly.Instance(module, imports); + const exports = postInstantiate(extended, instance); + return { + module, + instance, + exports + }; + } + /** Asynchronously instantiates an AssemblyScript module from a response, i.e. as obtained by `fetch`. */ + + + async function instantiateStreaming(source, imports = {}) { + if (!WebAssembly.instantiateStreaming) { + return instantiate(isResponse(source = await source) ? source.arrayBuffer() : source, imports); + } + + const extended = preInstantiate(imports); + const result = await WebAssembly.instantiateStreaming(source, imports); + const exports = postInstantiate(extended, result.instance); + return { ...result, + exports + }; + } + /** Demangles an AssemblyScript module's exports to a friendly object structure. */ + + + function demangle(exports, extendedExports = {}) { + const setArgumentsLength = exports["__argumentsLength"] ? length => { + exports["__argumentsLength"].value = length; + } : exports["__setArgumentsLength"] || exports["__setargc"] || (() => { + /* nop */ + }); + + for (let internalName of Object.keys(exports)) { + const elem = exports[internalName]; + let parts = internalName.split("."); + let curr = extendedExports; + + while (parts.length > 1) { + let part = parts.shift(); + if (!Object.hasOwn(curr, part)) curr[part] = {}; + curr = curr[part]; + } + + let name = parts[0]; + let hash = name.indexOf("#"); + + if (hash >= 0) { + const className = name.substring(0, hash); + const classElem = curr[className]; + + if (typeof classElem === "undefined" || !classElem.prototype) { + const ctor = function (...args) { + return ctor.wrap(ctor.prototype.constructor(0, ...args)); + }; + + ctor.prototype = { + valueOf() { + return this[THIS]; + } + + }; + + ctor.wrap = function (thisValue) { + return Object.create(ctor.prototype, { + [THIS]: { + value: thisValue, + writable: false + } + }); + }; + + if (classElem) Object.getOwnPropertyNames(classElem).forEach(name => Object.defineProperty(ctor, name, Object.getOwnPropertyDescriptor(classElem, name))); + curr[className] = ctor; + } + + name = name.substring(hash + 1); + curr = curr[className].prototype; + + if (/^(get|set):/.test(name)) { + if (!Object.hasOwn(curr, name = name.substring(4))) { + let getter = exports[internalName.replace("set:", "get:")]; + let setter = exports[internalName.replace("get:", "set:")]; + Object.defineProperty(curr, name, { + get() { + return getter(this[THIS]); + }, + + set(value) { + setter(this[THIS], value); + }, + + enumerable: true + }); + } + } else { + if (name === 'constructor') { + (curr[name] = function (...args) { + setArgumentsLength(args.length); + return elem(...args); + }).original = elem; + } else { + // instance method + (curr[name] = function (...args) { + // ! + setArgumentsLength(args.length); + return elem(this[THIS], ...args); + }).original = elem; + } + } + } else { + if (/^(get|set):/.test(name)) { + if (!Object.hasOwn(curr, name = name.substring(4))) { + Object.defineProperty(curr, name, { + get: exports[internalName.replace("set:", "get:")], + set: exports[internalName.replace("get:", "set:")], + enumerable: true + }); + } + } else if (typeof elem === "function" && elem !== setArgumentsLength) { + (curr[name] = (...args) => { + setArgumentsLength(args.length); + return elem(...args); + }).original = elem; + } else { + curr[name] = elem; + } + } + } + + return extendedExports; + } + + var _default = { + instantiate, + instantiateSync, + instantiateStreaming, + demangle + }; + exports.default = _default; + return exports; +})({}); +if (typeof define === 'function' && define.amd) define([], function() { return loader; }); +else if (typeof module === 'object' && typeof exports==='object') module.exports = loader; diff --git a/lib/loader/umd/package.json b/lib/loader/umd/package.json new file mode 100644 index 0000000000..0fef86e339 --- /dev/null +++ b/lib/loader/umd/package.json @@ -0,0 +1,4 @@ +{ + "private": true, + "type": "commonjs" +} diff --git a/lib/parse/README.md b/lib/parse/README.md deleted file mode 100644 index 2864308a11..0000000000 --- a/lib/parse/README.md +++ /dev/null @@ -1,107 +0,0 @@ -# WebAssembly Parser - -A WebAssembly binary parser in WebAssembly. Super small, super fast, with TypeScript support. - -API ---- - -* **parse**(binary: `Uint8Array`, options?: `ParseOptions`): `void`
- Parses the contents of a WebAssembly binary according to the specified options. - -* **ParseOptions**
- Options specified to the parser. The `onSection` callback determines the sections being evaluated in detail. - - * **onSection**?(id: `SectionId`, payloadOff: `number`, payloadLen: `number`, nameOff: `number`, nameLen: `number`): `boolean`
- Called with each section in the binary. Returning `true` evaluates the section. - - * **onType**?(index: `number`, form: `number`): `void`
- Called with each function type if the type section is evaluated. - - * **onTypeParam**?(index: `number`, paramIndex: `number`, paramType: `Type`): `void`
- Called with each function parameter if the type section is evaluated. - - * **onTypeReturn**?(index: `number`, returnIndex: `number`, returnType: `Type`): `void`
- Called with each function return type if the type section is evaluated. - - * **onImport**?(index: `number`, kind: `ExternalKind`, moduleOff: `number`, moduleLen: `number`, fieldOff: `number`, fieldLen: `number`): `void`
- Called with each import if the import section is evaluated. - - * **onFunctionImport**?(index: `number`, type: `number`): `void`
- Called with each function import if the import section is evaluated. - - * **onTableImport**?(index: `number`, type: `Type`, initial: `number`, maximum: `number`, flags: `number`): `void`
- Called with each table import if the import section is evaluated. - - * **onMemoryImport**?(index: `number`, initial: `number`, maximum: `number`, flags: `number`): `void`
- Called with each memory import if the import section is evaluated. - - * **onGlobalImport**?(index: `number`, type: `Type`, mutability: `number`): `void`
- Called with each global import if the import section is evaluated. - - * **onMemory**?(index: `number`, initial: `number`, maximum: `number`, flags: `number`): `void`
- Called with each memory if the memory section is evaluated. - - * **onFunction**?(index: `number`, typeIndex: `number`): `void`
- Called with each function if the function section is evaluated. - - * **onGlobal**?(index: `number`, type: `Type`, mutability: `number`): `void`
- Called with each global if the global section is evaluated. - - * **onStart**?(index: `number`): `void`
- Called with the start function index if the start section is evaluated. - - * **onExport**?(index: `number`, kind: `ExternalKind`, kindIndex: `number`, nameOff: `number`, nameLen: `number`): `void`
- Called with each export if the export section is evaluated. - - * **onSourceMappingURL**?(offset: `number`, length: `number`): `void`
- Called with the source map URL if the 'sourceMappingURL' section is evaluated. - - * **onModuleName**?(offset: `number`, length: `number`): `void`
- Called with the module name if present and the 'name' section is evaluated. - - * **onFunctionName**?(index: `number`, offset: `number`, length: `number`): `void`
- Called with each function name if present and the 'name' section is evaluated. - - * **onLocalName**?(funcIndex: `number`, index: `number`, offset: `number`, length: `number`): `void`
- Called with each local name if present and the 'name' section is evaluated. - -* **Type**
- A value or element type, depending on context. - - | Name | Value - |---------|------- - | i32 | 0x7f - | i64 | 0x7e - | f32 | 0x7d - | f64 | 0x7c - | anyfunc | 0x70 - | func | 0x60 - | none | 0x40 - -* **SectionId**
- Numerical id of the current section. - - | Name | Value - |----------|------- - | Custom | 0 - | Type | 1 - | Import | 2 - | Function | 3 - | Table | 4 - | Memory | 5 - | Global | 6 - | Export | 7 - | Start | 8 - | Element | 9 - | Code | 10 - | Data | 11 - -* **ExternalKind**
- Kind of an export or import. - - | Name | Value - |----------|------- - | Function | 0 - | Table | 1 - | Memory | 2 - | Global | 3 diff --git a/lib/parse/assembly/index.ts b/lib/parse/assembly/index.ts deleted file mode 100644 index 3defa2ec19..0000000000 --- a/lib/parse/assembly/index.ts +++ /dev/null @@ -1,406 +0,0 @@ -/** A WebAssembly module that parses WebAssembly modules. */ - -// Common constants shared between AssemblyScript and TypeScript -import { - SectionId, - ExternalKind, - NameType, - MAX_PAGES, - MAX_ELEMS, - Opcode -} from "../src/common"; - -import * as opt from "./options"; - -/** Current offset in memory. */ -var off: usize = 0; - -/** Reads an unsigned integer from memory. */ -function readUint(): u32 { - var pos = off; - var val = load(pos); - off = pos + sizeof(); - return val; -} - -/** Reads an unsigned 64-bit integer from memory. */ -function readUint64(): u64 { - var pos = off; - var val = load(pos); - off = pos + 8; - return val; -} - -/** Reads a LEB128-encoded unsigned integer from memory. */ -function readVaruint(size: u32): u32 { - var val: u32 = 0; - var shl: u32 = 0; - var byt: u32; - var pos = off; - do { - byt = load(pos++); - val |= (byt & 0x7F) << shl; - if (!(byt & 0x80)) break; - shl += 7; - } while (true); - off = pos; - return val; -} - -/** Reads a LEB128-encoded signed integer from memory. */ -function readVarint(size: u32): i32 { - var val: u32 = 0; - var shl: u32 = 0; - var byt: u32; - var pos = off; - do { - byt = load(pos++); - val |= (byt & 0x7F) << shl; - shl += 7; - } while (byt & 0x80); - off = pos; - return select(val | (~0 << shl), val, shl < size && (byt & 0x40) != 0); -} - -/** Reads a LEB128-encoded signed 64-bit integer from memory. */ -function readVarint64(): i64 { - var val: u64 = 0; - var shl: u64 = 0; - var byt: u64; - var pos = off; - do { - byt = load(pos++); - val |= (byt & 0x7F) << shl; - shl += 7; - } while (byt & 0x80); - off = pos; - return select(val | (~0 << shl), val, shl < 64 && (byt & 0x40) != 0); -} - -function skipInitExpr(): void { - var op = readUint(); - switch (op) { - case Opcode.i32_const: { - readVarint(32); - break; - } - case Opcode.i64_const: { - readVarint64(); - break; - } - case Opcode.f32_const: { - readUint(); - break; - } - case Opcode.f64_const: { - readUint64(); - break; - } - case Opcode.get_global: { - readVaruint(32); - break; - } - default: unreachable(); // MVP - } - if (readUint() != Opcode.end) unreachable(); -} - -/** Starts parsing the module that has been placed in memory. */ -export function parse(begin: usize, end: usize): void { - off = begin; - var magic = readUint(); - if (magic != 0x6D736100) unreachable(); - var version = readUint(); - if (version != 1) unreachable(); - var fun_space_index: u32 = 0; - var glo_space_index: u32 = 0; - var mem_space_index: u32 = 0; - var tbl_space_index: u32 = 0; - while (off < end) { - // let section_off = off; - let id = readVaruint(7); - let payload_len = readVaruint(32); - let name_off = 0; - let name_len = 0; - if (!id) { - let before = off; - name_len = readVaruint(32); - name_off = off; - off += name_len; - payload_len -= off - before; - } else if (id > SectionId.Data) unreachable(); - let payload_off = off; - if (opt.onSection( - id, - payload_off, - payload_len, - name_off, - name_len - )) { - switch (id) { - case SectionId.Type: { - let count = readVaruint(32); - for (let index: u32 = 0; index < count; ++index) { - let form = readVarint(7) & 0x7f; - opt.onType( - index, - form - ); - let paramCount = readVaruint(32); - for (let paramIndex: u32 = 0; paramIndex < paramCount; ++paramIndex) { - let paramType = readVarint(7) & 0x7f; - opt.onTypeParam( - index, - paramIndex, - paramType - ); - } - let returnCount = readVaruint(1); // MVP - for (let returnIndex: u32 = 0; returnIndex < returnCount; ++returnIndex) { - let returnType = readVarint(7) & 0x7f; - opt.onTypeReturn( - index, - returnIndex, - returnType - ); - } - } - break; - } - case SectionId.Import: { - let count = readVaruint(32); - for (let index: u32 = 0; index < count; ++index) { - let module_len = readVaruint(32); - let module_off = off; - off += module_len; - let field_len = readVaruint(32); - let field_off = off; - off += field_len; - let kind = readUint(); - opt.onImport( - index, - kind, - module_off, - module_len, - field_off, - field_len - ); - switch (kind) { - case ExternalKind.Function: { - let type = readVaruint(32); - opt.onFunctionImport( - fun_space_index++, - type - ); - break; - } - case ExternalKind.Table: { - let type = readVarint(7) & 0x7f; - let flags = readVaruint(1); - let initial = readVaruint(32); - let maximum = flags & 1 ? readVaruint(32) : MAX_ELEMS; - opt.onTableImport( - tbl_space_index++, - type, - initial, - maximum, - flags - ); - break; - } - case ExternalKind.Memory: { - let flags = readVaruint(1); - let initial = readVaruint(32); - let maximum = flags & 1 ? readVaruint(32) : MAX_PAGES; - opt.onMemoryImport( - mem_space_index++, - initial, - maximum, - flags - ); - break; - } - case ExternalKind.Global: { - let type = readVarint(7) & 0x7f; - let mutability = readVaruint(1); - opt.onGlobalImport( - glo_space_index++, - type, - mutability - ); - break; - } - default: unreachable(); - } - } - break; - } - case SectionId.Function: { - let count = readVaruint(32); - for (let i: u32 = 0; i < count; ++i) { - let typeIndex = readVaruint(32); - opt.onFunction( - fun_space_index++, - typeIndex - ); - } - break; - } - case SectionId.Table: { - let count = readVaruint(32); - for (let index: u32 = 0; index < count; ++index) { - let type = readVaruint(7) & 0x7f; - let flags = readVaruint(1); - let initial = readVaruint(32); - let maximum = flags & 1 ? readVaruint(32) : MAX_ELEMS; - opt.onTable( - tbl_space_index++, - type, - initial, - maximum, - flags - ); - } - break; - } - case SectionId.Memory: { - let count = readVaruint(32); - for (let index: u32 = 0; index < count; ++index) { - let flags = readVaruint(1); - let initial = readVaruint(32); - let maximum = flags & 1 ? readVaruint(32) : MAX_PAGES; - opt.onMemory( - mem_space_index++, - initial, - maximum, - flags - ); - } - break; - } - case SectionId.Global: { - let count = readVaruint(32); - for (let i: u32 = 0; i < count; ++i) { - let type = readVarint(7) & 0x7f; - let mutability = readVaruint(1); - skipInitExpr(); - opt.onGlobal( - glo_space_index++, - type, - mutability - ); - } - break; - } - case SectionId.Export: { - let count = readVaruint(32); - for (let index: u32 = 0; index < count; ++index) { - let field_len = readVaruint(32); - let field_off = off; - off += field_len; - let kind = readUint(); - let kind_index = readVaruint(32); - opt.onExport( - index, - kind, - kind_index, - field_off, - field_len - ); - } - break; - } - case SectionId.Start: { - let index = readVaruint(32); - opt.onStart( - index - ); - break; - } - case SectionId.Custom: { - if ( - name_len == 4 && - load(name_off) == 0x656D616E // "name" - ) { - let name_type = readVaruint(7); - let name_payload_len = readVaruint(32); - let name_payload_off = off; - switch (name_type) { - case NameType.Module: { - let module_name_len = readVaruint(32); - let module_name_off = off; - opt.onModuleName( - module_name_off, - module_name_len - ); - break; - } - case NameType.Function: { - let count = readVaruint(32); - for (let i: u32 = 0; i < count; ++i) { - let fn_index = readVaruint(32); - let fn_name_len = readVaruint(32); - let fn_name_off = off; - off += fn_name_len; - opt.onFunctionName( - fn_index, - fn_name_off, - fn_name_len - ); - } - break; - } - case NameType.Local: { - let count = readVaruint(32); - for (let i: u32 = 0; i < count; ++i) { - let fn_index = readVaruint(32); - let lc_count = readVaruint(32); - for (let j: u32 = 0; j < lc_count; ++j) { - let lc_index = readVaruint(32); - let lc_name_len = readVaruint(32); - let lc_name_off = off; - off += lc_name_len; - opt.onLocalName( - fn_index, - lc_index, - lc_name_off, - lc_name_len - ); - } - } - break; - } - default: unreachable(); - } - off = name_payload_off + name_payload_len; // ignore errors - break; - } else if ( - name_len == 16 && - load(name_off ) == 0x614D656372756F73 && // "sourceMa" - load(name_off + 8) == 0x4C5255676E697070 // "ppingURL" - ) { - let url_len = readVaruint(32); - let url_off = off; - off += url_len; - opt.onSourceMappingURL( - url_off, - url_len - ); - } - off = payload_off + payload_len; // ignore errors - break; - } - case SectionId.Element: - case SectionId.Code: - case SectionId.Data: { // skip - off += payload_len; - break; - } - default: unreachable(); - } - } else { // skip - off += payload_len; - } - } - if (off != end) unreachable(); -} diff --git a/lib/parse/assembly/options.ts b/lib/parse/assembly/options.ts deleted file mode 100644 index e4ca8ad219..0000000000 --- a/lib/parse/assembly/options.ts +++ /dev/null @@ -1,20 +0,0 @@ -// Imported callbacks -export declare function onSection(id: u32, offset: u32, length: u32, nameOffset: u32, nameLength: u32): bool; -export declare function onType(index: u32, form: u32): void; -export declare function onTypeParam(index: u32, paramIndex: u32, paramType: u32): void; -export declare function onTypeReturn(index: u32, returnIndex: u32, returnType: u32): void; -export declare function onImport(index: u32, kind: u32, moduleOff: u32, moduleLen: u32, fieldOff: u32, fieldLen: u32): void; -export declare function onFunctionImport(index: u32, type: u32): void; -export declare function onTableImport(index: u32, type: u32, initial: u32, maximum: u32, flags: u32): void; -export declare function onMemoryImport(index: u32, initial: u32, maximum: u32, flags: u32): void; -export declare function onGlobalImport(index: u32, type: u32, mutability: u32): void; -export declare function onMemory(index: u32, initial: u32, maximum: u32, flags: u32): void; -export declare function onFunction(index: u32, typeIndex: u32): void; -export declare function onTable(index: u32, type: u32, initial: u32, maximum: u32, flags: u32): void; -export declare function onGlobal(index: u32, type: u32, mutability: u32): void; -export declare function onExport(index: u32, kind: u32, kindIndex: u32, nameOffset: u32, nameLength: u32): void; -export declare function onStart(index: u32): void; -export declare function onSourceMappingURL(offset: u32, length: u32): void; -export declare function onModuleName(offset: u32, length: u32): void; -export declare function onFunctionName(index: u32, offset: u32, length: u32): void; -export declare function onLocalName(funcIndex: u32, index: u32, offset: u32, length: u32): void; diff --git a/lib/parse/assembly/tsconfig.json b/lib/parse/assembly/tsconfig.json deleted file mode 100644 index 6e52b21c48..0000000000 --- a/lib/parse/assembly/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../../std/assembly.json", - "include": [ - "./**/*.ts" - ] -} diff --git a/lib/parse/build/.gitignore b/lib/parse/build/.gitignore deleted file mode 100644 index d873de2f78..0000000000 --- a/lib/parse/build/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.wasm -*.wasm.map diff --git a/lib/parse/build/index.wat b/lib/parse/build/index.wat deleted file mode 100644 index 73b58157fd..0000000000 --- a/lib/parse/build/index.wat +++ /dev/null @@ -1,932 +0,0 @@ -(module - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$viiiiii (func (param i32 i32 i32 i32 i32 i32))) - (type $FUNCSIG$viiiii (func (param i32 i32 i32 i32 i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$i (func (result i32))) - (import "env" "memory" (memory $0 0)) - (import "options" "onSection" (func $assembly/options/onSection (param i32 i32 i32 i32 i32) (result i32))) - (import "options" "onType" (func $assembly/options/onType (param i32 i32))) - (import "options" "onTypeParam" (func $assembly/options/onTypeParam (param i32 i32 i32))) - (import "options" "onTypeReturn" (func $assembly/options/onTypeReturn (param i32 i32 i32))) - (import "options" "onImport" (func $assembly/options/onImport (param i32 i32 i32 i32 i32 i32))) - (import "options" "onFunctionImport" (func $assembly/options/onFunctionImport (param i32 i32))) - (import "options" "onTableImport" (func $assembly/options/onTableImport (param i32 i32 i32 i32 i32))) - (import "options" "onMemoryImport" (func $assembly/options/onMemoryImport (param i32 i32 i32 i32))) - (import "options" "onGlobalImport" (func $assembly/options/onGlobalImport (param i32 i32 i32))) - (import "options" "onFunction" (func $assembly/options/onFunction (param i32 i32))) - (import "options" "onTable" (func $assembly/options/onTable (param i32 i32 i32 i32 i32))) - (import "options" "onMemory" (func $assembly/options/onMemory (param i32 i32 i32 i32))) - (import "options" "onGlobal" (func $assembly/options/onGlobal (param i32 i32 i32))) - (import "options" "onExport" (func $assembly/options/onExport (param i32 i32 i32 i32 i32))) - (import "options" "onStart" (func $assembly/options/onStart (param i32))) - (import "options" "onModuleName" (func $assembly/options/onModuleName (param i32 i32))) - (import "options" "onFunctionName" (func $assembly/options/onFunctionName (param i32 i32 i32))) - (import "options" "onLocalName" (func $assembly/options/onLocalName (param i32 i32 i32 i32))) - (import "options" "onSourceMappingURL" (func $assembly/options/onSourceMappingURL (param i32 i32))) - (global $assembly/index/off (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "parse" (func $assembly/index/parse)) - (func $assembly/index/readVaruint (; 19 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $assembly/index/off - local.set $0 - loop $continue|0 - local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.load8_u - local.tee $1 - i32.const 127 - i32.and - local.get $3 - i32.shl - local.get $2 - i32.or - local.set $2 - local.get $1 - i32.const 128 - i32.and - if - local.get $3 - i32.const 7 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - global.set $assembly/index/off - local.get $2 - ) - (func $assembly/index/readVarint (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $assembly/index/off - local.set $4 - loop $continue|0 - local.get $4 - local.tee $3 - i32.const 1 - i32.add - local.set $4 - local.get $3 - i32.load8_u - local.tee $3 - i32.const 127 - i32.and - local.get $1 - i32.shl - local.get $2 - i32.or - local.set $2 - local.get $1 - i32.const 7 - i32.add - local.set $1 - local.get $3 - i32.const 128 - i32.and - br_if $continue|0 - end - local.get $4 - global.set $assembly/index/off - i32.const -1 - local.get $1 - i32.shl - local.get $2 - i32.or - local.get $2 - local.get $3 - i32.const 64 - i32.and - i32.const 0 - i32.ne - i32.const 0 - local.get $1 - local.get $0 - i32.lt_u - select - select - ) - (func $assembly/index/readVarint64 (; 21 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i64) - (local $2 i32) - (local $3 i64) - (local $4 i64) - global.get $assembly/index/off - local.set $0 - loop $continue|0 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $2 - i64.load8_u - local.tee $4 - i64.const 127 - i64.and - local.get $1 - i64.shl - local.get $3 - i64.or - local.set $3 - local.get $1 - i64.const 7 - i64.add - local.set $1 - local.get $4 - i64.const 128 - i64.and - i64.const 0 - i64.ne - br_if $continue|0 - end - local.get $0 - global.set $assembly/index/off - ) - (func $assembly/index/skipInitExpr (; 22 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - global.get $assembly/index/off - local.tee $1 - i32.load8_u - local.set $0 - local.get $1 - i32.const 1 - i32.add - global.set $assembly/index/off - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $0 - i32.const 65 - i32.ne - if - local.get $0 - i32.const 66 - i32.eq - br_if $case1|0 - local.get $0 - i32.const 67 - i32.eq - br_if $case2|0 - local.get $0 - i32.const 68 - i32.eq - br_if $case3|0 - local.get $0 - i32.const 35 - i32.eq - br_if $case4|0 - br $case5|0 - end - i32.const 32 - call $assembly/index/readVarint - drop - br $break|0 - end - call $assembly/index/readVarint64 - br $break|0 - end - global.get $assembly/index/off - local.tee $0 - i32.load - drop - local.get $0 - i32.const 4 - i32.add - global.set $assembly/index/off - br $break|0 - end - global.get $assembly/index/off - local.tee $0 - i64.load - drop - local.get $0 - i32.const 8 - i32.add - global.set $assembly/index/off - br $break|0 - end - call $assembly/index/readVaruint - drop - br $break|0 - end - unreachable - end - global.get $assembly/index/off - local.tee $1 - i32.load8_u - local.get $1 - i32.const 1 - i32.add - global.set $assembly/index/off - i32.const 11 - i32.ne - if - unreachable - end - ) - (func $assembly/index/parse (; 23 ;) (type $FUNCSIG$vii) (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - local.get $0 - global.set $assembly/index/off - global.get $assembly/index/off - local.tee $0 - i32.load - local.get $0 - i32.const 4 - i32.add - global.set $assembly/index/off - i32.const 1836278016 - i32.ne - if - unreachable - end - global.get $assembly/index/off - local.tee $0 - i32.load - local.get $0 - i32.const 4 - i32.add - global.set $assembly/index/off - i32.const 1 - i32.ne - if - unreachable - end - i32.const 0 - local.set $0 - loop $continue|0 - global.get $assembly/index/off - local.get $1 - i32.lt_u - if - call $assembly/index/readVaruint - local.set $4 - call $assembly/index/readVaruint - local.set $3 - i32.const 0 - local.set $5 - i32.const 0 - local.set $2 - local.get $4 - if - local.get $4 - i32.const 11 - i32.gt_u - if - unreachable - end - else - global.get $assembly/index/off - local.set $6 - call $assembly/index/readVaruint - local.tee $2 - global.get $assembly/index/off - local.tee $5 - i32.add - global.set $assembly/index/off - local.get $3 - global.get $assembly/index/off - local.get $6 - i32.sub - i32.sub - local.set $3 - end - local.get $4 - global.get $assembly/index/off - local.tee $6 - local.get $3 - local.get $5 - local.get $2 - call $assembly/options/onSection - if - block $break|1 - block $case12|1 - block $case11|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - local.get $4 - i32.const 1 - i32.ne - if - local.get $4 - i32.const 2 - i32.eq - br_if $case1|1 - block $tablify|0 - local.get $4 - br_table $case8|1 $tablify|0 $tablify|0 $case2|1 $case3|1 $case4|1 $case5|1 $case6|1 $case7|1 $case11|1 $case11|1 $case11|1 $tablify|0 - end - br $case12|1 - end - call $assembly/index/readVaruint - local.set $4 - i32.const 0 - local.set $2 - loop $loop|2 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 7 - call $assembly/index/readVarint - i32.const 127 - i32.and - call $assembly/options/onType - call $assembly/index/readVaruint - local.set $5 - i32.const 0 - local.set $3 - loop $loop|3 - local.get $3 - local.get $5 - i32.lt_u - if - local.get $2 - local.get $3 - i32.const 7 - call $assembly/index/readVarint - i32.const 127 - i32.and - call $assembly/options/onTypeParam - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|3 - end - end - call $assembly/index/readVaruint - local.set $5 - i32.const 0 - local.set $3 - loop $loop|4 - local.get $3 - local.get $5 - i32.lt_u - if - local.get $2 - local.get $3 - i32.const 7 - call $assembly/index/readVarint - i32.const 127 - i32.and - call $assembly/options/onTypeReturn - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|4 - end - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|2 - end - end - br $break|1 - end - call $assembly/index/readVaruint - local.set $7 - i32.const 0 - local.set $4 - loop $loop|5 - local.get $4 - local.get $7 - i32.lt_u - if - call $assembly/index/readVaruint - local.tee $3 - global.get $assembly/index/off - local.tee $5 - i32.add - global.set $assembly/index/off - call $assembly/index/readVaruint - local.tee $6 - global.get $assembly/index/off - local.tee $8 - i32.add - global.set $assembly/index/off - global.get $assembly/index/off - local.tee $9 - i32.load8_u - local.set $2 - local.get $9 - i32.const 1 - i32.add - global.set $assembly/index/off - local.get $4 - local.get $2 - local.get $5 - local.get $3 - local.get $8 - local.get $6 - call $assembly/options/onImport - block $break|6 - block $case4|6 - block $case3|6 - block $case2|6 - block $case1|6 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - br_table $case1|6 $case2|6 $case3|6 $case4|6 - end - local.get $10 - local.tee $2 - i32.const 1 - i32.add - local.set $10 - local.get $2 - call $assembly/index/readVaruint - call $assembly/options/onFunctionImport - br $break|6 - end - i32.const 7 - call $assembly/index/readVarint - i32.const 127 - i32.and - local.set $3 - call $assembly/index/readVaruint - local.set $5 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - call $assembly/index/readVaruint - local.get $5 - i32.const 1 - i32.and - if (result i32) - call $assembly/index/readVaruint - else - i32.const -1 - end - local.get $5 - call $assembly/options/onTableImport - br $break|6 - end - call $assembly/index/readVaruint - local.set $3 - local.get $11 - local.tee $2 - i32.const 1 - i32.add - local.set $11 - local.get $2 - call $assembly/index/readVaruint - local.get $3 - i32.const 1 - i32.and - if (result i32) - call $assembly/index/readVaruint - else - i32.const 65535 - end - local.get $3 - call $assembly/options/onMemoryImport - br $break|6 - end - local.get $12 - local.tee $2 - i32.const 1 - i32.add - local.set $12 - local.get $2 - i32.const 7 - call $assembly/index/readVarint - i32.const 127 - i32.and - call $assembly/index/readVaruint - call $assembly/options/onGlobalImport - br $break|6 - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $loop|5 - end - end - br $break|1 - end - call $assembly/index/readVaruint - local.set $4 - i32.const 0 - local.set $3 - loop $loop|7 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.tee $2 - i32.const 1 - i32.add - local.set $10 - local.get $2 - call $assembly/index/readVaruint - call $assembly/options/onFunction - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|7 - end - end - br $break|1 - end - call $assembly/index/readVaruint - local.set $7 - i32.const 0 - local.set $4 - loop $loop|8 - local.get $4 - local.get $7 - i32.lt_u - if - call $assembly/index/readVaruint - i32.const 127 - i32.and - local.set $3 - call $assembly/index/readVaruint - local.set $5 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - call $assembly/index/readVaruint - local.get $5 - i32.const 1 - i32.and - if (result i32) - call $assembly/index/readVaruint - else - i32.const -1 - end - local.get $5 - call $assembly/options/onTable - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $loop|8 - end - end - br $break|1 - end - call $assembly/index/readVaruint - local.set $6 - i32.const 0 - local.set $3 - loop $loop|9 - local.get $3 - local.get $6 - i32.lt_u - if - call $assembly/index/readVaruint - local.set $4 - local.get $11 - local.tee $2 - i32.const 1 - i32.add - local.set $11 - local.get $2 - call $assembly/index/readVaruint - local.get $4 - i32.const 1 - i32.and - if (result i32) - call $assembly/index/readVaruint - else - i32.const 65535 - end - local.get $4 - call $assembly/options/onMemory - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|9 - end - end - br $break|1 - end - call $assembly/index/readVaruint - local.set $4 - i32.const 0 - local.set $3 - loop $loop|10 - local.get $3 - local.get $4 - i32.lt_u - if - i32.const 7 - call $assembly/index/readVarint - i32.const 127 - i32.and - local.set $5 - call $assembly/index/readVaruint - local.set $6 - call $assembly/index/skipInitExpr - local.get $12 - local.tee $2 - i32.const 1 - i32.add - local.set $12 - local.get $2 - local.get $5 - local.get $6 - call $assembly/options/onGlobal - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|10 - end - end - br $break|1 - end - call $assembly/index/readVaruint - local.set $3 - i32.const 0 - local.set $2 - loop $loop|11 - local.get $2 - local.get $3 - i32.lt_u - if - call $assembly/index/readVaruint - local.tee $4 - global.get $assembly/index/off - local.tee $5 - i32.add - global.set $assembly/index/off - global.get $assembly/index/off - local.tee $6 - i32.load8_u - local.set $7 - local.get $6 - i32.const 1 - i32.add - global.set $assembly/index/off - local.get $2 - local.get $7 - call $assembly/index/readVaruint - local.get $5 - local.get $4 - call $assembly/options/onExport - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|11 - end - end - br $break|1 - end - call $assembly/index/readVaruint - call $assembly/options/onStart - br $break|1 - end - local.get $2 - i32.const 4 - i32.eq - if (result i32) - local.get $5 - i32.load - i32.const 1701667182 - i32.eq - else - i32.const 0 - end - if - call $assembly/index/readVaruint - local.set $2 - call $assembly/index/readVaruint - global.get $assembly/index/off - block $break|12 - block $case3|12 - block $case2|12 - block $case1|12 - local.get $2 - if - local.get $2 - i32.const 1 - i32.eq - br_if $case1|12 - local.get $2 - i32.const 2 - i32.eq - br_if $case2|12 - br $case3|12 - end - call $assembly/index/readVaruint - local.set $2 - global.get $assembly/index/off - local.get $2 - call $assembly/options/onModuleName - br $break|12 - end - call $assembly/index/readVaruint - local.set $2 - i32.const 0 - local.set $3 - loop $loop|13 - local.get $3 - local.get $2 - i32.lt_u - if - call $assembly/index/readVaruint - call $assembly/index/readVaruint - local.tee $7 - global.get $assembly/index/off - local.tee $8 - i32.add - global.set $assembly/index/off - local.get $8 - local.get $7 - call $assembly/options/onFunctionName - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|13 - end - end - br $break|12 - end - call $assembly/index/readVaruint - local.set $6 - i32.const 0 - local.set $2 - loop $loop|14 - local.get $2 - local.get $6 - i32.lt_u - if - call $assembly/index/readVaruint - local.set $7 - call $assembly/index/readVaruint - local.set $8 - i32.const 0 - local.set $3 - loop $loop|15 - local.get $3 - local.get $8 - i32.lt_u - if - call $assembly/index/readVaruint - local.set $9 - call $assembly/index/readVaruint - local.tee $13 - global.get $assembly/index/off - local.tee $14 - i32.add - global.set $assembly/index/off - local.get $7 - local.get $9 - local.get $14 - local.get $13 - call $assembly/options/onLocalName - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|15 - end - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|14 - end - end - br $break|12 - end - unreachable - end - i32.add - global.set $assembly/index/off - br $break|1 - else - local.get $2 - i32.const 16 - i32.eq - if (result i32) - local.get $5 - i64.load - i64.const 7011371672682196851 - i64.eq - else - i32.const 0 - end - if (result i32) - local.get $5 - i32.const 8 - i32.add - i64.load - i64.const 5499551997695193200 - i64.eq - else - i32.const 0 - end - if - call $assembly/index/readVaruint - local.tee $2 - global.get $assembly/index/off - local.tee $4 - i32.add - global.set $assembly/index/off - local.get $4 - local.get $2 - call $assembly/options/onSourceMappingURL - end - end - local.get $3 - local.get $6 - i32.add - global.set $assembly/index/off - br $break|1 - end - global.get $assembly/index/off - local.get $3 - i32.add - global.set $assembly/index/off - br $break|1 - end - unreachable - end - else - global.get $assembly/index/off - local.get $3 - i32.add - global.set $assembly/index/off - end - br $continue|0 - end - end - global.get $assembly/index/off - local.get $1 - i32.ne - if - unreachable - end - ) - (func $null (; 24 ;) (type $FUNCSIG$v) - nop - ) -) diff --git a/lib/parse/index.d.ts b/lib/parse/index.d.ts deleted file mode 100644 index 3bd16e178a..0000000000 --- a/lib/parse/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./src"; diff --git a/lib/parse/index.js b/lib/parse/index.js deleted file mode 100644 index 79b2952d67..0000000000 --- a/lib/parse/index.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(A,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.asparse=e():A.asparse=e()}("undefined"!=typeof self?self:this,function(){return function(A){var e={};function n(o){if(e[o])return e[o].exports;var Q=e[o]={i:o,l:!1,exports:{}};return A[o].call(Q.exports,Q,Q.exports,n),Q.l=!0,Q.exports}return n.m=A,n.c=e,n.d=function(A,e,o){n.o(A,e)||Object.defineProperty(A,e,{enumerable:!0,get:o})},n.r=function(A){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},n.t=function(A,e){if(1&e&&(A=n(A)),8&e)return A;if(4&e&&"object"==typeof A&&A&&A.__esModule)return A;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:A}),2&e&&"string"!=typeof A)for(var Q in A)n.d(o,Q,function(e){return A[e]}.bind(null,Q));return o},n.n=function(A){var e=A&&A.__esModule?function(){return A.default}:function(){return A};return n.d(e,"a",e),e},n.o=function(A,e){return Object.prototype.hasOwnProperty.call(A,e)},n.p="",n(n.s=0)}([function(A,e,n){A.exports=n(1)},function(A,e,n){"use strict";e.__esModule=!0;var o=n(2);e.Type=o.Type,e.SectionId=o.SectionId,e.ExternalKind=o.ExternalKind;var Q=null;e.parse=function A(e,n){n||(n={}),Q||(Q=new WebAssembly.Module(function(A){var e=A.length;if(e){for(var n=0,o=e;--o%4>1&&61===A.charCodeAt(o);)++n;e=Math.ceil(3*e)/4-n}for(var Q=new Uint8Array(e),B=0,I=0,E=0,r=0,i=A.length;r1)break;if(void 0===(C=t[C]))throw Error();switch(B){case 0:E=C,B=1;break;case 1:Q[I++]=E<<2|(48&C)>>4,E=C,B=2;break;case 2:Q[I++]=(15&E)<<4|(60&C)>>2,E=C,B=3;break;case 3:Q[I++]=(3&E)<<6|C,B=0}}if(1===B)throw Error();return Q}("AGFzbQEAAAABPQpgAn9/AGABfwF/YAV/f39/fwF/YAN/f38AYAZ/f39/f38AYAV/f39/fwBgBH9/f38AYAAAYAF/AGAAAX8CrgMUB29wdGlvbnMJb25TZWN0aW9uAAIHb3B0aW9ucwZvblR5cGUAAAdvcHRpb25zC29uVHlwZVBhcmFtAAMHb3B0aW9ucwxvblR5cGVSZXR1cm4AAwdvcHRpb25zCG9uSW1wb3J0AAQHb3B0aW9ucxBvbkZ1bmN0aW9uSW1wb3J0AAAHb3B0aW9ucw1vblRhYmxlSW1wb3J0AAUHb3B0aW9ucw5vbk1lbW9yeUltcG9ydAAGB29wdGlvbnMOb25HbG9iYWxJbXBvcnQAAwdvcHRpb25zCm9uRnVuY3Rpb24AAAdvcHRpb25zB29uVGFibGUABQdvcHRpb25zCG9uTWVtb3J5AAYHb3B0aW9ucwhvbkdsb2JhbAADB29wdGlvbnMIb25FeHBvcnQABQdvcHRpb25zB29uU3RhcnQACAdvcHRpb25zDG9uTW9kdWxlTmFtZQAAB29wdGlvbnMOb25GdW5jdGlvbk5hbWUAAwdvcHRpb25zC29uTG9jYWxOYW1lAAYHb3B0aW9ucxJvblNvdXJjZU1hcHBpbmdVUkwAAANlbnYGbWVtb3J5AgAAAwcGCQEHBwAHBgYBfwFBAAsHEgIGbWVtb3J5AgAFcGFyc2UAFwrlDAY/AQR/IwAhAANAIAAiAUEBaiEAIAEtAAAiAUH/AHEgA3QgAnIhAiABQYABcQRAIANBB2ohAwwBCwsgACQAIAILVgEEfyMAIQQDQCAEIgNBAWohBCADLQAAIgNB/wBxIAF0IAJyIQIgAUEHaiEBIANBgAFxDQALIAQkAEF/IAF0IAJyIAIgA0HAAHFBAEdBACABIABJGxsLPwICfwN+IwAhAANAIAAiAUEBaiEAIAExAAAiBEL/AIMgAoYgA4QhAyACQgd8IQIgBEKAAYNCAFINAAsgACQAC5wBAQJ/IwAiAS0AACEAIAFBAWokAAJAAkACQAJAAkACQCAAQcEARwRAIABBwgBGDQEgAEHDAEYNAiAAQcQARg0DIABBI0YNBAwFC0EgEBQaDAULEBUMBAsjACIAKAIAGiAAQQRqJAAMAwsjACIAKQMAGiAAQQhqJAAMAgsQExoMAQsACyMAIgEtAAAhACABQQFqJAAgAEELRwRAAAsL6QkBDX8gACQAIwAiACgCACECIABBBGokACACQYDCzesGRwRAAAsjACIAKAIAIQIgAEEEaiQAIAJBAUcEQAALQQAhAANAIwAgAUkEQBATIQQQEyEDQQAhBUEAIQIgBARAIARBC0sEQAALBSMAIQYQEyICIwAiBWokACADIwAgBmtrIQMLIAQjACIGIAMgBSACEAAEQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBEEBRwRAIARBAkYNAQJAIAQODAkAAAMEBQYHCAoKCgALDAoLEBMhBEEAIQIDQCACIARJBEAgAkEHEBRB/wBxEAEQEyEFQQAhAwNAIAMgBUkEQCACIANBBxAUQf8AcRACIANBAWohAwwBCwsQEyEFQQAhAwNAIAMgBUkEQCACIANBBxAUQf8AcRADIANBAWohAwwBCwsgAkEBaiECDAELCwwKCxATIQdBACEEA0AgBCAHSQRAEBMiAyMAIgVqJAAQEyIGIwAiCGokACMAIgktAAAhAiAJQQFqJAAgBCACIAUgAyAIIAYQBAJAAkACQAJAAkAgAgRAIAJBAWsOAwECAwQLIAoiAkEBaiEKIAIQExAFDAQLQQcQFEH/AHEhAxATIQUgACICQQFqIQAgAiADEBMgBUEBcQR/EBMFQX8LIAUQBgwDCxATIQMgCyICQQFqIQsgAhATIANBAXEEfxATBUH//wMLIAMQBwwCCyAMIgJBAWohDCACQQcQFEH/AHEQExAIDAELAAsgBEEBaiEEDAELCwwJCxATIQRBACEDA0AgAyAESQRAIAoiAkEBaiEKIAIQExAJIANBAWohAwwBCwsMCAsQEyEHQQAhBANAIAQgB0kEQBATQf8AcSEDEBMhBSAAIgJBAWohACACIAMQEyAFQQFxBH8QEwVBfwsgBRAKIARBAWohBAwBCwsMBwsQEyEGQQAhAwNAIAMgBkkEQBATIQQgCyICQQFqIQsgAhATIARBAXEEfxATBUH//wMLIAQQCyADQQFqIQMMAQsLDAYLEBMhBEEAIQMDQCADIARJBEBBBxAUQf8AcSEFEBMhBhAWIAwiAkEBaiEMIAIgBSAGEAwgA0EBaiEDDAELCwwFCxATIQNBACECA0AgAiADSQRAEBMiBCMAIgVqJAAjACIGLQAAIQcgBkEBaiQAIAIgBxATIAUgBBANIAJBAWohAgwBCwsMBAsQExAODAMLIAJBBEYEfyAFKAIAQe7CtasGRgVBAAsEQBATIQIQEyEEIwAhBQJAAkACQAJAIAIEQCACQQFGDQEgAkECRg0CDAMLEBMhAiMAIAIQDwwDCxATIQJBACEDA0AgAyACSQRAEBMhBhATIgcjACIIaiQAIAYgCCAHEBAgA0EBaiEDDAELCwwCCxATIQZBACECA0AgAiAGSQRAEBMhBxATIQhBACEDA0AgAyAISQRAEBMhCRATIg0jACIOaiQAIAcgCSAOIA0QESADQQFqIQMMAQsLIAJBAWohAgwBCwsMAQsACyAEIAVqJAAMAwUgAkEQRgR/IAUpAwBC897Vk7es2abhAFEFQQALBH8gBUEIaikDAELw4KXz9qyVqcwAUQVBAAsEQBATIgIjACIEaiQAIAQgAhASCwsgAyAGaiQADAILIwAgA2okAAwBCwALBSMAIANqJAALDAELCyMAIAFHBEAACwsDAAELACAQc291cmNlTWFwcGluZ1VSTA5pbmRleC53YXNtLm1hcA==")));var o=e.length,B=(o+65535&-65536)>>16,I=new WebAssembly.Memory({initial:B}),E=new Uint8Array(I.buffer);E.set(e),A.readString=function(A,e){return function(A,e,n){if(n-e<1)return"";for(var o=null,Q=[],t=0,B=0;e191&&B<224?Q[t++]=(31&B)<<6|63&A[e++]:B>239&&B<365?(B=((7&B)<<18|(63&A[e++])<<12|(63&A[e++])<<6|63&A[e++])-65536,Q[t++]=55296+(B>>10),Q[t++]=56320+(1023&B)):Q[t++]=(15&B)<<12|(63&A[e++])<<6|63&A[e++],t>8191&&((o||(o=[])).push(String.fromCharCode.apply(String,Q)),t=0);return o?(t&&o.push(String.fromCharCode.apply(String,Q.slice(0,t))),o.join("")):String.fromCharCode.apply(String,Q.slice(0,t))}(E,A,A+e)};var r={env:{memory:I},options:{}};["onSection","onType","onTypeParam","onTypeReturn","onImport","onFunctionImport","onTableImport","onMemoryImport","onGlobalImport","onMemory","onFunction","onTable","onGlobal","onExport","onStart","onSourceMappingURL","onModuleName","onFunctionName","onLocalName"].forEach(function(A){return r.options[A]=n[A]||function(){}}),new WebAssembly.Instance(Q,r).exports.parse(0,o)};for(var t=new Array(123),B=0;B<64;)t[B<26?B+65:B<52?B+71:B<62?B-4:B-59|43]=B++},function(A,e,n){"use strict";e.__esModule=!0,function(A){A[A.i32=127]="i32",A[A.i64=126]="i64",A[A.f32=125]="f32",A[A.f64=124]="f64",A[A.anyfunc=112]="anyfunc",A[A.func=96]="func",A[A.none=64]="none"}(e.Type||(e.Type={})),function(A){A[A.Custom=0]="Custom",A[A.Type=1]="Type",A[A.Import=2]="Import",A[A.Function=3]="Function",A[A.Table=4]="Table",A[A.Memory=5]="Memory",A[A.Global=6]="Global",A[A.Export=7]="Export",A[A.Start=8]="Start",A[A.Element=9]="Element",A[A.Code=10]="Code",A[A.Data=11]="Data"}(e.SectionId||(e.SectionId={})),function(A){A[A.Function=0]="Function",A[A.Table=1]="Table",A[A.Memory=2]="Memory",A[A.Global=3]="Global"}(e.ExternalKind||(e.ExternalKind={})),function(A){A[A.Module=0]="Module",A[A.Function=1]="Function",A[A.Local=2]="Local"}(e.NameType||(e.NameType={})),e.MAX_PAGES=65535,e.MAX_ELEMS=4294967295,function(A){A[A.end=11]="end",A[A.get_global=35]="get_global",A[A.i32_const=65]="i32_const",A[A.i64_const=66]="i64_const",A[A.f32_const=67]="f32_const",A[A.f64_const=68]="f64_const"}(e.Opcode||(e.Opcode={}))}])}); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/parse/index.js.map b/lib/parse/index.js.map deleted file mode 100644 index 0253c777cb..0000000000 --- a/lib/parse/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://asparse/webpack/universalModuleDefinition","webpack://asparse/webpack/bootstrap","webpack://asparse/./src/index.ts","webpack://asparse/./src/common.ts"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","common_1","Type","SectionId","ExternalKind","compiled","parse","binary","options","WebAssembly","Module","string","length","charCodeAt","Math","ceil","buffer","Uint8Array","j","k","undefined","s64","Error","base64_decode","nBytes","nPages","memory","Memory","initial","set","readString","offset","start","end","parts","chunk","push","String","fromCharCode","apply","slice","join","utf8_read","imports","env","forEach","Instance","Array","NameType","MAX_PAGES","MAX_ELEMS","Opcode"],"mappings":"CAAA,SAAAA,EAAAC,GACA,iBAAAC,SAAA,iBAAAC,OACAA,OAAAD,QAAAD,IACA,mBAAAG,eAAAC,IACAD,UAAAH,GACA,iBAAAC,QACAA,QAAA,QAAAD,IAEAD,EAAA,QAAAC,IARA,CASC,oBAAAK,UAAAC,KAAA,WACD,mBCTA,IAAAC,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAR,QAGA,IAAAC,EAAAK,EAAAE,IACAC,EAAAD,EACAE,GAAA,EACAV,YAUA,OANAW,EAAAH,GAAAI,KAAAX,EAAAD,QAAAC,IAAAD,QAAAO,GAGAN,EAAAS,GAAA,EAGAT,EAAAD,QA0DA,OArDAO,EAAAM,EAAAF,EAGAJ,EAAAO,EAAAR,EAGAC,EAAAQ,EAAA,SAAAf,EAAAgB,EAAAC,GACAV,EAAAW,EAAAlB,EAAAgB,IACAG,OAAAC,eAAApB,EAAAgB,GAA0CK,YAAA,EAAAC,IAAAL,KAK1CV,EAAAgB,EAAA,SAAAvB,GACA,oBAAAwB,eAAAC,aACAN,OAAAC,eAAApB,EAAAwB,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAApB,EAAA,cAAiD0B,OAAA,KAQjDnB,EAAAoB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAAnB,EAAAmB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFAxB,EAAAgB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAAnB,EAAAQ,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAvB,EAAA2B,EAAA,SAAAjC,GACA,IAAAgB,EAAAhB,KAAA4B,WACA,WAA2B,OAAA5B,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAM,EAAAQ,EAAAE,EAAA,IAAAA,GACAA,GAIAV,EAAAW,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD7B,EAAAgC,EAAA,GAIAhC,IAAAiC,EAAA,kECjFAxC,EAAA6B,YAAA,EACA,IAAAY,EAAelC,EAAQ,GACvBP,EAAA0C,KAAAD,EAAAC,KACA1C,EAAA2C,UAAAF,EAAAE,UACA3C,EAAA4C,aAAAH,EAAAG,aAEA,IAAAC,EAAA,KAgDA7C,EAAA8C,MA5CA,SAAAA,EAAAC,EAAAC,GACAA,IACAA,MAEAH,IACAA,EAAA,IAAAI,YAAAC,OA4EA,SAAAC,GACA,IAAAC,EAAAD,EAAAC,OACA,GAAAA,EAAA,CAEA,IADA,IAAAlB,EAAA,EAAAK,EAAAa,IACAb,EAAA,UAAAY,EAAAE,WAAAd,MACAL,EACAkB,EAAAE,KAAAC,KAAA,EAAAH,GAAA,EAAAlB,EAIA,IAFA,IAAAsB,EAAA,IAAAC,WAAAL,GACAM,EAAA,EAAAxC,EAAA,EAAAS,EAAA,EACAlB,EAAA,EAAAkD,EAAAR,EAAAC,OAAsC3C,EAAAkD,GAAO,CAC7C,IAAA7C,EAAAqC,EAAAE,WAAA5C,KACA,QAAAK,GAAA4C,EAAA,EACA,MACA,QAAAE,KAAA9C,EAAA+C,EAAA/C,IACA,MAAAgD,QACA,OAAAJ,GACA,OACA/B,EAAAb,EACA4C,EAAA,EACA,MAEA,OACAF,EAAAtC,KAAAS,GAAA,MAAAb,IAAA,EACAa,EAAAb,EACA4C,EAAA,EACA,MAEA,OACAF,EAAAtC,MAAA,GAAAS,IAAA,MAAAb,IAAA,EACAa,EAAAb,EACA4C,EAAA,EACA,MAEA,OACAF,EAAAtC,MAAA,EAAAS,IAAA,EAAAb,EACA4C,EAAA,GAKA,OAAAA,EACA,MAAAI,QACA,OAAAN,EAvHAO,CAAwD,k5FAExD,IAAAC,EAAAjB,EAAAK,OACAa,GAAAD,EAAA,kBACAE,EAAA,IAAAjB,YAAAkB,QAAyCC,QAAAH,IACzCT,EAAA,IAAAC,WAAAS,EAAAV,QACAA,EAAAa,IAAAtB,GAEAD,EAAAwB,WAAA,SAAAC,EAAAnB,GAAkD,OAiClD,SAAAI,EAAAgB,EAAAC,GAEA,GADAA,EAAAD,EACA,EACA,SAGA,IAFA,IAAAE,EAAA,KAAAC,KAAAlE,EAAA,EACAkB,EAAA,EACA6C,EAAAC,IACA9C,EAAA6B,EAAAgB,MACA,IACAG,EAAAlE,KAAAkB,EAEAA,EAAA,KAAAA,EAAA,IACAgD,EAAAlE,MAAA,GAAAkB,IAAA,KAAA6B,EAAAgB,KAEA7C,EAAA,KAAAA,EAAA,KACAA,IAAA,EAAAA,IAAA,OAAA6B,EAAAgB,OAAA,OAAAhB,EAAAgB,OAAA,KAAAhB,EAAAgB,MAAA,MACAG,EAAAlE,KAAA,OAAAkB,GAAA,IACAgD,EAAAlE,KAAA,YAAAkB,IAGAgD,EAAAlE,MAAA,GAAAkB,IAAA,OAAA6B,EAAAgB,OAAA,KAAAhB,EAAAgB,KAEA/D,EAAA,QACAiE,WAAAE,KAAAC,OAAAC,aAAAC,MAAAF,OAAAF,IACAlE,EAAA,GAGA,OAAAiE,GACAjE,GACAiE,EAAAE,KAAAC,OAAAC,aAAAC,MAAAF,OAAAF,EAAAK,MAAA,EAAAvE,KACAiE,EAAAO,KAAA,KAEAJ,OAAAC,aAAAC,MAAAF,OAAAF,EAAAK,MAAA,EAAAvE,IAjEkDyE,CAAA1B,EAAAe,IAAAnB,IAElD,IAAA+B,GACAC,KACAlB,UAEAlB,aAEA,YACA,SACA,cACA,eACA,WACA,mBACA,gBACA,iBACA,iBACA,WACA,aACA,UACA,WACA,WACA,UACA,qBACA,eACA,iBACA,eACAqC,QAAA,SAAArE,GAA+B,OAAAmE,EAAAnC,QAAAhC,GAAAgC,EAAAhC,IAAA,eAC/B,IAAAiC,YAAAqC,SAAAzC,EAAAsC,GACAnF,QAAA8C,MAAA,EAAAkB,IAqFA,IADA,IAAAH,EAAA,IAAA0B,MAAA,KACA9E,EAAA,EAAeA,EAAA,IACfoD,EAAApD,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,EAAAA,EAAA,OAAAA,kCCzIAT,EAAA6B,YAAA,EAGA,SAAAa,GACAA,IAAA,eACAA,IAAA,eACAA,IAAA,eACAA,IAAA,eACAA,IAAA,uBACAA,IAAA,gBACAA,IAAA,gBAPA,CAQC1C,EAAA0C,OAAA1C,EAAA0C,UAGD,SAAAC,GACAA,IAAA,mBACAA,IAAA,eACAA,IAAA,mBACAA,IAAA,uBACAA,IAAA,iBACAA,IAAA,mBACAA,IAAA,mBACAA,IAAA,mBACAA,IAAA,iBACAA,IAAA,qBACAA,IAAA,gBACAA,IAAA,gBAZA,CAaC3C,EAAA2C,YAAA3C,EAAA2C,eAGD,SAAAC,GACAA,IAAA,uBACAA,IAAA,iBACAA,IAAA,mBACAA,IAAA,mBAJA,CAKC5C,EAAA4C,eAAA5C,EAAA4C,kBAGD,SAAA4C,GACAA,IAAA,mBACAA,IAAA,uBACAA,IAAA,iBAHA,CAICxF,EAAAwF,WAAAxF,EAAAwF,cAEDxF,EAAAyF,UAAA,MAEAzF,EAAA0F,UAAA,WAGA,SAAAC,GAOAA,IAAA,cAYAA,IAAA,4BA2BAA,IAAA,0BACAA,IAAA,0BACAA,IAAA,0BACAA,IAAA,0BAjDA,CA6KC3F,EAAA2F,SAAA3F,EAAA2F","file":"index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asparse\"] = factory();\n\telse\n\t\troot[\"asparse\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar common_1 = require(\"./common\");\r\nexports.Type = common_1.Type;\r\nexports.SectionId = common_1.SectionId;\r\nexports.ExternalKind = common_1.ExternalKind;\r\n/** Cached compiled parser. */\r\nvar compiled = null;\r\nif (typeof WASM_DATA !== \"string\")\r\n WASM_DATA = require(\"fs\").readFileSync(__dirname + \"/../build/index.wasm\", \"base64\");\r\n/** Parses the contents of a WebAssembly binary according to the specified options. */\r\nfunction parse(binary, options) {\r\n if (!options)\r\n options = {};\r\n // compile the parser if not yet compiled\r\n if (!compiled)\r\n compiled = new WebAssembly.Module(base64_decode(WASM_DATA));\r\n // use the binary as the parser's memory\r\n var nBytes = binary.length;\r\n var nPages = ((nBytes + 0xffff) & ~0xffff) >> 16;\r\n var memory = new WebAssembly.Memory({ initial: nPages });\r\n var buffer = new Uint8Array(memory.buffer);\r\n buffer.set(binary);\r\n // provide a way to read strings from memory\r\n parse.readString = function (offset, length) { return utf8_read(buffer, offset, offset + length); };\r\n // instantiate the parser and return its exports\r\n var imports = {\r\n env: {\r\n memory: memory\r\n },\r\n options: {}\r\n };\r\n [\"onSection\",\r\n \"onType\",\r\n \"onTypeParam\",\r\n \"onTypeReturn\",\r\n \"onImport\",\r\n \"onFunctionImport\",\r\n \"onTableImport\",\r\n \"onMemoryImport\",\r\n \"onGlobalImport\",\r\n \"onMemory\",\r\n \"onFunction\",\r\n \"onTable\",\r\n \"onGlobal\",\r\n \"onExport\",\r\n \"onStart\",\r\n \"onSourceMappingURL\",\r\n \"onModuleName\",\r\n \"onFunctionName\",\r\n \"onLocalName\"\r\n ].forEach(function (name) { return imports.options[name] = options[name] || function () { }; });\r\n var instance = new WebAssembly.Instance(compiled, imports);\r\n instance.exports.parse(0, nBytes);\r\n}\r\nexports.parse = parse;\r\n// see: https://github.com/dcodeIO/protobuf.js/tree/master/lib/utf8\r\nfunction utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null, chunk = [], i = 0, // char offset\r\n t = 0; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128) {\r\n chunk[i++] = t;\r\n }\r\n else if (t > 191 && t < 224) {\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n }\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n }\r\n else {\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n}\r\n// see: https://github.com/dcodeIO/protobuf.js/tree/master/lib/base64\r\nfunction base64_decode(string) {\r\n var length = string.length;\r\n if (length) {\r\n var n = 0, p = length;\r\n while (--p % 4 > 1 && string.charCodeAt(p) === 61)\r\n ++n;\r\n length = Math.ceil(length * 3) / 4 - n;\r\n }\r\n var buffer = new Uint8Array(length);\r\n var j = 0, o = 0, t = 0;\r\n for (var i = 0, k = string.length; i < k;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error();\r\n switch (j) {\r\n case 0: {\r\n t = c;\r\n j = 1;\r\n break;\r\n }\r\n case 1: {\r\n buffer[o++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n }\r\n case 2: {\r\n buffer[o++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n }\r\n case 3: {\r\n buffer[o++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n }\r\n if (j === 1)\r\n throw Error();\r\n return buffer;\r\n}\r\nvar s64 = new Array(123);\r\nfor (var i = 0; i < 64;)\r\n s64[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n","\"use strict\";\r\n/** Common constants shared between AssemblyScript and TypeScript. */\r\nexports.__esModule = true;\r\n/** WebAssembly types. */\r\nvar Type;\r\n(function (Type) {\r\n Type[Type[\"i32\"] = 127] = \"i32\";\r\n Type[Type[\"i64\"] = 126] = \"i64\";\r\n Type[Type[\"f32\"] = 125] = \"f32\";\r\n Type[Type[\"f64\"] = 124] = \"f64\";\r\n Type[Type[\"anyfunc\"] = 112] = \"anyfunc\";\r\n Type[Type[\"func\"] = 96] = \"func\";\r\n Type[Type[\"none\"] = 64] = \"none\";\r\n})(Type = exports.Type || (exports.Type = {}));\r\n/** WebAssembly section ids. */\r\nvar SectionId;\r\n(function (SectionId) {\r\n SectionId[SectionId[\"Custom\"] = 0] = \"Custom\";\r\n SectionId[SectionId[\"Type\"] = 1] = \"Type\";\r\n SectionId[SectionId[\"Import\"] = 2] = \"Import\";\r\n SectionId[SectionId[\"Function\"] = 3] = \"Function\";\r\n SectionId[SectionId[\"Table\"] = 4] = \"Table\";\r\n SectionId[SectionId[\"Memory\"] = 5] = \"Memory\";\r\n SectionId[SectionId[\"Global\"] = 6] = \"Global\";\r\n SectionId[SectionId[\"Export\"] = 7] = \"Export\";\r\n SectionId[SectionId[\"Start\"] = 8] = \"Start\";\r\n SectionId[SectionId[\"Element\"] = 9] = \"Element\";\r\n SectionId[SectionId[\"Code\"] = 10] = \"Code\";\r\n SectionId[SectionId[\"Data\"] = 11] = \"Data\";\r\n})(SectionId = exports.SectionId || (exports.SectionId = {}));\r\n/** WebAssembly external kinds. */\r\nvar ExternalKind;\r\n(function (ExternalKind) {\r\n ExternalKind[ExternalKind[\"Function\"] = 0] = \"Function\";\r\n ExternalKind[ExternalKind[\"Table\"] = 1] = \"Table\";\r\n ExternalKind[ExternalKind[\"Memory\"] = 2] = \"Memory\";\r\n ExternalKind[ExternalKind[\"Global\"] = 3] = \"Global\";\r\n})(ExternalKind = exports.ExternalKind || (exports.ExternalKind = {}));\r\n/** Name section types. */\r\nvar NameType;\r\n(function (NameType) {\r\n NameType[NameType[\"Module\"] = 0] = \"Module\";\r\n NameType[NameType[\"Function\"] = 1] = \"Function\";\r\n NameType[NameType[\"Local\"] = 2] = \"Local\";\r\n})(NameType = exports.NameType || (exports.NameType = {}));\r\n/** Maximum number of memory pages. */\r\nexports.MAX_PAGES = 0xffff;\r\n/** Maximum number of table elements. */\r\nexports.MAX_ELEMS = 0xffffffff;\r\n/** WebAssembly opcodes. */\r\nvar Opcode;\r\n(function (Opcode) {\r\n // unreachable = 0x00,\r\n // nop = 0x01,\r\n // block = 0x02,\r\n // loop = 0x03,\r\n // if_ = 0x04,\r\n // else_ = 0x05,\r\n Opcode[Opcode[\"end\"] = 11] = \"end\";\r\n // br = 0x0c,\r\n // br_if = 0x0d,\r\n // br_table = 0x0e,\r\n // return_ = 0x0f,\r\n // call = 0x10,\r\n // call_indirect = 0x11,\r\n // drop = 0x1a,\r\n // select = 0x1b,\r\n // get_local = 0x20,\r\n // set_local = 0x21,\r\n // tee_local = 0x22,\r\n Opcode[Opcode[\"get_global\"] = 35] = \"get_global\";\r\n // set_global = 0x24,\r\n // i32_load = 0x28,\r\n // i64_load = 0x29,\r\n // f32_load = 0x2a,\r\n // f64_load = 0x2b,\r\n // i32_load8_s = 0x2c,\r\n // i32_load8_u = 0x2d,\r\n // i32_load16_s = 0x2e,\r\n // i32_load16_u = 0x2f,\r\n // i64_load8_s = 0x30,\r\n // i64_load8_u = 0x31,\r\n // i64_load16_s = 0x32,\r\n // i64_load16_u = 0x33,\r\n // i64_load32_s = 0x34,\r\n // i64_load32_u = 0x35,\r\n // i32_store = 0x36,\r\n // i64_store = 0x37,\r\n // f32_store = 0x38,\r\n // f64_store = 0x39,\r\n // i32_store8 = 0x3a,\r\n // i32_store16 = 0x3b,\r\n // i64_store8 = 0x3c,\r\n // i64_store16 = 0x3d,\r\n // i64_store32 = 0x3e,\r\n // current_memory = 0x3f,\r\n // grow_memory = 0x40,\r\n Opcode[Opcode[\"i32_const\"] = 65] = \"i32_const\";\r\n Opcode[Opcode[\"i64_const\"] = 66] = \"i64_const\";\r\n Opcode[Opcode[\"f32_const\"] = 67] = \"f32_const\";\r\n Opcode[Opcode[\"f64_const\"] = 68] = \"f64_const\";\r\n // i32_eqz = 0x45,\r\n // i32_eq = 0x46,\r\n // i32_ne = 0x47,\r\n // i32_lt_s = 0x48,\r\n // i32_lt_u = 0x49,\r\n // i32_gt_s = 0x4a,\r\n // i32_gt_u = 0x4b,\r\n // i32_le_s = 0x4c,\r\n // i32_le_u = 0x4d,\r\n // i32_ge_s = 0x4e,\r\n // i32_ge_u = 0x4f,\r\n // i64_eqz = 0x50,\r\n // i64_eq = 0x51,\r\n // i64_ne = 0x52,\r\n // i64_lt_s = 0x53,\r\n // i64_lt_u = 0x54,\r\n // i64_gt_s = 0x55,\r\n // i64_gt_u = 0x56,\r\n // i64_le_s = 0x57,\r\n // i64_le_u = 0x58,\r\n // i64_ge_s = 0x59,\r\n // i64_ge_u = 0x5a,\r\n // f32_eq = 0x5b,\r\n // f32_ne = 0x5c,\r\n // f32_lt = 0x5d,\r\n // f32_gt = 0x5e,\r\n // f32_le = 0x5f,\r\n // f32_ge = 0x60,\r\n // f64_eq = 0x61,\r\n // f64_ne = 0x62,\r\n // f64_lt = 0x63,\r\n // f64_gt = 0x64,\r\n // f64_le = 0x65,\r\n // f64_ge = 0x66,\r\n // i32_clz = 0x67,\r\n // i32_ctz = 0x68,\r\n // i32_popcnt = 0x69,\r\n // i32_add = 0x6a,\r\n // i32_sub = 0x6b,\r\n // i32_mul = 0x6c,\r\n // i32_div_s = 0x6d,\r\n // i32_div_u = 0x6e,\r\n // i32_rem_s = 0x6f,\r\n // i32_rem_u = 0x70,\r\n // i32_and = 0x71,\r\n // i32_or = 0x72,\r\n // i32_xor = 0x73,\r\n // i32_shl = 0x74,\r\n // i32_shr_s = 0x75,\r\n // i32_shr_u = 0x76,\r\n // i32_rotl = 0x77,\r\n // i32_rotr = 0x78,\r\n // i64_clz = 0x79,\r\n // i64_ctz = 0x7a,\r\n // i64_popcnt = 0x7b,\r\n // i64_add = 0x7c,\r\n // i64_sub = 0x7d,\r\n // i64_mul = 0x7e,\r\n // i64_div_s = 0x7f,\r\n // i64_div_u = 0x80,\r\n // i64_rem_s = 0x81,\r\n // i64_rem_u = 0x82,\r\n // i64_and = 0x83,\r\n // i64_or = 0x84,\r\n // i64_xor = 0x85,\r\n // i64_shl = 0x86,\r\n // i64_shr_s = 0x87,\r\n // i64_shr_u = 0x88,\r\n // i64_rotl = 0x89,\r\n // i64_rotr = 0x8a,\r\n // f32_abs = 0x8b,\r\n // f32_neg = 0x8c,\r\n // f32_ceil = 0x8d,\r\n // f32_floor = 0x8e,\r\n // f32_trunc = 0x8f,\r\n // f32_nearest = 0x90,\r\n // f32_sqrt = 0x91,\r\n // f32_add = 0x92,\r\n // f32_sub = 0x93,\r\n // f32_mul = 0x94,\r\n // f32_div = 0x95,\r\n // f32_min = 0x96,\r\n // f32_max = 0x97,\r\n // f32_copysign = 0x98,\r\n // f64_abs = 0x99,\r\n // f64_neg = 0x9a,\r\n // f64_ceil = 0x9b,\r\n // f64_floor = 0x9c,\r\n // f64_trunc = 0x9d,\r\n // f64_nearest = 0x9e,\r\n // f64_sqrt = 0x9f,\r\n // f64_add = 0xa0,\r\n // f64_sub = 0xa1,\r\n // f64_mul = 0xa2,\r\n // f64_div = 0xa3,\r\n // f64_min = 0xa4,\r\n // f64_max = 0xa5,\r\n // f64_copysign = 0xa6,\r\n // i32_wrap_i64 = 0xa7,\r\n // i32_trunc_s_f32 = 0xa8,\r\n // i32_trunc_u_f32 = 0xa9,\r\n // i32_trunc_s_f64 = 0xaa,\r\n // i32_trunc_u_f64 = 0xab,\r\n // i64_extend_s_i32 = 0xac,\r\n // i64_extend_u_i32 = 0xad,\r\n // i64_trunc_s_f32 = 0xae,\r\n // i64_trunc_u_f32 = 0xaf,\r\n // i64_trunc_s_f64 = 0xb0,\r\n // i64_trunc_u_f64 = 0xb1,\r\n // f32_convert_s_i32 = 0xb2,\r\n // f32_convert_u_i32 = 0xb3,\r\n // f32_convert_s_i64 = 0xb4,\r\n // f32_convert_u_i64 = 0xb5,\r\n // f32_demote_f64 = 0xb6,\r\n // f64_convert_s_i32 = 0xb7,\r\n // f64_convert_u_i32 = 0xb8,\r\n // f64_convert_s_i64 = 0xb9,\r\n // f64_convert_u_i64 = 0xba,\r\n // f64_promote_f32 = 0xbb,\r\n // i32_reinterpret_f32 = 0xbc,\r\n // i64_reinterpret_f64 = 0xbd,\r\n // f32_reinterpret_i32 = 0xbe,\r\n // f64_reinterpret_i64 = 0xbf\r\n})(Opcode = exports.Opcode || (exports.Opcode = {}));\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/parse/package.json b/lib/parse/package.json deleted file mode 100644 index f91a68c569..0000000000 --- a/lib/parse/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "@assemblyscript/parse", - "version": "1.0.0", - "license": "Apache-2.0", - "main": "index.js", - "types": "index.d.ts", - "scripts": { - "asbuild": "asc assembly/index.ts -O3 -b build/index.wasm -t build/index.wat --importMemory --runtime none --sourceMap", - "build": "npm run asbuild && webpack --mode production --display-modules", - "test": "ts-node tests/" - }, - "files": [ - "package.json", - "index.d.ts", - "index.js", - "index.js.map", - "src/", - "README.md" - ], - "dependencies": {}, - "devDependencies": { - "@types/webassembly-js-api": "0.0.1", - "assemblyscript": "AssemblyScript/assemblyscript", - "ts-loader": "^5.2.1", - "ts-node": "^6.2.0", - "typescript": "^3.1.2", - "webpack": "^4.20.2", - "webpack-cli": "^3.1.2" - } -} diff --git a/lib/parse/src/common.ts b/lib/parse/src/common.ts deleted file mode 100644 index e45100db5f..0000000000 --- a/lib/parse/src/common.ts +++ /dev/null @@ -1,225 +0,0 @@ -/** Common constants shared between AssemblyScript and TypeScript. */ - -/** WebAssembly types. */ -export enum Type { - i32 = 0x7f, - i64 = 0x7e, - f32 = 0x7d, - f64 = 0x7c, - anyfunc = 0x70, - func = 0x60, - none = 0x40 -} - -/** WebAssembly section ids. */ -export enum SectionId { - Custom = 0, - Type = 1, - Import = 2, - Function = 3, - Table = 4, - Memory = 5, - Global = 6, - Export = 7, - Start = 8, - Element = 9, - Code = 10, - Data = 11 -} - -/** WebAssembly external kinds. */ -export enum ExternalKind { - Function = 0, - Table = 1, - Memory = 2, - Global = 3 -} - -/** Name section types. */ -export enum NameType { - Module = 0, - Function = 1, - Local = 2 -} - -/** Maximum number of memory pages. */ -export const MAX_PAGES = 0xffff; - -/** Maximum number of table elements. */ -export const MAX_ELEMS = 0xffffffff; - -/** WebAssembly opcodes. */ -export enum Opcode { // just a few of these are actually used - // unreachable = 0x00, - // nop = 0x01, - // block = 0x02, - // loop = 0x03, - // if_ = 0x04, - // else_ = 0x05, - end = 0x0b, - // br = 0x0c, - // br_if = 0x0d, - // br_table = 0x0e, - // return_ = 0x0f, - // call = 0x10, - // call_indirect = 0x11, - // drop = 0x1a, - // select = 0x1b, - // get_local = 0x20, - // set_local = 0x21, - // tee_local = 0x22, - get_global = 0x23, - // set_global = 0x24, - // i32_load = 0x28, - // i64_load = 0x29, - // f32_load = 0x2a, - // f64_load = 0x2b, - // i32_load8_s = 0x2c, - // i32_load8_u = 0x2d, - // i32_load16_s = 0x2e, - // i32_load16_u = 0x2f, - // i64_load8_s = 0x30, - // i64_load8_u = 0x31, - // i64_load16_s = 0x32, - // i64_load16_u = 0x33, - // i64_load32_s = 0x34, - // i64_load32_u = 0x35, - // i32_store = 0x36, - // i64_store = 0x37, - // f32_store = 0x38, - // f64_store = 0x39, - // i32_store8 = 0x3a, - // i32_store16 = 0x3b, - // i64_store8 = 0x3c, - // i64_store16 = 0x3d, - // i64_store32 = 0x3e, - // current_memory = 0x3f, - // grow_memory = 0x40, - i32_const = 0x41, - i64_const = 0x42, - f32_const = 0x43, - f64_const = 0x44 - // i32_eqz = 0x45, - // i32_eq = 0x46, - // i32_ne = 0x47, - // i32_lt_s = 0x48, - // i32_lt_u = 0x49, - // i32_gt_s = 0x4a, - // i32_gt_u = 0x4b, - // i32_le_s = 0x4c, - // i32_le_u = 0x4d, - // i32_ge_s = 0x4e, - // i32_ge_u = 0x4f, - // i64_eqz = 0x50, - // i64_eq = 0x51, - // i64_ne = 0x52, - // i64_lt_s = 0x53, - // i64_lt_u = 0x54, - // i64_gt_s = 0x55, - // i64_gt_u = 0x56, - // i64_le_s = 0x57, - // i64_le_u = 0x58, - // i64_ge_s = 0x59, - // i64_ge_u = 0x5a, - // f32_eq = 0x5b, - // f32_ne = 0x5c, - // f32_lt = 0x5d, - // f32_gt = 0x5e, - // f32_le = 0x5f, - // f32_ge = 0x60, - // f64_eq = 0x61, - // f64_ne = 0x62, - // f64_lt = 0x63, - // f64_gt = 0x64, - // f64_le = 0x65, - // f64_ge = 0x66, - // i32_clz = 0x67, - // i32_ctz = 0x68, - // i32_popcnt = 0x69, - // i32_add = 0x6a, - // i32_sub = 0x6b, - // i32_mul = 0x6c, - // i32_div_s = 0x6d, - // i32_div_u = 0x6e, - // i32_rem_s = 0x6f, - // i32_rem_u = 0x70, - // i32_and = 0x71, - // i32_or = 0x72, - // i32_xor = 0x73, - // i32_shl = 0x74, - // i32_shr_s = 0x75, - // i32_shr_u = 0x76, - // i32_rotl = 0x77, - // i32_rotr = 0x78, - // i64_clz = 0x79, - // i64_ctz = 0x7a, - // i64_popcnt = 0x7b, - // i64_add = 0x7c, - // i64_sub = 0x7d, - // i64_mul = 0x7e, - // i64_div_s = 0x7f, - // i64_div_u = 0x80, - // i64_rem_s = 0x81, - // i64_rem_u = 0x82, - // i64_and = 0x83, - // i64_or = 0x84, - // i64_xor = 0x85, - // i64_shl = 0x86, - // i64_shr_s = 0x87, - // i64_shr_u = 0x88, - // i64_rotl = 0x89, - // i64_rotr = 0x8a, - // f32_abs = 0x8b, - // f32_neg = 0x8c, - // f32_ceil = 0x8d, - // f32_floor = 0x8e, - // f32_trunc = 0x8f, - // f32_nearest = 0x90, - // f32_sqrt = 0x91, - // f32_add = 0x92, - // f32_sub = 0x93, - // f32_mul = 0x94, - // f32_div = 0x95, - // f32_min = 0x96, - // f32_max = 0x97, - // f32_copysign = 0x98, - // f64_abs = 0x99, - // f64_neg = 0x9a, - // f64_ceil = 0x9b, - // f64_floor = 0x9c, - // f64_trunc = 0x9d, - // f64_nearest = 0x9e, - // f64_sqrt = 0x9f, - // f64_add = 0xa0, - // f64_sub = 0xa1, - // f64_mul = 0xa2, - // f64_div = 0xa3, - // f64_min = 0xa4, - // f64_max = 0xa5, - // f64_copysign = 0xa6, - // i32_wrap_i64 = 0xa7, - // i32_trunc_s_f32 = 0xa8, - // i32_trunc_u_f32 = 0xa9, - // i32_trunc_s_f64 = 0xaa, - // i32_trunc_u_f64 = 0xab, - // i64_extend_s_i32 = 0xac, - // i64_extend_u_i32 = 0xad, - // i64_trunc_s_f32 = 0xae, - // i64_trunc_u_f32 = 0xaf, - // i64_trunc_s_f64 = 0xb0, - // i64_trunc_u_f64 = 0xb1, - // f32_convert_s_i32 = 0xb2, - // f32_convert_u_i32 = 0xb3, - // f32_convert_s_i64 = 0xb4, - // f32_convert_u_i64 = 0xb5, - // f32_demote_f64 = 0xb6, - // f64_convert_s_i32 = 0xb7, - // f64_convert_u_i32 = 0xb8, - // f64_convert_s_i64 = 0xb9, - // f64_convert_u_i64 = 0xba, - // f64_promote_f32 = 0xbb, - // i32_reinterpret_f32 = 0xbc, - // i64_reinterpret_f64 = 0xbd, - // f32_reinterpret_i32 = 0xbe, - // f64_reinterpret_i64 = 0xbf -} diff --git a/lib/parse/src/index.ts b/lib/parse/src/index.ts deleted file mode 100644 index ebd48a3541..0000000000 --- a/lib/parse/src/index.ts +++ /dev/null @@ -1,165 +0,0 @@ -import { Type, SectionId, ExternalKind } from "./common"; -export { Type, SectionId, ExternalKind }; - -/** Cached compiled parser. */ -var compiled: WebAssembly.Module | null = null; - -declare var WASM_DATA: string; // injected by webpack -if (typeof WASM_DATA !== "string") { - // eslint-disable-next-line @typescript-eslint/no-var-requires - WASM_DATA = require("fs").readFileSync(__dirname + "/../build/index.wasm", "base64"); -} - -/** Options specified to the parser. The `onSection` callback determines the sections being evaluated in detail. */ -export interface ParseOptions { - /** Called with each section in the binary. Returning `true` evaluates the section. */ - onSection?(id: SectionId, payloadOff: number, payloadLen: number, nameOff: number, nameLen: number): boolean; - /** Called with each function type if the type section is evaluated. */ - onType?(index: number, form: number): void; - /** Called with each function parameter if the type section is evaluated. */ - onTypeParam?(index: number, paramIndex: number, paramType: Type): void; - /** Called with each function return type if the type section is evaluated. */ - onTypeReturn?(index: number, returnIndex: number, returnType: Type): void; - /** Called with each import if the import section is evaluated. */ - onImport?(index: number, kind: ExternalKind, moduleOff: number, moduleLen: number, fieldOff: number, fieldLen: number): void; - /** Called with each function import if the import section is evaluated. */ - onFunctionImport?(index: number, type: number): void; - /** Called with each table import if the import section is evaluated. */ - onTableImport?(index: number, type: Type, initial: number, maximum: number, flags: number): void; - /** Called with each memory import if the import section is evaluated. */ - onMemoryImport?(index: number, initial: number, maximum: number, flags: number): void; - /** Called with each global import if the import section is evaluated. */ - onGlobalImport?(index: number, type: Type, mutability: number): void; - /** Called with each memory if the memory section is evaluated.*/ - onMemory?(index: number, initial: number, maximum: number, flags: number): void; - /** Called with each function if the function section is evaluated. */ - onFunction?(index: number, typeIndex: number): void; - /** Called with each table if the table section is evaluated.*/ - onTable?(index: number, type: Type, initial: number, maximum: number, flags: number): void; - /** Called with each global if the global section is evaluated. */ - onGlobal?(index: number, type: Type, mutability: number): void; - /** Called with the start function index if the start section is evaluated. */ - onStart?(index: number): void; - /** Called with each export if the export section is evaluated. */ - onExport?(index: number, kind: ExternalKind, kindIndex: number, nameOff: number, nameLen: number): void; - /** Called with the source map URL if the 'sourceMappingURL' section is evaluated. */ - onSourceMappingURL?(offset: number, length: number): void; - /** Called with the module name if present and the 'name' section is evaluated. */ - onModuleName?(offset: number, length: number): void; - /** Called with each function name if present and the 'name' section is evaluated. */ - onFunctionName?(index: number, offset: number, length: number): void; - /** Called with each local name if present and the 'name' section is evaluated. */ - onLocalName?(funcIndex: number, index: number, offset: number, length: number): void; -} - -/** Parses the contents of a WebAssembly binary according to the specified options. */ -export function parse(binary: Uint8Array, options?: ParseOptions): void { - if (!options) options = {}; - - // compile the parser if not yet compiled - if (!compiled) compiled = new WebAssembly.Module(base64_decode(WASM_DATA)); - - // use the binary as the parser's memory - var nBytes = binary.length; - var nPages = ((nBytes + 0xffff) & ~0xffff) >> 16; - var memory = new WebAssembly.Memory({ initial: nPages }); - var buffer = new Uint8Array(memory.buffer); - buffer.set(binary); - - // provide a way to read strings from memory - parse.readString = (offset: number, length: number): string => utf8_read(buffer, offset, offset + length); - - // instantiate the parser and return its exports - var imports = { - env: { - memory - }, - options: {} - }; - [ "onSection", - "onType", - "onTypeParam", - "onTypeReturn", - "onImport", - "onFunctionImport", - "onTableImport", - "onMemoryImport", - "onGlobalImport", - "onMemory", - "onFunction", - "onTable", - "onGlobal", - "onExport", - "onStart", - "onSourceMappingURL", - "onModuleName", - "onFunctionName", - "onLocalName" - ].forEach((name: string) => imports.options[name] = options[name] || function() { /* nop */ }); - var instance = new WebAssembly.Instance(compiled, imports); - instance.exports.parse(0, nBytes); -} - -export declare namespace parse { - /** Utility function for reading an UTF8 encoded string from memory while parsing. */ - function readString(offset: number, length: number): string; -} - -// see: https://github.com/dcodeIO/protobuf.js/tree/master/lib/utf8 -function utf8_read(buffer: Uint8Array, start: number, end: number): string { - var len = end - start; - if (len < 1) return ""; - var parts: string[] | null = null, chunk: number[] = []; - var i = 0, t = 0; // char offset and temporary - while (start < end) { - t = buffer[start++]; - if (t < 128) { - chunk[i++] = t; - } else if (t > 191 && t < 224) { - chunk[i++] = (t & 31) << 6 | buffer[start++] & 63; - } else if (t > 239 && t < 365) { - t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000; - chunk[i++] = 0xD800 + (t >> 10); - chunk[i++] = 0xDC00 + (t & 1023); - } else { - chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63; - } - if (i > 8191) { - (parts || (parts = [])).push(String.fromCharCode(...chunk)); - i = 0; - } - } - if (parts) { - if (i) parts.push(String.fromCharCode(...chunk.slice(0, i))); - return parts.join(""); - } - return String.fromCharCode(...chunk.slice(0, i)); -} - -// see: https://github.com/dcodeIO/protobuf.js/tree/master/lib/base64 -function base64_decode(string: string): Uint8Array { - var length = string.length; - if (length) { - let n = 0, p = length; - while (--p % 4 > 1 && string.charCodeAt(p) === 61) ++n; - length = Math.ceil(length * 3) / 4 - n; - } - var buffer = new Uint8Array(length); - var j = 0, o = 0, t = 0; - for (let i = 0, k = string.length; i < k;) { - let c = string.charCodeAt(i++); - if (c === 61 && j > 1) break; - if ((c = s64[c]) === undefined) throw Error(); - switch (j) { - case 0: { t = c; j = 1; break; } - case 1: { buffer[o++] = t << 2 | (c & 48) >> 4; t = c; j = 2; break; } - case 2: { buffer[o++] = (t & 15) << 4 | (c & 60) >> 2; t = c; j = 3; break; } - case 3: { buffer[o++] = (t & 3) << 6 | c; j = 0; break; } - } - } - if (j === 1) throw Error(); - return buffer; -} - -var s64 = new Array(123); -for (let i = 0; i < 64;) s64[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++; diff --git a/lib/parse/src/tsconfig.json b/lib/parse/src/tsconfig.json deleted file mode 100644 index 6aaa787469..0000000000 --- a/lib/parse/src/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs" - }, - "include": [ - "./**/*.ts" - ] -} diff --git a/lib/parse/tests/index.ts b/lib/parse/tests/index.ts deleted file mode 100644 index 3ca12d4c62..0000000000 --- a/lib/parse/tests/index.ts +++ /dev/null @@ -1,121 +0,0 @@ -import * as fs from "fs"; -import { - Type, - SectionId, - ExternalKind, - parse -} from ".."; - -function onSection(id: SectionId, offset: number, length: number, nameOffset: number, nameLength: number): boolean { - var name = id == 0 ? "'" + parse.readString(nameOffset, nameLength) + "'" : SectionId[id]; - console.log(name + " section at " + offset + ".." + (offset + length)); - return true; -} - -function onType(index: number, form: Type): void { - console.log("- FunctionType[" + index + "]: " + Type[form]); -} - -function onTypeParam(index: number, paramIndex: number, paramType: Type): void { - console.log(" > param[" + paramIndex + "] -> " + Type[paramType]); -} - -function onTypeReturn(index: number, returnIndex: number, returnType: Type): void { - console.log(" > return[" + returnIndex + "] -> " + Type[returnType]); -} - -function onImport(index: number, kind: ExternalKind, moduleOff: number, moduleLen: number, fieldOff: number, fieldLen: number): void { - var moduleName = parse.readString(moduleOff, moduleLen); - var fieldName = parse.readString(fieldOff, fieldLen); - console.log("- Import[" + index + "]: '" + moduleName + "." + fieldName + "'"); -} - -function onFunctionImport(funIndex: number, type: number): void { - console.log(" - Function[" + funIndex + "] -> FunctionType[" + type + "]"); -} - -function onTableImport(tblIndex: number, type: Type, initial: number, maximum: number, flags: number): void { - console.log(" - Table[" + tblIndex + "] -> " + Type[type] + ": initial=" + initial + ", maximum=" + maximum); -} - -function onMemoryImport(memIndex: number, initial: number, maximum: number, flags: number): void { - console.log(" - Memory[" + memIndex + "]: initial=" + initial + ", maximum=" + maximum); -} - -function onGlobalImport(gloIndex: number, type: Type, mutability: number): void { - console.log(" - Global[" + gloIndex + "]: " + (mutability & 1 ? "mutable " : "const ") + Type[type]); -} - -function onMemory(memIndex: number, initial: number, maximum: number, flags: number): void { - console.log("- Memory[" + memIndex + "]: initial=" + initial + ", maximum=" + maximum); -} - -function onFunction(funIndex: number, typeIndex: number): void { - console.log("- Function[" + funIndex + "] -> FunctionType[" + typeIndex + "]"); -} - -function onTable(tblIndex: number, type: number, initial: number, maximum: number, flags: number): void { - console.log("- Table[" + tblIndex + "] -> " + Type[type] + ": initial=" + initial + ", maximum=" + (maximum >>> 0)); -} - -function onGlobal(gloIndex: number, type: Type, mutability: number): void { - console.log("- Global[" + gloIndex + "]: " + (mutability & 1 ? "mutable " : "const ") + Type[type]); -} - -function onStart(index: number): void { - console.log("- Start: Function[" + index + "]"); -} - -function onExport(index: number, kind: ExternalKind, kindIndex: number, fieldOffset: number, fieldLength: number): void { - var field = parse.readString(fieldOffset, fieldLength); - console.log("- Export[" + index + "], '" + field + "' -> " + ExternalKind[kind] + "[" + kindIndex + "]"); -} - -function onSourceMappingURL(offset: number, length: number): void { - var url = parse.readString(offset, length); - console.log("- sourceMap: " + url); -} - -function onModuleName(offset: number, length: number): void { - var name = parse.readString(offset, length); - console.log("- moduleName: " + name); -} - -function onFunctionName(index: number, offset: number, length: number): void { - var name = parse.readString(offset, length); - console.log(" - Function[" + index + "] name: " + name); -} - -function onLocalName(funcIndex: number, index: number, offset: number, length: number): void { - var name = parse.readString(offset, length); - console.log(" - Function[" + funcIndex + "].local[" + index + "] name: " + name); -} - -[ "../build/index.wasm", - "libm.wasm" -].forEach((filename: string): void => { - const binary: Uint8Array = fs.readFileSync(__dirname + "/" + filename); - console.log("Testing '" + filename + "' ..."); - parse(binary, { - onSection, - onType, - onTypeParam, - onTypeReturn, - onImport, - onFunctionImport, - onTableImport, - onMemoryImport, - onGlobalImport, - onMemory, - onFunction, - onTable, - onGlobal, - onStart, - onExport, - onSourceMappingURL, - onModuleName, - onFunctionName, - onLocalName - }); - console.log(); -}); diff --git a/lib/parse/tests/libm.wasm b/lib/parse/tests/libm.wasm deleted file mode 100644 index 44467da623..0000000000 Binary files a/lib/parse/tests/libm.wasm and /dev/null differ diff --git a/lib/parse/webpack.config.js b/lib/parse/webpack.config.js deleted file mode 100644 index 61fee7db6f..0000000000 --- a/lib/parse/webpack.config.js +++ /dev/null @@ -1,36 +0,0 @@ -const fs = require("fs"); -const webpack = require("webpack"); - -const wasmData = fs.readFileSync(__dirname + "/build/index.wasm"); - -module.exports = { - entry: [ "./src/index.ts" ], - module: { - rules: [ - { - test: /\.ts$/, - use: "ts-loader", - exclude: /node_modules/ - } - ] - }, - resolve: { - extensions: [ ".ts", ".js" ] - }, - node: { - fs: false - }, - output: { - filename: "index.js", - path: __dirname, - library: "asparse", - libraryTarget: "umd", - globalObject: "typeof self !== 'undefined' ? self : this" - }, - plugins: [ - new webpack.DefinePlugin({ - WASM_DATA: JSON.stringify(wasmData.toString("base64")) - }) - ], - devtool: "source-map" -}; diff --git a/lib/rtrace/README.md b/lib/rtrace/README.md index 326fbbe4be..622f41a1fd 100644 --- a/lib/rtrace/README.md +++ b/lib/rtrace/README.md @@ -1,21 +1,36 @@ -# RTrace +# AssemblyScript Rtrace -A tiny utility that records allocations, retains, releases and frees performed by the runtime and emits an error if something is off. Also checks for leaks. +A tiny utility to sanitize the AssemblyScript runtime. Records allocations and frees performed by the runtime and emits an error if something is off. Also checks for leaks. Instructions ------------ -Compile your module that uses the full or half runtime with `-use ASC_RTRACE=1` and include an instance of this module as the import named `rtrace`. +Compile your module that uses the full or half runtime with `-use ASC_RTRACE=1 --exportStart _initialize` and include an instance of this module as the import named `rtrace`. ```js -var rtr = rtrace(e => { - // handle error +const rtrace = new Rtrace({ + onerror(err, info) { + // handle error + }, + oninfo(msg) { + // print message, optional + }, + getMemory() { + // obtain the module's memory, + // e.g. using --exportStart: + return instance.exports.memory; + } }); -WebAssembly.instantiate(..., { rtrace: rtr, ... }); +const { module, instance } = await WebAssembly.instantiate(..., + rtrace.install({ + ...imports... + }) +); +instance.exports._initialize(); ... -if (rtr.active) { +if (rtrace.active) { let leakCount = rtr.check(); if (leakCount) { // handle error @@ -23,4 +38,4 @@ if (rtr.active) { } ``` -Note that references retained in globals which are not cleared before execution concludes appear as leaks, including their inner members. A TypedArray would leak itself and its backing ArrayBuffer in this case for example. This is perfectly normal and clearing all globals avoids this. +Note that references in globals which are not cleared before collection is performed appear as leaks, including their inner members. A TypedArray would leak itself and its backing ArrayBuffer in this case for example. This is perfectly normal and clearing all globals avoids this. diff --git a/lib/rtrace/bin/rtplot.js b/lib/rtrace/bin/rtplot.js new file mode 100644 index 0000000000..96e8a0894b --- /dev/null +++ b/lib/rtrace/bin/rtplot.js @@ -0,0 +1,14 @@ +#!/usr/bin/env node + +import process from "process"; +import fs from "fs"; +import path from "path"; +import { gc } from "../plot.js"; + +if (process.argv.length < 3) { + process.stderr.write(`Usage: ${path.basename(process.argv[1])} rtrace-gc-profile.json > profile.svg\n`); + process.exit(1); +} + +const data = JSON.parse(fs.readFileSync(process.argv[2])); +process.stdout.write(gc(data)); diff --git a/lib/rtrace/index.d.ts b/lib/rtrace/index.d.ts index ddcc282a81..c2934486f2 100644 --- a/lib/rtrace/index.d.ts +++ b/lib/rtrace/index.d.ts @@ -1,63 +1,111 @@ -/** Creates a new `RTrace` instance, tracking allocations, frees and reference counts. */ -declare function rtrace( +/** Block information. */ +export declare interface BlockInfo { + /** Pointer to the block. */ + ptr: number, + /** Block size including overhead. */ + size: number, + /** Memory manager info. */ + mmInfo: { + tags: string, + size: number + }, + /** Garbage collector info. */ + gcInfo: { + color: string, + next: number, + prev: number + }, + /** Runtime id. */ + rtId: number, + /** Runtime size. */ + rtSize: number +} + +type ErrorCallback = (error: Error, info: BlockInfo) => void; +type InfoCallback = (msg: string) => void; + +export declare interface RtraceOptions { /** Function being called when a problem is detected. */ - onerror?: (error: Error) => void, + onerror?: ErrorCallback, /** Function being called with information messages. */ - oninfo?: (info: string) => void -): rtrace.RTrace; - -declare namespace rtrace { - /** The rtrace instance used as the `rtrace` import to the Wasm module. */ - export interface RTrace { - /** Number of allocations so far. */ - allocCount: number; - /** Number of reallocations so far. */ - reallocCount: number; - /** Number of frees so far. */ - freeCount: number; - /** Number of RC increments (retains) so far. */ - incrementCount: number; - /** Number of RC decrements (releases) so far. */ - decrementCount: number; - - /** Called when a new block is allocated. */ - onalloc( - /** New block being allocated. */ - block: number - ): void; - - /** Called when a block is reallocated and must be moved. */ - onrealloc( - /** Block being moved. */ - oldBlock: number, - /** New block used from now on. */ - newBlock: number - ): void; - - /** Called when a block is freed, implicitly or explicitly. */ - onfree( - /** Block being freed. */ - block: number - ): void; - - /** Called when a reference to a block is retained (RC incremented by one). */ - onincrement( - /** Block a reference to is being retained. */ - block: number - ): void; - - /** Called when a reference to a block is released (RC decremented by one). */ - ondecrement( - /** Block a reference to is being released. */ - block: number - ): void; - - /** Checks if rtrace is active, i.e. at least one event has occurred. */ - readonly active: boolean; - - /** Checks if there are any leaks and emits them via `oninfo`. Returns the number of live blocks. */ - check(): number; - } + oninfo?: InfoCallback, + /** Obtains the module's memory instance. */ + getMemory(): WebAssembly.Memory; } -export = rtrace; +/** Overhead between a pointer to a block and its unmanaged data. */ +export declare const BLOCK_OVERHEAD; +/** Overhead between a pointer to a block's unmanaged data to its managed data. */ +export declare const OBJECT_OVERHEAD; +/** Overhead between a pointer to a block and its managed data. */ +export declare const TOTAL_OVERHEAD; + +export declare class Rtrace { + /** Creates a new `Rtrace` instance. */ + constructor(options: RtraceOptions); + + /** Checks if rtrace is active, i.e. at least one event has occurred. */ + readonly active: boolean; + /** Number of seen allocation events. */ + readonly allocCount: number; + /** Number of seen resize events during realloc. */ + readonly resizeCount: number; + /** Number of seens move events during realloc. */ + readonly moveCount: number; + /** Number of seen free events. */ + readonly freeCount: number; + /** Heap base offset reported by the module. */ + readonly heapBase: number; + + /** Installs Rtrace on the specified imports object. */ + install(imports: Record>): Record>; + + /** Checks if there are any leaks and emits them via `oninfo`. Returns the number of live blocks. */ + check(): number; + + /** Obtains information about a block. */ + getBlockInfo(ptr: number): BlockInfo; + + // Instrumentation + + /** Called upon runtime initialization. */ + oninit(heapBase: number): void; + + /** Called when a new block is allocated. */ + onalloc(ptr: number): void; + + /** Called when an existing block is resized. */ + onresize(ptr: number, oldSize: number): void; + + /** Called when an existing block is moved to a new allocation. */ + onmove(oldPtr: number, newPtr: number): void; + + /** Called when an object is visited by the GC. Returns `true` unless there is an error and the block should be skipped. */ + onvisit(ptr: number): boolean; + + /** Called when an existing block is freed.*/ + onfree(ptr: number): void; + + /** Called when a collection phase concludes. */ + oncollect(total: number): void; + + /** Called when a collection phase interrupts the program. */ + oninterrupt(total: number): void; + + /** Called when a collection phase yields from an interrupt. */ + onyield(total: number): void; + + /** Called when a value is stored to memory. */ + onstore(ptr: number, offset: number, bytes: number, isRT: boolean): void; + + /** Called when a value is loaded from memory. */ + onload(ptr: number, offset: number, bytes: number, isRT: boolean): void; + + // Reporting + + /** Error message callback. */ + onerror: ErrorCallback; + + /** Info message callback. */ + oninfo: InfoCallback; +} diff --git a/lib/rtrace/index.js b/lib/rtrace/index.js index 0cd2c05a13..44999712e2 100644 --- a/lib/rtrace/index.js +++ b/lib/rtrace/index.js @@ -1,94 +1,346 @@ -function rtrace(onerror, oninfo) { - if (!onerror) onerror = function() { /* nop */ }; - if (!oninfo) oninfo = function() { /* nop */ }; - var blocks = new Map(); - var rtrace = { - - allocCount: 0, - reallocCount: 0, - freeCount: 0, - incrementCount: 0, - decrementCount: 0, - - onalloc: function(block) { - ++rtrace.allocCount; - if (blocks.has(block)) { - onerror(Error("duplicate alloc: " + block)); - } else { - oninfo("ALLOC " + block); - blocks.set(block, 0); +// WebAssembly pages are 65536 kb +const PAGE_SIZE_BITS = 16; +const PAGE_SIZE = 1 << PAGE_SIZE_BITS; +const PAGE_MASK = PAGE_SIZE - 1; + +// Wasm32 pointer size is 4 bytes +const PTR_SIZE_BITS = 2; +const PTR_SIZE = 1 << PTR_SIZE_BITS; +const PTR_MASK = PTR_SIZE - 1; +const PTR_VIEW = Uint32Array; + +export const BLOCK_OVERHEAD = PTR_SIZE; +export const OBJECT_OVERHEAD = 16; +export const TOTAL_OVERHEAD = BLOCK_OVERHEAD + OBJECT_OVERHEAD; + +function assert(x) { + if (!x) throw Error("assertion failed"); + return x; +} + +Error.stackTraceLimit = 15; + +function trimStacktrace(stack, levels) { + return stack.split(/\r?\n/).slice(1 + levels); +} + +const hrtime = typeof performance !== "undefined" && performance.now + ? performance.now + : typeof process !== "undefined" && process.hrtime + ? () => { let t = process.hrtime(); return t[0] * 1e3 + t[1] / 1e6; } + : Date.now; + +const mmTagsToString = [ + "", + "FREE", + "LEFTFREE", + "FREE+LEFTFREE" +]; + +const gcColorToString = [ + "BLACK/WHITE", + "WHITE/BLACK", + "GRAY", + "INVALID" +]; + +export class Rtrace { + + constructor(options) { + this.options = options || {}; + this.onerror = this.options.onerror || function() { /* nop */ }; + this.oninfo = this.options.oninfo || function() { /* nop */ }; + this.oncollect_ = this.options.oncollect || function() { /* nop */ }; + this.memory = null; + this.shadow = null; + this.shadowStart = 0x100000000; + this.blocks = new Map(); + this.allocSites = new Map(); + this.freedBlocks = new Map(); + this.gcProfileStart = 0; + this.gcProfile = []; + + this.allocCount = 0; + this.resizeCount = 0; + this.moveCount = 0; + this.freeCount = 0; + this.heapBase = 0x100000000; + } + + install(imports) { + if (!imports) imports = {}; + imports.rtrace = Object.assign(imports.rtrace || {}, { + oninit: this.oninit.bind(this), + onalloc: this.onalloc.bind(this), + onresize: this.onresize.bind(this), + onmove: this.onmove.bind(this), + onvisit: this.onvisit.bind(this), + onfree: this.onfree.bind(this), + oninterrupt: this.oninterrupt.bind(this), + onyield: this.onyield.bind(this), + oncollect: this.oncollect.bind(this), + onstore: this.onstore.bind(this), + onload: this.onload.bind(this) + }); + return imports; + } + + /** Synchronizes the shadow memory with the module's memory. */ + syncShadow() { + if (!this.memory) { + this.memory = assert(this.options.getMemory()); + this.shadow = new WebAssembly.Memory({ + initial: ((this.memory.buffer.byteLength + PAGE_MASK) & ~PAGE_MASK) >>> PAGE_SIZE_BITS + }); + } else { + let diff = this.memory.buffer.byteLength - this.shadow.buffer.byteLength; + if (diff > 0) this.shadow.grow(diff >>> 16); + } + } + + /** Marks a block's presence in shadow memory. */ + markShadow(info, oldSize = 0) { + assert(this.shadow && this.shadow.byteLength == this.memory.byteLength); + assert((info.size & PTR_MASK) == 0); + if (info.ptr < this.shadowStart) { + this.shadowStart = info.ptr; + } + let len = info.size >>> PTR_SIZE_BITS; + let view = new PTR_VIEW(this.shadow.buffer, info.ptr, len); + let errored = false; + let start = oldSize >>> PTR_SIZE_BITS; + for (let i = 0; i < start; ++i) { + if (view[i] != info.ptr && !errored) { + this.onerror(Error("shadow region mismatch: " + view[i] + " != " + info.ptr), info); + errored = true; } - }, + } + errored = false; + for (let i = start; i < len; ++i) { + if (view[i] != 0 && !errored) { + this.onerror(Error("shadow region already in use: " + view[i] + " != 0"), info); + errored = true; + } + view[i] = info.ptr; + } + } - onrealloc: function(oldBlock, newBlock) { - ++rtrace.reallocCount; - if (!blocks.has(oldBlock)) { - onerror(Error("orphaned realloc (old): " + oldBlock)); - } else { - if (!blocks.has(newBlock)) { - onerror(Error("orphaned realloc (new): " + newBlock)); - } else { - let newRc = blocks.get(newBlock); - if (newRc != 0) { - onerror(Error("invalid realloc: " + oldBlock + " -> " + newBlock + " @ " + newRc)); - } else { - let oldRc = blocks.get(oldBlock); - oninfo("REALLOC " + oldBlock + " @ " + oldRc + " -> " + newBlock); - blocks.set(newBlock, oldRc); - } - } + /** Unmarks a block's presence in shadow memory. */ + unmarkShadow(info, oldSize = info.size) { + assert(this.shadow && this.shadow.byteLength == this.memory.byteLength); + let len = oldSize >>> PTR_SIZE_BITS; + let view = new PTR_VIEW(this.shadow.buffer, info.ptr, len); + let errored = false; + let start = 0; + if (oldSize != info.size) { + assert(oldSize > info.size); + start = info.size >>> PTR_SIZE_BITS; + } + for (let i = 0; i < len; ++i) { + if (view[i] != info.ptr && !errored) { + this.onerror(Error("shadow region mismatch: " + view[i] + " != " + info.ptr), info); + errored = true; } - }, + if (i >= start) view[i] = 0; + } + } - onfree: function(block) { - ++rtrace.freeCount; - if (!blocks.has(block)) { - onerror(Error("orphaned free: " + block)); - } else { - oninfo("FREE " + block + " @ " + blocks.get(block)); - blocks.delete(block); + /** Performs an access to shadow memory. */ + accessShadow(ptr, size, isLoad, isRT) { + this.syncShadow(); + if (ptr < this.shadowStart) return; + let value = new Uint32Array(this.shadow.buffer, ptr & ~PTR_MASK, 1)[0]; + if (value != 0) return; + if (!isRT) { + let stack = trimStacktrace(new Error().stack, 2); + this.onerror(new Error("OOB " + (isLoad ? "load" : "store") + (8 * size) + " at address " + ptr + "\n" + stack.join("\n"))); + } + } + + /** Obtains information about a block. */ + getBlockInfo(ptr) { + const [ + mmInfo, + gcInfo, + gcInfo2, + rtId, + rtSize + ] = new Uint32Array(this.memory.buffer, ptr, 5); + const size = mmInfo & ~3; + return { + ptr, + size: BLOCK_OVERHEAD + size, // total incl. overhead + mmInfo: { + tags: mmTagsToString[mmInfo & 3], + size: size // as stored excl. overhead + }, + gcInfo: { + color: gcColorToString[gcInfo & 3], + next: gcInfo & ~3, + prev: gcInfo2 + }, + rtId, + rtSize + }; + } + + /** Checks if rtrace is active, i.e. at least one event has occurred. */ + get active() { + return Boolean(this.allocCount || this.resizeCount || this.moveCount || this.freeCount); + } + + /** Checks if there are any leaks and emits them via `oninfo`. Returns the number of live blocks. */ + check() { + if (this.oninfo) { + for (let [ptr, info] of this.blocks) { + this.oninfo("LIVE " + ptr + "\n" + info.allocStack.join("\n")); } - }, + } + return this.blocks.size; + } - onincrement: function(block) { - ++rtrace.incrementCount; - if (!blocks.has(block)) { - onerror(Error("orphaned increment: " + block)); - } else { - let rc = blocks.get(block); - oninfo("++ " + block + " @ " + rc + "->" + (rc + 1)); - blocks.set(block, rc + 1); + // Runtime instrumentation + + oninit(heapBase) { + this.heapBase = heapBase; + this.gcProfileStart = 0; + this.gcProfile.length = 0; + this.oninfo("INIT heapBase=" + heapBase); + } + + onalloc(ptr) { + this.syncShadow(); + ++this.allocCount; + let info = this.getBlockInfo(ptr); + if (this.blocks.has(ptr)) { + this.onerror(Error("duplicate alloc: " + ptr), info); + } else { + this.oninfo("ALLOC " + ptr + ".." + (ptr + info.size)); + this.markShadow(info); + let allocStack = trimStacktrace(new Error().stack, 1); // strip onalloc + this.blocks.set(ptr, Object.assign(info, { allocStack })); + } + } + + onresize(ptr, oldSize) { + this.syncShadow(); + ++this.resizeCount; + const info = this.getBlockInfo(ptr); + if (!this.blocks.has(ptr)) { + this.onerror(Error("orphaned resize: " + ptr), info); + } else { + const beforeInfo = this.blocks.get(ptr); + if (beforeInfo.size != oldSize) { + this.onerror(Error(`size mismatch upon resize: ${ptr} (${beforeInfo.size} != ${oldSize})`), info); } - }, + const newSize = info.size; + this.oninfo("RESIZE " + ptr + ".." + (ptr + newSize) + " (" + oldSize + "->" + newSize + ")"); + this.blocks.set(ptr, Object.assign(info, { allocStack: beforeInfo.allocStack })); + if (newSize > oldSize) { + this.markShadow(info, oldSize); + } else if (newSize < oldSize) { + this.unmarkShadow(info, oldSize); + } + } + } - ondecrement: function(block) { - ++rtrace.decrementCount; - if (!blocks.has(block)) { - onerror(Error("orphaned decrement: " + block)); + onmove(oldPtr, newPtr) { + this.syncShadow(); + ++this.moveCount; + let oldInfo = this.getBlockInfo(oldPtr); + let newInfo = this.getBlockInfo(newPtr); + if (!this.blocks.has(oldPtr)) { + this.onerror(Error("orphaned move (old): " + oldPtr), oldInfo); + } else { + if (!this.blocks.has(newPtr)) { + this.onerror(Error("orphaned move (new): " + newPtr), newInfo); } else { - let rc = blocks.get(block); - if (rc < 1) { - onerror(Error("invalid decrement: " + block + " @ " + rc)); - } else { - oninfo("-- " + block + " @ " + rc + "->" + (rc - 1)); - blocks.set(block, rc - 1); + const beforeInfo = this.blocks.get(oldPtr); + const oldSize = oldInfo.size; + const newSize = newInfo.size; + if (beforeInfo.size != oldSize) { + this.onerror(Error(`size mismatch upon move: ${oldPtr} (${beforeInfo.size} != ${oldSize})`), oldInfo); } + this.oninfo("MOVE " + oldPtr + ".." + (oldPtr + oldSize) + " -> " + newPtr + ".." + (newPtr + newSize)); + // calls new alloc before and old free after } - }, + } + } - get active() { - return Boolean(rtrace.allocCount || rtrace.reallocCount || rtrace.freeCount || rtrace.incrementCount || rtrace.decrementCount); - }, + onvisit(ptr) { + // Indicates that a block has been freed but it still visited by the GC + if (ptr > this.heapBase && !this.blocks.has(ptr)) { + let err = Error("orphaned visit: " + ptr); + let info = this.freedBlocks.get(ptr); + if (info) { + err.stack += "\n^ allocated at:\n" + info.allocStack.join("\n"); + err.stack += "\n^ freed at:\n" + info.freeStack.join("\n"); + } + this.onerror(err, null); + return false; + } + return true; + } - check() { - if (oninfo) { - for (let [block, rc ] of blocks) { - oninfo("LEAKING " + block + " @ " + rc); - } + onfree(ptr) { + this.syncShadow(); + ++this.freeCount; + let info = this.getBlockInfo(ptr); + if (!this.blocks.has(ptr)) { + this.onerror(Error("orphaned free: " + ptr), info); + } else { + const oldInfo = this.blocks.get(ptr); + if (info.size != oldInfo.size) { + this.onerror(Error(`size mismatch upon free: ${ptr} (${oldInfo.size} != ${info.size})`), info); } - return blocks.size; + this.oninfo("FREE " + ptr + ".." + (ptr + info.size)); + this.unmarkShadow(info); + const allocInfo = this.blocks.get(ptr); + this.blocks.delete(ptr); + const allocStack = allocInfo.allocStack; + const freeStack = trimStacktrace(new Error().stack, 1); // strip onfree + // (not much) TODO: Maintaining these is essentially a memory leak + this.freedBlocks.set(ptr, { allocStack, freeStack }); } - }; - return rtrace; + } + + oncollect(total) { + this.oninfo(`COLLECT at ${total}`); + this.plot(total); + this.oncollect_(); + } + + // GC profiling + + plot(total, pause = 0) { + if (!this.gcProfileStart) this.gcProfileStart = Date.now(); + this.gcProfile.push([ Date.now() - this.gcProfileStart, total, pause ]); + } + + oninterrupt(total) { + this.interruptStart = hrtime(); + this.plot(total); + } + + onyield(total) { + let pause = hrtime() - this.interruptStart; + if (pause >= 1) console.log("interrupted for " + pause.toFixed(1) + "ms"); + this.plot(total, pause); + } + + // Memory instrumentation + + onstore(ptr, offset, bytes, isRT) { + this.accessShadow(ptr + offset, bytes, false, isRT); + return ptr; + } + + onload(ptr, offset, bytes, isRT) { + this.accessShadow(ptr + offset, bytes, true, isRT); + return ptr; + } } -module.exports = rtrace; + +export default { + Rtrace +}; diff --git a/lib/rtrace/package.json b/lib/rtrace/package.json index ad80262306..2416a9b04f 100644 --- a/lib/rtrace/package.json +++ b/lib/rtrace/package.json @@ -1,7 +1,50 @@ { "name": "@assemblyscript/rtrace", - "types": "index.d.ts", - "version": "0.1.0", + "description": "A tiny utility to sanitize the AssemblyScript runtime.", + "keywords": [ + "assemblyscript", + "rtrace", + "webassembly", + "wasm" + ], + "version": "0.0.0", + "author": "Daniel Wirtz ", "license": "Apache-2.0", - "main": "index.js" + "homepage": "https://assemblyscript.org", + "repository": { + "type": "git", + "url": "https://github.com/AssemblyScript/assemblyscript.git", + "directory": "lib/rtrace" + }, + "bugs": { + "url": "https://github.com/AssemblyScript/assemblyscript/issues" + }, + "type": "module", + "main": "index.js", + "types": "index.d.ts", + "exports": { + "import": "./index.js", + "require": "./umd/index.js" + }, + "bin": { + "rtplot": "bin/rtplot.js" + }, + "scripts": { + "build": "npx esm2umd rtrace index.js > umd/index.js", + "test": "node tests" + }, + "dependencies": { + "d3": "^6.3.1", + "jsdom": "^16.4.0" + }, + "files": [ + "index.d.ts", + "index.js", + "package.json", + "umd/index.d.ts", + "umd/index.js", + "umd/package.json", + "bin/rtplot.js", + "README.md" + ] } diff --git a/lib/rtrace/plot.js b/lib/rtrace/plot.js new file mode 100644 index 0000000000..5e1845fc78 --- /dev/null +++ b/lib/rtrace/plot.js @@ -0,0 +1,105 @@ +import * as d3 from "d3"; +import { JSDOM } from "jsdom"; + +/** Creates a plot of a GC profile in `rtrace.gcProfile`. */ +export function gc(data, width = 1280, height = 720) { + const margin = { top: 20, right: 30, bottom: 30, left: 30 }; + const dom = new JSDOM(""); + const body = d3.select(dom.window.document.querySelector("body")); + + const svg = body.append("svg") + .attr("xmlns", "http://www.w3.org/2000/svg") + .attr("viewBox", [0, 0, width, height]); + + const x = d3.scaleLinear() + .domain([d3.min(data, d => d[0]), d3.max(data, d => d[0])]) + .range([margin.left, width - margin.right]); + + const xAxis = g => g + .attr("transform", `translate(0,${height - margin.bottom})`) + .call(d3.axisBottom(x).ticks(width / 80).tickSizeOuter(0)); + + const y = d3.scaleLinear() + .domain([0, d3.max(data, d => d[1])]).nice() + .range([height - margin.bottom, margin.top]); + + const yAxis = g => g + .attr("transform", `translate(${margin.left},0)`) + .call(d3.axisLeft(y)) + .call(g => g.select(".domain").remove()) + .call(g => g.select(".tick:last-of-type text").clone() + .attr("x", 3) + .attr("text-anchor", "start") + .attr("font-weight", "bold") + .attr("color", "steelblue") + .text("memory (b)") + ); + + const y2 = d3.scaleLinear() + .domain([0, d3.max(data, d => d[2])]).nice() + .range([height - margin.bottom, margin.top]); + + const y2Axis = g => g + .attr("transform", `translate(${width - margin.right},0)`) + .call(d3.axisRight(y2)) + .call(g => g.select(".domain").remove()) + .call(g => g.select(".tick:last-of-type text").clone() + .attr("x", -3) + .attr("text-anchor", "end") + .attr("font-weight", "bold") + .attr("color", "orange") + .text("pause (ms)") + ); + + svg.append("g") + .attr("fill", "orange") + .selectAll("rect") + .data(data) + .join("rect") + .attr("x", d => x(d[0])) + .attr("y", d => y2(d[2])) + .attr("height", d => y2(0) - y2(d[2])) + .attr("width", 0.5); + + svg.append("g") + .attr("fill", "orange") + .selectAll("line") + .data(data) + .join("circle") + .attr("cx", d => x(d[0])) + .attr("cy", d => y2(d[2])) + .attr("r", 1.5); + + const line = d3.line() + .defined(d => !isNaN(d[1])) + .x(d => x(d[0])) + .y(d => y(d[1])); + + svg.append("path") + .datum(data) + .attr("fill", "none") + .attr("stroke", "steelblue") + .attr("stroke-width", 0.5) + .attr("stroke-linejoin", "round") + .attr("stroke-linecap", "round") + .attr("d", line); + + svg.append("g") + .attr("fill", "steelblue") + .selectAll("circle") + .data(data) + .join("circle") + .attr("cx", d => x(d[0])) + .attr("cy", d => y(d[1])) + .attr("r", 1.5); + + svg.append("g").call(xAxis); + svg.append("g").call(yAxis); + svg.append("g").call(y2Axis); + + return body.html(); +} + +export default { + gc +}; diff --git a/lib/rtrace/tests/index.js b/lib/rtrace/tests/index.js new file mode 100644 index 0000000000..70b786d12e --- /dev/null +++ b/lib/rtrace/tests/index.js @@ -0,0 +1 @@ +// TODO diff --git a/lib/rtrace/tlsfvis.html b/lib/rtrace/tlsfvis.html new file mode 100644 index 0000000000..16c022b270 --- /dev/null +++ b/lib/rtrace/tlsfvis.html @@ -0,0 +1,236 @@ + + + + +

TLSF visualizer

+
+

Notes:

+
    +
  • It is expected that there is exactly one block on initialization. This is the remaining space (< 64K) within the last page after static data.
  • +
  • It is expected that if two adjacent blocks of size K are freed, the merged block doesn't go into the first level list for K*2 because its size is actually larger than that (K + OVERHEAD + K).
  • +
  • It is expected that if memory grows beyond 1GB, that even if all blocks are free'd there are at least two (or even three if the largest block is in the middle) remaining blocks, because a single block must not be larger than 1GB.
  • +
  • It is expected that after other operations have already been performed, being able to allocate 1GB can't be guaranteed anymore, even if there should be enough space left in absolute terms, if prior subdivision prevents it.
  • +
  • It is expected that the second level 0 in first level 0 isn't ever used due to alignment guarantees. Smallest block is 32 bytes (16 bytes overhead + 16 bytes payload if used, respectively linking information if free) in this implementation.
  • +
+
+

Implementation constants: ? bits alignment, ? bits first level, ? bits second level, ? B overhead

+ +

First level bitmap

+

The first level map is a bitmap determining whether free blocks exist in at least one of its respective second levels. In this implementation, the first bit indicates whether a small block (< 256B) exists. Each bit doubles the size.

+
+
+ +

Second level maps

+

Second level maps subdivide each first level into multiple lists of subsizes. Each one works similar to the first level bitmap.

+
+
+ +

Heads

+

The heads of the actual free lists, one per second level per first level. Values here are pointers into memory. Last item is the address of the special zero-size "used" tail block, which is usually the end of WASM memory minus block overhead.

+
+
+ +

Allocator

+

Chose a size to allocate. Annotated list indexes depend on implementation constants but match those of this implementation.

+

+   +

+

+ Small blocks: + + + + + + ... + + (δ ≙ block overhead) +

+

+ Common blocks: + + + + + + (e.g. allocate 3, free middle, check second level) +

+

+ Large blocks: + + + + + +

+ +

Segments

+

Allocations performed above are tracked here so you can free them again. Note that TLSF alone does not keep track of used blocks (unless free'd and put in a free list again). It is expected that adjacent free blocks become merged automatically.

+
+
diff --git a/lib/rtrace/umd/index.d.ts b/lib/rtrace/umd/index.d.ts new file mode 100644 index 0000000000..f1c27f20e8 --- /dev/null +++ b/lib/rtrace/umd/index.d.ts @@ -0,0 +1 @@ +export * from "../index"; diff --git a/lib/rtrace/umd/index.js b/lib/rtrace/umd/index.js new file mode 100644 index 0000000000..f4fdb0ad10 --- /dev/null +++ b/lib/rtrace/umd/index.js @@ -0,0 +1,390 @@ +// GENERATED FILE. DO NOT EDIT. +var rtrace = (function(exports) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = exports.Rtrace = exports.TOTAL_OVERHEAD = exports.OBJECT_OVERHEAD = exports.BLOCK_OVERHEAD = void 0; + // WebAssembly pages are 65536 kb + const PAGE_SIZE_BITS = 16; + const PAGE_SIZE = 1 << PAGE_SIZE_BITS; + const PAGE_MASK = PAGE_SIZE - 1; // Wasm32 pointer size is 4 bytes + + const PTR_SIZE_BITS = 2; + const PTR_SIZE = 1 << PTR_SIZE_BITS; + const PTR_MASK = PTR_SIZE - 1; + const PTR_VIEW = Uint32Array; + const BLOCK_OVERHEAD = PTR_SIZE; + exports.BLOCK_OVERHEAD = BLOCK_OVERHEAD; + const OBJECT_OVERHEAD = 16; + exports.OBJECT_OVERHEAD = OBJECT_OVERHEAD; + const TOTAL_OVERHEAD = BLOCK_OVERHEAD + OBJECT_OVERHEAD; + exports.TOTAL_OVERHEAD = TOTAL_OVERHEAD; + + function assert(x) { + if (!x) throw Error("assertion failed"); + return x; + } + + Error.stackTraceLimit = 15; + + function trimStacktrace(stack, levels) { + return stack.split(/\r?\n/).slice(1 + levels); + } + + const hrtime = typeof performance !== "undefined" && performance.now ? performance.now : typeof process !== "undefined" && process.hrtime ? () => { + let t = process.hrtime(); + return t[0] * 1e3 + t[1] / 1e6; + } : Date.now; + const mmTagsToString = ["", "FREE", "LEFTFREE", "FREE+LEFTFREE"]; + const gcColorToString = ["BLACK/WHITE", "WHITE/BLACK", "GRAY", "INVALID"]; + + class Rtrace { + constructor(options) { + this.options = options || {}; + + this.onerror = this.options.onerror || function () { + /* nop */ + }; + + this.oninfo = this.options.oninfo || function () { + /* nop */ + }; + + this.oncollect_ = this.options.oncollect || function () { + /* nop */ + }; + + this.memory = null; + this.shadow = null; + this.shadowStart = 0x100000000; + this.blocks = new Map(); + this.allocSites = new Map(); + this.freedBlocks = new Map(); + this.gcProfileStart = 0; + this.gcProfile = []; + this.allocCount = 0; + this.resizeCount = 0; + this.moveCount = 0; + this.freeCount = 0; + this.heapBase = 0x100000000; + } + + install(imports) { + if (!imports) imports = {}; + imports.rtrace = Object.assign(imports.rtrace || {}, { + oninit: this.oninit.bind(this), + onalloc: this.onalloc.bind(this), + onresize: this.onresize.bind(this), + onmove: this.onmove.bind(this), + onvisit: this.onvisit.bind(this), + onfree: this.onfree.bind(this), + oninterrupt: this.oninterrupt.bind(this), + onyield: this.onyield.bind(this), + oncollect: this.oncollect.bind(this), + onstore: this.onstore.bind(this), + onload: this.onload.bind(this) + }); + return imports; + } + /** Synchronizes the shadow memory with the module's memory. */ + + + syncShadow() { + if (!this.memory) { + this.memory = assert(this.options.getMemory()); + this.shadow = new WebAssembly.Memory({ + initial: (this.memory.buffer.byteLength + PAGE_MASK & ~PAGE_MASK) >>> PAGE_SIZE_BITS + }); + } else { + var diff = this.memory.buffer.byteLength - this.shadow.buffer.byteLength; + if (diff > 0) this.shadow.grow(diff >>> 16); + } + } + /** Marks a block's presence in shadow memory. */ + + + markShadow(info, oldSize = 0) { + assert(this.shadow && this.shadow.byteLength == this.memory.byteLength); + assert((info.size & PTR_MASK) == 0); + + if (info.ptr < this.shadowStart) { + this.shadowStart = info.ptr; + } + + var len = info.size >>> PTR_SIZE_BITS; + var view = new PTR_VIEW(this.shadow.buffer, info.ptr, len); + var errored = false; + var start = oldSize >>> PTR_SIZE_BITS; + + for (let i = 0; i < start; ++i) { + if (view[i] != info.ptr && !errored) { + this.onerror(Error("shadow region mismatch: " + view[i] + " != " + info.ptr), info); + errored = true; + } + } + + errored = false; + + for (let i = start; i < len; ++i) { + if (view[i] != 0 && !errored) { + this.onerror(Error("shadow region already in use: " + view[i] + " != 0"), info); + errored = true; + } + + view[i] = info.ptr; + } + } + /** Unmarks a block's presence in shadow memory. */ + + + unmarkShadow(info, oldSize = info.size) { + assert(this.shadow && this.shadow.byteLength == this.memory.byteLength); + var len = oldSize >>> PTR_SIZE_BITS; + var view = new PTR_VIEW(this.shadow.buffer, info.ptr, len); + var errored = false; + var start = 0; + + if (oldSize != info.size) { + assert(oldSize > info.size); + start = info.size >>> PTR_SIZE_BITS; + } + + for (let i = 0; i < len; ++i) { + if (view[i] != info.ptr && !errored) { + this.onerror(Error("shadow region mismatch: " + view[i] + " != " + info.ptr), info); + errored = true; + } + + if (i >= start) view[i] = 0; + } + } + /** Performs an access to shadow memory. */ + + + accessShadow(ptr, size, isLoad, isRT) { + this.syncShadow(); + if (ptr < this.shadowStart) return; + var value = new Uint32Array(this.shadow.buffer, ptr & ~PTR_MASK, 1)[0]; + if (value != 0) return; + + if (!isRT) { + let stack = trimStacktrace(new Error().stack, 2); + this.onerror(new Error("OOB " + (isLoad ? "load" : "store") + 8 * size + " at address " + ptr + "\n" + stack.join("\n"))); + } + } + /** Obtains information about a block. */ + + + getBlockInfo(ptr) { + const [mmInfo, gcInfo, gcInfo2, rtId, rtSize] = new Uint32Array(this.memory.buffer, ptr, 5); + const size = mmInfo & ~3; + return { + ptr, + size: BLOCK_OVERHEAD + size, + // total incl. overhead + mmInfo: { + tags: mmTagsToString[mmInfo & 3], + size: size // as stored excl. overhead + + }, + gcInfo: { + color: gcColorToString[gcInfo & 3], + next: gcInfo & ~3, + prev: gcInfo2 + }, + rtId, + rtSize + }; + } + /** Checks if rtrace is active, i.e. at least one event has occurred. */ + + + get active() { + return Boolean(this.allocCount || this.resizeCount || this.moveCount || this.freeCount); + } + /** Checks if there are any leaks and emits them via `oninfo`. Returns the number of live blocks. */ + + + check() { + if (this.oninfo) { + for (let [ptr, info] of this.blocks) { + this.oninfo("LIVE " + ptr + "\n" + info.allocStack.join("\n")); + } + } + + return this.blocks.size; + } // Runtime instrumentation + + + oninit(heapBase) { + this.heapBase = heapBase; + this.gcProfileStart = 0; + this.gcProfile.length = 0; + this.oninfo("INIT heapBase=" + heapBase); + } + + onalloc(ptr) { + this.syncShadow(); + ++this.allocCount; + var info = this.getBlockInfo(ptr); + + if (this.blocks.has(ptr)) { + this.onerror(Error("duplicate alloc: " + ptr), info); + } else { + this.oninfo("ALLOC " + ptr + ".." + (ptr + info.size)); + this.markShadow(info); + let allocStack = trimStacktrace(new Error().stack, 1); // strip onalloc + + this.blocks.set(ptr, Object.assign(info, { + allocStack + })); + } + } + + onresize(ptr, oldSize) { + this.syncShadow(); + ++this.resizeCount; + const info = this.getBlockInfo(ptr); + + if (!this.blocks.has(ptr)) { + this.onerror(Error("orphaned resize: " + ptr), info); + } else { + const beforeInfo = this.blocks.get(ptr); + + if (beforeInfo.size != oldSize) { + this.onerror(Error(`size mismatch upon resize: ${ptr} (${beforeInfo.size} != ${oldSize})`), info); + } + + const newSize = info.size; + this.oninfo("RESIZE " + ptr + ".." + (ptr + newSize) + " (" + oldSize + "->" + newSize + ")"); + this.blocks.set(ptr, Object.assign(info, { + allocStack: beforeInfo.allocStack + })); + + if (newSize > oldSize) { + this.markShadow(info, oldSize); + } else if (newSize < oldSize) { + this.unmarkShadow(info, oldSize); + } + } + } + + onmove(oldPtr, newPtr) { + this.syncShadow(); + ++this.moveCount; + var oldInfo = this.getBlockInfo(oldPtr); + var newInfo = this.getBlockInfo(newPtr); + + if (!this.blocks.has(oldPtr)) { + this.onerror(Error("orphaned move (old): " + oldPtr), oldInfo); + } else { + if (!this.blocks.has(newPtr)) { + this.onerror(Error("orphaned move (new): " + newPtr), newInfo); + } else { + const beforeInfo = this.blocks.get(oldPtr); + const oldSize = oldInfo.size; + const newSize = newInfo.size; + + if (beforeInfo.size != oldSize) { + this.onerror(Error(`size mismatch upon move: ${oldPtr} (${beforeInfo.size} != ${oldSize})`), oldInfo); + } + + this.oninfo("MOVE " + oldPtr + ".." + (oldPtr + oldSize) + " -> " + newPtr + ".." + (newPtr + newSize)); // calls new alloc before and old free after + } + } + } + + onvisit(ptr) { + // Indicates that a block has been freed but it still visited by the GC + if (ptr > this.heapBase && !this.blocks.has(ptr)) { + let err = Error("orphaned visit: " + ptr); + let info = this.freedBlocks.get(ptr); + + if (info) { + err.stack += "\n^ allocated at:\n" + info.allocStack.join("\n"); + err.stack += "\n^ freed at:\n" + info.freeStack.join("\n"); + } + + this.onerror(err, null); + return false; + } + + return true; + } + + onfree(ptr) { + this.syncShadow(); + ++this.freeCount; + var info = this.getBlockInfo(ptr); + + if (!this.blocks.has(ptr)) { + this.onerror(Error("orphaned free: " + ptr), info); + } else { + const oldInfo = this.blocks.get(ptr); + + if (info.size != oldInfo.size) { + this.onerror(Error(`size mismatch upon free: ${ptr} (${oldInfo.size} != ${info.size})`), info); + } + + this.oninfo("FREE " + ptr + ".." + (ptr + info.size)); + this.unmarkShadow(info); + const allocInfo = this.blocks.get(ptr); + this.blocks.delete(ptr); + const allocStack = allocInfo.allocStack; + const freeStack = trimStacktrace(new Error().stack, 1); // strip onfree + // (not much) TODO: Maintaining these is essentially a memory leak + + this.freedBlocks.set(ptr, { + allocStack, + freeStack + }); + } + } + + oncollect(total) { + this.oninfo(`COLLECT at ${total}`); + this.plot(total); + this.oncollect_(); + } // GC profiling + + + plot(total, pause = 0) { + if (!this.gcProfileStart) this.gcProfileStart = Date.now(); + this.gcProfile.push([Date.now() - this.gcProfileStart, total, pause]); + } + + oninterrupt(total) { + this.interruptStart = hrtime(); + this.plot(total); + } + + onyield(total) { + var pause = hrtime() - this.interruptStart; + if (pause >= 1) console.log("interrupted for " + pause.toFixed(1) + "ms"); + this.plot(total, pause); + } // Memory instrumentation + + + onstore(ptr, offset, bytes, isRT) { + this.accessShadow(ptr + offset, bytes, false, isRT); + return ptr; + } + + onload(ptr, offset, bytes, isRT) { + this.accessShadow(ptr + offset, bytes, true, isRT); + return ptr; + } + + } + + exports.Rtrace = Rtrace; + var _default = { + Rtrace + }; + exports.default = _default; + return exports; +})({}); +if (typeof define === 'function' && define.amd) define([], function() { return rtrace; }); +else if (typeof module === 'object' && typeof exports==='object') module.exports = rtrace; diff --git a/lib/rtrace/umd/package.json b/lib/rtrace/umd/package.json new file mode 100644 index 0000000000..31f6a4909a --- /dev/null +++ b/lib/rtrace/umd/package.json @@ -0,0 +1,4 @@ +{ + "private": true, + "type": "commonjs" +} \ No newline at end of file diff --git a/lib/sdk/README.md b/lib/sdk/README.md deleted file mode 100644 index 8949190e40..0000000000 --- a/lib/sdk/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# Browser SDK - -An SDK to use the AssemblyScript compiler on the web. This is built to distribution files using the exact versions of the compiler and its dependencies. - -Expects [require.js](https://requirejs.org) (or compatible) on the web, primarily targeting [WebAssembly Studio](https://webassembly.studio). Note that consuming the source file in this directory directly does not solve any versioning issues - use `dist/sdk.js` instead. Do not try to bundle this. - -Exports -------- - -* **binaryen**
- The version of binaryen required by the compiler. - -* **long**
- The version of long.js required by the compiler. - -* **assemblyscript**
- The AssemblyScript compiler as a library. - -* **asc**
- AssemblyScript compiler frontend that one will interact with - ([see](https://github.com/AssemblyScript/assemblyscript/tree/master/cli)). - -Example usage -------------- - -```js -require( - ["https://cdn.jsdelivr.net/npm/assemblyscript@latest/dist/sdk"], - function(sdk) { - const { asc } = sdk; - asc.ready.then(() => { - asc.main(...); - }); - } -); -``` - -There is also the [SDK example](https://github.com/AssemblyScript/examples/tree/master/sdk) showing how to compile some actual code. diff --git a/lib/sdk/index.js b/lib/sdk/index.js deleted file mode 100644 index 7f1fbf26b2..0000000000 --- a/lib/sdk/index.js +++ /dev/null @@ -1,35 +0,0 @@ -const BINARYEN_VERSION = "nightly"; -const LONG_VERSION = "latest"; -const ASSEMBLYSCRIPT_VERSION = "latest"; - -// AMD/require.js (browser) -if (typeof define === "function" && define.amd) { - const paths = { - "binaryen": "https://cdn.jsdelivr.net/npm/binaryen@" + BINARYEN_VERSION + "/index", - "long": "https://cdn.jsdelivr.net/npm/long@" + LONG_VERSION + "/dist/long", - "assemblyscript": "https://cdn.jsdelivr.net/npm/assemblyscript@" + ASSEMBLYSCRIPT_VERSION + "/dist/assemblyscript", - "assemblyscript/cli/asc": "https://cdn.jsdelivr.net/npm/assemblyscript@" + ASSEMBLYSCRIPT_VERSION + "/dist/asc", - }; - require.config({ paths }); - define(Object.keys(paths), (binaryen, long, assemblyscript, asc) => ({ - BINARYEN_VERSION, - LONG_VERSION, - ASSEMBLYSCRIPT_VERSION, - binaryen, - long, - assemblyscript, - asc - })); - -// CommonJS fallback (node) -} else if (typeof module === "object" && module.exports) { - module.exports = { - BINARYEN_VERSION, - LONG_VERSION, - ASSEMBLYSCRIPT_VERSION, - binaryen: require("binaryen"), - long: require("long"), - assemblyscript: require("assemblyscript"), - asc: require("assemblyscript/cli/asc") - }; -} diff --git a/lib/sdk/tests/index.html b/lib/sdk/tests/index.html deleted file mode 100644 index 5d5eb34fc8..0000000000 --- a/lib/sdk/tests/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - diff --git a/lib/webpack/README.md b/lib/webpack/README.md deleted file mode 100644 index 733f718636..0000000000 --- a/lib/webpack/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Webpack loader - -An experimental [webpack](https://webpack.js.org/) loader for [AssemblyScript](http://assemblyscript.org) modules. - -Usage ------ - -```js -import MyModule from "@assemblyscript/webpack!mymodule.wasm"; - -var myModule = new MyModule({ imports: { /* if any */ } }); -``` - -TODO: Pipe .ts files through `asc`, accepting the usual options, but also keep raw .wasm support. diff --git a/lib/webpack/decode.js b/lib/webpack/decode.js deleted file mode 100644 index 364df2089f..0000000000 --- a/lib/webpack/decode.js +++ /dev/null @@ -1,26 +0,0 @@ -var s64 = new Array(123); -for (var i = 0; i < 64;) s64[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++; - -module.exports = function decode(string) { - var length = string.length; - if (length) { - var n = 0, p = length; - while (--p % 4 > 1 && string.charCodeAt(p) === 61) ++n; - length = Math.ceil(length * 3) / 4 - n; - } - var buffer = new Uint8Array(length); - var j = 0, o = 0, t; - for (var i = 0, k = string.length; i < k;) { - var c = string.charCodeAt(i++); - if (c === 61 && j > 1) break; - if ((c = s64[c]) === undefined) throw Error(); - switch (j) { - case 0: t = c; j = 1; break; - case 1: buffer[o++] = t << 2 | (c & 48) >> 4; t = c; j = 2; break; - case 2: buffer[o++] = (t & 15) << 4 | (c & 60) >> 2; t = c; j = 3; break; - case 3: buffer[o++] = (t & 3) << 6 | c; j = 0; break; - } - } - if (j === 1) throw Error(); - return buffer; -}; diff --git a/lib/webpack/index.js b/lib/webpack/index.js deleted file mode 100644 index d622ce5164..0000000000 --- a/lib/webpack/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const fs = require("fs"); -const path = require("path"); -const asc = require("assemblyscript/cli/asc.js"); -const base64 = require("@protobufjs/base64"); - -const MAGIC = Buffer.from([ 0x00, 0x61, 0x73, 0x6D ]); - -module.exports = loader; - -function loader(buffer) { - if (MAGIC.compare(buffer, 0, 4) !== 0) - return compile.call(this); - else - return bundle.call(this, buffer); -} - -loader.raw = true; - -function compile() { - const basePath = this.resourcePath.replace(/\.\w+$/, ""); - const args = [ - path.basename(this.resourcePath), - "--baseDir", path.dirname(this.resourcePath), - "--binaryFile", basePath + ".wasm", - "--textFile", basePath + ".wat", - "--optimize" - ]; - if (this.sourceMap) - args.push("--sourceMap"); - asc.main(args, err => { - if (err) - return this.callback(err); - fs.readFile(basePath + ".wasm", (err, binary) => { - if (err) - return this.callback(err); - if (!this.sourceMap) - return this.callback(null, bundle(binary)); - fs.readFile(basePath + ".wasm.map", (err, sourceMap) => { - if (err) - return this.callback(err); - return this.callback(null, bundle(binary), sourceMap.toString("utf8")); - }); - }); - }); -} - -function bundle(binary) { - const data = base64.encode(binary, 0, binary.wasm); - return [ - 'var data = "' + data + '", wasm;', - 'module.exports = function AssemblyScriptModule(options) {', - ' if (!wasm)', - ' wasm = new WebAssembly.Module(require("@assemblyscript/webpack/decode")(data));', - ' return new WebAssembly.Instance(wasm, options && options.imports || {}).exports;', - '};' - ].join("\n") + "\n"; -} diff --git a/lib/webpack/package.json b/lib/webpack/package.json deleted file mode 100644 index 169206ff98..0000000000 --- a/lib/webpack/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "@assemblyscript/webpack", - "version": "0.5.0", - "description": "webpack loader for AssemblyScript modules.", - "license": "Apache-2.0", - "dependencies": { - "@protobufjs/base64": "^1.1.2" - } -} diff --git a/media/icon.png b/media/icon.png new file mode 100644 index 0000000000..2ffe8dda6a Binary files /dev/null and b/media/icon.png differ diff --git a/media/icon.svg b/media/icon.svg new file mode 100644 index 0000000000..8277743b58 --- /dev/null +++ b/media/icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/package-lock.json b/package-lock.json index 125cc69c01..ebe2359041 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,10584 +1,1888 @@ { "name": "assemblyscript", "version": "0.0.0", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "packages": { + "": { + "name": "assemblyscript", + "version": "0.0.0", + "license": "Apache-2.0", + "dependencies": { + "binaryen": "123.0.0-nightly.20250530", + "long": "^5.2.4" + }, + "bin": { + "asc": "bin/asc.js", + "asinit": "bin/asinit.js" + }, + "devDependencies": { + "@eslint/js": "^10.0.1", + "@types/node": "^25.5.0", + "as-float": "^1.0.1", + "diff": "^8.0.4", + "esbuild": "^0.27.0", + "eslint": "^10.1.0", + "glob": "^13.0.6", + "globals": "^17.4.0", + "typescript": "^5.9.3", + "typescript-eslint": "^8.57.2" + }, + "engines": { + "node": ">=20", + "npm": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/assemblyscript" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", + "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", + "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", + "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", + "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", + "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", + "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", + "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", + "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", + "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", + "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", + "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", + "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", + "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", + "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", + "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", + "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", + "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", + "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", + "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", + "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", + "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", + "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", + "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", + "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", + "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", + "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "@eslint/eslintrc": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", - "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, + "license": "MIT", "dependencies": { - "ajv": { - "version": "6.12.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", - "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.3", - "fastq": "^1.6.0" - } - }, - "@octokit/auth-token": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.2.tgz", - "integrity": "sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ==", - "dev": true, - "requires": { - "@octokit/types": "^5.0.0" + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "@octokit/core": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-2.5.4.tgz", - "integrity": "sha512-HCp8yKQfTITYK+Nd09MHzAlP1v3Ii/oCohv0/TW9rhSLvzb98BOVs2QmVYuloE6a3l6LsfyGIwb6Pc4ycgWlIQ==", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, - "requires": { - "@octokit/auth-token": "^2.4.0", - "@octokit/graphql": "^4.3.1", - "@octokit/request": "^5.4.0", - "@octokit/types": "^5.0.0", - "before-after-hook": "^2.1.0", - "universal-user-agent": "^5.0.0" + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "@octokit/endpoint": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.5.tgz", - "integrity": "sha512-70K5u6zd45ItOny6aHQAsea8HHQjlQq85yqOMe+Aj8dkhN2qSJ9T+Q3YjUjEYfPRBcuUWNgMn62DQnP/4LAIiQ==", + "node_modules/@eslint/config-array": { + "version": "0.23.3", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.3.tgz", + "integrity": "sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==", "dev": true, - "requires": { - "@octokit/types": "^5.0.0", - "is-plain-object": "^4.0.0", - "universal-user-agent": "^6.0.0" - }, + "license": "Apache-2.0", "dependencies": { - "is-plain-object": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-4.1.1.tgz", - "integrity": "sha512-5Aw8LLVsDlZsETVMhoMXzqsXwQqr/0vlnBYzIXJbYo2F4yYlhLHs+Ez7Bod7IIQKWkJbJfxrWD7pA1Dw1TKrwA==", - "dev": true - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - } - } - }, - "@octokit/graphql": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.5.4.tgz", - "integrity": "sha512-ITpZ+dQc0cXAW1FmDkHJJM+8Lb6anUnin0VB5hLBilnYVdLC0ICFU/KIvT7OXfW9S81DE3U4Vx2EypDG1OYaPA==", - "dev": true, - "requires": { - "@octokit/request": "^5.3.0", - "@octokit/types": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@eslint/object-schema": "^3.0.3", + "debug": "^4.3.1", + "minimatch": "^10.2.4" }, - "dependencies": { - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - } + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "@octokit/plugin-paginate-rest": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.3.2.tgz", - "integrity": "sha512-PjHbMhKryxClCrmfvRpGaKCTxUcHIf2zirWRV9SMGf0EmxD/rFew/abSqbMiLl9uQgRZvqtTyCRMGMlUv1ZsBg==", + "node_modules/@eslint/config-helpers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.3.tgz", + "integrity": "sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==", "dev": true, - "requires": { - "@octokit/types": "^5.3.0" + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.1.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "@octokit/plugin-request-log": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz", - "integrity": "sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==", - "dev": true - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-3.17.0.tgz", - "integrity": "sha512-NFV3vq7GgoO2TrkyBRUOwflkfTYkFKS0tLAPym7RNpkwLCttqShaEGjthOsPEEL+7LFcYv3mU24+F2yVd3npmg==", + "node_modules/@eslint/core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz", + "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==", "dev": true, - "requires": { - "@octokit/types": "^4.1.6", - "deprecation": "^2.3.1" - }, + "license": "Apache-2.0", "dependencies": { - "@octokit/types": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-4.1.10.tgz", - "integrity": "sha512-/wbFy1cUIE5eICcg0wTKGXMlKSbaAxEr00qaBXzscLXpqhcwgXeS6P8O0pkysBhRfyjkKjJaYrvR1ExMO5eOXQ==", - "dev": true, - "requires": { - "@types/node": ">= 8" - } - } + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "@octokit/request": { - "version": "5.4.7", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.7.tgz", - "integrity": "sha512-FN22xUDP0i0uF38YMbOfx6TotpcENP5W8yJM1e/LieGXn6IoRxDMnBf7tx5RKSW4xuUZ/1P04NFZy5iY3Rax1A==", + "node_modules/@eslint/js": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", + "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", "dev": true, - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.0.0", - "@octokit/types": "^5.0.0", - "deprecation": "^2.0.0", - "is-plain-object": "^4.0.0", - "node-fetch": "^2.3.0", - "once": "^1.4.0", - "universal-user-agent": "^6.0.0" + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" }, - "dependencies": { - "is-plain-object": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-4.1.1.tgz", - "integrity": "sha512-5Aw8LLVsDlZsETVMhoMXzqsXwQqr/0vlnBYzIXJbYo2F4yYlhLHs+Ez7Bod7IIQKWkJbJfxrWD7pA1Dw1TKrwA==", - "dev": true - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true } } }, - "@octokit/request-error": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.2.tgz", - "integrity": "sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw==", - "dev": true, - "requires": { - "@octokit/types": "^5.0.1", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/rest": { - "version": "17.11.2", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-17.11.2.tgz", - "integrity": "sha512-4jTmn8WossTUaLfNDfXk4fVJgbz5JgZE8eCs4BvIb52lvIH8rpVMD1fgRCrHbSd6LRPE5JFZSfAEtszrOq3ZFQ==", - "dev": true, - "requires": { - "@octokit/core": "^2.4.3", - "@octokit/plugin-paginate-rest": "^2.2.0", - "@octokit/plugin-request-log": "^1.0.0", - "@octokit/plugin-rest-endpoint-methods": "3.17.0" - } - }, - "@octokit/types": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.4.1.tgz", - "integrity": "sha512-OlMlSySBJoJ6uozkr/i03nO5dlYQyE05vmQNZhAh9MyO4DPBP88QlwsDVLmVjIMFssvIZB6WO0ctIGMRG+xsJQ==", + "node_modules/@eslint/object-schema": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.3.tgz", + "integrity": "sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==", "dev": true, - "requires": { - "@types/node": ">= 8" + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "@semantic-release/commit-analyzer": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-8.0.1.tgz", - "integrity": "sha512-5bJma/oB7B4MtwUkZC2Bf7O1MHfi4gWe4mA+MIQ3lsEV0b422Bvl1z5HRpplDnMLHH3EXMoRdEng6Ds5wUqA3A==", + "node_modules/@eslint/plugin-kit": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz", + "integrity": "sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==", "dev": true, - "requires": { - "conventional-changelog-angular": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.0.7", - "debug": "^4.0.0", - "import-from": "^3.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.2" - }, + "license": "Apache-2.0", "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "@eslint/core": "^1.1.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "@semantic-release/error": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", - "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", - "dev": true - }, - "@semantic-release/github": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-7.1.1.tgz", - "integrity": "sha512-w8CLCvGVKNe2FPOYQ68OFxFVNNha7YRzptnwTZYdjXYtgTDKw0XVfnMSd9NlJeQPYGfQmIhIVPNBU/cA6zUY0A==", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, - "requires": { - "@octokit/rest": "^17.0.0", - "@semantic-release/error": "^2.2.0", - "aggregate-error": "^3.0.0", - "bottleneck": "^2.18.1", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "fs-extra": "^9.0.0", - "globby": "^11.0.0", - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "issue-parser": "^6.0.0", - "lodash": "^4.17.4", - "mime": "^2.4.3", - "p-filter": "^2.0.0", - "p-retry": "^4.0.0", - "url-join": "^4.0.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" } }, - "@semantic-release/npm": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-7.0.6.tgz", - "integrity": "sha512-F4judxdeLe8f7+vDva1TkqNc5Tb2tcltZYW0tLtvP2Xt7CD/gGiz7UxAWEOPsXBvIqAP+uTidvGLPl9U3/uRoQ==", + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, - "requires": { - "@semantic-release/error": "^2.2.0", - "aggregate-error": "^3.0.0", - "execa": "^4.0.0", - "fs-extra": "^9.0.0", - "lodash": "^4.17.15", - "nerf-dart": "^1.0.0", - "normalize-url": "^5.0.0", - "npm": "^6.13.0", - "rc": "^1.2.8", - "read-pkg": "^5.0.0", - "registry-auth-token": "^4.0.0", - "semver": "^7.1.2", - "tempy": "^0.5.0" - }, + "license": "Apache-2.0", "dependencies": { - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - } + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" } }, - "@semantic-release/release-notes-generator": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-9.0.1.tgz", - "integrity": "sha512-bOoTiH6SiiR0x2uywSNR7uZcRDl22IpZhj+Q5Bn0v+98MFtOMhCxFhbrKQjhbYoZw7vps1mvMRmFkp/g6R9cvQ==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "requires": { - "conventional-changelog-angular": "^5.0.0", - "conventional-changelog-writer": "^4.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.0.0", - "debug": "^4.0.0", - "get-stream": "^5.0.0", - "import-from": "^3.0.0", - "into-stream": "^5.0.0", - "lodash": "^4.17.4", - "read-pkg-up": "^7.0.0" + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", - "dev": true - }, - "@types/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", - "dev": true - }, - "@types/node": { - "version": "14.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.4.tgz", - "integrity": "sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.1.0.tgz", - "integrity": "sha512-U+nRJx8XDUqJxYF0FCXbpmD9nWt/xHDDG0zsw1vrVYAmEAuD/r49iowfurjSL2uTA2JsgtpsyG7mjO7PHf2dYw==", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.1.0", - "@typescript-eslint/scope-manager": "4.1.0", - "debug": "^4.1.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - } + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "@typescript-eslint/experimental-utils": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.1.0.tgz", - "integrity": "sha512-paEYLA37iqRIDPeQwAmoYSiZ3PiHsaAc3igFeBTeqRHgPnHjHLJ9OGdmP6nwAkF65p2QzEsEBtpjNUBWByNWzA==", + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", "dev": true, - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.1.0", - "@typescript-eslint/types": "4.1.0", - "@typescript-eslint/typescript-estree": "4.1.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - } + "license": "MIT" }, - "@typescript-eslint/parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.1.0.tgz", - "integrity": "sha512-hM/WNCQTzDHgS0Ke3cR9zPndL3OTKr9OoN9CL3UqulsAjYDrglSwIIgswSmHBcSbOzLmgaMARwrQEbIumIglvQ==", + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.1.0", - "@typescript-eslint/types": "4.1.0", - "@typescript-eslint/typescript-estree": "4.1.0", - "debug": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } + "license": "MIT" }, - "@typescript-eslint/scope-manager": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.1.0.tgz", - "integrity": "sha512-HD1/u8vFNnxwiHqlWKC/Pigdn0Mvxi84Y6GzbZ5f5sbLrFKu0al02573Er+D63Sw67IffVUXR0uR8rpdfdk+vA==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, - "requires": { - "@typescript-eslint/types": "4.1.0", - "@typescript-eslint/visitor-keys": "4.1.0" - } + "license": "MIT" }, - "@typescript-eslint/types": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.1.0.tgz", - "integrity": "sha512-rkBqWsO7m01XckP9R2YHVN8mySOKKY2cophGM8K5uDK89ArCgahItQYdbg/3n8xMxzu2elss+an1TphlUpDuJw==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.1.0.tgz", - "integrity": "sha512-r6et57qqKAWU173nWyw31x7OfgmKfMEcjJl9vlJEzS+kf9uKNRr4AVTRXfTCwebr7bdiVEkfRY5xGnpPaNPe4Q==", + "node_modules/@types/node": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, - "requires": { - "@typescript-eslint/types": "4.1.0", - "@typescript-eslint/visitor-keys": "4.1.0", - "debug": "^4.1.1", - "globby": "^11.0.1", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, + "license": "MIT", "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - } + "undici-types": "~7.18.0" } }, - "@typescript-eslint/visitor-keys": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.1.0.tgz", - "integrity": "sha512-+taO0IZGCtCEsuNTTF2Q/5o8+fHrlml8i9YsZt2AiDCdYEJzYlsmRY991l/6f3jNXFyAWepdQj7n8Na6URiDRQ==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.2.tgz", + "integrity": "sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==", "dev": true, - "requires": { - "@typescript-eslint/types": "4.1.0", - "eslint-visitor-keys": "^2.0.0" - }, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", - "dev": true - } - } - }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.57.2", + "@typescript-eslint/type-utils": "8.57.2", + "@typescript-eslint/utils": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.57.2", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" + "license": "MIT", + "engines": { + "node": ">= 4" } }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "node_modules/@typescript-eslint/parser": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.2.tgz", + "integrity": "sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.57.2", + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.2.tgz", + "integrity": "sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==", "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.57.2", + "@typescript-eslint/types": "^8.57.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.2.tgz", + "integrity": "sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==", "dev": true, - "requires": { - "@xtuc/long": "4.2.2" + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.2.tgz", + "integrity": "sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.2.tgz", + "integrity": "sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2", + "@typescript-eslint/utils": "8.57.2", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "node_modules/@typescript-eslint/types": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.2.tgz", + "integrity": "sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.2.tgz", + "integrity": "sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.57.2", + "@typescript-eslint/tsconfig-utils": "8.57.2", + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "node_modules/@typescript-eslint/utils": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.2.tgz", + "integrity": "sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.57.2", + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.2.tgz", + "integrity": "sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.2", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "acorn": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", - "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true - }, - "agent-base": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz", - "integrity": "sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==", + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, - "requires": { - "debug": "4" + "license": "MIT", + "bin": { + "acorn": "bin/acorn" }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "engines": { + "node": ">=0.4.0" } }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "ajv": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "ajv-errors": { + "node_modules/as-float": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "resolved": "https://registry.npmjs.org/as-float/-/as-float-1.0.1.tgz", + "integrity": "sha512-TsN1UpoFdtzuKXqqpdnGbFuMYnK/eqMEjd2xVvACG29H/v4KLx+UD+tHRz9v6zO+Ge/AR/uskSruBIPZrchhHw==", "dev": true, - "requires": { - "type-fest": "^0.11.0" - }, - "dependencies": { - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true - } - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true + "license": "MIT" }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, - "requires": { - "color-convert": "^1.9.0" + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, - "ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", - "dev": true - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "optional": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "node_modules/binaryen": { + "version": "123.0.0-nightly.20250530", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-123.0.0-nightly.20250530.tgz", + "integrity": "sha512-d1zPHBN5YlOd3Ff+OUxvVExuFeh8heSnqe+X3bjItFxGLvn4VGBKmrvv7pgy/cRhrIUGuPW138iaWfDhwjyDqg==", + "license": "Apache-2.0", + "bin": { + "wasm-as": "bin/wasm-as", + "wasm-ctor-eval": "bin/wasm-ctor-eval", + "wasm-dis": "bin/wasm-dis", + "wasm-merge": "bin/wasm-merge", + "wasm-metadce": "bin/wasm-metadce", + "wasm-opt": "bin/wasm-opt", + "wasm-reduce": "bin/wasm-reduce", + "wasm-shell": "bin/wasm-shell", + "wasm2js": "bin/wasm2js" } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, - "requires": { - "sprintf-js": "~1.0.2" + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "argv-formatter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", - "integrity": "sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - }, + "license": "MIT", "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, + "license": "MIT", "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } } }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true, - "optional": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/diff": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/esbuild": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", + "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.4", + "@esbuild/android-arm": "0.27.4", + "@esbuild/android-arm64": "0.27.4", + "@esbuild/android-x64": "0.27.4", + "@esbuild/darwin-arm64": "0.27.4", + "@esbuild/darwin-x64": "0.27.4", + "@esbuild/freebsd-arm64": "0.27.4", + "@esbuild/freebsd-x64": "0.27.4", + "@esbuild/linux-arm": "0.27.4", + "@esbuild/linux-arm64": "0.27.4", + "@esbuild/linux-ia32": "0.27.4", + "@esbuild/linux-loong64": "0.27.4", + "@esbuild/linux-mips64el": "0.27.4", + "@esbuild/linux-ppc64": "0.27.4", + "@esbuild/linux-riscv64": "0.27.4", + "@esbuild/linux-s390x": "0.27.4", + "@esbuild/linux-x64": "0.27.4", + "@esbuild/netbsd-arm64": "0.27.4", + "@esbuild/netbsd-x64": "0.27.4", + "@esbuild/openbsd-arm64": "0.27.4", + "@esbuild/openbsd-x64": "0.27.4", + "@esbuild/openharmony-arm64": "0.27.4", + "@esbuild/sunos-x64": "0.27.4", + "@esbuild/win32-arm64": "0.27.4", + "@esbuild/win32-ia32": "0.27.4", + "@esbuild/win32-x64": "0.27.4" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.1.0.tgz", + "integrity": "sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.3", + "@eslint/config-helpers": "^0.5.3", + "@eslint/core": "^1.1.1", + "@eslint/plugin-kit": "^0.6.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "minimatch": "^10.2.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true } } }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", - "dev": true - }, - "before-after-hook": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", - "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==", - "dev": true - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true, - "optional": true - }, - "binaryen": { - "version": "95.0.0-nightly.20200813", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-95.0.0-nightly.20200813.tgz", - "integrity": "sha512-xY+fhSAkVxptBoQAn9X4o21zTFycOjc+PeqbWSwcDqrSmXBXUMeq7qHhz4EWSWlFDKobHeUaiIbzLzlmciDWHw==" - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", - "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", - "dev": true - }, - "bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - } - }, - "cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", - "dev": true, - "requires": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", - "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", - "dev": true, - "requires": { - "colors": "1.0.3" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "conventional-changelog-angular": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.11.tgz", - "integrity": "sha512-nSLypht/1yEflhuTogC03i7DX7sOrXGsRn14g131Potqi6cbGbGEE9PSDEHKldabB6N76HiSyw9Ph+kLmC04Qw==", - "dev": true, - "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - } - }, - "conventional-changelog-writer": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.17.tgz", - "integrity": "sha512-IKQuK3bib/n032KWaSb8YlBFds+aLmzENtnKtxJy3+HqDq5kohu3g/UdNbIHeJWygfnEbZjnCKFxAW0y7ArZAw==", - "dev": true, - "requires": { - "compare-func": "^2.0.0", - "conventional-commits-filter": "^2.0.6", - "dateformat": "^3.0.0", - "handlebars": "^4.7.6", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^7.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^3.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "conventional-commits-filter": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz", - "integrity": "sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw==", - "dev": true, - "requires": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - } - }, - "conventional-commits-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz", - "integrity": "sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA==", - "dev": true, - "requires": { - "JSONStream": "^1.0.4", - "is-text-path": "^1.0.1", - "lodash": "^4.17.15", - "meow": "^7.0.0", - "split2": "^2.0.0", - "through2": "^3.0.0", - "trim-off-newlines": "^1.0.0" - } - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - } - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "env-ci": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.0.2.tgz", - "integrity": "sha512-Xc41mKvjouTXD3Oy9AqySz1IeyvJvHZ20Twf5ZLYbNpPPIuCnL/qHCmNlD01LoNy0JTunw9HPYVptD19Ac7Mbw==", - "dev": true, - "requires": { - "execa": "^4.0.0", - "java-properties": "^1.0.0" - } - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.8.1.tgz", - "integrity": "sha512-/2rX2pfhyUG0y+A123d0ccXtMm7DV7sH1m3lk9nk2DZ2LReq39FXHueR9xZwshE5MdfSf0xunSaMWRqyIA6M1w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.1.3", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.0", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^1.3.0", - "espree": "^7.3.0", - "esquery": "^1.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "eslint-scope": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "espree": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", - "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", - "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastq": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", - "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "find-versions": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", - "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", - "dev": true, - "requires": { - "semver-regex": "^2.0.0" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "git-log-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", - "integrity": "sha1-LmpMGxP8AAKCB7p5WnrDFme5/Uo=", - "dev": true, - "requires": { - "argv-formatter": "~1.0.0", - "spawn-error-forwarder": "~1.0.0", - "split2": "~1.0.0", - "stream-combiner2": "~1.1.1", - "through2": "~2.0.0", - "traverse": "~0.6.6" - }, - "dependencies": { - "split2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=", - "dev": true, - "requires": { - "through2": "~2.0.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "requires": { - "global-prefix": "^3.0.0" - }, - "dependencies": { - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "handlebars": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", - "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hook-std": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", - "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", - "dev": true - }, - "hosted-git-info": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", - "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", - "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "into-stream": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-5.1.1.tgz", - "integrity": "sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA==", - "dev": true, - "requires": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", - "dev": true, - "requires": { - "text-extensions": "^1.0.0" - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "issue-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", - "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", - "dev": true, - "requires": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" - } - }, - "java-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsonfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", - "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^1.0.0" - } - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "lodash.capitalize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", - "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk=", - "dev": true - }, - "lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", - "dev": true - }, - "lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", - "dev": true - }, - "lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", - "dev": true - }, - "lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", - "dev": true - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "macos-release": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz", - "integrity": "sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==", - "dev": true - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", - "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "marked": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-1.1.1.tgz", - "integrity": "sha512-mJzT8D2yPxoPh7h0UXkB+dBj4FykPJ2OIfxAWeIHrvoHDkFxukV/29QxoFQoPM6RLEwhIFdJpmKBlqVM3s2ZIw==", - "dev": true - }, - "marked-terminal": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-4.1.0.tgz", - "integrity": "sha512-5KllfAOW02WS6hLRQ7cNvGOxvKW1BKuXELH4EtbWfyWgxQhROoMxEvuQ/3fTgkNjledR0J48F4HbapvYp1zWkQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.1", - "cardinal": "^2.1.1", - "chalk": "^4.0.0", - "cli-table": "^0.3.1", - "node-emoji": "^1.10.0", - "supports-hyperlinks": "^2.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "meow": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz", - "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" - }, - "dependencies": { - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", - "dev": true - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "nerf-dart": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-emoji": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", - "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", - "dev": true, - "requires": { - "lodash.toarray": "^4.4.0" - } - }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true - }, - "normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-5.1.0.tgz", - "integrity": "sha512-UxHuSWsSAmzSqN+DSjasaZWQ3QPtEisHdlr4y9MJ5zg0RcImv5fQt8QM0izJSCdsdmhJGK+ubcTpJXwVDmwSVQ==", - "dev": true - }, - "npm": { - "version": "6.14.8", - "resolved": "https://registry.npmjs.org/npm/-/npm-6.14.8.tgz", - "integrity": "sha512-HBZVBMYs5blsj94GTeQZel7s9odVuuSUHy1+AlZh7rPVux1os2ashvEGLy/STNK7vUjbrCg5Kq9/GXisJgdf6A==", - "dev": true, - "requires": { - "JSONStream": "^1.3.5", - "abbrev": "~1.1.1", - "ansicolors": "~0.3.2", - "ansistyles": "~0.1.3", - "aproba": "^2.0.0", - "archy": "~1.0.0", - "bin-links": "^1.1.8", - "bluebird": "^3.5.5", - "byte-size": "^5.0.1", - "cacache": "^12.0.3", - "call-limit": "^1.1.1", - "chownr": "^1.1.4", - "ci-info": "^2.0.0", - "cli-columns": "^3.1.2", - "cli-table3": "^0.5.1", - "cmd-shim": "^3.0.3", - "columnify": "~1.5.4", - "config-chain": "^1.1.12", - "debuglog": "*", - "detect-indent": "~5.0.0", - "detect-newline": "^2.1.0", - "dezalgo": "~1.0.3", - "editor": "~1.0.0", - "figgy-pudding": "^3.5.1", - "find-npm-prefix": "^1.0.2", - "fs-vacuum": "~1.2.10", - "fs-write-stream-atomic": "~1.0.10", - "gentle-fs": "^2.3.1", - "glob": "^7.1.6", - "graceful-fs": "^4.2.4", - "has-unicode": "~2.0.1", - "hosted-git-info": "^2.8.8", - "iferr": "^1.0.2", - "imurmurhash": "*", - "infer-owner": "^1.0.4", - "inflight": "~1.0.6", - "inherits": "^2.0.4", - "ini": "^1.3.5", - "init-package-json": "^1.10.3", - "is-cidr": "^3.0.0", - "json-parse-better-errors": "^1.0.2", - "lazy-property": "~1.0.0", - "libcipm": "^4.0.8", - "libnpm": "^3.0.1", - "libnpmaccess": "^3.0.2", - "libnpmhook": "^5.0.3", - "libnpmorg": "^1.0.1", - "libnpmsearch": "^2.0.2", - "libnpmteam": "^1.0.2", - "libnpx": "^10.2.4", - "lock-verify": "^2.1.0", - "lockfile": "^1.0.4", - "lodash._baseindexof": "*", - "lodash._baseuniq": "~4.6.0", - "lodash._bindcallback": "*", - "lodash._cacheindexof": "*", - "lodash._createcache": "*", - "lodash._getnative": "*", - "lodash.clonedeep": "~4.5.0", - "lodash.restparam": "*", - "lodash.union": "~4.6.0", - "lodash.uniq": "~4.5.0", - "lodash.without": "~4.4.0", - "lru-cache": "^5.1.1", - "meant": "^1.0.2", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.5", - "move-concurrently": "^1.0.1", - "node-gyp": "^5.1.0", - "nopt": "^4.0.3", - "normalize-package-data": "^2.5.0", - "npm-audit-report": "^1.3.3", - "npm-cache-filename": "~1.0.2", - "npm-install-checks": "^3.0.2", - "npm-lifecycle": "^3.1.5", - "npm-package-arg": "^6.1.1", - "npm-packlist": "^1.4.8", - "npm-pick-manifest": "^3.0.2", - "npm-profile": "^4.0.4", - "npm-registry-fetch": "^4.0.7", - "npm-user-validate": "~1.0.0", - "npmlog": "~4.1.2", - "once": "~1.4.0", - "opener": "^1.5.1", - "osenv": "^0.1.5", - "pacote": "^9.5.12", - "path-is-inside": "~1.0.2", - "promise-inflight": "~1.0.1", - "qrcode-terminal": "^0.12.0", - "query-string": "^6.8.2", - "qw": "~1.0.1", - "read": "~1.0.7", - "read-cmd-shim": "^1.0.5", - "read-installed": "~4.0.3", - "read-package-json": "^2.1.1", - "read-package-tree": "^5.3.1", - "readable-stream": "^3.6.0", - "readdir-scoped-modules": "^1.1.0", - "request": "^2.88.0", - "retry": "^0.12.0", - "rimraf": "^2.7.1", - "safe-buffer": "^5.1.2", - "semver": "^5.7.1", - "sha": "^3.0.0", - "slide": "~1.1.6", - "sorted-object": "~2.0.1", - "sorted-union-stream": "~2.1.3", - "ssri": "^6.0.1", - "stringify-package": "^1.0.1", - "tar": "^4.4.13", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "uid-number": "0.0.6", - "umask": "~1.1.0", - "unique-filename": "^1.1.1", - "unpipe": "~1.0.0", - "update-notifier": "^2.5.0", - "uuid": "^3.3.3", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "~3.0.0", - "which": "^1.3.1", - "worker-farm": "^1.7.0", - "write-file-atomic": "^2.4.3" - }, - "dependencies": { - "JSONStream": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "agent-base": { - "version": "4.3.0", - "bundled": true, - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "agentkeepalive": { - "version": "3.5.2", - "bundled": true, - "dev": true, - "requires": { - "humanize-ms": "^1.2.1" - } - }, - "ajv": { - "version": "5.5.2", - "bundled": true, - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "ansi-align": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.0.0" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansicolors": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "ansistyles": { - "version": "0.1.3", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "asap": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, - "asn1": { - "version": "0.2.4", - "bundled": true, - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "bundled": true, - "dev": true - }, - "aws4": { - "version": "1.8.0", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bin-links": { - "version": "1.1.8", - "bundled": true, - "dev": true, - "requires": { - "bluebird": "^3.5.3", - "cmd-shim": "^3.0.0", - "gentle-fs": "^2.3.0", - "graceful-fs": "^4.1.15", - "npm-normalize-package-bin": "^1.0.0", - "write-file-atomic": "^2.3.0" - } - }, - "bluebird": { - "version": "3.5.5", - "bundled": true, - "dev": true - }, - "boxen": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "buffer-from": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "builtins": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "byline": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, - "byte-size": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "cacache": { - "version": "12.0.3", - "bundled": true, - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "call-limit": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "capture-stack-trace": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "chalk": { - "version": "2.4.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chownr": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "ci-info": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "cidr-regex": { - "version": "2.0.10", - "bundled": true, - "dev": true, - "requires": { - "ip-regex": "^2.1.0" - } - }, - "cli-boxes": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "cli-columns": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.0.0", - "strip-ansi": "^3.0.1" - } - }, - "cli-table3": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^2.1.1" - } - }, - "cliui": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "clone": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "cmd-shim": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "mkdirp": "~0.5.0" - } - }, - "co": { - "version": "4.6.0", - "bundled": true, - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "color-convert": { - "version": "1.9.1", - "bundled": true, - "dev": true, - "requires": { - "color-name": "^1.1.1" - } - }, - "color-name": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "colors": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "optional": true - }, - "columnify": { - "version": "1.5.4", - "bundled": true, - "dev": true, - "requires": { - "strip-ansi": "^3.0.0", - "wcwidth": "^1.0.0" - } - }, - "combined-stream": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "config-chain": { - "version": "1.1.12", - "bundled": true, - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "configstore": { - "version": "3.1.5", - "bundled": true, - "dev": true, - "requires": { - "dot-prop": "^4.2.1", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - }, - "dependencies": { - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "iferr": { - "version": "0.1.5", - "bundled": true, - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "create-error-class": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.5", - "bundled": true, - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "bundled": true, - "dev": true - } - } - }, - "crypto-random-string": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "cyclist": { - "version": "0.2.2", - "bundled": true, - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true - } - } - }, - "debuglog": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true - }, - "defaults": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-properties": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "detect-indent": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, - "detect-newline": { - "version": "2.1.0", - "bundled": true, - "dev": true - }, - "dezalgo": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "dot-prop": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "dotenv": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "duplexer3": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "duplexify": { - "version": "3.6.0", - "bundled": true, - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "editor": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "bundled": true, - "dev": true - }, - "encoding": { - "version": "0.1.12", - "bundled": true, - "dev": true, - "requires": { - "iconv-lite": "~0.4.13" - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "env-paths": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "err-code": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "errno": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "es-abstract": { - "version": "1.12.0", - "bundled": true, - "dev": true, - "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-promise": { - "version": "4.2.8", - "bundled": true, - "dev": true - }, - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "bundled": true, - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "extsprintf": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "figgy-pudding": { - "version": "3.5.1", - "bundled": true, - "dev": true - }, - "find-npm-prefix": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "flush-write-stream": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true - }, - "form-data": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^2.6.0" - }, - "dependencies": { - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - } - } - }, - "fs-vacuum": { - "version": "1.2.10", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "path-is-inside": "^1.0.1", - "rimraf": "^2.5.2" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - }, - "dependencies": { - "iferr": { - "version": "0.1.5", - "bundled": true, - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "genfun": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, - "gentle-fs": { - "version": "2.3.1", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.1.2", - "chownr": "^1.1.2", - "cmd-shim": "^3.0.3", - "fs-vacuum": "^1.2.10", - "graceful-fs": "^4.1.11", - "iferr": "^0.1.5", - "infer-owner": "^1.0.4", - "mkdirp": "^0.5.1", - "path-is-inside": "^1.0.2", - "read-cmd-shim": "^1.0.1", - "slide": "^1.1.6" - }, - "dependencies": { - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "iferr": { - "version": "0.1.5", - "bundled": true, - "dev": true - } - } - }, - "get-caller-file": { - "version": "2.0.5", - "bundled": true, - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "global-dirs": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, - "got": { - "version": "6.7.1", - "bundled": true, - "dev": true, - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "bundled": true, - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.2.4", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "har-validator": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "ajv": "^5.3.0", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "hosted-git-info": { - "version": "2.8.8", - "bundled": true, - "dev": true - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true, - "dev": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "4", - "debug": "3.1.0" - } - }, - "http-signature": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-proxy-agent": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - }, - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.4.23", - "bundled": true, - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "iferr": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "import-lazy": { - "version": "2.1.0", - "bundled": true, - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true - }, - "init-package-json": { - "version": "1.10.3", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.1", - "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", - "promzard": "^0.3.0", - "read": "~1.0.1", - "read-package-json": "1 || 2", - "semver": "2.x || 3.x || 4 || 5", - "validate-npm-package-license": "^3.0.1", - "validate-npm-package-name": "^3.0.0" - } - }, - "ip": { - "version": "1.1.5", - "bundled": true, - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "bundled": true, - "dev": true - }, - "is-callable": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "is-ci": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "requires": { - "ci-info": "^1.5.0" - }, - "dependencies": { - "ci-info": { - "version": "1.6.0", - "bundled": true, - "dev": true - } - } - }, - "is-cidr": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "cidr-regex": "^2.0.10" - } - }, - "is-date-object": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-installed-globally": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, - "is-npm": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-obj": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "is-path-inside": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-redirect": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-retry-allowed": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "is-symbol": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "dev": true - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "bundled": true, - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "jsonparse": { - "version": "1.3.1", - "bundled": true, - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "latest-version": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "package-json": "^4.0.0" - } - }, - "lazy-property": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "libcipm": { - "version": "4.0.8", - "bundled": true, - "dev": true, - "requires": { - "bin-links": "^1.1.2", - "bluebird": "^3.5.1", - "figgy-pudding": "^3.5.1", - "find-npm-prefix": "^1.0.2", - "graceful-fs": "^4.1.11", - "ini": "^1.3.5", - "lock-verify": "^2.1.0", - "mkdirp": "^0.5.1", - "npm-lifecycle": "^3.0.0", - "npm-logical-tree": "^1.2.1", - "npm-package-arg": "^6.1.0", - "pacote": "^9.1.0", - "read-package-json": "^2.0.13", - "rimraf": "^2.6.2", - "worker-farm": "^1.6.0" - } - }, - "libnpm": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "bin-links": "^1.1.2", - "bluebird": "^3.5.3", - "find-npm-prefix": "^1.0.2", - "libnpmaccess": "^3.0.2", - "libnpmconfig": "^1.2.1", - "libnpmhook": "^5.0.3", - "libnpmorg": "^1.0.1", - "libnpmpublish": "^1.1.2", - "libnpmsearch": "^2.0.2", - "libnpmteam": "^1.0.2", - "lock-verify": "^2.0.2", - "npm-lifecycle": "^3.0.0", - "npm-logical-tree": "^1.2.1", - "npm-package-arg": "^6.1.0", - "npm-profile": "^4.0.2", - "npm-registry-fetch": "^4.0.0", - "npmlog": "^4.1.2", - "pacote": "^9.5.3", - "read-package-json": "^2.0.13", - "stringify-package": "^1.0.0" - } - }, - "libnpmaccess": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "get-stream": "^4.0.0", - "npm-package-arg": "^6.1.0", - "npm-registry-fetch": "^4.0.0" - } - }, - "libnpmconfig": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "find-up": "^3.0.0", - "ini": "^1.3.5" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "bundled": true, - "dev": true - } - } - }, - "libnpmhook": { - "version": "5.0.3", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "figgy-pudding": "^3.4.1", - "get-stream": "^4.0.0", - "npm-registry-fetch": "^4.0.0" - } - }, - "libnpmorg": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "figgy-pudding": "^3.4.1", - "get-stream": "^4.0.0", - "npm-registry-fetch": "^4.0.0" - } - }, - "libnpmpublish": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "figgy-pudding": "^3.5.1", - "get-stream": "^4.0.0", - "lodash.clonedeep": "^4.5.0", - "normalize-package-data": "^2.4.0", - "npm-package-arg": "^6.1.0", - "npm-registry-fetch": "^4.0.0", - "semver": "^5.5.1", - "ssri": "^6.0.1" - } - }, - "libnpmsearch": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "get-stream": "^4.0.0", - "npm-registry-fetch": "^4.0.0" - } - }, - "libnpmteam": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "figgy-pudding": "^3.4.1", - "get-stream": "^4.0.0", - "npm-registry-fetch": "^4.0.0" - } - }, - "libnpx": { - "version": "10.2.4", - "bundled": true, - "dev": true, - "requires": { - "dotenv": "^5.0.1", - "npm-package-arg": "^6.0.0", - "rimraf": "^2.6.2", - "safe-buffer": "^5.1.0", - "update-notifier": "^2.3.0", - "which": "^1.3.0", - "y18n": "^4.0.0", - "yargs": "^14.2.3" - } - }, - "lock-verify": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "npm-package-arg": "^6.1.0", - "semver": "^5.4.1" - } - }, - "lockfile": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "requires": { - "signal-exit": "^3.0.2" - } - }, - "lodash._baseindexof": { - "version": "3.1.0", - "bundled": true, - "dev": true - }, - "lodash._baseuniq": { - "version": "4.6.0", - "bundled": true, - "dev": true, - "requires": { - "lodash._createset": "~4.0.0", - "lodash._root": "~3.0.0" - } - }, - "lodash._bindcallback": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "lodash._cacheindexof": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "lodash._createcache": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0" - } - }, - "lodash._createset": { - "version": "4.0.3", - "bundled": true, - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "bundled": true, - "dev": true - }, - "lodash._root": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "bundled": true, - "dev": true - }, - "lodash.restparam": { - "version": "3.6.1", - "bundled": true, - "dev": true - }, - "lodash.union": { - "version": "4.6.0", - "bundled": true, - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "bundled": true, - "dev": true - }, - "lodash.without": { - "version": "4.4.0", - "bundled": true, - "dev": true - }, - "lowercase-keys": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "make-dir": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "make-fetch-happen": { - "version": "5.0.2", - "bundled": true, - "dev": true, - "requires": { - "agentkeepalive": "^3.4.1", - "cacache": "^12.0.0", - "http-cache-semantics": "^3.8.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "node-fetch-npm": "^2.0.2", - "promise-retry": "^1.1.1", - "socks-proxy-agent": "^4.0.0", - "ssri": "^6.0.0" - } - }, - "meant": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "mime-db": { - "version": "1.35.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.19", - "bundled": true, - "dev": true, - "requires": { - "mime-db": "~1.35.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "bundled": true, - "dev": true - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^2.9.0" - }, - "dependencies": { - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - } - } - }, - "mississippi": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mkdirp": { - "version": "0.5.5", - "bundled": true, - "dev": true, - "requires": { - "minimist": "^1.2.5" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "bundled": true, - "dev": true - } - } - }, - "move-concurrently": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - }, - "dependencies": { - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true - } - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "mute-stream": { - "version": "0.0.7", - "bundled": true, - "dev": true - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "encoding": "^0.1.11", - "json-parse-better-errors": "^1.0.0", - "safe-buffer": "^5.1.1" - } - }, - "node-gyp": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "mkdirp": "^0.5.1", - "nopt": "^4.0.1", - "npmlog": "^4.1.2", - "request": "^2.88.0", - "rimraf": "^2.6.3", - "semver": "^5.7.1", - "tar": "^4.4.12", - "which": "^1.3.1" - } - }, - "nopt": { - "version": "4.0.3", - "bundled": true, - "dev": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "resolve": { - "version": "1.10.0", - "bundled": true, - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "npm-audit-report": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "requires": { - "cli-table3": "^0.5.0", - "console-control-strings": "^1.1.0" - } - }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-cache-filename": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "npm-install-checks": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "semver": "^2.3.0 || 3.x || 4 || 5" - } - }, - "npm-lifecycle": { - "version": "3.1.5", - "bundled": true, - "dev": true, - "requires": { - "byline": "^5.0.0", - "graceful-fs": "^4.1.15", - "node-gyp": "^5.0.2", - "resolve-from": "^4.0.0", - "slide": "^1.1.6", - "uid-number": "0.0.6", - "umask": "^1.1.0", - "which": "^1.3.1" - } - }, - "npm-logical-tree": { - "version": "1.2.1", - "bundled": true, - "dev": true - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "npm-package-arg": { - "version": "6.1.1", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" - } - }, - "npm-packlist": { - "version": "1.4.8", - "bundled": true, - "dev": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-pick-manifest": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "npm-package-arg": "^6.0.0", - "semver": "^5.4.1" - } - }, - "npm-profile": { - "version": "4.0.4", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.1.2 || 2", - "figgy-pudding": "^3.4.1", - "npm-registry-fetch": "^4.0.0" - } - }, - "npm-registry-fetch": { - "version": "4.0.7", - "bundled": true, - "dev": true, - "requires": { - "JSONStream": "^1.3.4", - "bluebird": "^3.5.1", - "figgy-pudding": "^3.4.1", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^5.0.0", - "npm-package-arg": "^6.1.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "bundled": true, - "dev": true - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "npm-user-validate": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "object-keys": { - "version": "1.0.12", - "bundled": true, - "dev": true - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "opener": { - "version": "1.5.1", - "bundled": true, - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "package-json": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - } - }, - "pacote": { - "version": "9.5.12", - "bundled": true, - "dev": true, - "requires": { - "bluebird": "^3.5.3", - "cacache": "^12.0.2", - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "get-stream": "^4.1.0", - "glob": "^7.1.3", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^5.0.0", - "minimatch": "^3.0.4", - "minipass": "^2.3.5", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "normalize-package-data": "^2.4.0", - "npm-normalize-package-bin": "^1.0.0", - "npm-package-arg": "^6.1.0", - "npm-packlist": "^1.1.12", - "npm-pick-manifest": "^3.0.0", - "npm-registry-fetch": "^4.0.0", - "osenv": "^0.1.5", - "promise-inflight": "^1.0.1", - "promise-retry": "^1.1.1", - "protoduck": "^5.0.1", - "rimraf": "^2.6.2", - "safe-buffer": "^5.1.2", - "semver": "^5.6.0", - "ssri": "^6.0.1", - "tar": "^4.4.10", - "unique-filename": "^1.1.1", - "which": "^1.3.1" - }, - "dependencies": { - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - } - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "path-exists": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "bundled": true, - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "bundled": true, - "dev": true - }, - "pify": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "err-code": "^1.0.0", - "retry": "^0.10.0" - }, - "dependencies": { - "retry": { - "version": "0.10.1", - "bundled": true, - "dev": true - } - } - }, - "promzard": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "read": "1" - } - }, - "proto-list": { - "version": "1.2.4", - "bundled": true, - "dev": true - }, - "protoduck": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "requires": { - "genfun": "^5.0.0" - } - }, - "prr": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "psl": { - "version": "1.1.29", - "bundled": true, - "dev": true - }, - "pump": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "bundled": true, - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true - }, - "qrcode-terminal": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "qs": { - "version": "6.5.2", - "bundled": true, - "dev": true - }, - "query-string": { - "version": "6.8.2", - "bundled": true, - "dev": true, - "requires": { - "decode-uri-component": "^0.2.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - } - }, - "qw": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "read": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-cmd-shim": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2" - } - }, - "read-installed": { - "version": "4.0.3", - "bundled": true, - "dev": true, - "requires": { - "debuglog": "^1.0.1", - "graceful-fs": "^4.1.2", - "read-package-json": "^2.0.0", - "readdir-scoped-modules": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "slide": "~1.1.3", - "util-extend": "^1.0.1" - } - }, - "read-package-json": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.1", - "graceful-fs": "^4.1.2", - "json-parse-better-errors": "^1.0.1", - "normalize-package-data": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, - "read-package-tree": { - "version": "5.3.1", - "bundled": true, - "dev": true, - "requires": { - "read-package-json": "^2.0.0", - "readdir-scoped-modules": "^1.0.0", - "util-promisify": "^2.1.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdir-scoped-modules": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "registry-auth-token": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "rc": "^1.0.1" - } - }, - "request": { - "version": "2.88.0", - "bundled": true, - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "retry": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-queue": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.1.1" - }, - "dependencies": { - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "dev": true - }, - "semver-diff": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "semver": "^5.0.3" - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "sha": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "slide": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "smart-buffer": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "socks": { - "version": "2.3.3", - "bundled": true, - "dev": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "^4.1.0" - } - }, - "socks-proxy-agent": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "~4.2.1", - "socks": "~2.3.2" - }, - "dependencies": { - "agent-base": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - } - } - }, - "sorted-object": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "sorted-union-stream": { - "version": "2.1.3", - "bundled": true, - "dev": true, - "requires": { - "from2": "^1.3.0", - "stream-iterate": "^1.1.0" - }, - "dependencies": { - "from2": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "~1.1.10" - } - }, - "isarray": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "bundled": true, - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true, - "dev": true - } - } - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "bundled": true, - "dev": true - }, - "split-on-first": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "sshpk": { - "version": "1.14.2", - "bundled": true, - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-iterate": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "readable-stream": "^2.1.5", - "stream-shift": "^1.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "stream-shift": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "strict-uri-encode": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.0", - "bundled": true, - "dev": true - } - } - }, - "stringify-package": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "tar": { - "version": "4.4.13", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - }, - "dependencies": { - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - } - } - }, - "term-size": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "execa": "^0.7.0" - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "through": { - "version": "2.3.8", - "bundled": true, - "dev": true - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "timed-out": { - "version": "4.0.1", - "bundled": true, - "dev": true - }, - "tiny-relative-date": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "bundled": true, - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "typedarray": { - "version": "0.0.6", - "bundled": true, - "dev": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true - }, - "umask": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unique-string": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "unpipe": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "unzip-response": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "update-notifier": { - "version": "2.5.0", - "bundled": true, - "dev": true, - "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "url-parse-lax": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "prepend-http": "^1.0.1" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "util-extend": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "util-promisify": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "uuid": { - "version": "3.3.3", - "bundled": true, - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtins": "^1.0.3" - } - }, - "verror": { - "version": "1.10.0", - "bundled": true, - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "which": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.2" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "widest-line": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.1.1" - } - }, - "worker-farm": { - "version": "1.7.0", - "bundled": true, - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "2.4.3", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "xtend": { - "version": "4.0.1", - "bundled": true, - "dev": true - }, - "y18n": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true - }, - "yargs": { - "version": "14.2.3", - "bundled": true, - "dev": true, - "requires": { - "cliui": "^5.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^15.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "find-up": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "15.0.1", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "bundled": true, - "dev": true - } - } - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - }, - "dependencies": { - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - } - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-name": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", - "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", - "dev": true, - "requires": { - "macos-release": "^2.2.0", - "windows-release": "^3.1.0" - } - }, - "p-each-series": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz", - "integrity": "sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ==", - "dev": true - }, - "p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", - "dev": true, - "requires": { - "p-map": "^2.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "dev": true - }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", - "dev": true - }, - "p-retry": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.2.0.tgz", - "integrity": "sha512-jPH38/MRh263KKcq0wBNOGFJbm+U6784RilTmHjB/HM9kH9V8WlCpVUcdOmip9cjXOh6MxZ5yk1z2SjDUJfWmA==", - "dev": true, - "requires": { - "@types/retry": "^0.12.0", - "retry": "^0.12.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", - "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true, - "optional": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "physical-cpu-count": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", - "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - } - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - } - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", - "dev": true, - "optional": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", - "dev": true, - "requires": { - "esprima": "~4.0.0" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true - }, - "registry-auth-token": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", - "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true, - "optional": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "dependencies": { - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-parallel": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", - "dev": true - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semantic-release": { - "version": "github:dcodeIO/semantic-release#5367f573d21743be81ae1190877a8315405fd364", - "from": "github:dcodeIO/semantic-release", - "dev": true, - "requires": { - "@semantic-release/commit-analyzer": "^8.0.0", - "@semantic-release/error": "^2.2.0", - "@semantic-release/github": "^7.0.0", - "@semantic-release/npm": "^7.0.0", - "@semantic-release/release-notes-generator": "^9.0.0", - "aggregate-error": "^3.0.0", - "cosmiconfig": "^6.0.0", - "debug": "^4.0.0", - "env-ci": "^5.0.0", - "execa": "^4.0.0", - "figures": "^3.0.0", - "find-versions": "^3.0.0", - "get-stream": "^5.0.0", - "git-log-parser": "^1.2.0", - "hook-std": "^2.0.0", - "hosted-git-info": "^3.0.0", - "lodash": "^4.17.15", - "marked": "^1.0.0", - "marked-terminal": "^4.0.0", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "p-reduce": "^2.0.0", - "read-pkg-up": "^7.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.2", - "semver-diff": "^3.1.1", - "signale": "^1.2.1", - "yargs": "^15.0.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - } - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "semver-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", - "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", - "dev": true - }, - "serialize-javascript": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", - "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "signale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", - "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", - "dev": true, - "requires": { - "chalk": "^2.3.2", - "figures": "^2.0.0", - "pkg-conf": "^2.1.0" - }, - "dependencies": { - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - } - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spawn-error-forwarder": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", - "integrity": "sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk=", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "requires": { - "through": "2" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "split2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "dev": true, - "requires": { - "through2": "^2.0.2" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "node_modules/eslint-scope": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" + "license": "BSD-2-Clause", + "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "funding": { + "url": "https://opencollective.com/eslint" } }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", "dev": true, - "requires": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" } }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, + "license": "BSD-2-Clause", "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "requires": { - "safe-buffer": "~5.1.0" + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "requires": { - "ansi-regex": "^5.0.0" + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, - "requires": { - "min-indent": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, - "requires": { - "has-flag": "^3.0.0" + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" } }, - "supports-hyperlinks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", - "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, + "license": "MIT", "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" } }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" }, - "tempy": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.5.0.tgz", - "integrity": "sha512-VEY96x7gbIRfsxqsafy2l5yVxxp3PhwAGoWMyC2D2Zt5DmEv+2tGiPOrquNRpf21hhGnKLVEsuqleqiZmKG/qw==", + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, - "requires": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.12.0", - "unique-string": "^2.0.0" - }, + "license": "BlueOak-1.0.0", "dependencies": { - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "type-fest": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", - "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==", - "dev": true - } + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "terser-webpack-plugin": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", - "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "node_modules/globals": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", + "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", "dev": true, - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^3.1.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" + "license": "MIT", + "engines": { + "node": ">= 4" } }, - "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "requires": { - "setimmediate": "^1.0.4" + "license": "MIT", + "engines": { + "node": ">=0.8.19" } }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, - "requires": { - "is-number": "^7.0.0" - } + "license": "ISC" }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", - "dev": true + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" }, - "trim-newlines": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", - "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", - "dev": true + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" }, - "trim-off-newlines": { + "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", - "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", - "dev": true + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" }, - "ts-loader": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.3.tgz", - "integrity": "sha512-wsqfnVdB7xQiqhqbz2ZPLGHLPZbHVV5Qn/MNFZkCFxRU1miDyxKORucDGxKtsQJ63Rfza0udiUxWF5nHY6bpdQ==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "requires": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^4.0.0", - "semver": "^6.0.0" - }, + "license": "MIT", "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "json-buffer": "3.0.1" } }, - "ts-node": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.2.0.tgz", - "integrity": "sha512-ZNT+OEGfUNVMGkpIaDJJ44Zq3Yr0bkU/ugN1PHbU+/01Z7UV1fsELRiTx1KuQNvQ1A3pGh3y25iYF6jXgxV21A==", - "requires": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" - }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", "dependencies": { - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" - } + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true - }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "requires": { - "tslib": "^1.8.1" + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "dev": true, - "requires": { - "prelude-ls": "^1.2.1" + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typescript": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", - "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", - "dev": true - }, - "uglify-js": { - "version": "3.10.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.4.tgz", - "integrity": "sha512-kBFT3U4Dcj4/pJ52vfjCSfyLyvG9VYYuGYPmrPvAxRw/i7xHiT4VvCev+uiEMcEEiu6UNB6KgWmGtSUYIWScbw==", + "node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "optional": true + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } + "license": "MIT" }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } + "license": "MIT" }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" } }, - "universal-user-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", - "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "requires": { - "os-name": "^3.1.0" + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, + "license": "MIT", "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "optional": true + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "requires": { - "punycode": "^2.1.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, + "license": "BlueOak-1.0.0", "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, - "requires": { - "inherits": "2.0.3" + "license": "MIT", + "engines": { + "node": ">=12" }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">= 0.8.0" } }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "watchpack": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", - "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, - "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" + "license": "MIT", + "engines": { + "node": ">=6" } }, - "watchpack-chokidar2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", - "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, - "optional": true, - "requires": { - "chokidar": "^2.1.8" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "optional": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } + "engines": { + "node": ">=10" } }, - "webpack": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz", - "integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, + "license": "MIT", "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "webpack-cli": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", - "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "requires": { - "chalk": "^2.4.2", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.1", - "findup-sync": "^3.0.0", - "global-modules": "^2.0.0", - "import-local": "^2.0.0", - "interpret": "^1.4.0", - "loader-utils": "^1.4.0", - "supports-color": "^6.1.0", - "v8-compile-cache": "^2.1.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "license": "MIT", + "engines": { + "node": ">=8" } }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, - "requires": { - "isexe": "^2.0.0" + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "windows-release": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz", - "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==", + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "requires": { - "execa": "^1.0.0" - }, + "license": "MIT", "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, - "requires": { - "errno": "~0.1.7" + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" } }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/typescript-eslint": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.2.tgz", + "integrity": "sha512-VEPQ0iPgWO/sBaZOU1xo4nuNdODVOajPnTIbog2GKYr31nIlZ0fWPoCQgGfF3ETyBl1vn63F/p50Um9Z4J8O8A==", "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - } + "@typescript-eslint/eslint-plugin": "8.57.2", + "@typescript-eslint/parser": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2", + "@typescript-eslint/utils": "8.57.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "requires": { - "mkdirp": "^0.5.1" + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" } }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", - "dev": true - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, + "license": "ISC", "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - } + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=" + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 1dc71a82c0..f1ed7f85d1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "assemblyscript", - "description": "Definitely not a TypeScript to WebAssembly compiler.", + "description": "A TypeScript-like language for WebAssembly.", "keywords": [ "typescript", "webassembly", @@ -10,7 +10,6 @@ ], "version": "0.0.0", "author": "Daniel Wirtz ", - "contributors": [], "license": "Apache-2.0", "homepage": "https://assemblyscript.org", "repository": { @@ -20,81 +19,93 @@ "bugs": { "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, + "engines": { + "node": ">=20", + "npm": ">=10" + }, + "engineStrict": true, "dependencies": { - "binaryen": "95.0.0-nightly.20200813", - "long": "^4.0.0", - "source-map-support": "^0.5.19", - "ts-node": "^6.2.0" + "binaryen": "123.0.0-nightly.20250530", + "long": "^5.2.4" }, "devDependencies": { - "@types/node": "^14.6.4", - "@typescript-eslint/eslint-plugin": "^4.1.0", - "@typescript-eslint/parser": "^4.1.0", - "diff": "^4.0.2", - "eslint": "^7.8.1", - "glob": "^7.1.6", - "physical-cpu-count": "^2.0.0", - "semantic-release": "github:dcodeIO/semantic-release", - "source-map-support": "^0.5.19", - "ts-loader": "^8.0.3", - "ts-node": "^6.2.0", - "typescript": "^4.0.2", - "webpack": "^4.44.1", - "webpack-cli": "^3.3.12" + "@eslint/js": "^10.0.1", + "@types/node": "^25.5.0", + "as-float": "^1.0.1", + "diff": "^8.0.4", + "esbuild": "^0.27.0", + "eslint": "^10.1.0", + "glob": "^13.0.6", + "globals": "^17.4.0", + "typescript": "^5.9.3", + "typescript-eslint": "^8.57.2" + }, + "type": "module", + "exports": { + ".": { + "import": "./dist/assemblyscript.js", + "types": "./dist/assemblyscript.d.ts" + }, + "./asc": { + "import": "./dist/asc.js", + "types": "./dist/asc.d.ts" + }, + "./transform": { + "import": "./dist/transform.js", + "types": "./dist/transform.d.ts", + "require": "./dist/transform.cjs" + }, + "./binaryen": { + "import": "./lib/binaryen.js", + "types": "./lib/binaryen.d.ts" + }, + "./*": "./*" + }, + "imports": { + "#rtrace": { + "import": "./lib/rtrace/index.js", + "types": "./lib/rtrace/index.d.ts" + } }, - "main": "index.js", - "types": "index.d.ts", "bin": { - "asc": "bin/asc", - "asinit": "bin/asinit" + "asc": "./bin/asc.js", + "asinit": "./bin/asinit.js" }, "scripts": { - "build": "npm run build:bundle && npm run build:dts && npm run build:sdk", - "build:bundle": "webpack --mode production --display-modules", - "build:dts": "node scripts/build-dts && tsc --noEmit --target ESNEXT --module commonjs --experimentalDecorators tests/require/index-release", - "build:sdk": "node scripts/build-sdk", - "clean": "node scripts/clean", - "check": "npm run check:config && npm run check:require && npm run check:lint", + "check": "npm run check:config && npm run check:import && npm run lint", "check:config": "tsc --noEmit -p src --diagnostics --listFiles", - "check:require": "tsc --noEmit --target ESNEXT --module commonjs --experimentalDecorators tests/require/index", - "check:lint": "eslint --max-warnings 0 --ext js . && eslint --max-warnings 0 --ext ts .", - "test": "npm run test:parser && npm run test:compiler && npm run test:packages && npm run test:extension && npm run test:asconfig", - "test:parser": "node tests/parser", - "test:compiler": "node tests/compiler", - "test:packages": "cd tests/packages && npm run test", - "test:extension": "cd tests/extension && npm run test", + "check:import": "tsc --noEmit --target ESNEXT --module nodenext --moduleResolution nodenext --experimentalDecorators tests/import/index", + "lint": "eslint --max-warnings 0 --ext js . && eslint --max-warnings 0 --ext ts .", + "build": "node scripts/build", + "watch": "node scripts/build --watch", + "coverage": "npx c8 -- npm test", + "test": "npm run test:parser && npm run test:compiler -- --parallel && npm run test:browser && npm run test:asconfig && npm run test:transform && npm run test:cli", + "test:parser": "node --enable-source-maps tests/parser", + "test:compiler": "node --enable-source-maps --no-warnings tests/compiler", + "test:browser": "node --enable-source-maps tests/browser", "test:asconfig": "cd tests/asconfig && npm run test", - "make": "npm run clean && npm test && npm run build && npm test", - "all": "npm run check && npm run make", - "docs": "typedoc --tsconfig tsconfig-docs.json --mode modules --name \"AssemblyScript Compiler API\" --out ./docs/api --ignoreCompilerErrors --excludeNotExported --excludePrivate --excludeExternals --exclude **/std/** --includeDeclarations --readme src/README.md", - "postversion": "node scripts/postversion && npm run build", - "prepublishOnly": "node scripts/prepublish", - "postpublish": "node scripts/postpublish", - "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", - "asbuild:untouched": "node bin/asc src/glue/wasm/index.ts src/index.ts -t out/assemblyscript.untouched.wat -b out/assemblyscript.untouched.wasm -d out/assemblyscript.d.ts --debug --measure --runtime stub", - "asbuild:optimized": "node bin/asc src/glue/wasm/index.ts src/index.ts -t out/assemblyscript.optimized.wat -b out/assemblyscript.optimized.wasm -O3 --measure --runtime stub", - "astest": "ts-node tests/bootstrap" + "test:transform": "npm run test:transform:esm && npm run test:transform:cjs", + "test:transform:esm": "node bin/asc tests/compiler/empty --transform ./tests/transform/index.js --noEmit && node bin/asc tests/compiler/empty --transform ./tests/transform/simple.js --noEmit", + "test:transform:cjs": "node bin/asc tests/compiler/empty --transform ./tests/transform/cjs/index.js --noEmit && node bin/asc tests/compiler/empty --transform ./tests/transform/cjs/simple.js --noEmit", + "test:cli": "node tests/cli/options.js", + "asbuild": "npm run asbuild:debug && npm run asbuild:release", + "asbuild:debug": "node bin/asc --config src/asconfig.json --target debug", + "asbuild:release": "node bin/asc --config src/asconfig.json --target release", + "asbuild:rtraced": "node bin/asc --config src/asconfig.json --target rtraced", + "bootstrap": "npm run bootstrap:debug && npm run bootstrap:release", + "bootstrap:debug": "node bin/asc --config src/asconfig.json --target debug && node bin/asc --config src/asconfig.json --target debug-bootstrap --wasm ./build/assemblyscript.debug.js && node bin/asc --config src/asconfig.json --target debug-bootstrap --wasm ./build/assemblyscript.debug-bootstrap.js && git --no-pager diff --no-index build/assemblyscript.debug.wast build/assemblyscript.debug-bootstrap.wast", + "bootstrap:release": "node bin/asc --config src/asconfig.json --target release && node bin/asc --config src/asconfig.json --target release-bootstrap --wasm ./build/assemblyscript.release.js && node bin/asc --config src/asconfig.json --target release-bootstrap --wasm ./build/assemblyscript.release-bootstrap.js && git --no-pager diff --no-index build/assemblyscript.release.wast build/assemblyscript.release-bootstrap.wast", + "bootstrap:rtraced": "node bin/asc --config src/asconfig.json --target rtraced && node bin/asc --config src/asconfig.json --target rtraced --wasm ./build/assemblyscript.rtraced.js" }, - "releaseFiles": [ - "lib/rtrace/index.d.ts", - "lib/rtrace/index.js", - "lib/rtrace/README.md", - "lib/rtrace/package.json", - "lib/loader/index.d.ts", - "lib/loader/index.js", - "lib/loader/README.md", + "files": [ "bin/", - "cli/", "dist/", - "index.d.ts", - "index.js", - "LICENSE", - "NOTICE", - "package.json", - "package-lock.json", - "README.md", "std/", - "tsconfig-base.json" + "util/", + "lib/binaryen.js", + "lib/binaryen.d.ts", + "tsconfig-base.json", + "NOTICE" ], "funding": { "type": "opencollective", diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 0000000000..63738b199f --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,21 @@ +Scripts +======= + +Various scripts for development purposes. + +### Default target + +| Command | Description +|-------------------|------------------------------------------- +| npm install | Install required dependencies +| npm run build | Builds the compiler +| npm run watch | Builds the compiler and watches for changes +| npm run check | Performs sanity checks on code style etc. +| npm test | Runs the test suite + +### WebAssembly target + +| Command | Description +|-------------------|------------------------------------------- +| npm run asbuild | Compiles the compiler to WebAssembly +| npm run bootstrap | Bootstraps the compiler to WebAssembly diff --git a/scripts/build-diagnostics.js b/scripts/build-diagnostics.js deleted file mode 100644 index e5052654a1..0000000000 --- a/scripts/build-diagnostics.js +++ /dev/null @@ -1,44 +0,0 @@ -var fs = require("fs"); - -var messages = require(__dirname + "/../src/diagnosticMessages.json"); - -var header = `/** - * @fileoverview Generated from diagnosticsMessages.json. Do not edit. - * @license Apache-2.0 - */ - -/* tslint:disable:max-line-length */ - -`.replace(/\r\n/g, "\n"); - -var sb = [ header ]; - -function makeKey(text) { - return text.replace(/[^\w]+/g, "_").replace(/_+$/, ""); -} - -sb.push("/** Enum of available diagnostic codes. */\n"); -sb.push("export enum DiagnosticCode {\n"); - -var first = true; -Object.keys(messages).forEach(text => { - var key = makeKey(text); - if (first) - first = false; - else { - sb.push(",\n"); - } - sb.push(" " + key + " = " + messages[text]); -}); - -sb.push("\n}\n\n"); -sb.push("/** Translates a diagnostic code to its respective string. */\n"); -sb.push("export function diagnosticCodeToString(code: DiagnosticCode): string {\n switch (code) {\n"); - -Object.keys(messages).forEach(text => { - sb.push(" case " + messages[text] + ": return " + JSON.stringify(text) + ";\n"); -}); - -sb.push(" default: return \"\";\n }\n}\n"); - -fs.writeFileSync(__dirname + "/../src/diagnosticMessages.generated.ts", sb.join(""), { encoding: "utf8" }); diff --git a/scripts/build-dts.js b/scripts/build-dts.js index e44ce1f968..0493075824 100644 --- a/scripts/build-dts.js +++ b/scripts/build-dts.js @@ -1,28 +1,19 @@ +import fs from "fs"; +import { globSync } from "glob"; +import pathUtil from "path"; +import ts from "typescript"; +import { fileURLToPath } from 'url'; +import { debuglog } from "util"; + +const __dirname = pathUtil.dirname(fileURLToPath(import.meta.url)); +const debug = debuglog("dts"); + // © 2015-2019 SitePen, Inc. New BSD License. // see: https://github.com/SitePen/dts-generator -(function() { - const fs = require("fs"); - const glob = require("glob"); - const mkdirp = require("mkdirp"); - const os = require("os"); - const pathUtil = require("path"); - const ts = require("typescript"); - +const generate = (() => { // declare some constants so we don't have magic integers without explanation - const DTSLEN = '.d.ts'.length; - const filenameToMid = (function () { - if (pathUtil.sep === '/') { - return function (filename) { - return filename; - }; - } - else { - const separatorExpression = new RegExp(pathUtil.sep.replace('\\', '\\\\'), 'g'); - return function (filename) { - return filename.replace(separatorExpression, '/'); - }; - } - })(); + const DTS = ".d.ts"; + const DTSLEN = DTS.length; /** * A helper function that takes TypeScript diagnostic errors and returns an error @@ -30,8 +21,8 @@ * @param diagnostics The array of TypeScript Diagnostic objects */ function getError(diagnostics) { - let message = 'Declaration generation failed'; - diagnostics.forEach(function (diagnostic) { + let message = "Declaration generation failed"; + for (const diagnostic of diagnostics) { // not all errors have an associated file: in particular, problems with a // the tsconfig.json don't; the messageText is enough to diagnose in those // cases. @@ -40,26 +31,27 @@ message += `\n${diagnostic.file.fileName}(${position.line + 1},${position.character + 1}): ` + `error TS${diagnostic.code}: ${diagnostic.messageText}`; - } - else { + } else { message += `\nerror TS${diagnostic.code}: ${diagnostic.messageText}`; } - }); + } + const error = new Error(message); - error.name = 'EmitterError'; + error.name = "EmitterError"; return error; } + function getFilenames(baseDir, files) { return files.map(function (filename) { const resolvedFilename = pathUtil.resolve(filename); - if (resolvedFilename.indexOf(baseDir) === 0) { - return resolvedFilename; - } - return pathUtil.resolve(baseDir, filename); + return resolvedFilename.indexOf(baseDir) === 0 + ? resolvedFilename + : pathUtil.resolve(baseDir, filename); }); } + function processTree(sourceFile, replacer) { - let code = ''; + let code = ""; let cursorPosition = 0; function skip(node) { cursorPosition = node.end; @@ -74,8 +66,7 @@ if (replacement != null) { code += replacement; skip(node); - } - else { + } else { ts.forEachChild(node, visit); } } @@ -83,6 +74,7 @@ code += sourceFile.text.slice(cursorPosition); return code; } + /** * Load and parse a TSConfig File * @param options The dts-generator options to load config into @@ -91,7 +83,7 @@ function getTSConfig(fileName) { // TODO this needs a better design than merging stuff into options. // the trouble is what to do when no tsconfig is specified... - const configText = fs.readFileSync(fileName, { encoding: 'utf8' }); + const configText = fs.readFileSync(fileName, { encoding: "utf8" }); const result = ts.parseConfigFileTextToJson(fileName, configText); if (result.error) { throw getError([result.error]); @@ -106,144 +98,95 @@ configParseResult.options ]; } - function isNodeKindImportDeclaration(value) { - return value && value.kind === ts.SyntaxKind.ImportDeclaration; - } - function isNodeKindExternalModuleReference(value) { - return value && value.kind === ts.SyntaxKind.ExternalModuleReference; - } - function isNodeKindStringLiteral(value) { - return value && value.kind === ts.SyntaxKind.StringLiteral; - } - function isNodeKindExportDeclaration(value) { - return value && value.kind === ts.SyntaxKind.ExportDeclaration; - } - function isNodeKindExportAssignment(value) { - return value && value.kind === ts.SyntaxKind.ExportAssignment; - } - function isNodeKindModuleDeclaration(value) { - return value && value.kind === ts.SyntaxKind.ModuleDeclaration; - } + + const isNodeKind = kind => value => value?.kind === kind; + const isNodeKindImportDeclaration = isNodeKind(ts.SyntaxKind.ImportDeclaration); + const isNodeKindStringLiteral = isNodeKind(ts.SyntaxKind.StringLiteral); + const isNodeKindExportDeclaration = isNodeKind(ts.SyntaxKind.ExportDeclaration); + const isNodeKindModuleDeclaration = isNodeKind(ts.SyntaxKind.ModuleDeclaration); + function generate(options) { - if (Boolean(options.main) !== Boolean(options.name)) { - if (options.name) { - // since options.name used to do double duty as the prefix, let's be - // considerate and point out that name should be replaced with prefix. - // TODO update this error message when we finalize which version this change - // will be released in. - throw new Error(`name and main must be used together. Perhaps you want prefix instead of - name? In dts-generator version 2.1, name did double duty as the option to - use to prefix module names with, but in >=2.2 the name option was split - into two; prefix is what is now used to prefix imports and module names - in the output.`); - } - else { - throw new Error('name and main must be used together.'); - } - } - const noop = function () { /* nop */ }; - const sendMessage = options.sendMessage || noop; - const verboseMessage = options.verbose ? sendMessage : noop; let compilerOptions = {}; let files = options.files; /* following tsc behaviour, if a project is specified, or if no files are specified then * attempt to load tsconfig.json */ if (options.project || !options.files || options.files.length === 0) { - verboseMessage(`project = "${options.project || options.baseDir}"`); + debug(`project = "${options.project || options.baseDir}"`); // if project isn't specified, use baseDir. If it is and it's a directory, // assume we want tsconfig.json in that directory. If it is a file, though // use that as our tsconfig.json. This allows for projects that have more // than one tsconfig.json file. let tsconfigFilename; - if (options.project) { - if (fs.lstatSync(options.project).isDirectory()) { - tsconfigFilename = pathUtil.join(options.project, 'tsconfig.json'); - } - else { - // project isn't a diretory, it's a file - tsconfigFilename = options.project; - } - } - else { - tsconfigFilename = pathUtil.join(options.baseDir, 'tsconfig.json'); + if (!options.project) { + tsconfigFilename = pathUtil.join(options.baseDir, "tsconfig.json"); + } else if (fs.lstatSync(options.project).isDirectory()) { + tsconfigFilename = pathUtil.join(options.project, "tsconfig.json"); + } else { + // project isn't a directory, it's a file + tsconfigFilename = options.project; } if (fs.existsSync(tsconfigFilename)) { - verboseMessage(` parsing "${tsconfigFilename}"`); + debug(` parsing "${tsconfigFilename}"`); [files, compilerOptions] = getTSConfig(tsconfigFilename); - } - else { - sendMessage(`No "tsconfig.json" found at "${tsconfigFilename}"!`); - return new Promise(function (resolve, reject) { - reject(new SyntaxError('Unable to resolve configuration.')); - }); + } else { + debug(`No "tsconfig.json" found at "${tsconfigFilename}"!`); + throw new Error("Unable to resolve configuration."); } } - const eol = options.eol || os.EOL; - const nonEmptyLineStart = new RegExp(eol + '(?!' + eol + '|$)', 'g'); - const indent = options.indent === undefined ? '\t' : options.indent; + + const nonEmptyLineStart = /\n(?!\n|$)/g; // use input values if tsconfig leaves any of these undefined. // this is for backwards compatibility compilerOptions.declaration = true; - compilerOptions.target = compilerOptions.target || ts.ScriptTarget.Latest; // is this necessary? - compilerOptions.moduleResolution = compilerOptions.moduleResolution || options.moduleResolution; - compilerOptions.outDir = compilerOptions.outDir || options.outDir; + compilerOptions.target ||= ts.ScriptTarget.Latest; // is this necessary? // TODO should compilerOptions.baseDir come into play? const baseDir = pathUtil.resolve(compilerOptions.rootDir || options.project || options.baseDir); const outDir = compilerOptions.outDir; - verboseMessage(`baseDir = "${baseDir}"`); - verboseMessage(`target = ${compilerOptions.target}`); - verboseMessage(`outDir = ${compilerOptions.outDir}`); - verboseMessage(`rootDir = ${compilerOptions.rootDir}`); - verboseMessage(`moduleResolution = ${compilerOptions.moduleResolution}`); + + debug(`baseDir = "${baseDir}"`); + debug(`target = ${compilerOptions.target}`); + debug(`outDir = ${compilerOptions.outDir}`); + debug(`rootDir = ${compilerOptions.rootDir}`); + debug(`moduleResolution = ${compilerOptions.moduleResolution}`); + const filenames = getFilenames(baseDir, files); - verboseMessage('filenames:'); - filenames.forEach(name => { verboseMessage(' ' + name); }); - const excludesMap = {}; - options.exclude = options.exclude || ['node_modules/**/*.d.ts']; - options.exclude && options.exclude.forEach(function (filename) { - glob.sync(filename, { cwd: baseDir }).forEach(function (globFileName) { - excludesMap[filenameToMid(pathUtil.resolve(baseDir, globFileName))] = true; - }); - }); - if (options.exclude) { - verboseMessage('exclude:'); - options.exclude.forEach(name => { verboseMessage(' ' + name); }); + + debug("filenames:"); + for (const name of filenames) debug(" " + name); + + const exclusions = new Set(); + + options.exclude ||= []; + options.exclude.push("node_modules/**/*.d.ts"); + + for (const filename of globSync(options.exclude, { cwd: baseDir })) { + exclusions.add(pathUtil.resolve(baseDir, filename)); } - if (!options.stdout) mkdirp.sync(pathUtil.dirname(options.out)); - /* node.js typings are missing the optional mode in createWriteStream options and therefore - * in TS 1.6 the strict object literal checking is throwing, therefore a hammer to the nut */ - const output = options.stdout || fs.createWriteStream(options.out, { mode: parseInt('644', 8) }); + + debug("exclude:"); + for (const name of exclusions) debug(" " + name); + + const output = options.stdout; const host = ts.createCompilerHost(compilerOptions); const program = ts.createProgram(filenames, compilerOptions, host); function writeFile(filename, data) { // Compiler is emitting the non-declaration file, which we do not care about - if (filename.slice(-DTSLEN) !== '.d.ts') { - return; - } + if (filename.slice(-DTSLEN) !== DTS) return; writeDeclaration(ts.createSourceFile(filename, data, compilerOptions.target, true), true); } let declaredExternalModules = []; - return new Promise(function (resolve, reject) { - output.on('close', () => { resolve(undefined); }); - output.on('error', reject); + + { if (options.externs) { - options.externs.forEach(function (path) { - sendMessage(`Writing external dependency ${path}`); - output.write(`/// ` + eol); - }); - } - if (options.types) { - options.types.forEach(function (type) { - sendMessage(`Writing external @types package dependency ${type}`); - output.write(`/// ` + eol); - }); + for (const path of options.externs) { + debug(`Writing external dependency ${path}`); + output.push(`/// \n`); + } } - sendMessage('processing:'); - let mainExportDeclaration = false; - let mainExportAssignment = false; - let foundMain = false; - program.getSourceFiles().forEach(function (sourceFile) { - processTree(sourceFile, function (node) { + + debug("processing:"); + for (const sourceFile of program.getSourceFiles()) { + processTree(sourceFile, node => { if (isNodeKindModuleDeclaration(node)) { const name = node.name; if (isNodeKindStringLiteral(name)) { @@ -252,64 +195,31 @@ } return null; }); - }); - program.getSourceFiles().some(function (sourceFile) { + // Source file is a default library, or other dependency from another project, that should not be included in // our bundled output - if (pathUtil.normalize(sourceFile.fileName).indexOf(baseDir + pathUtil.sep) !== 0) { - return; - } - if (excludesMap[filenameToMid(pathUtil.normalize(sourceFile.fileName))]) { - return; - } - sendMessage(` ${sourceFile.fileName}`); + const normalizedFileName = pathUtil.normalize(sourceFile.fileName); + if (normalizedFileName.indexOf(baseDir + pathUtil.sep) !== 0) continue; + if (exclusions.has(normalizedFileName)) continue; + + debug(` ${sourceFile.fileName}`); // Source file is already a declaration file so should does not need to be pre-processed by the emitter - if (sourceFile.fileName.slice(-DTSLEN) === '.d.ts') { + if (sourceFile.fileName.slice(-DTSLEN) === DTS) { writeDeclaration(sourceFile, false); - return; - } - // We can optionally output the main module if there's something to export. - if (options.main && options.main === (options.prefix + filenameToMid(sourceFile.fileName.slice(baseDir.length, -3)))) { - foundMain = true; - ts.forEachChild(sourceFile, function (node) { - mainExportDeclaration = mainExportDeclaration || isNodeKindExportDeclaration(node); - mainExportAssignment = mainExportAssignment || isNodeKindExportAssignment(node); - }); + continue; } const emitOutput = program.emit(sourceFile, writeFile); if (emitOutput.emitSkipped || emitOutput.diagnostics.length > 0) { - reject(getError(emitOutput.diagnostics - .concat(program.getSemanticDiagnostics(sourceFile)) - .concat(program.getSyntacticDiagnostics(sourceFile)) - .concat(program.getDeclarationDiagnostics(sourceFile)))); - return true; + const diagnostics = emitOutput.diagnostics.concat( + program.getSemanticDiagnostics(sourceFile), + program.getSyntacticDiagnostics(sourceFile), + program.getDeclarationDiagnostics(sourceFile) + ); + throw getError(diagnostics); } - }); - if (options.main && !foundMain) { - throw new Error(`main module ${options.main} was not found`); - } - if (options.main) { - output.write(`declare module '${options.name}' {` + eol + indent); - if (compilerOptions.target >= ts.ScriptTarget.ES2015) { - if (mainExportAssignment) { - output.write(`export {default} from '${options.main}';` + eol + indent); - } - if (mainExportDeclaration) { - output.write(`export * from '${options.main}';` + eol); - } - } - else { - output.write(`import main = require('${options.main}');` + eol + indent); - output.write('export = main;' + eol); - } - output.write('}' + eol); - sendMessage(`Aliased main module ${options.name} to ${options.main}`); - } - if (!options.stdout) { - sendMessage(`output to "${options.out}"`); - output.end(); } - }); + } + function writeDeclaration(declarationFile, isOutput) { // resolving is important for dealting with relative outDirs const filename = pathUtil.resolve(declarationFile.fileName); @@ -319,26 +229,27 @@ // is also used for. Also if no outDir is used, the compiled code ends up // alongside the source, so use baseDir in that case too. const outputDir = (isOutput && Boolean(outDir)) ? pathUtil.resolve(outDir) : baseDir; - const sourceModuleId = filenameToMid(filename.slice(outputDir.length + 1, -DTSLEN)); - const currentModuleId = filenameToMid(filename.slice(outputDir.length + 1, -DTSLEN)); + // I give up; this needs Windows-to-POSIX conversion: + const sourceModuleId = pathUtil + .relative(outputDir, filename) + .slice(0, -DTSLEN) + .replaceAll(pathUtil.sep, "/"); function resolveModuleImport(moduleId) { const isDeclaredExternalModule = declaredExternalModules.indexOf(moduleId) !== -1; let resolved; if (options.resolveModuleImport) { resolved = options.resolveModuleImport({ importedModuleId: moduleId, - currentModuleId: currentModuleId, - isDeclaredExternalModule: isDeclaredExternalModule + currentModuleId: sourceModuleId, + isDeclaredExternalModule }); } if (!resolved) { // resolve relative imports relative to the current module id. - if (moduleId.charAt(0) === '.') { - resolved = filenameToMid(pathUtil.join(pathUtil.dirname(sourceModuleId), moduleId)); - } - else { - resolved = moduleId; - } + resolved = moduleId.charAt(0) === "." + ? pathUtil.posix.join(pathUtil.posix.dirname(sourceModuleId), moduleId) + : moduleId; + // prefix the import with options.prefix, so that both non-relative imports // and relative imports end up prefixed with options.prefix. We only // do this when no resolveModuleImport function is given so that that @@ -346,150 +257,137 @@ // NOTE: we may want to revisit the isDeclaredExternalModule behavior. // discussion is on https://github.com/SitePen/dts-generator/pull/94 // but currently there's no strong argument against this behavior. - if (Boolean(options.prefix) && !isDeclaredExternalModule) { - resolved = `${options.prefix}/${resolved}`; - } + if (!isDeclaredExternalModule) resolved = `${options.prefix}/${resolved}`; } return resolved; } /* For some reason, SourceFile.externalModuleIndicator is missing from 1.6+, so having * to use a sledgehammer on the nut */ if (declarationFile.externalModuleIndicator) { - let resolvedModuleId = sourceModuleId; - if (options.resolveModuleId) { - const resolveModuleIdResult = options.resolveModuleId({ - currentModuleId: currentModuleId - }); - if (resolveModuleIdResult) { - resolvedModuleId = resolveModuleIdResult; - } - else if (options.prefix) { - resolvedModuleId = `${options.prefix}/${resolvedModuleId}`; - } - } - else if (options.prefix) { - resolvedModuleId = `${options.prefix}/${resolvedModuleId}`; - } - output.write('declare module \'' + resolvedModuleId + '\' {' + eol + indent); - const content = processTree(declarationFile, function (node) { - if (isNodeKindExternalModuleReference(node)) { - // TODO figure out if this branch is possible, and if so, write a test - // that covers it. - const expression = node.expression; - // convert both relative and non-relative module names in import = require(...) - // statements. - const resolved = resolveModuleImport(expression.text); - return ` require('${resolved}')`; - } - else if (node.kind === ts.SyntaxKind.DeclareKeyword) { - return ''; - } - else if (isNodeKindStringLiteral(node) && node.parent && - (isNodeKindExportDeclaration(node.parent) || isNodeKindImportDeclaration(node.parent))) { + let resolvedModuleId = `${options.prefix}/${sourceModuleId}`; + output.push(`declare module '${resolvedModuleId}' {\n\t`); + const content = processTree(declarationFile, node => { + if (node.kind === ts.SyntaxKind.DeclareKeyword) return ""; + if ( + isNodeKindStringLiteral(node) && + (isNodeKindExportDeclaration(node.parent) || isNodeKindImportDeclaration(node.parent)) + ) { // This block of code is modifying the names of imported modules const text = node.text; const resolved = resolveModuleImport(text); - if (resolved) { - return ` '${resolved}'`; - } + if (resolved) return ` '${resolved}'`; } }); - output.write(content.replace(nonEmptyLineStart, '$&' + indent)); - output.write(eol + '}' + eol); - } - else { - output.write(declarationFile.text); + output.push(content.replace(nonEmptyLineStart, "$&\t")); + output.push("\n}\n"); + } else { + output.push(declarationFile.text); } } } - exports.default = generate; + return generate; })(); -const path = require("path"); -const fs = require("fs"); -const stream = require("stream"); -const util = require("util"); - -function OutputStream(options) { - stream.Writable.call(this, options); - this.chunks = []; +function transformTypes(sourceFile) { + let numReplaced = 0; + debug("transforming:"); + let result = ts.transform(sourceFile, [ + context => { + const visit = node => { + node = ts.visitEachChild(node, visit, context); + if (ts.isTypeNode(node)) { + const name = node.getText(sourceFile); + switch (name) { + // this is wrong, but works + case "bool": ++numReplaced; return context.factory.createIdentifier("boolean"); + default: if (!/^(?:Binaryen|Relooper)/.test(name)) break; + case "i8": case "i16": case "i32": case "isize": + case "u8": case "u16": case "u32": case "usize": + case "f32": case "f64": ++numReplaced; return context.factory.createIdentifier("number"); + } + } + return node; + }; + return node => ts.visitNode(node, visit); + } + ]); + debug(" replaced " + numReplaced + " AS types with TS types"); + return result; } -util.inherits(OutputStream, stream.Writable); -OutputStream.prototype._write = function (chunk, enc, cb) { - this.chunks.push(chunk); - cb(); -}; -OutputStream.prototype.toBuffer = function () { - return Buffer.concat(this.chunks); -}; -OutputStream.prototype.toString = function () { - return this.toBuffer().toString("utf8"); -}; - -const stdout = new OutputStream(); -stdout.write(`declare module 'assemblyscript' { - export * from 'assemblyscript/src/index'; + +const prefix = "types:assemblyscript"; + +export function generateSrc() { + const stdout = []; + + generate({ + project: pathUtil.resolve(__dirname, "..", "src"), + prefix, + exclude: [ + "glue/**", + ], + stdout + }); + + stdout.push("\n"); + + generate({ + project: pathUtil.resolve(__dirname, "..", "std", "assembly", "shared"), + prefix: prefix + "/std/assembly/shared", + exclude: [], + stdout + }); + + stdout.push("\n"); + + generate({ + project: pathUtil.resolve(__dirname, "..", "src", "glue"), + prefix: prefix + "/src/glue", + exclude: [ + "js/index.ts", + "js/node.d.ts" + ], + stdout + }); + + const source = stdout.join("").replace(/\/\/\/ ]*>\r?\n/g, ""); + const sourceFile = ts.createSourceFile("assemblyscript.d.ts", source, ts.ScriptTarget.ESNext, false, ts.ScriptKind.TS); + const result = transformTypes(sourceFile); + fs.writeFileSync( + pathUtil.resolve(__dirname, "..", "dist", "assemblyscript.generated.d.ts"), + ts.createPrinter().printFile(result.transformed[0]) + ); } -`); - -module.exports.default({ - project: path.resolve(__dirname, "..", "src"), - prefix: "assemblyscript", - exclude: [ - "glue/js/index.ts", - "glue/js/node.d.ts", - "glue/binaryen.d.ts" - ], - verbose: true, - sendMessage: console.log, - stdout: stdout -}); - -stdout.write("\n"); - -module.exports.default({ - project: path.resolve(__dirname, "..", "std/assembly/shared"), - prefix: "assemblyscript/std/assembly/shared", - exclude: [], - verbose: true, - sendMessage: console.log, - stdout: stdout -}); - -var source = stdout.toString().replace(/\/\/\/ ]*>\r?\n/g, ""); - -const ts = require("typescript"); -const sourceFile = ts.createSourceFile("assemblyscript.d.ts", source, ts.ScriptTarget.ESNext, false, ts.ScriptKind.TS); - -console.log("transforming:"); -var numReplaced = 0; -const result = ts.transform(sourceFile, [ - function (context) { - const visit = node => { - node = ts.visitEachChild(node, visit, context); - if (ts.isTypeNode(node)) { - const name = node.getText(sourceFile); - switch (name) { - // this is wrong, but works - case "bool": ++numReplaced; return ts.createIdentifier("boolean"); - default: if (!/^(?:Binaryen|Relooper)/.test(name)) break; - case "i8": case "i16": case "i32": case "isize": - case "u8": case "u16": case "u32": case "usize": - case "f32": case "f64": ++numReplaced; return ts.createIdentifier("number"); - } - } - return node; - }; - return node => ts.visitNode(node, visit); - } -]); -console.log(" replaced " + numReplaced + " AS types with JS types"); -if (!fs.existsSync(path.join(__dirname, "..", "dist"))) { - fs.mkdirSync(path.join(__dirname, "..", "dist")); +export function generateCli() { + const stdout = []; + + generate({ + baseDir: pathUtil.resolve(__dirname, ".."), + files: [ + pathUtil.resolve(__dirname, "..", "cli", "index.d.ts") + ], + externs: [ + "./assemblyscript.generated.d.ts" + ], + prefix, + stdout, + resolveModuleImport: ({ importedModuleId, currentModuleId }) => { + if (currentModuleId == "cli/index" && importedModuleId == "../src") + return prefix + "/src/index"; + + if (importedModuleId == "binaryen") + return "binaryen"; + + return null; + }, + }); + + const source = stdout.join(""); + const sourceFile = ts.createSourceFile("asc.d.ts", source, ts.ScriptTarget.ESNext, false, ts.ScriptKind.TS); + const result = transformTypes(sourceFile); + fs.writeFileSync( + pathUtil.resolve(__dirname, "..", "dist", "asc.generated.d.ts"), + ts.createPrinter().printFile(result.transformed[0]) + ); } -fs.writeFileSync( - path.resolve(__dirname, "..", "dist", "assemblyscript.d.ts"), - ts.createPrinter().printFile(result.transformed[0]), - "utf8" -); diff --git a/scripts/build-sdk.js b/scripts/build-sdk.js deleted file mode 100644 index 6ab50e1099..0000000000 --- a/scripts/build-sdk.js +++ /dev/null @@ -1,14 +0,0 @@ -const path = require("path"); -const fs = require("fs"); -const pkg = require("../package-lock.json"); - -fs.readFile(path.join(__dirname, "..", "lib", "sdk", "index.js"), "utf8", function(err, data) { - if (err) throw err; - data = data - .replace(/BINARYEN_VERSION = "nightly"/, "BINARYEN_VERSION = " + JSON.stringify(pkg.dependencies.binaryen.version)) - .replace(/LONG_VERSION = "latest"/, "LONG_VERSION = " + JSON.stringify(pkg.dependencies.long.version)) - .replace(/ASSEMBLYSCRIPT_VERSION = "latest"/, "ASSEMBLYSCRIPT_VERSION = " + JSON.stringify(pkg.version)); - fs.writeFile(path.join(__dirname, "..", "dist", "sdk.js"), data, function(err) { - if (err) throw err; - }); -}); diff --git a/scripts/build-web.js b/scripts/build-web.js new file mode 100644 index 0000000000..8ffb3765d9 --- /dev/null +++ b/scripts/build-web.js @@ -0,0 +1,43 @@ +import { dirname, join } from "path"; +import fs from "fs"; +import { fileURLToPath } from "url"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +export function buildWeb() { + const pkg = JSON.parse(fs.readFileSync(join(__dirname, "../package-lock.json"))); + + const mainVersion = pkg.version; + const binaryenVersion = pkg.packages["node_modules/binaryen"].version || pkg.dependencies.binaryen.version; + const longVersion = pkg.packages["node_modules/long"].version || pkg.dependencies.long.version; + + const distUrl = mainVersion === "0.0.0" ? `./` : `https://cdn.jsdelivr.net/npm/assemblyscript@${mainVersion}/dist/`; + const binaryenUrl = `https://cdn.jsdelivr.net/npm/binaryen@${binaryenVersion}/index.js`; + const longUrl = `https://cdn.jsdelivr.net/npm/long@${longVersion}/index.js`; + const importmap = { + "imports": { + "assemblyscript": `${distUrl}assemblyscript.js`, + "assemblyscript/asc": `${distUrl}asc.js`, + "binaryen": binaryenUrl, + "long": longUrl + } + }; + + fs.writeFileSync(join(__dirname, "..", "dist", "importmap.json"), `${JSON.stringify(importmap, null, 2)} + `); + fs.writeFileSync(join(__dirname, "..", "dist", "web.js"), `var ASSEMBLYSCRIPT_VERSION = ${JSON.stringify(mainVersion)}; + var ASSEMBLYSCRIPT_IMPORTMAP = ${JSON.stringify(importmap, null, 2)}; + if (!document.currentScript.src.includes("noinstall")) { + let elem = document.createElement("script"); + elem.type = "importmap"; + elem.text = JSON.stringify(ASSEMBLYSCRIPT_IMPORTMAP); + document.head.appendChild(elem); + } + if (!document.currentScript.src.includes("noshim")) { + let elem = document.createElement("script"); + elem.async = true; + elem.src = "https://cdn.jsdelivr.net/npm/es-module-shims@1/dist/es-module-shims.wasm.min.js"; + document.head.appendChild(elem); + } + `); +} \ No newline at end of file diff --git a/scripts/build.js b/scripts/build.js index 9e6d573d49..e8496cff23 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -1,6 +1,284 @@ -const webpack = require("webpack"); -const config = require("../webpack.config.js"); +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; +import esbuild from "esbuild"; +import { globSync } from "glob"; +import { createRequire } from "module"; +import { stdoutColors } from "../util/terminal.js"; -webpack(config, err => { - if (err) throw err; +import {buildWeb} from "./build-web.js"; +import * as dts from "./build-dts.js"; + +const require = createRequire(import.meta.url); +const dirname = path.dirname(fileURLToPath(import.meta.url)); +const watch = process.argv[2] === "--watch"; + +function prelude(name) { + return [ + "/**\n", + " * @license\n", + " * ", name, "\n", + " * Copyright ", new Date().getFullYear().toString(), " Daniel Wirtz / The AssemblyScript Authors\n", + " * SPDX-License-Identifier: Apache-2.0\n", + " */" + ].join(""); +} + +// Report what's going on + +function time() { + return new Date().toISOString(); +} + +function reportPlugin(name) { + return { + name: "reporter", + setup(build) { + let startTime = 0; + build.onStart(() => { + console.log(`${time()} - ${name} - Starting new build ...`); + startTime = Date.now(); + }); + build.onEnd(({ errors, warnings }) => { + const duration = Date.now() - startTime; + if (errors.length) { + console.log(`${time()} - ${name} - ${stdoutColors.red("ERROR")} (${errors.length} errors, ${warnings.length} warnings, ${duration} ms)`); + } else { + console.log(`${time()} - ${name} - ${stdoutColors.green("SUCCESS")} (${warnings.length} warnings, ${duration} ms)`); + } + }); + } + }; +} + +// Standard library integration + +function bundleFile(filename) { + return fs.readFileSync(filename, { encoding: "utf8" }).replace(/\r\n/g, "\n"); +} + +const stdlibPlugin = { + name: "stdlib", + setup(build) { + build.onResolve({ filter: /\bindex\.generated\.js$/ }, args => { + return { + path: path.join(args.resolveDir, args.path), + watchFiles: globSync(path.join(dirname, "..", "std", "assembly") + "/**/*.ts") + .concat([ + path.join(dirname, "..", "package.json"), + path.join(dirname, "..", "cli", "options.json"), + path.join(dirname, "..", "std", "portable", "index.d.ts") + ]) + }; + }); + build.onLoad({ filter: /\bindex\.generated\.js$/ }, args => { + const out = [ + `// GENERATED FILE. DO NOT EDIT.\n\n` + ]; + const version = require("../package.json").version; + out.push( + `export const version = ${JSON.stringify(version)};\n` + ); + const options = require("../cli/options.json"); + out.push( + `export const options = ${JSON.stringify(options, null, 2)};\n` + ); + out.push( + `export const libraryPrefix = "~lib/";\n` + ); + const libraryDir = path.join(dirname, "..", "std", "assembly"); + const libraryFiles = {}; + for (const file of globSync("**/!(*.d).ts", { cwd: libraryDir, posix: true }).sort()) { + libraryFiles[file.replace(/\.ts$/, "")] = bundleFile(path.join(libraryDir, file)); + } + out.push( + `export const libraryFiles = ${JSON.stringify(libraryFiles, null, 2)};\n` + ); + const definitionFiles = { + assembly: bundleFile(path.join(dirname, "..", "std", "assembly", "index.d.ts")), + portable: bundleFile(path.join(dirname, "..", "std", "portable", "index.d.ts")) + }; + out.push( + `export const definitionFiles = ${JSON.stringify(definitionFiles, null, 2)};\n` + ); + const generated = out.join(""); + fs.writeFileSync(path.join(dirname, "..", "cli", "index.generated.js"), generated); + return { + contents: generated, + loader: "js" + }; + }); + } +}; + +// Diagnostic messages integration + +const diagnosticsPlugin = { + name: "diagnostics", + setup(build) { + build.onResolve({ filter: /\bdiagnosticMessages\.generated$/ }, args => { + return { + path: path.join(args.resolveDir, args.path), + watchFiles: [ + path.join(dirname, "..", "src", "diagnosticMessages.json") + ] + }; + }); + build.onLoad({ filter: /\bdiagnosticMessages\.generated$/ }, args => { + const out = [ + `// GENERATED FILE. DO NOT EDIT.\n\n` + ]; + + function makeKey(text) { + return text.replace(/[^\w]+/g, "_").replace(/_+$/, ""); + } + + out.push("/** Enum of available diagnostic codes. */\n"); + out.push("export enum DiagnosticCode {\n"); + + let first = true; + const messages = JSON.parse(fs.readFileSync(path.join(dirname, "..", "src", "diagnosticMessages.json"))); + Object.keys(messages).forEach(text => { + let key = makeKey(text); + if (first) + first = false; + else { + out.push(",\n"); + } + out.push(" " + key + " = " + messages[text]); + }); + + out.push("\n}\n\n"); + out.push("/** Translates a diagnostic code to its respective string. */\n"); + out.push("export function diagnosticCodeToString(code: DiagnosticCode): string {\n switch (code) {\n"); + + Object.keys(messages).forEach(text => { + out.push(" case " + messages[text] + ": return " + JSON.stringify(text) + ";\n"); + }); + + out.push(" default: return \"\";\n }\n}\n"); + + const generated = out.join(""); + fs.writeFileSync(path.join(dirname, "..", "src", "diagnosticMessages.generated.ts"), generated); + return { + contents: generated, + loader: "ts" + }; + }); + } +}; + +// Web template integration + +const webPlugin = { + name: "web", + setup(build) { + build.onEnd(() => { + const startTime = Date.now(); + console.log(`${time()} - web - Starting new build ...`); + + try { + buildWeb(); + + const duration = Date.now() - startTime; + console.log(`${time()} - web - ${stdoutColors.green("SUCCESS")} (no errors, ${duration} ms)`); + } catch (e) { + const duration = Date.now() - startTime; + console.error(e); + console.log(`${time()} - web - ${stdoutColors.red("ERROR")} (had errors, ${duration} ms)`); + process.exitCode = 1; + } finally { + buildingDefinitions = false; + } + }); + } +}; + +// Build compiler and CLI + +const common = { + target: "esnext", + platform: "node", + format: "esm", + external: [ + "assemblyscript", + "binaryen", + "long" + ], + legalComments: "none", + bundle: true, + sourcemap: true, + treeShaking: true, + minify: true +}; + +async function invokeBuild(options) { + const ctx = await esbuild.context(options); + if (watch) { + await ctx.watch(); + } else { + await ctx.rebuild(); + ctx.dispose(); + } +} + +const srcBuild = invokeBuild({ + entryPoints: [ "./src/index.ts" ], + tsconfig: "./src/tsconfig.json", + outfile: "./dist/assemblyscript.js", + banner: { js: prelude("The AssemblyScript compiler") }, + plugins: [ diagnosticsPlugin, reportPlugin("src") ], + ...common +}); + +const cliBuild = invokeBuild({ + entryPoints: [ "./cli/index.js" ], + tsconfig: "./cli/tsconfig.json", + outfile: "./dist/asc.js", + banner: { js: prelude("The AssemblyScript frontend") }, + plugins: [ stdlibPlugin, webPlugin, reportPlugin("cli") ], + ...common }); + +// Optionally build definitions (takes a while) + +let buildingDefinitions = false; + +function buildDefinitions() { + const startTime = Date.now(); + console.log(`${time()} - dts - Starting new build ...`); + buildingDefinitions = true; + + try { + dts.generateSrc(); + dts.generateCli(); + + const duration = Date.now() - startTime; + console.log(`${time()} - dts - ${stdoutColors.green("SUCCESS")} (no errors, ${duration} ms)`); + } catch (e) { + const duration = Date.now() - startTime; + console.error(e); + console.log(`${time()} - dts - ${stdoutColors.red("ERROR")} (had errors, ${duration} ms)`); + process.exitCode = 1; + } finally { + buildingDefinitions = false; + } +} + +if (watch) { + console.log("Watching for changes. Press RETURN to rebuild definitions.\n"); + process.stdin.on("data", data => { + if (data == "\r\n" || data == "\n") { + process.stdout.write("\u001b[1A"); + if (!buildingDefinitions) buildDefinitions(); + } + }); +} + +console.log(`src : Compiler as a library +cli : Compiler frontend asc +dts : TS definition bundles +web : Example web template\n`); + +await Promise.all([ srcBuild, cliBuild ]); +buildDefinitions(); diff --git a/scripts/clean.js b/scripts/clean.js deleted file mode 100644 index 956dea952e..0000000000 --- a/scripts/clean.js +++ /dev/null @@ -1,16 +0,0 @@ -var fs = require("fs"); -var glob = require("glob"); - -glob("*", { cwd: __dirname + "/../dist" }, (err, matches) => { - if (err) - console.log("Failed to list files in 'dist/': " + err.message); - else - matches.forEach(match => { - fs.unlink(__dirname + "/../dist/" + match, err => { - if (err) - console.log("Failed to delete 'dist/" + match + "': " + err.message); - else - console.log("Deleted 'dist/" + match + "'"); - }); - }); -}); diff --git a/scripts/hexfloat.html b/scripts/hexfloat.html index d53fdb685b..886dba3cb2 100644 --- a/scripts/hexfloat.html +++ b/scripts/hexfloat.html @@ -21,13 +21,13 @@

Hexadecimal float to decimal float converter

- diff --git a/tests/binaryen/multi-value.js b/tests/binaryen/multi-value.js deleted file mode 100644 index f9610b0018..0000000000 --- a/tests/binaryen/multi-value.js +++ /dev/null @@ -1,15 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); -var ii = binaryen.createType([ binaryen.i32, binaryen.i32 ]); -mod.addFunction("test", ii, ii, [], - mod.unreachable() -); -mod.addExport("test", "test"); - -console.log(mod.emitText()); -if (!mod.validate()) - console.log("-> does not validate"); - -mod.optimize(); -console.log(mod.emitText()); diff --git a/tests/binaryen/optimize-if-eqz.js b/tests/binaryen/optimize-if-eqz.js deleted file mode 100644 index fb85fb8289..0000000000 --- a/tests/binaryen/optimize-if-eqz.js +++ /dev/null @@ -1,19 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); -var funcType = mod.addFunctionType("i", binaryen.i32, [ binaryen.i32 ]); -mod.addFunction("test", funcType, [], - mod.if( - mod.i32.eqz(mod.getLocal(0, binaryen.i32)), - mod.i32.const(0), - mod.getLocal(0, binaryen.i32) - ) -); -mod.addExport("test", "test"); - -console.log(mod.emitText()); -if (!mod.validate()) - console.log("-> does not validate"); - -mod.optimize(); -console.log(mod.emitText()); diff --git a/tests/binaryen/optimize-if-eqz.wat b/tests/binaryen/optimize-if-eqz.wat deleted file mode 100644 index 3f04e0735b..0000000000 --- a/tests/binaryen/optimize-if-eqz.wat +++ /dev/null @@ -1,14 +0,0 @@ -(module - (type $i (func (param i32) (result i32))) - (memory $0 0) - (export "test" (func $test)) - (func $test (; 0 ;) (type $i) (param $0 i32) (result i32) - (if (result i32) - (i32.eqz - (get_local $0) - ) - (i32.const 0) - (get_local $0) - ) - ) -) \ No newline at end of file diff --git a/tests/binaryen/precompute-join.wat b/tests/binaryen/precompute-join.wat deleted file mode 100644 index 6850e1dc3b..0000000000 --- a/tests/binaryen/precompute-join.wat +++ /dev/null @@ -1,20 +0,0 @@ -(module - (type $ii (func (param i32) (result i32))) - (export "fls" (func $assembly/tlsf/fls)) - (func $assembly/tlsf/fls (; 8 ;) (type $ii) (param $0 i32) (result i32) - (return - (i32.sub - (i32.sub - (i32.shl - (i32.const 4) - (i32.const 3) - ) - (i32.clz - (get_local $0) - ) - ) - (i32.const 1) - ) - ) - ) -) diff --git a/tests/binaryen/reloop.js b/tests/binaryen/reloop.js deleted file mode 100644 index 1a4e739ad8..0000000000 --- a/tests/binaryen/reloop.js +++ /dev/null @@ -1,71 +0,0 @@ -var binaryen = require("binaryen"); -binaryen.setOptimizeLevel(3); -binaryen.setShrinkLevel(0); - -function usingBranches() { - var module = new binaryen.Module(); - var rl = new binaryen.Relooper(module); - var entry = rl.addBlock(module.nop()); - - for (let i = 0; i < 10; ++i) { - rl.addBranch(entry, - rl.addBlock( - module.return( - module.call("other", [ module.i32.const(i) ], binaryen.none, binaryen.i32) - ) - ), - module.i32.eq( - module.local.get(0, binaryen.i32), - module.i32.const(i) - ) - ); - } - rl.addBranch(entry, - rl.addBlock( - module.unreachable() - ) - ); - - module.addFunction("test", binaryen.i32, binaryen.i32, [ binaryen.i32 ], rl.renderAndDispose(entry, 1)); - module.addFunctionImport("other", "env", "other", binaryen.i32, binaryen.i32); - module.addFunctionExport("test", "test"); - - console.log("=== unoptimized ==="); - console.log(module.emitText()); - module.optimize(); - console.log("=== optimized ==="); - console.log(module.emitText()); -} -usingBranches(); - -/* function usingSwitch() { - var module = new binaryen.Module(); - var rl = new binaryen.Relooper(module); - var entry = rl.addBlockWithSwitch(module.nop(), module.local.get(0, binaryen.i32)); - - for (let i = 0; i < 10; ++i) { - rl.addBranchForSwitch(entry, - rl.addBlock( - module.return( - module.call("other", [ module.i32.const(i) ], binaryen.none, binaryen.i32) - ) - ), - [ i ] - ); - } - rl.addBranchForSwitch(entry, - rl.addBlock( - module.unreachable() - ), - [] - ); - - module.addFunction("test", binaryen.i32, binaryen.i32, [ binaryen.i32 ], rl.renderAndDispose(entry, 1)); - module.addFunctionImport("other", "env", "other", binaryen.none, binaryen.i32); - module.addFunctionExport("test", "test"); - - console.log(module.emitText()); - module.optimize(); - console.log(module.emitText()); -} -usingSwitch(); */ diff --git a/tests/binaryen/set_global-immutable.js b/tests/binaryen/set_global-immutable.js deleted file mode 100644 index 3907ccc71c..0000000000 --- a/tests/binaryen/set_global-immutable.js +++ /dev/null @@ -1,16 +0,0 @@ -var binaryen = require("binaryen"); - -// "It is a validation error for a set_global to index an immutable global variable." - -var mod = new binaryen.Module(); -mod.addGlobal("a", binaryen.i32, false, mod.i32.const(0)); - -var funcType = mod.addFunctionType("v", binaryen.none, []); -var func = mod.addFunction("start", funcType, [], mod.block("", [ - mod.setGlobal("a", mod.i32.const(1)) -])); -mod.setStart(func); - -console.log(mod.emitText()); -if (mod.validate()) - console.log("-> validates"); diff --git a/tests/binaryen/unreachable-loop.js b/tests/binaryen/unreachable-loop.js deleted file mode 100644 index 462d790a3b..0000000000 --- a/tests/binaryen/unreachable-loop.js +++ /dev/null @@ -1,23 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); -var funcType = mod.addFunctionType("v", binaryen.none, []); -mod.addFunction("0", funcType, [], - mod.drop( - mod.block("label$1", [ - mod.loop("label$2", - mod.unreachable() - ) - ], binaryen.i32) - ) -); -mod.addExport("0", "0"); - -console.log(mod.emitText()); -if (!mod.validate()) - console.log("-> does not validate"); - -var bin = mod.emitBinary(); -require("fs").writeFileSync(__dirname + "/unreachable-loop.wasm", bin); -var mod2 = binaryen.readBinary(bin); -console.log(mod2.emitText()); diff --git a/tests/binaryen/unreachable-loop.wat b/tests/binaryen/unreachable-loop.wat deleted file mode 100644 index 7458bb4dda..0000000000 --- a/tests/binaryen/unreachable-loop.wat +++ /dev/null @@ -1,11 +0,0 @@ -(module - (func $0 - (drop - (block $label$1 (result i32) - (loop $label$2 - (unreachable) - ) - ) - ) - ) -) \ No newline at end of file diff --git a/tests/binaryen/unreachable-spam.js b/tests/binaryen/unreachable-spam.js deleted file mode 100644 index 621892c636..0000000000 --- a/tests/binaryen/unreachable-spam.js +++ /dev/null @@ -1,25 +0,0 @@ -var binaryen = require("binaryen"); - -var mod = new binaryen.Module(); -var funcType = mod.addFunctionType("ii", binaryen.i32, [ binaryen.i32 ]); -mod.addFunction("0", funcType, [], - mod.block(null, [ - mod.loop("continue", - mod.block(null, [ - mod.if( - mod.local.get(0, binaryen.i32), - mod.return(mod.i32.const(1)), - mod.return(mod.i32.const(2)) - ), - mod.unreachable() - ]) - ), - mod.unreachable() - ], binaryen.i32) -); -mod.addExport("0", "0"); - -if (!mod.validate()) - console.log("-> does not validate"); -console.log(mod.emitText()); -console.log(mod.emitStackIR(/* true */)); // optimize-stack-ir fixes this diff --git a/tests/bootstrap/index.ts b/tests/bootstrap/index.ts deleted file mode 100644 index 098b8c0dd6..0000000000 --- a/tests/bootstrap/index.ts +++ /dev/null @@ -1,97 +0,0 @@ -import * as fs from "fs"; -import * as path from "path"; -import * as binaryen from "binaryen"; -import * as util from "util"; -import * as loader from "../../lib/loader"; -import * as find from "../../cli/util/find"; -import AssemblyScript from "../../out/assemblyscript"; - -Error.stackTraceLimit = Infinity; - -// Load stdlib -const libDir = path.join(__dirname, "..", "..", "std", "assembly"); -const libraryFiles = {}; -find.files(libDir, /^(?!.*\.d\.ts$).*\.ts$/).forEach((file: string) => { - libraryFiles[file.replace(/\.ts$/, "")] = fs.readFileSync(path.join(libDir, file), "utf8" ); -}); - -async function test(build: string): Promise { - await binaryen.ready; - - const { exports: asc } = await loader.instantiate( - fs.promises.readFile(`${ __dirname }/../../out/assemblyscript.${ build }.wasm`), - { binaryen } - ); - console.log(util.inspect(asc, true)); - - const cachedStrings = new Map(); - function cachedString(text: string): number { - if (cachedStrings.has(text)) return cachedStrings.get(text); - var ptr = asc.__retain(asc.__allocString(text)); - cachedStrings.set(text, ptr); - return ptr; - } - - const programPtr = ((): number => { - const optionsPtr = asc.newOptions(); - const ptr = asc.newProgram(optionsPtr); - asc.__release(optionsPtr); - return ptr; - })(); - - console.log("\nParsing standard library ..."); - Object.keys(libraryFiles).forEach((libPath: string) => { - if (libPath.indexOf("/") >= 0) return; - const textPtr = cachedString(libraryFiles[libPath]); - const pathPtr = cachedString("~lib/" + libPath + ".ts"); - console.log(" " + asc.__getString(pathPtr)); - asc.parse(programPtr, textPtr, pathPtr, false); - }); - - console.log("\nParsing runtime ..."); - { - const textPtr = cachedString(libraryFiles["rt/index-stub"]); - const pathPtr = cachedString("~lib/rt/index-stub.ts"); - console.log(" " + asc.__getString(pathPtr)); - asc.parse(programPtr, textPtr, pathPtr, true); - } - - console.log("\nParsing backlog ..."); - var nextFilePtr = asc.nextFile(programPtr); - while (nextFilePtr) { - const nextFile = asc.__getString(nextFilePtr); - if (!nextFile.startsWith("~lib/")) throw Error("unexpected file: " + nextFile); - const text = libraryFiles[nextFile.substring(5)]; - if (text == null) throw Error("missing file: " + nextFile); - const textPtr = cachedString(libraryFiles[nextFile.substring(5)]); - const pathPtr = cachedString(nextFile + ".ts"); - console.log(" " + asc.__getString(pathPtr)); - asc.parse(programPtr, textPtr, pathPtr, false); - asc.__release(nextFilePtr); - nextFilePtr = asc.nextFile(programPtr); - } - - console.log("\nParsing entry file ..."); - { - const textPtr = cachedString("export function add(a: i32, b: i32): i32 { return a + b; }\n"); - const pathPtr = cachedString("index.ts"); - console.log(" " + asc.__getString(pathPtr)); - asc.parse(programPtr, textPtr, pathPtr, true); - } - - console.log("\nInitializing program ..."); - { - asc.initializeProgram(programPtr); - console.log("\nCompiling program ..."); - const modulePtr = asc.compile(programPtr); - const moduleRef = new Uint32Array(asc.memory.buffer, modulePtr)[0]; - console.log(binaryen.wrapModule(moduleRef).emitText()); - asc.__release(modulePtr); - } - - asc.__release(programPtr); - cachedStrings.forEach(asc.__release); - - console.log("\nSo far, so good."); -} -test("untouched"); diff --git a/tests/browser-asc.js b/tests/browser-asc.js deleted file mode 100644 index b48649268b..0000000000 --- a/tests/browser-asc.js +++ /dev/null @@ -1,83 +0,0 @@ -const asc = require("../dist/asc.js"); - -if (typeof asc.definitionFiles.assembly !== "string") throw Error("missing bundled assembly.d.ts"); -if (typeof asc.definitionFiles.portable !== "string") throw Error("missing bundled portable.d.ts"); - -const stdout = asc.createMemoryStream(); -const stderr = asc.createMemoryStream(); -const files = { "module.ts": `export function test(): void {}` }; - -console.log("# asc --version"); - -asc.main([ - "--version" -], { - stdout: stdout, - stderr: stderr -}, err => { - console.log(">>> STDOUT >>>"); - process.stdout.write(stdout.toString()); - stdout.reset(); - console.log(">>> STDERR >>>"); - process.stdout.write(stderr.toString()); - stderr.reset(); -}); - -console.log("\n# asc --help"); - -asc.main([ - "--help" -], { - stdout: stdout, - stderr: stderr -}, err => { - console.log(">>> STDOUT >>>"); - process.stdout.write(stdout.toString()); - stdout.reset(); - console.log(">>> STDERR >>>"); - process.stdout.write(stderr.toString()); - stderr.reset(); -}); - -console.log("\n# asc module.ts --textFile"); - -asc.main([ - "module.ts", - "--textFile" -], { - stdout: stdout, - stderr: stderr, - readFile: (name, baseDir) => { - console.log("readFile: " + name + ", baseDir=" + baseDir); - if (Object.prototype.hasOwnProperty.call(files, name)) return files[name]; - return null; - }, - writeFile: (name, data, baseDir) => { - console.log("writeFile: " + name + ", baseDir=" + baseDir); - }, - listFiles: (dirname, baseDir) => { - console.log("listFiles: " + dirname + ", baseDir=" + baseDir); - return []; - } -}, err => { - if (err) { - console.log(">>> THROWN >>>"); - console.log(err); - } -}); - -console.log(">>> STDOUT >>>"); -process.stdout.write(stdout.toString()); -console.log(">>> STDERR >>>"); -process.stdout.write(stderr.toString()); - -console.log("\n# asc.compileString"); - -const output = asc.compileString(`export function test(): void {}`, { optimizeLevel: 3, runtime: "none", exportTable: true, measure: true }); -console.log(">>> .stdout >>>"); -process.stdout.write(output.stdout.toString()); -console.log(">>> .stderr >>>"); -process.stdout.write(output.stderr.toString()); -console.log(">>> .text >>>"); -process.stdout.write(output.text); -console.log(">>> .binary >>> " + output.binary.length + " bytes"); diff --git a/tests/browser.js b/tests/browser.js new file mode 100644 index 0000000000..0661990ef2 --- /dev/null +++ b/tests/browser.js @@ -0,0 +1,65 @@ +import * as asc from "../dist/asc.js"; + +if (typeof asc.definitionFiles.assembly !== "string") throw Error("missing bundled assembly.d.ts"); +if (typeof asc.definitionFiles.portable !== "string") throw Error("missing bundled portable.d.ts"); + +const files = { "index.ts": `export function test(): void {}` }; + +console.log("# asc --version"); +{ + const { stdout, stderr } = await asc.main([ "--version" ]); + + console.log(">>> STDOUT >>>"); + process.stdout.write(stdout.toString()); + console.log(">>> STDERR >>>"); + process.stdout.write(stderr.toString()); +} + +console.log("\n# asc --help"); +{ + const { stdout, stderr } = await asc.main([ "--help" ]); + + console.log(">>> STDOUT >>>"); + process.stdout.write(stdout.toString()); + console.log(">>> STDERR >>>"); + process.stdout.write(stderr.toString()); +} + +console.log("\n# asc index.ts --textFile"); +{ + const { error, stdout, stderr } = await asc.main([ "index.ts", "--textFile" ], { + readFile: (name, baseDir) => { + console.log("readFile: " + name + ", baseDir=" + baseDir); + if (Object.prototype.hasOwnProperty.call(files, name)) return files[name]; + return null; + }, + writeFile: (name, data, baseDir) => { + console.log("writeFile: " + name + ", baseDir=" + baseDir); + }, + listFiles: (dirname, baseDir) => { + console.log("listFiles: " + dirname + ", baseDir=" + baseDir); + return []; + } + }); + + if (error) { + console.log(">>> THROWN >>>"); + console.log(error); + } + console.log(">>> STDOUT >>>"); + process.stdout.write(stdout.toString()); + console.log(">>> STDERR >>>"); + process.stdout.write(stderr.toString()); +} + +console.log("\n# asc.compileString"); +{ + const { stdout, stderr, text, binary } = await asc.compileString(`export function test(): void {}`, { optimizeLevel: 3, exportTable: true, stats: true }); + console.log(">>> .stdout >>>"); + process.stdout.write(stdout.toString()); + console.log(">>> .stderr >>>"); + process.stdout.write(stderr.toString()); + console.log(">>> .text >>>"); + process.stdout.write(text); + console.log(">>> .binary >>> " + binary.length + " bytes"); +} diff --git a/tests/cli/options.js b/tests/cli/options.js index e24575b876..1eed2763ce 100644 --- a/tests/cli/options.js +++ b/tests/cli/options.js @@ -1,49 +1,61 @@ -const assert = require("assert"); -const optionsUtil = require("../../cli/util/options"); +import assert from "assert"; +import * as optionsUtil from "../../util/options.js"; const config = { - "enable": { - "type": "S", - "mutuallyExclusive": "disable" + enable: { + type: "S", + mutuallyExclusive: "disable", }, - "disable": { - "type": "S", - "mutuallyExclusive": "enable" + disable: { + type: "S", + mutuallyExclusive: "enable", + }, + other: { + type: "S", + default: ["x"], + }, + bool_input_for_string: { + type: "s", }, - "other": { - "type": "S", - "default": ["x"] - } }; // Present in both should concat -var merged = optionsUtil.merge(config, { enable: ["a"] }, { enable: ["b"] }); -assert.deepEqual(merged.enable, ["a", "b"]); +let merged = optionsUtil.merge(config, { enable: ["a"] }, { enable: ["b"] }); +assert.deepStrictEqual(merged.enable, ["a", "b"]); merged = optionsUtil.merge(config, { enable: ["a"] }, { enable: ["a", "b"] }); -assert.deepEqual(merged.enable, ["a", "b"]); +assert.deepStrictEqual(merged.enable, ["a", "b"]); // Mutually exclusive should exclude merged = optionsUtil.merge(config, { enable: ["a", "b"] }, { disable: ["a", "c"] }); -assert.deepEqual(merged.enable, ["a", "b"]); -assert.deepEqual(merged.disable, ["c"]); +assert.deepStrictEqual(merged.enable, ["a", "b"]); +assert.deepStrictEqual(merged.disable, ["c"]); merged = optionsUtil.merge(config, { disable: ["a", "b"] }, { enable: ["a", "c"] }); -assert.deepEqual(merged.enable, ["c"]); -assert.deepEqual(merged.disable, ["a", "b"]); +assert.deepStrictEqual(merged.enable, ["c"]); +assert.deepStrictEqual(merged.disable, ["a", "b"]); // Populating defaults should work after the fact -merged = optionsUtil.addDefaults(config, {}); -assert.deepEqual(merged.other, ["x"]); +optionsUtil.addDefaults(config, (merged = {})); +assert.deepStrictEqual(merged.other, ["x"]); + +optionsUtil.addDefaults(config, (merged = { other: ["y"] })); +assert.deepStrictEqual(merged.other, ["y"]); -merged = optionsUtil.addDefaults(config, { other: ["y"] }); -assert.deepEqual(merged.other, ["y"]); +// String test +assert.deepStrictEqual(merged.bool_input_for_string, undefined); +merged = optionsUtil.merge(config, {}, { bool_input_for_string: false }); +assert.deepStrictEqual(merged.bool_input_for_string, undefined); +merged = optionsUtil.merge(config, {}, { bool_input_for_string: true }); +assert.deepStrictEqual(merged.bool_input_for_string, ""); // Complete usage test -var result = optionsUtil.parse(["--enable", "a", "--disable", "b"], config, false); +let result = optionsUtil.parse(["--enable", "a", "--disable", "b"], config, false); + merged = optionsUtil.merge(config, result.options, { enable: ["b", "c"] }); merged = optionsUtil.merge(config, merged, { disable: ["a", "d"] }); optionsUtil.addDefaults(config, merged); -assert.deepEqual(merged.enable, ["a", "c"]); -assert.deepEqual(merged.disable, ["b", "d"]); -assert.deepEqual(merged.other, ["x"]); + +assert.deepStrictEqual(merged.enable, ["a", "c"]); +assert.deepStrictEqual(merged.disable, ["b", "d"]); +assert.deepStrictEqual(merged.other, ["x"]); diff --git a/tests/compiler.js b/tests/compiler.js index c1de4130af..0b6018fa80 100644 --- a/tests/compiler.js +++ b/tests/compiler.js @@ -1,16 +1,21 @@ +import fs from "fs"; +import path from "path"; +import os from "os"; +import v8 from "v8"; +import cluster from "cluster"; +import { createRequire } from "module"; +import { fileURLToPath, pathToFileURL } from "url"; +import { globSync } from "glob"; +import { stderrColors, stdoutColors } from "../util/terminal.js"; +import * as optionsUtil from "../util/options.js"; +import { coreCount, threadCount } from "../util/cpu.js"; +import { diff } from "../util/text.js"; +import { Rtrace } from "../lib/rtrace/index.js"; +import asc from "../dist/asc.js"; + +const dirname = path.dirname(fileURLToPath(import.meta.url)); +const require = createRequire(import.meta.url); const startTime = Date.now(); -const fs = require("fs"); -const path = require("path"); -const os = require("os"); -const v8 = require("v8"); -const glob = require("glob"); -const colorsUtil = require("../cli/util/colors"); -const optionsUtil = require("../cli/util/options"); -const diff = require("./util/diff"); -const asc = require("../cli/asc.js"); -const rtrace = require("../lib/rtrace"); -const cluster = require("cluster"); -const coreCount = require("physical-cpu-count"); const config = { "create": { @@ -32,6 +37,12 @@ const config = { ], "type": "b" }, + "noColors": { + "description": [ + "Disables terminal colors." + ], + "type": "b" + }, "rtraceVerbose": { "description": [ "Enables verbose rtrace output." @@ -52,12 +63,15 @@ const opts = optionsUtil.parse(process.argv.slice(2), config); const args = opts.options; const argv = opts.arguments; +stdoutColors.enabled = process.stdout.isTTY && !args.noColors; +stderrColors.enabled = process.stderr.isTTY && !args.noColors; + if (args.help) { console.log([ - colorsUtil.white("SYNTAX"), - " " + colorsUtil.cyan("npm run test:compiler --") + " [test1, test2 ...] [options]", + stdoutColors.white("SYNTAX"), + " " + stdoutColors.cyan("npm run test:compiler --") + " [test1, test2 ...] [options]", "", - colorsUtil.white("OPTIONS"), + stdoutColors.white("OPTIONS"), optionsUtil.help(config) ].join(os.EOL) + os.EOL); process.exit(0); @@ -65,40 +79,45 @@ if (args.help) { const features = process.env.ASC_FEATURES ? process.env.ASC_FEATURES.split(",") : []; const featuresConfig = require("./features.json"); - -var failedTests = new Set(); -var failedMessages = new Map(); -var skippedTests = new Set(); -var skippedMessages = new Map(); - -const basedir = path.join(__dirname, "compiler"); +const basedir = path.join(dirname, "compiler"); +process.chdir(basedir); // Gets a list of all relevant tests function getTests() { - var tests = glob.sync("**/!(_*).ts", { cwd: basedir }).map(name => name.replace(/\.ts$/, "")); + let tests = globSync("**/!(_*).ts", { posix: true }) + .map(name => name.replace(/\.ts$/, "")) + .filter(name => !name.endsWith(".d") && !name.includes("node_modules")); if (argv.length) { // run matching tests only tests = tests.filter(filename => argv.indexOf(filename.replace(/\.ts$/, "")) >= 0); if (!tests.length) { - console.log(colorsUtil.red("FAILURE: ") + colorsUtil.white("No matching tests: " + argv.join(" ") + "\n")); + console.log(stdoutColors.red("FAILURE: ") + stdoutColors.white("No matching tests: " + argv.join(" ") + "\n")); process.exit(1); } } return tests; } +function measureStart() { + return process.hrtime(); +} + +function measureEnd(start) { + const hrtime = process.hrtime(start); + return `${(hrtime[0] * 1e3 + hrtime[1] / 1e6).toFixed(3)} ms`; +} + // Starts a new section within a test function section(title) { - var start = process.hrtime(); + const start = measureStart(); console.log("- " + title); return { title, - end: function(code) { - const times = process.hrtime(start); - const time = asc.formatTime(times[0] * 1e9 + times[1]); + end(code) { + const time = measureEnd(start); switch (code) { - case SUCCESS: console.log(" " + colorsUtil.green ("SUCCESS") + " (" + time + ")\n"); break; - default: console.log(" " + colorsUtil.red("FAILURE") + " (" + time + ")\n"); break; - case SKIPPED: console.log(" " + colorsUtil.yellow("SKIPPED") + " (" + time + ")\n"); break; + case SUCCESS: console.log(" " + stdoutColors.green("SUCCESS") + " (" + time + ")\n"); break; + default: console.log(" " + stdoutColors.red("FAILURE") + " (" + time + ")\n"); break; + case SKIPPED: console.log(" " + stdoutColors.yellow("SKIPPED") + " (" + time + ")\n"); break; } } }; @@ -108,29 +127,137 @@ const FAILURE = 1; const SKIPPED = 2; // Runs a single test -function runTest(basename) { - console.log(colorsUtil.white("# compiler/" + basename) + "\n"); +async function runTest(basename) { + console.log(stdoutColors.white("# compiler/" + basename) + "\n"); const configPath = path.join(basedir, basename + ".json"); - const config = fs.existsSync(configPath) - ? require(configPath) - : {}; - + const config = fs.existsSync(configPath) ? require(configPath) : {}; const stdout = asc.createMemoryStream(); const stderr = asc.createMemoryStream(chunk => process.stderr.write(chunk.toString().replace(/^(?!$)/mg, " "))); stderr.isTTY = true; + const dummy = new Map(); + const writeFile = Map.prototype.set.bind(dummy); + let asc_flags = []; + let asc_rtrace = !!config.asc_rtrace; + let v8_flags = ""; + let v8_no_flags = ""; + let missing_features = []; + + // Makes sure to reset the environment after + function prepareResult(code, message = null) { + if (v8_no_flags) v8.setFlagsFromString(v8_no_flags); + // Delete the .wasm files in case the subsequent run doesn't specify the + // --createBinary flag, thereby preventing confusion. Also, the .debug.wasm + // file is used by the bindings/esm test. + if (!args.createBinary) { + fs.unlink(basename + ".debug.wasm", err => { /* nop */ }); + fs.unlink(basename + ".release.wasm", err => { /* nop */ }); + } + return { code, message }; + } + + function afterCompile(mode) { + // The ESM bindings test requires the .wasm file to be present. The file is + // promptly deleted after the test has completed, unless --createBinary is + // specified. + { + const filename = `${basename}.${mode}.wasm`; + fs.writeFileSync(filename, dummy.get(filename)); + } + + const compareFixture = section("compare fixture"); + const fixtureExtensions = ["wat", "js", "d.ts"]; + + if (args.create) { + for (const extension of fixtureExtensions) { + const filename = `${basename}.${mode}.${extension}`; + if (!dummy.has(filename)) { + fs.unlink(filename, err => { /* nop */ }); + continue; + } + fs.writeFileSync(filename, dummy.get(filename)); + console.log(" " + stdoutColors.yellow(`Created fixture ${filename}`)); + } + compareFixture.end(SKIPPED); + return; + } + + // Displaying the diffs in console for release fixtures isn't usually + // meaningful, so release fixtures are compared as if --noDiff was passed. + if (args.noDiff || mode === "release") { + for (const extension of fixtureExtensions) { + const filename = `${basename}.${mode}.${extension}`; + const actual = ( + dummy.has(filename) && + dummy.get(filename).replace(/\r\n/g, "\n") + ); + const expected = ( + fs.existsSync(filename) && + fs.readFileSync(filename, { encoding: "utf8" }).replace(/\r\n/g, "\n") + ); + + // If a fixture/generated file is missing, false will be compared to a + // string. If both are missing, nothing happens below (as it should). + if (actual !== expected) { + if (filename == "std/math.release.wat" && os.version().startsWith("Darwin Kernel") && os.arch() == "arm64") { + // FIXME: in arm64 macos, binaryen will optimize math.ts with different output. + compareFixture.end(SKIPPED); + return; + } + compareFixture.end(FAILURE); + return prepareResult(FAILURE, "fixture mismatch"); + } + } + compareFixture.end(SUCCESS); + return; + } + + let failed = false; + + for (const extension of fixtureExtensions) { + const filename = `${basename}.${mode}.${extension}`; + const actualExists = dummy.has(filename); + const expectedExists = fs.existsSync(filename); + + if (!actualExists && !expectedExists) { + // Neither exists, which is perfectly fine. Carry on. + continue; + } else if (actualExists != expectedExists) { + const message = actualExists + ? `Fixture ${filename} is missing!` + : `File ${filename} was not generated!`; + + console.log(" " + stdoutColors.yellow(message)); + failed = true; + continue; + } + + const actual = dummy.has(filename) && dummy.get(filename).replace(/\r\n/g, "\n"); + const expected = ( + fs.existsSync(filename) && + fs.readFileSync(filename, { encoding: "utf8" }).replace(/\r\n/g, "\n") + ); + + const diffResult = diff(filename, expected, actual); + if (diffResult !== null) { + console.log(diffResult); + failed = true; + } + } + + if (failed) { + compareFixture.end(FAILURE); + return prepareResult(FAILURE, "fixture mismatch"); + } + compareFixture.end(SUCCESS); + } - var asc_flags = []; - var v8_flags = ""; - var v8_no_flags = ""; - var missing_features = []; if (config.features) { config.features.forEach(feature => { if (!features.includes(feature) && !features.includes("*")) { missing_features.push(feature); - return; } - var featureConfig = featuresConfig[feature]; + let featureConfig = featuresConfig[feature]; if (featureConfig.asc_flags) { featureConfig.asc_flags.forEach(flag => { Array.prototype.push.apply(asc_flags, flag.split(" ")); @@ -143,52 +270,38 @@ function runTest(basename) { if (v8_no_flags) v8_no_flags += " "; v8_no_flags += "--no-" + flag.substring(2); }); - v8.setFlagsFromString(v8_flags); } }); - if (missing_features.length) { - console.log("- " + colorsUtil.yellow("feature SKIPPED") + " (" + missing_features.join(", ") + ")\n"); - skippedTests.add(basename); - skippedMessages.set(basename, "feature not enabled"); - if (cluster.isWorker) process.send({ cmd: "skipped", message: skippedMessages.get(basename) }); - return; - } } if (config.asc_flags) { - config.asc_flags.forEach(flag => { - Array.prototype.push.apply(asc_flags, flag.split(" ")); - }); + config.asc_flags.forEach(flag => { asc_flags.push(...flag.split(" ")); }); } - var failed = false; - - // Build untouched - var cmd = [ - basename + ".ts", - "--baseDir", basedir, - "--debug", - "--textFile" // -> stdout - ]; - if (asc_flags) - Array.prototype.push.apply(cmd, asc_flags); - cmd.push("--binaryFile", basename + ".untouched.wasm"); - const compileUntouched = section("compile untouched"); - asc.main(cmd, { - stdout: stdout, - stderr: stderr - }, err => { + // Build debug + { + const cmd = [ + basename + ".ts", + "--debug", + "--outFile", basename + ".debug.wasm", + "--textFile", basename + ".debug.wat" + ]; + if (asc_flags) cmd.push(...asc_flags); + if (args.noColors) cmd.push("--noColors"); + const compileDebug = section("compile debug"); + const { error } = await asc.main(cmd, { stdout, stderr, writeFile }); + let expectStderr = config.stderr; - if (err) { + if (error) { stderr.write("---\n"); - stderr.write(err.stack); + stderr.write(error.stack); stderr.write("\n---\n"); if (expectStderr) { - compileUntouched.end(SKIPPED); + compileDebug.end(SKIPPED); } else { - compileUntouched.end(FAILURE); + compileDebug.end(FAILURE); } } else { - compileUntouched.end(SUCCESS); + compileDebug.end(SUCCESS); } // check expected stderr patterns in order @@ -197,8 +310,9 @@ function runTest(basename) { const stderrString = stderr.toString(); if (typeof expectStderr === "string") expectStderr = [ expectStderr ]; let lastIndex = 0; + let failed = false; expectStderr.forEach((substr, i) => { - var index = stderrString.indexOf(substr, lastIndex); + let index = stderrString.indexOf(substr, lastIndex); if (index < 0) { console.log(" missing pattern #" + (i + 1) + " '" + substr + "' in stderr at " + lastIndex + "+."); failed = true; @@ -207,292 +321,336 @@ function runTest(basename) { } }); if (failed) { - failedTests.add(basename); - failedMessages.set(basename, "stderr mismatch"); compareStderr.end(FAILURE); - } else { - compareStderr.end(SUCCESS); + return prepareResult(FAILURE, "stderr mismatch"); } - return 1; + compareStderr.end(SUCCESS); + return prepareResult(SUCCESS); + } else if (error) { + // Don't bother comparing fixtures or doing anything else if the + // compilation failed. + return prepareResult(FAILURE, "compile failed"); } - const compareFixture = section("compare fixture"); - var actual = stdout.toString().replace(/\r\n/g, "\n"); - if (args.create) { - fs.writeFileSync(path.join(basedir, basename + ".untouched.wat"), actual, { encoding: "utf8" }); - console.log(" " + colorsUtil.yellow("Created fixture")); - compareFixture.end(SKIPPED); - } else { - let expected = fs.readFileSync(path.join(basedir, basename + ".untouched.wat"), { encoding: "utf8" }).replace(/\r\n/g, "\n"); - if (args.noDiff) { - if (expected != actual) { - failed = true; - failedTests.add(basename); - compareFixture.end(FAILURE); - } else { - compareFixture.end(SUCCESS); - } - } else { - let diffs = diff(basename + ".untouched.wat", expected, actual); - if (diffs !== null) { - console.log(diffs); - failed = true; - failedTests.add(basename); - compareFixture.end(FAILURE); - } else { - compareFixture.end(SUCCESS); - } - } - } + const afterCompileResult = afterCompile("debug"); + if (afterCompileResult) return afterCompileResult; + } + + stdout.length = 0; + stderr.length = 0; - stdout.length = 0; - stderr.length = 0; + const gluePath = basename + ".js"; + const glue = fs.existsSync(gluePath) ? await import(pathToFileURL(gluePath)) : {}; - // Build optimized - var cmd = [ + // Build release + { + const cmd = [ basename + ".ts", - "--baseDir", basedir, - "--binaryFile", // -> stdout + "--outFile", basename + ".release.wasm", + "--textFile", basename + ".release.wat", "-O" ]; - if (asc_flags) - Array.prototype.push.apply(cmd, asc_flags); - if (args.create) - cmd.push("--textFile", basename + ".optimized.wat"); - const compileOptimized = section("compile optimized"); - asc.main(cmd, { - stdout: stdout, - stderr: stderr - }, err => { - if (err) { - stderr.write("---\n"); - stderr.write(err.stack); - stderr.write("\n---\n"); - failed = true; - failedMessages.set(basename, err.message); - failedTests.add(basename); - compileOptimized.end(FAILURE); - return 1; - } else { - compileOptimized.end(SUCCESS); + if (asc_flags) cmd.push(...asc_flags); + if (args.noColors) cmd.push("--noColors"); + const compileRelease = section("compile release"); + const { error } = await asc.main(cmd, { stdout, stderr, writeFile }); + + if (error) { + stderr.write("---\n"); + stderr.write(error.stack); + stderr.write("\n---\n"); + compileRelease.end(FAILURE); + return prepareResult(FAILURE, error.message); + } + compileRelease.end(SUCCESS); + + const afterCompileResult = afterCompile("release"); + if (afterCompileResult) return afterCompileResult; + + if (missing_features.length) { + console.log("- " + stdoutColors.yellow("instantiate SKIPPED") + ": " + missing_features.join(", ") + " not enabled\n"); + return prepareResult(SKIPPED, "feature not enabled: " + missing_features.join(", ")); + } else if (v8_flags) { + v8.setFlagsFromString(v8_flags); + } + + const debugBuffer = dummy.get(basename + ".debug.wasm"); + const releaseBuffer = dummy.get(basename + ".release.wasm"); + const instantiateDebug = section("instantiate debug"); + if (config.skipInstantiate) { + instantiateDebug.end(SKIPPED); + } else { + + if (!await testInstantiate(debugBuffer, glue, stderr)) { + instantiateDebug.end(FAILURE); + return prepareResult(FAILURE, "instantiate error (debug)"); } - let untouchedBuffer = fs.readFileSync(path.join(basedir, basename + ".untouched.wasm")); - let optimizedBuffer = stdout.toBuffer(); - const gluePath = path.join(basedir, basename + ".js"); - var glue = {}; - if (fs.existsSync(gluePath)) glue = require(gluePath); - - const instantiateUntouched = section("instantiate untouched"); - if (!config.skipInstantiate) { - if (!testInstantiate(basename, untouchedBuffer, glue, stderr)) { - failed = true; - failedTests.add(basename); - instantiateUntouched.end(FAILURE); - } else { - instantiateUntouched.end(SUCCESS); - const instantiateOptimized = section("instantiate optimized"); - if (!testInstantiate(basename, optimizedBuffer, glue, stderr)) { - failed = true; - failedTests.add(basename); - instantiateOptimized.end(FAILURE); - } else { - instantiateOptimized.end(SUCCESS); - } - } - } else { - instantiateUntouched.end(SKIPPED); + instantiateDebug.end(SUCCESS); + const instantiateRelease = section("instantiate release"); + if (!await testInstantiate(releaseBuffer, glue, stderr)) { + instantiateRelease.end(FAILURE); + return prepareResult(FAILURE, "instantiate error (release)"); } - }); - if (failed) return 1; - }); - if (v8_no_flags) v8.setFlagsFromString(v8_no_flags); - if (!args.createBinary) fs.unlink(path.join(basedir, basename + ".untouched.wasm"), err => { /* nop */ }); - if (cluster.isWorker) process.send({ cmd: "done", failed: failed, message: failedMessages.get(basename) }); + instantiateRelease.end(SUCCESS); + } + } + + stdout.length = 0; + stderr.length = 0; + + // Build rtraced + if (asc_rtrace) { + const cmd = [ + basename + ".ts", + "--outFile", // -> stdout + "--debug", + "--use", "ASC_RTRACE=1", + "--exportStart", "_initialize", + // "--runPasses", "instrument-memory" + ]; + if (asc_flags) cmd.push(...asc_flags); + const compileRtraced = section("compile rtraced"); + const { error } = await asc.main(cmd, { stdout, stderr }); + + if (error) { + stderr.write("---\n"); + stderr.write(error.stack); + stderr.write("\n---\n"); + compileRtraced.end(FAILURE); + return prepareResult(FAILURE, error.message); + } + compileRtraced.end(SUCCESS); + + const rtracedBuffer = stdout.toBuffer(); + const instantiateRtrace = section("instantiate rtrace"); + if (!await testInstantiate(rtracedBuffer, glue, stderr)) { + instantiateRtrace.end(FAILURE); + return prepareResult(FAILURE, "rtrace error"); + } + instantiateRtrace.end(SUCCESS); + } + + return prepareResult(SUCCESS); } // Tests if instantiation of a module succeeds -function testInstantiate(basename, binaryBuffer, glue, stderr) { - var failed = false; +async function testInstantiate(binaryBuffer, glue, stderr) { + let failed = false; try { - let memory = new WebAssembly.Memory({ initial: 10 }); - let exports = {}; + const memory = new WebAssembly.Memory({ initial: 10 }); + const exports = {}; function getString(ptr) { const RUNTIME_HEADER_SIZE = 16; if (!ptr) return "null"; - var U32 = new Uint32Array(exports.memory ? exports.memory.buffer : memory.buffer); - var U16 = new Uint16Array(exports.memory ? exports.memory.buffer : memory.buffer); - var len16 = U32[(ptr - RUNTIME_HEADER_SIZE + 12) >>> 2] >>> 1; - var ptr16 = ptr >>> 1; + let U32 = new Uint32Array(exports.memory ? exports.memory.buffer : memory.buffer); + let U16 = new Uint16Array(exports.memory ? exports.memory.buffer : memory.buffer); + let len16 = U32[(ptr - RUNTIME_HEADER_SIZE + 12) >>> 2] >>> 1; + let ptr16 = ptr >>> 1; return String.fromCharCode.apply(String, U16.subarray(ptr16, ptr16 + len16)); } - function onerror(e) { - console.log(" ERROR: " + e); - failed = true; - failedMessages.set(basename, e.message); - } + const rtrace = new Rtrace({ + onerror(err, info) { + console.log(` ERROR: ${err.stack}`); + failed = true; + }, + oninfo(msg, info) { + if (!args.rtraceVerbose) return; + console.log(` ${msg}`); + }, + getMemory() { + return instance.exports.memory; + } + }); - function oninfo(i) { - console.log(" " + i); + function toEnv(name, ref) { + let env = {}; + for (let key of Object.getOwnPropertyNames(ref)) env[`${name}.${key}`] = ref[key]; + let prototype = ref.prototype; + if (prototype) { + for (const key of Object.getOwnPropertyNames(prototype)) { + const original = prototype[key]; + env[`${name}#${key}`] = (thisArg, ...args) => { + return original.apply(thisArg, args); + }; + } + } + return env; } - let rtr = rtrace(onerror, args.rtraceVerbose ? oninfo : null); - - var imports = { - rtrace: rtr, - env: { + const imports = rtrace.install({ + env: Object.assign({}, globalThis, { memory, abort: function(msg, file, line, column) { - console.log(colorsUtil.red(" abort: " + getString(msg) + " in " + getString(file) + "(" + line + ":" + column + ")")); + console.log(stdoutColors.red(" abort: " + getString(msg) + " in " + getString(file) + "(" + line + ":" + column + ")")); }, trace: function(msg, n) { console.log(" trace: " + getString(msg) + (n ? " " : "") + Array.prototype.slice.call(arguments, 2, 2 + n).join(", ")); }, seed: function() { return 0xA5534817; // make tests deterministic - } - }, - Math, - Date, - Reflect - }; + }, + visit: function() { + // override in tests + }, + "Date.getTimezoneOffset"() { + // @external.js in bindings tests + return new Date().getTimezoneOffset(); + }, + ...toEnv("Date", Date), + ...toEnv("Math", Math) + }) + }); + if (glue.preInstantiate) { - console.log(" [call preInstantiate]"); - glue.preInstantiate(imports, exports); + console.log(" [invoke glue.preInstantiate]"); + const start = measureStart(); + await glue.preInstantiate(imports, exports); + console.log(" [return glue.preInstantiate] " + measureEnd(start)); } - var instance = new WebAssembly.Instance(new WebAssembly.Module(binaryBuffer), imports); + const { instance } = await WebAssembly.instantiate(binaryBuffer, imports); Object.setPrototypeOf(exports, instance.exports); if (glue.postInstantiate) { - console.log(" [call postInstantiate]"); - glue.postInstantiate(instance); + console.log(" [invoke glue.postInstantiate]"); + const start = measureStart(); + await glue.postInstantiate(instance); + console.log(" [return glue.postInstantiate] " + measureEnd(start)); } if (exports._start) { - console.log(" [call start]"); + console.log(" [invoke exports._start]"); + const start = measureStart(); exports._start(); + console.log(" [return exports._start] " + measureEnd(start)); + } else if (exports._initialize) { + console.log(" [invoke exports._initialize]"); + const start = measureStart(); + exports._initialize(); + console.log(" [return exports._initialize] " + measureEnd(start)); } if (glue.postStart) { - console.log(" [call postStart]"); + console.log(" [invoke glue.postStart]"); + const start = measureStart(); glue.postStart(instance); + console.log(" [return glue.postStart] " + measureEnd(start)); } - let leakCount = rtr.check(); + const leakCount = rtrace.check(); if (leakCount) { - let msg = "memory leak detected: " + leakCount + " leaking"; failed = true; - failedMessages.set(basename, msg); - console.log(" " + msg); + console.log(` memory leak detected: ${leakCount} leaking`); } if (!failed) { - if (rtr.active) { + if (rtrace.active) { console.log(" " + - rtr.allocCount + " allocs, " + - rtr.freeCount + " frees, " + - rtr.incrementCount + " increments, " + - rtr.decrementCount + " decrements" + rtrace.allocCount + " allocs, " + + rtrace.freeCount + " frees, " + + rtrace.resizeCount + " resizes, " + + rtrace.moveCount + " moves" ); } return true; } - } catch (e) { + } catch (err) { stderr.write("---\n"); - stderr.write(e.stack); + stderr.write(err.stack); stderr.write("\n---\n"); - failed = true; - failedMessages.set(basename, e.message); } return false; } // Evaluates the overall test result -function evaluateResult() { +function evaluateResult(failedTests, skippedTests) { if (skippedTests.size) { - console.log(colorsUtil.yellow("WARNING: ") + colorsUtil.white(skippedTests.size + " compiler tests have been skipped:\n")); - skippedTests.forEach(name => { - var message = skippedMessages.has(name) ? colorsUtil.gray("[" + skippedMessages.get(name) + "]") : ""; - console.log(" " + name + " " + message); - }); + console.log(stdoutColors.yellow("WARNING: ") + stdoutColors.white(skippedTests.size + " compiler tests have been skipped:\n")); + for (let [name, message] of skippedTests) { + console.log(" " + name + " " + stdoutColors.gray("[" + (message || "???") + "]")); + } console.log(); } if (failedTests.size) { process.exitCode = 1; - console.log(colorsUtil.red("FAILURE: ") + colorsUtil.white(failedTests.size + " compiler tests had failures:\n")); - failedTests.forEach(name => { - var message = failedMessages.has(name) ? colorsUtil.gray("[" + failedMessages.get(name) + "]") : ""; - console.log(" " + name + " " + message); - }); + console.log(stdoutColors.red("FAILURE: ") + stdoutColors.white(failedTests.size + " compiler tests had failures:\n")); + for (let [name, message] of failedTests) { + console.log(" " + name + " " + stdoutColors.gray("[" + (message || "???") + "]")); + } console.log(); } - console.log("Time: " + (Date.now() - startTime) + " ms\n"); + console.log(`Time: ${(Date.now() - startTime)} ms\n`); if (!process.exitCode) { - console.log("[ " + colorsUtil.white("SUCCESS") + " ]"); + console.log("[ " + stdoutColors.white("SUCCESS") + " ]"); } } -asc.ready.then(() => { - - // Run tests in parallel if requested - if (args.parallel && coreCount > 1) { - if (cluster.isWorker) { - colorsUtil.supported = true; - process.on("message", msg => { - if (msg.cmd != "run") throw Error("invalid command: " + msg.cmd); - try { - runTest(msg.test); - } catch (e) { - process.send({ cmd: "done", failed: true, message: e.message }); - } +// Run tests in parallel if requested (except with coverage) +const isCoverage = process.env.NODE_V8_COVERAGE != null; +if (!isCoverage && args.parallel && coreCount > 2) { + if (cluster.isWorker) { + process.on("message", msg => { + if (msg.cmd != "run") throw Error("invalid command: " + JSON.stringify(msg)); + stdoutColors.enabled = !msg.noColors; + stderrColors.enabled = !msg.noColors; + runTest(msg.test).then(({ code, message }) => { + process.send({ code, message }); + }, err => { + process.send({ code: FAILURE, message: err.message }); }); - process.send({ cmd: "ready" }); - } else { - const tests = getTests(); - // const sizes = new Map(); - // tests.forEach(name => sizes.set(name, fs.statSync(path.join(basedir, name + ".ts")).size)); - // tests.sort((a, b) => sizes.get(b) - sizes.get(a)); - const workers = []; - const current = []; - const outputs = []; - let numWorkers = Math.min(coreCount - 1, tests.length); - console.log("Spawning " + numWorkers + " workers ..."); - cluster.settings.silent = true; - let index = 0; - for (let i = 0; i < numWorkers; ++i) { - let worker = cluster.fork(); - workers[i] = worker; - current[i] = null; + }); + process.send({ code: SUCCESS, message: null }); + } else { + const tests = getTests(); + const failedTests = new Map(); + const skippedTests = new Map(); + const workers = []; + const current = []; + const outputs = []; + let numWorkers = Math.min(coreCount - 1, tests.length); + console.log(`Spawning ${numWorkers} workers (assuming ${coreCount} cores, ${threadCount} threads)...\n`); + cluster.settings.silent = true; + let index = 0; + for (let i = 0; i < numWorkers; ++i) { + let worker = cluster.fork(); + workers[i] = worker; + current[i] = null; + outputs[i] = []; + worker.process.stdout.on("data", buf => { outputs[i].push(buf); }); + worker.process.stderr.on("data", buf => { outputs[i].push(buf); }); + worker.on("message", msg => { + const { code, message } = msg; + process.stdout.write(Buffer.concat(outputs[i]).toString()); + switch (code) { + case SUCCESS: break; + case FAILURE: failedTests.set(current[i], message); break; + case SKIPPED: skippedTests.set(current[i], message); break; + default: throw Error(`invalid code: ${code}`); + } + if (index >= tests.length) { + workers[i] = null; + worker.kill(); + return; + } + current[i] = tests[index++]; outputs[i] = []; - worker.process.stdout.on("data", buf => outputs[i].push(buf)); - worker.process.stderr.on("data", buf => outputs[i].push(buf)); - worker.on("message", msg => { - if (msg.cmd == "done") { - process.stdout.write(Buffer.concat(outputs[i]).toString()); - if (msg.failed) failedTests.add(current[i]); - if (msg.message) failedMessages.set(current[i], msg.message); - } else if (msg.cmd == "skipped") { - process.stdout.write(Buffer.concat(outputs[i]).toString()); - skippedTests.add(current[i]); - if (msg.message) skippedMessages.set(current[i], msg.message); - } else if (msg.cmd != "ready") { - throw Error("invalid command: " + msg.cmd); - } - if (index >= tests.length) { - workers[i] = null; - worker.kill(); - return; - } - current[i] = tests[index++]; - outputs[i] = []; - worker.send({ cmd: "run", test: current[i] }); - }); - worker.on("disconnect", () => { - if (workers[i]) throw Error("worker#" + i + " died unexpectedly"); - if (!--numWorkers) evaluateResult(); - }); - } + worker.send({ cmd: "run", test: current[i], noColors: !stdoutColors.enabled }); + }); + worker.on("disconnect", () => { + if (workers[i]) throw Error(`worker#${i} died unexpectedly`); + if (!--numWorkers) evaluateResult(failedTests, skippedTests); + }); } + } - // Otherwise run tests sequentially - } else { - getTests().forEach(runTest); - evaluateResult(); +// Otherwise run tests sequentially +} else { + let failedTests = new Map(); + let skippedTests = new Map(); + for (const test of getTests()) { + const { code, message } = await runTest(test); + switch (code) { + case SUCCESS: break; + case FAILURE: failedTests.set(test, message); break; + case SKIPPED: skippedTests.set(test, message); break; + default: new Error(`invalid code: ${code}`); + } } -}); + evaluateResult(failedTests, skippedTests); +} diff --git a/tests/compiler/.gitignore b/tests/compiler/.gitignore new file mode 100644 index 0000000000..ddf342489b --- /dev/null +++ b/tests/compiler/.gitignore @@ -0,0 +1 @@ +!node_modules/ diff --git a/tests/compiler/NonNullable.debug.wat b/tests/compiler/NonNullable.debug.wat new file mode 100644 index 0000000000..52a1e1e96d --- /dev/null +++ b/tests/compiler/NonNullable.debug.wat @@ -0,0 +1,436 @@ +(module + (type $0 (func)) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $NonNullable/z (mut i32) (i32.const 224)) + (global $~lib/memory/__data_end i32 (i32.const 364)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33132)) + (global $~lib/memory/__heap_base i32 (i32.const 33132)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00u\003\002\00\00\00\00\00\00\00") + (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00N\00o\00n\00N\00u\00l\00l\00a\00b\00l\00e\00.\00t\00s\00") + (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00") + (data $3 (i32.const 124) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00/\00S\00t\00r\00i\00n\00g\00>\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00z\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 236) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~start + call $start:NonNullable + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33152 + i32.const 33200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String.__ne (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $NonNullable/assertNonNull<~lib/string/String> (param $t i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.eqz + drop + local.get $t + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $NonNullable/safetyCheck<~lib/string/String|null> (param $t i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $t + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if + local.get $t + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $NonNullable/assertNonNull<~lib/string/String> + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:NonNullable + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 32 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 3 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 112 + i32.const 112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 144 + i32.const 144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $NonNullable/z + local.tee $0 + i32.store offset=4 + local.get $0 + if (result i32) + local.get $0 + else + i32.const 256 + i32.const 64 + i32.const 20 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $NonNullable/assertNonNull<~lib/string/String> + global.get $NonNullable/z + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $NonNullable/safetyCheck<~lib/string/String|null> + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/NonNullable.release.wat b/tests/compiler/NonNullable.release.wat new file mode 100644 index 0000000000..7f27ab78fa --- /dev/null +++ b/tests/compiler/NonNullable.release.wat @@ -0,0 +1,354 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34156)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\06\00\00\00u\003\002") + (data $1 (i32.const 1068) ",") + (data $1.1 (i32.const 1080) "\02\00\00\00\1c\00\00\00N\00o\00n\00N\00u\00l\00l\00a\00b\00l\00e\00.\00t\00s") + (data $2 (i32.const 1116) "\1c") + (data $2.1 (i32.const 1128) "\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") + (data $3 (i32.const 1148) "L") + (data $3.1 (i32.const 1160) "\02\00\00\002\00\00\00A\00r\00r\00a\00y\00<\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00/\00S\00t\00r\00i\00n\00g\00>") + (data $4 (i32.const 1228) "\1c") + (data $4.1 (i32.const 1240) "\02\00\00\00\02\00\00\00z") + (data $5 (i32.const 1260) "|") + (data $5.1 (i32.const 1272) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (export "memory" (memory $0)) + (start $~start) + (func $~start + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1388 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 3 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1136 + i32.const 1136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1168 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + call $NonNullable/assertNonNull<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1388 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + call $~lib/string/String.__ne + if + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + call $NonNullable/assertNonNull<~lib/string/String> + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34176 + i32.const 34224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1388 + i32.lt_s + if + i32.const 34176 + i32.const 34224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$3 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$3 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String.__ne (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1388 + i32.lt_s + if + i32.const 34176 + i32.const 34224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=4 + i32.const 1248 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $NonNullable/assertNonNull<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1388 + i32.lt_s + if + i32.const 34176 + i32.const 34224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/NonNullable.ts b/tests/compiler/NonNullable.ts new file mode 100644 index 0000000000..b06ddec286 --- /dev/null +++ b/tests/compiler/NonNullable.ts @@ -0,0 +1,21 @@ +type nullableString = string | null; + +assert(nameof>() == nameof()); +assert(nameof>() == nameof()); +assert(nameof>() == nameof()); + +function assertNonNull(t: T): void { + assert(!isNullable(), "T cannot be null"); + assert(t != null); +} + +function safetyCheck(t: A): void { + if (t != null) { + assertNonNull(>t); + } +} + +let z: nullableString = "z"; + +assertNonNull>(z!); +safetyCheck(z); diff --git a/tests/compiler/ReturnType.debug.wat b/tests/compiler/ReturnType.debug.wat new file mode 100644 index 0000000000..5d184fb53e --- /dev/null +++ b/tests/compiler/ReturnType.debug.wat @@ -0,0 +1,36 @@ +(module + (type $0 (func)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:ReturnType + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + i32.const 1 + drop + i32.const 8 + i32.const 8 + i32.eq + drop + i32.const 1 + drop + i32.const 16 + i32.const 16 + i32.eq + drop + ) + (func $~start + call $start:ReturnType + ) +) diff --git a/tests/compiler/ReturnType.json b/tests/compiler/ReturnType.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/ReturnType.json +++ b/tests/compiler/ReturnType.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/ReturnType.optimized.wat b/tests/compiler/ReturnType.release.wat similarity index 100% rename from tests/compiler/ReturnType.optimized.wat rename to tests/compiler/ReturnType.release.wat diff --git a/tests/compiler/ReturnType.untouched.wat b/tests/compiler/ReturnType.untouched.wat deleted file mode 100644 index d37e1f0a8a..0000000000 --- a/tests/compiler/ReturnType.untouched.wat +++ /dev/null @@ -1,32 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (start $~start) - (func $start:ReturnType - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - i32.const 1 - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 1 - drop - i32.const 16 - i32.const 16 - i32.eq - drop - ) - (func $~start - call $start:ReturnType - ) -) diff --git a/tests/compiler/abi.debug.wat b/tests/compiler/abi.debug.wat new file mode 100644 index 0000000000..ea07555cab --- /dev/null +++ b/tests/compiler/abi.debug.wat @@ -0,0 +1,193 @@ +(module + (type $0 (func (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $abi/condition (mut i32) (i32.const 0)) + (global $abi/y (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 44)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32812)) + (global $~lib/memory/__heap_base i32 (i32.const 32812)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "exported" (func $abi/exported)) + (export "exportedExported" (func $abi/exportedExported)) + (export "exportedInternal" (func $abi/exportedInternal)) + (export "memory" (memory $0)) + (start $~start) + (func $abi/internal (result i32) + i32.const 128 + return + ) + (func $start:abi + (local $x i32) + (local $x|1 i32) + (local $x|2 i32) + (local $b i32) + (local $x|4 i32) + call $abi/internal + drop + i32.const 0 + i32.eqz + global.set $abi/condition + i32.const 256 + local.set $x + local.get $x + i32.extend8_s + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 256 + local.set $x|1 + global.get $abi/condition + if + local.get $x|1 + i32.extend8_s + i32.const 2 + i32.div_s + local.set $x|1 + else + local.get $x|1 + i32.extend8_s + i32.const 2 + i32.div_s + local.set $x|1 + end + local.get $x|1 + i32.extend8_s + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 256 + local.set $x|2 + global.get $abi/condition + if + local.get $x|2 + i32.extend8_s + i32.const 24 + i32.const 7 + i32.and + i32.shr_s + local.set $x|2 + else + local.get $x|2 + i32.const 127 + i32.and + local.set $x|2 + end + local.get $x|2 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 256 + i32.extend8_s + global.set $abi/y + global.get $abi/y + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.ctz + local.set $b + local.get $b + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.clz + local.set $b + local.get $b + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.ctz + local.set $x|4 + local.get $x|4 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 77 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.clz + local.set $x|4 + local.get $x|4 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 79 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $abi/exported (result i32) + i32.const 128 + i32.extend8_s + return + ) + (func $abi/exportedExported (result i32) + call $abi/exported + return + ) + (func $abi/exportedInternal (result i32) + call $abi/internal + i32.extend8_s + return + ) + (func $~start + call $start:abi + ) +) diff --git a/tests/compiler/abi.json b/tests/compiler/abi.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/abi.json +++ b/tests/compiler/abi.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/abi.optimized.wat b/tests/compiler/abi.optimized.wat deleted file mode 100644 index 5898a8f83b..0000000000 --- a/tests/compiler/abi.optimized.wat +++ /dev/null @@ -1,12 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s") - (export "memory" (memory $0)) - (export "exported" (func $abi/exported)) - (export "exportedExported" (func $abi/exported)) - (export "exportedInternal" (func $abi/exported)) - (func $abi/exported (result i32) - i32.const -128 - ) -) diff --git a/tests/compiler/abi.release.wat b/tests/compiler/abi.release.wat new file mode 100644 index 0000000000..5320131fcb --- /dev/null +++ b/tests/compiler/abi.release.wat @@ -0,0 +1,13 @@ +(module + (type $0 (func (result i32))) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s") + (export "exported" (func $abi/exported)) + (export "exportedExported" (func $abi/exported)) + (export "exportedInternal" (func $abi/exported)) + (export "memory" (memory $0)) + (func $abi/exported (result i32) + i32.const -128 + ) +) diff --git a/tests/compiler/abi.untouched.wat b/tests/compiler/abi.untouched.wat deleted file mode 100644 index f540d255b1..0000000000 --- a/tests/compiler/abi.untouched.wat +++ /dev/null @@ -1,204 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s\00") - (table $0 1 funcref) - (global $abi/condition (mut i32) (i32.const 0)) - (global $abi/y (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "exported" (func $abi/exported)) - (export "exportedExported" (func $abi/exportedExported)) - (export "exportedInternal" (func $abi/exportedInternal)) - (start $~start) - (func $abi/internal (result i32) - i32.const 128 - ) - (func $start:abi - (local $0 i32) - (local $1 i32) - call $abi/internal - drop - i32.const 0 - i32.eqz - global.set $abi/condition - i32.const 256 - local.set $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 256 - local.set $0 - global.get $abi/condition - if - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.div_s - local.set $0 - else - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.div_s - local.set $0 - end - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 256 - local.set $0 - global.get $abi/condition - if - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 24 - i32.shr_s - local.set $0 - else - local.get $0 - i32.const 127 - i32.and - local.set $0 - end - local.get $0 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 256 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - global.set $abi/y - global.get $abi/y - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.ctz - local.set $0 - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.clz - local.set $0 - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 74 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.ctz - local.set $1 - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 77 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.clz - local.set $1 - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 79 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $abi/exported (result i32) - i32.const 128 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - ) - (func $abi/exportedExported (result i32) - call $abi/exported - ) - (func $abi/exportedInternal (result i32) - call $abi/internal - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - ) - (func $~start - call $start:abi - ) -) diff --git a/tests/compiler/asc-constants.debug.wat b/tests/compiler/asc-constants.debug.wat new file mode 100644 index 0000000000..6a9e9e94c0 --- /dev/null +++ b/tests/compiler/asc-constants.debug.wat @@ -0,0 +1,85 @@ +(module + (type $0 (func)) + (global $~lib/native/ASC_TARGET i32 (i32.const 1)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/native/ASC_MEMORY_BASE i32 (i32.const 0)) + (global $~lib/native/ASC_OPTIMIZE_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_SIGN_EXTENSION i32 (i32.const 1)) + (global $~lib/native/ASC_FEATURE_MUTABLE_GLOBALS i32 (i32.const 1)) + (global $~lib/native/ASC_FEATURE_NONTRAPPING_F2I i32 (i32.const 1)) + (global $~lib/native/ASC_FEATURE_BULK_MEMORY i32 (i32.const 1)) + (global $~lib/native/ASC_FEATURE_SIMD i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_THREADS i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_EXCEPTION_HANDLING i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_TAIL_CALLS i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_REFERENCE_TYPES i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_MULTI_VALUE i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_GC i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_MEMORY64 i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_RELAXED_SIMD i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_EXTENDED_CONST i32 (i32.const 0)) + (global $~lib/native/ASC_FEATURE_STRINGREF i32 (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:asc-constants + i32.const 1 + drop + i32.const 2 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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.const 0 + 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 + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + ) + (func $~start + call $start:asc-constants + ) +) diff --git a/tests/compiler/asc-constants.json b/tests/compiler/asc-constants.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/asc-constants.json +++ b/tests/compiler/asc-constants.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/asc-constants.optimized.wat b/tests/compiler/asc-constants.release.wat similarity index 100% rename from tests/compiler/asc-constants.optimized.wat rename to tests/compiler/asc-constants.release.wat diff --git a/tests/compiler/asc-constants.ts b/tests/compiler/asc-constants.ts index c8b2b59eba..74c418395f 100644 --- a/tests/compiler/asc-constants.ts +++ b/tests/compiler/asc-constants.ts @@ -1,4 +1,5 @@ ASC_TARGET; +ASC_RUNTIME; ASC_NO_ASSERT; ASC_MEMORY_BASE; ASC_OPTIMIZE_LEVEL; @@ -14,3 +15,13 @@ ASC_FEATURE_EXCEPTION_HANDLING; ASC_FEATURE_TAIL_CALLS; ASC_FEATURE_REFERENCE_TYPES; ASC_FEATURE_MULTI_VALUE; +ASC_FEATURE_GC; +ASC_FEATURE_MEMORY64; +ASC_FEATURE_RELAXED_SIMD; +ASC_FEATURE_EXTENDED_CONST; +ASC_FEATURE_STRINGREF; + +// versions vary between builds +isDefined(ASC_VERSION_MAJOR); +isDefined(ASC_VERSION_MINOR); +isDefined(ASC_VERSION_PATCH); diff --git a/tests/compiler/asc-constants.untouched.wat b/tests/compiler/asc-constants.untouched.wat deleted file mode 100644 index 0f74c055b8..0000000000 --- a/tests/compiler/asc-constants.untouched.wat +++ /dev/null @@ -1,57 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (global $~lib/ASC_TARGET i32 (i32.const 1)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) - (global $~lib/ASC_MEMORY_BASE i32 (i32.const 0)) - (global $~lib/ASC_OPTIMIZE_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_SIGN_EXTENSION i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_MUTABLE_GLOBALS i32 (i32.const 1)) - (global $~lib/ASC_FEATURE_NONTRAPPING_F2I i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_BULK_MEMORY i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_THREADS i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_EXCEPTION_HANDLING i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_TAIL_CALLS i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_REFERENCE_TYPES i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_MULTI_VALUE i32 (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $start:asc-constants - i32.const 1 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - 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 - i32.const 0 - drop - i32.const 0 - drop - ) - (func $~start - call $start:asc-constants - ) -) diff --git a/tests/compiler/assert-nonnull.debug.wat b/tests/compiler/assert-nonnull.debug.wat new file mode 100644 index 0000000000..1edc6edeed --- /dev/null +++ b/tests/compiler/assert-nonnull.debug.wat @@ -0,0 +1,1017 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32 i32 i32))) + (type $4 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 444)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33212)) + (global $~lib/memory/__heap_base i32 (i32.const 33212)) + (memory $0 1) + (data $0 (i32.const 12) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $4 (i32.const 316) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "testVar" (func $export:assert-nonnull/testVar)) + (export "testObj" (func $export:assert-nonnull/testObj)) + (export "testProp" (func $export:assert-nonnull/testProp)) + (export "testArr" (func $export:assert-nonnull/testArr)) + (export "testElem" (func $export:assert-nonnull/testElem)) + (export "testAll" (func $export:assert-nonnull/testAll)) + (export "testAll2" (func $export:assert-nonnull/testAll2)) + (export "testFn" (func $export:assert-nonnull/testFn)) + (export "testFn2" (func $export:assert-nonnull/testFn2)) + (export "testRet" (func $export:assert-nonnull/testRet)) + (export "testObjFn" (func $export:assert-nonnull/testObjFn)) + (export "testObjRet" (func $export:assert-nonnull/testObjRet)) + (func $assert-nonnull/Foo#get:bar (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $assert-nonnull/Foo#get:baz (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33232 + i32.const 33280 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $assert-nonnull/testObj (param $foo i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $foo + local.tee $1 + i32.store offset=4 + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 160 + i32.const 11 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $assert-nonnull/Foo#get:bar + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $assert-nonnull/testProp (param $foo i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $foo + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $assert-nonnull/Foo#get:bar + local.tee $1 + i32.store offset=4 + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 160 + i32.const 15 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 288 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 336 + i32.const 288 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $assert-nonnull/testArr (param $foo i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $foo + local.tee $1 + i32.store offset=4 + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 160 + i32.const 19 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 288 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 1 + i32.eqz + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $assert-nonnull/testElem (param $foo i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $foo + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + local.tee $1 + i32.store offset=4 + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 160 + i32.const 23 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $assert-nonnull/testAll (param $foo i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $foo + local.tee $1 + i32.store offset=8 + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 160 + i32.const 27 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/array/Array#__get + local.tee $2 + i32.store offset=12 + local.get $2 + if (result i32) + local.get $2 + else + i32.const 32 + i32.const 160 + i32.const 27 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $assert-nonnull/Foo#get:bar + local.tee $3 + i32.store offset=16 + local.get $3 + if (result i32) + local.get $3 + else + i32.const 32 + i32.const 160 + i32.const 27 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $assert-nonnull/testAll2 (param $foo i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $foo + local.tee $1 + i32.store offset=8 + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 160 + i32.const 31 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/array/Array#__get + local.tee $2 + i32.store offset=12 + local.get $2 + if (result i32) + local.get $2 + else + i32.const 32 + i32.const 160 + i32.const 31 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $assert-nonnull/Foo#get:bar + local.tee $3 + i32.store offset=16 + local.get $3 + if (result i32) + local.get $3 + else + i32.const 32 + i32.const 160 + i32.const 31 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $assert-nonnull/testObjFn (param $foo i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $foo + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $assert-nonnull/Foo#get:baz + local.tee $1 + i32.store offset=4 + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 160 + i32.const 48 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + i32.load + call_indirect (type $1) + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $assert-nonnull/testObjRet (param $foo i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $foo + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $assert-nonnull/Foo#get:baz + local.tee $1 + i32.store offset=4 + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 160 + i32.const 52 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + i32.load + call_indirect (type $1) + local.tee $2 + i32.store offset=8 + local.get $2 + if (result i32) + local.get $2 + else + i32.const 32 + i32.const 160 + i32.const 52 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $assert-nonnull/testVar (param $n i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $n + local.tee $1 + i32.store + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 160 + i32.const 2 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $assert-nonnull/testFn (param $fn i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $1 + i32.store + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 160 + i32.const 35 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + i32.load + call_indirect (type $1) + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $assert-nonnull/testFn2 (param $fn i32) (result i32) + (local $1 i32) + (local $fn2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $1 + i32.store + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 160 + i32.const 39 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.tee $fn2 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + local.get $fn2 + i32.load + call_indirect (type $1) + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $assert-nonnull/testRet (param $fn i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $1 + i32.store + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 160 + i32.const 44 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + i32.load + call_indirect (type $1) + local.tee $2 + i32.store offset=4 + local.get $2 + if (result i32) + local.get $2 + else + i32.const 32 + i32.const 160 + i32.const 44 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $export:assert-nonnull/testVar (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testVar + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:assert-nonnull/testObj (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testObj + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:assert-nonnull/testProp (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testProp + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:assert-nonnull/testArr (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testArr + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:assert-nonnull/testElem (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testElem + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:assert-nonnull/testAll (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testAll + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:assert-nonnull/testAll2 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testAll2 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:assert-nonnull/testFn (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testFn + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:assert-nonnull/testFn2 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testFn2 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:assert-nonnull/testRet (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testRet + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:assert-nonnull/testObjFn (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testObjFn + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:assert-nonnull/testObjRet (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testObjRet + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/assert-nonnull.json b/tests/compiler/assert-nonnull.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/assert-nonnull.json +++ b/tests/compiler/assert-nonnull.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat deleted file mode 100644 index cf2ed16137..0000000000 --- a/tests/compiler/assert-nonnull.optimized.wat +++ /dev/null @@ -1,251 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") - (data (i32.const 1072) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s") - (data (i32.const 1136) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1200) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1248) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "testVar" (func $assert-nonnull/testVar)) - (export "testObj" (func $assert-nonnull/testObj)) - (export "testProp" (func $assert-nonnull/testProp)) - (export "testArr" (func $assert-nonnull/testArr)) - (export "testElem" (func $assert-nonnull/testElem)) - (export "testAll" (func $assert-nonnull/testAll)) - (export "testAll2" (func $assert-nonnull/testAll2)) - (export "testFn" (func $assert-nonnull/testFn)) - (export "testFn2" (func $assert-nonnull/testFn2)) - (export "testRet" (func $assert-nonnull/testRet)) - (export "testObjFn" (func $assert-nonnull/testObjFn)) - (export "testObjRet" (func $assert-nonnull/testObjRet)) - (func $assert-nonnull/testVar (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 1040 - i32.const 1088 - i32.const 2 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - local.get $0 - ) - (func $assert-nonnull/testObj (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 1040 - i32.const 1088 - i32.const 11 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - ) - (func $assert-nonnull/testProp (param $0 i32) (result i32) - local.get $0 - i32.load - local.tee $0 - i32.eqz - if - i32.const 1040 - i32.const 1088 - i32.const 15 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - local.get $0 - ) - (func $assert-nonnull/testArr (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 1040 - i32.const 1088 - i32.const 19 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1152 - i32.const 1216 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load - local.tee $0 - i32.eqz - if - i32.const 1264 - i32.const 1216 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (result i32) - i32.const 0 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1152 - i32.const 1216 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load - ) - (func $assert-nonnull/testElem (param $0 i32) (result i32) - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - i32.eqz - if - i32.const 1040 - i32.const 1088 - i32.const 23 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - local.get $0 - ) - (func $assert-nonnull/testAll (param $0 i32) (result i32) - (local $1 i32) - block $folding-inner0 - local.get $0 - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - local.get $0 - i32.eqz - br_if $folding-inner0 - i32.load - local.tee $0 - i32.eqz - br_if $folding-inner0 - local.get $0 - return - end - i32.const 1040 - i32.const 1088 - i32.const 27 - i32.const 10 - call $~lib/builtins/abort - unreachable - ) - (func $assert-nonnull/testAll2 (param $0 i32) (result i32) - (local $1 i32) - block $folding-inner0 - local.get $0 - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - local.get $0 - i32.eqz - br_if $folding-inner0 - i32.load - local.tee $0 - i32.eqz - br_if $folding-inner0 - local.get $0 - return - end - i32.const 1040 - i32.const 1088 - i32.const 31 - i32.const 10 - call $~lib/builtins/abort - unreachable - ) - (func $assert-nonnull/testFn (param $0 i32) (result i32) - local.get $0 - i32.load - call_indirect (type $none_=>_i32) - ) - (func $assert-nonnull/testFn2 (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 1040 - i32.const 1088 - i32.const 39 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - call_indirect (type $none_=>_i32) - ) - (func $assert-nonnull/testRet (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load - call_indirect (type $none_=>_i32) - local.tee $1 - local.get $1 - i32.eqz - if - i32.const 1040 - i32.const 1088 - i32.const 44 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - ) - (func $assert-nonnull/testObjFn (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - i32.load - call_indirect (type $none_=>_i32) - ) - (func $assert-nonnull/testObjRet (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.load - call_indirect (type $none_=>_i32) - local.tee $1 - local.get $1 - i32.eqz - if - i32.const 1040 - i32.const 1088 - i32.const 52 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/assert-nonnull.release.wat b/tests/compiler/assert-nonnull.release.wat new file mode 100644 index 0000000000..67f4405bc2 --- /dev/null +++ b/tests/compiler/assert-nonnull.release.wat @@ -0,0 +1,844 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (result i32))) + (type $2 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34236)) + (memory $0 1) + (data $0 (i32.const 1036) "|") + (data $0.1 (i32.const 1048) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (data $1 (i32.const 1164) "<") + (data $1.1 (i32.const 1176) "\02\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s") + (data $2 (i32.const 1228) "<") + (data $2.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $3 (i32.const 1292) ",") + (data $3.1 (i32.const 1304) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $4 (i32.const 1340) "|") + (data $4.1 (i32.const 1352) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (table $0 1 1 funcref) + (export "memory" (memory $0)) + (export "testVar" (func $export:assert-nonnull/testVar)) + (export "testObj" (func $export:assert-nonnull/testObj)) + (export "testProp" (func $export:assert-nonnull/testProp)) + (export "testArr" (func $export:assert-nonnull/testArr)) + (export "testElem" (func $export:assert-nonnull/testElem)) + (export "testAll" (func $export:assert-nonnull/testAll)) + (export "testAll2" (func $export:assert-nonnull/testAll2)) + (export "testFn" (func $export:assert-nonnull/testFn)) + (export "testFn2" (func $export:assert-nonnull/testFn2)) + (export "testRet" (func $export:assert-nonnull/testRet)) + (export "testObjFn" (func $export:assert-nonnull/testObjFn)) + (export "testObjRet" (func $export:assert-nonnull/testObjRet)) + (func $~lib/array/Array#__get (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + if + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eqz + if + i32.const 1248 + i32.const 1312 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $export:assert-nonnull/testVar (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1184 + i32.const 2 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testObj (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1184 + i32.const 11 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testProp (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1184 + i32.const 15 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testArr (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1184 + i32.const 19 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eqz + if + i32.const 1248 + i32.const 1312 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1360 + i32.const 1312 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testElem (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1184 + i32.const 23 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testAll (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=12 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.tee $0 + i32.store offset=16 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + i32.const 1184 + i32.const 27 + i32.const 10 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testAll2 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=12 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.tee $0 + i32.store offset=16 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + i32.const 1184 + i32.const 31 + i32.const 10 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testFn (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1184 + i32.const 35 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + call_indirect (type $1) + unreachable + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testFn2 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1184 + i32.const 39 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + call_indirect (type $1) + unreachable + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testRet (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.eqz + br_if $folding-inner1 + local.get $0 + i32.load + call_indirect (type $1) + unreachable + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + i32.const 1184 + i32.const 44 + i32.const 10 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testObjFn (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1056 + i32.const 1184 + i32.const 48 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + call_indirect (type $1) + unreachable + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testObjRet (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner1 + local.get $0 + i32.load + call_indirect (type $1) + unreachable + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + i32.const 1184 + i32.const 52 + i32.const 10 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/assert-nonnull.ts b/tests/compiler/assert-nonnull.ts index b50dcb9a9b..33d162c751 100644 --- a/tests/compiler/assert-nonnull.ts +++ b/tests/compiler/assert-nonnull.ts @@ -36,7 +36,7 @@ export function testFn(fn: (() => Foo | null) | null): Foo | null { } export function testFn2(fn: (() => Foo | null) | null): Foo | null { - var fn2 = fn!; + let fn2 = fn!; return fn2(); } diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat deleted file mode 100644 index fbed92d254..0000000000 --- a/tests/compiler/assert-nonnull.untouched.wat +++ /dev/null @@ -1,471 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result 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))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") - (data (i32.const 64) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s\00") - (data (i32.const 128) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 192) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 240) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (table $0 1 funcref) - (global $~argumentsLength (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "testVar" (func $assert-nonnull/testVar)) - (export "testObj" (func $assert-nonnull/testObj)) - (export "testProp" (func $assert-nonnull/testProp)) - (export "testArr" (func $assert-nonnull/testArr)) - (export "testElem" (func $assert-nonnull/testElem)) - (export "testAll" (func $assert-nonnull/testAll)) - (export "testAll2" (func $assert-nonnull/testAll2)) - (export "testFn" (func $assert-nonnull/testFn)) - (export "testFn2" (func $assert-nonnull/testFn2)) - (export "testRet" (func $assert-nonnull/testRet)) - (export "testObjFn" (func $assert-nonnull/testObjFn)) - (export "testObjRet" (func $assert-nonnull/testObjRet)) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $assert-nonnull/testVar (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 32 - i32.const 80 - i32.const 2 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $assert-nonnull/testObj (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 32 - i32.const 80 - i32.const 11 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $assert-nonnull/testProp (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.load - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 32 - i32.const 80 - i32.const 15 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 144 - i32.const 208 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 256 - i32.const 208 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - ) - (func $assert-nonnull/testArr (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 32 - i32.const 80 - i32.const 19 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/array/Array#__get - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 144 - i32.const 208 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 1 - drop - i32.const 1 - i32.eqz - drop - local.get $2 - ) - (func $assert-nonnull/testElem (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 32 - i32.const 80 - i32.const 23 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $assert-nonnull/testAll (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 32 - i32.const 80 - i32.const 27 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/array/Array#__get - local.tee $1 - local.tee $2 - if (result i32) - local.get $2 - else - i32.const 32 - i32.const 80 - i32.const 27 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.load - local.tee $2 - if (result i32) - local.get $2 - else - i32.const 32 - i32.const 80 - i32.const 27 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $assert-nonnull/testAll2 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 32 - i32.const 80 - i32.const 31 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/array/Array#__get - local.tee $1 - local.tee $2 - if (result i32) - local.get $2 - else - i32.const 32 - i32.const 80 - i32.const 31 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.load - local.tee $2 - if (result i32) - local.get $2 - else - i32.const 32 - i32.const 80 - i32.const 31 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $assert-nonnull/testFn (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.load - call_indirect (type $none_=>_i32) - local.tee $1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $assert-nonnull/testFn2 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 32 - i32.const 80 - i32.const 39 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/stub/__retain - local.set $2 - i32.const 0 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $none_=>_i32) - local.tee $1 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $assert-nonnull/testRet (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.load - call_indirect (type $none_=>_i32) - local.tee $1 - local.tee $2 - if (result i32) - local.get $2 - else - i32.const 32 - i32.const 80 - i32.const 44 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $assert-nonnull/testObjFn (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.load offset=4 - i32.load - call_indirect (type $none_=>_i32) - local.tee $1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $assert-nonnull/testObjRet (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.load offset=4 - i32.load - call_indirect (type $none_=>_i32) - local.tee $1 - local.tee $2 - if (result i32) - local.get $2 - else - i32.const 32 - i32.const 80 - i32.const 52 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) -) diff --git a/tests/compiler/assert.debug.wat b/tests/compiler/assert.debug.wat new file mode 100644 index 0000000000..cbdde5b983 --- /dev/null +++ b/tests/compiler/assert.debug.wat @@ -0,0 +1,39 @@ +(module + (type $0 (func)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:assert + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + i32.const 0 + i32.gt_u + drop + f64.const 0.5 + drop + f64.const 0.5 + f64.const 0.4 + f64.gt + drop + i64.const 4294967296 + drop + i64.const 4294967296 + i64.const 1 + i64.gt_s + drop + i32.const 1 + i32.eqz + drop + ) + (func $~start + call $start:assert + ) +) diff --git a/tests/compiler/assert.json b/tests/compiler/assert.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/assert.json +++ b/tests/compiler/assert.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/assert.optimized.wat b/tests/compiler/assert.release.wat similarity index 100% rename from tests/compiler/assert.optimized.wat rename to tests/compiler/assert.release.wat diff --git a/tests/compiler/assert.untouched.wat b/tests/compiler/assert.untouched.wat deleted file mode 100644 index e58de52514..0000000000 --- a/tests/compiler/assert.untouched.wat +++ /dev/null @@ -1,35 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (start $~start) - (func $start:assert - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - i32.const 0 - i32.gt_u - drop - f64.const 0.5 - drop - f64.const 0.5 - f64.const 0.4 - f64.gt - drop - i64.const 4294967296 - drop - i64.const 4294967296 - i64.const 1 - i64.gt_s - drop - i32.const 1 - i32.eqz - drop - ) - (func $~start - call $start:assert - ) -) diff --git a/tests/compiler/assignment-chain.debug.wat b/tests/compiler/assignment-chain.debug.wat new file mode 100644 index 0000000000..340796c987 --- /dev/null +++ b/tests/compiler/assignment-chain.debug.wat @@ -0,0 +1,2732 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i64))) + (type $7 (func (param i32 f64))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $assignment-chain/C._setter_cnt (mut i32) (i32.const 0)) + (global $assignment-chain/C._y (mut f64) (f64.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 480)) + (global $~lib/memory/__data_end i32 (i32.const 508)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33276)) + (global $~lib/memory/__heap_base i32 (i32.const 33276)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00a\00s\00s\00i\00g\00n\00m\00e\00n\00t\00-\00c\00h\00a\00i\00n\00.\00t\00s\00\00\00\00\00\00\00") + (data $9 (i32.const 480) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "normal_assignment_chain" (func $assignment-chain/normal_assignment_chain)) + (export "setter_assignment_chain" (func $assignment-chain/setter_assignment_chain)) + (export "static_setter_assignment_chain" (func $assignment-chain/static_setter_assignment_chain)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $assignment-chain/A#set:x (param $this i32) (param $x i64) + local.get $this + local.get $x + i64.store + ) + (func $assignment-chain/A#set:y (param $this i32) (param $y i64) + local.get $this + local.get $y + i64.store offset=8 + ) + (func $assignment-chain/B#set:_setter_cnt (param $this i32) (param $_setter_cnt i32) + local.get $this + local.get $_setter_cnt + i32.store + ) + (func $assignment-chain/B#set:_getter_cnt (param $this i32) (param $_getter_cnt i32) + local.get $this + local.get $_getter_cnt + i32.store offset=4 + ) + (func $assignment-chain/B#set:_y (param $this i32) (param $_y f64) + local.get $this + local.get $_y + f64.store offset=8 + ) + (func $assignment-chain/B#get:_setter_cnt (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $assignment-chain/B#get:_getter_cnt (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $assignment-chain/C.set:y (param $z f64) + global.get $assignment-chain/C._setter_cnt + i32.const 1 + i32.add + global.set $assignment-chain/C._setter_cnt + local.get $z + global.set $assignment-chain/C._y + ) + (func $assignment-chain/static_setter_assignment_chain + (local $0 f64) + f64.const 1 + local.tee $0 + call $assignment-chain/C.set:y + local.get $0 + call $assignment-chain/C.set:y + global.get $assignment-chain/C._setter_cnt + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:assignment-chain + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $assignment-chain/normal_assignment_chain + call $assignment-chain/setter_assignment_chain + call $assignment-chain/static_setter_assignment_chain + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $assignment-chain/B + block $assignment-chain/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $assignment-chain/A $assignment-chain/B $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:assignment-chain + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33296 + i32.const 33344 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $assignment-chain/A#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i64.const 0 + call $assignment-chain/A#set:x + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i64.const 0 + call $assignment-chain/A#set:y + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $assignment-chain/normal_assignment_chain + (local $x i32) + (local $cnt i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $assignment-chain/A#constructor + local.tee $x + i32.store + i32.const 0 + local.set $cnt + local.get $x + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $x + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $cnt + local.tee $2 + i32.const 1 + i32.add + local.set $cnt + local.get $2 + i64.extend_i32_s + local.tee $3 + call $assignment-chain/A#set:y + local.get $3 + call $assignment-chain/A#set:x + local.get $cnt + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $assignment-chain/B#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $assignment-chain/B#set:_setter_cnt + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $assignment-chain/B#set:_getter_cnt + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + f64.const 0 + call $assignment-chain/B#set:_y + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $assignment-chain/B#set:y (param $this i32) (param $z f64) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $assignment-chain/B#get:_setter_cnt + i32.const 1 + i32.add + call $assignment-chain/B#set:_setter_cnt + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $z + call $assignment-chain/B#set:_y + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $assignment-chain/setter_assignment_chain + (local $x i32) + (local $1 f64) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $assignment-chain/B#constructor + local.tee $x + i32.store + local.get $x + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $x + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + f64.const 1 + local.tee $1 + call $assignment-chain/B#set:y + local.get $1 + call $assignment-chain/B#set:y + local.get $x + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $assignment-chain/B#get:_setter_cnt + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $x + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $assignment-chain/B#get:_getter_cnt + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/assignment-chain.json b/tests/compiler/assignment-chain.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/assignment-chain.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/assignment-chain.release.wat b/tests/compiler/assignment-chain.release.wat new file mode 100644 index 0000000000..0200dad357 --- /dev/null +++ b/tests/compiler/assignment-chain.release.wat @@ -0,0 +1,1898 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $assignment-chain/C._setter_cnt (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34300)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "<") + (data $8.1 (i32.const 1448) "\02\00\00\00&\00\00\00a\00s\00s\00i\00g\00n\00m\00e\00n\00t\00-\00c\00h\00a\00i\00n\00.\00t\00s") + (data $9 (i32.const 1504) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (export "normal_assignment_chain" (func $assignment-chain/normal_assignment_chain)) + (export "setter_assignment_chain" (func $assignment-chain/setter_assignment_chain)) + (export "static_setter_assignment_chain" (func $assignment-chain/static_setter_assignment_chain)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$129 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34300 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$129 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1504 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34304 + i32.const 0 + i32.store + i32.const 35872 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34304 + i32.const 35876 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34304 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34300 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34300 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34300 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $assignment-chain/static_setter_assignment_chain + global.get $assignment-chain/C._setter_cnt + i32.const 1 + i32.add + global.set $assignment-chain/C._setter_cnt + global.get $assignment-chain/C._setter_cnt + i32.const 1 + i32.add + global.set $assignment-chain/C._setter_cnt + global.get $assignment-chain/C._setter_cnt + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $assignment-chain/B + block $assignment-chain/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $assignment-chain/A $assignment-chain/B $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34300 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $assignment-chain/normal_assignment_chain + call $assignment-chain/setter_assignment_chain + call $assignment-chain/static_setter_assignment_chain + ) + (func $assignment-chain/normal_assignment_chain + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $assignment-chain/B#set:y (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + if + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + f64.const 1 + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $assignment-chain/setter_assignment_chain + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + f64.const 0 + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $assignment-chain/B#set:y + local.get $1 + call $assignment-chain/B#set:y + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + if + i32.const 0 + i32.const 1456 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + if + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/assignment-chain.ts b/tests/compiler/assignment-chain.ts new file mode 100644 index 0000000000..94fde68263 --- /dev/null +++ b/tests/compiler/assignment-chain.ts @@ -0,0 +1,47 @@ +class A { + x: i64 = 0; + y: i64 = 0; +} + +export function normal_assignment_chain(): void { + let x = new A(); + let cnt = 0; + x.x = x.y = cnt++; + assert(cnt == 1); // `cnt++` should be executed only once +} +normal_assignment_chain(); + +class B { + _setter_cnt: i32 = 0; + _getter_cnt: i32 = 0; + _y: f64 = 0.0; + set y(z: f64) { + this._setter_cnt += 1; + this._y = z; + } + get y(): f64 { + this._getter_cnt += 1; + return this._y; + } +} +export function setter_assignment_chain(): void { + let x = new B(); + x.y = x.y = 1; + assert(x._setter_cnt == 2); + assert(x._getter_cnt == 0); // should not use getter method +} +setter_assignment_chain(); + +class C { + static _setter_cnt: i32 = 0; + static _y: f64 = 0.0; + static set y(z: f64) { + C._setter_cnt += 1; + C._y = z; + } +} +export function static_setter_assignment_chain(): void { + C.y = C.y = 1; + assert(C._setter_cnt == 2); +} +static_setter_assignment_chain(); \ No newline at end of file diff --git a/tests/compiler/avoid-resolve-loop.json b/tests/compiler/avoid-resolve-loop.json new file mode 100644 index 0000000000..9499b5939d --- /dev/null +++ b/tests/compiler/avoid-resolve-loop.json @@ -0,0 +1,10 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "AS225: Expression cannot be represented by a type.", + "TS2448: Variable 'avoid-resolve-loop/e' used before its declaration.", + "TS2322: Type 'void' is not assignable to type ''.", + "AS225: Expression cannot be represented by a type." + ] +} \ No newline at end of file diff --git a/tests/compiler/avoid-resolve-loop.ts b/tests/compiler/avoid-resolve-loop.ts new file mode 100644 index 0000000000..1c0d726068 --- /dev/null +++ b/tests/compiler/avoid-resolve-loop.ts @@ -0,0 +1,4 @@ +let a = a[0]; + +let e = e; +typeof [e]; \ No newline at end of file diff --git a/tests/compiler/basic-nullable.json b/tests/compiler/basic-nullable.json index a457dec7bf..8a239581d5 100644 --- a/tests/compiler/basic-nullable.json +++ b/tests/compiler/basic-nullable.json @@ -1,9 +1,8 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "AS204: Type 'i32' cannot be nullable.", "EOF" ] -} \ No newline at end of file +} diff --git a/tests/compiler/bigint-integration.debug.wat b/tests/compiler/bigint-integration.debug.wat new file mode 100644 index 0000000000..467f67dec1 --- /dev/null +++ b/tests/compiler/bigint-integration.debug.wat @@ -0,0 +1,60 @@ +(module + (type $0 (func (result i64))) + (type $1 (func)) + (type $2 (func (param i32 i32 i32 i32))) + (import "bigint-integration" "externalValue" (global $bigint-integration/externalValue i64)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "bigint-integration" "getExternalValue" (func $bigint-integration/getExternalValue (result i64))) + (global $bigint-integration/internalValue i64 (i64.const 9007199254740991)) + (global $~lib/memory/__data_end i32 (i32.const 76)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32844)) + (global $~lib/memory/__heap_base i32 (i32.const 32844)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "internalValue" (global $bigint-integration/internalValue)) + (export "getInternalValue" (func $bigint-integration/getInternalValue)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $start:bigint-integration + global.get $bigint-integration/externalValue + i64.const 9007199254740991 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $bigint-integration/getExternalValue + global.get $bigint-integration/externalValue + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $bigint-integration/getInternalValue (result i64) + global.get $bigint-integration/internalValue + return + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:bigint-integration + ) +) diff --git a/tests/compiler/bigint-integration.js b/tests/compiler/bigint-integration.js new file mode 100644 index 0000000000..67be951133 --- /dev/null +++ b/tests/compiler/bigint-integration.js @@ -0,0 +1,16 @@ +export function preInstantiate(imports, exports) { + const externalValue = 9007199254740991n; + imports["bigint-integration"] = { + externalValue, + getExternalValue: function() { + return externalValue; + }, + }; +} + +export function postInstantiate(instance) { + const exports = instance.exports; + const internalValue = exports.internalValue; + if (internalValue != 9007199254740991n) throw Error("unexpected value"); + if (exports.getInternalValue() != internalValue) throw Error("unexpected value"); +} diff --git a/tests/compiler/bigint-integration.json b/tests/compiler/bigint-integration.json new file mode 100644 index 0000000000..d89aa6d3b8 --- /dev/null +++ b/tests/compiler/bigint-integration.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--exportStart", "_start" + ] +} diff --git a/tests/compiler/bigint-integration.release.wat b/tests/compiler/bigint-integration.release.wat new file mode 100644 index 0000000000..65f0bbea0b --- /dev/null +++ b/tests/compiler/bigint-integration.release.wat @@ -0,0 +1,50 @@ +(module + (type $0 (func (result i64))) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func)) + (import "bigint-integration" "externalValue" (global $bigint-integration/externalValue i64)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "bigint-integration" "getExternalValue" (func $bigint-integration/getExternalValue (result i64))) + (global $bigint-integration/internalValue i64 (i64.const 9007199254740991)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00*\00\00\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s") + (export "internalValue" (global $bigint-integration/internalValue)) + (export "getInternalValue" (func $bigint-integration/getInternalValue)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $bigint-integration/getInternalValue (result i64) + i64.const 9007199254740991 + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + global.get $bigint-integration/externalValue + i64.const 9007199254740991 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $bigint-integration/getExternalValue + global.get $bigint-integration/externalValue + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/features/js-bigint-integration.ts b/tests/compiler/bigint-integration.ts similarity index 100% rename from tests/compiler/features/js-bigint-integration.ts rename to tests/compiler/bigint-integration.ts diff --git a/tests/compiler/binary-error.json b/tests/compiler/binary-error.json new file mode 100644 index 0000000000..e7167c9f36 --- /dev/null +++ b/tests/compiler/binary-error.json @@ -0,0 +1,24 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS2365: Operator '<' cannot be applied to types 'binary-error/A | null' and 'i8'.", + "TS2365: Operator '>' cannot be applied to types 'binary-error/A | null' and 'i8'.", + "TS2365: Operator '<=' cannot be applied to types 'binary-error/A | null' and 'i8'.", + "TS2365: Operator '>=' cannot be applied to types 'binary-error/A | null' and 'i8'.", + "TS2365: Operator '==' cannot be applied to types 'binary-error/A | null' and 'i8'.", + "TS2365: Operator '!=' cannot be applied to types 'binary-error/A | null' and 'i8'.", + "TS2365: Operator '+' cannot be applied to types 'i8' and '() => void'.", + "TS2365: Operator '-' cannot be applied to types 'i8' and '() => void'.", + "TS2365: Operator '*' cannot be applied to types 'i8' and '() => void'.", + "TS2365: Operator '**' cannot be applied to types 'i8' and '() => void'.", + "TS2365: Operator '/' cannot be applied to types 'i8' and '() => void'.", + "TS2365: Operator '%' cannot be applied to types 'i8' and '() => void'.", + "TS2469: The '>>' operator cannot be applied to type '() => void'.", + "TS2469: The '<<' operator cannot be applied to type '() => void'.", + "TS2469: The '>>>' operator cannot be applied to type '() => void'.", + "TS2469: The '&' operator cannot be applied to type '() => void'.", + "TS2469: The '|' operator cannot be applied to type '() => void'.", + "TS2469: The '^' operator cannot be applied to type '() => void'." + ] +} diff --git a/tests/compiler/binary-error.ts b/tests/compiler/binary-error.ts new file mode 100644 index 0000000000..d80d32e122 --- /dev/null +++ b/tests/compiler/binary-error.ts @@ -0,0 +1,22 @@ +class A { } +let b: A | null; +let c: i8 = 1; +b < c; // TS2365: Operator '<' cannot be applied to types 'binary-error/A | null' and 'i8'. +b > c; // TS2365: Operator '>' cannot be applied to types 'binary-error/A | null' and 'i8'. +b <= c; // TS2365: Operator '<=' cannot be applied to types 'binary-error/A | null' and 'i8'. +b >= c; // TS2365: Operator '>=' cannot be applied to types 'binary-error/A | null' and 'i8'. +b == c; // TS2365: Operator '==' cannot be applied to types 'binary-error/A | null' and 'i8'. +b != c; // TS2365: Operator '!=' cannot be applied to types 'binary-error/A | null' and 'i8'. +let d: () => void = (): void => { }; +c + d; // TS2365: Operator '+' cannot be applied to types 'i8' and '() => void'. +c - d; // TS2365: Operator '-' cannot be applied to types 'i8' and '() => void'. +c * d; // TS2365: Operator '*' cannot be applied to types 'i8' and '() => void'. +c ** d; // TS2365: Operator '**' cannot be applied to types 'i8' and '() => void'. +c / d; // TS2365: Operator '/' cannot be applied to types 'i8' and '() => void'. +c % d; // TS2365: Operator '%' cannot be applied to types 'i8' and '() => void'. +d >> 1; // TS2469: The '>>' operator cannot be applied to type '() => void'. +d << 1; // TS2469: The '<<' operator cannot be applied to type '() => void'. +d >>> 1; // TS2469: The '>>>' operator cannot be applied to type '() => void'. +d & 1; // TS2469: The '&' operator cannot be applied to type '() => void'. +d | 1; // TS2469: The '|' operator cannot be applied to type '() => void'. +d ^ 1; // TS2469: The '^' operator cannot be applied to type '() => void'. diff --git a/tests/compiler/binary.debug.wat b/tests/compiler/binary.debug.wat new file mode 100644 index 0000000000..2925b7cf9f --- /dev/null +++ b/tests/compiler/binary.debug.wat @@ -0,0 +1,3063 @@ +(module + (type $0 (func (param f64 f64) (result f64))) + (type $1 (func (param f32 f32) (result f32))) + (type $2 (func)) + (type $3 (func (param i32 i32) (result i32))) + (global $binary/b (mut i32) (i32.const 0)) + (global $binary/i (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $binary/I (mut i64) (i64.const 0)) + (global $~lib/util/math/log_tail (mut f64) (f64.const 0)) + (global $binary/f (mut f32) (f32.const 0)) + (global $binary/F (mut f64) (f64.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 6664)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 39432)) + (global $~lib/memory/__heap_base i32 (i32.const 39432)) + (memory $0 1) + (data $0 (i32.const 8) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data $2 (i32.const 6152) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\r\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") + (data $3 (i32.const 6408) "\00\00\00\00\00\00\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/math/ipow32 (param $x i32) (param $e i32) (result i32) + (local $out i32) + (local $log i32) + (local $4 i32) + i32.const 1 + local.set $out + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $x + i32.const 2 + i32.eq + if + i32.const 1 + local.get $e + i32.shl + i32.const 0 + local.get $e + i32.const 32 + i32.lt_u + select + return + end + local.get $e + i32.const 0 + i32.le_s + if + local.get $x + i32.const -1 + i32.eq + if + i32.const -1 + i32.const 1 + local.get $e + i32.const 1 + i32.and + select + return + end + local.get $e + i32.const 0 + i32.eq + local.get $x + i32.const 1 + i32.eq + i32.or + return + else + local.get $e + i32.const 1 + i32.eq + if + local.get $x + return + else + local.get $e + i32.const 2 + i32.eq + if + local.get $x + local.get $x + i32.mul + return + else + local.get $e + i32.const 32 + i32.lt_s + if + i32.const 32 + local.get $e + i32.clz + i32.sub + local.set $log + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $log + local.set $4 + local.get $4 + i32.const 5 + i32.eq + br_if $case0|0 + local.get $4 + i32.const 4 + i32.eq + br_if $case1|0 + local.get $4 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $4 + i32.const 2 + i32.eq + br_if $case3|0 + local.get $4 + i32.const 1 + i32.eq + br_if $case4|0 + br $break|0 + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + end + local.get $out + return + end + end + end + end + loop $while-continue|1 + local.get $e + if + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + br $while-continue|1 + end + end + local.get $out + return + ) + (func $~lib/math/NativeMath.pow (param $x f64) (param $y f64) (result f64) + (local $x|2 f64) + (local $y|3 f64) + (local $sign_bias i32) + (local $ix i64) + (local $iy i64) + (local $topx i64) + (local $topy i64) + (local $u i64) + (local $u|10 i64) + (local $x2 f64) + (local $iy|12 i64) + (local $e i64) + (local $iy|14 i64) + (local $e|15 i64) + (local $yint i32) + (local $ix|17 i64) + (local $tmp i64) + (local $i i32) + (local $k i64) + (local $iz i64) + (local $z f64) + (local $kd f64) + (local $invc f64) + (local $logc f64) + (local $logctail f64) + (local $zhi f64) + (local $zlo f64) + (local $rhi f64) + (local $rlo f64) + (local $r f64) + (local $t1 f64) + (local $t2 f64) + (local $lo1 f64) + (local $lo2 f64) + (local $ar f64) + (local $ar2 f64) + (local $ar3 f64) + (local $arhi f64) + (local $arhi2 f64) + (local $hi f64) + (local $lo3 f64) + (local $lo4 f64) + (local $p f64) + (local $lo f64) + (local $y|46 f64) + (local $hi|47 f64) + (local $lo|48 f64) + (local $ehi f64) + (local $elo f64) + (local $yhi f64) + (local $ylo f64) + (local $lhi f64) + (local $llo f64) + (local $x|55 f64) + (local $xtail f64) + (local $sign_bias|57 i32) + (local $abstop i32) + (local $ki i64) + (local $top i64) + (local $sbits i64) + (local $idx i32) + (local $kd|63 f64) + (local $z|64 f64) + (local $r|65 f64) + (local $r2 f64) + (local $scale f64) + (local $tail f64) + (local $tmp|69 f64) + (local $ux i64) + (local $sign i32) + (local $sign|72 i32) + (local $y|73 f64) + (local $sign|74 i32) + (local $sign|75 i32) + (local $y|76 f64) + (local $tmp|77 f64) + (local $sbits|78 i64) + (local $ki|79 i64) + (local $scale|80 f64) + (local $y|81 f64) + (local $one f64) + (local $lo|83 f64) + (local $hi|84 f64) + local.get $y + f64.abs + f64.const 2 + f64.le + if + local.get $y + f64.const 2 + f64.eq + if + local.get $x + local.get $x + f64.mul + return + end + local.get $y + f64.const 0.5 + f64.eq + if + local.get $x + f64.sqrt + f64.abs + f64.const inf + local.get $x + f64.const inf + f64.neg + f64.ne + select + return + end + local.get $y + f64.const -1 + f64.eq + if + f64.const 1 + local.get $x + f64.div + return + end + local.get $y + f64.const 1 + f64.eq + if + local.get $x + return + end + local.get $y + f64.const 0 + f64.eq + if + f64.const 1 + return + end + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $~lib/util/math/pow_lut|inlined.0 (result f64) + local.get $x + local.set $x|2 + local.get $y + local.set $y|3 + i32.const 0 + local.set $sign_bias + local.get $x|2 + i64.reinterpret_f64 + local.set $ix + local.get $y|3 + i64.reinterpret_f64 + local.set $iy + local.get $ix + i64.const 52 + i64.shr_u + local.set $topx + local.get $iy + i64.const 52 + i64.shr_u + local.set $topy + local.get $topx + i64.const 1 + i64.sub + i64.const 2047 + i64.const 1 + i64.sub + i64.ge_u + if (result i32) + i32.const 1 + else + local.get $topy + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 1086 + i64.const 958 + i64.sub + i64.ge_u + end + if + block $~lib/util/math/zeroinfnan|inlined.0 (result i32) + local.get $iy + local.set $u + local.get $u + i64.const 1 + i64.shl + i64.const 1 + i64.sub + i64.const -9007199254740992 + i64.const 1 + i64.sub + i64.ge_u + br $~lib/util/math/zeroinfnan|inlined.0 + end + if + local.get $iy + i64.const 1 + i64.shl + i64.const 0 + i64.eq + if + f64.const 1 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 4607182418800017408 + i64.eq + if + f64.const nan:0x8000000000000 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 1 + i64.shl + i64.const -9007199254740992 + i64.gt_u + if (result i32) + i32.const 1 + else + local.get $iy + i64.const 1 + i64.shl + i64.const -9007199254740992 + i64.gt_u + end + if + local.get $x|2 + local.get $y|3 + f64.add + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 1 + i64.shl + i64.const 9214364837600034816 + i64.eq + if + f64.const nan:0x8000000000000 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 1 + i64.shl + i64.const 9214364837600034816 + i64.lt_u + local.get $iy + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + i32.eqz + i32.eq + if + f64.const 0 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $y|3 + local.get $y|3 + f64.mul + br $~lib/util/math/pow_lut|inlined.0 + end + block $~lib/util/math/zeroinfnan|inlined.1 (result i32) + local.get $ix + local.set $u|10 + local.get $u|10 + i64.const 1 + i64.shl + i64.const 1 + i64.sub + i64.const -9007199254740992 + i64.const 1 + i64.sub + i64.ge_u + br $~lib/util/math/zeroinfnan|inlined.1 + end + if + local.get $x|2 + local.get $x|2 + f64.mul + local.set $x2 + local.get $ix + i64.const 63 + i64.shr_u + i32.wrap_i64 + if (result i32) + block $~lib/util/math/checkint|inlined.0 (result i32) + local.get $iy + local.set $iy|12 + local.get $iy|12 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $e + local.get $e + i64.const 1023 + i64.lt_u + if + i32.const 0 + br $~lib/util/math/checkint|inlined.0 + end + local.get $e + i64.const 1023 + i64.const 52 + i64.add + i64.gt_u + if + i32.const 2 + br $~lib/util/math/checkint|inlined.0 + end + i64.const 1 + i64.const 1023 + i64.const 52 + i64.add + local.get $e + i64.sub + i64.shl + local.set $e + local.get $iy|12 + local.get $e + i64.const 1 + i64.sub + i64.and + i64.const 0 + i64.ne + if + i32.const 0 + br $~lib/util/math/checkint|inlined.0 + end + local.get $iy|12 + local.get $e + i64.and + i64.const 0 + i64.ne + if + i32.const 1 + br $~lib/util/math/checkint|inlined.0 + end + i32.const 2 + br $~lib/util/math/checkint|inlined.0 + end + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $x2 + f64.neg + local.set $x2 + end + local.get $iy + i64.const 0 + i64.lt_s + if (result f64) + f64.const 1 + local.get $x2 + f64.div + else + local.get $x2 + end + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 0 + i64.lt_s + if + block $~lib/util/math/checkint|inlined.1 (result i32) + local.get $iy + local.set $iy|14 + local.get $iy|14 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $e|15 + local.get $e|15 + i64.const 1023 + i64.lt_u + if + i32.const 0 + br $~lib/util/math/checkint|inlined.1 + end + local.get $e|15 + i64.const 1023 + i64.const 52 + i64.add + i64.gt_u + if + i32.const 2 + br $~lib/util/math/checkint|inlined.1 + end + i64.const 1 + i64.const 1023 + i64.const 52 + i64.add + local.get $e|15 + i64.sub + i64.shl + local.set $e|15 + local.get $iy|14 + local.get $e|15 + i64.const 1 + i64.sub + i64.and + i64.const 0 + i64.ne + if + i32.const 0 + br $~lib/util/math/checkint|inlined.1 + end + local.get $iy|14 + local.get $e|15 + i64.and + i64.const 0 + i64.ne + if + i32.const 1 + br $~lib/util/math/checkint|inlined.1 + end + i32.const 2 + br $~lib/util/math/checkint|inlined.1 + end + local.set $yint + local.get $yint + i32.const 0 + i32.eq + if + local.get $x|2 + local.get $x|2 + f64.sub + local.get $x|2 + local.get $x|2 + f64.sub + f64.div + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $yint + i32.const 1 + i32.eq + if + i32.const 262144 + local.set $sign_bias + end + local.get $ix + i64.const 9223372036854775807 + i64.and + local.set $ix + local.get $topx + i64.const 2047 + i64.and + local.set $topx + end + local.get $topy + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 1086 + i64.const 958 + i64.sub + i64.ge_u + if + local.get $ix + i64.const 4607182418800017408 + i64.eq + if + f64.const 1 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $topy + i64.const 2047 + i64.and + i64.const 958 + i64.lt_u + if + f64.const 1 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 4607182418800017408 + i64.gt_u + local.get $topy + i64.const 2048 + i64.lt_u + i32.eq + if (result f64) + f64.const inf + else + f64.const 0 + end + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $topx + i64.const 0 + i64.eq + if + local.get $x|2 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + local.set $ix + local.get $ix + i64.const 9223372036854775807 + i64.and + local.set $ix + local.get $ix + i64.const 52 + i64.const 52 + i64.shl + i64.sub + local.set $ix + end + end + block $~lib/util/math/log_inline|inlined.0 (result f64) + local.get $ix + local.set $ix|17 + local.get $ix|17 + i64.const 4604531861337669632 + i64.sub + local.set $tmp + local.get $tmp + i64.const 52 + i32.const 7 + i64.extend_i32_s + i64.sub + i64.shr_u + i32.const 127 + i64.extend_i32_s + i64.and + i32.wrap_i64 + local.set $i + local.get $tmp + i64.const 52 + i64.shr_s + local.set $k + local.get $ix|17 + local.get $tmp + i64.const 4095 + i64.const 52 + i64.shl + i64.and + i64.sub + local.set $iz + local.get $iz + f64.reinterpret_i64 + local.set $z + local.get $k + f64.convert_i64_s + local.set $kd + i32.const 8 + local.get $i + i32.const 2 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load + local.set $invc + i32.const 8 + local.get $i + i32.const 2 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=16 + local.set $logc + i32.const 8 + local.get $i + i32.const 2 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=24 + local.set $logctail + local.get $iz + i64.const 2147483648 + i64.add + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.set $zhi + local.get $z + local.get $zhi + f64.sub + local.set $zlo + local.get $zhi + local.get $invc + f64.mul + f64.const 1 + f64.sub + local.set $rhi + local.get $zlo + local.get $invc + f64.mul + local.set $rlo + local.get $rhi + local.get $rlo + f64.add + local.set $r + local.get $kd + f64.const 0.6931471805598903 + f64.mul + local.get $logc + f64.add + local.set $t1 + local.get $t1 + local.get $r + f64.add + local.set $t2 + local.get $kd + f64.const 5.497923018708371e-14 + f64.mul + local.get $logctail + f64.add + local.set $lo1 + local.get $t1 + local.get $t2 + f64.sub + local.get $r + f64.add + local.set $lo2 + f64.const -0.5 + local.get $r + f64.mul + local.set $ar + local.get $r + local.get $ar + f64.mul + local.set $ar2 + local.get $r + local.get $ar2 + f64.mul + local.set $ar3 + f64.const -0.5 + local.get $rhi + f64.mul + local.set $arhi + local.get $rhi + local.get $arhi + f64.mul + local.set $arhi2 + local.get $t2 + local.get $arhi2 + f64.add + local.set $hi + local.get $rlo + local.get $ar + local.get $arhi + f64.add + f64.mul + local.set $lo3 + local.get $t2 + local.get $hi + f64.sub + local.get $arhi2 + f64.add + local.set $lo4 + local.get $ar3 + f64.const -0.6666666666666679 + local.get $r + f64.const 0.5000000000000007 + f64.mul + f64.add + local.get $ar2 + f64.const 0.7999999995323976 + local.get $r + f64.const -0.6666666663487739 + f64.mul + f64.add + local.get $ar2 + f64.const -1.142909628459501 + local.get $r + f64.const 1.0000415263675542 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $p + local.get $lo1 + local.get $lo2 + f64.add + local.get $lo3 + f64.add + local.get $lo4 + f64.add + local.get $p + f64.add + local.set $lo + local.get $hi + local.get $lo + f64.add + local.set $y|46 + local.get $hi + local.get $y|46 + f64.sub + local.get $lo + f64.add + global.set $~lib/util/math/log_tail + local.get $y|46 + br $~lib/util/math/log_inline|inlined.0 + end + local.set $hi|47 + global.get $~lib/util/math/log_tail + local.set $lo|48 + local.get $iy + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.set $yhi + local.get $y|3 + local.get $yhi + f64.sub + local.set $ylo + local.get $hi|47 + i64.reinterpret_f64 + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.set $lhi + local.get $hi|47 + local.get $lhi + f64.sub + local.get $lo|48 + f64.add + local.set $llo + local.get $yhi + local.get $lhi + f64.mul + local.set $ehi + local.get $ylo + local.get $lhi + f64.mul + local.get $y|3 + local.get $llo + f64.mul + f64.add + local.set $elo + block $~lib/util/math/exp_inline|inlined.0 (result f64) + local.get $ehi + local.set $x|55 + local.get $elo + local.set $xtail + local.get $sign_bias + local.set $sign_bias|57 + local.get $x|55 + i64.reinterpret_f64 + local.set $ux + local.get $ux + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.set $abstop + local.get $abstop + i32.const 969 + i32.sub + i32.const 63 + i32.ge_u + if + local.get $abstop + i32.const 969 + i32.sub + i32.const -2147483648 + i32.ge_u + if + f64.const -1 + f64.const 1 + local.get $sign_bias|57 + select + br $~lib/util/math/exp_inline|inlined.0 + end + local.get $abstop + i32.const 1033 + i32.ge_u + if + local.get $ux + i64.const 0 + i64.lt_s + if (result f64) + block $~lib/util/math/uflow|inlined.0 (result f64) + local.get $sign_bias|57 + local.set $sign + block $~lib/util/math/xflow|inlined.0 (result f64) + local.get $sign + local.set $sign|72 + i64.const 1152921504606846976 + f64.reinterpret_i64 + local.set $y|73 + local.get $y|73 + f64.neg + local.get $y|73 + local.get $sign|72 + select + local.get $y|73 + f64.mul + br $~lib/util/math/xflow|inlined.0 + end + br $~lib/util/math/uflow|inlined.0 + end + else + block $~lib/util/math/oflow|inlined.0 (result f64) + local.get $sign_bias|57 + local.set $sign|74 + block $~lib/util/math/xflow|inlined.1 (result f64) + local.get $sign|74 + local.set $sign|75 + i64.const 8070450532247928832 + f64.reinterpret_i64 + local.set $y|76 + local.get $y|76 + f64.neg + local.get $y|76 + local.get $sign|75 + select + local.get $y|76 + f64.mul + br $~lib/util/math/xflow|inlined.1 + end + br $~lib/util/math/oflow|inlined.0 + end + end + br $~lib/util/math/exp_inline|inlined.0 + end + i32.const 0 + local.set $abstop + end + f64.const 184.6649652337873 + local.get $x|55 + f64.mul + local.set $z|64 + local.get $z|64 + f64.const 6755399441055744 + f64.add + local.set $kd|63 + local.get $kd|63 + i64.reinterpret_f64 + local.set $ki + local.get $kd|63 + f64.const 6755399441055744 + f64.sub + local.set $kd|63 + local.get $x|55 + local.get $kd|63 + f64.const -0.005415212348111709 + f64.mul + f64.add + local.get $kd|63 + f64.const -1.2864023111638346e-14 + f64.mul + f64.add + local.set $r|65 + local.get $r|65 + local.get $xtail + f64.add + local.set $r|65 + local.get $ki + i32.const 127 + i64.extend_i32_s + i64.and + i64.const 1 + i64.shl + i32.wrap_i64 + local.set $idx + local.get $ki + local.get $sign_bias|57 + i64.extend_i32_u + i64.add + i64.const 52 + i32.const 7 + i64.extend_i32_s + i64.sub + i64.shl + local.set $top + i32.const 4104 + local.get $idx + i32.const 3 + i32.shl + i32.add + i64.load + f64.reinterpret_i64 + local.set $tail + i32.const 4104 + local.get $idx + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $top + i64.add + local.set $sbits + local.get $r|65 + local.get $r|65 + f64.mul + local.set $r2 + local.get $tail + local.get $r|65 + f64.add + local.get $r2 + f64.const 0.49999999999996786 + local.get $r|65 + f64.const 0.16666666666665886 + f64.mul + f64.add + f64.mul + f64.add + local.get $r2 + local.get $r2 + f64.mul + f64.const 0.0416666808410674 + local.get $r|65 + f64.const 0.008333335853059549 + f64.mul + f64.add + f64.mul + f64.add + local.set $tmp|69 + local.get $abstop + i32.const 0 + i32.eq + if + block $~lib/util/math/specialcase|inlined.0 (result f64) + local.get $tmp|69 + local.set $tmp|77 + local.get $sbits + local.set $sbits|78 + local.get $ki + local.set $ki|79 + local.get $ki|79 + i64.const 2147483648 + i64.and + i64.const 0 + i64.ne + i32.eqz + if + local.get $sbits|78 + i64.const 1009 + i64.const 52 + i64.shl + i64.sub + local.set $sbits|78 + local.get $sbits|78 + f64.reinterpret_i64 + local.set $scale|80 + f64.const 5486124068793688683255936e279 + local.get $scale|80 + local.get $scale|80 + local.get $tmp|77 + f64.mul + f64.add + f64.mul + br $~lib/util/math/specialcase|inlined.0 + end + local.get $sbits|78 + i64.const 1022 + i64.const 52 + i64.shl + i64.add + local.set $sbits|78 + local.get $sbits|78 + f64.reinterpret_i64 + local.set $scale|80 + local.get $scale|80 + local.get $scale|80 + local.get $tmp|77 + f64.mul + f64.add + local.set $y|81 + local.get $y|81 + f64.abs + f64.const 1 + f64.lt + if + f64.const 1 + local.get $y|81 + f64.copysign + local.set $one + local.get $scale|80 + local.get $y|81 + f64.sub + local.get $scale|80 + local.get $tmp|77 + f64.mul + f64.add + local.set $lo|83 + local.get $one + local.get $y|81 + f64.add + local.set $hi|84 + local.get $one + local.get $hi|84 + f64.sub + local.get $y|81 + f64.add + local.get $lo|83 + f64.add + local.set $lo|83 + local.get $hi|84 + local.get $lo|83 + f64.add + local.get $one + f64.sub + local.set $y|81 + local.get $y|81 + f64.const 0 + f64.eq + if + local.get $sbits|78 + i64.const -9223372036854775808 + i64.and + f64.reinterpret_i64 + local.set $y|81 + end + end + local.get $y|81 + f64.const 2.2250738585072014e-308 + f64.mul + br $~lib/util/math/specialcase|inlined.0 + end + br $~lib/util/math/exp_inline|inlined.0 + end + local.get $sbits + f64.reinterpret_i64 + local.set $scale + local.get $scale + local.get $scale + local.get $tmp|69 + f64.mul + f64.add + br $~lib/util/math/exp_inline|inlined.0 + end + br $~lib/util/math/pow_lut|inlined.0 + end + return + ) + (func $~lib/math/NativeMathf.mod (param $x f32) (param $y f32) (result f32) + (local $ux i32) + (local $uy i32) + (local $ex i32) + (local $ey i32) + (local $sm i32) + (local $uy1 i32) + (local $m f32) + (local $ux1 i32) + (local $shift i32) + local.get $y + f32.abs + f32.const 1 + f32.eq + if + local.get $x + local.get $x + f32.trunc + f32.sub + local.get $x + f32.copysign + return + end + local.get $x + i32.reinterpret_f32 + local.set $ux + local.get $y + i32.reinterpret_f32 + local.set $uy + local.get $ux + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $ex + local.get $uy + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $ey + local.get $ux + i32.const -2147483648 + i32.and + local.set $sm + local.get $uy + i32.const 1 + i32.shl + local.set $uy1 + local.get $uy1 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $ex + i32.const 255 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $y + local.get $y + f32.ne + end + if + local.get $x + local.get $y + f32.mul + local.set $m + local.get $m + local.get $m + f32.div + return + end + local.get $ux + i32.const 1 + i32.shl + local.set $ux1 + local.get $ux1 + local.get $uy1 + i32.le_u + if + local.get $x + local.get $ux1 + local.get $uy1 + i32.ne + f32.convert_i32_u + f32.mul + return + end + local.get $ex + i32.eqz + if + local.get $ex + local.get $ux + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $ex + local.get $ux + i32.const 1 + local.get $ex + i32.sub + i32.shl + local.set $ux + else + local.get $ux + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $ux + local.get $ux + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $ux + end + local.get $ey + i32.eqz + if + local.get $ey + local.get $uy + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $ey + local.get $uy + i32.const 1 + local.get $ey + i32.sub + i32.shl + local.set $uy + else + local.get $uy + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $uy + local.get $uy + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $uy + end + loop $while-continue|0 + local.get $ex + local.get $ey + i32.gt_s + if + local.get $ux + local.get $uy + i32.ge_u + if + local.get $ux + local.get $uy + i32.eq + if + f32.const 0 + local.get $x + f32.mul + return + end + local.get $ux + local.get $uy + i32.sub + local.set $ux + end + local.get $ux + i32.const 1 + i32.shl + local.set $ux + local.get $ex + i32.const 1 + i32.sub + local.set $ex + br $while-continue|0 + end + end + local.get $ux + local.get $uy + i32.ge_u + if + local.get $ux + local.get $uy + i32.eq + if + f32.const 0 + local.get $x + f32.mul + return + end + local.get $ux + local.get $uy + i32.sub + local.set $ux + end + local.get $ux + i32.const 8 + i32.shl + i32.clz + local.set $shift + local.get $ex + local.get $shift + i32.sub + local.set $ex + local.get $ux + local.get $shift + i32.shl + local.set $ux + local.get $ex + i32.const 0 + i32.gt_s + if + local.get $ux + i32.const 1 + i32.const 23 + i32.shl + i32.sub + local.set $ux + local.get $ux + local.get $ex + i32.const 23 + i32.shl + i32.or + local.set $ux + else + local.get $ux + i32.const 0 + local.get $ex + i32.sub + i32.const 1 + i32.add + i32.shr_u + local.set $ux + end + local.get $ux + local.get $sm + i32.or + f32.reinterpret_i32 + return + ) + (func $~lib/math/NativeMathf.pow (param $x f32) (param $y f32) (result f32) + (local $x|2 f32) + (local $y|3 f32) + (local $signBias i32) + (local $ix i32) + (local $iy i32) + (local $ny i32) + (local $ux i32) + (local $ux|9 i32) + (local $x2 f32) + (local $iy|11 i32) + (local $e i32) + (local $iy|13 i32) + (local $e|14 i32) + (local $yint i32) + (local $ux|16 i32) + (local $tmp i32) + (local $i i32) + (local $top i32) + (local $uz i32) + (local $k i32) + (local $invc f64) + (local $logc f64) + (local $z f64) + (local $r f64) + (local $y0 f64) + (local $y|27 f64) + (local $p f64) + (local $q f64) + (local $logx f64) + (local $ylogx f64) + (local $sign i32) + (local $sign|33 i32) + (local $y|34 f32) + (local $sign|35 i32) + (local $sign|36 i32) + (local $y|37 f32) + (local $xd f64) + (local $signBias|39 i32) + (local $kd f64) + (local $ki i64) + (local $r|42 f64) + (local $t i64) + (local $z|44 f64) + (local $y|45 f64) + (local $s f64) + local.get $y + f32.abs + f32.const 2 + f32.le + if + local.get $y + f32.const 2 + f32.eq + if + local.get $x + local.get $x + f32.mul + return + end + local.get $y + f32.const 0.5 + f32.eq + if + local.get $x + f32.sqrt + f32.abs + f32.const inf + local.get $x + f32.const inf + f32.neg + f32.ne + select + return + end + local.get $y + f32.const -1 + f32.eq + if + f32.const 1 + local.get $x + f32.div + return + end + local.get $y + f32.const 1 + f32.eq + if + local.get $x + return + end + local.get $y + f32.const 0 + f32.eq + if + f32.const 1 + return + end + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $~lib/util/math/powf_lut|inlined.0 (result f32) + local.get $x + local.set $x|2 + local.get $y + local.set $y|3 + i32.const 0 + local.set $signBias + local.get $x|2 + i32.reinterpret_f32 + local.set $ix + local.get $y|3 + i32.reinterpret_f32 + local.set $iy + i32.const 0 + local.set $ny + local.get $ix + i32.const 8388608 + i32.sub + i32.const 2139095040 + i32.const 8388608 + i32.sub + i32.ge_u + block $~lib/util/math/zeroinfnanf|inlined.0 (result i32) + local.get $iy + local.set $ux + local.get $ux + i32.const 1 + i32.shl + i32.const 1 + i32.sub + i32.const 2139095040 + i32.const 1 + i32.shl + i32.const 1 + i32.sub + i32.ge_u + br $~lib/util/math/zeroinfnanf|inlined.0 + end + i32.const 0 + i32.ne + local.tee $ny + i32.or + if + local.get $ny + if + local.get $iy + i32.const 1 + i32.shl + i32.const 0 + i32.eq + if + f32.const 1 + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $ix + i32.const 1065353216 + i32.eq + if + f32.const nan:0x400000 + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $ix + i32.const 1 + i32.shl + i32.const 2139095040 + i32.const 1 + i32.shl + i32.gt_u + if (result i32) + i32.const 1 + else + local.get $iy + i32.const 1 + i32.shl + i32.const 2139095040 + i32.const 1 + i32.shl + i32.gt_u + end + if + local.get $x|2 + local.get $y|3 + f32.add + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $ix + i32.const 1 + i32.shl + i32.const 1065353216 + i32.const 1 + i32.shl + i32.eq + if + f32.const nan:0x400000 + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $ix + i32.const 1 + i32.shl + i32.const 1065353216 + i32.const 1 + i32.shl + i32.lt_u + local.get $iy + i32.const 31 + i32.shr_u + i32.eqz + i32.eq + if + f32.const 0 + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $y|3 + local.get $y|3 + f32.mul + br $~lib/util/math/powf_lut|inlined.0 + end + block $~lib/util/math/zeroinfnanf|inlined.1 (result i32) + local.get $ix + local.set $ux|9 + local.get $ux|9 + i32.const 1 + i32.shl + i32.const 1 + i32.sub + i32.const 2139095040 + i32.const 1 + i32.shl + i32.const 1 + i32.sub + i32.ge_u + br $~lib/util/math/zeroinfnanf|inlined.1 + end + if + local.get $x|2 + local.get $x|2 + f32.mul + local.set $x2 + local.get $ix + i32.const 31 + i32.shr_u + if (result i32) + block $~lib/util/math/checkintf|inlined.0 (result i32) + local.get $iy + local.set $iy|11 + local.get $iy|11 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $e + local.get $e + i32.const 127 + i32.lt_u + if + i32.const 0 + br $~lib/util/math/checkintf|inlined.0 + end + local.get $e + i32.const 127 + i32.const 23 + i32.add + i32.gt_u + if + i32.const 2 + br $~lib/util/math/checkintf|inlined.0 + end + i32.const 1 + i32.const 127 + i32.const 23 + i32.add + local.get $e + i32.sub + i32.shl + local.set $e + local.get $iy|11 + local.get $e + i32.const 1 + i32.sub + i32.and + if + i32.const 0 + br $~lib/util/math/checkintf|inlined.0 + end + local.get $iy|11 + local.get $e + i32.and + if + i32.const 1 + br $~lib/util/math/checkintf|inlined.0 + end + i32.const 2 + br $~lib/util/math/checkintf|inlined.0 + end + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $x2 + f32.neg + local.set $x2 + end + local.get $iy + i32.const 0 + i32.lt_s + if (result f32) + f32.const 1 + local.get $x2 + f32.div + else + local.get $x2 + end + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $ix + i32.const 0 + i32.lt_s + if + block $~lib/util/math/checkintf|inlined.1 (result i32) + local.get $iy + local.set $iy|13 + local.get $iy|13 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $e|14 + local.get $e|14 + i32.const 127 + i32.lt_u + if + i32.const 0 + br $~lib/util/math/checkintf|inlined.1 + end + local.get $e|14 + i32.const 127 + i32.const 23 + i32.add + i32.gt_u + if + i32.const 2 + br $~lib/util/math/checkintf|inlined.1 + end + i32.const 1 + i32.const 127 + i32.const 23 + i32.add + local.get $e|14 + i32.sub + i32.shl + local.set $e|14 + local.get $iy|13 + local.get $e|14 + i32.const 1 + i32.sub + i32.and + if + i32.const 0 + br $~lib/util/math/checkintf|inlined.1 + end + local.get $iy|13 + local.get $e|14 + i32.and + if + i32.const 1 + br $~lib/util/math/checkintf|inlined.1 + end + i32.const 2 + br $~lib/util/math/checkintf|inlined.1 + end + local.set $yint + local.get $yint + i32.const 0 + i32.eq + if + local.get $x|2 + local.get $x|2 + f32.sub + local.get $x|2 + local.get $x|2 + f32.sub + f32.div + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $yint + i32.const 1 + i32.eq + if + i32.const 65536 + local.set $signBias + end + local.get $ix + i32.const 2147483647 + i32.and + local.set $ix + end + local.get $ix + i32.const 8388608 + i32.lt_u + if + local.get $x|2 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + local.set $ix + local.get $ix + i32.const 2147483647 + i32.and + local.set $ix + local.get $ix + i32.const 23 + i32.const 23 + i32.shl + i32.sub + local.set $ix + end + end + block $~lib/util/math/log2f_inline|inlined.0 (result f64) + local.get $ix + local.set $ux|16 + local.get $ux|16 + i32.const 1060306944 + i32.sub + local.set $tmp + local.get $tmp + i32.const 23 + i32.const 4 + i32.sub + i32.shr_u + i32.const 15 + i32.and + local.set $i + local.get $tmp + i32.const -8388608 + i32.and + local.set $top + local.get $ux|16 + local.get $top + i32.sub + local.set $uz + local.get $top + i32.const 23 + i32.shr_s + local.set $k + i32.const 6152 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load + local.set $invc + i32.const 6152 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=8 + local.set $logc + local.get $uz + f32.reinterpret_i32 + f64.promote_f32 + local.set $z + local.get $z + local.get $invc + f64.mul + f64.const 1 + f64.sub + local.set $r + local.get $logc + local.get $k + f64.convert_i32_s + f64.add + local.set $y0 + f64.const 0.288457581109214 + local.get $r + f64.mul + f64.const -0.36092606229713164 + f64.add + local.set $y|27 + f64.const 0.480898481472577 + local.get $r + f64.mul + f64.const -0.7213474675006291 + f64.add + local.set $p + f64.const 1.4426950408774342 + local.get $r + f64.mul + local.get $y0 + f64.add + local.set $q + local.get $r + local.get $r + f64.mul + local.set $r + local.get $q + local.get $p + local.get $r + f64.mul + f64.add + local.set $q + local.get $y|27 + local.get $r + local.get $r + f64.mul + f64.mul + local.get $q + f64.add + local.set $y|27 + local.get $y|27 + br $~lib/util/math/log2f_inline|inlined.0 + end + local.set $logx + local.get $y|3 + f64.promote_f32 + local.get $logx + f64.mul + local.set $ylogx + local.get $ylogx + i64.reinterpret_f64 + i64.const 47 + i64.shr_u + i64.const 65535 + i64.and + i64.const 32959 + i64.ge_u + if + local.get $ylogx + f64.const 127.99999995700433 + f64.gt + if + block $~lib/util/math/oflowf|inlined.0 (result f32) + local.get $signBias + local.set $sign + block $~lib/util/math/xflowf|inlined.0 (result f32) + local.get $sign + local.set $sign|33 + i32.const 1879048192 + f32.reinterpret_i32 + local.set $y|34 + local.get $y|34 + f32.neg + local.get $y|34 + local.get $sign|33 + select + local.get $y|34 + f32.mul + br $~lib/util/math/xflowf|inlined.0 + end + br $~lib/util/math/oflowf|inlined.0 + end + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $ylogx + f64.const -150 + f64.le + if + block $~lib/util/math/uflowf|inlined.0 (result f32) + local.get $signBias + local.set $sign|35 + block $~lib/util/math/xflowf|inlined.1 (result f32) + local.get $sign|35 + local.set $sign|36 + i32.const 268435456 + f32.reinterpret_i32 + local.set $y|37 + local.get $y|37 + f32.neg + local.get $y|37 + local.get $sign|36 + select + local.get $y|37 + f32.mul + br $~lib/util/math/xflowf|inlined.1 + end + br $~lib/util/math/uflowf|inlined.0 + end + br $~lib/util/math/powf_lut|inlined.0 + end + end + block $~lib/util/math/exp2f_inline|inlined.0 (result f32) + local.get $ylogx + local.set $xd + local.get $signBias + local.set $signBias|39 + local.get $xd + f64.const 211106232532992 + f64.add + local.set $kd + local.get $kd + i64.reinterpret_f64 + local.set $ki + local.get $xd + local.get $kd + f64.const 211106232532992 + f64.sub + f64.sub + local.set $r|42 + i32.const 6408 + local.get $ki + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.add + i64.load + local.set $t + local.get $t + local.get $ki + local.get $signBias|39 + i64.extend_i32_u + i64.add + i64.const 52 + i32.const 5 + i64.extend_i32_s + i64.sub + i64.shl + i64.add + local.set $t + local.get $t + f64.reinterpret_i64 + local.set $s + f64.const 0.05550361559341535 + local.get $r|42 + f64.mul + f64.const 0.2402284522445722 + f64.add + local.set $z|44 + f64.const 0.6931471806916203 + local.get $r|42 + f64.mul + f64.const 1 + f64.add + local.set $y|45 + local.get $y|45 + local.get $z|44 + local.get $r|42 + local.get $r|42 + f64.mul + f64.mul + f64.add + local.set $y|45 + local.get $y|45 + local.get $s + f64.mul + local.set $y|45 + local.get $y|45 + f32.demote_f64 + br $~lib/util/math/exp2f_inline|inlined.0 + end + br $~lib/util/math/powf_lut|inlined.0 + end + return + ) + (func $~lib/math/NativeMath.mod (param $x f64) (param $y f64) (result f64) + (local $ux i64) + (local $uy i64) + (local $ex i64) + (local $ey i64) + (local $sx i64) + (local $uy1 i64) + (local $m f64) + (local $ux1 i64) + (local $shift i64) + local.get $y + f64.abs + f64.const 1 + f64.eq + if + local.get $x + local.get $x + f64.trunc + f64.sub + local.get $x + f64.copysign + return + end + local.get $x + i64.reinterpret_f64 + local.set $ux + local.get $y + i64.reinterpret_f64 + local.set $uy + local.get $ux + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $ex + local.get $uy + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $ey + local.get $ux + i64.const 63 + i64.shr_u + local.set $sx + local.get $uy + i64.const 1 + i64.shl + local.set $uy1 + local.get $uy1 + i64.const 0 + i64.eq + if (result i32) + i32.const 1 + else + local.get $ex + i64.const 2047 + i64.eq + end + if (result i32) + i32.const 1 + else + local.get $y + local.get $y + f64.ne + end + if + local.get $x + local.get $y + f64.mul + local.set $m + local.get $m + local.get $m + f64.div + return + end + local.get $ux + i64.const 1 + i64.shl + local.set $ux1 + local.get $ux1 + local.get $uy1 + i64.le_u + if + local.get $x + local.get $ux1 + local.get $uy1 + i64.ne + f64.convert_i32_u + f64.mul + return + end + local.get $ex + i64.const 0 + i64.ne + i32.eqz + if + local.get $ex + local.get $ux + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $ex + local.get $ux + i64.const 1 + local.get $ex + i64.sub + i64.shl + local.set $ux + else + local.get $ux + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $ux + local.get $ux + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $ux + end + local.get $ey + i64.const 0 + i64.ne + i32.eqz + if + local.get $ey + local.get $uy + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $ey + local.get $uy + i64.const 1 + local.get $ey + i64.sub + i64.shl + local.set $uy + else + local.get $uy + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $uy + local.get $uy + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $uy + end + loop $while-continue|0 + local.get $ex + local.get $ey + i64.gt_s + if + local.get $ux + local.get $uy + i64.ge_u + if + local.get $ux + local.get $uy + i64.eq + if + f64.const 0 + local.get $x + f64.mul + return + end + local.get $ux + local.get $uy + i64.sub + local.set $ux + end + local.get $ux + i64.const 1 + i64.shl + local.set $ux + local.get $ex + i64.const 1 + i64.sub + local.set $ex + br $while-continue|0 + end + end + local.get $ux + local.get $uy + i64.ge_u + if + local.get $ux + local.get $uy + i64.eq + if + f64.const 0 + local.get $x + f64.mul + return + end + local.get $ux + local.get $uy + i64.sub + local.set $ux + end + local.get $ux + i64.const 11 + i64.shl + i64.clz + local.set $shift + local.get $ex + local.get $shift + i64.sub + local.set $ex + local.get $ux + local.get $shift + i64.shl + local.set $ux + local.get $ex + i64.const 0 + i64.gt_s + if + local.get $ux + i64.const 1 + i64.const 52 + i64.shl + i64.sub + local.set $ux + local.get $ux + local.get $ex + i64.const 52 + i64.shl + i64.or + local.set $ux + else + local.get $ux + i64.const 0 + local.get $ex + i64.sub + i64.const 1 + i64.add + i64.shr_u + local.set $ux + end + local.get $ux + local.get $sx + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + return + ) + (func $start:binary + global.get $binary/i + i32.const 1 + i32.lt_s + drop + global.get $binary/i + i32.const 1 + i32.gt_s + drop + global.get $binary/i + i32.const 1 + i32.le_s + drop + global.get $binary/i + i32.const 1 + i32.ge_s + drop + global.get $binary/i + i32.const 1 + i32.eq + drop + global.get $binary/i + i32.const 1 + i32.eq + drop + global.get $binary/i + i32.const 1 + i32.add + drop + global.get $binary/i + i32.const 1 + i32.sub + drop + global.get $binary/i + i32.const 1 + i32.mul + drop + global.get $binary/i + i32.const 1 + i32.div_s + drop + global.get $binary/i + i32.const 1 + i32.rem_s + drop + global.get $binary/i + i32.const 1 + call $~lib/math/ipow32 + drop + global.get $binary/i + i32.const 1 + i32.shl + drop + global.get $binary/i + i32.const 1 + i32.shr_s + drop + global.get $binary/i + i32.const 1 + i32.shr_u + drop + global.get $binary/i + i32.const 1 + i32.and + drop + global.get $binary/i + i32.const 1 + i32.or + drop + global.get $binary/i + i32.const 1 + i32.xor + drop + global.get $binary/i + i32.const 1 + i32.lt_s + global.set $binary/b + global.get $binary/i + i32.const 1 + i32.gt_s + global.set $binary/b + global.get $binary/i + i32.const 1 + i32.le_s + global.set $binary/b + global.get $binary/i + i32.const 1 + i32.ge_s + global.set $binary/b + global.get $binary/i + i32.const 1 + i32.eq + global.set $binary/b + global.get $binary/i + i32.const 1 + i32.eq + global.set $binary/b + global.get $binary/i + i32.const 1 + i32.add + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.sub + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.mul + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.div_s + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.rem_s + global.set $binary/i + global.get $binary/i + i32.const 1 + call $~lib/math/ipow32 + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.shl + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.shr_s + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.shr_u + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.and + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.or + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.xor + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.add + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.sub + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.mul + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.rem_s + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.shl + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.shr_s + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.shr_u + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.and + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.or + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.xor + global.set $binary/i + global.get $binary/I + i64.const 1 + i64.lt_s + drop + global.get $binary/I + i64.const 1 + i64.gt_s + drop + global.get $binary/I + i64.const 1 + i64.le_s + drop + global.get $binary/I + i64.const 1 + i64.ge_s + drop + global.get $binary/I + i64.const 1 + i64.eq + drop + global.get $binary/I + i64.const 1 + i64.eq + drop + global.get $binary/I + i64.const 1 + i64.add + drop + global.get $binary/I + i64.const 1 + i64.sub + drop + global.get $binary/I + i64.const 1 + i64.mul + drop + global.get $binary/I + i64.const 1 + i64.div_s + drop + global.get $binary/I + i64.const 1 + i64.rem_s + drop + global.get $binary/I + f64.convert_i64_s + f64.const 1 + call $~lib/math/NativeMath.pow + drop + global.get $binary/I + i64.const 1 + i64.shl + drop + global.get $binary/I + i64.const 1 + i64.shr_s + drop + global.get $binary/I + i64.const 1 + i64.shr_u + drop + global.get $binary/I + i64.const 1 + i64.and + drop + global.get $binary/I + i64.const 1 + i64.or + drop + global.get $binary/I + i64.const 1 + i64.xor + drop + global.get $binary/I + i64.const 1 + i64.lt_s + global.set $binary/b + global.get $binary/I + i64.const 1 + i64.gt_s + global.set $binary/b + global.get $binary/I + i64.const 1 + i64.le_s + global.set $binary/b + global.get $binary/I + i64.const 1 + i64.ge_s + global.set $binary/b + global.get $binary/I + i64.const 1 + i64.eq + global.set $binary/b + global.get $binary/I + i64.const 1 + i64.eq + global.set $binary/b + global.get $binary/I + i64.const 1 + i64.add + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.sub + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.mul + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.div_s + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.rem_s + global.set $binary/I + global.get $binary/I + f64.convert_i64_s + f64.const 1 + call $~lib/math/NativeMath.pow + i64.trunc_sat_f64_s + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.shl + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.shr_s + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.shr_u + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.and + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.or + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.xor + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.add + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.sub + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.mul + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.rem_s + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.shl + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.shr_s + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.shr_u + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.and + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.or + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.xor + global.set $binary/I + global.get $binary/f + f32.const 1 + f32.lt + drop + global.get $binary/f + f32.const 1 + f32.gt + drop + global.get $binary/f + f32.const 1 + f32.le + drop + global.get $binary/f + f32.const 1 + f32.ge + drop + global.get $binary/f + f32.const 1 + f32.eq + drop + global.get $binary/f + f32.const 1 + f32.eq + drop + global.get $binary/f + f32.const 1 + f32.add + drop + global.get $binary/f + f32.const 1 + f32.sub + drop + global.get $binary/f + f32.const 1 + f32.mul + drop + global.get $binary/f + f32.const 1 + f32.div + drop + global.get $binary/f + f32.const 1 + call $~lib/math/NativeMathf.mod + drop + global.get $binary/f + f32.const 1 + call $~lib/math/NativeMathf.pow + drop + global.get $binary/f + f32.const 1 + f32.lt + global.set $binary/b + global.get $binary/f + f32.const 1 + f32.gt + global.set $binary/b + global.get $binary/f + f32.const 1 + f32.le + global.set $binary/b + global.get $binary/f + f32.const 1 + f32.ge + global.set $binary/b + global.get $binary/f + f32.const 1 + f32.eq + global.set $binary/b + global.get $binary/f + f32.const 1 + f32.eq + global.set $binary/b + global.get $binary/f + f32.const 1 + f32.add + global.set $binary/f + global.get $binary/f + f32.const 1 + f32.sub + global.set $binary/f + global.get $binary/f + f32.const 1 + f32.mul + global.set $binary/f + global.get $binary/f + f32.const 1 + f32.div + global.set $binary/f + global.get $binary/f + f32.const 1 + call $~lib/math/NativeMathf.mod + global.set $binary/f + global.get $binary/f + f32.const 1 + call $~lib/math/NativeMathf.pow + global.set $binary/f + global.get $binary/f + f32.const 1 + f32.add + global.set $binary/f + global.get $binary/f + f32.const 1 + f32.sub + global.set $binary/f + global.get $binary/f + f32.const 1 + f32.mul + global.set $binary/f + global.get $binary/f + f32.const 1 + call $~lib/math/NativeMathf.mod + global.set $binary/f + global.get $binary/f + f32.const 1 + call $~lib/math/NativeMathf.pow + global.set $binary/f + global.get $binary/F + f64.const 1 + f64.lt + drop + global.get $binary/F + f64.const 1 + f64.gt + drop + global.get $binary/F + f64.const 1 + f64.le + drop + global.get $binary/F + f64.const 1 + f64.ge + drop + global.get $binary/F + f64.const 1 + f64.eq + drop + global.get $binary/F + f64.const 1 + f64.eq + drop + global.get $binary/F + f64.const 1 + f64.add + drop + global.get $binary/F + f64.const 1 + f64.sub + drop + global.get $binary/F + f64.const 1 + f64.mul + drop + global.get $binary/F + f64.const 1 + f64.div + drop + global.get $binary/F + f64.const 1 + call $~lib/math/NativeMath.mod + drop + global.get $binary/F + f64.const 1 + call $~lib/math/NativeMath.pow + drop + global.get $binary/F + f64.const 1 + f64.lt + global.set $binary/b + global.get $binary/F + f64.const 1 + f64.gt + global.set $binary/b + global.get $binary/F + f64.const 1 + f64.le + global.set $binary/b + global.get $binary/F + f64.const 1 + f64.ge + global.set $binary/b + global.get $binary/F + f64.const 1 + f64.eq + global.set $binary/b + global.get $binary/F + f64.const 1 + f64.eq + global.set $binary/b + global.get $binary/F + f64.const 1 + f64.add + global.set $binary/F + global.get $binary/F + f64.const 1 + f64.sub + global.set $binary/F + global.get $binary/F + f64.const 1 + f64.mul + global.set $binary/F + global.get $binary/F + f64.const 1 + f64.div + global.set $binary/F + global.get $binary/F + f64.const 1 + call $~lib/math/NativeMath.mod + global.set $binary/F + global.get $binary/F + f64.const 1 + call $~lib/math/NativeMath.pow + global.set $binary/F + global.get $binary/F + f64.const 1 + f64.add + global.set $binary/F + global.get $binary/F + f64.const 1 + f64.sub + global.set $binary/F + global.get $binary/F + f64.const 1 + f64.mul + global.set $binary/F + global.get $binary/F + f64.const 1 + call $~lib/math/NativeMath.mod + global.set $binary/F + global.get $binary/F + f64.const 1 + call $~lib/math/NativeMath.pow + global.set $binary/F + ) + (func $~start + call $start:binary + ) +) diff --git a/tests/compiler/binary.json b/tests/compiler/binary.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/binary.json +++ b/tests/compiler/binary.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/binary.optimized.wat b/tests/compiler/binary.optimized.wat deleted file mode 100644 index 818d1ff040..0000000000 --- a/tests/compiler/binary.optimized.wat +++ /dev/null @@ -1,230 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (memory $0 0) - (global $binary/i (mut i32) (i32.const 0)) - (global $binary/I (mut i64) (i64.const 0)) - (global $binary/f (mut f32) (f32.const 0)) - (global $binary/F (mut f64) (f64.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/math/ipow32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - i32.const 1 - local.set $1 - i32.const 1 - local.set $2 - loop $while-continue|0 - local.get $1 - if - local.get $0 - local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 - i32.and - select - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - br $while-continue|0 - end - end - local.get $2 - ) - (func $~lib/math/NativeMathf.mod (param $0 f32) (result f32) - local.get $0 - local.get $0 - f32.trunc - f32.sub - local.get $0 - f32.copysign - ) - (func $~lib/math/NativeMath.mod (param $0 f64) (result f64) - local.get $0 - local.get $0 - f64.trunc - f64.sub - local.get $0 - f64.copysign - ) - (func $start:binary - global.get $binary/i - call $~lib/math/ipow32 - drop - global.get $binary/i - i32.const 1 - i32.add - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.sub - global.set $binary/i - i32.const 0 - global.set $binary/i - i32.const 0 - call $~lib/math/ipow32 - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.shl - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.shr_s - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.shr_u - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.and - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.or - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.xor - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.add - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.sub - global.set $binary/i - i32.const 0 - global.set $binary/i - i32.const 0 - global.set $binary/i - i32.const 0 - global.set $binary/i - i32.const 0 - global.set $binary/i - i32.const 0 - global.set $binary/i - i32.const 1 - global.set $binary/i - i32.const 0 - global.set $binary/i - global.get $binary/I - i64.const 1 - i64.add - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.sub - global.set $binary/I - i64.const 0 - global.set $binary/I - i64.const 0 - global.set $binary/I - i64.const 0 - global.set $binary/I - i64.const 0 - global.set $binary/I - i64.const 0 - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.and - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.or - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.xor - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.add - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.sub - global.set $binary/I - i64.const 0 - global.set $binary/I - i64.const 0 - global.set $binary/I - i64.const 0 - global.set $binary/I - i64.const 0 - global.set $binary/I - i64.const 0 - global.set $binary/I - i64.const 1 - global.set $binary/I - i64.const 0 - global.set $binary/I - global.get $binary/f - call $~lib/math/NativeMathf.mod - drop - global.get $binary/f - f32.const 1 - f32.add - global.set $binary/f - global.get $binary/f - f32.const 1 - f32.sub - global.set $binary/f - global.get $binary/f - call $~lib/math/NativeMathf.mod - global.set $binary/f - global.get $binary/f - f32.const 1 - f32.add - global.set $binary/f - global.get $binary/f - f32.const 1 - f32.sub - global.set $binary/f - global.get $binary/f - call $~lib/math/NativeMathf.mod - global.set $binary/f - global.get $binary/F - call $~lib/math/NativeMath.mod - drop - global.get $binary/F - f64.const 1 - f64.add - global.set $binary/F - global.get $binary/F - f64.const 1 - f64.sub - global.set $binary/F - global.get $binary/F - call $~lib/math/NativeMath.mod - global.set $binary/F - global.get $binary/F - f64.const 1 - f64.add - global.set $binary/F - global.get $binary/F - f64.const 1 - f64.sub - global.set $binary/F - global.get $binary/F - call $~lib/math/NativeMath.mod - global.set $binary/F - ) - (func $~start - call $start:binary - ) -) diff --git a/tests/compiler/binary.release.wat b/tests/compiler/binary.release.wat new file mode 100644 index 0000000000..a8b4c14403 --- /dev/null +++ b/tests/compiler/binary.release.wat @@ -0,0 +1,294 @@ +(module + (type $0 (func)) + (global $binary/i (mut i32) (i32.const 0)) + (global $binary/I (mut i64) (i64.const 0)) + (global $binary/f (mut f32) (f32.const 0)) + (global $binary/F (mut f64) (f64.const 0)) + (memory $0 1) + (data $0 (i32.const 1029) "\a0\f6?") + (data $0.1 (i32.const 1041) "\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?") + (data $0.2 (i32.const 1073) "\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?") + (data $0.3 (i32.const 1105) "XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?") + (data $0.4 (i32.const 1137) "\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?") + (data $0.5 (i32.const 1169) "xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?") + (data $0.6 (i32.const 1201) "`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?") + (data $0.7 (i32.const 1233) "\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?") + (data $0.8 (i32.const 1265) "HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?") + (data $0.9 (i32.const 1297) "\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?") + (data $0.10 (i32.const 1329) " \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?") + (data $0.11 (i32.const 1361) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?") + (data $0.12 (i32.const 1393) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?") + (data $0.13 (i32.const 1425) "x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?") + (data $0.14 (i32.const 1457) "\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?") + (data $0.15 (i32.const 1489) "\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?") + (data $0.16 (i32.const 1521) "H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?") + (data $0.17 (i32.const 1553) "\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?") + (data $0.18 (i32.const 1585) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?") + (data $0.19 (i32.const 1617) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?") + (data $0.20 (i32.const 1649) "@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?") + (data $0.21 (i32.const 1681) "`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?") + (data $0.22 (i32.const 1713) "\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?") + (data $0.23 (i32.const 1745) "\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?") + (data $0.24 (i32.const 1777) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?") + (data $0.25 (i32.const 1809) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?") + (data $0.26 (i32.const 1841) "\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?") + (data $0.27 (i32.const 1873) "\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?") + (data $0.28 (i32.const 1905) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?") + (data $0.29 (i32.const 1937) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?") + (data $0.30 (i32.const 1969) "P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?") + (data $0.31 (i32.const 2001) "\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?") + (data $0.32 (i32.const 2033) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?") + (data $0.33 (i32.const 2065) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?") + (data $0.34 (i32.const 2097) "\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?") + (data $0.35 (i32.const 2129) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?") + (data $0.36 (i32.const 2161) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?") + (data $0.37 (i32.const 2193) "\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?") + (data $0.38 (i32.const 2225) "\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?") + (data $0.85 (i32.const 3729) "`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?") + (data $0.86 (i32.const 3761) "\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?") + (data $0.87 (i32.const 3793) "\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?") + (data $0.88 (i32.const 3825) "\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?") + (data $0.89 (i32.const 3857) "@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?") + (data $0.90 (i32.const 3889) "`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?") + (data $0.91 (i32.const 3921) "@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?") + (data $0.92 (i32.const 3953) " \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?") + (data $0.93 (i32.const 3985) "\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?") + (data $0.94 (i32.const 4017) "\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?") + (data $0.95 (i32.const 4049) "\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?") + (data $0.96 (i32.const 4081) "\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?") + (data $0.97 (i32.const 4113) "\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?") + (data $0.98 (i32.const 4145) "\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?") + (data $0.99 (i32.const 4177) "\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?") + (data $0.100 (i32.const 4209) "\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?") + (data $0.101 (i32.const 4241) "pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?") + (data $0.102 (i32.const 4273) "PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?") + (data $0.103 (i32.const 4306) "9\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?") + (data $0.104 (i32.const 4338) "\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?") + (data $0.105 (i32.const 4369) "\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?") + (data $0.106 (i32.const 4401) "\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?") + (data $0.107 (i32.const 4433) "\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?") + (data $0.108 (i32.const 4465) "\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?") + (data $0.109 (i32.const 4497) "\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?") + (data $0.110 (i32.const 4529) "\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?") + (data $0.111 (i32.const 4562) "\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?") + (data $0.112 (i32.const 4593) "\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?") + (data $0.113 (i32.const 4625) "XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?") + (data $0.114 (i32.const 4657) "`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?") + (data $0.115 (i32.const 4689) "\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?") + (data $0.116 (i32.const 4721) "\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?") + (data $0.117 (i32.const 4753) "hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?") + (data $0.118 (i32.const 4785) "\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?") + (data $0.119 (i32.const 4817) "\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?") + (data $0.120 (i32.const 4849) "`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data $2 (i32.const 7168) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\r\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") + (data $3 (i32.const 7430) "\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") + (export "memory" (memory $0)) + (start $~start) + (func $~start + (local $0 f32) + (local $1 f64) + global.get $binary/i + i32.const 1 + i32.add + global.set $binary/i + global.get $binary/i + i32.const 1 + i32.sub + global.set $binary/i + i32.const 0 + global.set $binary/i + i32.const 0 + global.set $binary/i + i32.const 0 + global.set $binary/i + i32.const 0 + global.set $binary/i + i32.const 0 + global.set $binary/i + i32.const 0 + global.set $binary/i + i32.const 1 + global.set $binary/i + i32.const 0 + global.set $binary/i + i32.const 1 + global.set $binary/i + i32.const 0 + global.set $binary/i + i32.const 0 + global.set $binary/i + i32.const 0 + global.set $binary/i + i32.const 0 + global.set $binary/i + i32.const 0 + global.set $binary/i + i32.const 0 + global.set $binary/i + i32.const 1 + global.set $binary/i + i32.const 0 + global.set $binary/i + global.get $binary/I + i64.const 1 + i64.add + global.set $binary/I + global.get $binary/I + i64.const 1 + i64.sub + global.set $binary/I + i64.const 0 + global.set $binary/I + i64.const 0 + global.set $binary/I + i64.const 0 + global.set $binary/I + i64.const 0 + global.set $binary/I + i64.const 0 + global.set $binary/I + i64.const 0 + global.set $binary/I + i64.const 1 + global.set $binary/I + i64.const 0 + global.set $binary/I + i64.const 1 + global.set $binary/I + i64.const 0 + global.set $binary/I + i64.const 0 + global.set $binary/I + i64.const 0 + global.set $binary/I + i64.const 0 + global.set $binary/I + i64.const 0 + global.set $binary/I + i64.const 0 + global.set $binary/I + i64.const 1 + global.set $binary/I + i64.const 0 + global.set $binary/I + global.get $binary/f + f32.const 1 + f32.add + global.set $binary/f + global.get $binary/f + f32.const -1 + f32.add + global.set $binary/f + global.get $binary/f + local.tee $0 + local.get $0 + f32.trunc + f32.sub + local.get $0 + f32.copysign + global.set $binary/f + global.get $binary/f + f32.const 1 + f32.add + global.set $binary/f + global.get $binary/f + f32.const -1 + f32.add + global.set $binary/f + global.get $binary/f + local.tee $0 + local.get $0 + f32.trunc + f32.sub + local.get $0 + f32.copysign + global.set $binary/f + global.get $binary/F + f64.const 1 + f64.add + global.set $binary/F + global.get $binary/F + f64.const -1 + f64.add + global.set $binary/F + global.get $binary/F + local.tee $1 + local.get $1 + f64.trunc + f64.sub + local.get $1 + f64.copysign + global.set $binary/F + global.get $binary/F + f64.const 1 + f64.add + global.set $binary/F + global.get $binary/F + f64.const -1 + f64.add + global.set $binary/F + global.get $binary/F + local.tee $1 + local.get $1 + f64.trunc + f64.sub + local.get $1 + f64.copysign + global.set $binary/F + ) +) diff --git a/tests/compiler/binary.untouched.wat b/tests/compiler/binary.untouched.wat deleted file mode 100644 index a7a522d0ef..0000000000 --- a/tests/compiler/binary.untouched.wat +++ /dev/null @@ -1,2956 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 1) - (data (i32.const 8) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\0d=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data (i32.const 6152) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\0d\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") - (data (i32.const 6408) "\00\00\00\00\00\00\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") - (table $0 1 funcref) - (global $binary/b (mut i32) (i32.const 0)) - (global $binary/i (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $binary/I (mut i64) (i64.const 0)) - (global $~lib/util/math/log_tail (mut f64) (f64.const 0)) - (global $binary/f (mut f32) (f32.const 0)) - (global $binary/F (mut f64) (f64.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - local.set $2 - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $1 - i32.const 0 - i32.le_s - if - local.get $0 - i32.const -1 - i32.eq - if - i32.const -1 - i32.const 1 - local.get $1 - i32.const 1 - i32.and - select - return - end - local.get $1 - i32.const 0 - i32.eq - local.get $0 - i32.const 1 - i32.eq - i32.or - return - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - return - else - local.get $1 - i32.const 2 - i32.eq - if - local.get $0 - local.get $0 - i32.mul - return - else - local.get $1 - i32.const 32 - i32.lt_s - if - i32.const 32 - local.get $1 - i32.clz - i32.sub - local.set $3 - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $3 - local.set $4 - local.get $4 - i32.const 5 - i32.eq - br_if $case0|0 - local.get $4 - i32.const 4 - i32.eq - br_if $case1|0 - local.get $4 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $4 - i32.const 2 - i32.eq - br_if $case3|0 - local.get $4 - i32.const 1 - i32.eq - br_if $case4|0 - br $break|0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - end - local.get $2 - return - end - end - end - end - loop $while-continue|1 - local.get $1 - local.set $3 - local.get $3 - if - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - br $while-continue|1 - end - end - local.get $2 - ) - (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 f64) - (local $11 i64) - (local $12 i32) - (local $13 i64) - (local $14 i64) - (local $15 f64) - (local $16 f64) - (local $17 f64) - (local $18 f64) - (local $19 f64) - (local $20 f64) - (local $21 f64) - (local $22 f64) - (local $23 f64) - (local $24 f64) - (local $25 f64) - (local $26 f64) - (local $27 f64) - (local $28 f64) - (local $29 f64) - (local $30 f64) - (local $31 f64) - (local $32 f64) - (local $33 f64) - (local $34 f64) - (local $35 f64) - (local $36 f64) - (local $37 f64) - (local $38 f64) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i64) - (local $44 i64) - local.get $1 - f64.abs - f64.const 2 - f64.le - if - local.get $1 - f64.const 2 - f64.eq - if - local.get $0 - local.get $0 - f64.mul - return - end - local.get $1 - f64.const 0.5 - f64.eq - if - local.get $0 - f64.sqrt - f64.abs - f64.const inf - local.get $0 - f64.const inf - f64.neg - f64.ne - select - return - end - local.get $1 - f64.const -1 - f64.eq - if - f64.const 1 - local.get $0 - f64.div - return - end - local.get $1 - f64.const 1 - f64.eq - if - local.get $0 - return - end - local.get $1 - f64.const 0 - f64.eq - if - f64.const 1 - return - end - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/pow_lut|inlined.0 (result f64) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - i32.const 0 - local.set $4 - local.get $3 - i64.reinterpret_f64 - local.set $5 - local.get $2 - i64.reinterpret_f64 - local.set $6 - local.get $5 - i64.const 52 - i64.shr_u - local.set $7 - local.get $6 - i64.const 52 - i64.shr_u - local.set $8 - local.get $7 - i64.const 1 - i64.sub - i64.const 2047 - i64.const 1 - i64.sub - i64.ge_u - if (result i32) - i32.const 1 - else - local.get $8 - i64.const 2047 - i64.and - i64.const 958 - i64.sub - i64.const 1086 - i64.const 958 - i64.sub - i64.ge_u - end - if - local.get $6 - local.set $9 - local.get $9 - i64.const 1 - i64.shl - i64.const 1 - i64.sub - i64.const -9007199254740992 - i64.const 1 - i64.sub - i64.ge_u - if - local.get $6 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const 1 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 4607182418800017408 - i64.eq - if - f64.const nan:0x8000000000000 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 1 - i64.shl - i64.const -9007199254740992 - i64.gt_u - if (result i32) - i32.const 1 - else - local.get $6 - i64.const 1 - i64.shl - i64.const -9007199254740992 - i64.gt_u - end - if - local.get $3 - local.get $2 - f64.add - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 1 - i64.shl - i64.const 9214364837600034816 - i64.eq - if - f64.const nan:0x8000000000000 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 1 - i64.shl - i64.const 9214364837600034816 - i64.lt_u - local.get $6 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - i32.eqz - i32.eq - if - f64.const 0 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $2 - local.get $2 - f64.mul - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - local.set $9 - local.get $9 - i64.const 1 - i64.shl - i64.const 1 - i64.sub - i64.const -9007199254740992 - i64.const 1 - i64.sub - i64.ge_u - if - local.get $3 - local.get $3 - f64.mul - local.set $10 - local.get $5 - i64.const 63 - i64.shr_u - i32.wrap_i64 - if (result i32) - block $~lib/util/math/checkint|inlined.0 (result i32) - local.get $6 - local.set $9 - local.get $9 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $11 - local.get $11 - i64.const 1023 - i64.lt_u - if - i32.const 0 - br $~lib/util/math/checkint|inlined.0 - end - local.get $11 - i64.const 1023 - i64.const 52 - i64.add - i64.gt_u - if - i32.const 2 - br $~lib/util/math/checkint|inlined.0 - end - i64.const 1 - i64.const 1023 - i64.const 52 - i64.add - local.get $11 - i64.sub - i64.shl - local.set $11 - local.get $9 - local.get $11 - i64.const 1 - i64.sub - i64.and - i64.const 0 - i64.ne - if - i32.const 0 - br $~lib/util/math/checkint|inlined.0 - end - local.get $9 - local.get $11 - i64.and - i64.const 0 - i64.ne - if - i32.const 1 - br $~lib/util/math/checkint|inlined.0 - end - i32.const 2 - end - i32.const 1 - i32.eq - else - i32.const 0 - end - if - local.get $10 - f64.neg - local.set $10 - end - local.get $6 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - if (result f64) - f64.const 1 - local.get $10 - f64.div - else - local.get $10 - end - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - if - block $~lib/util/math/checkint|inlined.1 (result i32) - local.get $6 - local.set $9 - local.get $9 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $11 - local.get $11 - i64.const 1023 - i64.lt_u - if - i32.const 0 - br $~lib/util/math/checkint|inlined.1 - end - local.get $11 - i64.const 1023 - i64.const 52 - i64.add - i64.gt_u - if - i32.const 2 - br $~lib/util/math/checkint|inlined.1 - end - i64.const 1 - i64.const 1023 - i64.const 52 - i64.add - local.get $11 - i64.sub - i64.shl - local.set $11 - local.get $9 - local.get $11 - i64.const 1 - i64.sub - i64.and - i64.const 0 - i64.ne - if - i32.const 0 - br $~lib/util/math/checkint|inlined.1 - end - local.get $9 - local.get $11 - i64.and - i64.const 0 - i64.ne - if - i32.const 1 - br $~lib/util/math/checkint|inlined.1 - end - i32.const 2 - end - local.set $12 - local.get $12 - i32.const 0 - i32.eq - if - local.get $3 - local.get $3 - f64.sub - local.get $3 - local.get $3 - f64.sub - f64.div - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $12 - i32.const 1 - i32.eq - if - i32.const 262144 - local.set $4 - end - local.get $5 - i64.const 9223372036854775807 - i64.and - local.set $5 - local.get $7 - i64.const 2047 - i64.and - local.set $7 - end - local.get $8 - i64.const 2047 - i64.and - i64.const 958 - i64.sub - i64.const 1086 - i64.const 958 - i64.sub - i64.ge_u - if - local.get $5 - i64.const 4607182418800017408 - i64.eq - if - f64.const 1 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $8 - i64.const 2047 - i64.and - i64.const 958 - i64.lt_u - if - f64.const 1 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 4607182418800017408 - i64.gt_u - local.get $8 - i64.const 2048 - i64.lt_u - i32.eq - if (result f64) - f64.const inf - else - f64.const 0 - end - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $7 - i64.const 0 - i64.eq - if - local.get $3 - f64.const 4503599627370496 - f64.mul - i64.reinterpret_f64 - local.set $5 - local.get $5 - i64.const 9223372036854775807 - i64.and - local.set $5 - local.get $5 - i64.const 52 - i64.const 52 - i64.shl - i64.sub - local.set $5 - end - end - local.get $5 - local.set $9 - local.get $9 - i64.const 4604531861337669632 - i64.sub - local.set $11 - local.get $11 - i64.const 52 - i64.const 7 - i64.sub - i64.shr_u - i64.const 127 - i64.and - i32.wrap_i64 - local.set $12 - local.get $11 - i64.const 52 - i64.shr_s - local.set $13 - local.get $9 - local.get $11 - i64.const 4095 - i64.const 52 - i64.shl - i64.and - i64.sub - local.set $14 - local.get $14 - f64.reinterpret_i64 - local.set $10 - local.get $13 - f64.convert_i64_s - local.set $15 - i32.const 8 - local.get $12 - i32.const 2 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $16 - i32.const 8 - local.get $12 - i32.const 2 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=16 - local.set $17 - i32.const 8 - local.get $12 - i32.const 2 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=24 - local.set $18 - local.get $14 - i64.const 2147483648 - i64.add - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $19 - local.get $10 - local.get $19 - f64.sub - local.set $20 - local.get $19 - local.get $16 - f64.mul - f64.const 1 - f64.sub - local.set $21 - local.get $20 - local.get $16 - f64.mul - local.set $22 - local.get $21 - local.get $22 - f64.add - local.set $23 - local.get $15 - f64.const 0.6931471805598903 - f64.mul - local.get $17 - f64.add - local.set $24 - local.get $24 - local.get $23 - f64.add - local.set $25 - local.get $15 - f64.const 5.497923018708371e-14 - f64.mul - local.get $18 - f64.add - local.set $26 - local.get $24 - local.get $25 - f64.sub - local.get $23 - f64.add - local.set $27 - f64.const -0.5 - local.get $23 - f64.mul - local.set $28 - local.get $23 - local.get $28 - f64.mul - local.set $29 - local.get $23 - local.get $29 - f64.mul - local.set $30 - f64.const -0.5 - local.get $21 - f64.mul - local.set $31 - local.get $21 - local.get $31 - f64.mul - local.set $32 - local.get $25 - local.get $32 - f64.add - local.set $33 - local.get $22 - local.get $28 - local.get $31 - f64.add - f64.mul - local.set $34 - local.get $25 - local.get $33 - f64.sub - local.get $32 - f64.add - local.set $35 - local.get $30 - f64.const -0.6666666666666679 - local.get $23 - f64.const 0.5000000000000007 - f64.mul - f64.add - local.get $29 - f64.const 0.7999999995323976 - local.get $23 - f64.const -0.6666666663487739 - f64.mul - f64.add - local.get $29 - f64.const -1.142909628459501 - local.get $23 - f64.const 1.0000415263675542 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $36 - local.get $26 - local.get $27 - f64.add - local.get $34 - f64.add - local.get $35 - f64.add - local.get $36 - f64.add - local.set $37 - local.get $33 - local.get $37 - f64.add - local.set $38 - local.get $33 - local.get $38 - f64.sub - local.get $37 - f64.add - global.set $~lib/util/math/log_tail - local.get $38 - local.set $38 - global.get $~lib/util/math/log_tail - local.set $37 - local.get $6 - i64.const -134217728 - i64.and - f64.reinterpret_i64 - local.set $34 - local.get $2 - local.get $34 - f64.sub - local.set $33 - local.get $38 - i64.reinterpret_f64 - i64.const -134217728 - i64.and - f64.reinterpret_i64 - local.set $32 - local.get $38 - local.get $32 - f64.sub - local.get $37 - f64.add - local.set $31 - local.get $34 - local.get $32 - f64.mul - local.set $36 - local.get $33 - local.get $32 - f64.mul - local.get $2 - local.get $31 - f64.mul - f64.add - local.set $35 - block $~lib/util/math/exp_inline|inlined.0 (result f64) - local.get $36 - local.set $15 - local.get $35 - local.set $10 - local.get $4 - local.set $12 - local.get $15 - i64.reinterpret_f64 - local.set $9 - local.get $9 - i64.const 52 - i64.shr_u - i32.wrap_i64 - i32.const 2047 - i32.and - local.set $39 - local.get $39 - i32.const 969 - i32.sub - i32.const 63 - i32.ge_u - if - local.get $39 - i32.const 969 - i32.sub - i32.const -2147483648 - i32.ge_u - if - f64.const -1 - f64.const 1 - local.get $12 - select - br $~lib/util/math/exp_inline|inlined.0 - end - local.get $39 - i32.const 1033 - i32.ge_u - if - local.get $9 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - if (result f64) - local.get $12 - local.set $41 - local.get $41 - local.set $42 - i64.const 1152921504606846976 - f64.reinterpret_i64 - local.set $16 - local.get $16 - f64.neg - local.get $16 - local.get $42 - select - local.get $16 - f64.mul - else - local.get $12 - local.set $42 - local.get $42 - local.set $41 - i64.const 8070450532247928832 - f64.reinterpret_i64 - local.set $17 - local.get $17 - f64.neg - local.get $17 - local.get $41 - select - local.get $17 - f64.mul - end - br $~lib/util/math/exp_inline|inlined.0 - end - i32.const 0 - local.set $39 - end - f64.const 184.6649652337873 - local.get $15 - f64.mul - local.set $29 - local.get $29 - f64.const 6755399441055744 - f64.add - local.set $30 - local.get $30 - i64.reinterpret_f64 - local.set $14 - local.get $30 - f64.const 6755399441055744 - f64.sub - local.set $30 - local.get $15 - local.get $30 - f64.const -0.005415212348111709 - f64.mul - f64.add - local.get $30 - f64.const -1.2864023111638346e-14 - f64.mul - f64.add - local.set $28 - local.get $28 - local.get $10 - f64.add - local.set $28 - local.get $14 - i64.const 127 - i64.and - i64.const 1 - i64.shl - i32.wrap_i64 - local.set $40 - local.get $14 - local.get $12 - i64.extend_i32_u - i64.add - i64.const 52 - i64.const 7 - i64.sub - i64.shl - local.set $13 - i32.const 4104 - local.get $40 - i32.const 3 - i32.shl - i32.add - i64.load - f64.reinterpret_i64 - local.set $25 - i32.const 4104 - local.get $40 - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $13 - i64.add - local.set $11 - local.get $28 - local.get $28 - f64.mul - local.set $27 - local.get $25 - local.get $28 - f64.add - local.get $27 - f64.const 0.49999999999996786 - local.get $28 - f64.const 0.16666666666665886 - f64.mul - f64.add - f64.mul - f64.add - local.get $27 - local.get $27 - f64.mul - f64.const 0.0416666808410674 - local.get $28 - f64.const 0.008333335853059549 - f64.mul - f64.add - f64.mul - f64.add - local.set $24 - local.get $39 - i32.const 0 - i32.eq - if - block $~lib/util/math/specialcase|inlined.0 (result f64) - local.get $24 - local.set $18 - local.get $11 - local.set $44 - local.get $14 - local.set $43 - local.get $43 - i64.const 2147483648 - i64.and - i64.const 0 - i64.ne - i32.eqz - if - local.get $44 - i64.const 1009 - i64.const 52 - i64.shl - i64.sub - local.set $44 - local.get $44 - f64.reinterpret_i64 - local.set $17 - f64.const 5486124068793688683255936e279 - local.get $17 - local.get $17 - local.get $18 - f64.mul - f64.add - f64.mul - br $~lib/util/math/specialcase|inlined.0 - end - local.get $44 - i64.const 1022 - i64.const 52 - i64.shl - i64.add - local.set $44 - local.get $44 - f64.reinterpret_i64 - local.set $17 - local.get $17 - local.get $17 - local.get $18 - f64.mul - f64.add - local.set $16 - local.get $16 - f64.abs - f64.const 1 - f64.lt - if - f64.const 1 - local.get $16 - f64.copysign - local.set $23 - local.get $17 - local.get $16 - f64.sub - local.get $17 - local.get $18 - f64.mul - f64.add - local.set $22 - local.get $23 - local.get $16 - f64.add - local.set $21 - local.get $23 - local.get $21 - f64.sub - local.get $16 - f64.add - local.get $22 - f64.add - local.set $22 - local.get $21 - local.get $22 - f64.add - local.get $23 - f64.sub - local.set $16 - local.get $16 - f64.const 0 - f64.eq - if - local.get $44 - i64.const -9223372036854775808 - i64.and - f64.reinterpret_i64 - local.set $16 - end - end - local.get $16 - f64.const 2.2250738585072014e-308 - f64.mul - end - br $~lib/util/math/exp_inline|inlined.0 - end - local.get $11 - f64.reinterpret_i64 - local.set $26 - local.get $26 - local.get $26 - local.get $24 - f64.mul - f64.add - end - end - return - ) - (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - f32.abs - f32.const 1 - f32.eq - if - local.get $0 - local.get $0 - f32.trunc - f32.sub - local.get $0 - f32.copysign - return - end - local.get $0 - i32.reinterpret_f32 - local.set $2 - local.get $1 - i32.reinterpret_f32 - local.set $3 - local.get $2 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $4 - local.get $3 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $5 - local.get $2 - i32.const -2147483648 - i32.and - local.set $6 - local.get $3 - i32.const 1 - i32.shl - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $4 - i32.const 255 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f32.ne - end - if - local.get $0 - local.get $1 - f32.mul - local.set $8 - local.get $8 - local.get $8 - f32.div - return - end - local.get $2 - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $7 - i32.le_u - if - local.get $9 - local.get $7 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $0 - return - end - local.get $4 - i32.eqz - if - local.get $4 - local.get $2 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $4 - local.get $2 - i32.const 0 - local.get $4 - i32.sub - i32.const 1 - i32.add - i32.shl - local.set $2 - else - local.get $2 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $2 - local.get $2 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $2 - end - local.get $5 - i32.eqz - if - local.get $5 - local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $5 - local.get $3 - i32.const 0 - local.get $5 - i32.sub - i32.const 1 - i32.add - i32.shl - local.set $3 - else - local.get $3 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $3 - local.get $3 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $3 - end - loop $while-continue|0 - local.get $4 - local.get $5 - i32.gt_s - local.set $10 - local.get $10 - if - local.get $2 - local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 - end - local.get $2 - i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 - end - local.get $2 - i32.const 8 - i32.shl - i32.clz - local.set $11 - local.get $4 - local.get $11 - i32.sub - local.set $4 - local.get $2 - local.get $11 - i32.shl - local.set $2 - local.get $4 - i32.const 0 - i32.gt_s - if - local.get $2 - i32.const 1 - i32.const 23 - i32.shl - i32.sub - local.set $2 - local.get $2 - local.get $4 - i32.const 23 - i32.shl - i32.or - local.set $2 - else - local.get $2 - i32.const 0 - local.get $4 - i32.sub - i32.const 1 - i32.add - i32.shr_u - local.set $2 - end - local.get $2 - local.get $6 - i32.or - local.set $2 - local.get $2 - f32.reinterpret_i32 - ) - (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) - (local $2 f32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 f64) - (local $16 f64) - (local $17 f64) - (local $18 f64) - (local $19 f64) - (local $20 f64) - (local $21 f64) - (local $22 f64) - (local $23 i64) - (local $24 i64) - local.get $1 - f32.abs - f32.const 2 - f32.le - if - local.get $1 - f32.const 2 - f32.eq - if - local.get $0 - local.get $0 - f32.mul - return - end - local.get $1 - f32.const 0.5 - f32.eq - if - local.get $0 - f32.sqrt - f32.abs - f32.const inf - local.get $0 - f32.const inf - f32.neg - f32.ne - select - return - end - local.get $1 - f32.const -1 - f32.eq - if - f32.const 1 - local.get $0 - f32.div - return - end - local.get $1 - f32.const 1 - f32.eq - if - local.get $0 - return - end - local.get $1 - f32.const 0 - f32.eq - if - f32.const 1 - return - end - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/powf_lut|inlined.0 (result f32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - i32.const 0 - local.set $4 - local.get $3 - i32.reinterpret_f32 - local.set $5 - local.get $2 - i32.reinterpret_f32 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - i32.const 8388608 - i32.sub - i32.const 2139095040 - i32.const 8388608 - i32.sub - i32.ge_u - local.get $6 - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - i32.sub - i32.const 2139095040 - i32.const 1 - i32.shl - i32.const 1 - i32.sub - i32.ge_u - i32.const 0 - i32.ne - local.tee $7 - i32.or - if - local.get $7 - if - local.get $6 - i32.const 1 - i32.shl - i32.const 0 - i32.eq - if - f32.const 1 - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 1065353216 - i32.eq - if - f32.const nan:0x400000 - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 1 - i32.shl - i32.const 2139095040 - i32.const 1 - i32.shl - i32.gt_u - if (result i32) - i32.const 1 - else - local.get $6 - i32.const 1 - i32.shl - i32.const 2139095040 - i32.const 1 - i32.shl - i32.gt_u - end - if - local.get $3 - local.get $2 - f32.add - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 1 - i32.shl - i32.const 1065353216 - i32.const 1 - i32.shl - i32.eq - if - f32.const nan:0x400000 - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 1 - i32.shl - i32.const 1065353216 - i32.const 1 - i32.shl - i32.lt_u - local.get $6 - i32.const 31 - i32.shr_u - i32.eqz - i32.eq - if - f32.const 0 - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $2 - local.get $2 - f32.mul - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - i32.sub - i32.const 2139095040 - i32.const 1 - i32.shl - i32.const 1 - i32.sub - i32.ge_u - if - local.get $3 - local.get $3 - f32.mul - local.set $9 - local.get $5 - i32.const 31 - i32.shr_u - if (result i32) - block $~lib/util/math/checkintf|inlined.0 (result i32) - local.get $6 - local.set $8 - local.get $8 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $10 - local.get $10 - i32.const 127 - i32.lt_u - if - i32.const 0 - br $~lib/util/math/checkintf|inlined.0 - end - local.get $10 - i32.const 127 - i32.const 23 - i32.add - i32.gt_u - if - i32.const 2 - br $~lib/util/math/checkintf|inlined.0 - end - i32.const 1 - i32.const 127 - i32.const 23 - i32.add - local.get $10 - i32.sub - i32.shl - local.set $10 - local.get $8 - local.get $10 - i32.const 1 - i32.sub - i32.and - if - i32.const 0 - br $~lib/util/math/checkintf|inlined.0 - end - local.get $8 - local.get $10 - i32.and - if - i32.const 1 - br $~lib/util/math/checkintf|inlined.0 - end - i32.const 2 - end - i32.const 1 - i32.eq - else - i32.const 0 - end - if - local.get $9 - f32.neg - local.set $9 - end - local.get $6 - i32.const 31 - i32.shr_u - if (result f32) - f32.const 1 - local.get $9 - f32.div - else - local.get $9 - end - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 31 - i32.shr_u - if - block $~lib/util/math/checkintf|inlined.1 (result i32) - local.get $6 - local.set $8 - local.get $8 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $10 - local.get $10 - i32.const 127 - i32.lt_u - if - i32.const 0 - br $~lib/util/math/checkintf|inlined.1 - end - local.get $10 - i32.const 127 - i32.const 23 - i32.add - i32.gt_u - if - i32.const 2 - br $~lib/util/math/checkintf|inlined.1 - end - i32.const 1 - i32.const 127 - i32.const 23 - i32.add - local.get $10 - i32.sub - i32.shl - local.set $10 - local.get $8 - local.get $10 - i32.const 1 - i32.sub - i32.and - if - i32.const 0 - br $~lib/util/math/checkintf|inlined.1 - end - local.get $8 - local.get $10 - i32.and - if - i32.const 1 - br $~lib/util/math/checkintf|inlined.1 - end - i32.const 2 - end - local.set $10 - local.get $10 - i32.const 0 - i32.eq - if - local.get $3 - local.get $3 - f32.sub - local.get $3 - local.get $3 - f32.sub - f32.div - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $10 - i32.const 1 - i32.eq - if - i32.const 65536 - local.set $4 - end - local.get $5 - i32.const 2147483647 - i32.and - local.set $5 - end - local.get $5 - i32.const 8388608 - i32.lt_u - if - local.get $3 - f32.const 8388608 - f32.mul - i32.reinterpret_f32 - local.set $5 - local.get $5 - i32.const 2147483647 - i32.and - local.set $5 - local.get $5 - i32.const 23 - i32.const 23 - i32.shl - i32.sub - local.set $5 - end - end - local.get $5 - local.set $8 - local.get $8 - i32.const 1060306944 - i32.sub - local.set $10 - local.get $10 - i32.const 23 - i32.const 4 - i32.sub - i32.shr_u - i32.const 15 - i32.and - local.set $11 - local.get $10 - i32.const -8388608 - i32.and - local.set $12 - local.get $8 - local.get $12 - i32.sub - local.set $13 - local.get $12 - i32.const 23 - i32.shr_s - local.set $14 - i32.const 6152 - local.get $11 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $15 - i32.const 6152 - local.get $11 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $16 - local.get $13 - f32.reinterpret_i32 - f64.promote_f32 - local.set $17 - local.get $17 - local.get $15 - f64.mul - f64.const 1 - f64.sub - local.set $18 - local.get $16 - local.get $14 - f64.convert_i32_s - f64.add - local.set $19 - f64.const 0.288457581109214 - local.get $18 - f64.mul - f64.const -0.36092606229713164 - f64.add - local.set $20 - f64.const 0.480898481472577 - local.get $18 - f64.mul - f64.const -0.7213474675006291 - f64.add - local.set $21 - f64.const 1.4426950408774342 - local.get $18 - f64.mul - local.get $19 - f64.add - local.set $22 - local.get $18 - local.get $18 - f64.mul - local.set $18 - local.get $22 - local.get $21 - local.get $18 - f64.mul - f64.add - local.set $22 - local.get $20 - local.get $18 - local.get $18 - f64.mul - f64.mul - local.get $22 - f64.add - local.set $20 - local.get $20 - local.set $22 - local.get $2 - f64.promote_f32 - local.get $22 - f64.mul - local.set $21 - local.get $21 - i64.reinterpret_f64 - i64.const 47 - i64.shr_u - i64.const 65535 - i64.and - i64.const 32959 - i64.ge_u - if - local.get $21 - f64.const 127.99999995700433 - f64.gt - if - local.get $4 - local.set $8 - local.get $8 - local.set $10 - i32.const 1879048192 - f32.reinterpret_i32 - local.set $9 - local.get $9 - f32.neg - local.get $9 - local.get $10 - select - local.get $9 - f32.mul - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $21 - f64.const -150 - f64.le - if - local.get $4 - local.set $11 - local.get $11 - local.set $12 - i32.const 268435456 - f32.reinterpret_i32 - local.set $9 - local.get $9 - f32.neg - local.get $9 - local.get $12 - select - local.get $9 - f32.mul - br $~lib/util/math/powf_lut|inlined.0 - end - end - local.get $21 - local.set $15 - local.get $4 - local.set $13 - local.get $15 - f64.const 211106232532992 - f64.add - local.set $20 - local.get $20 - i64.reinterpret_f64 - local.set $23 - local.get $15 - local.get $20 - f64.const 211106232532992 - f64.sub - f64.sub - local.set $19 - i32.const 6408 - local.get $23 - i32.wrap_i64 - i32.const 31 - i32.and - i32.const 3 - i32.shl - i32.add - i64.load - local.set $24 - local.get $24 - local.get $23 - local.get $13 - i64.extend_i32_u - i64.add - i64.const 52 - i64.const 5 - i64.sub - i64.shl - i64.add - local.set $24 - local.get $24 - f64.reinterpret_i64 - local.set $16 - f64.const 0.05550361559341535 - local.get $19 - f64.mul - f64.const 0.2402284522445722 - f64.add - local.set $18 - f64.const 0.6931471806916203 - local.get $19 - f64.mul - f64.const 1 - f64.add - local.set $17 - local.get $17 - local.get $18 - local.get $19 - local.get $19 - f64.mul - f64.mul - f64.add - local.set $17 - local.get $17 - local.get $16 - f64.mul - local.set $17 - local.get $17 - f32.demote_f64 - end - return - ) - (func $~lib/math/NativeMath.mod (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 f64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - local.get $1 - f64.abs - f64.const 1 - f64.eq - if - local.get $0 - local.get $0 - f64.trunc - f64.sub - local.get $0 - f64.copysign - return - end - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $4 - local.get $3 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $5 - local.get $2 - i64.const 63 - i64.shr_u - local.set $6 - local.get $3 - i64.const 1 - i64.shl - local.set $7 - local.get $7 - i64.const 0 - i64.eq - if (result i32) - i32.const 1 - else - local.get $4 - i64.const 2047 - i64.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f64.ne - end - if - local.get $0 - local.get $1 - f64.mul - local.set $8 - local.get $8 - local.get $8 - f64.div - return - end - local.get $2 - i64.const 1 - i64.shl - local.set $9 - local.get $9 - local.get $7 - i64.le_u - if - local.get $9 - local.get $7 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $0 - return - end - local.get $4 - i64.const 0 - i64.ne - i32.eqz - if - local.get $4 - local.get $2 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $4 - local.get $2 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shl - local.set $2 - else - local.get $2 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $2 - local.get $2 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $2 - end - local.get $5 - i64.const 0 - i64.ne - i32.eqz - if - local.get $5 - local.get $3 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $5 - local.get $3 - i64.const 0 - local.get $5 - i64.sub - i64.const 1 - i64.add - i64.shl - local.set $3 - else - local.get $3 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $3 - local.get $3 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $3 - end - loop $while-continue|0 - local.get $4 - local.get $5 - i64.gt_s - local.set $10 - local.get $10 - if - local.get $2 - local.get $3 - i64.ge_u - if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 - end - local.get $2 - i64.const 1 - i64.shl - local.set $2 - local.get $4 - i64.const 1 - i64.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i64.ge_u - if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 - end - local.get $2 - i64.const 11 - i64.shl - i64.clz - local.set $11 - local.get $4 - local.get $11 - i64.sub - local.set $4 - local.get $2 - local.get $11 - i64.shl - local.set $2 - local.get $4 - i64.const 0 - i64.gt_s - if - local.get $2 - i64.const 1 - i64.const 52 - i64.shl - i64.sub - local.set $2 - local.get $2 - local.get $4 - i64.const 52 - i64.shl - i64.or - local.set $2 - else - local.get $2 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shr_u - local.set $2 - end - local.get $2 - local.get $6 - i64.const 63 - i64.shl - i64.or - local.set $2 - local.get $2 - f64.reinterpret_i64 - ) - (func $start:binary - global.get $binary/i - i32.const 1 - i32.lt_s - drop - global.get $binary/i - i32.const 1 - i32.gt_s - drop - global.get $binary/i - i32.const 1 - i32.le_s - drop - global.get $binary/i - i32.const 1 - i32.ge_s - drop - global.get $binary/i - i32.const 1 - i32.eq - drop - global.get $binary/i - i32.const 1 - i32.eq - drop - global.get $binary/i - i32.const 1 - i32.add - drop - global.get $binary/i - i32.const 1 - i32.sub - drop - global.get $binary/i - i32.const 1 - i32.mul - drop - global.get $binary/i - i32.const 1 - i32.div_s - drop - global.get $binary/i - i32.const 1 - i32.rem_s - drop - global.get $binary/i - i32.const 1 - call $~lib/math/ipow32 - drop - global.get $binary/i - i32.const 1 - i32.shl - drop - global.get $binary/i - i32.const 1 - i32.shr_s - drop - global.get $binary/i - i32.const 1 - i32.shr_u - drop - global.get $binary/i - i32.const 1 - i32.and - drop - global.get $binary/i - i32.const 1 - i32.or - drop - global.get $binary/i - i32.const 1 - i32.xor - drop - global.get $binary/i - i32.const 1 - i32.lt_s - global.set $binary/b - global.get $binary/i - i32.const 1 - i32.gt_s - global.set $binary/b - global.get $binary/i - i32.const 1 - i32.le_s - global.set $binary/b - global.get $binary/i - i32.const 1 - i32.ge_s - global.set $binary/b - global.get $binary/i - i32.const 1 - i32.eq - global.set $binary/b - global.get $binary/i - i32.const 1 - i32.eq - global.set $binary/b - global.get $binary/i - i32.const 1 - i32.add - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.sub - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.mul - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.div_s - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.rem_s - global.set $binary/i - global.get $binary/i - i32.const 1 - call $~lib/math/ipow32 - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.shl - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.shr_s - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.shr_u - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.and - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.or - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.xor - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.add - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.sub - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.mul - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.rem_s - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.shl - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.shr_s - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.shr_u - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.and - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.or - global.set $binary/i - global.get $binary/i - i32.const 1 - i32.xor - global.set $binary/i - global.get $binary/I - i64.const 1 - i64.lt_s - drop - global.get $binary/I - i64.const 1 - i64.gt_s - drop - global.get $binary/I - i64.const 1 - i64.le_s - drop - global.get $binary/I - i64.const 1 - i64.ge_s - drop - global.get $binary/I - i64.const 1 - i64.eq - drop - global.get $binary/I - i64.const 1 - i64.eq - drop - global.get $binary/I - i64.const 1 - i64.add - drop - global.get $binary/I - i64.const 1 - i64.sub - drop - global.get $binary/I - i64.const 1 - i64.mul - drop - global.get $binary/I - i64.const 1 - i64.div_s - drop - global.get $binary/I - i64.const 1 - i64.rem_s - drop - global.get $binary/I - f64.convert_i64_s - f64.const 1 - call $~lib/math/NativeMath.pow - drop - global.get $binary/I - i64.const 1 - i64.shl - drop - global.get $binary/I - i64.const 1 - i64.shr_s - drop - global.get $binary/I - i64.const 1 - i64.shr_u - drop - global.get $binary/I - i64.const 1 - i64.and - drop - global.get $binary/I - i64.const 1 - i64.or - drop - global.get $binary/I - i64.const 1 - i64.xor - drop - global.get $binary/I - i64.const 1 - i64.lt_s - global.set $binary/b - global.get $binary/I - i64.const 1 - i64.gt_s - global.set $binary/b - global.get $binary/I - i64.const 1 - i64.le_s - global.set $binary/b - global.get $binary/I - i64.const 1 - i64.ge_s - global.set $binary/b - global.get $binary/I - i64.const 1 - i64.eq - global.set $binary/b - global.get $binary/I - i64.const 1 - i64.eq - global.set $binary/b - global.get $binary/I - i64.const 1 - i64.add - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.sub - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.mul - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.div_s - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.rem_s - global.set $binary/I - global.get $binary/I - f64.convert_i64_s - f64.const 1 - call $~lib/math/NativeMath.pow - i64.trunc_f64_s - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.shl - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.shr_s - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.shr_u - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.and - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.or - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.xor - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.add - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.sub - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.mul - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.rem_s - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.shl - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.shr_s - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.shr_u - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.and - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.or - global.set $binary/I - global.get $binary/I - i64.const 1 - i64.xor - global.set $binary/I - global.get $binary/f - f32.const 1 - f32.lt - drop - global.get $binary/f - f32.const 1 - f32.gt - drop - global.get $binary/f - f32.const 1 - f32.le - drop - global.get $binary/f - f32.const 1 - f32.ge - drop - global.get $binary/f - f32.const 1 - f32.eq - drop - global.get $binary/f - f32.const 1 - f32.eq - drop - global.get $binary/f - f32.const 1 - f32.add - drop - global.get $binary/f - f32.const 1 - f32.sub - drop - global.get $binary/f - f32.const 1 - f32.mul - drop - global.get $binary/f - f32.const 1 - f32.div - drop - global.get $binary/f - f32.const 1 - call $~lib/math/NativeMathf.mod - drop - global.get $binary/f - f32.const 1 - call $~lib/math/NativeMathf.pow - drop - global.get $binary/f - f32.const 1 - f32.lt - global.set $binary/b - global.get $binary/f - f32.const 1 - f32.gt - global.set $binary/b - global.get $binary/f - f32.const 1 - f32.le - global.set $binary/b - global.get $binary/f - f32.const 1 - f32.ge - global.set $binary/b - global.get $binary/f - f32.const 1 - f32.eq - global.set $binary/b - global.get $binary/f - f32.const 1 - f32.eq - global.set $binary/b - global.get $binary/f - f32.const 1 - f32.add - global.set $binary/f - global.get $binary/f - f32.const 1 - f32.sub - global.set $binary/f - global.get $binary/f - f32.const 1 - f32.mul - global.set $binary/f - global.get $binary/f - f32.const 1 - f32.div - global.set $binary/f - global.get $binary/f - f32.const 1 - call $~lib/math/NativeMathf.mod - global.set $binary/f - global.get $binary/f - f32.const 1 - call $~lib/math/NativeMathf.pow - global.set $binary/f - global.get $binary/f - f32.const 1 - f32.add - global.set $binary/f - global.get $binary/f - f32.const 1 - f32.sub - global.set $binary/f - global.get $binary/f - f32.const 1 - f32.mul - global.set $binary/f - global.get $binary/f - f32.const 1 - call $~lib/math/NativeMathf.mod - global.set $binary/f - global.get $binary/f - f32.const 1 - call $~lib/math/NativeMathf.pow - global.set $binary/f - global.get $binary/F - f64.const 1 - f64.lt - drop - global.get $binary/F - f64.const 1 - f64.gt - drop - global.get $binary/F - f64.const 1 - f64.le - drop - global.get $binary/F - f64.const 1 - f64.ge - drop - global.get $binary/F - f64.const 1 - f64.eq - drop - global.get $binary/F - f64.const 1 - f64.eq - drop - global.get $binary/F - f64.const 1 - f64.add - drop - global.get $binary/F - f64.const 1 - f64.sub - drop - global.get $binary/F - f64.const 1 - f64.mul - drop - global.get $binary/F - f64.const 1 - f64.div - drop - global.get $binary/F - f64.const 1 - call $~lib/math/NativeMath.mod - drop - global.get $binary/F - f64.const 1 - call $~lib/math/NativeMath.pow - drop - global.get $binary/F - f64.const 1 - f64.lt - global.set $binary/b - global.get $binary/F - f64.const 1 - f64.gt - global.set $binary/b - global.get $binary/F - f64.const 1 - f64.le - global.set $binary/b - global.get $binary/F - f64.const 1 - f64.ge - global.set $binary/b - global.get $binary/F - f64.const 1 - f64.eq - global.set $binary/b - global.get $binary/F - f64.const 1 - f64.eq - global.set $binary/b - global.get $binary/F - f64.const 1 - f64.add - global.set $binary/F - global.get $binary/F - f64.const 1 - f64.sub - global.set $binary/F - global.get $binary/F - f64.const 1 - f64.mul - global.set $binary/F - global.get $binary/F - f64.const 1 - f64.div - global.set $binary/F - global.get $binary/F - f64.const 1 - call $~lib/math/NativeMath.mod - global.set $binary/F - global.get $binary/F - f64.const 1 - call $~lib/math/NativeMath.pow - global.set $binary/F - global.get $binary/F - f64.const 1 - f64.add - global.set $binary/F - global.get $binary/F - f64.const 1 - f64.sub - global.set $binary/F - global.get $binary/F - f64.const 1 - f64.mul - global.set $binary/F - global.get $binary/F - f64.const 1 - call $~lib/math/NativeMath.mod - global.set $binary/F - global.get $binary/F - f64.const 1 - call $~lib/math/NativeMath.pow - global.set $binary/F - ) - (func $~start - call $start:binary - ) -) diff --git a/tests/compiler/bindings/esm.debug.d.ts b/tests/compiler/bindings/esm.debug.d.ts new file mode 100644 index 0000000000..b533213227 --- /dev/null +++ b/tests/compiler/bindings/esm.debug.d.ts @@ -0,0 +1,208 @@ +/** Exported memory */ +export declare const memory: WebAssembly.Memory; +// Exported runtime interface +export declare function __new(size: number, id: number): number; +export declare function __pin(ptr: number): number; +export declare function __unpin(ptr: number): void; +export declare function __collect(): void; +export declare const __rtti_base: number; +/** bindings/esm/plainGlobal */ +export declare const plainGlobal: { + /** @type `i32` */ + get value(): number +}; +/** bindings/esm/plainMutableGlobal */ +export declare const plainMutableGlobal: { + /** @type `i32` */ + get value(): number; + set value(value: number); +}; +/** bindings/esm/stringGlobal */ +export declare const stringGlobal: { + /** @type `~lib/string/String` */ + get value(): string +}; +/** bindings/esm/mutableStringGlobal */ +export declare const mutableStringGlobal: { + /** @type `~lib/string/String` */ + get value(): string; + set value(value: string); +}; +/** bindings/esm/Enum */ +export declare enum Enum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, +} +/** bindings/esm/ConstEnum */ +export declare enum ConstEnum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, +} +/** + * bindings/esm/plainFunction + * @param a `i32` + * @param b `i32` + * @returns `i32` + */ +export declare function plainFunction(a: number, b: number): number; +/** + * bindings/esm/plainFunction64 + * @param a `i64` + * @param b `i64` + * @returns `i64` + */ +export declare function plainFunction64(a: bigint, b: bigint): bigint; +/** + * bindings/esm/getMaxUnsigned32 + * @returns `u32` + */ +export declare function getMaxUnsigned32(): number; +/** + * bindings/esm/getMaxUnsigned64 + * @returns `u64` + */ +export declare function getMaxUnsigned64(): bigint; +/** + * bindings/esm/bufferFunction + * @param a `~lib/arraybuffer/ArrayBuffer` + * @param b `~lib/arraybuffer/ArrayBuffer` + * @returns `~lib/arraybuffer/ArrayBuffer` + */ +export declare function bufferFunction(a: ArrayBuffer, b: ArrayBuffer): ArrayBuffer; +/** + * bindings/esm/stringFunction + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ +export declare function stringFunction(a: string, b: string): string; +/** + * bindings/esm/stringFunctionOptional + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ +export declare function stringFunctionOptional(a: string, b?: string): string; +/** + * bindings/esm/typedarrayFunction + * @param a `~lib/typedarray/Int16Array` + * @param b `~lib/typedarray/Float32Array` + * @returns `~lib/typedarray/Uint64Array` + */ +export declare function typedarrayFunction(a: Int16Array, b: Float32Array): BigUint64Array; +/** + * bindings/esm/staticarrayFunction + * @param a `~lib/staticarray/StaticArray` + * @param b `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ +export declare function staticarrayFunction(a: ArrayLike, b: ArrayLike): ArrayLike; +/** + * bindings/esm/staticarrayU16 + * @param a `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ +export declare function staticarrayU16(a: ArrayLike): ArrayLike; +/** + * bindings/esm/staticarrayI64 + * @param a `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ +export declare function staticarrayI64(a: ArrayLike): ArrayLike; +/** + * bindings/esm/arrayFunction + * @param a `~lib/array/Array` + * @param b `~lib/array/Array` + * @returns `~lib/array/Array` + */ +export declare function arrayFunction(a: Array, b: Array): Array; +/** + * bindings/esm/arrayOfStringsFunction + * @param a `~lib/array/Array<~lib/string/String>` + * @param b `~lib/array/Array<~lib/string/String>` + * @returns `~lib/array/Array<~lib/string/String>` + */ +export declare function arrayOfStringsFunction(a: Array, b: Array): Array; +/** + * bindings/esm/objectFunction + * @param a `bindings/esm/PlainObject` + * @param b `bindings/esm/PlainObject` + * @returns `bindings/esm/PlainObject` + */ +export declare function objectFunction(a: __Record13, b: __Record13): __Record13; +/** + * bindings/esm/newInternref + * @returns `bindings/esm/NonPlainObject` + */ +export declare function newInternref(): __Internref15; +/** + * bindings/esm/internrefFunction + * @param a `bindings/esm/NonPlainObject` + * @param b `bindings/esm/NonPlainObject` + * @returns `bindings/esm/NonPlainObject` + */ +export declare function internrefFunction(a: __Internref15, b: __Internref15): __Internref15; +/** + * bindings/esm/functionFunction + * @param fn `() => void` + * @returns `() => void` + */ +export declare function functionFunction(fn: __Internref4): __Internref4; +/** bindings/esm/fn */ +export declare const fn: { + /** @type `() => void` */ + get value(): __Internref4 +}; +/** bindings/esm/PlainObject */ +declare interface __Record13 { + /** @type `i8` */ + a: number | TOmittable; + /** @type `i16` */ + b: number | TOmittable; + /** @type `i32` */ + c: number | TOmittable; + /** @type `i64` */ + d: bigint | TOmittable; + /** @type `u8` */ + e: number | TOmittable; + /** @type `u16` */ + f: number | TOmittable; + /** @type `u32` */ + g: number | TOmittable; + /** @type `u64` */ + h: bigint | TOmittable; + /** @type `isize` */ + i: number | TOmittable; + /** @type `usize` */ + j: number | TOmittable; + /** @type `bool` */ + k: boolean | TOmittable; + /** @type `f32` */ + l: number | TOmittable; + /** @type `f64` */ + m: number | TOmittable; + /** @type `~lib/string/String | null` */ + n: string | null | TOmittable; + /** @type `~lib/typedarray/Uint8Array | null` */ + o: Uint8Array | null | TOmittable; + /** @type `~lib/array/Array<~lib/string/String> | null` */ + p: Array | null | TOmittable; +} +/** bindings/esm/NonPlainObject */ +declare class __Internref15 extends Number { + private __nominal15: symbol; + private __nominal0: symbol; +} +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref4 extends Number { + private __nominal4: symbol; + private __nominal0: symbol; +} diff --git a/tests/compiler/bindings/esm.debug.js b/tests/compiler/bindings/esm.debug.js new file mode 100644 index 0000000000..e1a514ba47 --- /dev/null +++ b/tests/compiler/bindings/esm.debug.js @@ -0,0 +1,561 @@ +async function instantiate(module, imports = {}) { + const adaptedImports = { + env: Object.setPrototypeOf({ + trace(message, n, a0, a1, a2, a3, a4) { + // ~lib/builtins/trace(~lib/string/String, i32?, f64?, f64?, f64?, f64?, f64?) => void + message = __liftString(message >>> 0); + (() => { + // @external.js + console.log(message, ...[a0, a1, a2, a3, a4].slice(0, n)); + })(); + }, + "console.log"(text) { + // ~lib/bindings/dom/console.log(~lib/string/String) => void + text = __liftString(text >>> 0); + console.log(text); + }, + "Math.E": ( + // ~lib/bindings/dom/Math.E: f64 + Math.E + ), + "Math.log"(x) { + // ~lib/bindings/dom/Math.log(f64) => f64 + return Math.log(x); + }, + "globalThis.globalThis": ( + // bindings/esm/immutableGlobalNested: ref_extern | null + globalThis.globalThis + ), + "Date.getTimezoneOffset"() { + // bindings/esm/Date_getTimezoneOffset() => i32 + return (() => { + // @external.js + return new Date().getTimezoneOffset(); + })(); + }, + abort(message, fileName, lineNumber, columnNumber) { + // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void + message = __liftString(message >>> 0); + fileName = __liftString(fileName >>> 0); + lineNumber = lineNumber >>> 0; + columnNumber = columnNumber >>> 0; + (() => { + // @external.js + throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); + })(); + }, + }, Object.assign(Object.create(globalThis), imports.env || {})), + }; + const { exports } = await WebAssembly.instantiate(module, adaptedImports); + const memory = exports.memory || imports.env.memory; + const adaptedExports = Object.setPrototypeOf({ + stringGlobal: { + // bindings/esm/stringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.stringGlobal.value >>> 0); + } + }, + mutableStringGlobal: { + // bindings/esm/mutableStringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.mutableStringGlobal.value >>> 0); + }, + set value(value) { + exports.mutableStringGlobal.value = __lowerString(value) || __notnull(); + } + }, + Enum: (values => ( + // bindings/esm/Enum + values[values.ONE = exports["Enum.ONE"].valueOf()] = "ONE", + values[values.TWO = exports["Enum.TWO"].valueOf()] = "TWO", + values[values.THREE = exports["Enum.THREE"].valueOf()] = "THREE", + values + ))({}), + ConstEnum: (values => ( + // bindings/esm/ConstEnum + values[values.ONE = 1] = "ONE", + values[values.TWO = 2] = "TWO", + values[values.THREE = 3] = "THREE", + values + ))({}), + plainFunction64(a, b) { + // bindings/esm/plainFunction64(i64, i64) => i64 + a = a || 0n; + b = b || 0n; + return exports.plainFunction64(a, b); + }, + getMaxUnsigned32() { + // bindings/esm/getMaxUnsigned32() => u32 + return exports.getMaxUnsigned32() >>> 0; + }, + getMaxUnsigned64() { + // bindings/esm/getMaxUnsigned64() => u64 + return BigInt.asUintN(64, exports.getMaxUnsigned64()); + }, + bufferFunction(a, b) { + // bindings/esm/bufferFunction(~lib/arraybuffer/ArrayBuffer, ~lib/arraybuffer/ArrayBuffer) => ~lib/arraybuffer/ArrayBuffer + a = __retain(__lowerBuffer(a) || __notnull()); + b = __lowerBuffer(b) || __notnull(); + try { + return __liftBuffer(exports.bufferFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunction(a, b) { + // bindings/esm/stringFunction(~lib/string/String, ~lib/string/String) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + return __liftString(exports.stringFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunctionOptional(a, b) { + // bindings/esm/stringFunctionOptional(~lib/string/String, ~lib/string/String?) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + exports.__setArgumentsLength(arguments.length); + return __liftString(exports.stringFunctionOptional(a, b) >>> 0); + } finally { + __release(a); + } + }, + typedarrayFunction(a, b) { + // bindings/esm/typedarrayFunction(~lib/typedarray/Int16Array, ~lib/typedarray/Float32Array) => ~lib/typedarray/Uint64Array + a = __retain(__lowerTypedArray(Int16Array, 5, 1, a) || __notnull()); + b = __lowerTypedArray(Float32Array, 6, 2, b) || __notnull(); + try { + return __liftTypedArray(BigUint64Array, exports.typedarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + staticarrayFunction(a, b) { + // bindings/esm/staticarrayFunction(~lib/staticarray/StaticArray, ~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __retain(__lowerStaticArray(__setU32, 8, 2, a, Int32Array) || __notnull()); + b = __lowerStaticArray(__setU32, 8, 2, b, Int32Array) || __notnull(); + try { + return __liftStaticArray(__getI32, 2, exports.staticarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + staticarrayU16(a) { + // bindings/esm/staticarrayU16(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __lowerStaticArray(__setU16, 9, 1, a, Uint16Array) || __notnull(); + return __liftStaticArray(__getU16, 1, exports.staticarrayU16(a) >>> 0); + }, + staticarrayI64(a) { + // bindings/esm/staticarrayI64(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __lowerStaticArray(__setU64, 10, 3, a, BigInt64Array) || __notnull(); + return __liftStaticArray(__getI64, 3, exports.staticarrayI64(a) >>> 0); + }, + arrayFunction(a, b) { + // bindings/esm/arrayFunction(~lib/array/Array, ~lib/array/Array) => ~lib/array/Array + a = __retain(__lowerArray(__setU32, 11, 2, a) || __notnull()); + b = __lowerArray(__setU32, 11, 2, b) || __notnull(); + try { + return __liftArray(__getI32, 2, exports.arrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + arrayOfStringsFunction(a, b) { + // bindings/esm/arrayOfStringsFunction(~lib/array/Array<~lib/string/String>, ~lib/array/Array<~lib/string/String>) => ~lib/array/Array<~lib/string/String> + a = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerString(value) || __notnull()); }, 12, 2, a) || __notnull()); + b = __lowerArray((pointer, value) => { __setU32(pointer, __lowerString(value) || __notnull()); }, 12, 2, b) || __notnull(); + try { + return __liftArray(pointer => __liftString(__getU32(pointer)), 2, exports.arrayOfStringsFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + objectFunction(a, b) { + // bindings/esm/objectFunction(bindings/esm/PlainObject, bindings/esm/PlainObject) => bindings/esm/PlainObject + a = __retain(__lowerRecord13(a) || __notnull()); + b = __lowerRecord13(b) || __notnull(); + try { + return __liftRecord13(exports.objectFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + newInternref() { + // bindings/esm/newInternref() => bindings/esm/NonPlainObject + return __liftInternref(exports.newInternref() >>> 0); + }, + internrefFunction(a, b) { + // bindings/esm/internrefFunction(bindings/esm/NonPlainObject, bindings/esm/NonPlainObject) => bindings/esm/NonPlainObject + a = __retain(__lowerInternref(a) || __notnull()); + b = __lowerInternref(b) || __notnull(); + try { + return __liftInternref(exports.internrefFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + functionFunction(fn) { + // bindings/esm/functionFunction(() => void) => () => void + fn = __lowerInternref(fn) || __notnull(); + return __liftInternref(exports.functionFunction(fn) >>> 0); + }, + fn: { + // bindings/esm/fn: () => void + valueOf() { return this.value; }, + get value() { + return __liftInternref(exports.fn.value >>> 0); + } + }, + }, exports); + function __lowerRecord13(value) { + // bindings/esm/PlainObject + // Hint: Opt-out from lowering as a record by providing an empty constructor + if (value == null) return 0; + const pointer = exports.__pin(exports.__new(68, 13)); + __setU8(pointer + 0, value.a); + __setU16(pointer + 2, value.b); + __setU32(pointer + 4, value.c); + __setU64(pointer + 8, value.d || 0n); + __setU8(pointer + 16, value.e); + __setU16(pointer + 18, value.f); + __setU32(pointer + 20, value.g); + __setU64(pointer + 24, value.h || 0n); + __setU32(pointer + 32, value.i); + __setU32(pointer + 36, value.j); + __setU8(pointer + 40, value.k ? 1 : 0); + __setF32(pointer + 44, value.l); + __setF64(pointer + 48, value.m); + __setU32(pointer + 56, __lowerString(value.n)); + __setU32(pointer + 60, __lowerTypedArray(Uint8Array, 14, 0, value.o)); + __setU32(pointer + 64, __lowerArray((pointer, value) => { __setU32(pointer, __lowerString(value) || __notnull()); }, 12, 2, value.p)); + exports.__unpin(pointer); + return pointer; + } + function __liftRecord13(pointer) { + // bindings/esm/PlainObject + // Hint: Opt-out from lifting as a record by providing an empty constructor + if (!pointer) return null; + return { + a: __getI8(pointer + 0), + b: __getI16(pointer + 2), + c: __getI32(pointer + 4), + d: __getI64(pointer + 8), + e: __getU8(pointer + 16), + f: __getU16(pointer + 18), + g: __getU32(pointer + 20), + h: __getU64(pointer + 24), + i: __getI32(pointer + 32), + j: __getU32(pointer + 36), + k: __getU8(pointer + 40) != 0, + l: __getF32(pointer + 44), + m: __getF64(pointer + 48), + n: __liftString(__getU32(pointer + 56)), + o: __liftTypedArray(Uint8Array, __getU32(pointer + 60)), + p: __liftArray(pointer => __liftString(__getU32(pointer)), 2, __getU32(pointer + 64)), + }; + } + function __liftBuffer(pointer) { + if (!pointer) return null; + return memory.buffer.slice(pointer, pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2]); + } + function __lowerBuffer(value) { + if (value == null) return 0; + const pointer = exports.__new(value.byteLength, 1) >>> 0; + new Uint8Array(memory.buffer).set(new Uint8Array(value), pointer); + return pointer; + } + function __liftString(pointer) { + if (!pointer) return null; + const + end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1, + memoryU16 = new Uint16Array(memory.buffer); + let + start = pointer >>> 1, + string = ""; + while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024)); + return string + String.fromCharCode(...memoryU16.subarray(start, end)); + } + function __lowerString(value) { + if (value == null) return 0; + const + length = value.length, + pointer = exports.__new(length << 1, 2) >>> 0, + memoryU16 = new Uint16Array(memory.buffer); + for (let i = 0; i < length; ++i) memoryU16[(pointer >>> 1) + i] = value.charCodeAt(i); + return pointer; + } + function __liftArray(liftElement, align, pointer) { + if (!pointer) return null; + const + dataStart = __getU32(pointer + 4), + length = __dataview.getUint32(pointer + 12, true), + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(dataStart + (i << align >>> 0)); + return values; + } + function __lowerArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 1)) >>> 0, + header = exports.__pin(exports.__new(16, id)) >>> 0; + __setU32(header + 0, buffer); + __dataview.setUint32(header + 4, buffer, true); + __dataview.setUint32(header + 8, length << align, true); + __dataview.setUint32(header + 12, length, true); + for (let i = 0; i < length; ++i) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + exports.__unpin(header); + return header; + } + function __liftTypedArray(constructor, pointer) { + if (!pointer) return null; + return new constructor( + memory.buffer, + __getU32(pointer + 4), + __dataview.getUint32(pointer + 8, true) / constructor.BYTES_PER_ELEMENT + ).slice(); + } + function __lowerTypedArray(constructor, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 1)) >>> 0, + header = exports.__new(12, id) >>> 0; + __setU32(header + 0, buffer); + __dataview.setUint32(header + 4, buffer, true); + __dataview.setUint32(header + 8, length << align, true); + new constructor(memory.buffer, buffer, length).set(values); + exports.__unpin(buffer); + return header; + } + function __liftStaticArray(liftElement, align, pointer) { + if (!pointer) return null; + const + length = __getU32(pointer - 4) >>> align, + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(pointer + (i << align >>> 0)); + return values; + } + function __lowerStaticArray(lowerElement, id, align, values, typedConstructor) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, id)) >>> 0; + if (typedConstructor) { + new typedConstructor(memory.buffer, buffer, length).set(values); + } else { + for (let i = 0; i < length; i++) lowerElement(buffer + (i << align >>> 0), values[i]); + } + exports.__unpin(buffer); + return buffer; + } + class Internref extends Number {} + const registry = new FinalizationRegistry(__release); + function __liftInternref(pointer) { + if (!pointer) return null; + const sentinel = new Internref(__retain(pointer)); + registry.register(sentinel, pointer); + return sentinel; + } + function __lowerInternref(value) { + if (value == null) return 0; + if (value instanceof Internref) return value.valueOf(); + throw TypeError("internref expected"); + } + const refcounts = new Map(); + function __retain(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount) refcounts.set(pointer, refcount + 1); + else refcounts.set(exports.__pin(pointer), 1); + } + return pointer; + } + function __release(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount === 1) exports.__unpin(pointer), refcounts.delete(pointer); + else if (refcount) refcounts.set(pointer, refcount - 1); + else throw Error(`invalid refcount '${refcount}' for reference '${pointer}'`); + } + } + function __notnull() { + throw TypeError("value must not be null"); + } + let __dataview = new DataView(memory.buffer); + function __setU8(pointer, value) { + try { + __dataview.setUint8(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setUint8(pointer, value, true); + } + } + function __setU16(pointer, value) { + try { + __dataview.setUint16(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setUint16(pointer, value, true); + } + } + function __setU32(pointer, value) { + try { + __dataview.setUint32(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setUint32(pointer, value, true); + } + } + function __setU64(pointer, value) { + try { + __dataview.setBigUint64(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setBigUint64(pointer, value, true); + } + } + function __setF32(pointer, value) { + try { + __dataview.setFloat32(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setFloat32(pointer, value, true); + } + } + function __setF64(pointer, value) { + try { + __dataview.setFloat64(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setFloat64(pointer, value, true); + } + } + function __getI8(pointer) { + try { + return __dataview.getInt8(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt8(pointer, true); + } + } + function __getU8(pointer) { + try { + return __dataview.getUint8(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint8(pointer, true); + } + } + function __getI16(pointer) { + try { + return __dataview.getInt16(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt16(pointer, true); + } + } + function __getU16(pointer) { + try { + return __dataview.getUint16(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint16(pointer, true); + } + } + function __getI32(pointer) { + try { + return __dataview.getInt32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt32(pointer, true); + } + } + function __getU32(pointer) { + try { + return __dataview.getUint32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint32(pointer, true); + } + } + function __getI64(pointer) { + try { + return __dataview.getBigInt64(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getBigInt64(pointer, true); + } + } + function __getU64(pointer) { + try { + return __dataview.getBigUint64(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getBigUint64(pointer, true); + } + } + function __getF32(pointer) { + try { + return __dataview.getFloat32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getFloat32(pointer, true); + } + } + function __getF64(pointer) { + try { + return __dataview.getFloat64(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getFloat64(pointer, true); + } + } + exports._start(); + return adaptedExports; +} +export const { + memory, + __new, + __pin, + __unpin, + __collect, + __rtti_base, + plainGlobal, + plainMutableGlobal, + stringGlobal, + mutableStringGlobal, + Enum, + ConstEnum, + plainFunction, + plainFunction64, + getMaxUnsigned32, + getMaxUnsigned64, + bufferFunction, + stringFunction, + stringFunctionOptional, + typedarrayFunction, + staticarrayFunction, + staticarrayU16, + staticarrayI64, + arrayFunction, + arrayOfStringsFunction, + objectFunction, + newInternref, + internrefFunction, + functionFunction, + fn, +} = await (async url => instantiate( + await (async () => { + const isNodeOrBun = typeof process != "undefined" && process.versions != null && (process.versions.node != null || process.versions.bun != null); + if (isNodeOrBun) { return globalThis.WebAssembly.compile(await (await import("node:fs/promises")).readFile(url)); } + else { return await globalThis.WebAssembly.compileStreaming(globalThis.fetch(url)); } + })(), { + } +))(new URL("esm.debug.wasm", import.meta.url)); diff --git a/tests/compiler/bindings/esm.debug.wat b/tests/compiler/bindings/esm.debug.wat new file mode 100644 index 0000000000..a6850592f3 --- /dev/null +++ b/tests/compiler/bindings/esm.debug.wat @@ -0,0 +1,5804 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i64))) + (type $9 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $10 (func (param f64) (result f64))) + (type $11 (func (param i64 i64) (result i64))) + (type $12 (func (result i64))) + (type $13 (func (param i32 i32 i64) (result i32))) + (type $14 (func (param i32 f32))) + (type $15 (func (param i32 f64))) + (type $16 (func (param i32 i32 i32) (result i32))) + (type $17 (func (param i32 i32 i64))) + (type $18 (func (param i32 i32) (result f32))) + (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) + (import "env" "globalThis" (global $bindings/esm/immutableGlobal externref)) + (import "env" "globalThis.globalThis" (global $bindings/esm/immutableGlobalNested externref)) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $bindings/esm/plainGlobal i32 (i32.const 1)) + (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) + (global $bindings/esm/stringGlobal i32 (i32.const 32)) + (global $bindings/esm/mutableStringGlobal (mut i32) (i32.const 64)) + (global $bindings/esm/Enum.ONE i32 (i32.const 1)) + (global $bindings/esm/Enum.TWO i32 (i32.const 2)) + (global $bindings/esm/Enum.THREE i32 (i32.const 3)) + (global $bindings/esm/ConstEnum.ONE i32 (i32.const 1)) + (global $bindings/esm/ConstEnum.TWO i32 (i32.const 2)) + (global $bindings/esm/ConstEnum.THREE i32 (i32.const 3)) + (global $bindings/esm/fn i32 (i32.const 96)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1184)) + (global $~lib/memory/__data_end i32 (i32.const 1252)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34020)) + (global $~lib/memory/__heap_base i32 (i32.const 34020)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00t\00r\00a\00c\00e\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g\00\00\00\00\00\00\00") + (data $5 (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $6 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $7 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 624) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 748) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 812) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") + (data $18 (i32.const 876) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $19 (i32.const 924) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 1052) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") + (data $21 (i32.const 1116) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") + (data $22 (i32.const 1184) "\10\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\81\08\00\00\01\19\00\00\01\02\00\00$\t\00\00\a4\00\00\00$\n\00\00\02\t\00\00\02A\00\00\00\00\00\00A\00\00\00 \00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $start:bindings/esm~anonymous|0) + (export "plainGlobal" (global $bindings/esm/plainGlobal)) + (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) + (export "stringGlobal" (global $bindings/esm/stringGlobal)) + (export "mutableStringGlobal" (global $bindings/esm/mutableStringGlobal)) + (export "Enum.ONE" (global $bindings/esm/Enum.ONE)) + (export "Enum.TWO" (global $bindings/esm/Enum.TWO)) + (export "Enum.THREE" (global $bindings/esm/Enum.THREE)) + (export "ConstEnum.ONE" (global $bindings/esm/ConstEnum.ONE)) + (export "ConstEnum.TWO" (global $bindings/esm/ConstEnum.TWO)) + (export "ConstEnum.THREE" (global $bindings/esm/ConstEnum.THREE)) + (export "plainFunction" (func $bindings/esm/plainFunction)) + (export "plainFunction64" (func $bindings/esm/plainFunction64)) + (export "getMaxUnsigned32" (func $bindings/esm/getMaxUnsigned32)) + (export "getMaxUnsigned64" (func $bindings/esm/getMaxUnsigned64)) + (export "newInternref" (func $bindings/esm/newInternref)) + (export "fn" (global $bindings/esm/fn)) + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (export "__setArgumentsLength" (func $~setArgumentsLength)) + (export "_start" (func $~start)) + (export "bufferFunction" (func $export:bindings/esm/bufferFunction)) + (export "stringFunction" (func $export:bindings/esm/stringFunction)) + (export "stringFunctionOptional" (func $export:bindings/esm/stringFunctionOptional@varargs)) + (export "typedarrayFunction" (func $export:bindings/esm/typedarrayFunction)) + (export "staticarrayFunction" (func $export:bindings/esm/staticarrayFunction)) + (export "staticarrayU16" (func $export:bindings/esm/staticarrayU16)) + (export "staticarrayI64" (func $export:bindings/esm/staticarrayI64)) + (export "arrayFunction" (func $export:bindings/esm/arrayFunction)) + (export "arrayOfStringsFunction" (func $export:bindings/esm/arrayOfStringsFunction)) + (export "objectFunction" (func $export:bindings/esm/objectFunction)) + (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) + (export "functionFunction" (func $export:bindings/esm/functionFunction)) + (func $start:bindings/esm~anonymous|0 + ) + (func $start:bindings/esm + i32.const 128 + i32.const 1 + f64.const 42 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 160 + call $~lib/bindings/dom/console.log + global.get $~lib/bindings/dom/Math.E + call $~lib/bindings/dom/Math.log + drop + global.get $bindings/esm/immutableGlobal + drop + global.get $bindings/esm/immutableGlobalNested + drop + call $bindings/esm/Date_getTimezoneOffset + drop + ) + (func $bindings/esm/plainFunction (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $bindings/esm/plainFunction64 (param $a i64) (param $b i64) (result i64) + local.get $a + local.get $b + i64.add + return + ) + (func $bindings/esm/getMaxUnsigned32 (result i32) + global.get $~lib/builtins/u32.MAX_VALUE + return + ) + (func $bindings/esm/getMaxUnsigned64 (result i64) + global.get $~lib/builtins/u64.MAX_VALUE + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 528 + i32.const 592 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 400 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 336 + i32.const 672 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 336 + i32.const 400 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/arraybuffer/ArrayBufferView#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/staticarray/StaticArray#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 2 + i32.shr_u + return + ) + (func $~lib/staticarray/StaticArray#__uset (param $this i32) (param $index i32) (param $value i32) + local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + ) + (func $bindings/esm/staticarrayU16 (param $a i32) (result i32) + local.get $a + return + ) + (func $bindings/esm/staticarrayI64 (param $a i32) (result i32) + local.get $a + return + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array<~lib/string/String>#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/string/String>#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array<~lib/string/String>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $bindings/esm/PlainObject#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store8 + ) + (func $bindings/esm/PlainObject#set:b (param $this i32) (param $b i32) + local.get $this + local.get $b + i32.store16 offset=2 + ) + (func $bindings/esm/PlainObject#set:c (param $this i32) (param $c i32) + local.get $this + local.get $c + i32.store offset=4 + ) + (func $bindings/esm/PlainObject#set:d (param $this i32) (param $d i64) + local.get $this + local.get $d + i64.store offset=8 + ) + (func $bindings/esm/PlainObject#set:e (param $this i32) (param $e i32) + local.get $this + local.get $e + i32.store8 offset=16 + ) + (func $bindings/esm/PlainObject#set:f (param $this i32) (param $f i32) + local.get $this + local.get $f + i32.store16 offset=18 + ) + (func $bindings/esm/PlainObject#set:g (param $this i32) (param $g i32) + local.get $this + local.get $g + i32.store offset=20 + ) + (func $bindings/esm/PlainObject#set:h (param $this i32) (param $h i64) + local.get $this + local.get $h + i64.store offset=24 + ) + (func $bindings/esm/PlainObject#set:i (param $this i32) (param $i i32) + local.get $this + local.get $i + i32.store offset=32 + ) + (func $bindings/esm/PlainObject#set:j (param $this i32) (param $j i32) + local.get $this + local.get $j + i32.store offset=36 + ) + (func $bindings/esm/PlainObject#set:k (param $this i32) (param $k i32) + local.get $this + local.get $k + i32.store8 offset=40 + ) + (func $bindings/esm/PlainObject#set:l (param $this i32) (param $l f32) + local.get $this + local.get $l + f32.store offset=44 + ) + (func $bindings/esm/PlainObject#set:m (param $this i32) (param $m f64) + local.get $this + local.get $m + f64.store offset=48 + ) + (func $bindings/esm/PlainObject#set:n (param $this i32) (param $n i32) + local.get $this + local.get $n + i32.store offset=56 + local.get $this + local.get $n + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $bindings/esm/PlainObject#set:o (param $this i32) (param $o i32) + local.get $this + local.get $o + i32.store offset=60 + local.get $this + local.get $o + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $bindings/esm/PlainObject#set:p (param $this i32) (param $p i32) + local.get $this + local.get $p + i32.store offset=64 + local.get $this + local.get $p + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $bindings/esm/PlainObject#get:a (param $this i32) (result i32) + local.get $this + i32.load8_s + ) + (func $bindings/esm/PlainObject#get:b (param $this i32) (result i32) + local.get $this + i32.load16_s offset=2 + ) + (func $bindings/esm/newInternref (result i32) + i32.const 0 + call $bindings/esm/NonPlainObject#constructor + return + ) + (func $bindings/esm/internrefFunction (param $a i32) (param $b i32) (result i32) + local.get $a + return + ) + (func $bindings/esm/functionFunction (param $fn i32) (result i32) + local.get $fn + return + ) + (func $~lib/rt/itcms/__pin (param $ptr i32) (result i32) + (local $obj i32) + local.get $ptr + if + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + local.get $obj + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + if + i32.const 1072 + i32.const 400 + i32.const 338 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/Object#unlink + local.get $obj + global.get $~lib/rt/itcms/pinSpace + i32.const 3 + call $~lib/rt/itcms/Object#linkTo + end + local.get $ptr + return + ) + (func $~lib/rt/itcms/__unpin (param $ptr i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + local.get $obj + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.ne + if + i32.const 1136 + i32.const 400 + i32.const 352 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + else + local.get $obj + call $~lib/rt/itcms/Object#unlink + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + end + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $bindings/esm/stringGlobal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $bindings/esm/mutableStringGlobal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 528 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 944 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 336 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1072 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1136 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $bindings/esm/PlainObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=56 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=60 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=64 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $bindings/esm/NonPlainObject + block $~lib/typedarray/Uint8Array + block $bindings/esm/PlainObject + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/typedarray/Uint64Array + block $~lib/typedarray/Float32Array + block $~lib/typedarray/Int16Array + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/typedarray/Int16Array $~lib/typedarray/Float32Array $~lib/typedarray/Uint64Array $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array<~lib/string/String> $bindings/esm/PlainObject $~lib/typedarray/Uint8Array $bindings/esm/NonPlainObject $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint64Array~visit + return + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $bindings/esm/PlainObject~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + return + end + unreachable + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:bindings/esm + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 480 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 624 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 34048 + i32.const 34096 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $bindings/esm/bufferFunction (param $a i32) (param $b i32) (result i32) + (local $aByteLength i32) + (local $bByteLength i32) + (local $out i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $aByteLength + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bByteLength + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $aByteLength + local.get $bByteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $out + i32.store offset=4 + local.get $out + local.get $a + local.get $aByteLength + memory.copy + local.get $out + local.get $aByteLength + i32.add + local.get $b + local.get $bByteLength + memory.copy + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 736 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $bindings/esm/stringFunction (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $bindings/esm/stringFunctionOptional (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $bindings/esm/stringFunctionOptional@varargs (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 64 + local.tee $b + i32.store + end + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $bindings/esm/stringFunctionOptional + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) + (local $buffer i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $length + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 224 + i32.const 272 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + local.get $alignLog2 + i32.shl + local.tee $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $length + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Uint64Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int16Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Float32Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Int16Array#__get (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 528 + i32.const 768 + i32.const 452 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Uint64Array#__set (param $this i32) (param $index i32) (param $value i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 528 + i32.const 768 + i32.const 1173 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + local.get $value + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#__get (param $this i32) (param $index i32) (result f32) + (local $2 i32) + (local $3 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 528 + i32.const 768 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $bindings/esm/typedarrayFunction (param $a i32) (param $b i32) (result i32) + (local $out i32) + (local $i i32) + (local $i|4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/typedarray/Int16Array#get:length + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/typedarray/Float32Array#get:length + i32.add + call $~lib/typedarray/Uint64Array#constructor + local.tee $out + i32.store offset=4 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/typedarray/Int16Array#get:length + i32.lt_s + if + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $i + call $~lib/typedarray/Int16Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $i|4 + loop $for-loop|1 + local.get $i|4 + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/typedarray/Float32Array#get:length + i32.lt_s + if + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/typedarray/Int16Array#get:length + local.get $i|4 + i32.add + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $i|4 + call $~lib/typedarray/Float32Array#__get + i64.trunc_sat_f32_u + call $~lib/typedarray/Uint64Array#__set + local.get $i|4 + i32.const 1 + i32.add + local.set $i|4 + br $for-loop|1 + end + end + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/staticarray/StaticArray#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u + if + i32.const 528 + i32.const 832 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/staticarray/StaticArray#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u + if + i32.const 528 + i32.const 832 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + local.get $value + call $~lib/staticarray/StaticArray#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $bindings/esm/staticarrayFunction (param $a i32) (param $b i32) (result i32) + (local $c i32) + (local $i i32) + (local $i|4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/staticarray/StaticArray#get:length + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/staticarray/StaticArray#get:length + i32.add + call $~lib/staticarray/StaticArray#constructor + local.tee $c + i32.store offset=4 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/staticarray/StaticArray#get:length + i32.lt_s + if + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $i + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $i|4 + loop $for-loop|1 + local.get $i|4 + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/staticarray/StaticArray#get:length + i32.lt_s + if + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/staticarray/StaticArray#get:length + local.get $i|4 + i32.add + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $i|4 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $i|4 + i32.const 1 + i32.add + local.set $i|4 + br $for-loop|1 + end + end + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 224 + i32.const 896 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 528 + i32.const 896 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 224 + i32.const 896 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 528 + i32.const 896 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $bindings/esm/arrayFunction (param $a i32) (param $b i32) (result i32) + (local $c i32) + (local $i i32) + (local $i|4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.add + call $~lib/array/Array#constructor + local.tee $c + i32.store offset=4 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $i + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $i|4 + loop $for-loop|1 + local.get $i|4 + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/array/Array#get:length + local.get $i|4 + i32.add + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $i|4 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $i|4 + i32.const 1 + i32.add + local.set $i|4 + br $for-loop|1 + end + end + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/array/Array<~lib/string/String>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 224 + i32.const 896 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array<~lib/string/String>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array<~lib/string/String>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array<~lib/string/String>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<~lib/string/String>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.ge_u + if + i32.const 528 + i32.const 896 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 944 + i32.const 896 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 528 + i32.const 896 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<~lib/string/String>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $bindings/esm/arrayOfStringsFunction (param $a i32) (param $b i32) (result i32) + (local $c i32) + (local $i i32) + (local $i|4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length + i32.add + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $c + i32.store offset=4 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length + i32.lt_s + if + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array<~lib/string/String>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/array/Array<~lib/string/String>#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $i|4 + loop $for-loop|1 + local.get $i|4 + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length + i32.lt_s + if + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length + local.get $i|4 + i32.add + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i|4 + call $~lib/array/Array<~lib/string/String>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/array/Array<~lib/string/String>#__set + local.get $i|4 + i32.const 1 + i32.add + local.set $i|4 + br $for-loop|1 + end + end + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $bindings/esm/PlainObject#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:b + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:c + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i64.const 0 + call $bindings/esm/PlainObject#set:d + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:e + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:f + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:g + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i64.const 0 + call $bindings/esm/PlainObject#set:h + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:i + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:j + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:k + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + f32.const 0 + call $bindings/esm/PlainObject#set:l + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + f64.const 0 + call $bindings/esm/PlainObject#set:m + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:n + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:o + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:p + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $bindings/esm/objectFunction (param $a i32) (param $b i32) (result i32) + (local $ref i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $bindings/esm/PlainObject#constructor + local.tee $ref + i32.store + local.get $ref + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $a + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $bindings/esm/PlainObject#get:a + local.get $b + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $bindings/esm/PlainObject#get:a + i32.add + call $bindings/esm/PlainObject#set:a + local.get $ref + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $a + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $bindings/esm/PlainObject#get:b + local.get $b + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $bindings/esm/PlainObject#get:b + i32.add + call $bindings/esm/PlainObject#set:b + local.get $ref + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 224 + i32.const 272 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/staticarray/StaticArray#constructor (param $this i32) (param $length i32) (result i32) + (local $outSize i32) + (local $out i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 224 + i32.const 832 + i32.const 51 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + i32.const 2 + i32.shl + local.set $outSize + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $out + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $bindings/esm/NonPlainObject#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/bufferFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/stringFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/stringFunctionOptional@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/stringFunctionOptional@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/typedarrayFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/staticarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/staticarrayFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/staticarrayU16 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:bindings/esm/staticarrayI64 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/staticarrayI64 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/arrayFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/arrayOfStringsFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/objectFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/internrefFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/functionFunction (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/functionFunction + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/bindings/esm.js b/tests/compiler/bindings/esm.js new file mode 100644 index 0000000000..95e64b4a1f --- /dev/null +++ b/tests/compiler/bindings/esm.js @@ -0,0 +1,79 @@ +import assert from "assert"; + +export function preInstantiate(imports, exports) { + const env = imports.env ||= {}; + env["console.log"] = function() { /* stub */ }; + env["performance.timeOrigin"] = 42; + // env.mutableGlobal = new WebAssembly.Global({ value: "i32", mutable: true}, 42); +} + +// run only once on debug build +var ran = false; + +export async function postInstantiate(instance) { + if (ran) { + console.log(" skipped"); + return; + } + ran = true; + const exports = await import(new URL("esm.debug.js", import.meta.url)); + + assert.strictEqual(exports.plainGlobal.value, 1); + + assert.strictEqual(exports.plainMutableGlobal.value, 2); + exports.plainMutableGlobal.value = 3; + assert.strictEqual(exports.plainMutableGlobal.value, 3); + + assert.strictEqual(exports.stringGlobal.value, "a"); + + assert.strictEqual(exports.mutableStringGlobal.value, "b"); + exports.mutableStringGlobal.value = "c"; + assert.strictEqual(exports.mutableStringGlobal.value, "c"); + + assert.strictEqual(exports.Enum.ONE, 1); + assert.strictEqual(exports.Enum[1], "ONE"); + assert.strictEqual(exports.Enum.TWO, 2); + assert.strictEqual(exports.Enum[2], "TWO"); + + assert.strictEqual(exports.getMaxUnsigned32(), 4294967295); + assert.strictEqual(exports.getMaxUnsigned64(), 18446744073709551615n); + + assert.strictEqual(exports.plainFunction(1, 2), 3); + + { + let ab1 = new Uint8Array([1, 2, 3]).buffer; + let ab2 = new Uint8Array([4, 5, 6]).buffer; + let ab3 = exports.bufferFunction(ab1, ab2); + assert.deepStrictEqual(new Uint8Array(ab3), new Uint8Array([1, 2, 3, 4, 5, 6])); + } + + assert.strictEqual(exports.stringFunction("a", "b"), "ab"); + + { + let i16 = new Int16Array([1,2,3]); + let f32 = new Float32Array([4,5,6]); + let u64 = exports.typedarrayFunction(i16, f32); + assert.deepStrictEqual(u64, new BigUint64Array([1n, 2n, 3n, 4n, 5n, 6n])); + } + + assert.deepStrictEqual(exports.staticarrayFunction([1, 2, 3], [4, 5, 6]), [1, 2, 3, 4, 5, 6]); + + assert.deepStrictEqual(exports.staticarrayU16(Uint16Array.of(1, 2, 3)), [1, 2, 3]); + + assert.deepStrictEqual(exports.staticarrayI64(BigInt64Array.of(1n, 2n, 3n)), [1n, 2n, 3n]); + + assert.deepStrictEqual(exports.arrayFunction([1, 2, 3], [4, 5, 6]), [1, 2, 3, 4, 5, 6]); + + assert.deepStrictEqual(exports.arrayOfStringsFunction(["1", "2", "3"], ["4", "5", "6"]), ["1", "2", "3", "4", "5", "6"]); + + { + let obj = exports.objectFunction({ a: 1, b: 2 }, { a: 3, b: 4 }); + assert.strictEqual(obj.a, 4); + assert.strictEqual(obj.b, 6); + } + + { + let ref = exports.newInternref(); + assert.strictEqual(+exports.internrefFunction(ref, ref), +ref); + } +} diff --git a/tests/compiler/bindings/esm.json b/tests/compiler/bindings/esm.json new file mode 100644 index 0000000000..eb18631afc --- /dev/null +++ b/tests/compiler/bindings/esm.json @@ -0,0 +1,10 @@ +{ + "asc_flags": [ + "--exportStart _start", + "--bindings esm", + "--exportRuntime" + ], + "features": [ + "reference-types" + ] +} diff --git a/tests/compiler/bindings/esm.release.d.ts b/tests/compiler/bindings/esm.release.d.ts new file mode 100644 index 0000000000..b533213227 --- /dev/null +++ b/tests/compiler/bindings/esm.release.d.ts @@ -0,0 +1,208 @@ +/** Exported memory */ +export declare const memory: WebAssembly.Memory; +// Exported runtime interface +export declare function __new(size: number, id: number): number; +export declare function __pin(ptr: number): number; +export declare function __unpin(ptr: number): void; +export declare function __collect(): void; +export declare const __rtti_base: number; +/** bindings/esm/plainGlobal */ +export declare const plainGlobal: { + /** @type `i32` */ + get value(): number +}; +/** bindings/esm/plainMutableGlobal */ +export declare const plainMutableGlobal: { + /** @type `i32` */ + get value(): number; + set value(value: number); +}; +/** bindings/esm/stringGlobal */ +export declare const stringGlobal: { + /** @type `~lib/string/String` */ + get value(): string +}; +/** bindings/esm/mutableStringGlobal */ +export declare const mutableStringGlobal: { + /** @type `~lib/string/String` */ + get value(): string; + set value(value: string); +}; +/** bindings/esm/Enum */ +export declare enum Enum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, +} +/** bindings/esm/ConstEnum */ +export declare enum ConstEnum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, +} +/** + * bindings/esm/plainFunction + * @param a `i32` + * @param b `i32` + * @returns `i32` + */ +export declare function plainFunction(a: number, b: number): number; +/** + * bindings/esm/plainFunction64 + * @param a `i64` + * @param b `i64` + * @returns `i64` + */ +export declare function plainFunction64(a: bigint, b: bigint): bigint; +/** + * bindings/esm/getMaxUnsigned32 + * @returns `u32` + */ +export declare function getMaxUnsigned32(): number; +/** + * bindings/esm/getMaxUnsigned64 + * @returns `u64` + */ +export declare function getMaxUnsigned64(): bigint; +/** + * bindings/esm/bufferFunction + * @param a `~lib/arraybuffer/ArrayBuffer` + * @param b `~lib/arraybuffer/ArrayBuffer` + * @returns `~lib/arraybuffer/ArrayBuffer` + */ +export declare function bufferFunction(a: ArrayBuffer, b: ArrayBuffer): ArrayBuffer; +/** + * bindings/esm/stringFunction + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ +export declare function stringFunction(a: string, b: string): string; +/** + * bindings/esm/stringFunctionOptional + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ +export declare function stringFunctionOptional(a: string, b?: string): string; +/** + * bindings/esm/typedarrayFunction + * @param a `~lib/typedarray/Int16Array` + * @param b `~lib/typedarray/Float32Array` + * @returns `~lib/typedarray/Uint64Array` + */ +export declare function typedarrayFunction(a: Int16Array, b: Float32Array): BigUint64Array; +/** + * bindings/esm/staticarrayFunction + * @param a `~lib/staticarray/StaticArray` + * @param b `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ +export declare function staticarrayFunction(a: ArrayLike, b: ArrayLike): ArrayLike; +/** + * bindings/esm/staticarrayU16 + * @param a `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ +export declare function staticarrayU16(a: ArrayLike): ArrayLike; +/** + * bindings/esm/staticarrayI64 + * @param a `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ +export declare function staticarrayI64(a: ArrayLike): ArrayLike; +/** + * bindings/esm/arrayFunction + * @param a `~lib/array/Array` + * @param b `~lib/array/Array` + * @returns `~lib/array/Array` + */ +export declare function arrayFunction(a: Array, b: Array): Array; +/** + * bindings/esm/arrayOfStringsFunction + * @param a `~lib/array/Array<~lib/string/String>` + * @param b `~lib/array/Array<~lib/string/String>` + * @returns `~lib/array/Array<~lib/string/String>` + */ +export declare function arrayOfStringsFunction(a: Array, b: Array): Array; +/** + * bindings/esm/objectFunction + * @param a `bindings/esm/PlainObject` + * @param b `bindings/esm/PlainObject` + * @returns `bindings/esm/PlainObject` + */ +export declare function objectFunction(a: __Record13, b: __Record13): __Record13; +/** + * bindings/esm/newInternref + * @returns `bindings/esm/NonPlainObject` + */ +export declare function newInternref(): __Internref15; +/** + * bindings/esm/internrefFunction + * @param a `bindings/esm/NonPlainObject` + * @param b `bindings/esm/NonPlainObject` + * @returns `bindings/esm/NonPlainObject` + */ +export declare function internrefFunction(a: __Internref15, b: __Internref15): __Internref15; +/** + * bindings/esm/functionFunction + * @param fn `() => void` + * @returns `() => void` + */ +export declare function functionFunction(fn: __Internref4): __Internref4; +/** bindings/esm/fn */ +export declare const fn: { + /** @type `() => void` */ + get value(): __Internref4 +}; +/** bindings/esm/PlainObject */ +declare interface __Record13 { + /** @type `i8` */ + a: number | TOmittable; + /** @type `i16` */ + b: number | TOmittable; + /** @type `i32` */ + c: number | TOmittable; + /** @type `i64` */ + d: bigint | TOmittable; + /** @type `u8` */ + e: number | TOmittable; + /** @type `u16` */ + f: number | TOmittable; + /** @type `u32` */ + g: number | TOmittable; + /** @type `u64` */ + h: bigint | TOmittable; + /** @type `isize` */ + i: number | TOmittable; + /** @type `usize` */ + j: number | TOmittable; + /** @type `bool` */ + k: boolean | TOmittable; + /** @type `f32` */ + l: number | TOmittable; + /** @type `f64` */ + m: number | TOmittable; + /** @type `~lib/string/String | null` */ + n: string | null | TOmittable; + /** @type `~lib/typedarray/Uint8Array | null` */ + o: Uint8Array | null | TOmittable; + /** @type `~lib/array/Array<~lib/string/String> | null` */ + p: Array | null | TOmittable; +} +/** bindings/esm/NonPlainObject */ +declare class __Internref15 extends Number { + private __nominal15: symbol; + private __nominal0: symbol; +} +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref4 extends Number { + private __nominal4: symbol; + private __nominal0: symbol; +} diff --git a/tests/compiler/bindings/esm.release.js b/tests/compiler/bindings/esm.release.js new file mode 100644 index 0000000000..4f91c23e94 --- /dev/null +++ b/tests/compiler/bindings/esm.release.js @@ -0,0 +1,561 @@ +async function instantiate(module, imports = {}) { + const adaptedImports = { + env: Object.setPrototypeOf({ + trace(message, n, a0, a1, a2, a3, a4) { + // ~lib/builtins/trace(~lib/string/String, i32?, f64?, f64?, f64?, f64?, f64?) => void + message = __liftString(message >>> 0); + (() => { + // @external.js + console.log(message, ...[a0, a1, a2, a3, a4].slice(0, n)); + })(); + }, + "console.log"(text) { + // ~lib/bindings/dom/console.log(~lib/string/String) => void + text = __liftString(text >>> 0); + console.log(text); + }, + "Math.E": ( + // ~lib/bindings/dom/Math.E: f64 + Math.E + ), + "Math.log"(x) { + // ~lib/bindings/dom/Math.log(f64) => f64 + return Math.log(x); + }, + "globalThis.globalThis": ( + // bindings/esm/immutableGlobalNested: ref_extern | null + globalThis.globalThis + ), + "Date.getTimezoneOffset"() { + // bindings/esm/Date_getTimezoneOffset() => i32 + return (() => { + // @external.js + return new Date().getTimezoneOffset(); + })(); + }, + abort(message, fileName, lineNumber, columnNumber) { + // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void + message = __liftString(message >>> 0); + fileName = __liftString(fileName >>> 0); + lineNumber = lineNumber >>> 0; + columnNumber = columnNumber >>> 0; + (() => { + // @external.js + throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); + })(); + }, + }, Object.assign(Object.create(globalThis), imports.env || {})), + }; + const { exports } = await WebAssembly.instantiate(module, adaptedImports); + const memory = exports.memory || imports.env.memory; + const adaptedExports = Object.setPrototypeOf({ + stringGlobal: { + // bindings/esm/stringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.stringGlobal.value >>> 0); + } + }, + mutableStringGlobal: { + // bindings/esm/mutableStringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.mutableStringGlobal.value >>> 0); + }, + set value(value) { + exports.mutableStringGlobal.value = __lowerString(value) || __notnull(); + } + }, + Enum: (values => ( + // bindings/esm/Enum + values[values.ONE = exports["Enum.ONE"].valueOf()] = "ONE", + values[values.TWO = exports["Enum.TWO"].valueOf()] = "TWO", + values[values.THREE = exports["Enum.THREE"].valueOf()] = "THREE", + values + ))({}), + ConstEnum: (values => ( + // bindings/esm/ConstEnum + values[values.ONE = 1] = "ONE", + values[values.TWO = 2] = "TWO", + values[values.THREE = 3] = "THREE", + values + ))({}), + plainFunction64(a, b) { + // bindings/esm/plainFunction64(i64, i64) => i64 + a = a || 0n; + b = b || 0n; + return exports.plainFunction64(a, b); + }, + getMaxUnsigned32() { + // bindings/esm/getMaxUnsigned32() => u32 + return exports.getMaxUnsigned32() >>> 0; + }, + getMaxUnsigned64() { + // bindings/esm/getMaxUnsigned64() => u64 + return BigInt.asUintN(64, exports.getMaxUnsigned64()); + }, + bufferFunction(a, b) { + // bindings/esm/bufferFunction(~lib/arraybuffer/ArrayBuffer, ~lib/arraybuffer/ArrayBuffer) => ~lib/arraybuffer/ArrayBuffer + a = __retain(__lowerBuffer(a) || __notnull()); + b = __lowerBuffer(b) || __notnull(); + try { + return __liftBuffer(exports.bufferFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunction(a, b) { + // bindings/esm/stringFunction(~lib/string/String, ~lib/string/String) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + return __liftString(exports.stringFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunctionOptional(a, b) { + // bindings/esm/stringFunctionOptional(~lib/string/String, ~lib/string/String?) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + exports.__setArgumentsLength(arguments.length); + return __liftString(exports.stringFunctionOptional(a, b) >>> 0); + } finally { + __release(a); + } + }, + typedarrayFunction(a, b) { + // bindings/esm/typedarrayFunction(~lib/typedarray/Int16Array, ~lib/typedarray/Float32Array) => ~lib/typedarray/Uint64Array + a = __retain(__lowerTypedArray(Int16Array, 5, 1, a) || __notnull()); + b = __lowerTypedArray(Float32Array, 6, 2, b) || __notnull(); + try { + return __liftTypedArray(BigUint64Array, exports.typedarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + staticarrayFunction(a, b) { + // bindings/esm/staticarrayFunction(~lib/staticarray/StaticArray, ~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __retain(__lowerStaticArray(__setU32, 8, 2, a, Int32Array) || __notnull()); + b = __lowerStaticArray(__setU32, 8, 2, b, Int32Array) || __notnull(); + try { + return __liftStaticArray(__getI32, 2, exports.staticarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + staticarrayU16(a) { + // bindings/esm/staticarrayU16(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __lowerStaticArray(__setU16, 9, 1, a, Uint16Array) || __notnull(); + return __liftStaticArray(__getU16, 1, exports.staticarrayU16(a) >>> 0); + }, + staticarrayI64(a) { + // bindings/esm/staticarrayI64(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __lowerStaticArray(__setU64, 10, 3, a, BigInt64Array) || __notnull(); + return __liftStaticArray(__getI64, 3, exports.staticarrayI64(a) >>> 0); + }, + arrayFunction(a, b) { + // bindings/esm/arrayFunction(~lib/array/Array, ~lib/array/Array) => ~lib/array/Array + a = __retain(__lowerArray(__setU32, 11, 2, a) || __notnull()); + b = __lowerArray(__setU32, 11, 2, b) || __notnull(); + try { + return __liftArray(__getI32, 2, exports.arrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + arrayOfStringsFunction(a, b) { + // bindings/esm/arrayOfStringsFunction(~lib/array/Array<~lib/string/String>, ~lib/array/Array<~lib/string/String>) => ~lib/array/Array<~lib/string/String> + a = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerString(value) || __notnull()); }, 12, 2, a) || __notnull()); + b = __lowerArray((pointer, value) => { __setU32(pointer, __lowerString(value) || __notnull()); }, 12, 2, b) || __notnull(); + try { + return __liftArray(pointer => __liftString(__getU32(pointer)), 2, exports.arrayOfStringsFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + objectFunction(a, b) { + // bindings/esm/objectFunction(bindings/esm/PlainObject, bindings/esm/PlainObject) => bindings/esm/PlainObject + a = __retain(__lowerRecord13(a) || __notnull()); + b = __lowerRecord13(b) || __notnull(); + try { + return __liftRecord13(exports.objectFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + newInternref() { + // bindings/esm/newInternref() => bindings/esm/NonPlainObject + return __liftInternref(exports.newInternref() >>> 0); + }, + internrefFunction(a, b) { + // bindings/esm/internrefFunction(bindings/esm/NonPlainObject, bindings/esm/NonPlainObject) => bindings/esm/NonPlainObject + a = __retain(__lowerInternref(a) || __notnull()); + b = __lowerInternref(b) || __notnull(); + try { + return __liftInternref(exports.internrefFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + functionFunction(fn) { + // bindings/esm/functionFunction(() => void) => () => void + fn = __lowerInternref(fn) || __notnull(); + return __liftInternref(exports.functionFunction(fn) >>> 0); + }, + fn: { + // bindings/esm/fn: () => void + valueOf() { return this.value; }, + get value() { + return __liftInternref(exports.fn.value >>> 0); + } + }, + }, exports); + function __lowerRecord13(value) { + // bindings/esm/PlainObject + // Hint: Opt-out from lowering as a record by providing an empty constructor + if (value == null) return 0; + const pointer = exports.__pin(exports.__new(68, 13)); + __setU8(pointer + 0, value.a); + __setU16(pointer + 2, value.b); + __setU32(pointer + 4, value.c); + __setU64(pointer + 8, value.d || 0n); + __setU8(pointer + 16, value.e); + __setU16(pointer + 18, value.f); + __setU32(pointer + 20, value.g); + __setU64(pointer + 24, value.h || 0n); + __setU32(pointer + 32, value.i); + __setU32(pointer + 36, value.j); + __setU8(pointer + 40, value.k ? 1 : 0); + __setF32(pointer + 44, value.l); + __setF64(pointer + 48, value.m); + __setU32(pointer + 56, __lowerString(value.n)); + __setU32(pointer + 60, __lowerTypedArray(Uint8Array, 14, 0, value.o)); + __setU32(pointer + 64, __lowerArray((pointer, value) => { __setU32(pointer, __lowerString(value) || __notnull()); }, 12, 2, value.p)); + exports.__unpin(pointer); + return pointer; + } + function __liftRecord13(pointer) { + // bindings/esm/PlainObject + // Hint: Opt-out from lifting as a record by providing an empty constructor + if (!pointer) return null; + return { + a: __getI8(pointer + 0), + b: __getI16(pointer + 2), + c: __getI32(pointer + 4), + d: __getI64(pointer + 8), + e: __getU8(pointer + 16), + f: __getU16(pointer + 18), + g: __getU32(pointer + 20), + h: __getU64(pointer + 24), + i: __getI32(pointer + 32), + j: __getU32(pointer + 36), + k: __getU8(pointer + 40) != 0, + l: __getF32(pointer + 44), + m: __getF64(pointer + 48), + n: __liftString(__getU32(pointer + 56)), + o: __liftTypedArray(Uint8Array, __getU32(pointer + 60)), + p: __liftArray(pointer => __liftString(__getU32(pointer)), 2, __getU32(pointer + 64)), + }; + } + function __liftBuffer(pointer) { + if (!pointer) return null; + return memory.buffer.slice(pointer, pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2]); + } + function __lowerBuffer(value) { + if (value == null) return 0; + const pointer = exports.__new(value.byteLength, 1) >>> 0; + new Uint8Array(memory.buffer).set(new Uint8Array(value), pointer); + return pointer; + } + function __liftString(pointer) { + if (!pointer) return null; + const + end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1, + memoryU16 = new Uint16Array(memory.buffer); + let + start = pointer >>> 1, + string = ""; + while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024)); + return string + String.fromCharCode(...memoryU16.subarray(start, end)); + } + function __lowerString(value) { + if (value == null) return 0; + const + length = value.length, + pointer = exports.__new(length << 1, 2) >>> 0, + memoryU16 = new Uint16Array(memory.buffer); + for (let i = 0; i < length; ++i) memoryU16[(pointer >>> 1) + i] = value.charCodeAt(i); + return pointer; + } + function __liftArray(liftElement, align, pointer) { + if (!pointer) return null; + const + dataStart = __getU32(pointer + 4), + length = __dataview.getUint32(pointer + 12, true), + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(dataStart + (i << align >>> 0)); + return values; + } + function __lowerArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 1)) >>> 0, + header = exports.__pin(exports.__new(16, id)) >>> 0; + __setU32(header + 0, buffer); + __dataview.setUint32(header + 4, buffer, true); + __dataview.setUint32(header + 8, length << align, true); + __dataview.setUint32(header + 12, length, true); + for (let i = 0; i < length; ++i) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + exports.__unpin(header); + return header; + } + function __liftTypedArray(constructor, pointer) { + if (!pointer) return null; + return new constructor( + memory.buffer, + __getU32(pointer + 4), + __dataview.getUint32(pointer + 8, true) / constructor.BYTES_PER_ELEMENT + ).slice(); + } + function __lowerTypedArray(constructor, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 1)) >>> 0, + header = exports.__new(12, id) >>> 0; + __setU32(header + 0, buffer); + __dataview.setUint32(header + 4, buffer, true); + __dataview.setUint32(header + 8, length << align, true); + new constructor(memory.buffer, buffer, length).set(values); + exports.__unpin(buffer); + return header; + } + function __liftStaticArray(liftElement, align, pointer) { + if (!pointer) return null; + const + length = __getU32(pointer - 4) >>> align, + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(pointer + (i << align >>> 0)); + return values; + } + function __lowerStaticArray(lowerElement, id, align, values, typedConstructor) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, id)) >>> 0; + if (typedConstructor) { + new typedConstructor(memory.buffer, buffer, length).set(values); + } else { + for (let i = 0; i < length; i++) lowerElement(buffer + (i << align >>> 0), values[i]); + } + exports.__unpin(buffer); + return buffer; + } + class Internref extends Number {} + const registry = new FinalizationRegistry(__release); + function __liftInternref(pointer) { + if (!pointer) return null; + const sentinel = new Internref(__retain(pointer)); + registry.register(sentinel, pointer); + return sentinel; + } + function __lowerInternref(value) { + if (value == null) return 0; + if (value instanceof Internref) return value.valueOf(); + throw TypeError("internref expected"); + } + const refcounts = new Map(); + function __retain(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount) refcounts.set(pointer, refcount + 1); + else refcounts.set(exports.__pin(pointer), 1); + } + return pointer; + } + function __release(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount === 1) exports.__unpin(pointer), refcounts.delete(pointer); + else if (refcount) refcounts.set(pointer, refcount - 1); + else throw Error(`invalid refcount '${refcount}' for reference '${pointer}'`); + } + } + function __notnull() { + throw TypeError("value must not be null"); + } + let __dataview = new DataView(memory.buffer); + function __setU8(pointer, value) { + try { + __dataview.setUint8(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setUint8(pointer, value, true); + } + } + function __setU16(pointer, value) { + try { + __dataview.setUint16(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setUint16(pointer, value, true); + } + } + function __setU32(pointer, value) { + try { + __dataview.setUint32(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setUint32(pointer, value, true); + } + } + function __setU64(pointer, value) { + try { + __dataview.setBigUint64(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setBigUint64(pointer, value, true); + } + } + function __setF32(pointer, value) { + try { + __dataview.setFloat32(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setFloat32(pointer, value, true); + } + } + function __setF64(pointer, value) { + try { + __dataview.setFloat64(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setFloat64(pointer, value, true); + } + } + function __getI8(pointer) { + try { + return __dataview.getInt8(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt8(pointer, true); + } + } + function __getU8(pointer) { + try { + return __dataview.getUint8(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint8(pointer, true); + } + } + function __getI16(pointer) { + try { + return __dataview.getInt16(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt16(pointer, true); + } + } + function __getU16(pointer) { + try { + return __dataview.getUint16(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint16(pointer, true); + } + } + function __getI32(pointer) { + try { + return __dataview.getInt32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt32(pointer, true); + } + } + function __getU32(pointer) { + try { + return __dataview.getUint32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint32(pointer, true); + } + } + function __getI64(pointer) { + try { + return __dataview.getBigInt64(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getBigInt64(pointer, true); + } + } + function __getU64(pointer) { + try { + return __dataview.getBigUint64(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getBigUint64(pointer, true); + } + } + function __getF32(pointer) { + try { + return __dataview.getFloat32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getFloat32(pointer, true); + } + } + function __getF64(pointer) { + try { + return __dataview.getFloat64(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getFloat64(pointer, true); + } + } + exports._start(); + return adaptedExports; +} +export const { + memory, + __new, + __pin, + __unpin, + __collect, + __rtti_base, + plainGlobal, + plainMutableGlobal, + stringGlobal, + mutableStringGlobal, + Enum, + ConstEnum, + plainFunction, + plainFunction64, + getMaxUnsigned32, + getMaxUnsigned64, + bufferFunction, + stringFunction, + stringFunctionOptional, + typedarrayFunction, + staticarrayFunction, + staticarrayU16, + staticarrayI64, + arrayFunction, + arrayOfStringsFunction, + objectFunction, + newInternref, + internrefFunction, + functionFunction, + fn, +} = await (async url => instantiate( + await (async () => { + const isNodeOrBun = typeof process != "undefined" && process.versions != null && (process.versions.node != null || process.versions.bun != null); + if (isNodeOrBun) { return globalThis.WebAssembly.compile(await (await import("node:fs/promises")).readFile(url)); } + else { return await globalThis.WebAssembly.compileStreaming(globalThis.fetch(url)); } + })(), { + } +))(new URL("esm.release.wasm", import.meta.url)); diff --git a/tests/compiler/bindings/esm.release.wat b/tests/compiler/bindings/esm.release.wat new file mode 100644 index 0000000000..09936b2aba --- /dev/null +++ b/tests/compiler/bindings/esm.release.wat @@ -0,0 +1,4428 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $9 (func (param f64) (result f64))) + (type $10 (func (param i64 i64) (result i64))) + (type $11 (func (result i64))) + (type $12 (func (param i32 i32 i32 i32))) + (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $bindings/esm/plainGlobal i32 (i32.const 1)) + (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) + (global $bindings/esm/stringGlobal i32 (i32.const 1056)) + (global $bindings/esm/mutableStringGlobal (mut i32) (i32.const 1088)) + (global $bindings/esm/Enum.ONE i32 (i32.const 1)) + (global $bindings/esm/Enum.TWO i32 (i32.const 2)) + (global $bindings/esm/Enum.THREE i32 (i32.const 3)) + (global $bindings/esm/ConstEnum.ONE i32 (i32.const 1)) + (global $bindings/esm/ConstEnum.TWO i32 (i32.const 2)) + (global $bindings/esm/ConstEnum.THREE i32 (i32.const 3)) + (global $bindings/esm/fn i32 (i32.const 1120)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2208)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35044)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\02\00\00\00a") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\02\00\00\00b") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\04\00\00\00\08\00\00\00\01") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\n\00\00\00t\00r\00a\00c\00e") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g") + (data $5 (i32.const 1228) ",") + (data $5.1 (i32.const 1240) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $6 (i32.const 1276) "<") + (data $6.1 (i32.const 1288) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $7 (i32.const 1340) "<") + (data $7.1 (i32.const 1352) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $8 (i32.const 1404) "<") + (data $8.1 (i32.const 1416) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $11 (i32.const 1532) "<") + (data $11.1 (i32.const 1544) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $12 (i32.const 1596) ",") + (data $12.1 (i32.const 1608) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $14 (i32.const 1676) "<") + (data $14.1 (i32.const 1688) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $15 (i32.const 1740) "\1c") + (data $15.1 (i32.const 1752) "\02") + (data $16 (i32.const 1772) "<") + (data $16.1 (i32.const 1784) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data $17 (i32.const 1836) "<") + (data $17.1 (i32.const 1848) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data $18 (i32.const 1900) ",") + (data $18.1 (i32.const 1912) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $19 (i32.const 1948) "|") + (data $19.1 (i32.const 1960) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $20 (i32.const 2076) "<") + (data $20.1 (i32.const 2088) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data $21 (i32.const 2140) "<") + (data $21.1 (i32.const 2152) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") + (data $22 (i32.const 2208) "\10\00\00\00 \00\00\00 \00\00\00 ") + (data $22.1 (i32.const 2232) "\81\08\00\00\01\19\00\00\01\02\00\00$\t\00\00\a4\00\00\00$\n\00\00\02\t\00\00\02A\00\00\00\00\00\00A\00\00\00 ") + (export "plainGlobal" (global $bindings/esm/plainGlobal)) + (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) + (export "stringGlobal" (global $bindings/esm/stringGlobal)) + (export "mutableStringGlobal" (global $bindings/esm/mutableStringGlobal)) + (export "Enum.ONE" (global $bindings/esm/Enum.ONE)) + (export "Enum.TWO" (global $bindings/esm/Enum.TWO)) + (export "Enum.THREE" (global $bindings/esm/Enum.THREE)) + (export "ConstEnum.ONE" (global $bindings/esm/ConstEnum.ONE)) + (export "ConstEnum.TWO" (global $bindings/esm/ConstEnum.TWO)) + (export "ConstEnum.THREE" (global $bindings/esm/ConstEnum.THREE)) + (export "plainFunction" (func $bindings/esm/plainFunction)) + (export "plainFunction64" (func $bindings/esm/plainFunction64)) + (export "getMaxUnsigned32" (func $bindings/esm/getMaxUnsigned32)) + (export "getMaxUnsigned64" (func $bindings/esm/getMaxUnsigned64)) + (export "newInternref" (func $bindings/esm/newInternref)) + (export "fn" (global $bindings/esm/fn)) + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (export "__setArgumentsLength" (func $~setArgumentsLength)) + (export "_start" (func $~start)) + (export "bufferFunction" (func $export:bindings/esm/bufferFunction)) + (export "stringFunction" (func $export:bindings/esm/stringFunction)) + (export "stringFunctionOptional" (func $export:bindings/esm/stringFunctionOptional@varargs)) + (export "typedarrayFunction" (func $export:bindings/esm/typedarrayFunction)) + (export "staticarrayFunction" (func $export:bindings/esm/staticarrayFunction)) + (export "staticarrayU16" (func $export:bindings/esm/staticarrayU16)) + (export "staticarrayI64" (func $export:bindings/esm/staticarrayU16)) + (export "arrayFunction" (func $export:bindings/esm/arrayFunction)) + (export "arrayOfStringsFunction" (func $export:bindings/esm/arrayOfStringsFunction)) + (export "objectFunction" (func $export:bindings/esm/objectFunction)) + (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) + (export "functionFunction" (func $export:bindings/esm/staticarrayU16)) + (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $bindings/esm/getMaxUnsigned32 (result i32) + i32.const -1 + ) + (func $bindings/esm/getMaxUnsigned64 (result i64) + i64.const -1 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $bindings/esm/mutableStringGlobal + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1552 + call $~lib/rt/itcms/__visit + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1968 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 2096 + call $~lib/rt/itcms/__visit + i32.const 2160 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 35044 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/toSpace + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 2208 + i32.load + i32.gt_u + if + i32.const 1552 + i32.const 1616 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + i32.const 2212 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 35056 + i32.const 0 + i32.store + i32.const 36624 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 35056 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 35056 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 35056 + i32.const 36628 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 35056 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 35044 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 35044 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 35044 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1696 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1360 + i32.const 1424 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1360 + i32.const 1696 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1696 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $bindings/esm/newInternref (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 2096 + i32.const 1424 + i32.const 338 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 + end + local.get $0 + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 2160 + i32.const 1424 + i32.const 352 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (func $~lib/rt/itcms/__collect + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $bindings/esm/NonPlainObject + block $bindings/esm/PlainObject + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/function/Function<%28%29=>void> + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/function/Function<%28%29=>void> $folding-inner1 $folding-inner1 $folding-inner1 $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array<~lib/string/String> $bindings/esm/PlainObject $folding-inner1 $bindings/esm/NonPlainObject $invalid + end + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner2 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner2 + end + local.get $0 + i32.load offset=56 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=60 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=64 + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + i32.const 1152 + i32.const 1 + f64.const 42 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1184 + call $~lib/bindings/dom/console.log + global.get $~lib/bindings/dom/Math.E + call $~lib/bindings/dom/Math.log + drop + call $bindings/esm/Date_getTimezoneOffset + drop + memory.size + i32.const 16 + i32.shl + i32.const 35044 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/pinSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/toSpace + i32.const 1652 + i32.const 1648 + i32.store + i32.const 1656 + i32.const 1648 + i32.store + i32.const 1648 + global.set $~lib/rt/itcms/fromSpace + ) + (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$284 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1760 + local.set $2 + br $__inlined_func$~lib/string/String#concat$284 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $3 + memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 1173 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/typedarray/Uint64Array#constructor (result i32) + local.get $1 + call $~lib/typedarray/Float32Array#get:length + local.get $5 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $5 + i32.const 134217727 + i32.gt_u + if + i32.const 1248 + i32.const 1296 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 3 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $2 + local.get $5 + i32.store + local.get $2 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + br $__inlined_func$~lib/typedarray/Uint64Array#constructor + end + br $folding-inner1 + end + local.tee $2 + i32.store offset=4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 452 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + local.get $5 + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Float32Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $5 + local.get $4 + i64.trunc_sat_f32_u + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1856 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1856 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1552 + i32.const 1920 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 1248 + i32.const 1920 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$269 + i32.const 1073741820 + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$269 + end + local.get $3 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $3 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1552 + i32.const 1920 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1552 + i32.const 1920 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1968 + i32.const 1920 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1552 + i32.const 1920 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $4 + local.get $2 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1248 + i32.const 1296 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + local.get $2 + memory.copy + local.get $2 + local.get $5 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/stringFunction + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:bindings/esm/stringFunctionOptional@varargs (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 1088 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $bindings/esm/stringFunction + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/typedarrayFunction + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:bindings/esm/staticarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$bindings/esm/staticarrayFunction$1 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $4 + i32.const 268435455 + i32.gt_u + if + i32.const 1248 + i32.const 1856 + i32.const 51 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $2 + local.get $0 + local.get $2 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + local.set $2 + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $4 + local.get $3 + local.get $1 + local.get $2 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + br $__inlined_func$bindings/esm/staticarrayFunction$1 + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $4 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1248 + i32.const 1920 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $6 + local.get $4 + i32.store + local.get $6 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $6 + local.get $2 + local.get $0 + local.get $2 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + local.set $2 + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/array/Array#get:length + local.get $2 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $6 + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $4 + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.store + local.get $5 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.store offset=12 + local.get $4 + i32.const 268435455 + i32.gt_u + if + i32.const 1248 + i32.const 1920 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $4 + local.get $4 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $6 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $5 + local.get $3 + i32.store + local.get $5 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $5 + local.get $2 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + local.set $2 + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/array/Array#get:length + local.get $2 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $5 + local.get $3 + local.get $4 + call $~lib/array/Array<~lib/string/String>#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$bindings/esm/PlainObject#constructor$4 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store16 offset=18 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i64.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 offset=40 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 0 + f32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 0 + f64.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=56 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=60 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=64 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + br $__inlined_func$bindings/esm/PlainObject#constructor$4 + end + br $folding-inner1 + end + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load8_s + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $3 + local.get $1 + i32.load8_s + i32.add + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load16_s offset=2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $1 + i32.load16_s offset=2 + i32.add + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/bindings/esm.ts b/tests/compiler/bindings/esm.ts new file mode 100644 index 0000000000..275d962050 --- /dev/null +++ b/tests/compiler/bindings/esm.ts @@ -0,0 +1,178 @@ +export const plainGlobal = 1; + +export var plainMutableGlobal = 2; + +export const stringGlobal = "a"; + +export var mutableStringGlobal = "b"; + +export enum Enum { + ONE = 1, + TWO = 2, + THREE +}; + +export const enum ConstEnum { + ONE = 1, + TWO = 2, + THREE +} + +export function plainFunction(a: i32, b: i32): i32 { + return a + b; +} + +export function plainFunction64(a: i64, b: i64): i64 { + return a + b; +} + +export function getMaxUnsigned32(): u32 { + return u32.MAX_VALUE; // 4294967295 +} + +export function getMaxUnsigned64(): u64 { + return u64.MAX_VALUE; // 18446744073709551615 +} + +export function bufferFunction(a: ArrayBuffer, b: ArrayBuffer): ArrayBuffer { + var aByteLength = a.byteLength; + var bByteLength = b.byteLength; + var out = new ArrayBuffer(aByteLength + bByteLength); + memory.copy(changetype(out), changetype(a), aByteLength); + memory.copy(changetype(out) + aByteLength, changetype(b), bByteLength); + return out; +} + +export function stringFunction(a: string, b: string): string { + return a + b; +} + +export function stringFunctionOptional(a: string, b: string = "b"): string { + return a + b; +} + +export function typedarrayFunction(a: Int16Array, b: Float32Array): Uint64Array { + var out = new Uint64Array(a.length + b.length); + for (let i = 0; i < a.length; ++i) { + out[i] = a[i]; + } + for (let i = 0; i < b.length; ++i) { + out[a.length + i] = b[i]; + } + return out; +} + +export function staticarrayFunction(a: StaticArray, b: StaticArray): StaticArray { + var c = new StaticArray(a.length + b.length); + for (let i = 0; i < a.length; ++i) { + c[i] = a[i]; + } + for (let i = 0; i < b.length; ++i) { + c[a.length + i] = b[i]; + } + return c; +} + +export function staticarrayU16(a: StaticArray): StaticArray { + return a; +} + +export function staticarrayI64(a: StaticArray): StaticArray { + return a; +} + +export function arrayFunction(a: Array, b: Array): Array { + var c = new Array(a.length + b.length); + for (let i = 0; i < a.length; ++i) { + c[i] = a[i]; + } + for (let i = 0; i < b.length; ++i) { + c[a.length + i] = b[i]; + } + return c; +} + +export function arrayOfStringsFunction(a: Array, b: Array): Array { + var c = new Array(a.length + b.length); + for (let i = 0; i < a.length; ++i) { + c[i] = a[i]; + } + for (let i = 0; i < b.length; ++i) { + c[a.length + i] = b[i]; + } + return c; +} + +class PlainObject { + a: i8; + b: i16; + c: i32; + d: i64; + e: u8; + f: u16; + g: u32; + h: u64; + i: isize; + j: usize; + k: bool; + l: f32; + m: f64; + n: string | null; + o: Uint8Array | null; + p: Array | null; +} + +export function objectFunction(a: PlainObject, b: PlainObject): PlainObject { + let ref = new PlainObject(); + ref.a = a.a + b.a; + ref.b = a.b + b.b; + return ref; +} + +class NonPlainObject { + constructor() {} +} + +export function newInternref(): NonPlainObject { + return new NonPlainObject(); +} + +export function internrefFunction(a: NonPlainObject, b: NonPlainObject): NonPlainObject { + return a; +} + +export function functionFunction(fn: () => void): () => void { + return fn; +} + +export const fn = function(): void {}; + +trace("trace", 1, 42); + +import { console, Math } from "bindings/dom"; + +console.log("42 from console.log"); + +Math.log(Math.E); + +// @ts-ignore +@external("env", "globalThis") declare const immutableGlobal: externref; +immutableGlobal; + +// @ts-ignore +@external("env", "globalThis.globalThis") declare const immutableGlobalNested: externref; +immutableGlobalNested; + +// @ts-ignore +@external("env", "Date.getTimezoneOffset") +@external.js("return new Date().getTimezoneOffset();") +declare function Date_getTimezoneOffset(): i32; + +Date_getTimezoneOffset(); + +// Not yet instrumented element kinds: + +export class ExportedClass {} +export interface ExportedInterface {} +export type ExportedType = ExportedClass; +export namespace ExportedNamespace {} diff --git a/tests/compiler/bindings/noExportRuntime.debug.d.ts b/tests/compiler/bindings/noExportRuntime.debug.d.ts new file mode 100644 index 0000000000..bf2eabf2d2 --- /dev/null +++ b/tests/compiler/bindings/noExportRuntime.debug.d.ts @@ -0,0 +1,84 @@ +/** Exported memory */ +export declare const memory: WebAssembly.Memory; +/** bindings/noExportRuntime/isBasic */ +export declare const isBasic: { + /** @type `i32` */ + get value(): number; + set value(value: number); +}; +/** + * bindings/noExportRuntime/takesReturnsBasic + * @param a `i32` + * @returns `i32` + */ +export declare function takesReturnsBasic(a: number): number; +/** bindings/noExportRuntime/isString */ +export declare const isString: { + /** @type `~lib/string/String` */ + get value(): string +}; +/** + * bindings/noExportRuntime/returnsString + * @returns `~lib/string/String` + */ +export declare function returnsString(): string; +/** bindings/noExportRuntime/isBuffer */ +export declare const isBuffer: { + /** @type `~lib/arraybuffer/ArrayBuffer` */ + get value(): ArrayBuffer +}; +/** + * bindings/noExportRuntime/returnsBuffer + * @returns `~lib/arraybuffer/ArrayBuffer` + */ +export declare function returnsBuffer(): ArrayBuffer; +/** bindings/noExportRuntime/isTypedArray */ +export declare const isTypedArray: { + /** @type `~lib/typedarray/Int32Array` */ + get value(): Int32Array +}; +/** + * bindings/noExportRuntime/returnsTypedArray + * @returns `~lib/typedarray/Int32Array` + */ +export declare function returnsTypedArray(): Int32Array; +/** bindings/noExportRuntime/isArrayOfBasic */ +export declare const isArrayOfBasic: { + /** @type `~lib/array/Array` */ + get value(): Array +}; +/** + * bindings/noExportRuntime/returnsArrayOfBasic + * @returns `~lib/array/Array` + */ +export declare function returnsArrayOfBasic(): Array; +/** bindings/noExportRuntime/isArrayOfArray */ +export declare const isArrayOfArray: { + /** @type `~lib/array/Array<~lib/array/Array>` */ + get value(): Array> +}; +/** + * bindings/noExportRuntime/returnsArrayOfArray + * @returns `~lib/array/Array<~lib/array/Array>` + */ +export declare function returnsArrayOfArray(): Array>; +/** + * bindings/noExportRuntime/takesNonPlainObject + * @param obj `bindings/noExportRuntime/NonPlainObject` + */ +export declare function takesNonPlainObject(obj: __Internref7): void; +/** + * bindings/noExportRuntime/takesFunction + * @param fn `() => void` + */ +export declare function takesFunction(fn: __Internref8): void; +/** bindings/noExportRuntime/NonPlainObject */ +declare class __Internref7 extends Number { + private __nominal7: symbol; + private __nominal0: symbol; +} +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref8 extends Number { + private __nominal8: symbol; + private __nominal0: symbol; +} diff --git a/tests/compiler/bindings/noExportRuntime.debug.js b/tests/compiler/bindings/noExportRuntime.debug.js new file mode 100644 index 0000000000..bdf08ae5ff --- /dev/null +++ b/tests/compiler/bindings/noExportRuntime.debug.js @@ -0,0 +1,170 @@ +async function instantiate(module, imports = {}) { + const adaptedImports = { + env: Object.setPrototypeOf({ + abort(message, fileName, lineNumber, columnNumber) { + // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void + message = __liftString(message >>> 0); + fileName = __liftString(fileName >>> 0); + lineNumber = lineNumber >>> 0; + columnNumber = columnNumber >>> 0; + (() => { + // @external.js + throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); + })(); + }, + }, Object.assign(Object.create(globalThis), imports.env || {})), + }; + const { exports } = await WebAssembly.instantiate(module, adaptedImports); + const memory = exports.memory || imports.env.memory; + const adaptedExports = Object.setPrototypeOf({ + isString: { + // bindings/noExportRuntime/isString: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.isString.value >>> 0); + } + }, + returnsString() { + // bindings/noExportRuntime/returnsString() => ~lib/string/String + return __liftString(exports.returnsString() >>> 0); + }, + isBuffer: { + // bindings/noExportRuntime/isBuffer: ~lib/arraybuffer/ArrayBuffer + valueOf() { return this.value; }, + get value() { + return __liftBuffer(exports.isBuffer.value >>> 0); + } + }, + returnsBuffer() { + // bindings/noExportRuntime/returnsBuffer() => ~lib/arraybuffer/ArrayBuffer + return __liftBuffer(exports.returnsBuffer() >>> 0); + }, + isTypedArray: { + // bindings/noExportRuntime/isTypedArray: ~lib/typedarray/Int32Array + valueOf() { return this.value; }, + get value() { + return __liftTypedArray(Int32Array, exports.isTypedArray.value >>> 0); + } + }, + returnsTypedArray() { + // bindings/noExportRuntime/returnsTypedArray() => ~lib/typedarray/Int32Array + return __liftTypedArray(Int32Array, exports.returnsTypedArray() >>> 0); + }, + isArrayOfBasic: { + // bindings/noExportRuntime/isArrayOfBasic: ~lib/array/Array + valueOf() { return this.value; }, + get value() { + return __liftArray(__getI32, 2, exports.isArrayOfBasic.value >>> 0); + } + }, + returnsArrayOfBasic() { + // bindings/noExportRuntime/returnsArrayOfBasic() => ~lib/array/Array + return __liftArray(__getI32, 2, exports.returnsArrayOfBasic() >>> 0); + }, + isArrayOfArray: { + // bindings/noExportRuntime/isArrayOfArray: ~lib/array/Array<~lib/array/Array> + valueOf() { return this.value; }, + get value() { + return __liftArray(pointer => __liftArray(__getI32, 2, __getU32(pointer)), 2, exports.isArrayOfArray.value >>> 0); + } + }, + returnsArrayOfArray() { + // bindings/noExportRuntime/returnsArrayOfArray() => ~lib/array/Array<~lib/array/Array> + return __liftArray(pointer => __liftArray(__getI32, 2, __getU32(pointer)), 2, exports.returnsArrayOfArray() >>> 0); + }, + takesNonPlainObject(obj) { + // bindings/noExportRuntime/takesNonPlainObject(bindings/noExportRuntime/NonPlainObject) => void + obj = __lowerInternref(obj) || __notnull(); + exports.takesNonPlainObject(obj); + }, + takesFunction(fn) { + // bindings/noExportRuntime/takesFunction(() => void) => void + fn = __lowerInternref(fn) || __notnull(); + exports.takesFunction(fn); + }, + }, exports); + function __liftBuffer(pointer) { + if (!pointer) return null; + return memory.buffer.slice(pointer, pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2]); + } + function __liftString(pointer) { + if (!pointer) return null; + const + end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1, + memoryU16 = new Uint16Array(memory.buffer); + let + start = pointer >>> 1, + string = ""; + while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024)); + return string + String.fromCharCode(...memoryU16.subarray(start, end)); + } + function __liftArray(liftElement, align, pointer) { + if (!pointer) return null; + const + dataStart = __getU32(pointer + 4), + length = __dataview.getUint32(pointer + 12, true), + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(dataStart + (i << align >>> 0)); + return values; + } + function __liftTypedArray(constructor, pointer) { + if (!pointer) return null; + return new constructor( + memory.buffer, + __getU32(pointer + 4), + __dataview.getUint32(pointer + 8, true) / constructor.BYTES_PER_ELEMENT + ).slice(); + } + class Internref extends Number {} + function __lowerInternref(value) { + if (value == null) return 0; + if (value instanceof Internref) return value.valueOf(); + throw TypeError("internref expected"); + } + function __notnull() { + throw TypeError("value must not be null"); + } + let __dataview = new DataView(memory.buffer); + function __getI32(pointer) { + try { + return __dataview.getInt32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt32(pointer, true); + } + } + function __getU32(pointer) { + try { + return __dataview.getUint32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint32(pointer, true); + } + } + exports._start(); + return adaptedExports; +} +export const { + memory, + isBasic, + takesReturnsBasic, + isString, + returnsString, + isBuffer, + returnsBuffer, + isTypedArray, + returnsTypedArray, + isArrayOfBasic, + returnsArrayOfBasic, + isArrayOfArray, + returnsArrayOfArray, + takesNonPlainObject, + takesFunction, +} = await (async url => instantiate( + await (async () => { + const isNodeOrBun = typeof process != "undefined" && process.versions != null && (process.versions.node != null || process.versions.bun != null); + if (isNodeOrBun) { return globalThis.WebAssembly.compile(await (await import("node:fs/promises")).readFile(url)); } + else { return await globalThis.WebAssembly.compileStreaming(globalThis.fetch(url)); } + })(), { + } +))(new URL("noExportRuntime.debug.wasm", import.meta.url)); diff --git a/tests/compiler/bindings/noExportRuntime.debug.wat b/tests/compiler/bindings/noExportRuntime.debug.wat new file mode 100644 index 0000000000..ba2e2f6010 --- /dev/null +++ b/tests/compiler/bindings/noExportRuntime.debug.wat @@ -0,0 +1,2905 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (param i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $bindings/noExportRuntime/isBasic (mut i32) (i32.const 0)) + (global $bindings/noExportRuntime/isString i32 (i32.const 32)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $bindings/noExportRuntime/isBuffer (mut i32) (i32.const 0)) + (global $bindings/noExportRuntime/isTypedArray (mut i32) (i32.const 0)) + (global $bindings/noExportRuntime/isArrayOfBasic i32 (i32.const 608)) + (global $bindings/noExportRuntime/isArrayOfArray i32 (i32.const 688)) + (global $~lib/rt/__rtti_base i32 (i32.const 720)) + (global $~lib/memory/__data_end i32 (i32.const 756)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33524)) + (global $~lib/memory/__heap_base i32 (i32.const 33524)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $2 (i32.const 92) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 492) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 556) "\1c\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") + (data $12 (i32.const 588) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00@\02\00\00@\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 636) "\1c\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") + (data $14 (i32.const 668) ",\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\10\00\00\00\90\02\00\00\90\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 720) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\01\t\00\00\02\t\00\00\02A\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "isBasic" (global $bindings/noExportRuntime/isBasic)) + (export "takesReturnsBasic" (func $bindings/noExportRuntime/takesReturnsBasic)) + (export "isString" (global $bindings/noExportRuntime/isString)) + (export "returnsString" (func $bindings/noExportRuntime/returnsString)) + (export "isBuffer" (global $bindings/noExportRuntime/isBuffer)) + (export "returnsBuffer" (func $bindings/noExportRuntime/returnsBuffer)) + (export "isTypedArray" (global $bindings/noExportRuntime/isTypedArray)) + (export "returnsTypedArray" (func $bindings/noExportRuntime/returnsTypedArray)) + (export "isArrayOfBasic" (global $bindings/noExportRuntime/isArrayOfBasic)) + (export "returnsArrayOfBasic" (func $bindings/noExportRuntime/returnsArrayOfBasic)) + (export "isArrayOfArray" (global $bindings/noExportRuntime/isArrayOfArray)) + (export "returnsArrayOfArray" (func $bindings/noExportRuntime/returnsArrayOfArray)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (export "takesNonPlainObject" (func $export:bindings/noExportRuntime/takesNonPlainObject)) + (export "takesFunction" (func $export:bindings/noExportRuntime/takesFunction)) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 368 + i32.const 432 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 240 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 176 + i32.const 512 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 176 + i32.const 240 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/arraybuffer/ArrayBufferView#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $start:bindings/noExportRuntime + (local $0 i32) + (local $1 i32) + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 464 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + global.set $bindings/noExportRuntime/isBuffer + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int32Array#constructor + global.set $bindings/noExportRuntime/isTypedArray + ) + (func $bindings/noExportRuntime/takesReturnsBasic (param $a i32) (result i32) + global.get $bindings/noExportRuntime/isBasic + return + ) + (func $bindings/noExportRuntime/returnsString (result i32) + global.get $bindings/noExportRuntime/isString + return + ) + (func $bindings/noExportRuntime/returnsBuffer (result i32) + global.get $bindings/noExportRuntime/isBuffer + return + ) + (func $bindings/noExportRuntime/returnsTypedArray (result i32) + global.get $bindings/noExportRuntime/isTypedArray + return + ) + (func $bindings/noExportRuntime/returnsArrayOfBasic (result i32) + global.get $bindings/noExportRuntime/isArrayOfBasic + return + ) + (func $bindings/noExportRuntime/returnsArrayOfArray (result i32) + global.get $bindings/noExportRuntime/isArrayOfArray + return + ) + (func $bindings/noExportRuntime/takesNonPlainObject (param $obj i32) + ) + (func $bindings/noExportRuntime/takesFunction (param $fn i32) + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $bindings/noExportRuntime/isString + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $bindings/noExportRuntime/isBuffer + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $bindings/noExportRuntime/isTypedArray + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $bindings/noExportRuntime/isArrayOfBasic + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $bindings/noExportRuntime/isArrayOfArray + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 368 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 176 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/typedarray/Int32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/array/Array>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/array/Array>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $bindings/noExportRuntime/NonPlainObject + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array + block $~lib/typedarray/Int32Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int32Array $~lib/array/Array $~lib/array/Array<~lib/array/Array> $bindings/noExportRuntime/NonPlainObject $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>~visit + return + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:bindings/noExportRuntime + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33552 + i32.const 33600 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) + (local $buffer i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $length + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 64 + i32.const 112 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + local.get $alignLog2 + i32.shl + local.tee $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $length + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Int32Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 64 + i32.const 112 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $export:bindings/noExportRuntime/takesNonPlainObject (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/noExportRuntime/takesNonPlainObject + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:bindings/noExportRuntime/takesFunction (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/noExportRuntime/takesFunction + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/bindings/noExportRuntime.json b/tests/compiler/bindings/noExportRuntime.json new file mode 100644 index 0000000000..64db6dcdbb --- /dev/null +++ b/tests/compiler/bindings/noExportRuntime.json @@ -0,0 +1,6 @@ +{ + "asc_flags": [ + "--exportStart _start", + "--bindings esm" + ] +} diff --git a/tests/compiler/bindings/noExportRuntime.release.d.ts b/tests/compiler/bindings/noExportRuntime.release.d.ts new file mode 100644 index 0000000000..bf2eabf2d2 --- /dev/null +++ b/tests/compiler/bindings/noExportRuntime.release.d.ts @@ -0,0 +1,84 @@ +/** Exported memory */ +export declare const memory: WebAssembly.Memory; +/** bindings/noExportRuntime/isBasic */ +export declare const isBasic: { + /** @type `i32` */ + get value(): number; + set value(value: number); +}; +/** + * bindings/noExportRuntime/takesReturnsBasic + * @param a `i32` + * @returns `i32` + */ +export declare function takesReturnsBasic(a: number): number; +/** bindings/noExportRuntime/isString */ +export declare const isString: { + /** @type `~lib/string/String` */ + get value(): string +}; +/** + * bindings/noExportRuntime/returnsString + * @returns `~lib/string/String` + */ +export declare function returnsString(): string; +/** bindings/noExportRuntime/isBuffer */ +export declare const isBuffer: { + /** @type `~lib/arraybuffer/ArrayBuffer` */ + get value(): ArrayBuffer +}; +/** + * bindings/noExportRuntime/returnsBuffer + * @returns `~lib/arraybuffer/ArrayBuffer` + */ +export declare function returnsBuffer(): ArrayBuffer; +/** bindings/noExportRuntime/isTypedArray */ +export declare const isTypedArray: { + /** @type `~lib/typedarray/Int32Array` */ + get value(): Int32Array +}; +/** + * bindings/noExportRuntime/returnsTypedArray + * @returns `~lib/typedarray/Int32Array` + */ +export declare function returnsTypedArray(): Int32Array; +/** bindings/noExportRuntime/isArrayOfBasic */ +export declare const isArrayOfBasic: { + /** @type `~lib/array/Array` */ + get value(): Array +}; +/** + * bindings/noExportRuntime/returnsArrayOfBasic + * @returns `~lib/array/Array` + */ +export declare function returnsArrayOfBasic(): Array; +/** bindings/noExportRuntime/isArrayOfArray */ +export declare const isArrayOfArray: { + /** @type `~lib/array/Array<~lib/array/Array>` */ + get value(): Array> +}; +/** + * bindings/noExportRuntime/returnsArrayOfArray + * @returns `~lib/array/Array<~lib/array/Array>` + */ +export declare function returnsArrayOfArray(): Array>; +/** + * bindings/noExportRuntime/takesNonPlainObject + * @param obj `bindings/noExportRuntime/NonPlainObject` + */ +export declare function takesNonPlainObject(obj: __Internref7): void; +/** + * bindings/noExportRuntime/takesFunction + * @param fn `() => void` + */ +export declare function takesFunction(fn: __Internref8): void; +/** bindings/noExportRuntime/NonPlainObject */ +declare class __Internref7 extends Number { + private __nominal7: symbol; + private __nominal0: symbol; +} +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref8 extends Number { + private __nominal8: symbol; + private __nominal0: symbol; +} diff --git a/tests/compiler/bindings/noExportRuntime.release.js b/tests/compiler/bindings/noExportRuntime.release.js new file mode 100644 index 0000000000..24a1b9596b --- /dev/null +++ b/tests/compiler/bindings/noExportRuntime.release.js @@ -0,0 +1,170 @@ +async function instantiate(module, imports = {}) { + const adaptedImports = { + env: Object.setPrototypeOf({ + abort(message, fileName, lineNumber, columnNumber) { + // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void + message = __liftString(message >>> 0); + fileName = __liftString(fileName >>> 0); + lineNumber = lineNumber >>> 0; + columnNumber = columnNumber >>> 0; + (() => { + // @external.js + throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); + })(); + }, + }, Object.assign(Object.create(globalThis), imports.env || {})), + }; + const { exports } = await WebAssembly.instantiate(module, adaptedImports); + const memory = exports.memory || imports.env.memory; + const adaptedExports = Object.setPrototypeOf({ + isString: { + // bindings/noExportRuntime/isString: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.isString.value >>> 0); + } + }, + returnsString() { + // bindings/noExportRuntime/returnsString() => ~lib/string/String + return __liftString(exports.returnsString() >>> 0); + }, + isBuffer: { + // bindings/noExportRuntime/isBuffer: ~lib/arraybuffer/ArrayBuffer + valueOf() { return this.value; }, + get value() { + return __liftBuffer(exports.isBuffer.value >>> 0); + } + }, + returnsBuffer() { + // bindings/noExportRuntime/returnsBuffer() => ~lib/arraybuffer/ArrayBuffer + return __liftBuffer(exports.returnsBuffer() >>> 0); + }, + isTypedArray: { + // bindings/noExportRuntime/isTypedArray: ~lib/typedarray/Int32Array + valueOf() { return this.value; }, + get value() { + return __liftTypedArray(Int32Array, exports.isTypedArray.value >>> 0); + } + }, + returnsTypedArray() { + // bindings/noExportRuntime/returnsTypedArray() => ~lib/typedarray/Int32Array + return __liftTypedArray(Int32Array, exports.returnsTypedArray() >>> 0); + }, + isArrayOfBasic: { + // bindings/noExportRuntime/isArrayOfBasic: ~lib/array/Array + valueOf() { return this.value; }, + get value() { + return __liftArray(__getI32, 2, exports.isArrayOfBasic.value >>> 0); + } + }, + returnsArrayOfBasic() { + // bindings/noExportRuntime/returnsArrayOfBasic() => ~lib/array/Array + return __liftArray(__getI32, 2, exports.returnsArrayOfBasic() >>> 0); + }, + isArrayOfArray: { + // bindings/noExportRuntime/isArrayOfArray: ~lib/array/Array<~lib/array/Array> + valueOf() { return this.value; }, + get value() { + return __liftArray(pointer => __liftArray(__getI32, 2, __getU32(pointer)), 2, exports.isArrayOfArray.value >>> 0); + } + }, + returnsArrayOfArray() { + // bindings/noExportRuntime/returnsArrayOfArray() => ~lib/array/Array<~lib/array/Array> + return __liftArray(pointer => __liftArray(__getI32, 2, __getU32(pointer)), 2, exports.returnsArrayOfArray() >>> 0); + }, + takesNonPlainObject(obj) { + // bindings/noExportRuntime/takesNonPlainObject(bindings/noExportRuntime/NonPlainObject) => void + obj = __lowerInternref(obj) || __notnull(); + exports.takesNonPlainObject(obj); + }, + takesFunction(fn) { + // bindings/noExportRuntime/takesFunction(() => void) => void + fn = __lowerInternref(fn) || __notnull(); + exports.takesFunction(fn); + }, + }, exports); + function __liftBuffer(pointer) { + if (!pointer) return null; + return memory.buffer.slice(pointer, pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2]); + } + function __liftString(pointer) { + if (!pointer) return null; + const + end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1, + memoryU16 = new Uint16Array(memory.buffer); + let + start = pointer >>> 1, + string = ""; + while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024)); + return string + String.fromCharCode(...memoryU16.subarray(start, end)); + } + function __liftArray(liftElement, align, pointer) { + if (!pointer) return null; + const + dataStart = __getU32(pointer + 4), + length = __dataview.getUint32(pointer + 12, true), + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(dataStart + (i << align >>> 0)); + return values; + } + function __liftTypedArray(constructor, pointer) { + if (!pointer) return null; + return new constructor( + memory.buffer, + __getU32(pointer + 4), + __dataview.getUint32(pointer + 8, true) / constructor.BYTES_PER_ELEMENT + ).slice(); + } + class Internref extends Number {} + function __lowerInternref(value) { + if (value == null) return 0; + if (value instanceof Internref) return value.valueOf(); + throw TypeError("internref expected"); + } + function __notnull() { + throw TypeError("value must not be null"); + } + let __dataview = new DataView(memory.buffer); + function __getI32(pointer) { + try { + return __dataview.getInt32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt32(pointer, true); + } + } + function __getU32(pointer) { + try { + return __dataview.getUint32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint32(pointer, true); + } + } + exports._start(); + return adaptedExports; +} +export const { + memory, + isBasic, + takesReturnsBasic, + isString, + returnsString, + isBuffer, + returnsBuffer, + isTypedArray, + returnsTypedArray, + isArrayOfBasic, + returnsArrayOfBasic, + isArrayOfArray, + returnsArrayOfArray, + takesNonPlainObject, + takesFunction, +} = await (async url => instantiate( + await (async () => { + const isNodeOrBun = typeof process != "undefined" && process.versions != null && (process.versions.node != null || process.versions.bun != null); + if (isNodeOrBun) { return globalThis.WebAssembly.compile(await (await import("node:fs/promises")).readFile(url)); } + else { return await globalThis.WebAssembly.compileStreaming(globalThis.fetch(url)); } + })(), { + } +))(new URL("noExportRuntime.release.wasm", import.meta.url)); diff --git a/tests/compiler/bindings/noExportRuntime.release.wat b/tests/compiler/bindings/noExportRuntime.release.wat new file mode 100644 index 0000000000..9a784f3d63 --- /dev/null +++ b/tests/compiler/bindings/noExportRuntime.release.wat @@ -0,0 +1,1975 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32))) + (type $2 (func)) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $bindings/noExportRuntime/isBasic (mut i32) (i32.const 0)) + (global $bindings/noExportRuntime/isString i32 (i32.const 1056)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $bindings/noExportRuntime/isBuffer (mut i32) (i32.const 0)) + (global $bindings/noExportRuntime/isTypedArray (mut i32) (i32.const 0)) + (global $bindings/noExportRuntime/isArrayOfBasic i32 (i32.const 1632)) + (global $bindings/noExportRuntime/isArrayOfArray i32 (i32.const 1712)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34548)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02") + (data $1 (i32.const 1068) ",") + (data $1.1 (i32.const 1080) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $2 (i32.const 1116) "<") + (data $2.1 (i32.const 1128) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $3 (i32.const 1180) "<") + (data $3.1 (i32.const 1192) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1244) "<") + (data $4.1 (i32.const 1256) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1436) ",") + (data $8.1 (i32.const 1448) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1516) "<") + (data $10.1 (i32.const 1528) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1580) "\1c") + (data $11.1 (i32.const 1592) "\01") + (data $12 (i32.const 1612) ",") + (data $12.1 (i32.const 1624) "\05\00\00\00\10\00\00\00@\06\00\00@\06") + (data $13 (i32.const 1660) "\1c") + (data $13.1 (i32.const 1672) "\01") + (data $14 (i32.const 1692) ",") + (data $14.1 (i32.const 1704) "\06\00\00\00\10\00\00\00\90\06\00\00\90\06") + (data $15 (i32.const 1744) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\01\t\00\00\02\t\00\00\02A\00\00 ") + (export "isBasic" (global $bindings/noExportRuntime/isBasic)) + (export "takesReturnsBasic" (func $bindings/noExportRuntime/takesReturnsBasic)) + (export "isString" (global $bindings/noExportRuntime/isString)) + (export "returnsString" (func $bindings/noExportRuntime/returnsString)) + (export "isBuffer" (global $bindings/noExportRuntime/isBuffer)) + (export "returnsBuffer" (func $bindings/noExportRuntime/returnsBuffer)) + (export "isTypedArray" (global $bindings/noExportRuntime/isTypedArray)) + (export "returnsTypedArray" (func $bindings/noExportRuntime/returnsTypedArray)) + (export "isArrayOfBasic" (global $bindings/noExportRuntime/isArrayOfBasic)) + (export "returnsArrayOfBasic" (func $bindings/noExportRuntime/returnsArrayOfBasic)) + (export "isArrayOfArray" (global $bindings/noExportRuntime/isArrayOfArray)) + (export "returnsArrayOfArray" (func $bindings/noExportRuntime/returnsArrayOfArray)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (export "takesNonPlainObject" (func $export:bindings/noExportRuntime/takesNonPlainObject)) + (export "takesFunction" (func $export:bindings/noExportRuntime/takesNonPlainObject)) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $bindings/noExportRuntime/isBuffer + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $bindings/noExportRuntime/isTypedArray + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1632 + call $~lib/rt/itcms/__visit + i32.const 1712 + call $~lib/rt/itcms/__visit + i32.const 1392 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1200 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34548 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1744 + i32.load + i32.gt_u + if + i32.const 1392 + i32.const 1456 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1748 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1536 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1536 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1536 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34560 + i32.const 0 + i32.store + i32.const 36128 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34560 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34560 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34560 + i32.const 36132 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34560 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34548 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34548 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34548 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1536 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1200 + i32.const 1264 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1200 + i32.const 1536 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1536 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) + (func $bindings/noExportRuntime/takesReturnsBasic (param $0 i32) (result i32) + global.get $bindings/noExportRuntime/isBasic + ) + (func $bindings/noExportRuntime/returnsString (result i32) + i32.const 1056 + ) + (func $bindings/noExportRuntime/returnsBuffer (result i32) + global.get $bindings/noExportRuntime/isBuffer + ) + (func $bindings/noExportRuntime/returnsTypedArray (result i32) + global.get $bindings/noExportRuntime/isTypedArray + ) + (func $bindings/noExportRuntime/returnsArrayOfBasic (result i32) + i32.const 1632 + ) + (func $bindings/noExportRuntime/returnsArrayOfArray (result i32) + i32.const 1712 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $bindings/noExportRuntime/NonPlainObject + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array + block $~lib/typedarray/Int32Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int32Array $~lib/array/Array $~lib/array/Array<~lib/array/Array> $bindings/noExportRuntime/NonPlainObject $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1780 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1780 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 + end + return + end + unreachable + end + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~started + if + return + end + i32.const 1 + global.set $~started + memory.size + i32.const 16 + i32.shl + i32.const 34548 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1316 + i32.const 1312 + i32.store + i32.const 1320 + i32.const 1312 + i32.store + i32.const 1312 + global.set $~lib/rt/itcms/pinSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/toSpace + i32.const 1492 + i32.const 1488 + i32.store + i32.const 1496 + i32.const 1488 + i32.store + i32.const 1488 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $__inlined_func$start:bindings/noExportRuntime + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1780 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $bindings/noExportRuntime/isBuffer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1780 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1780 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $bindings/noExportRuntime/isTypedArray + br $__inlined_func$start:bindings/noExportRuntime + end + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $export:bindings/noExportRuntime/takesNonPlainObject (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1780 + i32.lt_s + if + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/bindings/noExportRuntime.ts b/tests/compiler/bindings/noExportRuntime.ts new file mode 100644 index 0000000000..60d2c7f8f6 --- /dev/null +++ b/tests/compiler/bindings/noExportRuntime.ts @@ -0,0 +1,56 @@ +// Cases not depending on --exportRuntime, hence not automatically enabling it. +// Means: Fixture should not have exports for `__new` etc. + +// basic types when either lifting or lowering + +export var isBasic: i32 = 0; + +export function takesReturnsBasic(a: i32): i32 { + return isBasic; +} + +// flat types when lifting + +export const isString: string = ""; + +export function returnsString(): string { + return isString; +} + +export const isBuffer: ArrayBuffer = new ArrayBuffer(0); + +export function returnsBuffer(): ArrayBuffer { + return isBuffer; +} + +// nested types with basic/flat elements when lifting + +export const isTypedArray: Int32Array = new Int32Array(0); + +export function returnsTypedArray(): Int32Array { + return isTypedArray; +} + +export const isArrayOfBasic: i32[] = []; + +export function returnsArrayOfBasic(): i32[] { + return isArrayOfBasic; +} + +export const isArrayOfArray: i32[][] = []; + +export function returnsArrayOfArray(): i32[][] { + return isArrayOfArray; +} + +// complex types when lowering + +class NonPlainObject { + constructor() {} +} + +export function takesNonPlainObject(obj: NonPlainObject): void { +} + +export function takesFunction(fn: () => void): void { +} diff --git a/tests/compiler/bindings/raw.debug.d.ts b/tests/compiler/bindings/raw.debug.d.ts new file mode 100644 index 0000000000..ee160bdb50 --- /dev/null +++ b/tests/compiler/bindings/raw.debug.d.ts @@ -0,0 +1,208 @@ +declare namespace __AdaptedExports { + /** Exported memory */ + export const memory: WebAssembly.Memory; + /** bindings/esm/plainGlobal */ + export const plainGlobal: { + /** @type `i32` */ + get value(): number + }; + /** bindings/esm/plainMutableGlobal */ + export const plainMutableGlobal: { + /** @type `i32` */ + get value(): number; + set value(value: number); + }; + /** bindings/esm/stringGlobal */ + export const stringGlobal: { + /** @type `~lib/string/String` */ + get value(): string + }; + /** bindings/esm/mutableStringGlobal */ + export const mutableStringGlobal: { + /** @type `~lib/string/String` */ + get value(): string; + set value(value: string); + }; + /** bindings/esm/Enum */ + export enum Enum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, + } + /** bindings/esm/ConstEnum */ + export enum ConstEnum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, + } + /** + * bindings/esm/plainFunction + * @param a `i32` + * @param b `i32` + * @returns `i32` + */ + export function plainFunction(a: number, b: number): number; + /** + * bindings/esm/plainFunction64 + * @param a `i64` + * @param b `i64` + * @returns `i64` + */ + export function plainFunction64(a: bigint, b: bigint): bigint; + /** + * bindings/esm/getMaxUnsigned32 + * @returns `u32` + */ + export function getMaxUnsigned32(): number; + /** + * bindings/esm/getMaxUnsigned64 + * @returns `u64` + */ + export function getMaxUnsigned64(): bigint; + /** + * bindings/esm/bufferFunction + * @param a `~lib/arraybuffer/ArrayBuffer` + * @param b `~lib/arraybuffer/ArrayBuffer` + * @returns `~lib/arraybuffer/ArrayBuffer` + */ + export function bufferFunction(a: ArrayBuffer, b: ArrayBuffer): ArrayBuffer; + /** + * bindings/esm/stringFunction + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ + export function stringFunction(a: string, b: string): string; + /** + * bindings/esm/stringFunctionOptional + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ + export function stringFunctionOptional(a: string, b?: string): string; + /** + * bindings/esm/typedarrayFunction + * @param a `~lib/typedarray/Int16Array` + * @param b `~lib/typedarray/Float32Array` + * @returns `~lib/typedarray/Uint64Array` + */ + export function typedarrayFunction(a: Int16Array, b: Float32Array): BigUint64Array; + /** + * bindings/esm/staticarrayFunction + * @param a `~lib/staticarray/StaticArray` + * @param b `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ + export function staticarrayFunction(a: ArrayLike, b: ArrayLike): ArrayLike; + /** + * bindings/esm/staticarrayU16 + * @param a `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ + export function staticarrayU16(a: ArrayLike): ArrayLike; + /** + * bindings/esm/staticarrayI64 + * @param a `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ + export function staticarrayI64(a: ArrayLike): ArrayLike; + /** + * bindings/esm/arrayFunction + * @param a `~lib/array/Array` + * @param b `~lib/array/Array` + * @returns `~lib/array/Array` + */ + export function arrayFunction(a: Array, b: Array): Array; + /** + * bindings/esm/arrayOfStringsFunction + * @param a `~lib/array/Array<~lib/string/String>` + * @param b `~lib/array/Array<~lib/string/String>` + * @returns `~lib/array/Array<~lib/string/String>` + */ + export function arrayOfStringsFunction(a: Array, b: Array): Array; + /** + * bindings/esm/objectFunction + * @param a `bindings/esm/PlainObject` + * @param b `bindings/esm/PlainObject` + * @returns `bindings/esm/PlainObject` + */ + export function objectFunction(a: __Record13, b: __Record13): __Record13; + /** + * bindings/esm/newInternref + * @returns `bindings/esm/NonPlainObject` + */ + export function newInternref(): __Internref15; + /** + * bindings/esm/internrefFunction + * @param a `bindings/esm/NonPlainObject` + * @param b `bindings/esm/NonPlainObject` + * @returns `bindings/esm/NonPlainObject` + */ + export function internrefFunction(a: __Internref15, b: __Internref15): __Internref15; + /** + * bindings/esm/functionFunction + * @param fn `() => void` + * @returns `() => void` + */ + export function functionFunction(fn: __Internref4): __Internref4; + /** bindings/esm/fn */ + export const fn: { + /** @type `() => void` */ + get value(): __Internref4 + }; +} +/** bindings/esm/PlainObject */ +declare interface __Record13 { + /** @type `i8` */ + a: number | TOmittable; + /** @type `i16` */ + b: number | TOmittable; + /** @type `i32` */ + c: number | TOmittable; + /** @type `i64` */ + d: bigint | TOmittable; + /** @type `u8` */ + e: number | TOmittable; + /** @type `u16` */ + f: number | TOmittable; + /** @type `u32` */ + g: number | TOmittable; + /** @type `u64` */ + h: bigint | TOmittable; + /** @type `isize` */ + i: number | TOmittable; + /** @type `usize` */ + j: number | TOmittable; + /** @type `bool` */ + k: boolean | TOmittable; + /** @type `f32` */ + l: number | TOmittable; + /** @type `f64` */ + m: number | TOmittable; + /** @type `~lib/string/String | null` */ + n: string | null | TOmittable; + /** @type `~lib/typedarray/Uint8Array | null` */ + o: Uint8Array | null | TOmittable; + /** @type `~lib/array/Array<~lib/string/String> | null` */ + p: Array | null | TOmittable; +} +/** bindings/esm/NonPlainObject */ +declare class __Internref15 extends Number { + private __nominal15: symbol; + private __nominal0: symbol; +} +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref4 extends Number { + private __nominal4: symbol; + private __nominal0: symbol; +} +/** Instantiates the compiled WebAssembly module with the given imports. */ +export declare function instantiate(module: WebAssembly.Module, imports: { + env: unknown, +}): Promise; diff --git a/tests/compiler/bindings/raw.debug.js b/tests/compiler/bindings/raw.debug.js new file mode 100644 index 0000000000..564035a225 --- /dev/null +++ b/tests/compiler/bindings/raw.debug.js @@ -0,0 +1,522 @@ +export async function instantiate(module, imports = {}) { + const adaptedImports = { + env: Object.setPrototypeOf({ + trace(message, n, a0, a1, a2, a3, a4) { + // ~lib/builtins/trace(~lib/string/String, i32?, f64?, f64?, f64?, f64?, f64?) => void + message = __liftString(message >>> 0); + (() => { + // @external.js + console.log(message, ...[a0, a1, a2, a3, a4].slice(0, n)); + })(); + }, + "console.log"(text) { + // ~lib/bindings/dom/console.log(~lib/string/String) => void + text = __liftString(text >>> 0); + console.log(text); + }, + "Math.E": ( + // ~lib/bindings/dom/Math.E: f64 + Math.E + ), + "Math.log"(x) { + // ~lib/bindings/dom/Math.log(f64) => f64 + return Math.log(x); + }, + "globalThis.globalThis": ( + // bindings/esm/immutableGlobalNested: ref_extern | null + globalThis.globalThis + ), + "Date.getTimezoneOffset"() { + // bindings/esm/Date_getTimezoneOffset() => i32 + return (() => { + // @external.js + return new Date().getTimezoneOffset(); + })(); + }, + abort(message, fileName, lineNumber, columnNumber) { + // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void + message = __liftString(message >>> 0); + fileName = __liftString(fileName >>> 0); + lineNumber = lineNumber >>> 0; + columnNumber = columnNumber >>> 0; + (() => { + // @external.js + throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); + })(); + }, + }, Object.assign(Object.create(globalThis), imports.env || {})), + }; + const { exports } = await WebAssembly.instantiate(module, adaptedImports); + const memory = exports.memory || imports.env.memory; + const adaptedExports = Object.setPrototypeOf({ + stringGlobal: { + // bindings/esm/stringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.stringGlobal.value >>> 0); + } + }, + mutableStringGlobal: { + // bindings/esm/mutableStringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.mutableStringGlobal.value >>> 0); + }, + set value(value) { + exports.mutableStringGlobal.value = __lowerString(value) || __notnull(); + } + }, + Enum: (values => ( + // bindings/esm/Enum + values[values.ONE = exports["Enum.ONE"].valueOf()] = "ONE", + values[values.TWO = exports["Enum.TWO"].valueOf()] = "TWO", + values[values.THREE = exports["Enum.THREE"].valueOf()] = "THREE", + values + ))({}), + ConstEnum: (values => ( + // bindings/esm/ConstEnum + values[values.ONE = 1] = "ONE", + values[values.TWO = 2] = "TWO", + values[values.THREE = 3] = "THREE", + values + ))({}), + plainFunction64(a, b) { + // bindings/esm/plainFunction64(i64, i64) => i64 + a = a || 0n; + b = b || 0n; + return exports.plainFunction64(a, b); + }, + getMaxUnsigned32() { + // bindings/esm/getMaxUnsigned32() => u32 + return exports.getMaxUnsigned32() >>> 0; + }, + getMaxUnsigned64() { + // bindings/esm/getMaxUnsigned64() => u64 + return BigInt.asUintN(64, exports.getMaxUnsigned64()); + }, + bufferFunction(a, b) { + // bindings/esm/bufferFunction(~lib/arraybuffer/ArrayBuffer, ~lib/arraybuffer/ArrayBuffer) => ~lib/arraybuffer/ArrayBuffer + a = __retain(__lowerBuffer(a) || __notnull()); + b = __lowerBuffer(b) || __notnull(); + try { + return __liftBuffer(exports.bufferFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunction(a, b) { + // bindings/esm/stringFunction(~lib/string/String, ~lib/string/String) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + return __liftString(exports.stringFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunctionOptional(a, b) { + // bindings/esm/stringFunctionOptional(~lib/string/String, ~lib/string/String?) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + exports.__setArgumentsLength(arguments.length); + return __liftString(exports.stringFunctionOptional(a, b) >>> 0); + } finally { + __release(a); + } + }, + typedarrayFunction(a, b) { + // bindings/esm/typedarrayFunction(~lib/typedarray/Int16Array, ~lib/typedarray/Float32Array) => ~lib/typedarray/Uint64Array + a = __retain(__lowerTypedArray(Int16Array, 5, 1, a) || __notnull()); + b = __lowerTypedArray(Float32Array, 6, 2, b) || __notnull(); + try { + return __liftTypedArray(BigUint64Array, exports.typedarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + staticarrayFunction(a, b) { + // bindings/esm/staticarrayFunction(~lib/staticarray/StaticArray, ~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __retain(__lowerStaticArray(__setU32, 8, 2, a, Int32Array) || __notnull()); + b = __lowerStaticArray(__setU32, 8, 2, b, Int32Array) || __notnull(); + try { + return __liftStaticArray(__getI32, 2, exports.staticarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + staticarrayU16(a) { + // bindings/esm/staticarrayU16(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __lowerStaticArray(__setU16, 9, 1, a, Uint16Array) || __notnull(); + return __liftStaticArray(__getU16, 1, exports.staticarrayU16(a) >>> 0); + }, + staticarrayI64(a) { + // bindings/esm/staticarrayI64(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __lowerStaticArray(__setU64, 10, 3, a, BigInt64Array) || __notnull(); + return __liftStaticArray(__getI64, 3, exports.staticarrayI64(a) >>> 0); + }, + arrayFunction(a, b) { + // bindings/esm/arrayFunction(~lib/array/Array, ~lib/array/Array) => ~lib/array/Array + a = __retain(__lowerArray(__setU32, 11, 2, a) || __notnull()); + b = __lowerArray(__setU32, 11, 2, b) || __notnull(); + try { + return __liftArray(__getI32, 2, exports.arrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + arrayOfStringsFunction(a, b) { + // bindings/esm/arrayOfStringsFunction(~lib/array/Array<~lib/string/String>, ~lib/array/Array<~lib/string/String>) => ~lib/array/Array<~lib/string/String> + a = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerString(value) || __notnull()); }, 12, 2, a) || __notnull()); + b = __lowerArray((pointer, value) => { __setU32(pointer, __lowerString(value) || __notnull()); }, 12, 2, b) || __notnull(); + try { + return __liftArray(pointer => __liftString(__getU32(pointer)), 2, exports.arrayOfStringsFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + objectFunction(a, b) { + // bindings/esm/objectFunction(bindings/esm/PlainObject, bindings/esm/PlainObject) => bindings/esm/PlainObject + a = __retain(__lowerRecord13(a) || __notnull()); + b = __lowerRecord13(b) || __notnull(); + try { + return __liftRecord13(exports.objectFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + newInternref() { + // bindings/esm/newInternref() => bindings/esm/NonPlainObject + return __liftInternref(exports.newInternref() >>> 0); + }, + internrefFunction(a, b) { + // bindings/esm/internrefFunction(bindings/esm/NonPlainObject, bindings/esm/NonPlainObject) => bindings/esm/NonPlainObject + a = __retain(__lowerInternref(a) || __notnull()); + b = __lowerInternref(b) || __notnull(); + try { + return __liftInternref(exports.internrefFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + functionFunction(fn) { + // bindings/esm/functionFunction(() => void) => () => void + fn = __lowerInternref(fn) || __notnull(); + return __liftInternref(exports.functionFunction(fn) >>> 0); + }, + fn: { + // bindings/esm/fn: () => void + valueOf() { return this.value; }, + get value() { + return __liftInternref(exports.fn.value >>> 0); + } + }, + }, exports); + function __lowerRecord13(value) { + // bindings/esm/PlainObject + // Hint: Opt-out from lowering as a record by providing an empty constructor + if (value == null) return 0; + const pointer = exports.__pin(exports.__new(68, 13)); + __setU8(pointer + 0, value.a); + __setU16(pointer + 2, value.b); + __setU32(pointer + 4, value.c); + __setU64(pointer + 8, value.d || 0n); + __setU8(pointer + 16, value.e); + __setU16(pointer + 18, value.f); + __setU32(pointer + 20, value.g); + __setU64(pointer + 24, value.h || 0n); + __setU32(pointer + 32, value.i); + __setU32(pointer + 36, value.j); + __setU8(pointer + 40, value.k ? 1 : 0); + __setF32(pointer + 44, value.l); + __setF64(pointer + 48, value.m); + __setU32(pointer + 56, __lowerString(value.n)); + __setU32(pointer + 60, __lowerTypedArray(Uint8Array, 14, 0, value.o)); + __setU32(pointer + 64, __lowerArray((pointer, value) => { __setU32(pointer, __lowerString(value) || __notnull()); }, 12, 2, value.p)); + exports.__unpin(pointer); + return pointer; + } + function __liftRecord13(pointer) { + // bindings/esm/PlainObject + // Hint: Opt-out from lifting as a record by providing an empty constructor + if (!pointer) return null; + return { + a: __getI8(pointer + 0), + b: __getI16(pointer + 2), + c: __getI32(pointer + 4), + d: __getI64(pointer + 8), + e: __getU8(pointer + 16), + f: __getU16(pointer + 18), + g: __getU32(pointer + 20), + h: __getU64(pointer + 24), + i: __getI32(pointer + 32), + j: __getU32(pointer + 36), + k: __getU8(pointer + 40) != 0, + l: __getF32(pointer + 44), + m: __getF64(pointer + 48), + n: __liftString(__getU32(pointer + 56)), + o: __liftTypedArray(Uint8Array, __getU32(pointer + 60)), + p: __liftArray(pointer => __liftString(__getU32(pointer)), 2, __getU32(pointer + 64)), + }; + } + function __liftBuffer(pointer) { + if (!pointer) return null; + return memory.buffer.slice(pointer, pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2]); + } + function __lowerBuffer(value) { + if (value == null) return 0; + const pointer = exports.__new(value.byteLength, 1) >>> 0; + new Uint8Array(memory.buffer).set(new Uint8Array(value), pointer); + return pointer; + } + function __liftString(pointer) { + if (!pointer) return null; + const + end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1, + memoryU16 = new Uint16Array(memory.buffer); + let + start = pointer >>> 1, + string = ""; + while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024)); + return string + String.fromCharCode(...memoryU16.subarray(start, end)); + } + function __lowerString(value) { + if (value == null) return 0; + const + length = value.length, + pointer = exports.__new(length << 1, 2) >>> 0, + memoryU16 = new Uint16Array(memory.buffer); + for (let i = 0; i < length; ++i) memoryU16[(pointer >>> 1) + i] = value.charCodeAt(i); + return pointer; + } + function __liftArray(liftElement, align, pointer) { + if (!pointer) return null; + const + dataStart = __getU32(pointer + 4), + length = __dataview.getUint32(pointer + 12, true), + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(dataStart + (i << align >>> 0)); + return values; + } + function __lowerArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 1)) >>> 0, + header = exports.__pin(exports.__new(16, id)) >>> 0; + __setU32(header + 0, buffer); + __dataview.setUint32(header + 4, buffer, true); + __dataview.setUint32(header + 8, length << align, true); + __dataview.setUint32(header + 12, length, true); + for (let i = 0; i < length; ++i) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + exports.__unpin(header); + return header; + } + function __liftTypedArray(constructor, pointer) { + if (!pointer) return null; + return new constructor( + memory.buffer, + __getU32(pointer + 4), + __dataview.getUint32(pointer + 8, true) / constructor.BYTES_PER_ELEMENT + ).slice(); + } + function __lowerTypedArray(constructor, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 1)) >>> 0, + header = exports.__new(12, id) >>> 0; + __setU32(header + 0, buffer); + __dataview.setUint32(header + 4, buffer, true); + __dataview.setUint32(header + 8, length << align, true); + new constructor(memory.buffer, buffer, length).set(values); + exports.__unpin(buffer); + return header; + } + function __liftStaticArray(liftElement, align, pointer) { + if (!pointer) return null; + const + length = __getU32(pointer - 4) >>> align, + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(pointer + (i << align >>> 0)); + return values; + } + function __lowerStaticArray(lowerElement, id, align, values, typedConstructor) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, id)) >>> 0; + if (typedConstructor) { + new typedConstructor(memory.buffer, buffer, length).set(values); + } else { + for (let i = 0; i < length; i++) lowerElement(buffer + (i << align >>> 0), values[i]); + } + exports.__unpin(buffer); + return buffer; + } + class Internref extends Number {} + const registry = new FinalizationRegistry(__release); + function __liftInternref(pointer) { + if (!pointer) return null; + const sentinel = new Internref(__retain(pointer)); + registry.register(sentinel, pointer); + return sentinel; + } + function __lowerInternref(value) { + if (value == null) return 0; + if (value instanceof Internref) return value.valueOf(); + throw TypeError("internref expected"); + } + const refcounts = new Map(); + function __retain(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount) refcounts.set(pointer, refcount + 1); + else refcounts.set(exports.__pin(pointer), 1); + } + return pointer; + } + function __release(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount === 1) exports.__unpin(pointer), refcounts.delete(pointer); + else if (refcount) refcounts.set(pointer, refcount - 1); + else throw Error(`invalid refcount '${refcount}' for reference '${pointer}'`); + } + } + function __notnull() { + throw TypeError("value must not be null"); + } + let __dataview = new DataView(memory.buffer); + function __setU8(pointer, value) { + try { + __dataview.setUint8(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setUint8(pointer, value, true); + } + } + function __setU16(pointer, value) { + try { + __dataview.setUint16(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setUint16(pointer, value, true); + } + } + function __setU32(pointer, value) { + try { + __dataview.setUint32(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setUint32(pointer, value, true); + } + } + function __setU64(pointer, value) { + try { + __dataview.setBigUint64(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setBigUint64(pointer, value, true); + } + } + function __setF32(pointer, value) { + try { + __dataview.setFloat32(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setFloat32(pointer, value, true); + } + } + function __setF64(pointer, value) { + try { + __dataview.setFloat64(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setFloat64(pointer, value, true); + } + } + function __getI8(pointer) { + try { + return __dataview.getInt8(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt8(pointer, true); + } + } + function __getU8(pointer) { + try { + return __dataview.getUint8(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint8(pointer, true); + } + } + function __getI16(pointer) { + try { + return __dataview.getInt16(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt16(pointer, true); + } + } + function __getU16(pointer) { + try { + return __dataview.getUint16(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint16(pointer, true); + } + } + function __getI32(pointer) { + try { + return __dataview.getInt32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt32(pointer, true); + } + } + function __getU32(pointer) { + try { + return __dataview.getUint32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint32(pointer, true); + } + } + function __getI64(pointer) { + try { + return __dataview.getBigInt64(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getBigInt64(pointer, true); + } + } + function __getU64(pointer) { + try { + return __dataview.getBigUint64(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getBigUint64(pointer, true); + } + } + function __getF32(pointer) { + try { + return __dataview.getFloat32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getFloat32(pointer, true); + } + } + function __getF64(pointer) { + try { + return __dataview.getFloat64(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getFloat64(pointer, true); + } + } + exports._start(); + return adaptedExports; +} diff --git a/tests/compiler/bindings/raw.debug.wat b/tests/compiler/bindings/raw.debug.wat new file mode 100644 index 0000000000..c54a11e383 --- /dev/null +++ b/tests/compiler/bindings/raw.debug.wat @@ -0,0 +1,5807 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i64))) + (type $9 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $10 (func (param f64) (result f64))) + (type $11 (func (param i64 i64) (result i64))) + (type $12 (func (result i64))) + (type $13 (func (param i32 i32 i64) (result i32))) + (type $14 (func (param i32 f32))) + (type $15 (func (param i32 f64))) + (type $16 (func (param i32 i32 i32) (result i32))) + (type $17 (func (param i32 i32 i64))) + (type $18 (func (param i32 i32) (result f32))) + (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) + (import "env" "globalThis" (global $bindings/esm/immutableGlobal externref)) + (import "env" "globalThis.globalThis" (global $bindings/esm/immutableGlobalNested externref)) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $bindings/esm/plainGlobal i32 (i32.const 1)) + (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) + (global $bindings/esm/stringGlobal i32 (i32.const 32)) + (global $bindings/esm/mutableStringGlobal (mut i32) (i32.const 64)) + (global $bindings/esm/Enum.ONE i32 (i32.const 1)) + (global $bindings/esm/Enum.TWO i32 (i32.const 2)) + (global $bindings/esm/Enum.THREE i32 (i32.const 3)) + (global $bindings/esm/ConstEnum.ONE i32 (i32.const 1)) + (global $bindings/esm/ConstEnum.TWO i32 (i32.const 2)) + (global $bindings/esm/ConstEnum.THREE i32 (i32.const 3)) + (global $bindings/esm/fn i32 (i32.const 96)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1184)) + (global $~lib/memory/__data_end i32 (i32.const 1252)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34020)) + (global $~lib/memory/__heap_base i32 (i32.const 34020)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00t\00r\00a\00c\00e\00\00\00") + (data $4 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g\00\00\00\00\00\00\00") + (data $5 (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $6 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $7 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 624) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 748) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 812) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") + (data $18 (i32.const 876) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $19 (i32.const 924) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 1052) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") + (data $21 (i32.const 1116) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") + (data $22 (i32.const 1184) "\10\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\81\08\00\00\01\19\00\00\01\02\00\00$\t\00\00\a4\00\00\00$\n\00\00\02\t\00\00\02A\00\00\00\00\00\00A\00\00\00 \00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $start:bindings/esm~anonymous|0) + (export "plainGlobal" (global $bindings/esm/plainGlobal)) + (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) + (export "stringGlobal" (global $bindings/esm/stringGlobal)) + (export "mutableStringGlobal" (global $bindings/esm/mutableStringGlobal)) + (export "Enum.ONE" (global $bindings/esm/Enum.ONE)) + (export "Enum.TWO" (global $bindings/esm/Enum.TWO)) + (export "Enum.THREE" (global $bindings/esm/Enum.THREE)) + (export "ConstEnum.ONE" (global $bindings/esm/ConstEnum.ONE)) + (export "ConstEnum.TWO" (global $bindings/esm/ConstEnum.TWO)) + (export "ConstEnum.THREE" (global $bindings/esm/ConstEnum.THREE)) + (export "plainFunction" (func $bindings/esm/plainFunction)) + (export "plainFunction64" (func $bindings/esm/plainFunction64)) + (export "getMaxUnsigned32" (func $bindings/esm/getMaxUnsigned32)) + (export "getMaxUnsigned64" (func $bindings/esm/getMaxUnsigned64)) + (export "newInternref" (func $bindings/esm/newInternref)) + (export "fn" (global $bindings/esm/fn)) + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (export "__setArgumentsLength" (func $~setArgumentsLength)) + (export "_start" (func $~start)) + (export "bufferFunction" (func $export:bindings/esm/bufferFunction)) + (export "stringFunction" (func $export:bindings/esm/stringFunction)) + (export "stringFunctionOptional" (func $export:bindings/esm/stringFunctionOptional@varargs)) + (export "typedarrayFunction" (func $export:bindings/esm/typedarrayFunction)) + (export "staticarrayFunction" (func $export:bindings/esm/staticarrayFunction)) + (export "staticarrayU16" (func $export:bindings/esm/staticarrayU16)) + (export "staticarrayI64" (func $export:bindings/esm/staticarrayI64)) + (export "arrayFunction" (func $export:bindings/esm/arrayFunction)) + (export "arrayOfStringsFunction" (func $export:bindings/esm/arrayOfStringsFunction)) + (export "objectFunction" (func $export:bindings/esm/objectFunction)) + (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) + (export "functionFunction" (func $export:bindings/esm/functionFunction)) + (func $start:bindings/esm~anonymous|0 + ) + (func $start:bindings/esm + i32.const 128 + i32.const 1 + f64.const 42 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 160 + call $~lib/bindings/dom/console.log + global.get $~lib/bindings/dom/Math.E + call $~lib/bindings/dom/Math.log + drop + global.get $bindings/esm/immutableGlobal + drop + global.get $bindings/esm/immutableGlobalNested + drop + call $bindings/esm/Date_getTimezoneOffset + drop + ) + (func $start:bindings/raw + call $start:bindings/esm + ) + (func $bindings/esm/plainFunction (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $bindings/esm/plainFunction64 (param $a i64) (param $b i64) (result i64) + local.get $a + local.get $b + i64.add + return + ) + (func $bindings/esm/getMaxUnsigned32 (result i32) + global.get $~lib/builtins/u32.MAX_VALUE + return + ) + (func $bindings/esm/getMaxUnsigned64 (result i64) + global.get $~lib/builtins/u64.MAX_VALUE + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 528 + i32.const 592 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 400 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 336 + i32.const 672 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 336 + i32.const 400 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/arraybuffer/ArrayBufferView#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/staticarray/StaticArray#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 2 + i32.shr_u + return + ) + (func $~lib/staticarray/StaticArray#__uset (param $this i32) (param $index i32) (param $value i32) + local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + ) + (func $bindings/esm/staticarrayU16 (param $a i32) (result i32) + local.get $a + return + ) + (func $bindings/esm/staticarrayI64 (param $a i32) (result i32) + local.get $a + return + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array<~lib/string/String>#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/string/String>#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array<~lib/string/String>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $bindings/esm/PlainObject#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store8 + ) + (func $bindings/esm/PlainObject#set:b (param $this i32) (param $b i32) + local.get $this + local.get $b + i32.store16 offset=2 + ) + (func $bindings/esm/PlainObject#set:c (param $this i32) (param $c i32) + local.get $this + local.get $c + i32.store offset=4 + ) + (func $bindings/esm/PlainObject#set:d (param $this i32) (param $d i64) + local.get $this + local.get $d + i64.store offset=8 + ) + (func $bindings/esm/PlainObject#set:e (param $this i32) (param $e i32) + local.get $this + local.get $e + i32.store8 offset=16 + ) + (func $bindings/esm/PlainObject#set:f (param $this i32) (param $f i32) + local.get $this + local.get $f + i32.store16 offset=18 + ) + (func $bindings/esm/PlainObject#set:g (param $this i32) (param $g i32) + local.get $this + local.get $g + i32.store offset=20 + ) + (func $bindings/esm/PlainObject#set:h (param $this i32) (param $h i64) + local.get $this + local.get $h + i64.store offset=24 + ) + (func $bindings/esm/PlainObject#set:i (param $this i32) (param $i i32) + local.get $this + local.get $i + i32.store offset=32 + ) + (func $bindings/esm/PlainObject#set:j (param $this i32) (param $j i32) + local.get $this + local.get $j + i32.store offset=36 + ) + (func $bindings/esm/PlainObject#set:k (param $this i32) (param $k i32) + local.get $this + local.get $k + i32.store8 offset=40 + ) + (func $bindings/esm/PlainObject#set:l (param $this i32) (param $l f32) + local.get $this + local.get $l + f32.store offset=44 + ) + (func $bindings/esm/PlainObject#set:m (param $this i32) (param $m f64) + local.get $this + local.get $m + f64.store offset=48 + ) + (func $bindings/esm/PlainObject#set:n (param $this i32) (param $n i32) + local.get $this + local.get $n + i32.store offset=56 + local.get $this + local.get $n + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $bindings/esm/PlainObject#set:o (param $this i32) (param $o i32) + local.get $this + local.get $o + i32.store offset=60 + local.get $this + local.get $o + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $bindings/esm/PlainObject#set:p (param $this i32) (param $p i32) + local.get $this + local.get $p + i32.store offset=64 + local.get $this + local.get $p + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $bindings/esm/PlainObject#get:a (param $this i32) (result i32) + local.get $this + i32.load8_s + ) + (func $bindings/esm/PlainObject#get:b (param $this i32) (result i32) + local.get $this + i32.load16_s offset=2 + ) + (func $bindings/esm/newInternref (result i32) + i32.const 0 + call $bindings/esm/NonPlainObject#constructor + return + ) + (func $bindings/esm/internrefFunction (param $a i32) (param $b i32) (result i32) + local.get $a + return + ) + (func $bindings/esm/functionFunction (param $fn i32) (result i32) + local.get $fn + return + ) + (func $~lib/rt/itcms/__pin (param $ptr i32) (result i32) + (local $obj i32) + local.get $ptr + if + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + local.get $obj + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + if + i32.const 1072 + i32.const 400 + i32.const 338 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/Object#unlink + local.get $obj + global.get $~lib/rt/itcms/pinSpace + i32.const 3 + call $~lib/rt/itcms/Object#linkTo + end + local.get $ptr + return + ) + (func $~lib/rt/itcms/__unpin (param $ptr i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + local.get $obj + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.ne + if + i32.const 1136 + i32.const 400 + i32.const 352 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + else + local.get $obj + call $~lib/rt/itcms/Object#unlink + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + end + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 528 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 944 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 336 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1072 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1136 + local.get $0 + call $~lib/rt/itcms/__visit + global.get $bindings/esm/stringGlobal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $bindings/esm/mutableStringGlobal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $bindings/esm/PlainObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=56 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=60 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=64 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $bindings/esm/NonPlainObject + block $~lib/typedarray/Uint8Array + block $bindings/esm/PlainObject + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/typedarray/Uint64Array + block $~lib/typedarray/Float32Array + block $~lib/typedarray/Int16Array + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/typedarray/Int16Array $~lib/typedarray/Float32Array $~lib/typedarray/Uint64Array $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array<~lib/string/String> $bindings/esm/PlainObject $~lib/typedarray/Uint8Array $bindings/esm/NonPlainObject $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint64Array~visit + return + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $bindings/esm/PlainObject~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + return + end + unreachable + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:bindings/raw + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 480 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 624 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 34048 + i32.const 34096 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $bindings/esm/bufferFunction (param $a i32) (param $b i32) (result i32) + (local $aByteLength i32) + (local $bByteLength i32) + (local $out i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $aByteLength + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bByteLength + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $aByteLength + local.get $bByteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $out + i32.store offset=4 + local.get $out + local.get $a + local.get $aByteLength + memory.copy + local.get $out + local.get $aByteLength + i32.add + local.get $b + local.get $bByteLength + memory.copy + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 736 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $bindings/esm/stringFunction (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $bindings/esm/stringFunctionOptional (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $bindings/esm/stringFunctionOptional@varargs (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 64 + local.tee $b + i32.store + end + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $bindings/esm/stringFunctionOptional + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) + (local $buffer i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $length + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 224 + i32.const 272 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + local.get $alignLog2 + i32.shl + local.tee $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $length + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Uint64Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int16Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Float32Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Int16Array#__get (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 528 + i32.const 768 + i32.const 452 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Uint64Array#__set (param $this i32) (param $index i32) (param $value i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 528 + i32.const 768 + i32.const 1173 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + local.get $value + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#__get (param $this i32) (param $index i32) (result f32) + (local $2 i32) + (local $3 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 528 + i32.const 768 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $bindings/esm/typedarrayFunction (param $a i32) (param $b i32) (result i32) + (local $out i32) + (local $i i32) + (local $i|4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/typedarray/Int16Array#get:length + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/typedarray/Float32Array#get:length + i32.add + call $~lib/typedarray/Uint64Array#constructor + local.tee $out + i32.store offset=4 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/typedarray/Int16Array#get:length + i32.lt_s + if + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $i + call $~lib/typedarray/Int16Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $i|4 + loop $for-loop|1 + local.get $i|4 + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/typedarray/Float32Array#get:length + i32.lt_s + if + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/typedarray/Int16Array#get:length + local.get $i|4 + i32.add + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $i|4 + call $~lib/typedarray/Float32Array#__get + i64.trunc_sat_f32_u + call $~lib/typedarray/Uint64Array#__set + local.get $i|4 + i32.const 1 + i32.add + local.set $i|4 + br $for-loop|1 + end + end + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/staticarray/StaticArray#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u + if + i32.const 528 + i32.const 832 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/staticarray/StaticArray#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u + if + i32.const 528 + i32.const 832 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + local.get $value + call $~lib/staticarray/StaticArray#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $bindings/esm/staticarrayFunction (param $a i32) (param $b i32) (result i32) + (local $c i32) + (local $i i32) + (local $i|4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/staticarray/StaticArray#get:length + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/staticarray/StaticArray#get:length + i32.add + call $~lib/staticarray/StaticArray#constructor + local.tee $c + i32.store offset=4 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/staticarray/StaticArray#get:length + i32.lt_s + if + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $i + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $i|4 + loop $for-loop|1 + local.get $i|4 + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/staticarray/StaticArray#get:length + i32.lt_s + if + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/staticarray/StaticArray#get:length + local.get $i|4 + i32.add + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $i|4 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $i|4 + i32.const 1 + i32.add + local.set $i|4 + br $for-loop|1 + end + end + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 224 + i32.const 896 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 528 + i32.const 896 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 224 + i32.const 896 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 528 + i32.const 896 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $bindings/esm/arrayFunction (param $a i32) (param $b i32) (result i32) + (local $c i32) + (local $i i32) + (local $i|4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.add + call $~lib/array/Array#constructor + local.tee $c + i32.store offset=4 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $i + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $i|4 + loop $for-loop|1 + local.get $i|4 + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/array/Array#get:length + local.get $i|4 + i32.add + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $i|4 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $i|4 + i32.const 1 + i32.add + local.set $i|4 + br $for-loop|1 + end + end + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/array/Array<~lib/string/String>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 224 + i32.const 896 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array<~lib/string/String>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array<~lib/string/String>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array<~lib/string/String>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<~lib/string/String>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.ge_u + if + i32.const 528 + i32.const 896 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 944 + i32.const 896 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 528 + i32.const 896 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<~lib/string/String>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $bindings/esm/arrayOfStringsFunction (param $a i32) (param $b i32) (result i32) + (local $c i32) + (local $i i32) + (local $i|4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length + i32.add + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $c + i32.store offset=4 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length + i32.lt_s + if + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $i + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array<~lib/string/String>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/array/Array<~lib/string/String>#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $i|4 + loop $for-loop|1 + local.get $i|4 + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length + i32.lt_s + if + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $a + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length + local.get $i|4 + i32.add + local.get $b + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i|4 + call $~lib/array/Array<~lib/string/String>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/array/Array<~lib/string/String>#__set + local.get $i|4 + i32.const 1 + i32.add + local.set $i|4 + br $for-loop|1 + end + end + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $bindings/esm/PlainObject#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:b + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:c + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i64.const 0 + call $bindings/esm/PlainObject#set:d + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:e + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:f + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:g + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i64.const 0 + call $bindings/esm/PlainObject#set:h + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:i + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:j + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:k + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + f32.const 0 + call $bindings/esm/PlainObject#set:l + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + f64.const 0 + call $bindings/esm/PlainObject#set:m + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:n + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:o + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $bindings/esm/PlainObject#set:p + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $bindings/esm/objectFunction (param $a i32) (param $b i32) (result i32) + (local $ref i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $bindings/esm/PlainObject#constructor + local.tee $ref + i32.store + local.get $ref + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $a + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $bindings/esm/PlainObject#get:a + local.get $b + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $bindings/esm/PlainObject#get:a + i32.add + call $bindings/esm/PlainObject#set:a + local.get $ref + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $a + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $bindings/esm/PlainObject#get:b + local.get $b + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $bindings/esm/PlainObject#get:b + i32.add + call $bindings/esm/PlainObject#set:b + local.get $ref + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 224 + i32.const 272 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/staticarray/StaticArray#constructor (param $this i32) (param $length i32) (result i32) + (local $outSize i32) + (local $out i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 224 + i32.const 832 + i32.const 51 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + i32.const 2 + i32.shl + local.set $outSize + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $out + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $bindings/esm/NonPlainObject#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/bufferFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/stringFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/stringFunctionOptional@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/stringFunctionOptional@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/typedarrayFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/staticarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/staticarrayFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/staticarrayU16 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:bindings/esm/staticarrayI64 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/staticarrayI64 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/arrayFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/arrayOfStringsFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/objectFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/internrefFunction + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $export:bindings/esm/functionFunction (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $bindings/esm/functionFunction + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/bindings/raw.js b/tests/compiler/bindings/raw.js new file mode 100644 index 0000000000..72175ee8d7 --- /dev/null +++ b/tests/compiler/bindings/raw.js @@ -0,0 +1,6 @@ +export function preInstantiate(imports, exports) { + const env = imports.env ||= {}; + env["console.log"] = function() { /* stub */ }; + env["performance.timeOrigin"] = 42; + // env.mutableGlobal = new WebAssembly.Global({ value: "i32", mutable: true}, 42); +} diff --git a/tests/compiler/bindings/raw.json b/tests/compiler/bindings/raw.json new file mode 100644 index 0000000000..3f2f9b309a --- /dev/null +++ b/tests/compiler/bindings/raw.json @@ -0,0 +1,9 @@ +{ + "asc_flags": [ + "--exportStart _start", + "--bindings raw" + ], + "features": [ + "reference-types" + ] +} diff --git a/tests/compiler/bindings/raw.release.d.ts b/tests/compiler/bindings/raw.release.d.ts new file mode 100644 index 0000000000..ee160bdb50 --- /dev/null +++ b/tests/compiler/bindings/raw.release.d.ts @@ -0,0 +1,208 @@ +declare namespace __AdaptedExports { + /** Exported memory */ + export const memory: WebAssembly.Memory; + /** bindings/esm/plainGlobal */ + export const plainGlobal: { + /** @type `i32` */ + get value(): number + }; + /** bindings/esm/plainMutableGlobal */ + export const plainMutableGlobal: { + /** @type `i32` */ + get value(): number; + set value(value: number); + }; + /** bindings/esm/stringGlobal */ + export const stringGlobal: { + /** @type `~lib/string/String` */ + get value(): string + }; + /** bindings/esm/mutableStringGlobal */ + export const mutableStringGlobal: { + /** @type `~lib/string/String` */ + get value(): string; + set value(value: string); + }; + /** bindings/esm/Enum */ + export enum Enum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, + } + /** bindings/esm/ConstEnum */ + export enum ConstEnum { + /** @type `i32` */ + ONE, + /** @type `i32` */ + TWO, + /** @type `i32` */ + THREE, + } + /** + * bindings/esm/plainFunction + * @param a `i32` + * @param b `i32` + * @returns `i32` + */ + export function plainFunction(a: number, b: number): number; + /** + * bindings/esm/plainFunction64 + * @param a `i64` + * @param b `i64` + * @returns `i64` + */ + export function plainFunction64(a: bigint, b: bigint): bigint; + /** + * bindings/esm/getMaxUnsigned32 + * @returns `u32` + */ + export function getMaxUnsigned32(): number; + /** + * bindings/esm/getMaxUnsigned64 + * @returns `u64` + */ + export function getMaxUnsigned64(): bigint; + /** + * bindings/esm/bufferFunction + * @param a `~lib/arraybuffer/ArrayBuffer` + * @param b `~lib/arraybuffer/ArrayBuffer` + * @returns `~lib/arraybuffer/ArrayBuffer` + */ + export function bufferFunction(a: ArrayBuffer, b: ArrayBuffer): ArrayBuffer; + /** + * bindings/esm/stringFunction + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ + export function stringFunction(a: string, b: string): string; + /** + * bindings/esm/stringFunctionOptional + * @param a `~lib/string/String` + * @param b `~lib/string/String` + * @returns `~lib/string/String` + */ + export function stringFunctionOptional(a: string, b?: string): string; + /** + * bindings/esm/typedarrayFunction + * @param a `~lib/typedarray/Int16Array` + * @param b `~lib/typedarray/Float32Array` + * @returns `~lib/typedarray/Uint64Array` + */ + export function typedarrayFunction(a: Int16Array, b: Float32Array): BigUint64Array; + /** + * bindings/esm/staticarrayFunction + * @param a `~lib/staticarray/StaticArray` + * @param b `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ + export function staticarrayFunction(a: ArrayLike, b: ArrayLike): ArrayLike; + /** + * bindings/esm/staticarrayU16 + * @param a `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ + export function staticarrayU16(a: ArrayLike): ArrayLike; + /** + * bindings/esm/staticarrayI64 + * @param a `~lib/staticarray/StaticArray` + * @returns `~lib/staticarray/StaticArray` + */ + export function staticarrayI64(a: ArrayLike): ArrayLike; + /** + * bindings/esm/arrayFunction + * @param a `~lib/array/Array` + * @param b `~lib/array/Array` + * @returns `~lib/array/Array` + */ + export function arrayFunction(a: Array, b: Array): Array; + /** + * bindings/esm/arrayOfStringsFunction + * @param a `~lib/array/Array<~lib/string/String>` + * @param b `~lib/array/Array<~lib/string/String>` + * @returns `~lib/array/Array<~lib/string/String>` + */ + export function arrayOfStringsFunction(a: Array, b: Array): Array; + /** + * bindings/esm/objectFunction + * @param a `bindings/esm/PlainObject` + * @param b `bindings/esm/PlainObject` + * @returns `bindings/esm/PlainObject` + */ + export function objectFunction(a: __Record13, b: __Record13): __Record13; + /** + * bindings/esm/newInternref + * @returns `bindings/esm/NonPlainObject` + */ + export function newInternref(): __Internref15; + /** + * bindings/esm/internrefFunction + * @param a `bindings/esm/NonPlainObject` + * @param b `bindings/esm/NonPlainObject` + * @returns `bindings/esm/NonPlainObject` + */ + export function internrefFunction(a: __Internref15, b: __Internref15): __Internref15; + /** + * bindings/esm/functionFunction + * @param fn `() => void` + * @returns `() => void` + */ + export function functionFunction(fn: __Internref4): __Internref4; + /** bindings/esm/fn */ + export const fn: { + /** @type `() => void` */ + get value(): __Internref4 + }; +} +/** bindings/esm/PlainObject */ +declare interface __Record13 { + /** @type `i8` */ + a: number | TOmittable; + /** @type `i16` */ + b: number | TOmittable; + /** @type `i32` */ + c: number | TOmittable; + /** @type `i64` */ + d: bigint | TOmittable; + /** @type `u8` */ + e: number | TOmittable; + /** @type `u16` */ + f: number | TOmittable; + /** @type `u32` */ + g: number | TOmittable; + /** @type `u64` */ + h: bigint | TOmittable; + /** @type `isize` */ + i: number | TOmittable; + /** @type `usize` */ + j: number | TOmittable; + /** @type `bool` */ + k: boolean | TOmittable; + /** @type `f32` */ + l: number | TOmittable; + /** @type `f64` */ + m: number | TOmittable; + /** @type `~lib/string/String | null` */ + n: string | null | TOmittable; + /** @type `~lib/typedarray/Uint8Array | null` */ + o: Uint8Array | null | TOmittable; + /** @type `~lib/array/Array<~lib/string/String> | null` */ + p: Array | null | TOmittable; +} +/** bindings/esm/NonPlainObject */ +declare class __Internref15 extends Number { + private __nominal15: symbol; + private __nominal0: symbol; +} +/** ~lib/function/Function<%28%29=>void> */ +declare class __Internref4 extends Number { + private __nominal4: symbol; + private __nominal0: symbol; +} +/** Instantiates the compiled WebAssembly module with the given imports. */ +export declare function instantiate(module: WebAssembly.Module, imports: { + env: unknown, +}): Promise; diff --git a/tests/compiler/bindings/raw.release.js b/tests/compiler/bindings/raw.release.js new file mode 100644 index 0000000000..564035a225 --- /dev/null +++ b/tests/compiler/bindings/raw.release.js @@ -0,0 +1,522 @@ +export async function instantiate(module, imports = {}) { + const adaptedImports = { + env: Object.setPrototypeOf({ + trace(message, n, a0, a1, a2, a3, a4) { + // ~lib/builtins/trace(~lib/string/String, i32?, f64?, f64?, f64?, f64?, f64?) => void + message = __liftString(message >>> 0); + (() => { + // @external.js + console.log(message, ...[a0, a1, a2, a3, a4].slice(0, n)); + })(); + }, + "console.log"(text) { + // ~lib/bindings/dom/console.log(~lib/string/String) => void + text = __liftString(text >>> 0); + console.log(text); + }, + "Math.E": ( + // ~lib/bindings/dom/Math.E: f64 + Math.E + ), + "Math.log"(x) { + // ~lib/bindings/dom/Math.log(f64) => f64 + return Math.log(x); + }, + "globalThis.globalThis": ( + // bindings/esm/immutableGlobalNested: ref_extern | null + globalThis.globalThis + ), + "Date.getTimezoneOffset"() { + // bindings/esm/Date_getTimezoneOffset() => i32 + return (() => { + // @external.js + return new Date().getTimezoneOffset(); + })(); + }, + abort(message, fileName, lineNumber, columnNumber) { + // ~lib/builtins/abort(~lib/string/String | null?, ~lib/string/String | null?, u32?, u32?) => void + message = __liftString(message >>> 0); + fileName = __liftString(fileName >>> 0); + lineNumber = lineNumber >>> 0; + columnNumber = columnNumber >>> 0; + (() => { + // @external.js + throw Error(`${message} in ${fileName}:${lineNumber}:${columnNumber}`); + })(); + }, + }, Object.assign(Object.create(globalThis), imports.env || {})), + }; + const { exports } = await WebAssembly.instantiate(module, adaptedImports); + const memory = exports.memory || imports.env.memory; + const adaptedExports = Object.setPrototypeOf({ + stringGlobal: { + // bindings/esm/stringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.stringGlobal.value >>> 0); + } + }, + mutableStringGlobal: { + // bindings/esm/mutableStringGlobal: ~lib/string/String + valueOf() { return this.value; }, + get value() { + return __liftString(exports.mutableStringGlobal.value >>> 0); + }, + set value(value) { + exports.mutableStringGlobal.value = __lowerString(value) || __notnull(); + } + }, + Enum: (values => ( + // bindings/esm/Enum + values[values.ONE = exports["Enum.ONE"].valueOf()] = "ONE", + values[values.TWO = exports["Enum.TWO"].valueOf()] = "TWO", + values[values.THREE = exports["Enum.THREE"].valueOf()] = "THREE", + values + ))({}), + ConstEnum: (values => ( + // bindings/esm/ConstEnum + values[values.ONE = 1] = "ONE", + values[values.TWO = 2] = "TWO", + values[values.THREE = 3] = "THREE", + values + ))({}), + plainFunction64(a, b) { + // bindings/esm/plainFunction64(i64, i64) => i64 + a = a || 0n; + b = b || 0n; + return exports.plainFunction64(a, b); + }, + getMaxUnsigned32() { + // bindings/esm/getMaxUnsigned32() => u32 + return exports.getMaxUnsigned32() >>> 0; + }, + getMaxUnsigned64() { + // bindings/esm/getMaxUnsigned64() => u64 + return BigInt.asUintN(64, exports.getMaxUnsigned64()); + }, + bufferFunction(a, b) { + // bindings/esm/bufferFunction(~lib/arraybuffer/ArrayBuffer, ~lib/arraybuffer/ArrayBuffer) => ~lib/arraybuffer/ArrayBuffer + a = __retain(__lowerBuffer(a) || __notnull()); + b = __lowerBuffer(b) || __notnull(); + try { + return __liftBuffer(exports.bufferFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunction(a, b) { + // bindings/esm/stringFunction(~lib/string/String, ~lib/string/String) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + return __liftString(exports.stringFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + stringFunctionOptional(a, b) { + // bindings/esm/stringFunctionOptional(~lib/string/String, ~lib/string/String?) => ~lib/string/String + a = __retain(__lowerString(a) || __notnull()); + b = __lowerString(b) || __notnull(); + try { + exports.__setArgumentsLength(arguments.length); + return __liftString(exports.stringFunctionOptional(a, b) >>> 0); + } finally { + __release(a); + } + }, + typedarrayFunction(a, b) { + // bindings/esm/typedarrayFunction(~lib/typedarray/Int16Array, ~lib/typedarray/Float32Array) => ~lib/typedarray/Uint64Array + a = __retain(__lowerTypedArray(Int16Array, 5, 1, a) || __notnull()); + b = __lowerTypedArray(Float32Array, 6, 2, b) || __notnull(); + try { + return __liftTypedArray(BigUint64Array, exports.typedarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + staticarrayFunction(a, b) { + // bindings/esm/staticarrayFunction(~lib/staticarray/StaticArray, ~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __retain(__lowerStaticArray(__setU32, 8, 2, a, Int32Array) || __notnull()); + b = __lowerStaticArray(__setU32, 8, 2, b, Int32Array) || __notnull(); + try { + return __liftStaticArray(__getI32, 2, exports.staticarrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + staticarrayU16(a) { + // bindings/esm/staticarrayU16(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __lowerStaticArray(__setU16, 9, 1, a, Uint16Array) || __notnull(); + return __liftStaticArray(__getU16, 1, exports.staticarrayU16(a) >>> 0); + }, + staticarrayI64(a) { + // bindings/esm/staticarrayI64(~lib/staticarray/StaticArray) => ~lib/staticarray/StaticArray + a = __lowerStaticArray(__setU64, 10, 3, a, BigInt64Array) || __notnull(); + return __liftStaticArray(__getI64, 3, exports.staticarrayI64(a) >>> 0); + }, + arrayFunction(a, b) { + // bindings/esm/arrayFunction(~lib/array/Array, ~lib/array/Array) => ~lib/array/Array + a = __retain(__lowerArray(__setU32, 11, 2, a) || __notnull()); + b = __lowerArray(__setU32, 11, 2, b) || __notnull(); + try { + return __liftArray(__getI32, 2, exports.arrayFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + arrayOfStringsFunction(a, b) { + // bindings/esm/arrayOfStringsFunction(~lib/array/Array<~lib/string/String>, ~lib/array/Array<~lib/string/String>) => ~lib/array/Array<~lib/string/String> + a = __retain(__lowerArray((pointer, value) => { __setU32(pointer, __lowerString(value) || __notnull()); }, 12, 2, a) || __notnull()); + b = __lowerArray((pointer, value) => { __setU32(pointer, __lowerString(value) || __notnull()); }, 12, 2, b) || __notnull(); + try { + return __liftArray(pointer => __liftString(__getU32(pointer)), 2, exports.arrayOfStringsFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + objectFunction(a, b) { + // bindings/esm/objectFunction(bindings/esm/PlainObject, bindings/esm/PlainObject) => bindings/esm/PlainObject + a = __retain(__lowerRecord13(a) || __notnull()); + b = __lowerRecord13(b) || __notnull(); + try { + return __liftRecord13(exports.objectFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + newInternref() { + // bindings/esm/newInternref() => bindings/esm/NonPlainObject + return __liftInternref(exports.newInternref() >>> 0); + }, + internrefFunction(a, b) { + // bindings/esm/internrefFunction(bindings/esm/NonPlainObject, bindings/esm/NonPlainObject) => bindings/esm/NonPlainObject + a = __retain(__lowerInternref(a) || __notnull()); + b = __lowerInternref(b) || __notnull(); + try { + return __liftInternref(exports.internrefFunction(a, b) >>> 0); + } finally { + __release(a); + } + }, + functionFunction(fn) { + // bindings/esm/functionFunction(() => void) => () => void + fn = __lowerInternref(fn) || __notnull(); + return __liftInternref(exports.functionFunction(fn) >>> 0); + }, + fn: { + // bindings/esm/fn: () => void + valueOf() { return this.value; }, + get value() { + return __liftInternref(exports.fn.value >>> 0); + } + }, + }, exports); + function __lowerRecord13(value) { + // bindings/esm/PlainObject + // Hint: Opt-out from lowering as a record by providing an empty constructor + if (value == null) return 0; + const pointer = exports.__pin(exports.__new(68, 13)); + __setU8(pointer + 0, value.a); + __setU16(pointer + 2, value.b); + __setU32(pointer + 4, value.c); + __setU64(pointer + 8, value.d || 0n); + __setU8(pointer + 16, value.e); + __setU16(pointer + 18, value.f); + __setU32(pointer + 20, value.g); + __setU64(pointer + 24, value.h || 0n); + __setU32(pointer + 32, value.i); + __setU32(pointer + 36, value.j); + __setU8(pointer + 40, value.k ? 1 : 0); + __setF32(pointer + 44, value.l); + __setF64(pointer + 48, value.m); + __setU32(pointer + 56, __lowerString(value.n)); + __setU32(pointer + 60, __lowerTypedArray(Uint8Array, 14, 0, value.o)); + __setU32(pointer + 64, __lowerArray((pointer, value) => { __setU32(pointer, __lowerString(value) || __notnull()); }, 12, 2, value.p)); + exports.__unpin(pointer); + return pointer; + } + function __liftRecord13(pointer) { + // bindings/esm/PlainObject + // Hint: Opt-out from lifting as a record by providing an empty constructor + if (!pointer) return null; + return { + a: __getI8(pointer + 0), + b: __getI16(pointer + 2), + c: __getI32(pointer + 4), + d: __getI64(pointer + 8), + e: __getU8(pointer + 16), + f: __getU16(pointer + 18), + g: __getU32(pointer + 20), + h: __getU64(pointer + 24), + i: __getI32(pointer + 32), + j: __getU32(pointer + 36), + k: __getU8(pointer + 40) != 0, + l: __getF32(pointer + 44), + m: __getF64(pointer + 48), + n: __liftString(__getU32(pointer + 56)), + o: __liftTypedArray(Uint8Array, __getU32(pointer + 60)), + p: __liftArray(pointer => __liftString(__getU32(pointer)), 2, __getU32(pointer + 64)), + }; + } + function __liftBuffer(pointer) { + if (!pointer) return null; + return memory.buffer.slice(pointer, pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2]); + } + function __lowerBuffer(value) { + if (value == null) return 0; + const pointer = exports.__new(value.byteLength, 1) >>> 0; + new Uint8Array(memory.buffer).set(new Uint8Array(value), pointer); + return pointer; + } + function __liftString(pointer) { + if (!pointer) return null; + const + end = pointer + new Uint32Array(memory.buffer)[pointer - 4 >>> 2] >>> 1, + memoryU16 = new Uint16Array(memory.buffer); + let + start = pointer >>> 1, + string = ""; + while (end - start > 1024) string += String.fromCharCode(...memoryU16.subarray(start, start += 1024)); + return string + String.fromCharCode(...memoryU16.subarray(start, end)); + } + function __lowerString(value) { + if (value == null) return 0; + const + length = value.length, + pointer = exports.__new(length << 1, 2) >>> 0, + memoryU16 = new Uint16Array(memory.buffer); + for (let i = 0; i < length; ++i) memoryU16[(pointer >>> 1) + i] = value.charCodeAt(i); + return pointer; + } + function __liftArray(liftElement, align, pointer) { + if (!pointer) return null; + const + dataStart = __getU32(pointer + 4), + length = __dataview.getUint32(pointer + 12, true), + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(dataStart + (i << align >>> 0)); + return values; + } + function __lowerArray(lowerElement, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 1)) >>> 0, + header = exports.__pin(exports.__new(16, id)) >>> 0; + __setU32(header + 0, buffer); + __dataview.setUint32(header + 4, buffer, true); + __dataview.setUint32(header + 8, length << align, true); + __dataview.setUint32(header + 12, length, true); + for (let i = 0; i < length; ++i) lowerElement(buffer + (i << align >>> 0), values[i]); + exports.__unpin(buffer); + exports.__unpin(header); + return header; + } + function __liftTypedArray(constructor, pointer) { + if (!pointer) return null; + return new constructor( + memory.buffer, + __getU32(pointer + 4), + __dataview.getUint32(pointer + 8, true) / constructor.BYTES_PER_ELEMENT + ).slice(); + } + function __lowerTypedArray(constructor, id, align, values) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, 1)) >>> 0, + header = exports.__new(12, id) >>> 0; + __setU32(header + 0, buffer); + __dataview.setUint32(header + 4, buffer, true); + __dataview.setUint32(header + 8, length << align, true); + new constructor(memory.buffer, buffer, length).set(values); + exports.__unpin(buffer); + return header; + } + function __liftStaticArray(liftElement, align, pointer) { + if (!pointer) return null; + const + length = __getU32(pointer - 4) >>> align, + values = new Array(length); + for (let i = 0; i < length; ++i) values[i] = liftElement(pointer + (i << align >>> 0)); + return values; + } + function __lowerStaticArray(lowerElement, id, align, values, typedConstructor) { + if (values == null) return 0; + const + length = values.length, + buffer = exports.__pin(exports.__new(length << align, id)) >>> 0; + if (typedConstructor) { + new typedConstructor(memory.buffer, buffer, length).set(values); + } else { + for (let i = 0; i < length; i++) lowerElement(buffer + (i << align >>> 0), values[i]); + } + exports.__unpin(buffer); + return buffer; + } + class Internref extends Number {} + const registry = new FinalizationRegistry(__release); + function __liftInternref(pointer) { + if (!pointer) return null; + const sentinel = new Internref(__retain(pointer)); + registry.register(sentinel, pointer); + return sentinel; + } + function __lowerInternref(value) { + if (value == null) return 0; + if (value instanceof Internref) return value.valueOf(); + throw TypeError("internref expected"); + } + const refcounts = new Map(); + function __retain(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount) refcounts.set(pointer, refcount + 1); + else refcounts.set(exports.__pin(pointer), 1); + } + return pointer; + } + function __release(pointer) { + if (pointer) { + const refcount = refcounts.get(pointer); + if (refcount === 1) exports.__unpin(pointer), refcounts.delete(pointer); + else if (refcount) refcounts.set(pointer, refcount - 1); + else throw Error(`invalid refcount '${refcount}' for reference '${pointer}'`); + } + } + function __notnull() { + throw TypeError("value must not be null"); + } + let __dataview = new DataView(memory.buffer); + function __setU8(pointer, value) { + try { + __dataview.setUint8(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setUint8(pointer, value, true); + } + } + function __setU16(pointer, value) { + try { + __dataview.setUint16(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setUint16(pointer, value, true); + } + } + function __setU32(pointer, value) { + try { + __dataview.setUint32(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setUint32(pointer, value, true); + } + } + function __setU64(pointer, value) { + try { + __dataview.setBigUint64(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setBigUint64(pointer, value, true); + } + } + function __setF32(pointer, value) { + try { + __dataview.setFloat32(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setFloat32(pointer, value, true); + } + } + function __setF64(pointer, value) { + try { + __dataview.setFloat64(pointer, value, true); + } catch { + __dataview = new DataView(memory.buffer); + __dataview.setFloat64(pointer, value, true); + } + } + function __getI8(pointer) { + try { + return __dataview.getInt8(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt8(pointer, true); + } + } + function __getU8(pointer) { + try { + return __dataview.getUint8(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint8(pointer, true); + } + } + function __getI16(pointer) { + try { + return __dataview.getInt16(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt16(pointer, true); + } + } + function __getU16(pointer) { + try { + return __dataview.getUint16(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint16(pointer, true); + } + } + function __getI32(pointer) { + try { + return __dataview.getInt32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getInt32(pointer, true); + } + } + function __getU32(pointer) { + try { + return __dataview.getUint32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getUint32(pointer, true); + } + } + function __getI64(pointer) { + try { + return __dataview.getBigInt64(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getBigInt64(pointer, true); + } + } + function __getU64(pointer) { + try { + return __dataview.getBigUint64(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getBigUint64(pointer, true); + } + } + function __getF32(pointer) { + try { + return __dataview.getFloat32(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getFloat32(pointer, true); + } + } + function __getF64(pointer) { + try { + return __dataview.getFloat64(pointer, true); + } catch { + __dataview = new DataView(memory.buffer); + return __dataview.getFloat64(pointer, true); + } + } + exports._start(); + return adaptedExports; +} diff --git a/tests/compiler/bindings/raw.release.wat b/tests/compiler/bindings/raw.release.wat new file mode 100644 index 0000000000..dcd117d596 --- /dev/null +++ b/tests/compiler/bindings/raw.release.wat @@ -0,0 +1,4428 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $9 (func (param f64) (result f64))) + (type $10 (func (param i64 i64) (result i64))) + (type $11 (func (result i64))) + (type $12 (func (param i32 i32 i32 i32))) + (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $bindings/esm/plainGlobal i32 (i32.const 1)) + (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) + (global $bindings/esm/stringGlobal i32 (i32.const 1056)) + (global $bindings/esm/mutableStringGlobal (mut i32) (i32.const 1088)) + (global $bindings/esm/Enum.ONE i32 (i32.const 1)) + (global $bindings/esm/Enum.TWO i32 (i32.const 2)) + (global $bindings/esm/Enum.THREE i32 (i32.const 3)) + (global $bindings/esm/ConstEnum.ONE i32 (i32.const 1)) + (global $bindings/esm/ConstEnum.TWO i32 (i32.const 2)) + (global $bindings/esm/ConstEnum.THREE i32 (i32.const 3)) + (global $bindings/esm/fn i32 (i32.const 1120)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2208)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35044)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\02\00\00\00a") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\02\00\00\00b") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\04\00\00\00\08\00\00\00\01") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\n\00\00\00t\00r\00a\00c\00e") + (data $4 (i32.const 1164) "<") + (data $4.1 (i32.const 1176) "\02\00\00\00&\00\00\004\002\00 \00f\00r\00o\00m\00 \00c\00o\00n\00s\00o\00l\00e\00.\00l\00o\00g") + (data $5 (i32.const 1228) ",") + (data $5.1 (i32.const 1240) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $6 (i32.const 1276) "<") + (data $6.1 (i32.const 1288) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $7 (i32.const 1340) "<") + (data $7.1 (i32.const 1352) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $8 (i32.const 1404) "<") + (data $8.1 (i32.const 1416) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $11 (i32.const 1532) "<") + (data $11.1 (i32.const 1544) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $12 (i32.const 1596) ",") + (data $12.1 (i32.const 1608) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $14 (i32.const 1676) "<") + (data $14.1 (i32.const 1688) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $15 (i32.const 1740) "\1c") + (data $15.1 (i32.const 1752) "\02") + (data $16 (i32.const 1772) "<") + (data $16.1 (i32.const 1784) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data $17 (i32.const 1836) "<") + (data $17.1 (i32.const 1848) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data $18 (i32.const 1900) ",") + (data $18.1 (i32.const 1912) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $19 (i32.const 1948) "|") + (data $19.1 (i32.const 1960) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $20 (i32.const 2076) "<") + (data $20.1 (i32.const 2088) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data $21 (i32.const 2140) "<") + (data $21.1 (i32.const 2152) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") + (data $22 (i32.const 2208) "\10\00\00\00 \00\00\00 \00\00\00 ") + (data $22.1 (i32.const 2232) "\81\08\00\00\01\19\00\00\01\02\00\00$\t\00\00\a4\00\00\00$\n\00\00\02\t\00\00\02A\00\00\00\00\00\00A\00\00\00 ") + (export "plainGlobal" (global $bindings/esm/plainGlobal)) + (export "plainMutableGlobal" (global $bindings/esm/plainMutableGlobal)) + (export "stringGlobal" (global $bindings/esm/stringGlobal)) + (export "mutableStringGlobal" (global $bindings/esm/mutableStringGlobal)) + (export "Enum.ONE" (global $bindings/esm/Enum.ONE)) + (export "Enum.TWO" (global $bindings/esm/Enum.TWO)) + (export "Enum.THREE" (global $bindings/esm/Enum.THREE)) + (export "ConstEnum.ONE" (global $bindings/esm/ConstEnum.ONE)) + (export "ConstEnum.TWO" (global $bindings/esm/ConstEnum.TWO)) + (export "ConstEnum.THREE" (global $bindings/esm/ConstEnum.THREE)) + (export "plainFunction" (func $bindings/esm/plainFunction)) + (export "plainFunction64" (func $bindings/esm/plainFunction64)) + (export "getMaxUnsigned32" (func $bindings/esm/getMaxUnsigned32)) + (export "getMaxUnsigned64" (func $bindings/esm/getMaxUnsigned64)) + (export "newInternref" (func $bindings/esm/newInternref)) + (export "fn" (global $bindings/esm/fn)) + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (export "__setArgumentsLength" (func $~setArgumentsLength)) + (export "_start" (func $~start)) + (export "bufferFunction" (func $export:bindings/esm/bufferFunction)) + (export "stringFunction" (func $export:bindings/esm/stringFunction)) + (export "stringFunctionOptional" (func $export:bindings/esm/stringFunctionOptional@varargs)) + (export "typedarrayFunction" (func $export:bindings/esm/typedarrayFunction)) + (export "staticarrayFunction" (func $export:bindings/esm/staticarrayFunction)) + (export "staticarrayU16" (func $export:bindings/esm/staticarrayU16)) + (export "staticarrayI64" (func $export:bindings/esm/staticarrayU16)) + (export "arrayFunction" (func $export:bindings/esm/arrayFunction)) + (export "arrayOfStringsFunction" (func $export:bindings/esm/arrayOfStringsFunction)) + (export "objectFunction" (func $export:bindings/esm/objectFunction)) + (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) + (export "functionFunction" (func $export:bindings/esm/staticarrayU16)) + (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $bindings/esm/getMaxUnsigned32 (result i32) + i32.const -1 + ) + (func $bindings/esm/getMaxUnsigned64 (result i64) + i64.const -1 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1552 + call $~lib/rt/itcms/__visit + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1968 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 2096 + call $~lib/rt/itcms/__visit + i32.const 2160 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $bindings/esm/mutableStringGlobal + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 35044 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/toSpace + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 2208 + i32.load + i32.gt_u + if + i32.const 1552 + i32.const 1616 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + i32.const 2212 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 35056 + i32.const 0 + i32.store + i32.const 36624 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 35056 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 35056 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 35056 + i32.const 36628 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 35056 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 35044 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 35044 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 35044 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1696 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1360 + i32.const 1424 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$71 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1360 + i32.const 1696 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1696 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $bindings/esm/newInternref (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 2096 + i32.const 1424 + i32.const 338 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 + end + local.get $0 + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 2160 + i32.const 1424 + i32.const 352 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (func $~lib/rt/itcms/__collect + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $bindings/esm/NonPlainObject + block $bindings/esm/PlainObject + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/function/Function<%28%29=>void> + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/function/Function<%28%29=>void> $folding-inner1 $folding-inner1 $folding-inner1 $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array<~lib/string/String> $bindings/esm/PlainObject $folding-inner1 $bindings/esm/NonPlainObject $invalid + end + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner2 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner2 + end + local.get $0 + i32.load offset=56 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=60 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=64 + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + i32.const 1152 + i32.const 1 + f64.const 42 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1184 + call $~lib/bindings/dom/console.log + global.get $~lib/bindings/dom/Math.E + call $~lib/bindings/dom/Math.log + drop + call $bindings/esm/Date_getTimezoneOffset + drop + memory.size + i32.const 16 + i32.shl + i32.const 35044 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/pinSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/toSpace + i32.const 1652 + i32.const 1648 + i32.store + i32.const 1656 + i32.const 1648 + i32.store + i32.const 1648 + global.set $~lib/rt/itcms/fromSpace + ) + (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$285 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1760 + local.set $2 + br $__inlined_func$~lib/string/String#concat$285 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $3 + memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 1173 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/typedarray/Uint64Array#constructor (result i32) + local.get $1 + call $~lib/typedarray/Float32Array#get:length + local.get $5 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $5 + i32.const 134217727 + i32.gt_u + if + i32.const 1248 + i32.const 1296 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 3 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $2 + local.get $5 + i32.store + local.get $2 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + br $__inlined_func$~lib/typedarray/Uint64Array#constructor + end + br $folding-inner1 + end + local.tee $2 + i32.store offset=4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 452 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + local.get $5 + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Float32Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $5 + local.get $4 + i64.trunc_sat_f32_u + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1856 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1856 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1552 + i32.const 1920 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 1248 + i32.const 1920 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$270 + i32.const 1073741820 + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$270 + end + local.get $3 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $3 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1552 + i32.const 1920 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1552 + i32.const 1920 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1968 + i32.const 1920 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1552 + i32.const 1920 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $4 + local.get $2 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1248 + i32.const 1296 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + local.get $2 + memory.copy + local.get $2 + local.get $5 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/stringFunction + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:bindings/esm/stringFunctionOptional@varargs (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 1088 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $bindings/esm/stringFunction + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $bindings/esm/typedarrayFunction + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:bindings/esm/staticarrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$bindings/esm/staticarrayFunction$1 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $4 + i32.const 268435455 + i32.gt_u + if + i32.const 1248 + i32.const 1856 + i32.const 51 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $2 + local.get $0 + local.get $2 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + local.set $2 + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $4 + local.get $3 + local.get $1 + local.get $2 + call $~lib/staticarray/StaticArray#__get + call $~lib/staticarray/StaticArray#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + br $__inlined_func$bindings/esm/staticarrayFunction$1 + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $4 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1248 + i32.const 1920 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $6 + local.get $4 + i32.store + local.get $6 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $6 + local.get $2 + local.get $0 + local.get $2 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + local.set $2 + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/array/Array#get:length + local.get $2 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $6 + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__get + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $4 + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.store + local.get $5 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.store offset=12 + local.get $4 + i32.const 268435455 + i32.gt_u + if + i32.const 1248 + i32.const 1920 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $4 + local.get $4 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $6 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $5 + local.get $3 + i32.store + local.get $5 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $5 + local.get $2 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + local.set $2 + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/array/Array#get:length + local.get $2 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $5 + local.get $3 + local.get $4 + call $~lib/array/Array<~lib/string/String>#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$bindings/esm/PlainObject#constructor$4 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store16 offset=18 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i64.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 offset=40 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 0 + f32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 0 + f64.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=56 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=60 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=64 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + br $__inlined_func$bindings/esm/PlainObject#constructor$4 + end + br $folding-inner1 + end + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load8_s + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $3 + local.get $1 + i32.load8_s + i32.add + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load16_s offset=2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $1 + i32.load16_s offset=2 + i32.add + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/bindings/raw.ts b/tests/compiler/bindings/raw.ts new file mode 100644 index 0000000000..ab49b3b40a --- /dev/null +++ b/tests/compiler/bindings/raw.ts @@ -0,0 +1 @@ +export * from "./esm"; diff --git a/tests/compiler/bool-Oz.debug.wat b/tests/compiler/bool-Oz.debug.wat new file mode 100644 index 0000000000..87fb6ce2d2 --- /dev/null +++ b/tests/compiler/bool-Oz.debug.wat @@ -0,0 +1,6 @@ +(module + (memory $0 1) + (data $0 (i32.const 12) ",") + (data $0.1 (i32.const 24) "\02\00\00\00\14\00\00\00b\00o\00o\00l\00-\00O\00z\00.\00t\00s") + (export "memory" (memory $0)) +) diff --git a/tests/compiler/bool-Oz.json b/tests/compiler/bool-Oz.json new file mode 100644 index 0000000000..e8dc22c998 --- /dev/null +++ b/tests/compiler/bool-Oz.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "-Oz" + ] +} diff --git a/tests/compiler/bool-Oz.release.wat b/tests/compiler/bool-Oz.release.wat new file mode 100644 index 0000000000..87fb6ce2d2 --- /dev/null +++ b/tests/compiler/bool-Oz.release.wat @@ -0,0 +1,6 @@ +(module + (memory $0 1) + (data $0 (i32.const 12) ",") + (data $0.1 (i32.const 24) "\02\00\00\00\14\00\00\00b\00o\00o\00l\00-\00O\00z\00.\00t\00s") + (export "memory" (memory $0)) +) diff --git a/tests/compiler/bool-Oz.ts b/tests/compiler/bool-Oz.ts new file mode 100644 index 0000000000..5b54f755c0 --- /dev/null +++ b/tests/compiler/bool-Oz.ts @@ -0,0 +1,61 @@ +var f = 2; +assert(f == true); +var f0 = +0.0; +assert(f0 == false); +var f1 = -0.0; +assert(f1 == false); +var f2 = +NaN; +assert(f2 == false); +var f3 = -NaN; +assert(f3 == false); +var f4 = +f32.MAX_VALUE; +assert(f4 == true); +var f5 = -f32.MAX_VALUE; +assert(f5 == true); +var f6 = +Infinity; +assert(f6 == true); +var f7 = -Infinity; +assert(f7 == true); +var f8 = +f32.MIN_VALUE; +assert(f8 == true); +var f9 = -f32.MIN_VALUE; +assert(f9 == true); +var f10 = reinterpret(1); +assert(f10 == true); +var f11 = reinterpret(0x7F800000 - 1); +assert(f11 == true); +var f12 = reinterpret(0x7F800000 + 1); +assert(f12 == false); +var f13 = reinterpret(0xFF800000 + 1); +assert(f13 == false); + +var F = 2; +assert(F == true); +var F0 = +0.0; +assert(F0 == false); +var F1 = -0.0; +assert(F1 == false); +var F2 = +NaN; +assert(F2 == false); +var F3 = -NaN; +assert(F3 == false); +var F4 = +f64.MAX_VALUE; +assert(F4 == true); +var F5 = -f64.MAX_VALUE; +assert(F5 == true); +var F6 = +Infinity; +assert(F6 == true); +var F7 = -Infinity; +assert(F7 == true); +var F8 = +f64.MIN_VALUE; +assert(F8 == true); +var F9 = -f64.MIN_VALUE; +assert(F9 == true); +var F10 = reinterpret(1); +assert(F10 == true); +var F11 = reinterpret(0x7FF0000000000000 - 1); +assert(F11 == true); +var F12 = reinterpret(0x7FF0000000000000 + 1); +assert(F12 == false); +var F13 = reinterpret(0xFFF0000000000000 + 1); +assert(F13 == false); diff --git a/tests/compiler/bool.debug.wat b/tests/compiler/bool.debug.wat new file mode 100644 index 0000000000..35346823bc --- /dev/null +++ b/tests/compiler/bool.debug.wat @@ -0,0 +1,766 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $bool/i (mut i32) (i32.const 2)) + (global $bool/I (mut i64) (i64.const 2)) + (global $bool/u (mut i32) (i32.const 2)) + (global $bool/U (mut i64) (i64.const 2)) + (global $bool/f (mut f32) (f32.const 2)) + (global $bool/f0 (mut f32) (f32.const 0)) + (global $bool/f1 (mut f32) (f32.const -0)) + (global $bool/f2 (mut f32) (f32.const nan:0x400000)) + (global $bool/f3 (mut f32) (f32.const 0)) + (global $~lib/builtins/f32.MAX_VALUE f32 (f32.const 3402823466385288598117041e14)) + (global $bool/f4 (mut f32) (f32.const 0)) + (global $bool/f5 (mut f32) (f32.const 0)) + (global $bool/f6 (mut f32) (f32.const inf)) + (global $bool/f7 (mut f32) (f32.const 0)) + (global $~lib/builtins/f32.MIN_VALUE f32 (f32.const 1.401298464324817e-45)) + (global $bool/f8 (mut f32) (f32.const 0)) + (global $bool/f9 (mut f32) (f32.const 0)) + (global $bool/f10 (mut f32) (f32.const 0)) + (global $bool/f11 (mut f32) (f32.const 0)) + (global $bool/f12 (mut f32) (f32.const 0)) + (global $bool/f13 (mut f32) (f32.const 0)) + (global $bool/F (mut f64) (f64.const 2)) + (global $bool/F0 (mut f64) (f64.const 0)) + (global $bool/F1 (mut f64) (f64.const -0)) + (global $bool/F2 (mut f64) (f64.const nan:0x8000000000000)) + (global $bool/F3 (mut f64) (f64.const 0)) + (global $~lib/builtins/f64.MAX_VALUE f64 (f64.const 1797693134862315708145274e284)) + (global $bool/F4 (mut f64) (f64.const 0)) + (global $bool/F5 (mut f64) (f64.const 0)) + (global $bool/F6 (mut f64) (f64.const inf)) + (global $bool/F7 (mut f64) (f64.const 0)) + (global $~lib/builtins/f64.MIN_VALUE f64 (f64.const 5e-324)) + (global $bool/F8 (mut f64) (f64.const 0)) + (global $bool/F9 (mut f64) (f64.const 0)) + (global $bool/F10 (mut f64) (f64.const 0)) + (global $bool/F11 (mut f64) (f64.const 0)) + (global $bool/F12 (mut f64) (f64.const 0)) + (global $bool/F13 (mut f64) (f64.const 0)) + (global $bool/uu (mut i32) (i32.const 2)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:bool + global.get $bool/i + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/I + i64.const 0 + i64.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/u + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/U + i64.const 0 + i64.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/f + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/f0 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/f1 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/f2 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.neg + global.set $bool/f3 + global.get $bool/f3 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MAX_VALUE + global.set $bool/f4 + global.get $bool/f4 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MAX_VALUE + f32.neg + global.set $bool/f5 + global.get $bool/f5 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/f6 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + global.set $bool/f7 + global.get $bool/f7 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MIN_VALUE + global.set $bool/f8 + global.get $bool/f8 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MIN_VALUE + f32.neg + global.set $bool/f9 + global.get $bool/f9 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + f32.reinterpret_i32 + global.set $bool/f10 + global.get $bool/f10 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2139095040 + i32.const 1 + i32.sub + f32.reinterpret_i32 + global.set $bool/f11 + global.get $bool/f11 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2139095040 + i32.const 1 + i32.add + f32.reinterpret_i32 + global.set $bool/f12 + global.get $bool/f12 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -8388608 + i32.const 1 + i32.add + f32.reinterpret_i32 + global.set $bool/f13 + global.get $bool/f13 + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/F + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/F0 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/F1 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/F2 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.neg + global.set $bool/F3 + global.get $bool/F3 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_VALUE + global.set $bool/F4 + global.get $bool/F4 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 52 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_VALUE + f64.neg + global.set $bool/F5 + global.get $bool/F5 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/F6 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + global.set $bool/F7 + global.get $bool/F7 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 58 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MIN_VALUE + global.set $bool/F8 + global.get $bool/F8 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MIN_VALUE + f64.neg + global.set $bool/F9 + global.get $bool/F9 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + f64.reinterpret_i64 + global.set $bool/F10 + global.get $bool/F10 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9218868437227405312 + i64.const 1 + i64.sub + f64.reinterpret_i64 + global.set $bool/F11 + global.get $bool/F11 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9218868437227405312 + i64.const 1 + i64.add + f64.reinterpret_i64 + global.set $bool/F12 + global.get $bool/F12 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4503599627370496 + i64.const 1 + i64.add + f64.reinterpret_i64 + global.set $bool/F13 + global.get $bool/F13 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $bool/uu + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:bool + ) +) diff --git a/tests/compiler/bool.json b/tests/compiler/bool.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/bool.json +++ b/tests/compiler/bool.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/bool.optimized.wat b/tests/compiler/bool.optimized.wat deleted file mode 100644 index c0dc44736f..0000000000 --- a/tests/compiler/bool.optimized.wat +++ /dev/null @@ -1,5 +0,0 @@ -(module - (memory $0 1) - (data (i32.const 1024) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s") - (export "memory" (memory $0)) -) diff --git a/tests/compiler/bool.release.wat b/tests/compiler/bool.release.wat new file mode 100644 index 0000000000..b107d68536 --- /dev/null +++ b/tests/compiler/bool.release.wat @@ -0,0 +1,6 @@ +(module + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s") + (export "memory" (memory $0)) +) diff --git a/tests/compiler/bool.untouched.wat b/tests/compiler/bool.untouched.wat deleted file mode 100644 index 0e8c20c19e..0000000000 --- a/tests/compiler/bool.untouched.wat +++ /dev/null @@ -1,762 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s\00") - (table $0 1 funcref) - (global $bool/i (mut i32) (i32.const 2)) - (global $bool/I (mut i64) (i64.const 2)) - (global $bool/u (mut i32) (i32.const 2)) - (global $bool/U (mut i64) (i64.const 2)) - (global $bool/f (mut f32) (f32.const 2)) - (global $bool/f0 (mut f32) (f32.const 0)) - (global $bool/f1 (mut f32) (f32.const -0)) - (global $bool/f2 (mut f32) (f32.const nan:0x400000)) - (global $bool/f3 (mut f32) (f32.const 0)) - (global $~lib/builtins/f32.MAX_VALUE f32 (f32.const 3402823466385288598117041e14)) - (global $bool/f4 (mut f32) (f32.const 0)) - (global $bool/f5 (mut f32) (f32.const 0)) - (global $bool/f6 (mut f32) (f32.const inf)) - (global $bool/f7 (mut f32) (f32.const 0)) - (global $~lib/builtins/f32.MIN_VALUE f32 (f32.const 1.401298464324817e-45)) - (global $bool/f8 (mut f32) (f32.const 0)) - (global $bool/f9 (mut f32) (f32.const 0)) - (global $bool/f10 (mut f32) (f32.const 0)) - (global $bool/f11 (mut f32) (f32.const 0)) - (global $bool/f12 (mut f32) (f32.const 0)) - (global $bool/f13 (mut f32) (f32.const 0)) - (global $bool/F (mut f64) (f64.const 2)) - (global $bool/F0 (mut f64) (f64.const 0)) - (global $bool/F1 (mut f64) (f64.const -0)) - (global $bool/F2 (mut f64) (f64.const nan:0x8000000000000)) - (global $bool/F3 (mut f64) (f64.const 0)) - (global $~lib/builtins/f64.MAX_VALUE f64 (f64.const 1797693134862315708145274e284)) - (global $bool/F4 (mut f64) (f64.const 0)) - (global $bool/F5 (mut f64) (f64.const 0)) - (global $bool/F6 (mut f64) (f64.const inf)) - (global $bool/F7 (mut f64) (f64.const 0)) - (global $~lib/builtins/f64.MIN_VALUE f64 (f64.const 5e-324)) - (global $bool/F8 (mut f64) (f64.const 0)) - (global $bool/F9 (mut f64) (f64.const 0)) - (global $bool/F10 (mut f64) (f64.const 0)) - (global $bool/F11 (mut f64) (f64.const 0)) - (global $bool/F12 (mut f64) (f64.const 0)) - (global $bool/F13 (mut f64) (f64.const 0)) - (global $bool/uu (mut i32) (i32.const 2)) - (export "memory" (memory $0)) - (start $~start) - (func $start:bool - global.get $bool/i - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/I - i64.const 0 - i64.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/u - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/U - i64.const 0 - i64.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/f - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/f0 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/f1 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/f2 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.neg - global.set $bool/f3 - global.get $bool/f3 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f32.MAX_VALUE - global.set $bool/f4 - global.get $bool/f4 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f32.MAX_VALUE - f32.neg - global.set $bool/f5 - global.get $bool/f5 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/f6 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - global.set $bool/f7 - global.get $bool/f7 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f32.MIN_VALUE - global.set $bool/f8 - global.get $bool/f8 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f32.MIN_VALUE - f32.neg - global.set $bool/f9 - global.get $bool/f9 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - f32.reinterpret_i32 - global.set $bool/f10 - global.get $bool/f10 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2139095040 - i32.const 1 - i32.sub - f32.reinterpret_i32 - global.set $bool/f11 - global.get $bool/f11 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2139095040 - i32.const 1 - i32.add - f32.reinterpret_i32 - global.set $bool/f12 - global.get $bool/f12 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -8388608 - i32.const 1 - i32.add - f32.reinterpret_i32 - global.set $bool/f13 - global.get $bool/f13 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/F - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/F0 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/F1 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/F2 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.neg - global.set $bool/F3 - global.get $bool/F3 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MAX_VALUE - global.set $bool/F4 - global.get $bool/F4 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MAX_VALUE - f64.neg - global.set $bool/F5 - global.get $bool/F5 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 54 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/F6 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - global.set $bool/F7 - global.get $bool/F7 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MIN_VALUE - global.set $bool/F8 - global.get $bool/F8 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 60 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MIN_VALUE - f64.neg - global.set $bool/F9 - global.get $bool/F9 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - f64.reinterpret_i64 - global.set $bool/F10 - global.get $bool/F10 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9218868437227405312 - i64.const 1 - i64.sub - f64.reinterpret_i64 - global.set $bool/F11 - global.get $bool/F11 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9218868437227405312 - i64.const 1 - i64.add - f64.reinterpret_i64 - global.set $bool/F12 - global.get $bool/F12 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 68 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4503599627370496 - i64.const 1 - i64.add - f64.reinterpret_i64 - global.set $bool/F13 - global.get $bool/F13 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $bool/uu - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:bool - ) -) diff --git a/tests/compiler/builtins.debug.wat b/tests/compiler/builtins.debug.wat new file mode 100644 index 0000000000..fd74409ab4 --- /dev/null +++ b/tests/compiler/builtins.debug.wat @@ -0,0 +1,3691 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (global $builtins/b (mut i32) (i32.const 0)) + (global $builtins/i (mut i32) (i32.const 0)) + (global $builtins/l (mut i32) (i32.const 0)) + (global $builtins/v (mut i32) (i32.const 0)) + (global $builtins/I (mut i64) (i64.const 0)) + (global $builtins/f (mut f32) (f32.const 0)) + (global $~lib/builtins/f32.NaN f32 (f32.const nan:0x400000)) + (global $builtins/F (mut f64) (f64.const 0)) + (global $~lib/builtins/f64.NaN f64 (f64.const nan:0x8000000000000)) + (global $builtins/constantOffset i32 (i32.const 8)) + (global $builtins/u (mut i32) (i32.const 0)) + (global $builtins/U (mut i64) (i64.const 0)) + (global $builtins/s (mut i32) (i32.const 0)) + (global $builtins/fn (mut i32) (i32.const 144)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) + (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) + (global $~lib/builtins/i16.MIN_VALUE i32 (i32.const -32768)) + (global $~lib/builtins/i16.MAX_VALUE i32 (i32.const 32767)) + (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) + (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) + (global $~lib/builtins/u8.MIN_VALUE i32 (i32.const 0)) + (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) + (global $~lib/builtins/u16.MIN_VALUE i32 (i32.const 0)) + (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) + (global $~lib/builtins/u32.MIN_VALUE i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/builtins/u64.MIN_VALUE i64 (i64.const 0)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/builtins/bool.MIN_VALUE i32 (i32.const 0)) + (global $~lib/builtins/bool.MAX_VALUE i32 (i32.const 1)) + (global $~lib/builtins/f32.MIN_NORMAL_VALUE f32 (f32.const 1.1754943508222875e-38)) + (global $~lib/builtins/f32.MIN_VALUE f32 (f32.const 1.401298464324817e-45)) + (global $~lib/builtins/f32.MAX_VALUE f32 (f32.const 3402823466385288598117041e14)) + (global $~lib/builtins/f32.MIN_SAFE_INTEGER f32 (f32.const -16777215)) + (global $~lib/builtins/f32.MAX_SAFE_INTEGER f32 (f32.const 16777215)) + (global $~lib/builtins/f32.EPSILON f32 (f32.const 1.1920928955078125e-07)) + (global $~lib/builtins/f64.MIN_NORMAL_VALUE f64 (f64.const 2.2250738585072014e-308)) + (global $~lib/builtins/f64.MIN_VALUE f64 (f64.const 5e-324)) + (global $~lib/builtins/f64.MAX_VALUE f64 (f64.const 1797693134862315708145274e284)) + (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) + (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) + (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) + (global $~lib/memory/__data_end i32 (i32.const 1004)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33772)) + (global $~lib/memory/__heap_base i32 (i32.const 33772)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00c\00\00\00\00\00\00\00") + (data $2 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00") + (data $3 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 156) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}\00\00\00\00\00") + (data $5 (i32.const 236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 284) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00") + (data $10 (i32.const 444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00b\00o\00o\00l\00\00\00\00\00") + (data $11 (i32.const 476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00i\008\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00u\008\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\001\006\00\00\00\00\00\00\00") + (data $14 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00u\001\006\00\00\00\00\00\00\00") + (data $15 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\003\002\00\00\00\00\00\00\00") + (data $16 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00u\003\002\00\00\00\00\00\00\00") + (data $17 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\003\002\00\00\00\00\00\00\00") + (data $18 (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\006\004\00\00\00\00\00\00\00") + (data $19 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00u\006\004\00\00\00\00\00\00\00") + (data $20 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\006\004\00\00\00\00\00\00\00") + (data $21 (i32.const 796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00i\00s\00i\00z\00e\00\00\00") + (data $22 (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00u\00s\00i\00z\00e\00\00\00") + (data $23 (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00v\00o\00i\00d\00\00\00\00\00") + (data $24 (i32.const 892) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 940) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\r\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (table $0 4 4 funcref) + (elem $0 (i32.const 1) $start:builtins~anonymous|0 $start:builtins~anonymous|1 $start:builtins~anonymous|2) + (export "test" (func $builtins/test)) + (export "memory" (memory $0)) + (start $~start) + (func $start:builtins~anonymous|0 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:index (param $this i32) (result i32) + local.get $this + i32.load + return + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:name (param $this i32) (result i32) + i32.const 32 + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:length (param $this i32) (result i32) + i32.const 2 + return + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#toString (param $this i32) (result i32) + i32.const 176 + return + ) + (func $~lib/atomics/Atomics.isLockFree (param $size i32) (result i32) + local.get $size + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + else + local.get $size + i32.const 2 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $size + i32.const 4 + i32.eq + end + return + ) + (func $start:builtins~anonymous|1 + ) + (func $start:builtins~anonymous|2 (param $a i32) (param $b i32) (param $c i32) (param $d i32) + ) + (func $builtins/max3 (param $a i32) (param $b i32) (param $c i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $a + local.tee $5 + local.get $b + local.tee $3 + local.get $c + local.tee $4 + local.get $3 + local.get $4 + i32.gt_s + select + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + return + ) + (func $builtins/min3 (param $a i32) (param $b i32) (param $c i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $a + local.tee $5 + local.get $b + local.tee $3 + local.get $c + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.tee $6 + local.get $5 + local.get $6 + i32.lt_s + select + return + ) + (func $builtins/rotl3 (param $a i32) (param $b i32) (param $c i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $a + i32.extend8_s + local.tee $5 + local.get $b + i32.extend8_s + local.tee $3 + local.get $c + local.tee $4 + i32.const 7 + i32.and + i32.shl + local.get $3 + i32.const 0 + local.get $4 + i32.sub + i32.const 7 + i32.and + i32.shr_u + i32.or + local.tee $6 + i32.const 7 + i32.and + i32.shl + local.get $5 + i32.const 0 + local.get $6 + i32.sub + i32.const 7 + i32.and + i32.shr_u + i32.or + i32.extend8_s + return + ) + (func $builtins/rotr3 (param $a i32) (param $b i32) (param $c i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $a + i32.extend8_s + local.tee $5 + local.get $b + i32.extend8_s + local.tee $3 + local.get $c + local.tee $4 + i32.const 7 + i32.and + i32.shr_u + local.get $3 + i32.const 0 + local.get $4 + i32.sub + i32.const 7 + i32.and + i32.shl + i32.or + local.tee $6 + i32.const 7 + i32.and + i32.shr_u + local.get $5 + i32.const 0 + local.get $6 + i32.sub + i32.const 7 + i32.and + i32.shl + i32.or + i32.extend8_s + return + ) + (func $builtins/test + ) + (func $~start + call $start:builtins + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33792 + i32.const 33840 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:builtins + (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) + (local $14 i32) + (local $15 i32) + (local $16 i64) + (local $17 i64) + (local $18 i64) + (local $19 i64) + (local $20 i64) + (local $21 i64) + (local $22 i64) + (local $23 i64) + (local $24 f32) + (local $25 f32) + (local $26 f32) + (local $27 f32) + (local $28 f32) + (local $29 f32) + (local $30 f32) + (local $31 f32) + (local $32 f64) + (local $33 f64) + (local $34 f64) + (local $35 f64) + (local $36 f64) + (local $37 f64) + (local $38 f64) + (local $39 f64) + (local $40 f32) + (local $41 f64) + (local $42 f32) + (local $43 f32) + (local $44 f64) + (local $45 f64) + (local $46 f32) + (local $47 f64) + (local $48 i32) + (local $49 i32) + (local $50 i32) + (local $51 i32) + (local $52 i32) + (local $53 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + i32.const 2 + i32.add + i32.extend8_s + global.set $builtins/l + global.get $builtins/l + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 53 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 1 + i32.sub + i32.extend8_s + global.set $builtins/l + global.get $builtins/l + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 54 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.mul + global.set $builtins/l + global.get $builtins/l + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 55 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i32.const 6 + i32.const 2 + i32.div_s + i32.extend8_s + global.set $builtins/l + global.get $builtins/l + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + global.set $builtins/i + global.get $builtins/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 57 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.eq + global.set $builtins/i + global.get $builtins/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 58 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.ne + global.set $builtins/i + global.get $builtins/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 59 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.ne + global.set $builtins/i + global.get $builtins/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 60 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + i32.const 143 + local.tee $0 + i32.const 3 + local.tee $1 + i32.const 7 + i32.and + i32.shl + local.get $0 + i32.const 0 + local.get $1 + i32.sub + i32.const 7 + i32.and + i32.shr_u + i32.or + i32.const 255 + i32.and + global.set $builtins/v + global.get $builtins/v + i32.const 124 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 63 + i32.const 34 + call $~lib/builtins/abort + unreachable + end + i32.const 170 + local.tee $2 + i32.const 1 + local.tee $3 + i32.const 7 + i32.and + i32.shr_u + local.get $2 + i32.const 0 + local.get $3 + i32.sub + i32.const 7 + i32.and + i32.shl + i32.or + i32.const 255 + i32.and + global.set $builtins/v + global.get $builtins/v + i32.const 85 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 64 + i32.const 34 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.clz + drop + i32.const 1 + i32.ctz + drop + i32.const 1 + i32.popcnt + drop + i32.const 1 + i32.const 1 + i32.rotl + drop + i32.const 1 + i32.const 1 + i32.rotr + drop + i32.const -42 + local.tee $4 + i32.const 31 + i32.shr_s + local.tee $5 + local.get $4 + i32.add + local.get $5 + i32.xor + drop + i32.const 1 + local.tee $6 + i32.const 2 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + drop + i32.const 1 + local.tee $8 + i32.const 2 + local.tee $9 + local.get $8 + local.get $9 + i32.lt_s + select + drop + i32.const 1 + i32.const 2 + i32.add + drop + i32.const 2 + i32.const 1 + i32.sub + drop + i32.const 1 + i32.const 2 + i32.mul + drop + i32.const 6 + i32.const 2 + i32.div_s + drop + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 1 + i32.const 0 + i32.ne + drop + i32.const 1 + i32.clz + drop + i32.const 1 + i32.ctz + drop + i32.const 1 + i32.popcnt + drop + i32.const 1 + i32.const 1 + i32.rotl + drop + i32.const 1 + i32.const 1 + i32.rotr + drop + i32.const 1 + i32.const 2 + i32.add + drop + i32.const 2 + i32.const 1 + i32.sub + drop + i32.const 1 + i32.const 2 + i32.mul + drop + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 1 + i32.const 0 + i32.ne + drop + i32.const 1 + i32.clz + global.set $builtins/i + i32.const 1 + i32.ctz + global.set $builtins/i + i32.const 1 + i32.popcnt + global.set $builtins/i + i32.const 1 + i32.const 1 + i32.rotl + global.set $builtins/i + i32.const 1 + i32.const 1 + i32.rotr + global.set $builtins/i + i32.const -42 + local.tee $10 + i32.const 31 + i32.shr_s + local.tee $11 + local.get $10 + i32.add + local.get $11 + i32.xor + global.set $builtins/i + global.get $builtins/i + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 98 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + local.tee $12 + i32.const 2 + local.tee $13 + local.get $12 + local.get $13 + i32.gt_s + select + global.set $builtins/i + global.get $builtins/i + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 99 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + local.tee $14 + i32.const 2 + local.tee $15 + local.get $14 + local.get $15 + i32.lt_s + select + global.set $builtins/i + global.get $builtins/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 100 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.add + global.set $builtins/i + global.get $builtins/i + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 101 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 1 + i32.sub + global.set $builtins/i + global.get $builtins/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 102 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 3 + i32.mul + global.set $builtins/i + global.get $builtins/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 103 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i32.const 6 + i32.const 2 + i32.div_s + global.set $builtins/i + global.get $builtins/i + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 104 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + global.set $builtins/i + global.get $builtins/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 105 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.eq + global.set $builtins/i + global.get $builtins/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 106 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.ne + global.set $builtins/i + global.get $builtins/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 107 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.ne + global.set $builtins/i + global.get $builtins/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 108 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 3 + i32.rem_s + global.set $builtins/i + global.get $builtins/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 109 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i32.const 15 + i32.const 4 + i32.rem_s + global.set $builtins/i + global.get $builtins/i + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 110 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.clz + drop + i64.const 1 + i64.ctz + drop + i64.const 1 + i64.popcnt + drop + i64.const 1 + i64.const 1 + i64.rotl + drop + i64.const 1 + i64.const 1 + i64.rotr + drop + i64.const -42 + local.tee $16 + i64.const 63 + i64.shr_s + local.tee $17 + local.get $16 + i64.add + local.get $17 + i64.xor + drop + i64.const 1 + i64.const 0 + i64.eq + drop + i64.const 1 + i64.const 0 + i64.ne + drop + i64.const 1 + i64.clz + drop + i64.const 1 + i64.ctz + drop + i64.const 1 + i64.popcnt + drop + i64.const 1 + i64.const 1 + i64.rotl + drop + i64.const 1 + i64.const 1 + i64.rotr + drop + i64.const 1 + i64.const 0 + i64.eq + drop + i64.const 1 + i64.const 0 + i64.ne + drop + i64.const 1 + i64.clz + global.set $builtins/I + i64.const 1 + i64.ctz + global.set $builtins/I + i64.const 1 + i64.popcnt + global.set $builtins/I + i64.const 1 + i64.const 1 + i64.rotl + global.set $builtins/I + i64.const 1 + i64.const 1 + i64.rotr + global.set $builtins/I + i64.const -42 + local.tee $18 + i64.const 63 + i64.shr_s + local.tee $19 + local.get $18 + i64.add + local.get $19 + i64.xor + global.set $builtins/I + global.get $builtins/I + i64.const 42 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 136 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + local.tee $20 + i64.const 2 + local.tee $21 + local.get $20 + local.get $21 + i64.gt_s + select + global.set $builtins/I + global.get $builtins/I + i64.const 2 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 137 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + local.tee $22 + i64.const 2 + local.tee $23 + local.get $22 + local.get $23 + i64.lt_s + select + global.set $builtins/I + global.get $builtins/I + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 138 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 2 + i64.add + global.set $builtins/I + global.get $builtins/I + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 139 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 1 + i64.sub + global.set $builtins/I + global.get $builtins/I + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 140 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 3 + i64.mul + global.set $builtins/I + global.get $builtins/I + i64.const 6 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 141 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i64.const 6 + i64.const 2 + i64.div_s + global.set $builtins/I + global.get $builtins/I + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 142 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 1 + i64.eq + global.set $builtins/i + global.get $builtins/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 143 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 0 + i64.eq + global.set $builtins/i + global.get $builtins/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 144 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 1 + i64.ne + global.set $builtins/i + global.get $builtins/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 145 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 0 + i64.ne + global.set $builtins/i + global.get $builtins/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 146 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 3 + i64.rem_s + global.set $builtins/I + global.get $builtins/I + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 147 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + i64.const 15 + i64.const 4 + i64.rem_s + global.set $builtins/I + global.get $builtins/I + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + drop + f32.const inf + drop + f32.const 1.25 + f32.abs + drop + f32.const 1.25 + f32.ceil + drop + f32.const 1.25 + f32.const 2.5 + f32.copysign + drop + f32.const 1.25 + f32.floor + drop + f32.const 1.5 + f32.const 2.5 + f32.add + drop + f32.const 2.5 + f32.const 1.5 + f32.sub + drop + f32.const 1.5 + f32.const 2 + f32.mul + drop + f32.const 1.5 + f32.const 0.5 + f32.div + drop + f32.const 1.25 + f32.const 2.5 + f32.max + drop + f32.const 1.25 + f32.const 2.5 + f32.min + drop + f32.const 1.25 + f32.nearest + drop + f32.const 1.25 + f32.sqrt + drop + f32.const 1.25 + f32.trunc + drop + f32.const 1.5 + f32.const 2.5 + f32.eq + drop + f32.const 1.5 + f32.const 2.5 + f32.ne + drop + f32.const 1.25 + local.tee $24 + local.get $24 + f32.ne + i32.const 0 + i32.eq + drop + f32.const nan:0x400000 + local.tee $25 + local.get $25 + f32.ne + i32.const 1 + i32.eq + drop + f32.const 1.25 + local.tee $26 + local.get $26 + f32.sub + f32.const 0 + f32.eq + i32.const 1 + i32.eq + drop + f32.const inf + local.tee $27 + local.get $27 + f32.sub + f32.const 0 + f32.eq + i32.const 0 + i32.eq + drop + f32.const inf + f32.neg + local.tee $28 + local.get $28 + f32.sub + f32.const 0 + f32.eq + i32.const 0 + i32.eq + drop + f32.const nan:0x400000 + local.tee $29 + local.get $29 + f32.sub + f32.const 0 + f32.eq + i32.const 0 + i32.eq + drop + global.get $~lib/builtins/f32.NaN + drop + f32.const 1.25 + f32.abs + drop + f32.const 1.25 + f32.ceil + drop + f32.const 1.25 + f32.const 2.5 + f32.copysign + drop + f32.const 1.25 + f32.floor + drop + f32.const 1.5 + f32.const 2.5 + f32.add + drop + f32.const 2.5 + f32.const 1.5 + f32.sub + drop + f32.const 1.5 + f32.const 2 + f32.mul + drop + f32.const 1.5 + f32.const 0.5 + f32.div + drop + f32.const 1.25 + f32.const 2.5 + f32.max + drop + f32.const 1.25 + f32.const 2.5 + f32.min + drop + f32.const 1.25 + f32.nearest + drop + f32.const 1.25 + f32.sqrt + drop + f32.const 1.25 + f32.trunc + drop + f32.const 1.5 + f32.const 2.5 + f32.eq + drop + f32.const 1.5 + f32.const 2.5 + f32.ne + drop + f32.const nan:0x400000 + global.set $builtins/f + f32.const inf + global.set $builtins/f + f32.const 1.25 + f32.abs + global.set $builtins/f + f32.const 1.25 + f32.ceil + global.set $builtins/f + f32.const 1.25 + f32.const 2.5 + f32.copysign + global.set $builtins/f + f32.const 1.25 + f32.floor + global.set $builtins/f + f32.const 1.5 + f32.const 2.5 + f32.add + global.set $builtins/f + global.get $builtins/f + f32.const 4 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 200 + i32.const 25 + call $~lib/builtins/abort + unreachable + end + f32.const 2.5 + f32.const 1.5 + f32.sub + global.set $builtins/f + global.get $builtins/f + f32.const 1 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 201 + i32.const 25 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const 2 + f32.mul + global.set $builtins/f + global.get $builtins/f + f32.const 3 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 202 + i32.const 25 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const 0.5 + f32.div + global.set $builtins/f + global.get $builtins/f + f32.const 3 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 203 + i32.const 25 + call $~lib/builtins/abort + unreachable + end + f32.const 1.25 + f32.const 2.5 + f32.max + global.set $builtins/f + global.get $builtins/f + f32.const 2.5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 204 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + f32.const 1.25 + f32.const 2.5 + f32.min + global.set $builtins/f + f32.const 1.25 + f32.nearest + global.set $builtins/f + f32.const 1.25 + f32.sqrt + global.set $builtins/f + f32.const 1.25 + f32.trunc + global.set $builtins/f + f32.const 1.5 + f32.const 1.5 + f32.eq + global.set $builtins/i + global.get $builtins/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 209 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const 2.5 + f32.eq + global.set $builtins/i + global.get $builtins/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 210 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const 1.5 + f32.ne + global.set $builtins/i + global.get $builtins/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 211 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const 2.5 + f32.ne + global.set $builtins/i + global.get $builtins/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 212 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + f32.const 1.25 + local.tee $30 + local.get $30 + f32.ne + global.set $builtins/b + f32.const 1.25 + local.tee $31 + local.get $31 + f32.sub + f32.const 0 + f32.eq + global.set $builtins/b + f64.const nan:0x8000000000000 + drop + f64.const inf + drop + f64.const nan:0x8000000000000 + drop + f64.const inf + drop + f64.const 1.25 + f64.abs + drop + f64.const 1.25 + f64.ceil + drop + f64.const 1.25 + f64.const 2.5 + f64.copysign + drop + f64.const 1.25 + f64.floor + drop + f64.const 1.5 + f64.const 2.5 + f64.add + drop + f64.const 2.5 + f64.const 1.5 + f64.sub + drop + f64.const 1.5 + f64.const 2 + f64.mul + drop + f64.const 1.5 + f64.const 0.5 + f64.div + drop + f64.const 1.25 + f64.const 2.5 + f64.max + drop + f64.const 1.25 + f64.const 2.5 + f64.min + drop + f64.const 1.25 + f64.nearest + drop + f64.const 1.25 + f64.sqrt + drop + f64.const 1.25 + f64.trunc + drop + f64.const 1.5 + f64.const 1.5 + f64.eq + drop + f64.const 1.5 + f64.const 2.5 + f64.eq + drop + f64.const 1.5 + f64.const 1.5 + f64.ne + drop + f64.const 1.5 + f64.const 2.5 + f64.ne + drop + f64.const 1.25 + local.tee $32 + local.get $32 + f64.ne + i32.const 0 + i32.eq + drop + f64.const nan:0x8000000000000 + local.tee $33 + local.get $33 + f64.ne + i32.const 1 + i32.eq + drop + f64.const 1.25 + local.tee $34 + local.get $34 + f64.sub + f64.const 0 + f64.eq + i32.const 1 + i32.eq + drop + f64.const inf + local.tee $35 + local.get $35 + f64.sub + f64.const 0 + f64.eq + i32.const 0 + i32.eq + drop + f64.const inf + f64.neg + local.tee $36 + local.get $36 + f64.sub + f64.const 0 + f64.eq + i32.const 0 + i32.eq + drop + f64.const nan:0x8000000000000 + local.tee $37 + local.get $37 + f64.sub + f64.const 0 + f64.eq + i32.const 0 + i32.eq + drop + global.get $~lib/builtins/f64.NaN + drop + f64.const 1.25 + f64.abs + drop + f64.const 1.25 + f64.ceil + drop + f64.const 1.25 + f64.const 2.5 + f64.copysign + drop + f64.const 1.25 + f64.floor + drop + f64.const 1.5 + f64.const 2.5 + f64.add + drop + f64.const 2.5 + f64.const 1.5 + f64.sub + drop + f64.const 1.5 + f64.const 2 + f64.mul + drop + f64.const 1.5 + f64.const 0.5 + f64.div + drop + f64.const 1.25 + f64.const 2.5 + f64.max + drop + f64.const 1.25 + f64.const 2.5 + f64.min + drop + f64.const 1.25 + f64.nearest + drop + f64.const 1.25 + f64.sqrt + drop + f64.const 1.25 + f64.trunc + drop + f64.const 1.5 + f64.const 2.5 + f64.eq + drop + f64.const 1.5 + f64.const 2.5 + f64.ne + drop + f64.const nan:0x8000000000000 + global.set $builtins/F + f64.const inf + global.set $builtins/F + f64.const 1.25 + f64.abs + global.set $builtins/F + f64.const 1.25 + f64.ceil + global.set $builtins/F + f64.const 1.25 + f64.const 2.5 + f64.copysign + global.set $builtins/F + f64.const 1.25 + f64.floor + global.set $builtins/F + f64.const 1.5 + f64.const 2.5 + f64.add + global.set $builtins/F + global.get $builtins/F + f64.const 4 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 268 + i32.const 25 + call $~lib/builtins/abort + unreachable + end + f64.const 2.5 + f64.const 1.5 + f64.sub + global.set $builtins/F + global.get $builtins/F + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 269 + i32.const 25 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 2 + f64.mul + global.set $builtins/F + global.get $builtins/F + f64.const 3 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 270 + i32.const 25 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 0.5 + f64.div + global.set $builtins/F + global.get $builtins/F + f64.const 3 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 271 + i32.const 25 + call $~lib/builtins/abort + unreachable + end + f64.const 1.25 + f64.const 2.5 + f64.max + global.set $builtins/F + f64.const 1.25 + f64.const 2.5 + f64.min + global.set $builtins/F + f64.const 1.25 + f64.nearest + global.set $builtins/F + f64.const 1.25 + f64.sqrt + global.set $builtins/F + f64.const 1.25 + f64.trunc + global.set $builtins/F + f64.const 1.5 + f64.const 1.5 + f64.eq + global.set $builtins/i + global.get $builtins/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 277 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 2.5 + f64.eq + global.set $builtins/i + global.get $builtins/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 278 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 1.5 + f64.ne + global.set $builtins/i + global.get $builtins/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 279 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 2.5 + f64.ne + global.set $builtins/i + global.get $builtins/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 280 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + f64.const 1.25 + local.tee $38 + local.get $38 + f64.ne + global.set $builtins/b + f64.const 1.25 + local.tee $39 + local.get $39 + f64.sub + f64.const 0 + f64.eq + global.set $builtins/b + f64.const 0 + f64.const 1 + f64.min + global.set $builtins/F + f32.const 0 + global.get $builtins/f + f32.max + global.set $builtins/f + f64.const 0 + f64.const 1.5 + f64.add + global.set $builtins/F + f32.const 0 + global.get $builtins/f + f32.add + global.set $builtins/f + f64.const 2 + f64.const 1 + f64.sub + global.set $builtins/F + f32.const 2 + global.get $builtins/f + f32.sub + global.set $builtins/f + f64.const 2 + f64.const 1 + f64.mul + global.set $builtins/F + f32.const 2 + global.get $builtins/f + f32.mul + global.set $builtins/f + f64.const 2 + f64.const 1 + f64.div + global.set $builtins/F + f32.const 2 + global.get $builtins/f + f32.div + global.set $builtins/f + i32.const 8 + i32.load + global.set $builtins/i + i32.const 8 + global.get $builtins/i + i32.store + i32.const 8 + i32.const 8 + i32.load + i32.store + i32.const 8 + i64.load + global.set $builtins/I + i32.const 8 + global.get $builtins/I + i64.store + i32.const 8 + i32.const 8 + i64.load + i64.store + i32.const 8 + f32.load + global.set $builtins/f + i32.const 8 + global.get $builtins/f + f32.store + i32.const 8 + i32.const 8 + f32.load + f32.store + i32.const 8 + f64.load + global.set $builtins/F + i32.const 8 + global.get $builtins/F + f64.store + i32.const 8 + i32.const 8 + f64.load + f64.store + i32.const 0 + i32.load offset=8 + global.set $builtins/i + i32.const 0 + global.get $builtins/i + i32.store offset=8 + i32.const 0 + i32.const 0 + i32.load offset=8 + i32.store offset=8 + i32.const 0 + i64.load offset=8 + global.set $builtins/I + i32.const 0 + global.get $builtins/I + i64.store offset=8 + i32.const 0 + i32.const 0 + i64.load offset=8 + i64.store offset=8 + i32.const 0 + f32.load offset=8 + global.set $builtins/f + i32.const 0 + global.get $builtins/f + f32.store offset=8 + i32.const 0 + i32.const 0 + f32.load offset=8 + f32.store offset=8 + i32.const 0 + f64.load offset=8 + global.set $builtins/F + i32.const 0 + global.get $builtins/F + f64.store offset=8 + i32.const 0 + i32.const 0 + f64.load offset=8 + f64.store offset=8 + i32.const 8 + i32.load8_s + global.set $builtins/i + i32.const 8 + i32.load16_s + global.set $builtins/i + i32.const 8 + i32.load + global.set $builtins/i + i32.const 8 + i32.load8_u + global.set $builtins/i + i32.const 8 + i32.load16_u + global.set $builtins/i + i32.const 8 + i32.load + global.set $builtins/i + i32.const 8 + i32.load8_u + global.set $builtins/u + i32.const 8 + i32.load16_u + global.set $builtins/u + i32.const 8 + i32.load + global.set $builtins/u + i32.const 8 + i32.load8_s + global.set $builtins/u + i32.const 8 + i32.load16_s + global.set $builtins/u + i32.const 8 + i32.load + global.set $builtins/u + i32.const 8 + i64.load8_s + global.set $builtins/I + i32.const 8 + i64.load16_s + global.set $builtins/I + i32.const 8 + i64.load32_s + global.set $builtins/I + i32.const 8 + i64.load + global.set $builtins/I + i32.const 15 + i32.const 4 + i32.rem_u + global.set $builtins/u + global.get $builtins/u + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 342 + i32.const 23 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i64.load8_u + global.set $builtins/U + i32.const 8 + i64.load16_u + global.set $builtins/U + i32.const 8 + i64.load32_u + global.set $builtins/U + i32.const 8 + i64.load + global.set $builtins/U + i32.const 8 + i32.const 1 + i32.store8 + i32.const 8 + i32.const 1 + i32.store16 + i32.const 8 + i32.const 1 + i32.store + i32.const 8 + i64.const 1 + i64.store8 + i32.const 8 + i64.const 1 + i64.store16 + i32.const 8 + i64.const 1 + i64.store32 + i32.const 8 + i64.const 1 + i64.store + i32.const 8 + i32.const 1 + i64.extend_i32_s + i64.store + i64.const 15 + i64.const 4 + i64.rem_u + global.set $builtins/U + global.get $builtins/U + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 361 + i32.const 23 + call $~lib/builtins/abort + unreachable + end + f32.const 1.25 + i32.reinterpret_f32 + drop + i32.const 25 + f32.reinterpret_i32 + drop + f64.const 1.25 + i64.reinterpret_f64 + drop + i64.const 25 + f64.reinterpret_i64 + drop + f32.const 1.25 + i32.reinterpret_f32 + global.set $builtins/i + i32.const 25 + f32.reinterpret_i32 + global.set $builtins/f + f64.const 1.25 + i64.reinterpret_f64 + global.set $builtins/I + i64.const 25 + f64.reinterpret_i64 + global.set $builtins/F + memory.size + drop + i32.const 1 + memory.grow + drop + memory.size + global.set $builtins/s + i32.const 1 + memory.grow + global.set $builtins/s + i32.const 10 + i32.const 20 + i32.const 1 + select + drop + i64.const 100 + i64.const 200 + i32.const 0 + select + drop + f32.const 1.25 + f32.const 2.5 + i32.const 1 + select + drop + f64.const 12.5 + f64.const 25 + i32.const 0 + select + drop + i32.const 10 + i32.const 20 + i32.const 1 + select + global.set $builtins/i + i64.const 100 + i64.const 200 + i32.const 0 + select + global.set $builtins/I + f32.const 1.25 + f32.const 2.5 + i32.const 1 + select + global.set $builtins/f + f64.const 12.5 + f64.const 25 + i32.const 0 + select + global.set $builtins/F + global.get $builtins/i + i32.eqz + if + unreachable + end + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + global.get $builtins/fn + i32.load + call_indirect (type $2) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 400 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + global.get $builtins/fn + local.set $53 + global.get $~lib/memory/__stack_pointer + local.get $53 + i32.store + local.get $53 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:index + call_indirect (type $2) + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 401 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $builtins/fn + local.set $53 + global.get $~lib/memory/__stack_pointer + local.get $53 + i32.store offset=4 + local.get $53 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:name + local.set $53 + global.get $~lib/memory/__stack_pointer + local.get $53 + i32.store + local.get $53 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 402 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $builtins/fn + local.set $53 + global.get $~lib/memory/__stack_pointer + local.get $53 + i32.store + local.get $53 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 403 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $builtins/fn + local.set $53 + global.get $~lib/memory/__stack_pointer + local.get $53 + i32.store + local.get $53 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 404 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $builtins/fn + local.set $53 + global.get $~lib/memory/__stack_pointer + local.get $53 + i32.store offset=4 + local.get $53 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#toString + local.set $53 + global.get $~lib/memory/__stack_pointer + local.get $53 + i32.store + local.get $53 + i32.const 176 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 405 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + i32.const 4 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + i32.const 1 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + i32.const 4 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 1 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + i32.const 3 + i32.const 3 + i32.eq + drop + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.ne + drop + f32.const nan:0x400000 + local.tee $40 + local.get $40 + f32.ne + drop + f64.const nan:0x8000000000000 + local.tee $41 + local.get $41 + f64.ne + drop + f32.const nan:0x400000 + local.tee $42 + local.get $42 + f32.sub + f32.const 0 + f32.eq + i32.eqz + drop + f32.const inf + local.tee $43 + local.get $43 + f32.sub + f32.const 0 + f32.eq + i32.eqz + drop + f64.const nan:0x8000000000000 + local.tee $44 + local.get $44 + f64.sub + f64.const 0 + f64.eq + i32.eqz + drop + f64.const inf + local.tee $45 + local.get $45 + f64.sub + f64.const 0 + f64.eq + i32.eqz + drop + f32.const 0 + local.tee $46 + local.get $46 + f32.sub + f32.const 0 + f32.eq + drop + f64.const 0 + local.tee $47 + local.get $47 + f64.sub + f64.const 0 + f64.eq + drop + global.get $~lib/builtins/i8.MIN_VALUE + i32.const 128 + i32.extend8_s + i32.eq + drop + global.get $~lib/builtins/i8.MAX_VALUE + i32.const 127 + i32.eq + drop + global.get $~lib/builtins/i16.MIN_VALUE + i32.const 32768 + i32.extend16_s + i32.eq + drop + global.get $~lib/builtins/i16.MAX_VALUE + i32.const 32767 + i32.eq + drop + global.get $~lib/builtins/i32.MIN_VALUE + i32.const -2147483648 + i32.eq + drop + global.get $~lib/builtins/i32.MAX_VALUE + i32.const 2147483647 + i32.eq + drop + global.get $~lib/builtins/i64.MIN_VALUE + i64.const -9223372036854775808 + i64.eq + drop + global.get $~lib/builtins/i64.MAX_VALUE + i64.const 9223372036854775807 + i64.eq + drop + global.get $~lib/builtins/u8.MIN_VALUE + i32.const 0 + i32.eq + drop + global.get $~lib/builtins/u8.MAX_VALUE + i32.const 255 + i32.eq + drop + global.get $~lib/builtins/u16.MIN_VALUE + i32.const 0 + i32.eq + drop + global.get $~lib/builtins/u16.MAX_VALUE + i32.const 65535 + i32.eq + drop + global.get $~lib/builtins/u32.MIN_VALUE + i32.const 0 + i32.eq + drop + global.get $~lib/builtins/u32.MAX_VALUE + i32.const -1 + i32.eq + drop + global.get $~lib/builtins/u64.MIN_VALUE + i64.const 0 + i64.eq + drop + global.get $~lib/builtins/u64.MAX_VALUE + i64.const -1 + i64.eq + drop + global.get $~lib/builtins/bool.MIN_VALUE + i32.const 0 + i32.eq + drop + global.get $~lib/builtins/bool.MIN_VALUE + i32.const 0 + i32.eq + drop + global.get $~lib/builtins/bool.MAX_VALUE + i32.const 1 + i32.eq + drop + global.get $~lib/builtins/bool.MAX_VALUE + i32.const 1 + i32.eq + drop + global.get $~lib/builtins/f32.MIN_NORMAL_VALUE + f32.const 1.1754943508222875e-38 + f32.eq + drop + global.get $~lib/builtins/f32.MIN_VALUE + f32.const 1.401298464324817e-45 + f32.eq + drop + global.get $~lib/builtins/f32.MAX_VALUE + f32.const 3402823466385288598117041e14 + f32.eq + drop + global.get $~lib/builtins/f32.MIN_SAFE_INTEGER + f32.const -16777215 + f32.eq + drop + global.get $~lib/builtins/f32.MAX_SAFE_INTEGER + f32.const 16777215 + f32.eq + drop + global.get $~lib/builtins/f32.EPSILON + f32.const 1.1920928955078125e-07 + f32.eq + drop + global.get $~lib/builtins/f64.MIN_NORMAL_VALUE + f64.const 2.2250738585072014e-308 + f64.eq + drop + global.get $~lib/builtins/f64.MIN_VALUE + f64.const 5e-324 + f64.eq + drop + global.get $~lib/builtins/f64.MAX_VALUE + f64.const 1797693134862315708145274e284 + f64.eq + drop + global.get $~lib/builtins/f64.MIN_SAFE_INTEGER + f64.const -9007199254740991 + f64.eq + drop + global.get $~lib/builtins/f64.MAX_SAFE_INTEGER + f64.const 9007199254740991 + f64.eq + drop + global.get $~lib/builtins/f64.EPSILON + f64.const 2.220446049250313e-16 + f64.eq + drop + f32.const 1 + f32.abs + drop + f64.const 1 + f64.abs + drop + f32.const 1 + f32.ceil + drop + f64.const 1 + f64.ceil + drop + i32.const 1 + i32.clz + drop + i64.const 1 + i64.clz + drop + f32.const 1 + f32.const 2 + f32.copysign + drop + f64.const 1 + f64.const 2 + f64.copysign + drop + i32.const 1 + i32.ctz + drop + i64.const 1 + i64.ctz + drop + f32.const 1 + f32.floor + drop + f64.const 1 + f64.floor + drop + f32.const 1 + f32.nearest + drop + f64.const 1 + f64.nearest + drop + i32.const 1 + i32.popcnt + drop + i64.const 1 + i64.popcnt + drop + i32.const 1 + i32.const 2 + i32.add + drop + i64.const 1 + i64.const 2 + i64.add + drop + i32.const 2 + i32.const 1 + i32.sub + drop + i64.const 2 + i64.const 1 + i64.sub + drop + i32.const 3 + i32.const 1 + i32.mul + drop + i64.const 3 + i64.const 1 + i64.mul + drop + i32.const 4 + i32.const 1 + i32.div_s + drop + i32.const 4 + i32.const 1 + i32.div_u + drop + i64.const 5 + i64.const 1 + i64.div_s + drop + i64.const 5 + i64.const 1 + i64.div_u + drop + i32.const 8 + i32.load8_s + drop + i32.const 8 + i32.load8_u + drop + i32.const 8 + i32.load16_s + drop + i32.const 8 + i32.load16_u + drop + i32.const 8 + i32.load + drop + i32.const 8 + i64.load8_s + drop + i32.const 8 + i64.load8_u + drop + i32.const 8 + i64.load16_s + drop + i32.const 8 + i64.load16_u + drop + i32.const 8 + i64.load32_s + drop + i32.const 8 + i64.load32_u + drop + i32.const 8 + i64.load + drop + i32.const 8 + f32.load + drop + i32.const 8 + f64.load + drop + f32.const 1 + f32.const 2 + f32.add + drop + f64.const 1 + f64.const 2 + f64.add + drop + f32.const 2 + f32.const 1 + f32.sub + drop + f64.const 2 + f64.const 1 + f64.sub + drop + f32.const 1 + f32.const 2 + f32.mul + drop + f64.const 1 + f64.const 2 + f64.mul + drop + f32.const 1.5 + f32.const 0.5 + f32.div + drop + f64.const 1.5 + f64.const 0.5 + f64.div + drop + f32.const 1 + f32.const 2 + f32.max + drop + f64.const 1 + f64.const 2 + f64.max + drop + f32.const 1 + f32.const 2 + f32.min + drop + f64.const 1 + f64.const 2 + f64.min + drop + f32.const 1 + i32.reinterpret_f32 + drop + f64.const 1 + i64.reinterpret_f64 + drop + i32.const 1 + f32.reinterpret_i32 + drop + i64.const 1 + f64.reinterpret_i64 + drop + i32.const 1 + i32.const 2 + i32.rotl + drop + i64.const 1 + i64.const 2 + i64.rotl + drop + i32.const 1 + i32.const 2 + i32.rotr + drop + i64.const 1 + i64.const 2 + i64.rotr + drop + f32.const 1 + f32.sqrt + drop + f64.const 1 + f64.sqrt + drop + i32.const 8 + i32.const 1 + i32.store8 + i32.const 8 + i32.const 1 + i32.store16 + i32.const 8 + i32.const 1 + i32.store + i32.const 8 + i64.const 1 + i64.store8 + i32.const 8 + i64.const 1 + i64.store16 + i32.const 8 + i64.const 1 + i64.store32 + i32.const 8 + i64.const 1 + i64.store + i32.const 8 + f32.const 1 + f32.store + i32.const 8 + f64.const 1 + f64.store + f32.const 1 + f32.trunc + drop + f64.const 1 + f64.trunc + drop + i32.const 0 + call $~lib/atomics/Atomics.isLockFree + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 587 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $~lib/atomics/Atomics.isLockFree + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 588 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/atomics/Atomics.isLockFree + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 589 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $~lib/atomics/Atomics.isLockFree + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 590 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + call $~lib/atomics/Atomics.isLockFree + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 591 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + call $~lib/atomics/Atomics.isLockFree + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 592 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + call $~lib/atomics/Atomics.isLockFree + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 593 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $48 + i32.const 0 + local.set $49 + i32.const 51 + local.set $50 + i32.const 52 + local.set $51 + i32.const 52 + local.set $52 + i32.const 256 + i32.const 5 + local.get $48 + f64.convert_i32_u + local.get $49 + f64.convert_i32_u + local.get $50 + f64.convert_i32_u + local.get $51 + f64.convert_i32_u + local.get $52 + f64.convert_i32_u + call $~lib/builtins/trace + local.get $48 + local.get $49 + i32.eq + i32.eqz + if + i32.const 304 + i32.const 96 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $48 + local.get $50 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $50 + i32.const 51 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $51 + local.get $52 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 352 + i32.const 352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 352 + i32.const 352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 400 + i32.const 400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 612 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 432 + i32.const 432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 464 + i32.const 464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 496 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 528 + i32.const 528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 560 + i32.const 560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 592 + i32.const 592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 624 + i32.const 624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 656 + i32.const 656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 720 + i32.const 720 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 752 + i32.const 752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 623 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 624 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 816 + i32.const 816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 625 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 848 + i32.const 848 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 880 + i32.const 880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 432 + i32.const 432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 352 + i32.const 352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 1 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + i32.const 3 + i32.const 3 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 3 + i32.const 2 + i32.const 1 + call $builtins/max3 + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 663 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 3 + call $builtins/min3 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 668 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 1 + call $builtins/rotl3 + i32.const 48 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 673 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 48 + i32.const 8 + i32.const 1 + call $builtins/rotr3 + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 678 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/builtins.json b/tests/compiler/builtins.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/builtins.json +++ b/tests/compiler/builtins.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat deleted file mode 100644 index 1067470f8e..0000000000 --- a/tests/compiler/builtins.optimized.wat +++ /dev/null @@ -1,911 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) - (memory $0 1) - (data (i32.const 1028) "\01\00\00\00\01") - (data (i32.const 1040) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 1072) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") - (data (i32.const 1120) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\01") - (data (i32.const 1152) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}") - (data (i32.const 1232) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s") - (data (i32.const 1280) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g") - (data (i32.const 1312) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n") - (data (i32.const 1344) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00C") - (data (i32.const 1376) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") - (data (i32.const 1408) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l") - (data (i32.const 1440) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00i\008") - (data (i32.const 1472) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00u\008") - (data (i32.const 1504) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\001\006") - (data (i32.const 1536) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\001\006") - (data (i32.const 1568) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\003\002") - (data (i32.const 1600) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\003\002") - (data (i32.const 1632) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00f\003\002") - (data (i32.const 1664) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\006\004") - (data (i32.const 1696) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\006\004") - (data (i32.const 1728) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00f\006\004") - (data (i32.const 1760) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00i\00s\00i\00z\00e") - (data (i32.const 1792) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00u\00s\00i\00z\00e") - (data (i32.const 1824) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00v\00o\00i\00d") - (data (i32.const 1856) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e") - (data (i32.const 1904) "\08\00\00\00\01\00\00\00\0b\00\00\00\08\00\00\00\02") - (data (i32.const 1936) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\03") - (table $0 4 funcref) - (elem (i32.const 1) $start:builtins~anonymous|0 $start:builtins~anonymous|1 $start:builtins~anonymous|2) - (global $builtins/i (mut i32) (i32.const 0)) - (global $builtins/I (mut i64) (i64.const 0)) - (global $builtins/f (mut f32) (f32.const 0)) - (global $builtins/F (mut f64) (f64.const 0)) - (export "memory" (memory $0)) - (export "test" (func $start:builtins~anonymous|1)) - (start $~start) - (func $start:builtins~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - local.get $0 - i32.load16_u - local.tee $3 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $3 - local.get $4 - i32.sub - return - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - return - end - i32.const 0 - ) - (func $~lib/atomics/Atomics.isLockFree (param $0 i32) (result i32) - i32.const 1 - local.get $0 - i32.const 4 - i32.eq - i32.const 1 - local.get $0 - i32.const 2 - i32.eq - local.get $0 - i32.const 1 - i32.eq - select - select - ) - (func $start:builtins~anonymous|1 - nop - ) - (func $start:builtins~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - nop - ) - (func $start:builtins - i32.const 31 - global.set $builtins/i - i32.const 0 - global.set $builtins/i - i32.const 1 - global.set $builtins/i - i32.const 2 - global.set $builtins/i - i32.const -2147483648 - global.set $builtins/i - i32.const 42 - global.set $builtins/i - i32.const 2 - global.set $builtins/i - i32.const 1 - global.set $builtins/i - i64.const 63 - global.set $builtins/I - i64.const 0 - global.set $builtins/I - i64.const 1 - global.set $builtins/I - i64.const 2 - global.set $builtins/I - i64.const -9223372036854775808 - global.set $builtins/I - i64.const 42 - global.set $builtins/I - i64.const 2 - global.set $builtins/I - i64.const 1 - global.set $builtins/I - f32.const nan:0x400000 - global.set $builtins/f - f32.const inf - global.set $builtins/f - f32.const 1.25 - global.set $builtins/f - f32.const 2 - global.set $builtins/f - f32.const 1.25 - global.set $builtins/f - f32.const 1 - global.set $builtins/f - f32.const 2.5 - global.set $builtins/f - f32.const 1.25 - global.set $builtins/f - f32.const 1 - global.set $builtins/f - f32.const 1.1180340051651 - global.set $builtins/f - f32.const 1 - global.set $builtins/f - f64.const nan:0x8000000000000 - global.set $builtins/F - f64.const inf - global.set $builtins/F - f64.const 1.25 - global.set $builtins/F - f64.const 2 - global.set $builtins/F - f64.const 1.25 - global.set $builtins/F - f64.const 1 - global.set $builtins/F - f64.const 2.5 - global.set $builtins/F - f64.const 1.25 - global.set $builtins/F - f64.const 1 - global.set $builtins/F - f64.const 1.118033988749895 - global.set $builtins/F - f64.const 1 - global.set $builtins/F - f64.const 0 - global.set $builtins/F - f32.const 1 - global.set $builtins/f - i32.const 8 - i32.load - global.set $builtins/i - i32.const 8 - global.get $builtins/i - i32.store - i32.const 8 - i32.const 8 - i32.load - i32.store - i32.const 8 - i64.load - global.set $builtins/I - i32.const 8 - global.get $builtins/I - i64.store - i32.const 8 - i32.const 8 - i64.load - i64.store - i32.const 8 - f32.load - global.set $builtins/f - i32.const 8 - global.get $builtins/f - f32.store - i32.const 8 - i32.const 8 - f32.load - f32.store - i32.const 8 - f64.load - global.set $builtins/F - i32.const 8 - global.get $builtins/F - f64.store - i32.const 8 - i32.const 8 - f64.load - f64.store - i32.const 8 - i32.load - global.set $builtins/i - i32.const 8 - global.get $builtins/i - i32.store - i32.const 8 - i32.const 8 - i32.load - i32.store - i32.const 8 - i64.load - global.set $builtins/I - i32.const 8 - global.get $builtins/I - i64.store - i32.const 8 - i32.const 8 - i64.load - i64.store - i32.const 8 - f32.load - global.set $builtins/f - i32.const 8 - global.get $builtins/f - f32.store - i32.const 8 - i32.const 8 - f32.load - f32.store - i32.const 8 - f64.load - global.set $builtins/F - i32.const 8 - global.get $builtins/F - f64.store - i32.const 8 - i32.const 8 - f64.load - f64.store - i32.const 8 - i32.load8_s - global.set $builtins/i - i32.const 8 - i32.load16_s - global.set $builtins/i - i32.const 8 - i32.load - global.set $builtins/i - i32.const 8 - i32.load8_u - global.set $builtins/i - i32.const 8 - i32.load16_u - global.set $builtins/i - i32.const 8 - i32.load - global.set $builtins/i - i32.const 8 - i32.load8_u - drop - i32.const 8 - i32.load16_u - drop - i32.const 8 - i32.load - drop - i32.const 8 - i32.load8_s - drop - i32.const 8 - i32.load16_s - drop - i32.const 8 - i32.load - drop - i32.const 8 - i64.load8_s - global.set $builtins/I - i32.const 8 - i64.load16_s - global.set $builtins/I - i32.const 8 - i64.load32_s - global.set $builtins/I - i32.const 8 - i64.load - global.set $builtins/I - i32.const 8 - i64.load8_u - drop - i32.const 8 - i64.load16_u - drop - i32.const 8 - i64.load32_u - drop - i32.const 8 - i64.load - drop - i32.const 8 - i32.const 1 - i32.store8 - i32.const 8 - i32.const 1 - i32.store16 - i32.const 8 - i32.const 1 - i32.store - i32.const 8 - i64.const 1 - i64.store8 - i32.const 8 - i64.const 1 - i64.store16 - i32.const 8 - i64.const 1 - i64.store32 - i32.const 8 - i64.const 1 - i64.store - i32.const 8 - i64.const 1 - i64.store - i32.const 1067450368 - global.set $builtins/i - f32.const 3.5032461608120427e-44 - global.set $builtins/f - i64.const 4608308318706860032 - global.set $builtins/I - f64.const 1.24e-322 - global.set $builtins/F - memory.size - drop - i32.const 1 - memory.grow - drop - memory.size - drop - i32.const 1 - memory.grow - drop - i32.const 10 - global.set $builtins/i - i64.const 200 - global.set $builtins/I - f32.const 1.25 - global.set $builtins/f - f64.const 25 - global.set $builtins/F - i32.const 1 - i32.const 2 - i32.const 1136 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 265 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 3 - i32.const 1136 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 266 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 267 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1168 - i32.const 1168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 270 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.load8_s - drop - i32.const 8 - i32.load8_u - drop - i32.const 8 - i32.load16_s - drop - i32.const 8 - i32.load16_u - drop - i32.const 8 - i32.load - drop - i32.const 8 - i64.load8_s - drop - i32.const 8 - i64.load8_u - drop - i32.const 8 - i64.load16_s - drop - i32.const 8 - i64.load16_u - drop - i32.const 8 - i64.load32_s - drop - i32.const 8 - i64.load32_u - drop - i32.const 8 - i64.load - drop - i32.const 8 - f32.load - drop - i32.const 8 - f64.load - drop - i32.const 8 - i32.const 1 - i32.store8 - i32.const 8 - i32.const 1 - i32.store16 - i32.const 8 - i32.const 1 - i32.store - i32.const 8 - i64.const 1 - i64.store8 - i32.const 8 - i64.const 1 - i64.store16 - i32.const 8 - i64.const 1 - i64.store32 - i32.const 8 - i64.const 1 - i64.store - i32.const 8 - f32.const 1 - f32.store - i32.const 8 - f64.const 1 - f64.store - i32.const 0 - call $~lib/atomics/Atomics.isLockFree - if - i32.const 0 - i32.const 1088 - i32.const 432 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/atomics/Atomics.isLockFree - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 433 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/atomics/Atomics.isLockFree - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 434 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $~lib/atomics/Atomics.isLockFree - if - i32.const 0 - i32.const 1088 - i32.const 435 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $~lib/atomics/Atomics.isLockFree - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 436 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - call $~lib/atomics/Atomics.isLockFree - if - i32.const 0 - i32.const 1088 - i32.const 437 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - call $~lib/atomics/Atomics.isLockFree - if - i32.const 0 - i32.const 1088 - i32.const 438 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1248 - i32.const 5 - f64.const 0 - f64.const 0 - f64.const 25 - f64.const 26 - f64.const 26 - call $~lib/builtins/trace - i32.const 1328 - i32.const 1328 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 455 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 1328 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 456 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1360 - i32.const 1360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 457 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1392 - i32.const 1392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 458 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1424 - i32.const 1424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 459 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1456 - i32.const 1456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 460 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1488 - i32.const 1488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1520 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 462 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1552 - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1584 - i32.const 1584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 464 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1616 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 465 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1648 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 466 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1680 - i32.const 1680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 467 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1712 - i32.const 1712 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 468 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1744 - i32.const 1744 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 469 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1776 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 470 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 471 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1840 - i32.const 1840 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 472 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1392 - i32.const 1392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 473 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 1328 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 474 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:builtins - ) -) diff --git a/tests/compiler/builtins.release.wat b/tests/compiler/builtins.release.wat new file mode 100644 index 0000000000..a22c2024c1 --- /dev/null +++ b/tests/compiler/builtins.release.wat @@ -0,0 +1,1014 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (global $builtins/i (mut i32) (i32.const 0)) + (global $builtins/I (mut i64) (i64.const 0)) + (global $builtins/f (mut f32) (f32.const 0)) + (global $builtins/F (mut f64) (f64.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34796)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\06\00\00\00a\00b\00c") + (data $2 (i32.const 1100) ",") + (data $2.1 (i32.const 1112) "\02\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data $3 (i32.const 1148) "\1c") + (data $3.1 (i32.const 1160) "\07\00\00\00\08\00\00\00\01") + (data $4 (i32.const 1180) "L") + (data $4.1 (i32.const 1192) "\02\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}") + (data $5 (i32.const 1260) ",") + (data $5.1 (i32.const 1272) "\02\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s") + (data $6 (i32.const 1308) ",") + (data $6.1 (i32.const 1320) "\02\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g") + (data $7 (i32.const 1356) ",") + (data $7.1 (i32.const 1368) "\02\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n") + (data $8 (i32.const 1404) "\1c") + (data $8.1 (i32.const 1416) "\02\00\00\00\02\00\00\00C") + (data $9 (i32.const 1436) "\1c") + (data $9.1 (i32.const 1448) "\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") + (data $10 (i32.const 1468) "\1c") + (data $10.1 (i32.const 1480) "\02\00\00\00\08\00\00\00b\00o\00o\00l") + (data $11 (i32.const 1500) "\1c") + (data $11.1 (i32.const 1512) "\02\00\00\00\04\00\00\00i\008") + (data $12 (i32.const 1532) "\1c") + (data $12.1 (i32.const 1544) "\02\00\00\00\04\00\00\00u\008") + (data $13 (i32.const 1564) "\1c") + (data $13.1 (i32.const 1576) "\02\00\00\00\06\00\00\00i\001\006") + (data $14 (i32.const 1596) "\1c") + (data $14.1 (i32.const 1608) "\02\00\00\00\06\00\00\00u\001\006") + (data $15 (i32.const 1628) "\1c") + (data $15.1 (i32.const 1640) "\02\00\00\00\06\00\00\00i\003\002") + (data $16 (i32.const 1660) "\1c") + (data $16.1 (i32.const 1672) "\02\00\00\00\06\00\00\00u\003\002") + (data $17 (i32.const 1692) "\1c") + (data $17.1 (i32.const 1704) "\02\00\00\00\06\00\00\00f\003\002") + (data $18 (i32.const 1724) "\1c") + (data $18.1 (i32.const 1736) "\02\00\00\00\06\00\00\00i\006\004") + (data $19 (i32.const 1756) "\1c") + (data $19.1 (i32.const 1768) "\02\00\00\00\06\00\00\00u\006\004") + (data $20 (i32.const 1788) "\1c") + (data $20.1 (i32.const 1800) "\02\00\00\00\06\00\00\00f\006\004") + (data $21 (i32.const 1820) "\1c") + (data $21.1 (i32.const 1832) "\02\00\00\00\n\00\00\00i\00s\00i\00z\00e") + (data $22 (i32.const 1852) "\1c") + (data $22.1 (i32.const 1864) "\02\00\00\00\n\00\00\00u\00s\00i\00z\00e") + (data $23 (i32.const 1884) "\1c") + (data $23.1 (i32.const 1896) "\02\00\00\00\08\00\00\00v\00o\00i\00d") + (data $24 (i32.const 1916) ",") + (data $24.1 (i32.const 1928) "\02\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e") + (data $25 (i32.const 1964) "\1c") + (data $25.1 (i32.const 1976) "\0c\00\00\00\08\00\00\00\02") + (data $26 (i32.const 1996) "\1c") + (data $26.1 (i32.const 2008) "\r\00\00\00\08\00\00\00\03") + (table $0 4 4 funcref) + (elem $0 (i32.const 1) $start:builtins~anonymous|0 $start:builtins~anonymous|1 $start:builtins~anonymous|2) + (export "test" (func $start:builtins~anonymous|1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:builtins~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $start:builtins~anonymous|1 + ) + (func $start:builtins~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + ) + (func $~start + call $start:builtins + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2028 + i32.lt_s + if + i32.const 34816 + i32.const 34864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$2 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$2 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $start:builtins + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2028 + i32.lt_s + if + i32.const 34816 + i32.const 34864 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1 + global.set $builtins/i + i32.const 0 + global.set $builtins/i + i32.const 0 + global.set $builtins/i + i32.const 1 + global.set $builtins/i + i32.const 31 + global.set $builtins/i + i32.const 0 + global.set $builtins/i + i32.const 1 + global.set $builtins/i + i32.const 2 + global.set $builtins/i + i32.const -2147483648 + global.set $builtins/i + i32.const 42 + global.set $builtins/i + i32.const 2 + global.set $builtins/i + i32.const 1 + global.set $builtins/i + i32.const 3 + global.set $builtins/i + i32.const 1 + global.set $builtins/i + i32.const 6 + global.set $builtins/i + i32.const 3 + global.set $builtins/i + i32.const 1 + global.set $builtins/i + i32.const 0 + global.set $builtins/i + i32.const 0 + global.set $builtins/i + i32.const 1 + global.set $builtins/i + i32.const 1 + global.set $builtins/i + i32.const 3 + global.set $builtins/i + i64.const 63 + global.set $builtins/I + i64.const 0 + global.set $builtins/I + i64.const 1 + global.set $builtins/I + i64.const 2 + global.set $builtins/I + i64.const -9223372036854775808 + global.set $builtins/I + i64.const 42 + global.set $builtins/I + i64.const 2 + global.set $builtins/I + i64.const 1 + global.set $builtins/I + i64.const 3 + global.set $builtins/I + i64.const 1 + global.set $builtins/I + i64.const 6 + global.set $builtins/I + i64.const 3 + global.set $builtins/I + i32.const 1 + global.set $builtins/i + i32.const 0 + global.set $builtins/i + i32.const 0 + global.set $builtins/i + i32.const 1 + global.set $builtins/i + i64.const 1 + global.set $builtins/I + i64.const 3 + global.set $builtins/I + f32.const nan:0x400000 + global.set $builtins/f + f32.const inf + global.set $builtins/f + f32.const 1.25 + global.set $builtins/f + f32.const 2 + global.set $builtins/f + f32.const 1.25 + global.set $builtins/f + f32.const 1 + global.set $builtins/f + f32.const 4 + global.set $builtins/f + f32.const 1 + global.set $builtins/f + f32.const 3 + global.set $builtins/f + f32.const 3 + global.set $builtins/f + f32.const 2.5 + global.set $builtins/f + f32.const 1.25 + global.set $builtins/f + f32.const 1 + global.set $builtins/f + f32.const 1.1180340051651 + global.set $builtins/f + f32.const 1 + global.set $builtins/f + i32.const 1 + global.set $builtins/i + i32.const 0 + global.set $builtins/i + i32.const 0 + global.set $builtins/i + i32.const 1 + global.set $builtins/i + f64.const nan:0x8000000000000 + global.set $builtins/F + f64.const inf + global.set $builtins/F + f64.const 1.25 + global.set $builtins/F + f64.const 2 + global.set $builtins/F + f64.const 1.25 + global.set $builtins/F + f64.const 1 + global.set $builtins/F + f64.const 4 + global.set $builtins/F + f64.const 1 + global.set $builtins/F + f64.const 3 + global.set $builtins/F + f64.const 3 + global.set $builtins/F + f64.const 2.5 + global.set $builtins/F + f64.const 1.25 + global.set $builtins/F + f64.const 1 + global.set $builtins/F + f64.const 1.118033988749895 + global.set $builtins/F + f64.const 1 + global.set $builtins/F + i32.const 1 + global.set $builtins/i + i32.const 0 + global.set $builtins/i + i32.const 0 + global.set $builtins/i + i32.const 1 + global.set $builtins/i + f64.const 0 + global.set $builtins/F + f32.const 1 + global.set $builtins/f + f64.const 1.5 + global.set $builtins/F + f32.const 1 + global.set $builtins/f + f64.const 1 + global.set $builtins/F + f32.const 1 + global.set $builtins/f + f64.const 2 + global.set $builtins/F + f32.const 2 + global.set $builtins/f + f64.const 2 + global.set $builtins/F + f32.const 1 + global.set $builtins/f + i32.const 8 + i32.load + global.set $builtins/i + i32.const 8 + global.get $builtins/i + i32.store + i32.const 8 + i32.const 8 + i32.load + i32.store + i32.const 8 + i64.load + global.set $builtins/I + i32.const 8 + global.get $builtins/I + i64.store + i32.const 8 + i32.const 8 + i64.load + i64.store + i32.const 8 + f32.load + global.set $builtins/f + i32.const 8 + global.get $builtins/f + f32.store + i32.const 8 + i32.const 8 + f32.load + f32.store + i32.const 8 + f64.load + global.set $builtins/F + i32.const 8 + global.get $builtins/F + f64.store + i32.const 8 + i32.const 8 + f64.load + f64.store + i32.const 8 + i32.load + global.set $builtins/i + i32.const 8 + global.get $builtins/i + i32.store + i32.const 8 + i32.const 8 + i32.load + i32.store + i32.const 8 + i64.load + global.set $builtins/I + i32.const 8 + global.get $builtins/I + i64.store + i32.const 8 + i32.const 8 + i64.load + i64.store + i32.const 8 + f32.load + global.set $builtins/f + i32.const 8 + global.get $builtins/f + f32.store + i32.const 8 + i32.const 8 + f32.load + f32.store + i32.const 8 + f64.load + global.set $builtins/F + i32.const 8 + global.get $builtins/F + f64.store + i32.const 8 + i32.const 8 + f64.load + f64.store + i32.const 8 + i32.load8_s + global.set $builtins/i + i32.const 8 + i32.load16_s + global.set $builtins/i + i32.const 8 + i32.load + global.set $builtins/i + i32.const 8 + i32.load8_u + global.set $builtins/i + i32.const 8 + i32.load16_u + global.set $builtins/i + i32.const 8 + i32.load + global.set $builtins/i + i32.const 8 + i32.load + drop + i32.const 8 + i64.load8_s + global.set $builtins/I + i32.const 8 + i64.load16_s + global.set $builtins/I + i32.const 8 + i64.load32_s + global.set $builtins/I + i32.const 8 + i64.load + global.set $builtins/I + i32.const 8 + i64.load8_u + drop + i32.const 8 + i64.load16_u + drop + i32.const 8 + i64.load32_u + drop + i32.const 8 + i64.load + drop + i32.const 8 + i32.const 1 + i32.store8 + i32.const 8 + i32.const 1 + i32.store16 + i32.const 8 + i32.const 1 + i32.store + i32.const 8 + i64.const 1 + i64.store8 + i32.const 8 + i64.const 1 + i64.store16 + i32.const 8 + i64.const 1 + i64.store32 + i32.const 8 + i64.const 1 + i64.store + i32.const 8 + i64.const 1 + i64.store + i32.const 1067450368 + global.set $builtins/i + f32.const 3.5032461608120427e-44 + global.set $builtins/f + i64.const 4608308318706860032 + global.set $builtins/I + f64.const 1.24e-322 + global.set $builtins/F + memory.size + drop + i32.const 1 + memory.grow + drop + memory.size + drop + i32.const 1 + memory.grow + drop + i32.const 10 + global.set $builtins/i + i64.const 200 + global.set $builtins/I + f32.const 1.25 + global.set $builtins/f + f64.const 25 + global.set $builtins/F + i32.const 1 + i32.const 2 + i32.const 1168 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 400 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 2 + i32.const 3 + i32.const 1168 + i32.load + call_indirect (type $0) + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 401 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 402 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1200 + i32.store + i32.const 1200 + i32.const 1200 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 405 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.load8_s + drop + i32.const 8 + i32.load8_u + drop + i32.const 8 + i32.load16_s + drop + i32.const 8 + i32.load16_u + drop + i32.const 8 + i32.load + drop + i32.const 8 + i64.load8_s + drop + i32.const 8 + i64.load8_u + drop + i32.const 8 + i64.load16_s + drop + i32.const 8 + i64.load16_u + drop + i32.const 8 + i64.load32_s + drop + i32.const 8 + i64.load32_u + drop + i32.const 8 + i64.load + drop + i32.const 8 + f32.load + drop + i32.const 8 + f64.load + drop + i32.const 8 + i32.const 1 + i32.store8 + i32.const 8 + i32.const 1 + i32.store16 + i32.const 8 + i32.const 1 + i32.store + i32.const 8 + i64.const 1 + i64.store8 + i32.const 8 + i64.const 1 + i64.store16 + i32.const 8 + i64.const 1 + i64.store32 + i32.const 8 + i64.const 1 + i64.store + i32.const 8 + f32.const 1 + f32.store + i32.const 8 + f64.const 1 + f64.store + i32.const 1280 + i32.const 5 + f64.const 0 + f64.const 0 + f64.const 51 + f64.const 52 + f64.const 52 + call $~lib/builtins/trace + i32.const 1376 + i32.const 1376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1376 + i32.const 1376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1424 + i32.const 1424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 612 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1456 + i32.const 1456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1488 + i32.const 1488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1520 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1552 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1584 + i32.const 1584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1616 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1648 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1680 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1744 + i32.const 1744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1776 + i32.const 1776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 623 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 1808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 624 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1840 + i32.const 1840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 625 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1872 + i32.const 1872 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1904 + i32.const 1904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1456 + i32.const 1456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1376 + i32.const 1376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/builtins.ts b/tests/compiler/builtins.ts index 5df24b334d..dafb8f9309 100644 --- a/tests/compiler/builtins.ts +++ b/tests/compiler/builtins.ts @@ -46,10 +46,24 @@ assert(!isDefined(c)); assert(isConstant(1)); assert(!isConstant(b)); -// integers - var i: i32; +// small integers +var l: i8; +l = add(1, 2); assert(l == 3); +l = sub(2, 1); assert(l == 1); +l = mul(1, 2); assert(l == 2); +l = div(6, 2); assert(l == 3); +i = eq(1, 1); assert(i == 1); +i = eq(1, 0); assert(i == 0); +i = ne(1, 1); assert(i == 0); +i = ne(1, 0); assert(i == 1); + +var v: u8; +v = rotl(0b10001111, 3); assert(v == 0b01111100); +v = rotr(0b10101010, 1); assert(v == 0b01010101); + +// integers clz(1); ctz(1); popcnt(1); @@ -58,6 +72,23 @@ rotr(1, 1); abs(-42); max(1, 2); min(1, 2); +add(1, 2); +sub(2, 1); +mul(1, 2); +div(6, 2); +eq(1, 0); +ne(1, 0); + +i32.clz(1); +i32.ctz(1); +i32.popcnt(1); +i32.rotl(1, 1); +i32.rotr(1, 1); +i32.add(1, 2); +i32.sub(2, 1); +i32.mul(1, 2); +i32.eq(1, 0); +i32.ne(1, 0); i = clz(1); i = ctz(1); @@ -67,6 +98,16 @@ i = rotr(1, 1); i = abs(-42); assert(i == 42); i = max(1, 2); assert(i == 2); i = min(1, 2); assert(i == 1); +i = add(1, 2); assert(i == 3); +i = sub(2, 1); assert(i == 1); +i = mul(2, 3); assert(i == 6); +i = div(6, 2); assert(i == 3); +i = eq(1, 1); assert(i == 1); +i = eq(1, 0); assert(i == 0); +i = ne(1, 1); assert(i == 0); +i = ne(1, 0); assert(i == 1); +i = rem(1, 3); assert(i == 1); +i = rem(15, 4); assert(i == 3); var I: i64; @@ -76,6 +117,16 @@ popcnt(1); rotl(1, 1); rotr(1, 1); abs(-42); +eq(1, 0); +ne(1, 0); + +i64.clz(1); +i64.ctz(1); +i64.popcnt(1); +i64.rotl(1, 1); +i64.rotr(1, 1); +i64.eq(1, 0); +i64.ne(1, 0); I = clz(1); I = ctz(1); @@ -84,7 +135,17 @@ I = rotl(1, 1); I = rotr(1, 1); I = abs(-42); assert(I == 42); I = max(1, 2); assert(I == 2); -I = min(1, 2); assert(i == 1); +I = min(1, 2); assert(I == 1); +I = add(1, 2); assert(I == 3); +I = sub(2, 1); assert(I == 1); +I = mul(2, 3); assert(I == 6); +I = div(6, 2); assert(I == 3); +i = eq(1, 1); assert(i == 1); +i = eq(1, 0); assert(i == 0); +i = ne(1, 1); assert(i == 0); +i = ne(1, 0); assert(i == 1); +I = rem(1, 3); assert(I == 1); +I = rem(15, 4); assert(I == 3); // floats @@ -96,17 +157,39 @@ abs(1.25); ceil(1.25); copysign(1.25, 2.5); floor(1.25); +add(1.5, 2.5); +sub(2.5, 1.5); +mul(1.5, 2.0); +div(1.5, 0.5); max(1.25, 2.5); min(1.25, 2.5); nearest(1.25); sqrt(1.25); trunc(1.25); +eq(1.5, 2.5); +ne(1.5, 2.5); assert(isNaN(1.25) == false); assert(isNaN(NaN) == true); assert(isFinite(1.25) == true); assert(isFinite(Infinity) == false); assert(isFinite(-Infinity) == false); assert(isFinite(NaN) == false); +f32.NaN; +f32.abs(1.25); +f32.ceil(1.25); +f32.copysign(1.25, 2.5); +f32.floor(1.25); +f32.add(1.5, 2.5); +f32.sub(2.5, 1.5); +f32.mul(1.5, 2.0); +f32.div(1.5, 0.5); +f32.max(1.25, 2.5); +f32.min(1.25, 2.5); +f32.nearest(1.25); +f32.sqrt(1.25); +f32.trunc(1.25); +f32.eq(1.5, 2.5); +f32.ne(1.5, 2.5); f = NaN; f = Infinity; @@ -114,11 +197,19 @@ f = abs(1.25); f = ceil(1.25); f = copysign(1.25, 2.5); f = floor(1.25); -f = max(1.25, 2.5); +f = add(1.5, 2.5); assert(f == 4.0); +f = sub(2.5, 1.5); assert(f == 1.0); +f = mul(1.5, 2.0); assert(f == 3.0); +f = div(1.5, 0.5); assert(f == 3.0); +f = max(1.25, 2.5); assert(f == 2.5); f = min(1.25, 2.5); f = nearest(1.25); f = sqrt(1.25); f = trunc(1.25); +i = eq(1.5, 1.5); assert(i == 1); +i = eq(1.5, 2.5); assert(i == 0); +i = ne(1.5, 1.5); assert(i == 0); +i = ne(1.5, 2.5); assert(i == 1); b = isNaN(1.25); b = isFinite(1.25); @@ -132,17 +223,41 @@ abs(1.25); ceil(1.25); copysign(1.25, 2.5); floor(1.25); +add(1.5, 2.5); +sub(2.5, 1.5); +mul(1.5, 2.0); +div(1.5, 0.5); max(1.25, 2.5); min(1.25, 2.5); nearest(1.25); sqrt(1.25); trunc(1.25); +eq(1.5, 1.5); +eq(1.5, 2.5); +ne(1.5, 1.5); +ne(1.5, 2.5); assert(isNaN(1.25) == false); assert(isNaN(NaN) == true); assert(isFinite(1.25) == true); assert(isFinite(Infinity) == false); assert(isFinite(-Infinity) == false); assert(isFinite(NaN) == false); +f64.NaN; +f64.abs(1.25); +f64.ceil(1.25); +f64.copysign(1.25, 2.5); +f64.floor(1.25); +f64.add(1.5, 2.5); +f64.sub(2.5, 1.5); +f64.mul(1.5, 2.0); +f64.div(1.5, 0.5); +f64.max(1.25, 2.5); +f64.min(1.25, 2.5); +f64.nearest(1.25); +f64.sqrt(1.25); +f64.trunc(1.25); +f64.eq(1.5, 2.5); +f64.ne(1.5, 2.5); F = NaN; F = Infinity; @@ -150,11 +265,19 @@ F = abs(1.25); F = ceil(1.25); F = copysign(1.25, 2.5); F = floor(1.25); +F = add(1.5, 2.5); assert(F == 4.0); +F = sub(2.5, 1.5); assert(F == 1.0); +F = mul(1.5, 2.0); assert(F == 3.0); +F = div(1.5, 0.5); assert(F == 3.0); F = max(1.25, 2.5); F = min(1.25, 2.5); F = nearest(1.25); F = sqrt(1.25); F = trunc(1.25); +i = eq(1.5, 1.5); assert(i == 1); +i = eq(1.5, 2.5); assert(i == 0); +i = ne(1.5, 1.5); assert(i == 0); +i = ne(1.5, 2.5); assert(i == 1); b = isNaN(1.25); b = isFinite(1.25); @@ -162,6 +285,14 @@ b = isFinite(1.25); F = min(0, 1.0); f = max(0, f); +F = add(0, 1.5); +f = add(0, f); +F = sub(2, 1.0); +f = sub(2, f); +F = mul(2, 1.0); +f = mul(2, f); +F = div(2, 1.0); +f = div(2, f); // load and store @@ -208,6 +339,8 @@ I = load(8); I = load(8); I = load(8); +u = i32.rem_u(15, 4); assert(u == 3); + var U: u64; U = load(8); U = load(8); @@ -225,6 +358,8 @@ store(8, 1); store(8, 1); // must extend +U = i64.rem_u(15, 4); assert(U == 3); + // reinterpretation reinterpret(1.25); @@ -381,6 +516,17 @@ f64.nearest(1.0); i32.popcnt(1); i64.popcnt(1); +i32.add(1, 2); +i64.add(1, 2); +i32.sub(2, 1); +i64.sub(2, 1); +i32.mul(3, 1); +i64.mul(3, 1); +i32.div_s(4, 1); +i32.div_u(4, 1); +i64.div_s(5, 1); +i64.div_u(5, 1); + i32.load8_s(8); i32.load8_u(8); i32.load16_s(8); @@ -396,6 +542,15 @@ i64.load(8); f32.load(8); f64.load(8); +f32.add(1.0, 2.0); +f64.add(1.0, 2.0); +f32.sub(2.0, 1.0); +f64.sub(2.0, 1.0); +f32.mul(1.0, 2.0); +f64.mul(1.0, 2.0); +f32.div(1.5, 0.5); +f64.div(1.5, 0.5); + f32.max(1.0, 2.0); f64.max(1.0, 2.0); @@ -499,3 +654,25 @@ assert(isInteger i32>>()); assert(isInteger i32>>()); assert(isManaged C>>()); assert(isManaged C>>()); + +// Issue #1537: Make sure temp. locals are not confused + +function max3(a: i32, b: i32, c: i32): i32 { + return max(a, max(b, c)); +} +assert(max3(3, 2, 1) == 3); + +function min3(a: i32, b: i32, c: i32): i32 { + return min(a, min(b, c)); +} +assert(min3(1, 2, 3) == 1); + +function rotl3(a: i8, b: i8, c: i8): i32 { + return rotl(a, rotl(b, c)); +} +assert(rotl3(3, 2, 1) == 48); + +function rotr3(a: i8, b: i8, c: i8): i32 { + return rotr(a, rotr(b, c)); +} +assert(rotr3(48, 8, 1) == 3); diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat deleted file mode 100644 index 9573100c47..0000000000 --- a/tests/compiler/builtins.untouched.wat +++ /dev/null @@ -1,2228 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) - (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 32) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") - (data (i32.const 64) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00") - (data (i32.const 112) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 144) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}\00") - (data (i32.const 224) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s\00") - (data (i32.const 272) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g\00") - (data (i32.const 304) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n\00") - (data (i32.const 336) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00C\00") - (data (i32.const 368) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00") - (data (i32.const 400) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l\00") - (data (i32.const 432) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00i\008\00") - (data (i32.const 464) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00u\008\00") - (data (i32.const 496) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\001\006\00") - (data (i32.const 528) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\001\006\00") - (data (i32.const 560) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\003\002\00") - (data (i32.const 592) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\003\002\00") - (data (i32.const 624) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00f\003\002\00") - (data (i32.const 656) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\006\004\00") - (data (i32.const 688) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00u\006\004\00") - (data (i32.const 720) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00f\006\004\00") - (data (i32.const 752) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00i\00s\00i\00z\00e\00") - (data (i32.const 784) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00u\00s\00i\00z\00e\00") - (data (i32.const 816) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00v\00o\00i\00d\00") - (data (i32.const 848) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e\00") - (data (i32.const 896) "\08\00\00\00\01\00\00\00\0b\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 928) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (table $0 4 funcref) - (elem (i32.const 1) $start:builtins~anonymous|0 $start:builtins~anonymous|1 $start:builtins~anonymous|2) - (global $builtins/b (mut i32) (i32.const 0)) - (global $builtins/i (mut i32) (i32.const 0)) - (global $builtins/I (mut i64) (i64.const 0)) - (global $builtins/f (mut f32) (f32.const 0)) - (global $builtins/F (mut f64) (f64.const 0)) - (global $builtins/constantOffset i32 (i32.const 8)) - (global $builtins/u (mut i32) (i32.const 0)) - (global $builtins/U (mut i64) (i64.const 0)) - (global $builtins/s (mut i32) (i32.const 0)) - (global $builtins/fn (mut i32) (i32.const 128)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) - (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) - (global $~lib/builtins/i16.MIN_VALUE i32 (i32.const -32768)) - (global $~lib/builtins/i16.MAX_VALUE i32 (i32.const 32767)) - (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) - (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) - (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) - (global $~lib/builtins/u8.MIN_VALUE i32 (i32.const 0)) - (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) - (global $~lib/builtins/u16.MIN_VALUE i32 (i32.const 0)) - (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) - (global $~lib/builtins/u32.MIN_VALUE i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/builtins/u64.MIN_VALUE i64 (i64.const 0)) - (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) - (global $~lib/builtins/bool.MIN_VALUE i32 (i32.const 0)) - (global $~lib/builtins/bool.MAX_VALUE i32 (i32.const 1)) - (global $~lib/builtins/f32.MIN_NORMAL_VALUE f32 (f32.const 1.1754943508222875e-38)) - (global $~lib/builtins/f32.MIN_VALUE f32 (f32.const 1.401298464324817e-45)) - (global $~lib/builtins/f32.MAX_VALUE f32 (f32.const 3402823466385288598117041e14)) - (global $~lib/builtins/f32.MIN_SAFE_INTEGER f32 (f32.const -16777215)) - (global $~lib/builtins/f32.MAX_SAFE_INTEGER f32 (f32.const 16777215)) - (global $~lib/builtins/f32.EPSILON f32 (f32.const 1.1920928955078125e-07)) - (global $~lib/builtins/f64.MIN_NORMAL_VALUE f64 (f64.const 2.2250738585072014e-308)) - (global $~lib/builtins/f64.MIN_VALUE f64 (f64.const 5e-324)) - (global $~lib/builtins/f64.MAX_VALUE f64 (f64.const 1797693134862315708145274e284)) - (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) - (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) - (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) - (export "memory" (memory $0)) - (export "test" (func $builtins/test)) - (start $~start) - (func $start:builtins~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:index (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:name (param $0 i32) (result i32) - i32.const 32 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:length (param $0 i32) (result i32) - i32.const 2 - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#toString (param $0 i32) (result i32) - i32.const 160 - ) - (func $~lib/atomics/Atomics.isLockFree (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 2 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 4 - i32.eq - end - ) - (func $start:builtins~anonymous|1 - nop - ) - (func $start:builtins~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - nop - ) - (func $start:builtins - (local $0 i32) - (local $1 i32) - (local $2 i64) - (local $3 i64) - (local $4 f32) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - i32.clz - drop - i32.const 1 - i32.ctz - drop - i32.const 1 - i32.popcnt - drop - i32.const 1 - i32.const 1 - i32.rotl - drop - i32.const 1 - i32.const 1 - i32.rotr - drop - i32.const -42 - local.tee $0 - i32.const 31 - i32.shr_s - local.tee $1 - local.get $0 - i32.add - local.get $1 - i32.xor - drop - i32.const 1 - local.tee $0 - i32.const 2 - local.tee $1 - local.get $0 - local.get $1 - i32.gt_s - select - drop - i32.const 1 - local.tee $0 - i32.const 2 - local.tee $1 - local.get $0 - local.get $1 - i32.lt_s - select - drop - i32.const 1 - i32.clz - global.set $builtins/i - i32.const 1 - i32.ctz - global.set $builtins/i - i32.const 1 - i32.popcnt - global.set $builtins/i - i32.const 1 - i32.const 1 - i32.rotl - global.set $builtins/i - i32.const 1 - i32.const 1 - i32.rotr - global.set $builtins/i - i32.const -42 - local.tee $0 - i32.const 31 - i32.shr_s - local.tee $1 - local.get $0 - i32.add - local.get $1 - i32.xor - global.set $builtins/i - global.get $builtins/i - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 67 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - local.tee $0 - i32.const 2 - local.tee $1 - local.get $0 - local.get $1 - i32.gt_s - select - global.set $builtins/i - global.get $builtins/i - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 68 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - local.tee $0 - i32.const 2 - local.tee $1 - local.get $0 - local.get $1 - i32.lt_s - select - global.set $builtins/i - global.get $builtins/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 69 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.clz - drop - i64.const 1 - i64.ctz - drop - i64.const 1 - i64.popcnt - drop - i64.const 1 - i64.const 1 - i64.rotl - drop - i64.const 1 - i64.const 1 - i64.rotr - drop - i64.const -42 - local.tee $2 - i64.const 63 - i64.shr_s - local.tee $3 - local.get $2 - i64.add - local.get $3 - i64.xor - drop - i64.const 1 - i64.clz - global.set $builtins/I - i64.const 1 - i64.ctz - global.set $builtins/I - i64.const 1 - i64.popcnt - global.set $builtins/I - i64.const 1 - i64.const 1 - i64.rotl - global.set $builtins/I - i64.const 1 - i64.const 1 - i64.rotr - global.set $builtins/I - i64.const -42 - local.tee $2 - i64.const 63 - i64.shr_s - local.tee $3 - local.get $2 - i64.add - local.get $3 - i64.xor - global.set $builtins/I - global.get $builtins/I - i64.const 42 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 85 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - local.tee $2 - i64.const 2 - local.tee $3 - local.get $2 - local.get $3 - i64.gt_s - select - global.set $builtins/I - global.get $builtins/I - i64.const 2 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 86 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - local.tee $2 - i64.const 2 - local.tee $3 - local.get $2 - local.get $3 - i64.lt_s - select - global.set $builtins/I - global.get $builtins/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 87 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - drop - f32.const inf - drop - f32.const 1.25 - f32.abs - drop - f32.const 1.25 - f32.ceil - drop - f32.const 1.25 - f32.const 2.5 - f32.copysign - drop - f32.const 1.25 - f32.floor - drop - f32.const 1.25 - f32.const 2.5 - f32.max - drop - f32.const 1.25 - f32.const 2.5 - f32.min - drop - f32.const 1.25 - f32.nearest - drop - f32.const 1.25 - f32.sqrt - drop - f32.const 1.25 - f32.trunc - drop - f32.const 1.25 - local.tee $4 - local.get $4 - f32.ne - i32.const 0 - i32.eq - drop - f32.const nan:0x400000 - local.tee $4 - local.get $4 - f32.ne - i32.const 1 - i32.eq - drop - f32.const 1.25 - local.tee $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - i32.const 1 - i32.eq - drop - f32.const inf - local.tee $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - i32.const 0 - i32.eq - drop - f32.const inf - f32.neg - local.tee $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - i32.const 0 - i32.eq - drop - f32.const nan:0x400000 - local.tee $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - i32.const 0 - i32.eq - drop - f32.const nan:0x400000 - global.set $builtins/f - f32.const inf - global.set $builtins/f - f32.const 1.25 - f32.abs - global.set $builtins/f - f32.const 1.25 - f32.ceil - global.set $builtins/f - f32.const 1.25 - f32.const 2.5 - f32.copysign - global.set $builtins/f - f32.const 1.25 - f32.floor - global.set $builtins/f - f32.const 1.25 - f32.const 2.5 - f32.max - global.set $builtins/f - f32.const 1.25 - f32.const 2.5 - f32.min - global.set $builtins/f - f32.const 1.25 - f32.nearest - global.set $builtins/f - f32.const 1.25 - f32.sqrt - global.set $builtins/f - f32.const 1.25 - f32.trunc - global.set $builtins/f - f32.const 1.25 - local.tee $4 - local.get $4 - f32.ne - global.set $builtins/b - f32.const 1.25 - local.tee $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - global.set $builtins/b - f64.const nan:0x8000000000000 - drop - f64.const inf - drop - f64.const nan:0x8000000000000 - drop - f64.const inf - drop - f64.const 1.25 - f64.abs - drop - f64.const 1.25 - f64.ceil - drop - f64.const 1.25 - f64.const 2.5 - f64.copysign - drop - f64.const 1.25 - f64.floor - drop - f64.const 1.25 - f64.const 2.5 - f64.max - drop - f64.const 1.25 - f64.const 2.5 - f64.min - drop - f64.const 1.25 - f64.nearest - drop - f64.const 1.25 - f64.sqrt - drop - f64.const 1.25 - f64.trunc - drop - f64.const 1.25 - local.tee $5 - local.get $5 - f64.ne - i32.const 0 - i32.eq - drop - f64.const nan:0x8000000000000 - local.tee $5 - local.get $5 - f64.ne - i32.const 1 - i32.eq - drop - f64.const 1.25 - local.tee $5 - local.get $5 - f64.sub - f64.const 0 - f64.eq - i32.const 1 - i32.eq - drop - f64.const inf - local.tee $5 - local.get $5 - f64.sub - f64.const 0 - f64.eq - i32.const 0 - i32.eq - drop - f64.const inf - f64.neg - local.tee $5 - local.get $5 - f64.sub - f64.const 0 - f64.eq - i32.const 0 - i32.eq - drop - f64.const nan:0x8000000000000 - local.tee $5 - local.get $5 - f64.sub - f64.const 0 - f64.eq - i32.const 0 - i32.eq - drop - f64.const nan:0x8000000000000 - global.set $builtins/F - f64.const inf - global.set $builtins/F - f64.const 1.25 - f64.abs - global.set $builtins/F - f64.const 1.25 - f64.ceil - global.set $builtins/F - f64.const 1.25 - f64.const 2.5 - f64.copysign - global.set $builtins/F - f64.const 1.25 - f64.floor - global.set $builtins/F - f64.const 1.25 - f64.const 2.5 - f64.max - global.set $builtins/F - f64.const 1.25 - f64.const 2.5 - f64.min - global.set $builtins/F - f64.const 1.25 - f64.nearest - global.set $builtins/F - f64.const 1.25 - f64.sqrt - global.set $builtins/F - f64.const 1.25 - f64.trunc - global.set $builtins/F - f64.const 1.25 - local.tee $5 - local.get $5 - f64.ne - global.set $builtins/b - f64.const 1.25 - local.tee $5 - local.get $5 - f64.sub - f64.const 0 - f64.eq - global.set $builtins/b - f64.const 0 - f64.const 1 - f64.min - global.set $builtins/F - f32.const 0 - global.get $builtins/f - f32.max - global.set $builtins/f - i32.const 8 - i32.load - global.set $builtins/i - i32.const 8 - global.get $builtins/i - i32.store - i32.const 8 - i32.const 8 - i32.load - i32.store - i32.const 8 - i64.load - global.set $builtins/I - i32.const 8 - global.get $builtins/I - i64.store - i32.const 8 - i32.const 8 - i64.load - i64.store - i32.const 8 - f32.load - global.set $builtins/f - i32.const 8 - global.get $builtins/f - f32.store - i32.const 8 - i32.const 8 - f32.load - f32.store - i32.const 8 - f64.load - global.set $builtins/F - i32.const 8 - global.get $builtins/F - f64.store - i32.const 8 - i32.const 8 - f64.load - f64.store - i32.const 0 - i32.load offset=8 - global.set $builtins/i - i32.const 0 - global.get $builtins/i - i32.store offset=8 - i32.const 0 - i32.const 0 - i32.load offset=8 - i32.store offset=8 - i32.const 0 - i64.load offset=8 - global.set $builtins/I - i32.const 0 - global.get $builtins/I - i64.store offset=8 - i32.const 0 - i32.const 0 - i64.load offset=8 - i64.store offset=8 - i32.const 0 - f32.load offset=8 - global.set $builtins/f - i32.const 0 - global.get $builtins/f - f32.store offset=8 - i32.const 0 - i32.const 0 - f32.load offset=8 - f32.store offset=8 - i32.const 0 - f64.load offset=8 - global.set $builtins/F - i32.const 0 - global.get $builtins/F - f64.store offset=8 - i32.const 0 - i32.const 0 - f64.load offset=8 - f64.store offset=8 - i32.const 8 - i32.load8_s - global.set $builtins/i - i32.const 8 - i32.load16_s - global.set $builtins/i - i32.const 8 - i32.load - global.set $builtins/i - i32.const 8 - i32.load8_u - global.set $builtins/i - i32.const 8 - i32.load16_u - global.set $builtins/i - i32.const 8 - i32.load - global.set $builtins/i - i32.const 8 - i32.load8_u - global.set $builtins/u - i32.const 8 - i32.load16_u - global.set $builtins/u - i32.const 8 - i32.load - global.set $builtins/u - i32.const 8 - i32.load8_s - global.set $builtins/u - i32.const 8 - i32.load16_s - global.set $builtins/u - i32.const 8 - i32.load - global.set $builtins/u - i32.const 8 - i64.load8_s - global.set $builtins/I - i32.const 8 - i64.load16_s - global.set $builtins/I - i32.const 8 - i64.load32_s - global.set $builtins/I - i32.const 8 - i64.load - global.set $builtins/I - i32.const 8 - i64.load8_u - global.set $builtins/U - i32.const 8 - i64.load16_u - global.set $builtins/U - i32.const 8 - i64.load32_u - global.set $builtins/U - i32.const 8 - i64.load - global.set $builtins/U - i32.const 8 - i32.const 1 - i32.store8 - i32.const 8 - i32.const 1 - i32.store16 - i32.const 8 - i32.const 1 - i32.store - i32.const 8 - i64.const 1 - i64.store8 - i32.const 8 - i64.const 1 - i64.store16 - i32.const 8 - i64.const 1 - i64.store32 - i32.const 8 - i64.const 1 - i64.store - i32.const 8 - i32.const 1 - i64.extend_i32_s - i64.store - f32.const 1.25 - i32.reinterpret_f32 - drop - i32.const 25 - f32.reinterpret_i32 - drop - f64.const 1.25 - i64.reinterpret_f64 - drop - i64.const 25 - f64.reinterpret_i64 - drop - f32.const 1.25 - i32.reinterpret_f32 - global.set $builtins/i - i32.const 25 - f32.reinterpret_i32 - global.set $builtins/f - f64.const 1.25 - i64.reinterpret_f64 - global.set $builtins/I - i64.const 25 - f64.reinterpret_i64 - global.set $builtins/F - memory.size - drop - i32.const 1 - memory.grow - drop - memory.size - global.set $builtins/s - i32.const 1 - memory.grow - global.set $builtins/s - i32.const 10 - i32.const 20 - i32.const 1 - select - drop - i64.const 100 - i64.const 200 - i32.const 0 - select - drop - f32.const 1.25 - f32.const 2.5 - i32.const 1 - select - drop - f64.const 12.5 - f64.const 25 - i32.const 0 - select - drop - i32.const 10 - i32.const 20 - i32.const 1 - select - global.set $builtins/i - i64.const 100 - i64.const 200 - i32.const 0 - select - global.set $builtins/I - f32.const 1.25 - f32.const 2.5 - i32.const 1 - select - global.set $builtins/f - f64.const 12.5 - f64.const 25 - i32.const 0 - select - global.set $builtins/F - global.get $builtins/i - i32.eqz - if - unreachable - end - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - global.get $builtins/fn - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 265 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - global.get $builtins/fn - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:index - call_indirect (type $i32_i32_=>_i32) - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 266 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $builtins/fn - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:name - local.tee $0 - i32.const 32 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 267 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $builtins/fn - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 268 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $builtins/fn - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 269 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $builtins/fn - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#toString - local.tee $1 - i32.const 160 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 270 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 4 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - i32.const 1 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 4 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 1 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - i32.const 3 - i32.const 3 - i32.eq - drop - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.ne - drop - f32.const nan:0x400000 - local.tee $4 - local.get $4 - f32.ne - drop - f64.const nan:0x8000000000000 - local.tee $5 - local.get $5 - f64.ne - drop - f32.const nan:0x400000 - local.tee $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - i32.eqz - drop - f32.const inf - local.tee $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - i32.eqz - drop - f64.const nan:0x8000000000000 - local.tee $5 - local.get $5 - f64.sub - f64.const 0 - f64.eq - i32.eqz - drop - f64.const inf - local.tee $5 - local.get $5 - f64.sub - f64.const 0 - f64.eq - i32.eqz - drop - f32.const 0 - local.tee $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - drop - f64.const 0 - local.tee $5 - local.get $5 - f64.sub - f64.const 0 - f64.eq - drop - global.get $~lib/builtins/i8.MIN_VALUE - i32.const 128 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - drop - global.get $~lib/builtins/i8.MAX_VALUE - i32.const 127 - i32.eq - drop - global.get $~lib/builtins/i16.MIN_VALUE - i32.const 32768 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - drop - global.get $~lib/builtins/i16.MAX_VALUE - i32.const 32767 - i32.eq - drop - global.get $~lib/builtins/i32.MIN_VALUE - i32.const -2147483648 - i32.eq - drop - global.get $~lib/builtins/i32.MAX_VALUE - i32.const 2147483647 - i32.eq - drop - global.get $~lib/builtins/i64.MIN_VALUE - i64.const -9223372036854775808 - i64.eq - drop - global.get $~lib/builtins/i64.MAX_VALUE - i64.const 9223372036854775807 - i64.eq - drop - global.get $~lib/builtins/u8.MIN_VALUE - i32.const 0 - i32.eq - drop - global.get $~lib/builtins/u8.MAX_VALUE - i32.const 255 - i32.eq - drop - global.get $~lib/builtins/u16.MIN_VALUE - i32.const 0 - i32.eq - drop - global.get $~lib/builtins/u16.MAX_VALUE - i32.const 65535 - i32.eq - drop - global.get $~lib/builtins/u32.MIN_VALUE - i32.const 0 - i32.eq - drop - global.get $~lib/builtins/u32.MAX_VALUE - i32.const -1 - i32.eq - drop - global.get $~lib/builtins/u64.MIN_VALUE - i64.const 0 - i64.eq - drop - global.get $~lib/builtins/u64.MAX_VALUE - i64.const -1 - i64.eq - drop - global.get $~lib/builtins/bool.MIN_VALUE - i32.const 0 - i32.eq - drop - global.get $~lib/builtins/bool.MIN_VALUE - i32.const 0 - i32.eq - drop - global.get $~lib/builtins/bool.MAX_VALUE - i32.const 1 - i32.eq - drop - global.get $~lib/builtins/bool.MAX_VALUE - i32.const 1 - i32.eq - drop - global.get $~lib/builtins/f32.MIN_NORMAL_VALUE - f32.const 1.1754943508222875e-38 - f32.eq - drop - global.get $~lib/builtins/f32.MIN_VALUE - f32.const 1.401298464324817e-45 - f32.eq - drop - global.get $~lib/builtins/f32.MAX_VALUE - f32.const 3402823466385288598117041e14 - f32.eq - drop - global.get $~lib/builtins/f32.MIN_SAFE_INTEGER - f32.const -16777215 - f32.eq - drop - global.get $~lib/builtins/f32.MAX_SAFE_INTEGER - f32.const 16777215 - f32.eq - drop - global.get $~lib/builtins/f32.EPSILON - f32.const 1.1920928955078125e-07 - f32.eq - drop - global.get $~lib/builtins/f64.MIN_NORMAL_VALUE - f64.const 2.2250738585072014e-308 - f64.eq - drop - global.get $~lib/builtins/f64.MIN_VALUE - f64.const 5e-324 - f64.eq - drop - global.get $~lib/builtins/f64.MAX_VALUE - f64.const 1797693134862315708145274e284 - f64.eq - drop - global.get $~lib/builtins/f64.MIN_SAFE_INTEGER - f64.const -9007199254740991 - f64.eq - drop - global.get $~lib/builtins/f64.MAX_SAFE_INTEGER - f64.const 9007199254740991 - f64.eq - drop - global.get $~lib/builtins/f64.EPSILON - f64.const 2.220446049250313e-16 - f64.eq - drop - f32.const 1 - f32.abs - drop - f64.const 1 - f64.abs - drop - f32.const 1 - f32.ceil - drop - f64.const 1 - f64.ceil - drop - i32.const 1 - i32.clz - drop - i64.const 1 - i64.clz - drop - f32.const 1 - f32.const 2 - f32.copysign - drop - f64.const 1 - f64.const 2 - f64.copysign - drop - i32.const 1 - i32.ctz - drop - i64.const 1 - i64.ctz - drop - f32.const 1 - f32.floor - drop - f64.const 1 - f64.floor - drop - f32.const 1 - f32.nearest - drop - f64.const 1 - f64.nearest - drop - i32.const 1 - i32.popcnt - drop - i64.const 1 - i64.popcnt - drop - i32.const 8 - i32.load8_s - drop - i32.const 8 - i32.load8_u - drop - i32.const 8 - i32.load16_s - drop - i32.const 8 - i32.load16_u - drop - i32.const 8 - i32.load - drop - i32.const 8 - i64.load8_s - drop - i32.const 8 - i64.load8_u - drop - i32.const 8 - i64.load16_s - drop - i32.const 8 - i64.load16_u - drop - i32.const 8 - i64.load32_s - drop - i32.const 8 - i64.load32_u - drop - i32.const 8 - i64.load - drop - i32.const 8 - f32.load - drop - i32.const 8 - f64.load - drop - f32.const 1 - f32.const 2 - f32.max - drop - f64.const 1 - f64.const 2 - f64.max - drop - f32.const 1 - f32.const 2 - f32.min - drop - f64.const 1 - f64.const 2 - f64.min - drop - f32.const 1 - i32.reinterpret_f32 - drop - f64.const 1 - i64.reinterpret_f64 - drop - i32.const 1 - f32.reinterpret_i32 - drop - i64.const 1 - f64.reinterpret_i64 - drop - i32.const 1 - i32.const 2 - i32.rotl - drop - i64.const 1 - i64.const 2 - i64.rotl - drop - i32.const 1 - i32.const 2 - i32.rotr - drop - i64.const 1 - i64.const 2 - i64.rotr - drop - f32.const 1 - f32.sqrt - drop - f64.const 1 - f64.sqrt - drop - i32.const 8 - i32.const 1 - i32.store8 - i32.const 8 - i32.const 1 - i32.store16 - i32.const 8 - i32.const 1 - i32.store - i32.const 8 - i64.const 1 - i64.store8 - i32.const 8 - i64.const 1 - i64.store16 - i32.const 8 - i64.const 1 - i64.store32 - i32.const 8 - i64.const 1 - i64.store - i32.const 8 - f32.const 1 - f32.store - i32.const 8 - f64.const 1 - f64.store - f32.const 1 - f32.trunc - drop - f64.const 1 - f64.trunc - drop - i32.const 0 - call $~lib/atomics/Atomics.isLockFree - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 432 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/atomics/Atomics.isLockFree - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 433 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/atomics/Atomics.isLockFree - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 434 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $~lib/atomics/Atomics.isLockFree - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 435 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $~lib/atomics/Atomics.isLockFree - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 436 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - call $~lib/atomics/Atomics.isLockFree - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 437 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - call $~lib/atomics/Atomics.isLockFree - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 438 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $6 - i32.const 0 - local.set $7 - i32.const 25 - local.set $8 - i32.const 26 - local.set $9 - i32.const 26 - local.set $10 - i32.const 240 - i32.const 5 - local.get $6 - f64.convert_i32_u - local.get $7 - f64.convert_i32_u - local.get $8 - f64.convert_i32_u - local.get $9 - f64.convert_i32_u - local.get $10 - f64.convert_i32_u - call $~lib/builtins/trace - local.get $6 - local.get $7 - i32.eq - i32.eqz - if - i32.const 288 - i32.const 80 - i32.const 448 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - local.get $8 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 449 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 25 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 450 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - local.get $10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 451 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 455 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 456 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 352 - i32.const 352 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 457 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 384 - i32.const 384 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 458 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 416 - i32.const 416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 459 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 448 - i32.const 448 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 460 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 480 - i32.const 480 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 512 - i32.const 512 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 462 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 544 - i32.const 544 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 576 - i32.const 576 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 464 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 608 - i32.const 608 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 465 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 640 - i32.const 640 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 466 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 672 - i32.const 672 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 467 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 704 - i32.const 704 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 468 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 736 - i32.const 736 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 469 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 768 - i32.const 768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 470 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 471 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 832 - i32.const 832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 472 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 384 - i32.const 384 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 473 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 474 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 1 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - i32.const 3 - i32.const 3 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $builtins/test - nop - ) - (func $~start - call $start:builtins - ) -) diff --git a/tests/compiler/call-inferred.debug.wat b/tests/compiler/call-inferred.debug.wat new file mode 100644 index 0000000000..1d07f41be0 --- /dev/null +++ b/tests/compiler/call-inferred.debug.wat @@ -0,0 +1,2678 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param f32) (result f32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param f64) (result f64))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 480)) + (global $~lib/memory/__data_end i32 (i32.const 512)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33280)) + (global $~lib/memory/__heap_base i32 (i32.const 33280)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $2 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 384) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 480) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $call-inferred/foo (param $a i32) (result i32) + local.get $a + return + ) + (func $call-inferred/foo (param $a f64) (result f64) + local.get $a + return + ) + (func $call-inferred/foo (param $a f32) (result f32) + local.get $a + return + ) + (func $call-inferred/bar (param $a f32) (result f32) + local.get $a + return + ) + (func $call-inferred/bar@varargs (param $a f32) (result f32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + f32.const 42 + local.set $a + end + local.get $a + call $call-inferred/bar + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 288 + i32.const 352 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 160 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 96 + i32.const 432 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 96 + i32.const 160 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $call-inferred/Foo#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $call-inferred/Foo#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $call-inferred/Foo.create (param $value i32) (result i32) + i32.const 0 + local.get $value + call $call-inferred/Foo#constructor + return + ) + (func $call-inferred/Bar#doSomething (param $this i32) (param $a i32) (result i32) + local.get $a + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 288 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 96 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $call-inferred/Baz + block $call-inferred/Bar + block $call-inferred/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-inferred/Foo $call-inferred/Bar $call-inferred/Baz $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:call-inferred + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33312 + i32.const 33360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $call-inferred/Foo#constructor (param $this i32) (param $value i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $value + call $call-inferred/Foo#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $call-inferred/Bar#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-inferred/Baz#constructor (param $this i32) (param $value i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $value + call $call-inferred/Foo#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $start:call-inferred + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 42 + call $call-inferred/foo + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 42 + call $call-inferred/foo + f64.const 42 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 42 + call $call-inferred/foo + f32.const 42 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $~argumentsLength + f32.const 0 + call $call-inferred/bar@varargs + f32.const 42 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 384 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 42 + call $call-inferred/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $call-inferred/Foo#get:value + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 42 + call $call-inferred/Foo.create + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $call-inferred/Foo#get:value + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $call-inferred/Bar#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 42 + call $call-inferred/Bar#doSomething + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 42 + call $call-inferred/Baz#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $call-inferred/Foo#get:value + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/call-inferred.json b/tests/compiler/call-inferred.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/call-inferred.json +++ b/tests/compiler/call-inferred.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/call-inferred.optimized.wat b/tests/compiler/call-inferred.optimized.wat deleted file mode 100644 index e17b0da466..0000000000 --- a/tests/compiler/call-inferred.optimized.wat +++ /dev/null @@ -1,5 +0,0 @@ -(module - (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s") - (export "memory" (memory $0)) -) diff --git a/tests/compiler/call-inferred.release.wat b/tests/compiler/call-inferred.release.wat new file mode 100644 index 0000000000..bbbd16397b --- /dev/null +++ b/tests/compiler/call-inferred.release.wat @@ -0,0 +1,1792 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34304)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1164) "<") + (data $2.1 (i32.const 1176) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1356) ",") + (data $6.1 (i32.const 1368) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1436) "<") + (data $8.1 (i32.const 1448) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1504) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1312 + call $~lib/rt/itcms/__visit + i32.const 1120 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1184 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$125 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34304 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$125 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1504 + i32.load + i32.gt_u + if + i32.const 1312 + i32.const 1376 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1456 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1456 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1456 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1456 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1456 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34304 + i32.const 0 + i32.store + i32.const 35872 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34304 + i32.const 35876 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34304 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34304 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1184 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34304 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34304 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1456 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1120 + i32.const 1184 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1120 + i32.const 1456 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1456 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1456 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $call-inferred/Baz + block $call-inferred/Bar + block $call-inferred/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-inferred/Foo $call-inferred/Bar $call-inferred/Baz $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34304 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/pinSpace + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/toSpace + i32.const 1412 + i32.const 1408 + i32.store + i32.const 1416 + i32.const 1408 + i32.store + i32.const 1408 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $call-inferred/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $call-inferred/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $call-inferred/Foo#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $call-inferred/Foo#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.lt_s + if + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 42 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/call-inferred.ts b/tests/compiler/call-inferred.ts index b0ec7e57b6..4c2dfb21bb 100644 --- a/tests/compiler/call-inferred.ts +++ b/tests/compiler/call-inferred.ts @@ -12,6 +12,27 @@ function bar(a: T = 42.0): T { assert(bar() == 42); +class Foo { + constructor(public value: T) {} + static create(value: T): Foo { + return new Foo(value); + } +} + +assert(new Foo(42).value == 42); +assert(Foo.create(42).value == 42); + +class Bar { + doSomething(a: T): T { + return a; + } +} + +assert(new Bar().doSomething(42) == 42); + +class Baz extends Foo {} +assert(new Baz(42).value == 42); + // TODO: this'd require return type inference, i.e., omitted return type // function baz(a: i32): T { // return a; diff --git a/tests/compiler/call-inferred.untouched.wat b/tests/compiler/call-inferred.untouched.wat deleted file mode 100644 index 3786633dfe..0000000000 --- a/tests/compiler/call-inferred.untouched.wat +++ /dev/null @@ -1,100 +0,0 @@ -(module - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00") - (table $0 1 funcref) - (global $~argumentsLength (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $call-inferred/foo (param $0 i32) (result i32) - local.get $0 - ) - (func $call-inferred/foo (param $0 f64) (result f64) - local.get $0 - ) - (func $call-inferred/foo (param $0 f32) (result f32) - local.get $0 - ) - (func $call-inferred/bar (param $0 f32) (result f32) - local.get $0 - ) - (func $call-inferred/bar@varargs (param $0 f32) (result f32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - f32.const 42 - local.set $0 - end - local.get $0 - call $call-inferred/bar - ) - (func $start:call-inferred - i32.const 42 - call $call-inferred/foo - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 42 - call $call-inferred/foo - f64.const 42 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 42 - call $call-inferred/foo - f32.const 42 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $~argumentsLength - f32.const 0 - call $call-inferred/bar@varargs - f32.const 42 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:call-inferred - ) -) diff --git a/tests/compiler/call-optional.debug.wat b/tests/compiler/call-optional.debug.wat new file mode 100644 index 0000000000..7a6794eba7 --- /dev/null +++ b/tests/compiler/call-optional.debug.wat @@ -0,0 +1,160 @@ +(module + (type $0 (func (param i32 i32 i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $call-optional/optIndirect (mut i32) (i32.const 96)) + (global $~lib/memory/__data_end i32 (i32.const 108)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32876)) + (global $~lib/memory/__heap_base i32 (i32.const 32876)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $call-optional/opt@varargs) + (export "memory" (memory $0)) + (start $~start) + (func $call-optional/opt (param $a i32) (param $b i32) (param $c i32) (result i32) + local.get $a + local.get $b + i32.add + local.get $c + i32.add + return + ) + (func $call-optional/opt@varargs (param $a i32) (param $b i32) (param $c i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const -1 + local.set $b + end + i32.const -2 + local.set $c + end + local.get $a + local.get $b + local.get $c + call $call-optional/opt + ) + (func $start:call-optional + i32.const 3 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $call-optional/opt@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 4 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $call-optional/opt@varargs + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 4 + i32.const 5 + call $call-optional/opt + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 0 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + global.get $call-optional/optIndirect + i32.load + call_indirect (type $0) + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 4 + i32.const 0 + i32.const 2 + global.set $~argumentsLength + global.get $call-optional/optIndirect + i32.load + call_indirect (type $0) + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 4 + i32.const 5 + i32.const 3 + global.set $~argumentsLength + global.get $call-optional/optIndirect + i32.load + call_indirect (type $0) + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:call-optional + ) +) diff --git a/tests/compiler/call-optional.json b/tests/compiler/call-optional.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/call-optional.json +++ b/tests/compiler/call-optional.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/call-optional.optimized.wat b/tests/compiler/call-optional.optimized.wat deleted file mode 100644 index fa906406bf..0000000000 --- a/tests/compiler/call-optional.optimized.wat +++ /dev/null @@ -1,145 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s") - (data (i32.const 1072) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (table $0 2 funcref) - (elem (i32.const 1) $call-optional/opt@varargs) - (global $~argumentsLength (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $call-optional/opt (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - local.get $0 - local.get $1 - i32.add - i32.add - ) - (func $call-optional/opt@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const -1 - local.set $1 - end - i32.const -2 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $call-optional/opt - ) - (func $start:call-optional - i32.const 1 - global.set $~argumentsLength - i32.const 3 - i32.const 0 - i32.const 0 - call $call-optional/opt@varargs - if - i32.const 0 - i32.const 1040 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - global.set $~argumentsLength - i32.const 3 - i32.const 4 - i32.const 0 - call $call-optional/opt@varargs - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 4 - i32.const 5 - call $call-optional/opt - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - i32.const 3 - i32.const 0 - i32.const 0 - i32.const 1088 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 0 - i32.const 1040 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - global.set $~argumentsLength - i32.const 3 - i32.const 4 - i32.const 0 - i32.const 1088 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - global.set $~argumentsLength - i32.const 3 - i32.const 4 - i32.const 5 - i32.const 1088 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:call-optional - ) -) diff --git a/tests/compiler/call-optional.release.wat b/tests/compiler/call-optional.release.wat new file mode 100644 index 0000000000..79b66938d4 --- /dev/null +++ b/tests/compiler/call-optional.release.wat @@ -0,0 +1,98 @@ +(module + (type $0 (func (param i32 i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~argumentsLength (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s") + (data $1 (i32.const 1100) "\1c") + (data $1.1 (i32.const 1112) "\04\00\00\00\08\00\00\00\01") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $call-optional/opt@varargs) + (export "memory" (memory $0)) + (start $~start) + (func $call-optional/opt@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const -1 + local.set $1 + end + i32.const -2 + local.set $2 + end + local.get $1 + i32.const 3 + i32.add + local.get $2 + i32.add + ) + (func $~start + i32.const 1 + global.set $~argumentsLength + i32.const 2 + global.set $~argumentsLength + i32.const 1 + global.set $~argumentsLength + i32.const 3 + i32.const 0 + i32.const 0 + i32.const 1120 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 1056 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + global.set $~argumentsLength + i32.const 3 + i32.const 4 + i32.const 0 + i32.const 1120 + i32.load + call_indirect (type $0) + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + global.set $~argumentsLength + i32.const 3 + i32.const 4 + i32.const 5 + i32.const 1120 + i32.load + call_indirect (type $0) + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/call-optional.untouched.wat b/tests/compiler/call-optional.untouched.wat deleted file mode 100644 index 7e7cf16788..0000000000 --- a/tests/compiler/call-optional.untouched.wat +++ /dev/null @@ -1,156 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s\00") - (data (i32.const 64) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (table $0 2 funcref) - (elem (i32.const 1) $call-optional/opt@varargs) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $call-optional/optIndirect (mut i32) (i32.const 80)) - (export "memory" (memory $0)) - (start $~start) - (func $call-optional/opt (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - local.get $1 - i32.add - local.get $2 - i32.add - ) - (func $call-optional/opt@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const -1 - local.set $1 - end - i32.const -2 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $call-optional/opt - ) - (func $start:call-optional - i32.const 3 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $call-optional/opt@varargs - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 4 - i32.const 2 - global.set $~argumentsLength - i32.const 0 - call $call-optional/opt@varargs - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 4 - i32.const 5 - call $call-optional/opt - i32.const 12 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 0 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - global.get $call-optional/optIndirect - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 4 - i32.const 0 - i32.const 2 - global.set $~argumentsLength - global.get $call-optional/optIndirect - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 4 - i32.const 5 - i32.const 3 - global.set $~argumentsLength - global.get $call-optional/optIndirect - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.const 12 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:call-optional - ) -) diff --git a/tests/compiler/call-rest-err.json b/tests/compiler/call-rest-err.json new file mode 100644 index 0000000000..6ba27c0d67 --- /dev/null +++ b/tests/compiler/call-rest-err.json @@ -0,0 +1,14 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS2322: Type '~lib/string/String' is not assignable to type 'i32'.", + "sum('a', 'b')", + "TS2322: Type '~lib/string/String' is not assignable to type 'i32'.", + "sum('a', 'b')", + "TS2322: Type '~lib/string/String' is not assignable to type 'i32'.", + "count(1, 'a')", + "TS1140: Type argument expected.", + "count()" + ] +} diff --git a/tests/compiler/call-rest-err.ts b/tests/compiler/call-rest-err.ts new file mode 100644 index 0000000000..8008ede2c9 --- /dev/null +++ b/tests/compiler/call-rest-err.ts @@ -0,0 +1,15 @@ +function sum(...args: i32[]): i32 { + let sum = 0; + for (let i = 0, k = args.length; i < k; ++i) { + sum += args[i]; + } + return sum; +} + +function count(...args: T[]): i32 { + return args.length; +} + +sum('a', 'b'); // expect a type mismatch error on each argument +count(1, 'a'); // expect a type mismatch error on the second argument +count(); // expect type inference error diff --git a/tests/compiler/call-rest.debug.wat b/tests/compiler/call-rest.debug.wat new file mode 100644 index 0000000000..6ff41f9bea --- /dev/null +++ b/tests/compiler/call-rest.debug.wat @@ -0,0 +1,4002 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32 i32) (result i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $call-rest/indirect (mut i32) (i32.const 624)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 1072)) + (global $~lib/memory/__data_end i32 (i32.const 1112)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33880)) + (global $~lib/memory/__heap_base i32 (i32.const 33880)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $2 (i32.const 124) "\1c\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") + (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00c\00a\00l\00l\00-\00r\00e\00s\00t\00.\00t\00s\00\00\00\00\00") + (data $11 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data $13 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data $16 (i32.const 700) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $17 (i32.const 748) "\1c\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") + (data $18 (i32.const 780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data $20 (i32.const 844) "\1c\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") + (data $21 (i32.const 876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $23 (i32.const 940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 1004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\c0\03\00\00\e0\03\00\00\00\04\00\00") + (data $27 (i32.const 1072) "\t\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\01\00\00\00\00\00\00\00\00\00\00\02A\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $call-rest/fn@varargs) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 240 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 176 + i32.const 448 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 176 + i32.const 240 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $call-rest/Foo#set:values (param $this i32) (param $values i32) + local.get $this + local.get $values + i32.store + local.get $this + local.get $values + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $call-rest/Foo#get:values (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 720 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 176 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>#__visit + ) + (func $call-rest/Foo~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array<~lib/string/String> + block $call-rest/Foo + block $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> $call-rest/Foo $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $call-rest/Foo~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + unreachable + ) + (func $~start + call $start:call-rest + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33904 + i32.const 33952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $call-rest/fn (param $a i32) (param $b i32) (param $rest i32) (result i32) + (local $sum i32) + (local $i i32) + (local $k i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.get $b + i32.add + local.set $sum + i32.const 0 + local.set $i + local.get $rest + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $sum + local.get $rest + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__get + i32.add + local.set $sum + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $sum + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $call-rest/fn@varargs (param $a i32) (param $b i32) (param $rest i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $b + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 5 + i32.const 144 + call $~lib/rt/__newArray + local.tee $rest + i32.store + end + local.get $a + local.get $b + local.get $rest + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $call-rest/fn + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 720 + i32.const 96 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 32 + i32.const 96 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 0 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $call-rest/Foo#constructor (param $this i32) (param $a i32) (param $b i32) (param $rest i32) (result i32) + (local $4 i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $call-rest/Foo#set:values + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=12 + local.get $4 + i32.const 0 + local.get $a + call $~lib/array/Array#__set + local.get $4 + i32.const 1 + local.get $b + call $~lib/array/Array#__set + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $call-rest/Foo#set:values + i32.const 0 + local.set $i + local.get $rest + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $call-rest/Foo#get:values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $rest + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + local.get $i + call $~lib/array/Array#__get + call $~lib/array/Array#push + drop + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (func $call-rest/Foo#constructor@varargs (param $this i32) (param $a i32) (param $b i32) (param $rest i32) (result i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $b + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 5 + i32.const 768 + call $~lib/rt/__newArray + local.tee $rest + i32.store + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $a + local.get $b + local.get $rest + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $call-rest/Foo#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $call-rest/Foo#sum (param $this i32) (result i32) + (local $sum i32) + (local $i i32) + (local $k i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + local.set $sum + i32.const 0 + local.set $i + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $call-rest/Foo#get:values + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $sum + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $call-rest/Foo#get:values + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + i32.add + local.set $sum + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $sum + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $call-rest/count (param $args i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $args + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $call-rest/count@varargs (param $args i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 5 + i32.const 864 + call $~lib/rt/__newArray + local.tee $args + i32.store + end + local.get $args + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $call-rest/count + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array<~lib/string/String>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<~lib/string/String>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $call-rest/count<~lib/string/String> (param $args i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $args + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $start:call-rest + (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 1 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $call-rest/fn@varargs + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $call-rest/fn@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 560 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $call-rest/fn + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 592 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $call-rest/fn + i32.const 15 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + global.get $call-rest/indirect + i32.load + call_indirect (type $3) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 0 + i32.const 2 + global.set $~argumentsLength + global.get $call-rest/indirect + i32.load + call_indirect (type $3) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 656 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 3 + global.set $~argumentsLength + global.get $call-rest/indirect + i32.load + call_indirect (type $3) + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 688 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 3 + global.set $~argumentsLength + global.get $call-rest/indirect + i32.load + call_indirect (type $3) + i32.const 15 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $call-rest/Foo#constructor@varargs + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $call-rest/Foo#sum + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $call-rest/Foo#constructor@varargs + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $call-rest/Foo#sum + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 800 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $call-rest/Foo#constructor + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $call-rest/Foo#sum + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 832 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $call-rest/Foo#constructor + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $call-rest/Foo#sum + i32.const 15 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $call-rest/count@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 49 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 896 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $call-rest/count + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 928 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $call-rest/count + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 8 + i32.const 1056 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $call-rest/count<~lib/string/String> + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) +) diff --git a/tests/compiler/call-rest.json b/tests/compiler/call-rest.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/call-rest.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/call-rest.release.wat b/tests/compiler/call-rest.release.wat new file mode 100644 index 0000000000..d1710e2690 --- /dev/null +++ b/tests/compiler/call-rest.release.wat @@ -0,0 +1,2964 @@ +(module + (type $0 (func (param i32 i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34904)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $1 (i32.const 1100) ",") + (data $1.1 (i32.const 1112) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $2 (i32.const 1148) "\1c") + (data $2.1 (i32.const 1160) "\01") + (data $3 (i32.const 1180) "<") + (data $3.1 (i32.const 1192) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1244) "<") + (data $4.1 (i32.const 1256) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1372) ",") + (data $7.1 (i32.const 1384) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $9 (i32.const 1452) "<") + (data $9.1 (i32.const 1464) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 1516) ",") + (data $10.1 (i32.const 1528) "\02\00\00\00\18\00\00\00c\00a\00l\00l\00-\00r\00e\00s\00t\00.\00t\00s") + (data $11 (i32.const 1564) "\1c") + (data $11.1 (i32.const 1576) "\01\00\00\00\04\00\00\00\03") + (data $12 (i32.const 1596) "\1c") + (data $12.1 (i32.const 1608) "\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") + (data $13 (i32.const 1628) "\1c") + (data $13.1 (i32.const 1640) "\06\00\00\00\08\00\00\00\01") + (data $14 (i32.const 1660) "\1c") + (data $14.1 (i32.const 1672) "\01\00\00\00\04\00\00\00\03") + (data $15 (i32.const 1692) "\1c") + (data $15.1 (i32.const 1704) "\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") + (data $16 (i32.const 1724) ",") + (data $16.1 (i32.const 1736) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $17 (i32.const 1772) "\1c") + (data $17.1 (i32.const 1784) "\01") + (data $18 (i32.const 1804) "\1c") + (data $18.1 (i32.const 1816) "\01\00\00\00\04\00\00\00\03") + (data $19 (i32.const 1836) "\1c") + (data $19.1 (i32.const 1848) "\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") + (data $20 (i32.const 1868) "\1c") + (data $20.1 (i32.const 1880) "\01") + (data $21 (i32.const 1900) "\1c") + (data $21.1 (i32.const 1912) "\01\00\00\00\04\00\00\00\01") + (data $22 (i32.const 1932) "\1c") + (data $22.1 (i32.const 1944) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $23 (i32.const 1964) "\1c") + (data $23.1 (i32.const 1976) "\02\00\00\00\02\00\00\00a") + (data $24 (i32.const 1996) "\1c") + (data $24.1 (i32.const 2008) "\02\00\00\00\02\00\00\00b") + (data $25 (i32.const 2028) "\1c") + (data $25.1 (i32.const 2040) "\02\00\00\00\02\00\00\00c") + (data $26 (i32.const 2060) "\1c") + (data $26.1 (i32.const 2072) "\01\00\00\00\0c\00\00\00\c0\07\00\00\e0\07\00\00\00\08") + (data $27 (i32.const 2096) "\t\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\01") + (data $27.1 (i32.const 2132) "\02A") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $call-rest/fn@varargs) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1744 + call $~lib/rt/itcms/__visit + i32.const 1200 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$160 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34904 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$160 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2096 + i32.load + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 2100 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1472 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34912 + i32.const 0 + i32.store + i32.const 36480 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34912 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34912 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34912 + i32.const 36484 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34912 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34904 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34904 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34904 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1472 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1200 + i32.const 1264 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1200 + i32.const 1472 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1472 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner0 + block $invalid + block $~lib/array/Array<~lib/string/String> + block $call-rest/Foo + block $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> $call-rest/Foo $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + end + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:call-rest + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-rest/fn (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $0 + i32.add + local.set $0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $call-rest/fn@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + i32.const 1168 + call $~lib/rt/__newArray + local.tee $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $1 + local.get $2 + call $call-rest/fn + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 1744 + i32.const 1120 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$154 + i32.const 1073741820 + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$154 + end + local.get $3 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $3 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1056 + i32.const 1120 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-rest/Foo#constructor (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=12 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + local.get $3 + i32.const 1 + local.get $0 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $2 + local.get $3 + i32.store + local.get $2 + local.get $3 + call $~lib/rt/itcms/__link + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array#get:length + local.set $7 + loop $for-loop|0 + local.get $0 + local.get $7 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $6 + i32.load offset=12 + local.tee $4 + i32.const 1 + i32.add + local.tee $5 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $call-rest/Foo#constructor@varargs (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + i32.const 1792 + call $~lib/rt/__newArray + local.tee $1 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $call-rest/Foo#constructor + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-rest/Foo#sum (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__get + local.get $2 + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $call-rest/count (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:call-rest + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 34904 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1316 + i32.const 1312 + i32.store + i32.const 1320 + i32.const 1312 + i32.store + i32.const 1312 + global.set $~lib/rt/itcms/pinSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/toSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/fromSpace + i32.const 1 + global.set $~argumentsLength + i32.const 1 + i32.const 0 + i32.const 0 + call $call-rest/fn@varargs + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + global.set $~argumentsLength + i32.const 1 + i32.const 2 + i32.const 0 + call $call-rest/fn@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4 + i32.const 1584 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 2 + local.get $0 + call $call-rest/fn + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 4 + i32.const 1616 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 2 + local.get $0 + call $call-rest/fn + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + i32.const 1 + i32.const 0 + i32.const 0 + i32.const 1648 + i32.load + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + global.set $~argumentsLength + i32.const 1 + i32.const 2 + i32.const 0 + i32.const 1648 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4 + i32.const 1680 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + i32.const 1 + i32.const 2 + local.get $0 + i32.const 1648 + i32.load + call_indirect (type $0) + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 4 + i32.const 1712 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + i32.const 1 + i32.const 2 + local.get $0 + i32.const 1648 + i32.load + call_indirect (type $0) + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $call-rest/Foo#constructor@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $call-rest/Foo#sum + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + global.set $~argumentsLength + i32.const 2 + call $call-rest/Foo#constructor@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $call-rest/Foo#sum + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4 + i32.const 1824 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 2 + local.get $0 + call $call-rest/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $call-rest/Foo#sum + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 4 + i32.const 1856 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 2 + local.get $0 + call $call-rest/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $call-rest/Foo#sum + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + i32.const 1888 + call $~lib/rt/__newArray + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $call-rest/count + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + if + i32.const 0 + i32.const 1536 + i32.const 49 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4 + i32.const 1920 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $call-rest/count + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 4 + i32.const 1952 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $call-rest/count + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 8 + i32.const 2080 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $call-rest/count + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $3 + local.get $2 + if + local.get $3 + local.get $2 + local.get $4 + memory.copy + end + local.get $3 + i32.store + i32.const 16 + local.get $1 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/call-rest.ts b/tests/compiler/call-rest.ts new file mode 100644 index 0000000000..bb0336a939 --- /dev/null +++ b/tests/compiler/call-rest.ts @@ -0,0 +1,54 @@ +// direct call test +function fn(a: i32, b: i32 = 0, ...rest: i32[]): i32 { + let sum = a + b; + for (let i = 0, k = rest.length; i < k; ++i) { + sum += rest[i]; + } + return sum; +} +assert(fn(1) == 1); +assert(fn(1, 2) == 3); +assert(fn(1, 2, 3) == 6); +assert(fn(1, 2, 3, 4, 5) == 15); + +// indirect call test +var indirect = fn; +assert(indirect(1) == 1); +assert(indirect(1, 2) == 3); +assert(indirect(1, 2, 3) == 6); +assert(indirect(1, 2, 3, 4, 5) == 15); + +// constructor test +class Foo{ + values: i32[]; + + constructor(a: i32, b: i32 = 0, ...rest: i32[]) { + this.values = [a, b]; + for (let i = 0, k = rest.length; i < k; ++i) { + this.values.push(rest[i]); + } + } + + sum(): i32 { + let sum = 0; + for (let i = 0, k = this.values.length; i < k; ++i) { + sum += this.values[i]; + } + return sum; + } +} +assert(new Foo(1).sum() == 1); +assert(new Foo(1, 2).sum() == 3); +assert(new Foo(1, 2, 3).sum() == 6); +assert(new Foo(1, 2, 3, 4, 5).sum() == 15); + +// generic test +function count(...args: T[]): i32 { + return args.length; +} +assert(count() == 0); +assert(count(1) == 1); +assert(count(1, 2, 3) == 3); + +// inferred generic test +assert(count('a','b','c') == 3); diff --git a/tests/compiler/call-super.debug.wat b/tests/compiler/call-super.debug.wat new file mode 100644 index 0000000000..9e413d5a8e --- /dev/null +++ b/tests/compiler/call-super.debug.wat @@ -0,0 +1,3305 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 464)) + (global $~lib/memory/__data_end i32 (i32.const 524)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33292)) + (global $~lib/memory/__heap_base i32 (i32.const 33292)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\00\00\00") + (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 464) "\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 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $call-super/A#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 272 + i32.const 336 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 144 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 80 + i32.const 416 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 80 + i32.const 144 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $call-super/A#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $call-super/B#get:b (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $call-super/B#set:b (param $this i32) (param $b i32) + local.get $this + local.get $b + i32.store offset=4 + ) + (func $call-super/C#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $call-super/C#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $call-super/D#get:b (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $call-super/D#set:b (param $this i32) (param $b i32) + local.get $this + local.get $b + i32.store offset=4 + ) + (func $call-super/E#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $call-super/E#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $call-super/F#set:b (param $this i32) (param $b i32) + local.get $this + local.get $b + i32.store offset=4 + ) + (func $call-super/F#get:b (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $call-super/G#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $call-super/H#set:b (param $this i32) (param $b i32) + local.get $this + local.get $b + i32.store offset=4 + ) + (func $call-super/G#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $call-super/H#get:b (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $call-super/I#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $call-super/J#set:b (param $this i32) (param $b i32) + local.get $this + local.get $b + i32.store offset=4 + ) + (func $call-super/I#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $call-super/J#get:b (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $start:call-super + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 192 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $call-super/test1 + call $call-super/test2 + call $call-super/test3 + call $call-super/test4 + call $call-super/test5 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 272 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 80 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $call-super/I + block $call-super/J + block $call-super/G + block $call-super/H + block $call-super/E + block $call-super/F + block $call-super/C + block $call-super/D + block $call-super/A + block $call-super/B + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-super/B $call-super/A $call-super/D $call-super/C $call-super/F $call-super/E $call-super/H $call-super/G $call-super/J $call-super/I $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:call-super + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33312 + i32.const 33360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $call-super/A#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $call-super/A#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/A#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-super/B#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $call-super/B#set:b + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/A#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/A#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/B#get:b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-super/test1 + (local $b i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $call-super/B#constructor + local.tee $b + i32.store + local.get $b + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/A#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $b + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/B#get:b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-super/C#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $call-super/C#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-super/D#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $call-super/D#set:b + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/C#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/C#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 38 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/D#get:b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-super/test2 + (local $d i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $call-super/D#constructor + local.tee $d + i32.store + local.get $d + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/C#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $d + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/D#get:b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-super/E#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $call-super/E#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/E#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 56 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-super/F#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/E#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $call-super/F#set:b + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-super/test3 + (local $f i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $call-super/F#constructor + local.tee $f + i32.store + local.get $f + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/E#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $f + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/F#get:b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-super/G#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $call-super/G#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-super/H#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/G#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $call-super/H#set:b + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-super/test4 + (local $h i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $call-super/H#constructor + local.tee $h + i32.store + local.get $h + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/G#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $h + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/H#get:b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-super/I#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $call-super/I#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-super/J#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/I#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $call-super/J#set:b + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-super/test5 + (local $h i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $call-super/J#constructor + local.tee $h + i32.store + local.get $h + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/I#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $h + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/J#get:b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/call-super.json b/tests/compiler/call-super.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/call-super.json +++ b/tests/compiler/call-super.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat deleted file mode 100644 index 1013cc11c3..0000000000 --- a/tests/compiler/call-super.optimized.wat +++ /dev/null @@ -1,377 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $5 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~start - (local $0 i32) - i32.const 1072 - global.set $~lib/rt/stub/offset - i32.const 8 - i32.const 3 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 2 - i32.store offset=4 - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 5 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 2 - i32.store offset=4 - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 6 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 38 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 7 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.eqz - if - i32.const 4 - i32.const 8 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 56 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.store offset=4 - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 9 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.eqz - if - i32.const 4 - i32.const 10 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 11 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.eqz - if - i32.const 4 - i32.const 12 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/call-super.release.wat b/tests/compiler/call-super.release.wat new file mode 100644 index 0000000000..0c67fa96d2 --- /dev/null +++ b/tests/compiler/call-super.release.wat @@ -0,0 +1,2327 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34316)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s") + (data $1 (i32.const 1084) "<") + (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1148) "<") + (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1276) "<") + (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1340) ",") + (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1420) "<") + (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1488) "\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 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$158 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34316 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$158 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34320 + i32.const 0 + i32.store + i32.const 35888 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34320 + i32.const 35892 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34320 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34316 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34316 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34316 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1104 + i32.const 1168 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1104 + i32.const 1440 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1440 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $start:call-super + (local $0 i32) + (local $1 i32) + (local $2 i32) + memory.size + i32.const 16 + i32.shl + i32.const 34316 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 38 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 56 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $call-super/I + block $call-super/J + block $call-super/G + block $call-super/H + block $call-super/E + block $call-super/F + block $call-super/C + block $call-super/D + block $call-super/A + block $call-super/B + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-super/B $call-super/A $call-super/D $call-super/C $call-super/F $call-super/E $call-super/H $call-super/G $call-super/J $call-super/I $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:call-super + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + if + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat deleted file mode 100644 index ebf78de487..0000000000 --- a/tests/compiler/call-super.untouched.wat +++ /dev/null @@ -1,564 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 60)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $call-super/A#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - ) - (func $call-super/B#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 2 - i32.store offset=4 - local.get $0 - call $call-super/A#constructor - local.set $0 - local.get $0 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $call-super/test1 - (local $0 i32) - i32.const 0 - call $call-super/B#constructor - local.set $0 - local.get $0 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $call-super/C#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 6 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - ) - (func $call-super/D#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 2 - i32.store offset=4 - local.get $0 - call $call-super/C#constructor - local.set $0 - local.get $0 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 38 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - ) - (func $call-super/test2 - (local $0 i32) - i32.const 0 - call $call-super/D#constructor - local.set $0 - local.get $0 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $call-super/E#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 8 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 56 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - ) - (func $call-super/F#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 7 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $call-super/E#constructor - local.set $0 - local.get $0 - i32.const 2 - i32.store offset=4 - local.get $0 - ) - (func $call-super/test3 - (local $0 i32) - i32.const 0 - call $call-super/F#constructor - local.set $0 - local.get $0 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $call-super/G#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 10 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - ) - (func $call-super/H#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 9 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $call-super/G#constructor - local.set $0 - local.get $0 - i32.const 2 - i32.store offset=4 - local.get $0 - ) - (func $call-super/test4 - (local $0 i32) - i32.const 0 - call $call-super/H#constructor - local.set $0 - local.get $0 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $call-super/I#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 12 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - ) - (func $call-super/J#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 11 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $call-super/I#constructor - local.set $0 - local.get $0 - i32.const 2 - i32.store offset=4 - local.get $0 - ) - (func $call-super/test5 - (local $0 i32) - i32.const 0 - call $call-super/J#constructor - local.set $0 - local.get $0 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $start:call-super - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - call $call-super/test1 - call $call-super/test2 - call $call-super/test3 - call $call-super/test4 - call $call-super/test5 - ) - (func $~start - call $start:call-super - ) -) diff --git a/tests/compiler/cast.debug.wat b/tests/compiler/cast.debug.wat new file mode 100644 index 0000000000..3a7ae38bce --- /dev/null +++ b/tests/compiler/cast.debug.wat @@ -0,0 +1,906 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32) (result i64))) + (type $2 (func (param i64) (result i32))) + (type $3 (func (param i64) (result i64))) + (type $4 (func)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.extend8_s + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.extend8_s + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.extend8_s + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.extend8_s + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i32.extend8_s + i64.extend_i32_s + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i32.extend8_s + i64.extend_i32_s + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.const 255 + i32.and + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.const 255 + i32.and + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.const 255 + i32.and + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.const 255 + i32.and + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i32.const 255 + i32.and + i64.extend_i32_u + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i32.const 255 + i32.and + i64.extend_i32_u + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.extend16_s + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.extend16_s + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i32.extend16_s + i64.extend_i32_s + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i32.extend16_s + i64.extend_i32_s + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.const 65535 + i32.and + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.const 65535 + i32.and + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i32.const 65535 + i32.and + i64.extend_i32_u + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i32.const 65535 + i32.and + i64.extend_i32_u + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i64.extend_i32_s + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i64.extend_i32_s + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i64.extend_i32_u + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i64.extend_i32_u + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i32.wrap_i64 + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i32.wrap_i64 + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i32.wrap_i64 + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i32.wrap_i64 + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i32.wrap_i64 + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i32.wrap_i64 + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i64) + (local $y i64) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i64) + (local $y i64) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i64.const 0 + i64.ne + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i32.wrap_i64 + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i32.wrap_i64 + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i32.wrap_i64 + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i32.wrap_i64 + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i32.wrap_i64 + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i32.wrap_i64 + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i64) + (local $y i64) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i64) + (local $y i64) + local.get $x + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i64) (result i32) + (local $y i32) + local.get $x + i64.const 0 + i64.ne + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.const 0 + i32.ne + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.const 0 + i32.ne + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.const 0 + i32.ne + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.const 0 + i32.ne + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.const 0 + i32.ne + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + i32.const 0 + i32.ne + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i32.const 0 + i32.ne + i64.extend_i32_u + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i64) + (local $y i64) + local.get $x + i32.const 0 + i32.ne + i64.extend_i32_u + local.set $y + local.get $y + return + ) + (func $"cast/test" (param $x i32) (result i32) + (local $y i32) + local.get $x + local.set $y + local.get $y + return + ) + (func $start:cast + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i64.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + i32.const 0 + call $"cast/test" + drop + ) + (func $~start + call $start:cast + ) +) diff --git a/tests/compiler/cast.json b/tests/compiler/cast.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/cast.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/empty.optimized.wat b/tests/compiler/cast.release.wat similarity index 100% rename from tests/compiler/empty.optimized.wat rename to tests/compiler/cast.release.wat diff --git a/tests/compiler/cast.ts b/tests/compiler/cast.ts new file mode 100644 index 0000000000..cd81a6dac2 --- /dev/null +++ b/tests/compiler/cast.ts @@ -0,0 +1,96 @@ +function test(x: T): U { + // @ts-ignore + var y = x as U; + // @ts-ignore + return y; +} + +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); + +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); + +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); + +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); + +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); + +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); + +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); + +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); + +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); +test(0); diff --git a/tests/compiler/class-abstract-errors.json b/tests/compiler/class-abstract-errors.json index 348da60657..5482cd9174 100644 --- a/tests/compiler/class-abstract-errors.json +++ b/tests/compiler/class-abstract-errors.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "TS2511: Cannot create an instance of an abstract class.", @@ -8,4 +7,4 @@ "TS2515: Non-abstract class 'class-abstract-errors/Baz' does not implement inherited abstract member 'a'", "EOF" ] -} \ No newline at end of file +} diff --git a/tests/compiler/class-errors.json b/tests/compiler/class-errors.json new file mode 100644 index 0000000000..d852107478 --- /dev/null +++ b/tests/compiler/class-errors.json @@ -0,0 +1,9 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS2304: Cannot find name 'T'.", + "TS2339: Property 'v' does not exist on type 'class-errors/A'.", + "EOF" + ] +} diff --git a/tests/compiler/class-errors.ts b/tests/compiler/class-errors.ts new file mode 100644 index 0000000000..ff71b03088 --- /dev/null +++ b/tests/compiler/class-errors.ts @@ -0,0 +1,7 @@ +class A { + v: T; +} + +new A().v; + +ERROR("EOF"); diff --git a/tests/compiler/class-extends-itself.json b/tests/compiler/class-extends-itself.json new file mode 100644 index 0000000000..088643f147 --- /dev/null +++ b/tests/compiler/class-extends-itself.json @@ -0,0 +1,7 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS2506: 'Foo' is referenced directly or indirectly in its own base expression." + ] +} diff --git a/tests/compiler/class-extends-itself.ts b/tests/compiler/class-extends-itself.ts new file mode 100644 index 0000000000..5dee8053d1 --- /dev/null +++ b/tests/compiler/class-extends-itself.ts @@ -0,0 +1,3 @@ +class Foo extends Foo { + bar(): void {} +} \ No newline at end of file diff --git a/tests/compiler/class-extends.debug.wat b/tests/compiler/class-extends.debug.wat new file mode 100644 index 0000000000..db6c27269e --- /dev/null +++ b/tests/compiler/class-extends.debug.wat @@ -0,0 +1,110 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32 i32 i32))) + (type $4 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "test" (func $export:class-extends/test)) + (func $class-extends/A#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $class-extends/B#get:b (param $this i32) (result i32) + local.get $this + i32.load16_s offset=4 + ) + (func $class-extends/A#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $class-extends/B#set:b (param $this i32) (param $b i32) + local.get $this + local.get $b + i32.store16 offset=4 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 32800 + i32.const 32848 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $class-extends/test (param $b i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $b + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-extends/A#get:a + drop + local.get $b + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-extends/B#get:b + drop + local.get $b + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + call $class-extends/A#set:a + local.get $b + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 3 + call $class-extends/B#set:b + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:class-extends/test (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-extends/test + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/class-extends.json b/tests/compiler/class-extends.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/class-extends.json +++ b/tests/compiler/class-extends.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/class-extends.optimized.wat b/tests/compiler/class-extends.optimized.wat deleted file mode 100644 index 353e0ea51c..0000000000 --- a/tests/compiler/class-extends.optimized.wat +++ /dev/null @@ -1,20 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (memory $0 0) - (export "memory" (memory $0)) - (export "test" (func $class-extends/test)) - (func $class-extends/test (param $0 i32) - local.get $0 - i32.load - drop - local.get $0 - i32.load16_s offset=4 - drop - local.get $0 - i32.const 2 - i32.store - local.get $0 - i32.const 3 - i32.store16 offset=4 - ) -) diff --git a/tests/compiler/class-extends.release.wat b/tests/compiler/class-extends.release.wat new file mode 100644 index 0000000000..5ff350f382 --- /dev/null +++ b/tests/compiler/class-extends.release.wat @@ -0,0 +1,74 @@ +(module + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33792)) + (memory $0 0) + (export "memory" (memory $0)) + (export "test" (func $export:class-extends/test)) + (func $export:class-extends/test (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load16_s offset=4 + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + i32.store16 offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/class-extends.untouched.wat b/tests/compiler/class-extends.untouched.wat deleted file mode 100644 index 4fb41d98ce..0000000000 --- a/tests/compiler/class-extends.untouched.wat +++ /dev/null @@ -1,33 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "test" (func $class-extends/test)) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $class-extends/test (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.load - drop - local.get $0 - i32.load16_s offset=4 - drop - local.get $0 - i32.const 2 - i32.store - local.get $0 - i32.const 3 - i32.store16 offset=4 - local.get $0 - call $~lib/rt/stub/__release - ) -) diff --git a/tests/compiler/class-implements.debug.wat b/tests/compiler/class-implements.debug.wat new file mode 100644 index 0000000000..a7eac9aaaf --- /dev/null +++ b/tests/compiler/class-implements.debug.wat @@ -0,0 +1,4230 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $class-implements/a (mut i32) (i32.const 0)) + (global $class-implements/c (mut i32) (i32.const 0)) + (global $class-implements/d (mut i32) (i32.const 0)) + (global $class-implements/e (mut i32) (i32.const 0)) + (global $class-implements/f (mut i32) (i32.const 0)) + (global $class-implements/g (mut i32) (i32.const 0)) + (global $class-implements/h (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 480)) + (global $~lib/memory/__data_end i32 (i32.const 568)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33336)) + (global $~lib/memory/__heap_base i32 (i32.const 33336)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00c\00l\00a\00s\00s\00-\00i\00m\00p\00l\00e\00m\00e\00n\00t\00s\00.\00t\00s\00\00\00\00\00\00\00") + (data $9 (i32.const 480) "\15\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $class-implements/A#foo (param $this i32) (result i32) + i32.const 1 + return + ) + (func $class-implements/C#foo (param $this i32) (result i32) + i32.const 2 + return + ) + (func $class-implements/D#foo (param $this i32) (result i32) + i32.const 3 + return + ) + (func $class-implements/F#foo (param $this i32) (result i32) + i32.const 4 + return + ) + (func $class-implements/I#foo (param $this i32) (result i32) + unreachable + ) + (func $class-implements/J#foo (param $this i32) (result i32) + unreachable + ) + (func $class-implements/A2#set:foo (param $this i32) (param $foo i32) + local.get $this + local.get $foo + i32.store + ) + (func $class-implements/A2#get:foo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $class-implements/I2#get:foo (param $this i32) (result i32) + unreachable + ) + (func $class-implements/I2#set:foo (param $this i32) (param $foo i32) + unreachable + ) + (func $class-implements/A3#set:foo (param $this i32) (param $foo i32) + local.get $this + local.get $foo + i32.store + ) + (func $class-implements/A3#get:foo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $class-implements/A4#set:foo (param $this i32) (param $foo i32) + local.get $this + local.get $foo + i32.store + ) + (func $class-implements/A4#get:foo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $class-implements/B2#set:_foo (param $this i32) (param $_foo i32) + local.get $this + local.get $_foo + i32.store + ) + (func $class-implements/B2#get:_foo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $class-implements/B3#set:_foo2 (param $this i32) (param $_foo2 i32) + local.get $this + local.get $_foo2 + i32.store offset=4 + ) + (func $class-implements/B3#get:_foo2 (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $class-implements/B4#set:_foo2 (param $this i32) (param $_foo2 i32) + local.get $this + local.get $_foo2 + i32.store offset=4 + ) + (func $class-implements/B4#get:_foo2 (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $class-implements/K#foo (param $this i32) (result i32) + unreachable + ) + (func $class-implements/G#foo (param $this i32) (result i32) + i32.const 1 + return + ) + (func $class-implements/D#foo@override (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 11 + i32.eq + br_if $case0 + br $default + end + local.get $0 + call $class-implements/F#foo + return + end + local.get $0 + call $class-implements/D#foo + ) + (func $class-implements/I#foo@override (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case3 + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 11 + i32.eq + br_if $case0 + local.get $1 + i32.const 4 + i32.eq + br_if $case1 + local.get $1 + i32.const 6 + i32.eq + br_if $case2 + local.get $1 + i32.const 8 + i32.eq + br_if $case3 + local.get $1 + i32.const 10 + i32.eq + br_if $case3 + br $default + end + local.get $0 + call $class-implements/F#foo + return + end + local.get $0 + call $class-implements/A#foo + return + end + local.get $0 + call $class-implements/C#foo + return + end + local.get $0 + call $class-implements/D#foo + return + end + unreachable + ) + (func $class-implements/J#foo@override (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case3 + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 13 + i32.eq + br_if $case0 + local.get $1 + i32.const 11 + i32.eq + br_if $case1 + local.get $1 + i32.const 8 + i32.eq + br_if $case2 + local.get $1 + i32.const 10 + i32.eq + br_if $case2 + local.get $1 + i32.const 12 + i32.eq + br_if $case3 + br $default + end + local.get $0 + call $class-implements/K#foo + return + end + local.get $0 + call $class-implements/F#foo + return + end + local.get $0 + call $class-implements/D#foo + return + end + local.get $0 + call $class-implements/G#foo + return + end + unreachable + ) + (func $class-implements/I2#get:foo@override (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case5 + block $case4 + block $case3 + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 16 + i32.eq + br_if $case0 + local.get $1 + i32.const 17 + i32.eq + br_if $case1 + local.get $1 + i32.const 19 + i32.eq + br_if $case2 + local.get $1 + i32.const 20 + i32.eq + br_if $case3 + local.get $1 + i32.const 14 + i32.eq + br_if $case4 + local.get $1 + i32.const 18 + i32.eq + br_if $case5 + br $default + end + local.get $0 + call $class-implements/A3#get:foo + return + end + local.get $0 + call $class-implements/A4#get:foo + return + end + local.get $0 + call $class-implements/B3#get:foo + return + end + local.get $0 + call $class-implements/B4#get:foo + return + end + local.get $0 + call $class-implements/A2#get:foo + return + end + local.get $0 + call $class-implements/B2#get:foo + return + end + unreachable + ) + (func $class-implements/I2#set:foo@override (param $0 i32) (param $1 i32) + (local $2 i32) + block $default + block $case5 + block $case4 + block $case3 + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $2 + local.get $2 + i32.const 16 + i32.eq + br_if $case0 + local.get $2 + i32.const 17 + i32.eq + br_if $case1 + local.get $2 + i32.const 19 + i32.eq + br_if $case2 + local.get $2 + i32.const 20 + i32.eq + br_if $case3 + local.get $2 + i32.const 14 + i32.eq + br_if $case4 + local.get $2 + i32.const 18 + i32.eq + br_if $case5 + br $default + end + local.get $0 + local.get $1 + call $class-implements/A3#set:foo + return + end + local.get $0 + local.get $1 + call $class-implements/A4#set:foo + return + end + local.get $0 + local.get $1 + call $class-implements/B3#set:foo + return + end + local.get $0 + local.get $1 + call $class-implements/B4#set:foo + return + end + local.get $0 + local.get $1 + call $class-implements/A2#set:foo + return + end + local.get $0 + local.get $1 + call $class-implements/B2#set:foo + return + end + unreachable + ) + (func $class-implements/B2#get:foo@override (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 19 + i32.eq + br_if $case0 + local.get $1 + i32.const 20 + i32.eq + br_if $case1 + br $default + end + local.get $0 + call $class-implements/B3#get:foo + return + end + local.get $0 + call $class-implements/B4#get:foo + return + end + local.get $0 + call $class-implements/B2#get:foo + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $class-implements/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/d + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/e + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/f + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/g + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/h + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $class-implements/B4 + block $class-implements/B3 + block $class-implements/B2 + block $class-implements/A4 + block $class-implements/A3 + block $class-implements/I2 + block $class-implements/A2 + block $class-implements/K + block $class-implements/G + block $class-implements/F + block $class-implements/E + block $class-implements/J + block $class-implements/D + block $class-implements/B + block $class-implements/C + block $class-implements/I + block $class-implements/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $class-implements/D $class-implements/J $class-implements/E $class-implements/F $class-implements/G $class-implements/K $class-implements/A2 $class-implements/I2 $class-implements/A3 $class-implements/A4 $class-implements/B2 $class-implements/B3 $class-implements/B4 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:class-implements + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33360 + i32.const 33408 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $class-implements/A#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/B#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/C#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-implements/B#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/D#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/E#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-implements/D#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/F#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-implements/D#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/G#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/A2#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $class-implements/A2#set:foo + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/A3#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-implements/A2#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5 + call $class-implements/A3#set:foo + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/A4#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-implements/A2#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7 + call $class-implements/A4#set:foo + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/B2#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + call $class-implements/B2#set:_foo + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/B2#get:foo (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/B2#get:_foo + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $class-implements/B3#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-implements/B2#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9 + call $class-implements/B3#set:_foo2 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/B3#get:foo (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/B3#get:_foo2 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $class-implements/B4#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-implements/B2#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 11 + call $class-implements/B4#set:_foo2 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-implements/B4#get:foo (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/B4#get:_foo2 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $start:class-implements + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $class-implements/A#constructor + global.set $class-implements/a + global.get $class-implements/a + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/A#foo + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-implements/C#constructor + global.set $class-implements/c + global.get $class-implements/c + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/C#foo + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-implements/D#constructor + global.set $class-implements/d + global.get $class-implements/d + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/D#foo@override + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-implements/E#constructor + global.set $class-implements/e + global.get $class-implements/e + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/D#foo@override + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-implements/F#constructor + global.set $class-implements/f + global.get $class-implements/f + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/F#foo + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-implements/F#constructor + global.set $class-implements/g + global.get $class-implements/g + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/D#foo@override + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-implements/F#constructor + global.set $class-implements/h + global.get $class-implements/h + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/I#foo@override + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-implements/G#constructor + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/J#foo@override + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $class-implements/A2#constructor + local.tee $0 + i32.store offset=4 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/A2#get:foo + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/I2#get:foo@override + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2 + call $class-implements/I2#set:foo@override + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/A2#get:foo + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 100 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/I2#get:foo@override + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 101 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $class-implements/A3#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/A3#get:foo + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/I2#get:foo@override + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 6 + call $class-implements/I2#set:foo@override + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/A3#get:foo + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/I2#get:foo@override + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $class-implements/A4#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/A4#get:foo + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/I2#get:foo@override + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 8 + call $class-implements/I2#set:foo@override + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/A4#get:foo + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/I2#get:foo@override + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $class-implements/B2#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/B2#get:foo@override + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 121 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/I2#get:foo@override + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 4 + call $class-implements/I2#set:foo@override + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/B2#get:foo@override + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/I2#get:foo@override + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 125 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $class-implements/B3#constructor + local.tee $4 + i32.store offset=20 + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/B3#get:foo + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/I2#get:foo@override + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 130 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 10 + call $class-implements/I2#set:foo@override + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/B3#get:foo + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 132 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/I2#get:foo@override + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 133 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $class-implements/B4#constructor + local.tee $5 + i32.store offset=24 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/B4#get:foo + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 137 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/I2#get:foo@override + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 12 + call $class-implements/I2#set:foo@override + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/B4#get:foo + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 140 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $class-implements/I2#get:foo@override + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 141 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $class-implements/B3#set:foo (param $this i32) (param $foo i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $foo + call $class-implements/B3#set:_foo2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $class-implements/B4#set:foo (param $this i32) (param $foo i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $foo + call $class-implements/B4#set:_foo2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $class-implements/B2#set:foo (param $this i32) (param $foo i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $foo + call $class-implements/B2#set:_foo + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/class-implements.json b/tests/compiler/class-implements.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/class-implements.json +++ b/tests/compiler/class-implements.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/class-implements.optimized.wat b/tests/compiler/class-implements.optimized.wat deleted file mode 100644 index 28eafbd5a4..0000000000 --- a/tests/compiler/class-implements.optimized.wat +++ /dev/null @@ -1,112 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (memory $0 1) - (data (i32.const 1024) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00c\00l\00a\00s\00s\00-\00i\00m\00p\00l\00e\00m\00e\00n\00t\00s\00.\00t\00s") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $class-implements/A i32 (i32.const 3)) - (global $class-implements/C i32 (i32.const 5)) - (export "memory" (memory $0)) - (export "A" (global $class-implements/A)) - (export "A#foo" (func $class-implements/A#foo)) - (export "A#constructor" (func $class-implements/A#constructor)) - (export "C" (global $class-implements/C)) - (export "C#foo" (func $class-implements/C#foo)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - i32.const 16 - i32.add - local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $4 - local.get $1 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $4 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $1 - global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 - i32.sub - local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $3 - ) - (func $class-implements/A#constructor (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 3 - call $~lib/rt/stub/__alloc - end - ) - (func $class-implements/A#foo (param $0 i32) (result i32) - i32.const 1 - ) - (func $class-implements/C#foo (param $0 i32) (result i32) - i32.const 2 - ) - (func $~start - i32.const 1088 - global.set $~lib/rt/stub/offset - i32.const 0 - call $class-implements/A#constructor - drop - i32.const 5 - call $~lib/rt/stub/__alloc - i32.eqz - if - i32.const 6 - call $~lib/rt/stub/__alloc - drop - end - ) -) diff --git a/tests/compiler/class-implements.release.wat b/tests/compiler/class-implements.release.wat new file mode 100644 index 0000000000..405b45c818 --- /dev/null +++ b/tests/compiler/class-implements.release.wat @@ -0,0 +1,3044 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $class-implements/a (mut i32) (i32.const 0)) + (global $class-implements/c (mut i32) (i32.const 0)) + (global $class-implements/d (mut i32) (i32.const 0)) + (global $class-implements/e (mut i32) (i32.const 0)) + (global $class-implements/f (mut i32) (i32.const 0)) + (global $class-implements/g (mut i32) (i32.const 0)) + (global $class-implements/h (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34360)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "<") + (data $8.1 (i32.const 1448) "\02\00\00\00&\00\00\00c\00l\00a\00s\00s\00-\00i\00m\00p\00l\00e\00m\00e\00n\00t\00s\00.\00t\00s") + (data $9 (i32.const 1504) "\15\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $class-implements/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/d + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/e + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/f + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/g + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/h + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$174 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34360 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$174 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1504 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34368 + i32.const 0 + i32.store + i32.const 35936 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34368 + i32.const 35940 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34368 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34360 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34360 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34360 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $class-implements/I2#get:foo@override (param $0 i32) (result i32) + block $default + block $case5 + block $case4 + block $case3 + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.sub + br_table $case4 $default $case0 $case1 $case5 $case2 $case3 $default + end + local.get $0 + i32.load + return + end + local.get $0 + i32.load + return + end + local.get $0 + call $class-implements/B3#get:foo + return + end + local.get $0 + call $class-implements/B3#get:foo + return + end + local.get $0 + i32.load + return + end + local.get $0 + call $class-implements/B2#get:foo + return + end + unreachable + ) + (func $class-implements/I2#set:foo@override (param $0 i32) (param $1 i32) + block $folding-inner0 + block $default + block $case5 + block $case3 + block $case2 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.sub + br_table $folding-inner0 $default $folding-inner0 $folding-inner0 $case5 $case2 $case3 $default + end + local.get $0 + local.get $1 + call $class-implements/B3#set:foo + return + end + local.get $0 + local.get $1 + call $class-implements/B3#set:foo + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + end + local.get $0 + local.get $1 + i32.store + ) + (func $class-implements/B2#get:foo@override (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case1 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $1 + i32.const 19 + i32.ne + if + local.get $1 + i32.const 20 + i32.eq + br_if $case1 + br $default + end + local.get $0 + call $class-implements/B3#get:foo + return + end + local.get $0 + call $class-implements/B3#get:foo + return + end + local.get $0 + call $class-implements/B2#get:foo + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-implements/B4 + block $class-implements/B3 + block $class-implements/B2 + block $class-implements/A4 + block $class-implements/A3 + block $class-implements/I2 + block $class-implements/A2 + block $class-implements/K + block $class-implements/G + block $class-implements/F + block $class-implements/E + block $class-implements/J + block $class-implements/D + block $class-implements/B + block $class-implements/C + block $class-implements/I + block $class-implements/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $class-implements/D $class-implements/J $class-implements/E $class-implements/F $class-implements/G $class-implements/K $class-implements/A2 $class-implements/I2 $class-implements/A3 $class-implements/A4 $class-implements/B2 $class-implements/B3 $class-implements/B4 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:class-implements + ) + (func $class-implements/D#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-implements/F#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-implements/D#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-implements/A2#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-implements/B2#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-implements/B2#get:foo (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $class-implements/B3#get:foo (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:class-implements + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 34360 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-implements/a + global.get $~lib/memory/__stack_pointer + global.get $class-implements/a + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-implements/c + global.get $~lib/memory/__stack_pointer + global.get $class-implements/c + i32.store + i32.const 0 + call $class-implements/D#constructor + global.set $class-implements/d + block $__inlined_func$class-implements/D#foo@override$163 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $class-implements/d + local.tee $0 + i32.store + i32.const 4 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 11 + i32.eq + br_if $__inlined_func$class-implements/D#foo@override$163 + drop + i32.const 3 + end + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-implements/D#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-implements/e + block $__inlined_func$class-implements/D#foo@override$165 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $class-implements/e + local.tee $0 + i32.store + i32.const 4 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 11 + i32.eq + br_if $__inlined_func$class-implements/D#foo@override$165 + drop + i32.const 3 + end + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $class-implements/F#constructor + global.set $class-implements/f + global.get $~lib/memory/__stack_pointer + global.get $class-implements/f + i32.store + call $class-implements/F#constructor + global.set $class-implements/g + block $__inlined_func$class-implements/D#foo@override$166 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $class-implements/g + local.tee $0 + i32.store + i32.const 4 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 11 + i32.eq + br_if $__inlined_func$class-implements/D#foo@override$166 + drop + i32.const 3 + end + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $class-implements/F#constructor + global.set $class-implements/h + global.get $~lib/memory/__stack_pointer + global.get $class-implements/h + local.tee $0 + i32.store + block $__inlined_func$class-implements/I#foo@override$167 + block $default12 + block $case3 + block $case2 + block $case1 + block $case013 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case1 $default12 $case2 $default12 $case3 $default12 $case3 $case013 $default12 + end + i32.const 4 + local.set $0 + br $__inlined_func$class-implements/I#foo@override$167 + end + i32.const 1 + local.set $0 + br $__inlined_func$class-implements/I#foo@override$167 + end + i32.const 2 + local.set $0 + br $__inlined_func$class-implements/I#foo@override$167 + end + i32.const 3 + local.set $0 + br $__inlined_func$class-implements/I#foo@override$167 + end + unreachable + end + local.get $0 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$class-implements/J#foo@override$169 + block $default14 + block $case315 + block $case216 + block $case117 + block $case018 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 8 + i32.sub + br_table $case216 $default14 $case216 $case117 $case315 $case018 $default14 + end + unreachable + end + i32.const 4 + local.set $0 + br $__inlined_func$class-implements/J#foo@override$169 + end + i32.const 3 + local.set $0 + br $__inlined_func$class-implements/J#foo@override$169 + end + i32.const 1 + local.set $0 + br $__inlined_func$class-implements/J#foo@override$169 + end + unreachable + end + local.get $0 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $class-implements/A2#constructor + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-implements/I2#get:foo@override + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + call $class-implements/I2#set:foo@override + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 100 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-implements/I2#get:foo@override + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 101 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $class-implements/A2#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/I2#get:foo@override + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 6 + call $class-implements/I2#set:foo@override + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/I2#get:foo@override + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $class-implements/A2#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/I2#get:foo@override + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 8 + call $class-implements/I2#set:foo@override + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/I2#get:foo@override + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $class-implements/B2#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-implements/B2#get:foo@override + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 121 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-implements/I2#get:foo@override + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4 + call $class-implements/I2#set:foo@override + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-implements/B2#get:foo@override + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-implements/I2#get:foo@override + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 125 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $class-implements/B2#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/B3#get:foo + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/I2#get:foo@override + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 130 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10 + call $class-implements/I2#set:foo@override + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/B3#get:foo + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 132 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/I2#get:foo@override + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 133 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $class-implements/B2#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 11 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/B3#get:foo + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 137 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/I2#get:foo@override + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 12 + call $class-implements/I2#set:foo@override + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/B3#get:foo + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 140 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-implements/I2#get:foo@override + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 141 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $class-implements/B3#set:foo (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/class-implements.ts b/tests/compiler/class-implements.ts index d284e80068..40bd136dbd 100644 --- a/tests/compiler/class-implements.ts +++ b/tests/compiler/class-implements.ts @@ -2,19 +2,141 @@ interface I { foo(): i32; } -export class A implements I { +interface J { + foo(): i32; +} + +interface K extends J { + foo(): i32; +} + +class A implements I { foo(): i32 { return 1; } } var a = new A(); -assert(a.foo() === 1); +assert(a.foo() == 1); class B { } -export class C extends B implements I { +class C extends B implements I { foo(): i32 { return 2; } } var c = new C(); -assert(c.foo() === 2); +assert(c.foo() == 2); + +class D implements I, J { + foo(): i32 { return 3; } +} + +let d = new D(); +assert(d.foo() == 3); + +class E extends D implements I { +} + +let e = new E(); +assert(e.foo() == 3); + +class F extends D implements I { + foo(): i32 { return 4; } +} + +let f = new F(); +assert(f.foo() == 4); + +let g: D = new F(); +assert(g.foo() == 4); + +let h: I = new F(); +assert(h.foo() == 4); + +class G implements K { + foo(): i32 { + return 1; + } +} + +assert((new G() as J).foo() == 1); + +// can implement fields with fields or properties +interface I2 { + foo: i32; +} +class A2 implements I2 { + foo: i32 = 1; // implement +} +class A3 extends A2 { + foo: i32 = 5; // redeclare +} +class A4 extends A2 implements I2 { + foo: i32 = 7; // both +} +class B2 implements I2 { + // implement + private _foo: i32 = 3; + get foo(): i32 { return this._foo; } + set foo(foo: i32) { this._foo = foo; } +} +class B3 extends B2 { + // override + private _foo2: i32 = 9; + get foo(): i32 { return this._foo2; } + set foo(foo: i32) { this._foo2 = foo; } +} +class B4 extends B2 implements I2 { + // both + private _foo2: i32 = 11; + get foo(): i32 { return this._foo2; } + set foo(foo: i32) { this._foo2 = foo; } +} +{ + let a2 = new A2(); + assert(a2.foo == 1); + assert((a2).foo == 1); + (a2).foo = 2; + assert(a2.foo == 2); + assert((a2).foo == 2); +} +{ + let a3 = new A3(); + assert(a3.foo == 5); + assert((a3).foo == 5); + (a3).foo = 6; + assert(a3.foo == 6); + assert((a3).foo == 6); +} +{ + let a4 = new A4(); + assert(a4.foo == 7); + assert((a4).foo == 7); + (a4).foo = 8; + assert(a4.foo == 8); + assert((a4).foo == 8); +} +{ + let b2 = new B2(); + assert(b2.foo == 3); + assert((b2).foo == 3); + (b2).foo = 4; + assert(b2.foo == 4); + assert((b2).foo == 4); +} +{ + let b3 = new B3(); + assert(b3.foo == 9); + assert((b3).foo == 9); + (b3).foo = 10; + assert(b3.foo == 10); + assert((b3).foo == 10); +} +{ + let b4 = new B4(); + assert(b4.foo == 11); + assert((b4).foo == 11); + (b4).foo = 12; + assert(b4.foo == 12); + assert((b4).foo == 12); +} diff --git a/tests/compiler/class-implements.untouched.wat b/tests/compiler/class-implements.untouched.wat deleted file mode 100644 index b7ab1b4de0..0000000000 --- a/tests/compiler/class-implements.untouched.wat +++ /dev/null @@ -1,229 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00c\00l\00a\00s\00s\00-\00i\00m\00p\00l\00e\00m\00e\00n\00t\00s\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $class-implements/a (mut i32) (i32.const 0)) - (global $class-implements/c (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 72)) - (global $class-implements/A i32 (i32.const 3)) - (global $class-implements/C i32 (i32.const 5)) - (export "memory" (memory $0)) - (export "A" (global $class-implements/A)) - (export "A#foo" (func $class-implements/A#foo)) - (export "A#constructor" (func $class-implements/A#constructor)) - (export "C" (global $class-implements/C)) - (export "C#foo" (func $class-implements/C#foo)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $class-implements/A#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $class-implements/A#foo (param $0 i32) (result i32) - i32.const 1 - ) - (func $class-implements/B#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 6 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $class-implements/C#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $class-implements/B#constructor - local.set $0 - local.get $0 - ) - (func $class-implements/C#foo (param $0 i32) (result i32) - i32.const 2 - ) - (func $start:class-implements - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - call $class-implements/A#constructor - global.set $class-implements/a - global.get $class-implements/a - call $class-implements/A#foo - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-implements/C#constructor - global.set $class-implements/c - global.get $class-implements/c - call $class-implements/C#foo - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:class-implements - ) -) diff --git a/tests/compiler/class-member-function-as-parameter.json b/tests/compiler/class-member-function-as-parameter.json new file mode 100644 index 0000000000..38ccfe0479 --- /dev/null +++ b/tests/compiler/class-member-function-as-parameter.json @@ -0,0 +1,8 @@ +{ + "asc_flags": [], + "stderr": [ + "TS2322: Type '() => void' is not assignable to type '(this: class-member-function-as-parameter/A) => void'.", + "TS2322: Type '(this: class-member-function-as-parameter/B) => void' is not assignable to type '(this: class-member-function-as-parameter/A) => void'.", + "EOF" + ] +} diff --git a/tests/compiler/class-member-function-as-parameter.ts b/tests/compiler/class-member-function-as-parameter.ts new file mode 100644 index 0000000000..611f0fbf03 --- /dev/null +++ b/tests/compiler/class-member-function-as-parameter.ts @@ -0,0 +1,20 @@ +class A { + foo(): void { } +} + +class B extends A { + foo(): void { } +} + +function foo(): void { } + +function consumeA(callback: (this: A) => void): void { } +function consumeB(callback: (this: B) => void): void { } + +const a = new A(); +const b = new B(); + +consumeB(a.foo); // shouldn't error +consumeA(foo); // should error +consumeA(b.foo); // should error +ERROR("EOF"); \ No newline at end of file diff --git a/tests/compiler/class-overloading-cast.debug.wat b/tests/compiler/class-overloading-cast.debug.wat new file mode 100644 index 0000000000..c108e6d09e --- /dev/null +++ b/tests/compiler/class-overloading-cast.debug.wat @@ -0,0 +1,3294 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 f64) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $11 (func (param i32 f32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $class-overloading-cast/v (mut i32) (i32.const 0)) + (global $class-overloading-cast/v2 (mut i32) (i32.const 0)) + (global $class-overloading-cast/v3 (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $class-overloading-cast/c (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 624)) + (global $~lib/memory/__data_end i32 (i32.const 684)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33452)) + (global $~lib/memory/__heap_base i32 (i32.const 33452)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 476) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00-\00c\00a\00s\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00D\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 624) "\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 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $class-overloading-cast/A#foo (param $this i32) (param $a i32) (result i32) + i32.const 432 + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $"class-overloading-cast/B#foo" (param $this i32) (param $a i32) (result i32) + i32.const 464 + return + ) + (func $class-overloading-cast/A#foo (param $this i32) (param $a f64) (result i32) + i32.const 432 + return + ) + (func $class-overloading-cast/A<~lib/string/String>#foo (param $this i32) (param $a i32) (result i32) + i32.const 432 + return + ) + (func $class-overloading-cast/D#bar (param $this i32) (param $a f32) (result i32) + i32.const 608 + return + ) + (func $"class-overloading-cast/B#foo" (param $this i32) (param $a i32) (result i32) + i32.const 464 + return + ) + (func $"class-overloading-cast/B#foo" (param $this i32) (param $a f64) (result i32) + i32.const 464 + return + ) + (func $class-overloading-cast/A#foo@override (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + block $default + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $2 + local.get $2 + i32.const 4 + i32.eq + br_if $case0 + local.get $2 + i32.const 6 + i32.eq + br_if $case1 + br $default + end + local.get $0 + local.get $1 + call $"class-overloading-cast/B#foo" + return + end + local.get $0 + local.get $1 + call $"class-overloading-cast/B#foo" + return + end + local.get $0 + local.get $1 + call $class-overloading-cast/A#foo + ) + (func $class-overloading-cast/A#foo@override (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + block $default + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $2 + local.get $2 + i32.const 7 + i32.eq + br_if $case0 + br $default + end + local.get $0 + local.get $1 + call $"class-overloading-cast/B#foo" + return + end + local.get $0 + local.get $1 + call $class-overloading-cast/A#foo + ) + (func $class-overloading-cast/A<~lib/string/String>#foo@override (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + drop + local.get $0 + local.get $1 + call $class-overloading-cast/A<~lib/string/String>#foo + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $class-overloading-cast/v + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading-cast/v2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading-cast/v3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading-cast/c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $class-overloading-cast/D + block $class-overloading-cast/A<~lib/string/String> + block $class-overloading-cast/C + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $"class-overloading-cast/B" + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"class-overloading-cast/B" $class-overloading-cast/A $"class-overloading-cast/B" $"class-overloading-cast/B" $class-overloading-cast/A $class-overloading-cast/C $class-overloading-cast/A<~lib/string/String> $class-overloading-cast/D $"class-overloading-cast/B" $class-overloading-cast/A $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:class-overloading-cast + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33472 + i32.const 33520 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $class-overloading-cast/A#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"class-overloading-cast/B#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading-cast/A#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"class-overloading-cast/B#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading-cast/A#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading-cast/A#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"class-overloading-cast/B#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading-cast/A#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $class-overloading-cast/A<~lib/string/String>#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading-cast/C#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading-cast/A<~lib/string/String>#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading-cast/A#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"class-overloading-cast/B#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading-cast/A#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading-cast/D#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"class-overloading-cast/B#constructor" + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:class-overloading-cast + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $"class-overloading-cast/B#constructor" + global.set $class-overloading-cast/v + i32.const 0 + call $"class-overloading-cast/B#constructor" + global.set $class-overloading-cast/v2 + i32.const 0 + call $"class-overloading-cast/B#constructor" + global.set $class-overloading-cast/v3 + global.get $class-overloading-cast/v + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $class-overloading-cast/A#foo@override + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class-overloading-cast/v2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $"class-overloading-cast/B#foo" + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class-overloading-cast/v3 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 1.1 + call $class-overloading-cast/A#foo@override + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading-cast/C#constructor + global.set $class-overloading-cast/c + global.get $class-overloading-cast/c + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 576 + call $class-overloading-cast/A<~lib/string/String>#foo@override + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class-overloading-cast/c + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 576 + call $class-overloading-cast/A<~lib/string/String>#foo@override + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading-cast/D#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 2.5 + call $class-overloading-cast/D#bar + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/class-overloading-cast.json b/tests/compiler/class-overloading-cast.json new file mode 100644 index 0000000000..d89aa6d3b8 --- /dev/null +++ b/tests/compiler/class-overloading-cast.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--exportStart", "_start" + ] +} diff --git a/tests/compiler/class-overloading-cast.release.wat b/tests/compiler/class-overloading-cast.release.wat new file mode 100644 index 0000000000..d40d976f0e --- /dev/null +++ b/tests/compiler/class-overloading-cast.release.wat @@ -0,0 +1,2194 @@ +(module + (type $0 (func)) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $class-overloading-cast/v (mut i32) (i32.const 0)) + (global $class-overloading-cast/v2 (mut i32) (i32.const 0)) + (global $class-overloading-cast/v3 (mut i32) (i32.const 0)) + (global $class-overloading-cast/c (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34476)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "\1c") + (data $8.1 (i32.const 1448) "\02\00\00\00\02\00\00\00A") + (data $9 (i32.const 1468) "\1c") + (data $9.1 (i32.const 1480) "\02\00\00\00\02\00\00\00B") + (data $10 (i32.const 1500) "L") + (data $10.1 (i32.const 1512) "\02\00\00\002\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00-\00c\00a\00s\00t\00.\00t\00s") + (data $11 (i32.const 1580) "\1c") + (data $11.1 (i32.const 1592) "\02\00\00\00\02\00\00\00a") + (data $12 (i32.const 1612) "\1c") + (data $12.1 (i32.const 1624) "\02\00\00\00\02\00\00\00D") + (data $13 (i32.const 1648) "\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 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $class-overloading-cast/v + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading-cast/v2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading-cast/v3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading-cast/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$141 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34476 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$141 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1648 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1652 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34480 + i32.const 0 + i32.store + i32.const 36048 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34480 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34480 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34480 + i32.const 36052 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34480 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34476 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34476 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34476 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $class-overloading-cast/D + block $class-overloading-cast/A<~lib/string/String> + block $class-overloading-cast/C + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $"class-overloading-cast/B" + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"class-overloading-cast/B" $class-overloading-cast/A $"class-overloading-cast/B" $"class-overloading-cast/B" $class-overloading-cast/A $class-overloading-cast/C $class-overloading-cast/A<~lib/string/String> $class-overloading-cast/D $"class-overloading-cast/B" $class-overloading-cast/A $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:class-overloading-cast + ) + (func $class-overloading-cast/A#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + if + i32.const 34496 + i32.const 34544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + if + i32.const 34496 + i32.const 34544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$87 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$87 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $start:class-overloading-cast + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 34476 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading-cast/A#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading-cast/v + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading-cast/A#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading-cast/v2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading-cast/v3 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$class-overloading-cast/A#foo@override$136 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $class-overloading-cast/v + local.tee $0 + i32.store offset=4 + block $default + block $case1 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 4 + i32.ne + if + local.get $0 + i32.const 6 + i32.eq + br_if $case1 + br $default + end + i32.const 1488 + br $__inlined_func$class-overloading-cast/A#foo@override$136 + end + i32.const 1488 + br $__inlined_func$class-overloading-cast/A#foo@override$136 + end + i32.const 1456 + end + local.tee $0 + i32.store + local.get $0 + i32.const 1488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading-cast/v2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1488 + i32.store + i32.const 1488 + i32.const 1488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + block $__inlined_func$class-overloading-cast/A#foo@override$137 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $class-overloading-cast/v3 + local.tee $0 + i32.store offset=4 + i32.const 1488 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 7 + i32.eq + br_if $__inlined_func$class-overloading-cast/A#foo@override$137 + drop + i32.const 1456 + end + local.tee $0 + i32.store + local.get $0 + i32.const 1488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading-cast/c + global.get $~lib/memory/__stack_pointer + global.get $class-overloading-cast/c + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.sub + i32.load + drop + global.get $~lib/memory/__stack_pointer + i32.const 1456 + i32.store + i32.const 1456 + i32.const 1456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading-cast/c + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.sub + i32.load + drop + global.get $~lib/memory/__stack_pointer + i32.const 1456 + i32.store + i32.const 1456 + i32.const 1456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1632 + i32.store + i32.const 1632 + i32.const 1632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34496 + i32.const 34544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + if + i32.const 34496 + i32.const 34544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/class-overloading-cast.ts b/tests/compiler/class-overloading-cast.ts new file mode 100644 index 0000000000..75b70c52fb --- /dev/null +++ b/tests/compiler/class-overloading-cast.ts @@ -0,0 +1,35 @@ +class A { + foo(a: T): string { + return "A"; + } + bar(a: T): string { + return "A"; + } +} +class B extends A { + override foo(a: T): string { + return "B"; + } +} + +class C extends A {} + +class D extends B { + override bar(a: f32): string { + return "D"; + } +} + +let v = new B(); +let v2 = new B(); +let v3 = new B(); +assert((>v).foo(1) == "B"); +assert(v2.foo(1) == "B"); +assert((>v3).foo(1.1) == "B"); + +let c = new C(); + +assert(c.foo("a") == "A"); +assert((>c).foo("a") == "A"); + +assert(new D().bar(2.5) == "D"); diff --git a/tests/compiler/class-overloading.debug.wat b/tests/compiler/class-overloading.debug.wat new file mode 100644 index 0000000000..7cdea8bbb4 --- /dev/null +++ b/tests/compiler/class-overloading.debug.wat @@ -0,0 +1,4242 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $class-overloading/which (mut i32) (i32.const 32)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $class-overloading/a (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $class-overloading/c (mut i32) (i32.const 0)) + (global $class-overloading/ia (mut i32) (i32.const 0)) + (global $class-overloading/ic (mut i32) (i32.const 0)) + (global $class-overloading/b2 (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 768)) + (global $~lib/memory/__data_end i32 (i32.const 844)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33612)) + (global $~lib/memory/__heap_base i32 (i32.const 33612)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00\00\00\00\00") + (data $12 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00F\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00I\00B\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00I\00C\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00n\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 768) "\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 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 256 + i32.const 320 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 128 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 64 + i32.const 400 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 64 + i32.const 128 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $class-overloading/A#a (param $this i32) (param $a i32) + i32.const 464 + global.set $class-overloading/which + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $class-overloading/A#b (param $this i32) (param $b i32) + i32.const 464 + global.set $class-overloading/which + ) + (func $class-overloading/A#get:c (param $this i32) (result i32) + i32.const 464 + global.set $class-overloading/which + i32.const 0 + return + ) + (func $class-overloading/A#set:c (param $this i32) (param $c i32) + i32.const 464 + global.set $class-overloading/which + ) + (func $class-overloading/B#a (param $this i32) (param $a i32) + i32.const 496 + global.set $class-overloading/which + ) + (func $class-overloading/C#b (param $this i32) (param $b i32) + i32.const 592 + global.set $class-overloading/which + ) + (func $class-overloading/C#get:c (param $this i32) (result i32) + i32.const 592 + global.set $class-overloading/which + i32.const 0 + return + ) + (func $class-overloading/C#set:c (param $this i32) (param $c i32) + i32.const 592 + global.set $class-overloading/which + ) + (func $class-overloading/IA#foo (param $this i32) + unreachable + ) + (func $class-overloading/A2#foo (param $this i32) (result i32) + i32.const 720 + i32.const 528 + i32.const 198 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $class-overloading/F#a (param $this i32) (param $a i32) + i32.const 624 + global.set $class-overloading/which + ) + (func $class-overloading/B#b (param $this i32) (param $b i32) + i32.const 496 + global.set $class-overloading/which + ) + (func $class-overloading/F#b (param $this i32) (param $b i32) + i32.const 624 + global.set $class-overloading/which + ) + (func $class-overloading/B#get:c (param $this i32) (result i32) + i32.const 496 + global.set $class-overloading/which + i32.const 0 + return + ) + (func $class-overloading/F#get:c (param $this i32) (result i32) + i32.const 624 + global.set $class-overloading/which + i32.const 0 + return + ) + (func $class-overloading/B#set:c (param $this i32) (param $c i32) + i32.const 496 + global.set $class-overloading/which + ) + (func $class-overloading/F#set:c (param $this i32) (param $c i32) + i32.const 624 + global.set $class-overloading/which + ) + (func $class-overloading/CA#foo (param $this i32) + i32.const 656 + global.set $class-overloading/which + ) + (func $class-overloading/CC#foo (param $this i32) + i32.const 688 + global.set $class-overloading/which + ) + (func $class-overloading/A1#baz (param $this i32) (result i32) + i32.const 720 + i32.const 528 + i32.const 186 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $class-overloading/B1#baz (param $this i32) (result i32) + i32.const 3 + return + ) + (func $class-overloading/A#a@override (param $0 i32) (param $1 i32) + (local $2 i32) + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $2 + local.get $2 + i32.const 5 + i32.eq + br_if $case0 + local.get $2 + i32.const 7 + i32.eq + br_if $case0 + local.get $2 + i32.const 8 + i32.eq + br_if $case0 + local.get $2 + i32.const 6 + i32.eq + br_if $case1 + local.get $2 + i32.const 9 + i32.eq + br_if $case2 + br $default + end + local.get $0 + local.get $1 + call $class-overloading/B#a + return + end + local.get $0 + local.get $1 + call $class-overloading/C#a + return + end + local.get $0 + local.get $1 + call $class-overloading/F#a + return + end + local.get $0 + local.get $1 + call $class-overloading/A#a + ) + (func $class-overloading/A#b@override (param $0 i32) (param $1 i32) + (local $2 i32) + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $2 + local.get $2 + i32.const 5 + i32.eq + br_if $case0 + local.get $2 + i32.const 7 + i32.eq + br_if $case0 + local.get $2 + i32.const 8 + i32.eq + br_if $case0 + local.get $2 + i32.const 6 + i32.eq + br_if $case1 + local.get $2 + i32.const 9 + i32.eq + br_if $case2 + br $default + end + local.get $0 + local.get $1 + call $class-overloading/B#b + return + end + local.get $0 + local.get $1 + call $class-overloading/C#b + return + end + local.get $0 + local.get $1 + call $class-overloading/F#b + return + end + local.get $0 + local.get $1 + call $class-overloading/A#b + ) + (func $class-overloading/A#get:c@override (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 5 + i32.eq + br_if $case0 + local.get $1 + i32.const 7 + i32.eq + br_if $case0 + local.get $1 + i32.const 8 + i32.eq + br_if $case0 + local.get $1 + i32.const 6 + i32.eq + br_if $case1 + local.get $1 + i32.const 9 + i32.eq + br_if $case2 + br $default + end + local.get $0 + call $class-overloading/B#get:c + return + end + local.get $0 + call $class-overloading/C#get:c + return + end + local.get $0 + call $class-overloading/F#get:c + return + end + local.get $0 + call $class-overloading/A#get:c + ) + (func $class-overloading/A#set:c@override (param $0 i32) (param $1 i32) + (local $2 i32) + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $2 + local.get $2 + i32.const 5 + i32.eq + br_if $case0 + local.get $2 + i32.const 7 + i32.eq + br_if $case0 + local.get $2 + i32.const 8 + i32.eq + br_if $case0 + local.get $2 + i32.const 6 + i32.eq + br_if $case1 + local.get $2 + i32.const 9 + i32.eq + br_if $case2 + br $default + end + local.get $0 + local.get $1 + call $class-overloading/B#set:c + return + end + local.get $0 + local.get $1 + call $class-overloading/C#set:c + return + end + local.get $0 + local.get $1 + call $class-overloading/F#set:c + return + end + local.get $0 + local.get $1 + call $class-overloading/A#set:c + ) + (func $class-overloading/IA#foo@override (param $0 i32) + (local $1 i32) + block $default + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 11 + i32.eq + br_if $case0 + local.get $1 + i32.const 13 + i32.eq + br_if $case1 + br $default + end + local.get $0 + call $class-overloading/CA#foo + return + end + local.get $0 + call $class-overloading/CC#foo + return + end + unreachable + ) + (func $class-overloading/A2#foo@override (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 15 + i32.eq + br_if $case0 + br $default + end + local.get $0 + call $class-overloading/B2#foo + return + end + local.get $0 + call $class-overloading/A2#foo + ) + (func $class-overloading/A1#baz@override (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 16 + i32.eq + br_if $case0 + br $default + end + local.get $0 + call $class-overloading/B1#baz + return + end + local.get $0 + call $class-overloading/A1#baz + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $class-overloading/which + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ia + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ic + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/b2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $class-overloading/A1 + block $class-overloading/B1 + block $class-overloading/B2 + block $class-overloading/A2 + block $class-overloading/CC + block $class-overloading/IC + block $class-overloading/CA + block $class-overloading/IA + block $class-overloading/F + block $class-overloading/E + block $class-overloading/D + block $class-overloading/C + block $class-overloading/B + block $class-overloading/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-overloading/A $class-overloading/B $class-overloading/C $class-overloading/D $class-overloading/E $class-overloading/F $class-overloading/IA $class-overloading/CA $class-overloading/IC $class-overloading/CC $class-overloading/A2 $class-overloading/B2 $class-overloading/B1 $class-overloading/A1 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:class-overloading + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33632 + i32.const 33680 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $class-overloading/A#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/B#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading/A#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $class-overloading/C#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading/B#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/C#a (param $this i32) (param $a i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $a + call $class-overloading/B#a + global.get $class-overloading/which + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 592 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $class-overloading/D#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading/B#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/E#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading/D#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/F#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading/E#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/CA#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/CC#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/A2#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/B2#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading/A2#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:class-overloading + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $class-overloading/B#constructor + global.set $class-overloading/a + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#a@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#b@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/A#get:c@override + drop + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#set:c@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/C#constructor + global.set $class-overloading/c + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/c + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/C#a + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 71 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/c + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/C#b + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/c + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/C#get:c + drop + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class-overloading/c + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/C#set:c + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/D#constructor + global.set $class-overloading/a + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#a@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#b@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/A#get:c@override + drop + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#set:c@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/E#constructor + global.set $class-overloading/a + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#a@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#b@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/A#get:c@override + drop + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#set:c@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/F#constructor + global.set $class-overloading/a + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#a@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#b@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/A#get:c@override + drop + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#set:c@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 146 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/CA#constructor + global.set $class-overloading/ia + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/ia + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/IA#foo@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/CC#constructor + global.set $class-overloading/ic + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/ic + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/IA#foo@override + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/B2#constructor + global.set $class-overloading/b2 + global.get $class-overloading/b2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/A2#foo@override + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $class-overloading/A1#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/B1#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading/A1#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/A1#bar (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-overloading/A1#baz@override + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $class-overloading/B2#foo (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + call $class-overloading/B1#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $class-overloading/A1#bar + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/class-overloading.json b/tests/compiler/class-overloading.json index bf222c4d2d..d89aa6d3b8 100644 --- a/tests/compiler/class-overloading.json +++ b/tests/compiler/class-overloading.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", - "--explicitStart" + "--exportStart", "_start" ] -} \ No newline at end of file +} diff --git a/tests/compiler/class-overloading.optimized.wat b/tests/compiler/class-overloading.optimized.wat deleted file mode 100644 index 9f337184e4..0000000000 --- a/tests/compiler/class-overloading.optimized.wat +++ /dev/null @@ -1,748 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 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" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1028) "\01\00\00\00\01") - (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00A") - (data (i32.const 1072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00B") - (data (i32.const 1104) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") - (data (i32.const 1168) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00C") - (data (i32.const 1200) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00F") - (data (i32.const 1232) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00I\00B") - (data (i32.const 1264) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00I\00C") - (global $class-overloading/which (mut i32) (i32.const 1040)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $class-overloading/a (mut i32) (i32.const 0)) - (global $class-overloading/ia (mut i32) (i32.const 0)) - (global $class-overloading/ic (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - i32.const 16 - i32.add - local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $4 - local.get $1 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $4 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $1 - global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 - i32.sub - local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $3 - ) - (func $class-overloading/B#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - if (result i32) - local.get $0 - else - i32.const 3 - call $~lib/rt/stub/__alloc - end - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - local.get $0 - i32.load16_u - local.tee $3 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $3 - local.get $4 - i32.sub - return - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - return - end - i32.const 0 - ) - (func $class-overloading/C#a - i32.const 1088 - global.set $class-overloading/which - i32.const 1088 - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 1184 - global.set $class-overloading/which - ) - (func $class-overloading/D#constructor (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 6 - call $~lib/rt/stub/__alloc - end - call $class-overloading/B#constructor - ) - (func $class-overloading/E#constructor (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 7 - call $~lib/rt/stub/__alloc - end - call $class-overloading/D#constructor - ) - (func $start:class-overloading - i32.const 1296 - global.set $~lib/rt/stub/offset - i32.const 0 - call $class-overloading/B#constructor - global.set $class-overloading/a - global.get $class-overloading/a - call $class-overloading/A#a@virtual - global.get $class-overloading/which - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - call $~lib/rt/stub/__alloc - call $class-overloading/B#constructor - drop - i32.const 1040 - global.set $class-overloading/which - call $class-overloading/C#a - global.get $class-overloading/which - i32.const 1184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 71 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - global.set $class-overloading/which - i32.const 1184 - global.set $class-overloading/which - i32.const 1184 - i32.const 1184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 74 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - global.set $class-overloading/which - i32.const 1184 - global.set $class-overloading/which - i32.const 1184 - i32.const 1184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1184 - global.set $class-overloading/which - i32.const 1184 - i32.const 1184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-overloading/D#constructor - global.set $class-overloading/a - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#a@virtual - global.get $class-overloading/which - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 89 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $class-overloading/a - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 97 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-overloading/E#constructor - global.set $class-overloading/a - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#a@virtual - global.get $class-overloading/which - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $class-overloading/a - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - call $~lib/rt/stub/__alloc - call $class-overloading/E#constructor - global.set $class-overloading/a - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#a@virtual - global.get $class-overloading/which - i32.const 1216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 1216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 1216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 1216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 146 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - call $~lib/rt/stub/__alloc - global.set $class-overloading/ia - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/ia - call $class-overloading/IA#foo@virtual - global.get $class-overloading/which - i32.const 1248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - call $~lib/rt/stub/__alloc - global.set $class-overloading/ic - i32.const 1040 - global.set $class-overloading/which - global.get $class-overloading/ic - call $class-overloading/IA#foo@virtual - global.get $class-overloading/which - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:class-overloading - ) - (func $class-overloading/A#a@virtual (param $0 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 4 - i32.eq - local.get $0 - i32.const 6 - i32.eq - i32.or - br_if $case0 - block $tablify|0 - local.get $0 - i32.const 5 - i32.sub - br_table $case1 $tablify|0 $case0 $case2 $tablify|0 - end - br $default - end - i32.const 1088 - global.set $class-overloading/which - return - end - call $class-overloading/C#a - return - end - i32.const 1216 - global.set $class-overloading/which - return - end - i32.const 1056 - global.set $class-overloading/which - ) - (func $class-overloading/A#b@virtual (param $0 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 4 - i32.eq - local.get $0 - i32.const 6 - i32.eq - i32.or - br_if $case0 - block $tablify|0 - local.get $0 - i32.const 5 - i32.sub - br_table $case1 $tablify|0 $case0 $case2 $tablify|0 - end - br $default - end - i32.const 1088 - global.set $class-overloading/which - return - end - i32.const 1184 - global.set $class-overloading/which - return - end - i32.const 1216 - global.set $class-overloading/which - return - end - i32.const 1056 - global.set $class-overloading/which - ) - (func $class-overloading/IA#foo@virtual (param $0 i32) - block $default - block $case1 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 10 - i32.ne - if - local.get $0 - i32.const 12 - i32.eq - br_if $case1 - br $default - end - i32.const 1248 - global.set $class-overloading/which - return - end - i32.const 1280 - global.set $class-overloading/which - return - end - unreachable - ) -) diff --git a/tests/compiler/class-overloading.release.wat b/tests/compiler/class-overloading.release.wat new file mode 100644 index 0000000000..02caf42072 --- /dev/null +++ b/tests/compiler/class-overloading.release.wat @@ -0,0 +1,3185 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $class-overloading/which (mut i32) (i32.const 1056)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $class-overloading/a (mut i32) (i32.const 0)) + (global $class-overloading/c (mut i32) (i32.const 0)) + (global $class-overloading/ia (mut i32) (i32.const 0)) + (global $class-overloading/ic (mut i32) (i32.const 0)) + (global $class-overloading/b2 (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34636)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02") + (data $1 (i32.const 1068) "<") + (data $1.1 (i32.const 1080) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1132) "<") + (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1260) "<") + (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1324) ",") + (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1404) "<") + (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1468) "\1c") + (data $9.1 (i32.const 1480) "\02\00\00\00\02\00\00\00A") + (data $10 (i32.const 1500) "\1c") + (data $10.1 (i32.const 1512) "\02\00\00\00\02\00\00\00B") + (data $11 (i32.const 1532) "<") + (data $11.1 (i32.const 1544) "\02\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") + (data $12 (i32.const 1596) "\1c") + (data $12.1 (i32.const 1608) "\02\00\00\00\02\00\00\00C") + (data $13 (i32.const 1628) "\1c") + (data $13.1 (i32.const 1640) "\02\00\00\00\02\00\00\00F") + (data $14 (i32.const 1660) "\1c") + (data $14.1 (i32.const 1672) "\02\00\00\00\04\00\00\00I\00B") + (data $15 (i32.const 1692) "\1c") + (data $15.1 (i32.const 1704) "\02\00\00\00\04\00\00\00I\00C") + (data $16 (i32.const 1724) "<") + (data $16.1 (i32.const 1736) "\02\00\00\00\1e\00\00\00n\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d") + (data $17 (i32.const 1792) "\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 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $class-overloading/which + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ia + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ic + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/b2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$171 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34636 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$171 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1792 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34640 + i32.const 0 + i32.store + i32.const 36208 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34640 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34640 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34640 + i32.const 36212 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34640 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34636 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34636 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34636 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $class-overloading/A#a@override (param $0 i32) + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case0 $case1 $case0 $case0 $case2 $default + end + i32.const 1520 + global.set $class-overloading/which + return + end + local.get $0 + call $class-overloading/C#a + return + end + i32.const 1648 + global.set $class-overloading/which + return + end + i32.const 1488 + global.set $class-overloading/which + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-overloading/A1 + block $class-overloading/B1 + block $class-overloading/B2 + block $class-overloading/A2 + block $class-overloading/CC + block $class-overloading/IC + block $class-overloading/CA + block $class-overloading/IA + block $class-overloading/F + block $class-overloading/E + block $class-overloading/D + block $class-overloading/C + block $class-overloading/B + block $class-overloading/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-overloading/A $class-overloading/B $class-overloading/C $class-overloading/D $class-overloading/E $class-overloading/F $class-overloading/IA $class-overloading/CA $class-overloading/IC $class-overloading/CC $class-overloading/A2 $class-overloading/B2 $class-overloading/B1 $class-overloading/A1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:class-overloading + ) + (func $class-overloading/B#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + if + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$95 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$95 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $class-overloading/C#a (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + if + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1520 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store + i32.const 1520 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 1616 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $class-overloading/D#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + if + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading/B#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-overloading/E#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + if + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading/D#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $start:class-overloading + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34636 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $class-overloading/B#constructor + global.set $class-overloading/a + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 + call $class-overloading/A#a@override + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@override$153 + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case0 $case1 $case0 $case0 $case2 $default + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$153 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$153 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$153 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#get:c@override$154 + block $default4 + block $case25 + block $case16 + block $case07 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case07 $case16 $case07 $case07 $case25 $default4 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@override$154 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@override$154 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@override$154 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@override$155 + block $default8 + block $case29 + block $case110 + block $case011 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case011 $case110 $case011 $case011 $case29 $default8 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$155 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$155 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$155 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading/B#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/c + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/c + local.tee $0 + i32.store + local.get $0 + call $class-overloading/C#a + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 71 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/c + i32.store + i32.const 1616 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store + i32.const 1616 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/c + i32.store + i32.const 1616 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store + i32.const 1616 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/c + i32.store + i32.const 1616 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store + i32.const 1616 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/D#constructor + global.set $class-overloading/a + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 + call $class-overloading/A#a@override + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@override$157 + block $default16 + block $case217 + block $case118 + block $case019 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case019 $case118 $case019 $case019 $case217 $default16 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$157 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$157 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$157 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#get:c@override$158 + block $default24 + block $case225 + block $case126 + block $case027 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case027 $case126 $case027 $case027 $case225 $default24 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@override$158 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@override$158 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@override$158 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@override$159 + block $default32 + block $case233 + block $case134 + block $case035 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case035 $case134 $case035 $case035 $case233 $default32 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$159 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$159 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$159 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/E#constructor + global.set $class-overloading/a + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 + call $class-overloading/A#a@override + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@override$160 + block $default40 + block $case241 + block $case142 + block $case043 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case043 $case142 $case043 $case043 $case241 $default40 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$160 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$160 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$160 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#get:c@override$161 + block $default48 + block $case249 + block $case150 + block $case051 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case051 $case150 $case051 $case051 $case249 $default48 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@override$161 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@override$161 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@override$161 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@override$162 + block $default56 + block $case257 + block $case158 + block $case059 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case059 $case158 $case059 $case059 $case257 $default56 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$162 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$162 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$162 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading/E#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/a + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 + call $class-overloading/A#a@override + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@override$164 + block $default64 + block $case265 + block $case166 + block $case067 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case067 $case166 $case067 $case067 $case265 $default64 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$164 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$164 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$164 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#get:c@override$165 + block $default72 + block $case273 + block $case174 + block $case075 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case075 $case174 $case075 $case075 $case273 $default72 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@override$165 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@override$165 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@override$165 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@override$166 + block $default80 + block $case281 + block $case182 + block $case083 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case083 $case182 $case083 $case083 $case281 $default80 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$166 + end + i32.const 1616 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$166 + end + i32.const 1648 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@override$166 + end + i32.const 1488 + global.set $class-overloading/which + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 146 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/ia + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/ia + local.tee $0 + i32.store + block $__inlined_func$class-overloading/IA#foo@override$168 + block $default88 + block $case189 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 11 + i32.ne + if + local.get $0 + i32.const 13 + i32.eq + br_if $case189 + br $default88 + end + i32.const 1680 + global.set $class-overloading/which + br $__inlined_func$class-overloading/IA#foo@override$168 + end + i32.const 1712 + global.set $class-overloading/which + br $__inlined_func$class-overloading/IA#foo@override$168 + end + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/ic + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/ic + local.tee $0 + i32.store + block $__inlined_func$class-overloading/IA#foo@override$170 + block $default91 + block $case192 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 11 + i32.ne + if + local.get $0 + i32.const 13 + i32.eq + br_if $case192 + br $default91 + end + i32.const 1680 + global.set $class-overloading/which + br $__inlined_func$class-overloading/IA#foo@override$170 + end + i32.const 1712 + global.set $class-overloading/which + br $__inlined_func$class-overloading/IA#foo@override$170 + end + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/b2 + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/b2 + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A2#foo@override$1 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 15 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 16 + i32.ne + if + i32.const 1744 + i32.const 1552 + i32.const 186 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$class-overloading/A2#foo@override$1 + end + i32.const 1744 + i32.const 1552 + i32.const 198 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + if + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/class-overloading.ts b/tests/compiler/class-overloading.ts index d8f9cf1241..ee4aa5a906 100644 --- a/tests/compiler/class-overloading.ts +++ b/tests/compiler/class-overloading.ts @@ -175,3 +175,35 @@ var ic: IC = new CC(); which = ""; ic.foo(); assert(which == "IC"); + +// Should make stubs for functions discovered when compiling other virtual stubs +class A1 { + public bar(): i32 { + return this.baz(); + // 4) discovers A1#baz + } + public baz(): i32 { + throw new Error("not implemented"); + // 5) discovers B1#baz (overload) + } +} +class B1 extends A1 { + public baz(): i32 { + return 3; + // 6) complete + } +} +class A2 { + foo(): i32 { + throw new Error("not implemented"); + // 2) discovers B2#foo (overload) + } +} +class B2 extends A2 { + foo(): i32 { + return new B1().bar(); + // 3) discovers B1#bar (alias of A1#bar) + } +} +var b2: A2 = new B2(); +assert(b2.foo() == 3); // 1) discovers A2#foo diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat deleted file mode 100644 index ff606fff0b..0000000000 --- a/tests/compiler/class-overloading.untouched.wat +++ /dev/null @@ -1,1375 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 32) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00A\00") - (data (i32.const 64) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00B\00") - (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 160) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00C\00") - (data (i32.const 192) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00F\00") - (data (i32.const 224) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00I\00B\00") - (data (i32.const 256) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00I\00C\00") - (table $0 1 funcref) - (global $class-overloading/which (mut i32) (i32.const 32)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $class-overloading/a (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $class-overloading/c (mut i32) (i32.const 0)) - (global $class-overloading/ia (mut i32) (i32.const 0)) - (global $class-overloading/ic (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 276)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $class-overloading/A#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $class-overloading/B#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $class-overloading/A#constructor - local.set $0 - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $class-overloading/A#a (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 48 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $class-overloading/A#b (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 48 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/A#get:c (param $0 i32) (result i32) - (local $1 i32) - i32.const 48 - local.set $1 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $1 - global.set $class-overloading/which - i32.const 0 - ) - (func $class-overloading/A#set:c (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 48 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/C#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $class-overloading/B#constructor - local.set $0 - local.get $0 - ) - (func $class-overloading/B#a (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 80 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/C#a (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - call $class-overloading/B#a - global.get $class-overloading/which - i32.const 80 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 176 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/C#b (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 176 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/C#get:c (param $0 i32) (result i32) - (local $1 i32) - i32.const 176 - local.set $1 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $1 - global.set $class-overloading/which - i32.const 0 - ) - (func $class-overloading/C#set:c (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 176 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/D#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 6 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $class-overloading/B#constructor - local.set $0 - local.get $0 - ) - (func $class-overloading/E#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $class-overloading/D#constructor - local.set $0 - local.get $0 - ) - (func $class-overloading/F#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 8 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $class-overloading/E#constructor - local.set $0 - local.get $0 - ) - (func $class-overloading/CA#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 10 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $class-overloading/IA#foo (param $0 i32) - unreachable - ) - (func $class-overloading/CC#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 12 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $start:class-overloading - (local $0 i32) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - call $class-overloading/B#constructor - global.set $class-overloading/a - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#a@virtual - global.get $class-overloading/which - i32.const 80 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 80 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#get:c@virtual - drop - global.get $class-overloading/which - i32.const 80 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#set:c@virtual - global.get $class-overloading/which - i32.const 80 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-overloading/C#constructor - global.set $class-overloading/c - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/c - i32.const 1 - call $class-overloading/C#a - global.get $class-overloading/which - i32.const 176 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 71 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/c - i32.const 1 - call $class-overloading/C#b - global.get $class-overloading/which - i32.const 176 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 74 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/c - call $class-overloading/C#get:c - drop - global.get $class-overloading/which - i32.const 176 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $class-overloading/c - i32.const 1 - call $class-overloading/C#set:c - global.get $class-overloading/which - i32.const 176 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-overloading/D#constructor - local.set $0 - global.get $class-overloading/a - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/a - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#a@virtual - global.get $class-overloading/which - i32.const 80 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 89 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 80 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#get:c@virtual - drop - global.get $class-overloading/which - i32.const 80 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#set:c@virtual - global.get $class-overloading/which - i32.const 80 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 97 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-overloading/E#constructor - local.set $0 - global.get $class-overloading/a - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/a - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#a@virtual - global.get $class-overloading/which - i32.const 80 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 80 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#get:c@virtual - drop - global.get $class-overloading/which - i32.const 80 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#set:c@virtual - global.get $class-overloading/which - i32.const 80 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-overloading/F#constructor - local.set $0 - global.get $class-overloading/a - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/a - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#a@virtual - global.get $class-overloading/which - i32.const 208 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 208 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#get:c@virtual - drop - global.get $class-overloading/which - i32.const 208 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#set:c@virtual - global.get $class-overloading/which - i32.const 208 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 146 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-overloading/CA#constructor - global.set $class-overloading/ia - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/ia - call $class-overloading/IA#foo@virtual - global.get $class-overloading/which - i32.const 240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-overloading/CC#constructor - global.set $class-overloading/ic - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/ic - call $class-overloading/IA#foo@virtual - global.get $class-overloading/which - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:class-overloading - ) - (func $class-overloading/F#a (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 208 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/A#a@virtual (param $0 i32) (param $1 i32) - (local $2 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $2 - local.get $2 - i32.const 4 - i32.eq - br_if $case0 - local.get $2 - i32.const 6 - i32.eq - br_if $case0 - local.get $2 - i32.const 7 - i32.eq - br_if $case0 - local.get $2 - i32.const 5 - i32.eq - br_if $case1 - local.get $2 - i32.const 8 - i32.eq - br_if $case2 - br $default - end - local.get $0 - local.get $1 - call $class-overloading/B#a - return - end - local.get $0 - local.get $1 - call $class-overloading/C#a - return - end - local.get $0 - local.get $1 - call $class-overloading/F#a - return - end - local.get $0 - local.get $1 - call $class-overloading/A#a - ) - (func $class-overloading/B#b (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 80 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/F#b (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 208 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/A#b@virtual (param $0 i32) (param $1 i32) - (local $2 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $2 - local.get $2 - i32.const 4 - i32.eq - br_if $case0 - local.get $2 - i32.const 6 - i32.eq - br_if $case0 - local.get $2 - i32.const 7 - i32.eq - br_if $case0 - local.get $2 - i32.const 5 - i32.eq - br_if $case1 - local.get $2 - i32.const 8 - i32.eq - br_if $case2 - br $default - end - local.get $0 - local.get $1 - call $class-overloading/B#b - return - end - local.get $0 - local.get $1 - call $class-overloading/C#b - return - end - local.get $0 - local.get $1 - call $class-overloading/F#b - return - end - local.get $0 - local.get $1 - call $class-overloading/A#b - ) - (func $class-overloading/B#get:c (param $0 i32) (result i32) - (local $1 i32) - i32.const 80 - local.set $1 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $1 - global.set $class-overloading/which - i32.const 0 - ) - (func $class-overloading/F#get:c (param $0 i32) (result i32) - (local $1 i32) - i32.const 208 - local.set $1 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $1 - global.set $class-overloading/which - i32.const 0 - ) - (func $class-overloading/A#get:c@virtual (param $0 i32) (result i32) - (local $1 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $1 - local.get $1 - i32.const 4 - i32.eq - br_if $case0 - local.get $1 - i32.const 6 - i32.eq - br_if $case0 - local.get $1 - i32.const 7 - i32.eq - br_if $case0 - local.get $1 - i32.const 5 - i32.eq - br_if $case1 - local.get $1 - i32.const 8 - i32.eq - br_if $case2 - br $default - end - local.get $0 - call $class-overloading/B#get:c - return - end - local.get $0 - call $class-overloading/C#get:c - return - end - local.get $0 - call $class-overloading/F#get:c - return - end - local.get $0 - call $class-overloading/A#get:c - ) - (func $class-overloading/B#set:c (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 80 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/F#set:c (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 208 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/A#set:c@virtual (param $0 i32) (param $1 i32) - (local $2 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $2 - local.get $2 - i32.const 4 - i32.eq - br_if $case0 - local.get $2 - i32.const 6 - i32.eq - br_if $case0 - local.get $2 - i32.const 7 - i32.eq - br_if $case0 - local.get $2 - i32.const 5 - i32.eq - br_if $case1 - local.get $2 - i32.const 8 - i32.eq - br_if $case2 - br $default - end - local.get $0 - local.get $1 - call $class-overloading/B#set:c - return - end - local.get $0 - local.get $1 - call $class-overloading/C#set:c - return - end - local.get $0 - local.get $1 - call $class-overloading/F#set:c - return - end - local.get $0 - local.get $1 - call $class-overloading/A#set:c - ) - (func $class-overloading/CA#foo (param $0 i32) - (local $1 i32) - i32.const 240 - local.set $1 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $1 - global.set $class-overloading/which - ) - (func $class-overloading/CC#foo (param $0 i32) - (local $1 i32) - i32.const 272 - local.set $1 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $1 - global.set $class-overloading/which - ) - (func $class-overloading/IA#foo@virtual (param $0 i32) - (local $1 i32) - block $default - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $1 - local.get $1 - i32.const 10 - i32.eq - br_if $case0 - local.get $1 - i32.const 12 - i32.eq - br_if $case1 - br $default - end - local.get $0 - call $class-overloading/CA#foo - return - end - local.get $0 - call $class-overloading/CC#foo - return - end - unreachable - ) -) diff --git a/tests/compiler/class-override.debug.wat b/tests/compiler/class-override.debug.wat new file mode 100644 index 0000000000..7ec0ffa3a3 --- /dev/null +++ b/tests/compiler/class-override.debug.wat @@ -0,0 +1,2672 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $class-override/x (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 480)) + (global $~lib/memory/__data_end i32 (i32.const 516)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33284)) + (global $~lib/memory/__heap_base i32 (i32.const 33284)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00r\00i\00d\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 480) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "fn" (func $class-override/fn)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $class-override/A#f (param $this i32) (param $a i32) (result i32) + local.get $a + i32.const 1 + i32.add + return + ) + (func $start:class-override + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $class-override/D#constructor + global.set $class-override/x + i32.const 0 + call $class-override/fn + i32.const 111 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $class-override/A#f@override (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + block $default + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $2 + local.get $2 + i32.const 7 + i32.eq + br_if $case0 + local.get $2 + i32.const 5 + i32.eq + br_if $case1 + local.get $2 + i32.const 6 + i32.eq + br_if $case1 + br $default + end + local.get $0 + local.get $1 + call $class-override/B#f + return + end + local.get $0 + local.get $1 + call $class-override/C#f + return + end + local.get $0 + local.get $1 + call $class-override/A#f + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $class-override/x + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $class-override/B + block $class-override/C + block $class-override/D + block $class-override/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-override/A $class-override/D $class-override/C $class-override/B $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:class-override + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33312 + i32.const 33360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $class-override/A#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-override/B#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-override/A#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-override/C#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-override/B#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-override/D#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-override/C#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-override/fn (param $n i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $class-override/x + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $n + call $class-override/A#f@override + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $class-override/B#f (param $this i32) (param $a i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $a + call $class-override/A#f + i32.const 10 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $class-override/C#f (param $this i32) (param $a i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $a + call $class-override/B#f + i32.const 100 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/class-override.json b/tests/compiler/class-override.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/class-override.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/class-override.release.wat b/tests/compiler/class-override.release.wat new file mode 100644 index 0000000000..b1418a45d3 --- /dev/null +++ b/tests/compiler/class-override.release.wat @@ -0,0 +1,1727 @@ +(module + (type $0 (func)) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $class-override/x (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34308)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "<") + (data $8.1 (i32.const 1448) "\02\00\00\00\"\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00r\00i\00d\00e\00.\00t\00s") + (data $9 (i32.const 1504) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (export "fn" (func $class-override/fn)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $class-override/x + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34308 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1504 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34320 + i32.const 0 + i32.store + i32.const 35888 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34320 + i32.const 35892 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34320 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34308 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34308 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34308 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-override/B + block $class-override/C + block $class-override/D + block $class-override/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-override/A $class-override/D $class-override/C $class-override/B $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $__inlined_func$start:class-override + memory.size + i32.const 16 + i32.shl + i32.const 34308 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-override/x + i32.const 0 + call $class-override/fn + i32.const 111 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$start:class-override + end + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $class-override/fn (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $class-override/x + local.tee $1 + i32.store + block $__inlined_func$class-override/A#f@override$126 + block $default + block $case1 + block $case0 + local.get $1 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case1 $case1 $case0 $default + end + local.get $1 + local.get $0 + call $class-override/B#f + local.set $0 + br $__inlined_func$class-override/A#f@override$126 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $class-override/B#f + i32.const 100 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$class-override/A#f@override$126 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $class-override/B#f (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1540 + i32.lt_s + if + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 11 + i32.add + ) +) diff --git a/tests/compiler/class-override.ts b/tests/compiler/class-override.ts new file mode 100644 index 0000000000..08121693e6 --- /dev/null +++ b/tests/compiler/class-override.ts @@ -0,0 +1,24 @@ +export function fn(n: i32): i32 { + return x.f(n); +} + +class A { + f(a: i32): i32 { + return a + 1; + } +} +class B extends A { + f(a: i32): i32 { + return super.f(a) + 10; + } +} +class C extends B { + f(a: i32): i32 { + return super.f(a) + 100; + } +} +class D extends C {} + +let x: A = new D(); + +assert(fn(0) == 111); diff --git a/tests/compiler/class-static-function.debug.wat b/tests/compiler/class-static-function.debug.wat new file mode 100644 index 0000000000..8c028d9590 --- /dev/null +++ b/tests/compiler/class-static-function.debug.wat @@ -0,0 +1,79 @@ +(module + (type $0 (func)) + (type $1 (func (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 124)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32892)) + (global $~lib/memory/__heap_base i32 (i32.const 32892)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $class-static-function/Example.staticFunc) + (export "memory" (memory $0)) + (start $~start) + (func $class-static-function/Example.staticFunc (result i32) + i32.const 42 + return + ) + (func $class-static-function/call (param $func i32) (result i32) + i32.const 0 + global.set $~argumentsLength + local.get $func + i32.load + call_indirect (type $1) + return + ) + (func $~start + call $start:class-static-function + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 32912 + i32.const 32960 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:class-static-function + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-static-function/call + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/class-static-function.json b/tests/compiler/class-static-function.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/class-static-function.json +++ b/tests/compiler/class-static-function.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/class-static-function.optimized.wat b/tests/compiler/class-static-function.optimized.wat deleted file mode 100644 index 1614cf3563..0000000000 --- a/tests/compiler/class-static-function.optimized.wat +++ /dev/null @@ -1,31 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1056) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s") - (table $0 2 funcref) - (elem (i32.const 1) $class-static-function/Example.staticFunc) - (export "memory" (memory $0)) - (start $~start) - (func $class-static-function/Example.staticFunc (result i32) - i32.const 42 - ) - (func $~start - i32.const 1040 - i32.load - call_indirect (type $none_=>_i32) - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/class-static-function.release.wat b/tests/compiler/class-static-function.release.wat new file mode 100644 index 0000000000..10a8811e24 --- /dev/null +++ b/tests/compiler/class-static-function.release.wat @@ -0,0 +1,50 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33916)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") + (data $1 (i32.const 1068) "L") + (data $1.1 (i32.const 1080) "\02\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $class-static-function/Example.staticFunc) + (export "memory" (memory $0)) + (start $~start) + (func $class-static-function/Example.staticFunc (result i32) + i32.const 42 + ) + (func $~start + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1148 + i32.lt_s + if + i32.const 33936 + i32.const 33984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/class-static-function.untouched.wat b/tests/compiler/class-static-function.untouched.wat deleted file mode 100644 index 695db1210b..0000000000 --- a/tests/compiler/class-static-function.untouched.wat +++ /dev/null @@ -1,58 +0,0 @@ -(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_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 48) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s\00") - (table $0 2 funcref) - (elem (i32.const 1) $class-static-function/Example.staticFunc) - (global $~argumentsLength (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $class-static-function/Example.staticFunc (result i32) - i32.const 42 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $class-static-function/call (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.load - call_indirect (type $none_=>_i32) - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $start:class-static-function - i32.const 32 - call $class-static-function/call - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:class-static-function - ) -) diff --git a/tests/compiler/class.debug.wat b/tests/compiler/class.debug.wat new file mode 100644 index 0000000000..c69e4d351d --- /dev/null +++ b/tests/compiler/class.debug.wat @@ -0,0 +1,2928 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param f32 f32) (result f32))) + (type $7 (func (param i32 i32 i32) (result i32))) + (type $8 (func (param i32 f32 f32) (result f32))) + (type $9 (func (param i32 i32 i32 i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $class/Animal.ONE (mut i32) (i32.const 1)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 512)) + (global $~lib/memory/__data_end i32 (i32.const 544)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33312)) + (global $~lib/memory/__heap_base i32 (i32.const 33312)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $9 (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $10 (i32.const 512) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02\t\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "testGenericInitializer" (func $class/testGenericInitializer)) + (export "memory" (memory $0)) + (export "test" (func $export:class/test)) + (start $~start) + (func $class/Animal.add (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + global.get $class/Animal.ONE + i32.add + return + ) + (func $class/Animal.sub (param $a f32) (param $b f32) (result f32) + local.get $a + local.get $b + f32.sub + global.get $class/Animal.ONE + f32.convert_i32_s + f32.add + return + ) + (func $start:class + i32.const 4 + i32.const 4 + i32.eq + drop + global.get $class/Animal.ONE + drop + i32.const 1 + i32.const 2 + call $class/Animal.add + drop + f32.const 1 + f32.const 2 + call $class/Animal.sub + drop + ) + (func $class/Animal#instanceAdd (param $this i32) (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + global.get $class/Animal.ONE + i32.add + return + ) + (func $class/Animal#instanceSub (param $this i32) (param $a f32) (param $b f32) (result f32) + local.get $a + local.get $b + f32.sub + global.get $class/Animal.ONE + f32.convert_i32_s + f32.add + return + ) + (func $class/Animal#get:one (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $class/Animal#get:two (param $this i32) (result i32) + local.get $this + i32.load16_s offset=4 + ) + (func $class/Animal#get:three (param $this i32) (result i32) + local.get $this + i32.load8_s offset=6 + ) + (func $class/Animal#set:one (param $this i32) (param $one i32) + local.get $this + local.get $one + i32.store + ) + (func $class/Animal#set:two (param $this i32) (param $two i32) + local.get $this + local.get $two + i32.store16 offset=4 + ) + (func $class/Animal#set:three (param $this i32) (param $three i32) + local.get $this + local.get $three + i32.store8 offset=6 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $class/GenericInitializer#set:foo (param $this i32) (param $foo i32) + local.get $this + local.get $foo + i32.store + local.get $this + local.get $foo + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $class/testGenericInitializer + i32.const 0 + call $class/GenericInitializer#constructor + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 432 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $class/GenericInitializer~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $class/GenericInitializer + block $class/Animal + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $class/GenericInitializer~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:class + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33344 + i32.const 33392 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $class/test (param $animal i32) (result i32) + (local $ptr i32) + (local $cls i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $animal + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 1 + i32.const 2 + call $class/Animal#instanceAdd + drop + local.get $animal + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + f32.const 1 + f32.const 2 + call $class/Animal#instanceSub + drop + local.get $animal + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $class/Animal#get:one + drop + local.get $animal + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $class/Animal#get:two + drop + local.get $animal + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $class/Animal#get:three + drop + local.get $animal + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + i32.add + call $class/Animal#set:one + local.get $animal + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 1 + i32.const 1 + i32.add + call $class/Animal#set:two + local.get $animal + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 1 + i32.const 1 + i32.add + i32.const 1 + i32.add + call $class/Animal#set:three + local.get $animal + local.set $ptr + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.tee $cls + i32.store offset=4 + local.get $cls + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 480 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $class/GenericInitializer#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $class/GenericInitializer#set:foo + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:class/test (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class/test + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/class.json b/tests/compiler/class.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/class.json +++ b/tests/compiler/class.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat deleted file mode 100644 index 2b4cd885ea..0000000000 --- a/tests/compiler/class.optimized.wat +++ /dev/null @@ -1,166 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "test" (func $class/test)) - (export "testGenericInitializer" (func $class/testGenericInitializer)) - (start $~start) - (func $class/test (param $0 i32) (result i32) - local.get $0 - i32.load - drop - local.get $0 - i32.load16_s offset=4 - drop - local.get $0 - i32.load8_s offset=6 - drop - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.const 2 - i32.store16 offset=4 - local.get $0 - i32.const 3 - i32.store8 offset=6 - local.get $0 - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $5 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $class/testGenericInitializer - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - i32.const 16 - i32.const 5 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $1 - local.get $0 - i32.load - drop - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.store - ) - (func $~start - i32.const 1120 - global.set $~lib/rt/stub/offset - ) -) diff --git a/tests/compiler/class.release.wat b/tests/compiler/class.release.wat new file mode 100644 index 0000000000..992b686367 --- /dev/null +++ b/tests/compiler/class.release.wat @@ -0,0 +1,1932 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34336)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) ",") + (data $8.1 (i32.const 1448) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $9 (i32.const 1484) ",") + (data $9.1 (i32.const 1496) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $10 (i32.const 1536) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02\t") + (export "testGenericInitializer" (func $class/testGenericInitializer)) + (export "memory" (memory $0)) + (export "test" (func $export:class/test)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$139 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34336 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$139 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34336 + i32.const 35908 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34336 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34336 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34336 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34336 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$71 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) + (func $class/testGenericInitializer + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/array/Array#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $2 + local.get $1 + call $~lib/array/Array#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 32 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + call $~lib/array/Array#set:buffer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $class/GenericInitializer + block $class/Animal + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.lt_s + if + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34336 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + ) + (func $export:class/test (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load16_s offset=4 + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load8_s offset=6 + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store16 offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + i32.store8 offset=6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat deleted file mode 100644 index e0c7e9799a..0000000000 --- a/tests/compiler/class.untouched.wat +++ /dev/null @@ -1,568 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_f32_f32_=>_f32 (func (param i32 f32 f32) (result f32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (table $0 1 funcref) - (global $class/Animal.ONE (mut i32) (i32.const 1)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 108)) - (export "memory" (memory $0)) - (export "test" (func $class/test)) - (export "testGenericInitializer" (func $class/testGenericInitializer)) - (start $~start) - (func $class/Animal.add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - global.get $class/Animal.ONE - i32.add - ) - (func $class/Animal.sub (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - f32.sub - global.get $class/Animal.ONE - f32.convert_i32_s - f32.add - ) - (func $start:class - i32.const 4 - i32.const 4 - i32.eq - drop - global.get $class/Animal.ONE - drop - i32.const 1 - i32.const 2 - call $class/Animal.add - drop - f32.const 1 - f32.const 2 - call $class/Animal.sub - drop - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $class/Animal#instanceAdd (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 - local.get $2 - i32.add - global.get $class/Animal.ONE - i32.add - ) - (func $class/Animal#instanceSub (param $0 i32) (param $1 f32) (param $2 f32) (result f32) - local.get $1 - local.get $2 - f32.sub - global.get $class/Animal.ONE - f32.convert_i32_s - f32.add - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $class/test (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 1 - i32.const 2 - call $class/Animal#instanceAdd - drop - local.get $0 - f32.const 1 - f32.const 2 - call $class/Animal#instanceSub - drop - local.get $0 - i32.load - drop - local.get $0 - i32.load16_s offset=4 - drop - local.get $0 - i32.load8_s offset=6 - drop - local.get $0 - i32.const 0 - i32.const 1 - i32.add - i32.store - local.get $0 - i32.const 1 - i32.const 1 - i32.add - i32.store16 offset=4 - local.get $0 - i32.const 1 - i32.const 1 - i32.add - i32.const 1 - i32.add - i32.store8 offset=6 - local.get $0 - local.set $1 - local.get $1 - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - local.set $5 - local.get $6 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $class/GenericInitializer#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - i32.store - local.get $0 - ) - (func $class/testGenericInitializer - i32.const 0 - call $class/GenericInitializer#constructor - call $~lib/rt/stub/__release - ) - (func $~start - call $start:class - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) -) diff --git a/tests/compiler/closure.json b/tests/compiler/closure.json index 1a61979c47..043415b403 100644 --- a/tests/compiler/closure.json +++ b/tests/compiler/closure.json @@ -1,11 +1,17 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "AS100: Not implemented: Closures", + "$local1; // closure 1", "AS100: Not implemented: Closures", - "Cannot find name '$local0'.", + "$local0; // closure 2", + "AS100: Not implemented: Closures", + "$local0; // closure 3", + "AS100: Not implemented: Closures", + "$local0(123); // closure 4", + "AS100: Not implemented: Closures", + "$local0 = 10; // closure 5", "EOF" ] -} \ No newline at end of file +} diff --git a/tests/compiler/closure.ts b/tests/compiler/closure.ts index cd1bca4d89..26ba15304b 100644 --- a/tests/compiler/closure.ts +++ b/tests/compiler/closure.ts @@ -1,6 +1,6 @@ function testParam($local0: i32, $local1: i32): (value: i32) => i32 { return function inner(value: i32) { - return $local1; // closure + return $local1; // closure 1 }; } testParam(1, 2); @@ -8,17 +8,32 @@ testParam(1, 2); function testVar(): (value: i32) => i32 { var $local0 = 0; return function inner(value: i32) { - return $local0; // closure + return $local0; // closure 2 }; } testVar(); function testLet(): (value: i32) => i32 { let $local0 = 0; - return function inner(value: i32) { - return $local0; // closure + return function inner(value: i32): i32 { + return $local0; // closure 3 }; } testLet(); +function testFuncParam($local0: (x: i32) => void): () => void { + return () => { + $local0(123); // closure 4 + }; +} +testFuncParam((x: i32) => {}); + +function testAssign(): (value: i32) => void { + let $local0 = 0; + return function inner(value: i32): void { + $local0 = 10; // closure 5 + }; +} +testAssign(); + ERROR("EOF"); diff --git a/tests/compiler/comma.debug.wat b/tests/compiler/comma.debug.wat new file mode 100644 index 0000000000..e329144ab1 --- /dev/null +++ b/tests/compiler/comma.debug.wat @@ -0,0 +1,188 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $comma/a (mut i32) (i32.const 0)) + (global $comma/b (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:comma + (local $0 i32) + (local $c i32) + global.get $comma/a + local.tee $0 + i32.const 1 + i32.add + global.set $comma/a + local.get $0 + global.set $comma/b + global.get $comma/a + drop + global.get $comma/a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $comma/b + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $comma/a + i32.const 1 + i32.add + global.set $comma/a + global.get $comma/a + global.set $comma/b + global.get $comma/a + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $comma/b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $comma/b + global.get $comma/b + global.set $comma/a + global.get $comma/a + i32.const 1 + i32.add + global.set $comma/a + global.get $comma/a + global.set $comma/b + global.get $comma/a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $comma/b + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $comma/a + i32.const 1 + i32.add + global.set $comma/a + global.get $comma/a + global.set $comma/b + global.get $comma/b + global.set $comma/a + global.get $comma/a + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $comma/b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $c + loop $for-loop|0 + local.get $c + global.get $comma/a + i32.lt_s + if + global.get $comma/a + i32.const 1 + i32.sub + global.set $comma/a + local.get $c + i32.const 1 + i32.add + local.set $c + br $for-loop|0 + end + end + local.get $c + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + i32.const 2 + drop + i32.const 3 + drop + ) + (func $~start + call $start:comma + ) +) diff --git a/tests/compiler/comma.json b/tests/compiler/comma.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/comma.json +++ b/tests/compiler/comma.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/comma.optimized.wat b/tests/compiler/comma.optimized.wat deleted file mode 100644 index b8197dbcf8..0000000000 --- a/tests/compiler/comma.optimized.wat +++ /dev/null @@ -1,114 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s") - (global $comma/a (mut i32) (i32.const 0)) - (global $comma/b (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $start:comma - (local $0 i32) - (local $1 i32) - global.get $comma/a - local.tee $1 - i32.const 1 - i32.add - global.set $comma/a - local.get $1 - global.set $comma/b - global.get $comma/a - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $comma/b - if - i32.const 0 - i32.const 1040 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $comma/a - i32.const 1 - i32.add - global.set $comma/a - global.get $comma/a - global.set $comma/b - global.get $comma/a - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $comma/b - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $comma/b - i32.const 0 - global.set $comma/a - i32.const 1 - global.set $comma/a - i32.const 1 - global.set $comma/b - i32.const 2 - global.set $comma/a - i32.const 2 - global.set $comma/b - i32.const 2 - global.set $comma/a - loop $for-loop|0 - local.get $0 - global.get $comma/a - i32.lt_s - if - global.get $comma/a - i32.const 1 - i32.sub - global.set $comma/a - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $0 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:comma - ) -) diff --git a/tests/compiler/comma.release.wat b/tests/compiler/comma.release.wat new file mode 100644 index 0000000000..bf36eae36e --- /dev/null +++ b/tests/compiler/comma.release.wat @@ -0,0 +1,112 @@ +(module + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $comma/a (mut i32) (i32.const 0)) + (global $comma/b (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s") + (export "memory" (memory $0)) + (start $~start) + (func $~start + (local $0 i32) + (local $1 i32) + global.get $comma/a + local.tee $1 + i32.const 1 + i32.add + global.set $comma/a + local.get $1 + global.set $comma/b + global.get $comma/a + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $comma/b + if + i32.const 0 + i32.const 1056 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $comma/a + i32.const 1 + i32.add + global.set $comma/a + global.get $comma/a + global.set $comma/b + global.get $comma/a + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $comma/b + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $comma/b + i32.const 0 + global.set $comma/a + i32.const 1 + global.set $comma/a + i32.const 1 + global.set $comma/b + i32.const 2 + global.set $comma/a + i32.const 2 + global.set $comma/b + i32.const 2 + global.set $comma/a + loop $for-loop|0 + local.get $0 + global.get $comma/a + i32.lt_s + if + global.get $comma/a + i32.const 1 + i32.sub + global.set $comma/a + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + local.get $0 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/comma.untouched.wat b/tests/compiler/comma.untouched.wat deleted file mode 100644 index 0e4b88da07..0000000000 --- a/tests/compiler/comma.untouched.wat +++ /dev/null @@ -1,187 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s\00") - (table $0 1 funcref) - (global $comma/a (mut i32) (i32.const 0)) - (global $comma/b (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $start:comma - (local $0 i32) - (local $1 i32) - global.get $comma/a - local.tee $0 - i32.const 1 - i32.add - global.set $comma/a - local.get $0 - global.set $comma/b - global.get $comma/a - drop - global.get $comma/a - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $comma/b - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $comma/a - i32.const 1 - i32.add - global.set $comma/a - global.get $comma/a - global.set $comma/b - global.get $comma/a - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $comma/b - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $comma/b - global.get $comma/b - global.set $comma/a - global.get $comma/a - i32.const 1 - i32.add - global.set $comma/a - global.get $comma/a - global.set $comma/b - global.get $comma/a - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $comma/b - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $comma/a - i32.const 1 - i32.add - global.set $comma/a - global.get $comma/a - global.set $comma/b - global.get $comma/b - global.set $comma/a - global.get $comma/a - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $comma/b - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - global.get $comma/a - i32.lt_s - local.set $0 - local.get $0 - if - nop - global.get $comma/a - i32.const 1 - i32.sub - global.set $comma/a - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - i32.const 2 - drop - i32.const 3 - drop - ) - (func $~start - call $start:comma - ) -) diff --git a/tests/compiler/const-folding.debug.wat b/tests/compiler/const-folding.debug.wat new file mode 100644 index 0000000000..f3dfc817d6 --- /dev/null +++ b/tests/compiler/const-folding.debug.wat @@ -0,0 +1,73 @@ +(module + (type $0 (func)) + (type $1 (func (param i64) (result i64))) + (global $const-folding/w (mut i32) (i32.const 0)) + (global $const-folding/x (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "x" (global $const-folding/x)) + (export "test" (func $const-folding/test)) + (export "memory" (memory $0)) + (start $~start) + (func $start:const-folding + i32.const 42 + i32.const 1 + i32.shr_s + global.set $const-folding/w + global.get $const-folding/w + i32.const 252 + i32.and + global.get $const-folding/w + i32.const 1 + i32.shr_s + i32.or + global.set $const-folding/w + global.get $const-folding/w + global.set $const-folding/x + ) + (func $const-folding/test (param $value i64) (result i64) + (local $mod1 i64) + (local $mod2 i64) + (local $rlo i64) + (local $rhi i64) + i64.const -1 + local.set $mod1 + i64.const -1 + local.set $mod2 + local.get $value + i64.const 1 + i64.shl + local.set $rlo + local.get $rlo + local.get $mod2 + i64.const -1 + i64.xor + i64.and + local.set $rhi + local.get $rhi + local.get $rhi + i64.const 1 + i64.shl + i64.or + local.set $rhi + local.get $rhi + local.get $value + i64.const 63 + i64.shr_u + local.get $mod1 + i64.and + i64.or + local.set $rhi + local.get $rlo + local.get $rhi + i64.add + return + ) + (func $~start + call $start:const-folding + ) +) diff --git a/tests/compiler/const-folding.json b/tests/compiler/const-folding.json index 453cb07770..1bdd02b1be 100644 --- a/tests/compiler/const-folding.json +++ b/tests/compiler/const-folding.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } diff --git a/tests/compiler/const-folding.optimized.wat b/tests/compiler/const-folding.optimized.wat deleted file mode 100644 index 14b4c71317..0000000000 --- a/tests/compiler/const-folding.optimized.wat +++ /dev/null @@ -1,15 +0,0 @@ -(module - (type $i64_=>_i64 (func (param i64) (result i64))) - (memory $0 0) - (export "memory" (memory $0)) - (export "test" (func $const-folding/test)) - (func $const-folding/test (param $0 i64) (result i64) - local.get $0 - i64.const 1 - i64.shl - local.get $0 - i64.const 63 - i64.shr_u - i64.add - ) -) diff --git a/tests/compiler/const-folding.release.wat b/tests/compiler/const-folding.release.wat new file mode 100644 index 0000000000..bdd34a3c6c --- /dev/null +++ b/tests/compiler/const-folding.release.wat @@ -0,0 +1,23 @@ +(module + (type $0 (func (param i64) (result i64))) + (type $1 (func)) + (global $const-folding/x (mut i32) (i32.const 0)) + (memory $0 0) + (export "x" (global $const-folding/x)) + (export "test" (func $const-folding/test)) + (export "memory" (memory $0)) + (start $~start) + (func $const-folding/test (param $0 i64) (result i64) + local.get $0 + i64.const 1 + i64.shl + local.get $0 + i64.const 63 + i64.shr_u + i64.add + ) + (func $~start + i32.const 30 + global.set $const-folding/x + ) +) diff --git a/tests/compiler/const-folding.ts b/tests/compiler/const-folding.ts index a29303b891..621af082ab 100644 --- a/tests/compiler/const-folding.ts +++ b/tests/compiler/const-folding.ts @@ -1,3 +1,7 @@ +let w = 42 >> 1; +w = (w & 0xFC) | (w >> 1); +export const x = w; + export function test(value: u64): u64 { var mod1: u64 = -1; var mod2: u64 = -1; diff --git a/tests/compiler/const-folding.untouched.wat b/tests/compiler/const-folding.untouched.wat deleted file mode 100644 index 251ac9f6a8..0000000000 --- a/tests/compiler/const-folding.untouched.wat +++ /dev/null @@ -1,44 +0,0 @@ -(module - (type $i64_=>_i64 (func (param i64) (result i64))) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "test" (func $const-folding/test)) - (func $const-folding/test (param $0 i64) (result i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - i64.const -1 - local.set $1 - i64.const -1 - local.set $2 - local.get $0 - i64.const 1 - i64.shl - local.set $3 - local.get $3 - local.get $2 - i64.const -1 - i64.xor - i64.and - local.set $4 - local.get $4 - local.get $4 - i64.const 1 - i64.shl - i64.or - local.set $4 - local.get $4 - local.get $0 - i64.const 63 - i64.shr_u - local.get $1 - i64.and - i64.or - local.set $4 - local.get $3 - local.get $4 - i64.add - ) -) diff --git a/tests/compiler/constant-assign.json b/tests/compiler/constant-assign.json index 76d94db1ce..67ddc79096 100644 --- a/tests/compiler/constant-assign.json +++ b/tests/compiler/constant-assign.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "TS2540: Cannot assign to", "b = 3;", @@ -10,4 +9,4 @@ "TS2540: Cannot assign to", "a = 2;", "EOF" ] -} \ No newline at end of file +} diff --git a/tests/compiler/constructor-errors.json b/tests/compiler/constructor-errors.json new file mode 100644 index 0000000000..dd1ee8dbee --- /dev/null +++ b/tests/compiler/constructor-errors.json @@ -0,0 +1,23 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS2333: 'this' cannot be referenced in constructor arguments.", + "b: i32 = this.a, // TS2333", + "TS2333: 'this' cannot be referenced in constructor arguments.", + "c: i32 = this.foo() // TS2333", + "TS2333: 'this' cannot be referenced in constructor arguments.", + "e: i32 = this.d, // TS2333", + "TS2333: 'this' cannot be referenced in constructor arguments.", + "f: i32 = this.bar() // TS2333", + "TS2336: 'super' cannot be referenced in constructor arguments.", + "h: i32 = super.g, // TS2336", + "TS2336: 'super' cannot be referenced in constructor arguments.", + "i: i32 = super.baz() // TS2336", + "TS2336: 'super' cannot be referenced in constructor arguments.", + "j: i32 = super.g, // TS2336", + "TS2336: 'super' cannot be referenced in constructor arguments.", + "k: i32 = super.baz() // TS2336", + "EOF" + ] +} diff --git a/tests/compiler/constructor-errors.ts b/tests/compiler/constructor-errors.ts new file mode 100644 index 0000000000..5dc75efc7f --- /dev/null +++ b/tests/compiler/constructor-errors.ts @@ -0,0 +1,52 @@ +class CtorAccessThis { + a: i32 = 0; + constructor( + public b: i32 = this.a, // TS2333 + public c: i32 = this.foo() // TS2333 + ) {} + foo(): i32 { return 0; } +} + +new CtorAccessThis(); + +class CtorAccessThisInline { + d: i32 = 0; + @inline + constructor( + public e: i32 = this.d, // TS2333 + public f: i32 = this.bar() // TS2333 + ) {} + bar(): i32 { return 0; } +} + +new CtorAccessThisInline(); + +class CtorSuper { + g: i32 = 0; + baz(): i32 { return 0; } +} + +class CtorAccessSuper extends CtorSuper { + constructor( + public h: i32 = super.g, // TS2336 + public i: i32 = super.baz() // TS2336 + ) { + super(); + } +} + +new CtorAccessSuper(); + +class CtorAccessSuperInline extends CtorSuper { + @inline + constructor( + public j: i32 = super.g, // TS2336 + public k: i32 = super.baz() // TS2336 + ) { + super(); + } +} + +new CtorAccessSuperInline(); + +ERROR("EOF"); diff --git a/tests/compiler/constructor.debug.wat b/tests/compiler/constructor.debug.wat new file mode 100644 index 0000000000..9e1fc9db1d --- /dev/null +++ b/tests/compiler/constructor.debug.wat @@ -0,0 +1,3259 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $constructor/emptyCtor (mut i32) (i32.const 0)) + (global $constructor/emptyCtorWithFieldInit (mut i32) (i32.const 0)) + (global $constructor/emptyCtorWithFieldNoInit (mut i32) (i32.const 0)) + (global $constructor/emptyCtorWithFieldAccess (mut i32) (i32.const 0)) + (global $constructor/none (mut i32) (i32.const 0)) + (global $constructor/justFieldInit (mut i32) (i32.const 0)) + (global $constructor/justFieldNoInit (mut i32) (i32.const 0)) + (global $constructor/ctorReturns (mut i32) (i32.const 0)) + (global $constructor/b (mut i32) (i32.const 1)) + (global $constructor/ctorConditionallyReturns (mut i32) (i32.const 0)) + (global $constructor/ctorConditionallyReturnsThis (mut i32) (i32.const 0)) + (global $constructor/ctorFieldInitOrder (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 464)) + (global $~lib/memory/__data_end i32 (i32.const 532)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33300)) + (global $~lib/memory/__heap_base i32 (i32.const 33300)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00c\00o\00n\00s\00t\00r\00u\00c\00t\00o\00r\00.\00t\00s\00") + (data $9 (i32.const 464) "\10\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $constructor/EmptyCtorWithFieldInit#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $constructor/EmptyCtorWithFieldNoInit#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $constructor/EmptyCtorWithFieldAccess#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $constructor/JustFieldInit#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $constructor/JustFieldNoInit#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $constructor/CtorReturns#constructor (param $this i32) (result i32) + i32.const 0 + return + ) + (func $constructor/CtorFieldInitWithoutConstructor#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $constructor/CtorFieldInitWithoutConstructor#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $constructor/CtorFieldInitWithoutConstructor#set:b (param $this i32) (param $b i32) + local.get $this + local.get $b + i32.store offset=4 + ) + (func $constructor/CtorFieldInitWithoutConstructor#get:b (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $constructor/CtorFieldInitOrder#get:a (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $constructor/CtorFieldInitOrder#get:b (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $constructor/CtorFieldInitOrder#get:c (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $constructor/CtorFieldInitOrder#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store offset=4 + ) + (func $constructor/CtorFieldInitOrder#set:b (param $this i32) (param $b i32) + local.get $this + local.get $b + i32.store offset=8 + ) + (func $constructor/CtorFieldInitOrder#set:c (param $this i32) (param $c i32) + local.get $this + local.get $c + i32.store + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $constructor/emptyCtor + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldInit + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldNoInit + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldAccess + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/none + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldInit + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldNoInit + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorReturns + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorConditionallyReturns + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorConditionallyReturnsThis + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorFieldInitOrder + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $constructor/CtorFieldInitOrder + block $constructor/CtorFieldInitWithoutConstructor + block $constructor/CtorConditionallyReturnsThis + block $constructor/CtorConditionallyReturns + block $constructor/CtorReturns + block $constructor/JustFieldNoInit + block $constructor/JustFieldInit + block $constructor/None + block $constructor/EmptyCtorWithFieldAccess + block $constructor/EmptyCtorWithFieldNoInit + block $constructor/EmptyCtorWithFieldInit + block $constructor/EmptyCtor + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/EmptyCtorWithFieldAccess $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorReturns $constructor/CtorConditionallyReturns $constructor/CtorConditionallyReturnsThis $constructor/CtorFieldInitWithoutConstructor $constructor/CtorFieldInitOrder $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:constructor + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33328 + i32.const 33376 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $constructor/EmptyCtorWithFieldInit#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $constructor/EmptyCtorWithFieldInit#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $constructor/EmptyCtorWithFieldNoInit#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $constructor/EmptyCtorWithFieldNoInit#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $constructor/EmptyCtorWithFieldAccess#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $constructor/EmptyCtorWithFieldAccess#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $constructor/EmptyCtorWithFieldAccess#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $constructor/None#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $constructor/JustFieldInit#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $constructor/JustFieldInit#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $constructor/JustFieldNoInit#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $constructor/JustFieldNoInit#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $constructor/CtorFieldInitWithoutConstructor#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 10 + call $constructor/CtorFieldInitWithoutConstructor#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $constructor/CtorFieldInitWithoutConstructor#get:a + call $constructor/CtorFieldInitWithoutConstructor#set:b + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $constructor/CtorFieldInitOrder#constructor (param $this i32) (param $a i32) (param $b i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $a + call $constructor/CtorFieldInitOrder#set:a + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $b + call $constructor/CtorFieldInitOrder#set:b + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $constructor/CtorFieldInitOrder#get:a + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $constructor/CtorFieldInitOrder#get:b + i32.add + call $constructor/CtorFieldInitOrder#set:c + local.get $a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 101 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $constructor/CtorFieldInitOrder#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 102 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 103 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $constructor/CtorFieldInitOrder#get:b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 104 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $constructor/CtorFieldInitOrder#get:c + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 105 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $start:constructor + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $constructor/EmptyCtor#constructor + global.set $constructor/emptyCtor + i32.const 0 + call $constructor/EmptyCtorWithFieldInit#constructor + global.set $constructor/emptyCtorWithFieldInit + i32.const 0 + call $constructor/EmptyCtorWithFieldNoInit#constructor + global.set $constructor/emptyCtorWithFieldNoInit + i32.const 0 + call $constructor/EmptyCtorWithFieldAccess#constructor + global.set $constructor/emptyCtorWithFieldAccess + i32.const 0 + call $constructor/None#constructor + global.set $constructor/none + i32.const 0 + call $constructor/JustFieldInit#constructor + global.set $constructor/justFieldInit + i32.const 0 + call $constructor/JustFieldNoInit#constructor + global.set $constructor/justFieldNoInit + i32.const 0 + call $constructor/CtorReturns#constructor + global.set $constructor/ctorReturns + i32.const 0 + call $constructor/CtorConditionallyReturns#constructor + global.set $constructor/ctorConditionallyReturns + i32.const 0 + call $constructor/CtorConditionallyReturnsThis#constructor + global.set $constructor/ctorConditionallyReturnsThis + i32.const 0 + call $constructor/CtorFieldInitWithoutConstructor#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $constructor/CtorFieldInitWithoutConstructor#get:a + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $constructor/CtorFieldInitWithoutConstructor#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $constructor/CtorFieldInitWithoutConstructor#get:b + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.const 2 + call $constructor/CtorFieldInitOrder#constructor + global.set $constructor/ctorFieldInitOrder + global.get $constructor/ctorFieldInitOrder + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $constructor/CtorFieldInitOrder#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $constructor/ctorFieldInitOrder + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $constructor/CtorFieldInitOrder#get:b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $constructor/ctorFieldInitOrder + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $constructor/CtorFieldInitOrder#get:c + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $constructor/EmptyCtor#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $constructor/CtorConditionallyReturns#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $constructor/b + if + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $constructor/CtorConditionallyReturnsThis#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $constructor/b + if + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/constructor.json b/tests/compiler/constructor.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/constructor.json +++ b/tests/compiler/constructor.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat deleted file mode 100644 index bde23d72a2..0000000000 --- a/tests/compiler/constructor.optimized.wat +++ /dev/null @@ -1,142 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $5 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~start - (local $0 i32) - i32.const 1024 - global.set $~lib/rt/stub/offset - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - drop - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - i32.const 1 - i32.store - i32.const 4 - i32.const 5 - call $~lib/rt/stub/__alloc - i32.const 0 - i32.store - i32.const 4 - i32.const 6 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 1 - i32.store - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__alloc - drop - i32.const 4 - i32.const 8 - call $~lib/rt/stub/__alloc - i32.const 1 - i32.store - i32.const 4 - i32.const 9 - call $~lib/rt/stub/__alloc - i32.const 0 - i32.store - i32.const 0 - i32.const 11 - call $~lib/rt/stub/__alloc - drop - i32.const 0 - i32.const 12 - call $~lib/rt/stub/__alloc - drop - ) -) diff --git a/tests/compiler/constructor.release.wat b/tests/compiler/constructor.release.wat new file mode 100644 index 0000000000..bf036d6c77 --- /dev/null +++ b/tests/compiler/constructor.release.wat @@ -0,0 +1,2247 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (result i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $constructor/emptyCtor (mut i32) (i32.const 0)) + (global $constructor/emptyCtorWithFieldInit (mut i32) (i32.const 0)) + (global $constructor/emptyCtorWithFieldNoInit (mut i32) (i32.const 0)) + (global $constructor/emptyCtorWithFieldAccess (mut i32) (i32.const 0)) + (global $constructor/none (mut i32) (i32.const 0)) + (global $constructor/justFieldInit (mut i32) (i32.const 0)) + (global $constructor/justFieldNoInit (mut i32) (i32.const 0)) + (global $constructor/ctorConditionallyReturnsThis (mut i32) (i32.const 0)) + (global $constructor/ctorFieldInitOrder (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34324)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) ",") + (data $8.1 (i32.const 1448) "\02\00\00\00\1c\00\00\00c\00o\00n\00s\00t\00r\00u\00c\00t\00o\00r\00.\00t\00s") + (data $9 (i32.const 1488) "\10\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $constructor/emptyCtor + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldNoInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldAccess + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/none + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldNoInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorConditionallyReturnsThis + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorFieldInitOrder + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$153 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34324 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$153 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34336 + i32.const 35908 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34336 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34324 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34324 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34324 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $constructor/CtorFieldInitOrder + block $constructor/CtorFieldInitWithoutConstructor + block $constructor/CtorConditionallyReturnsThis + block $constructor/CtorConditionallyReturns + block $constructor/CtorReturns + block $constructor/JustFieldNoInit + block $constructor/JustFieldInit + block $constructor/None + block $constructor/EmptyCtorWithFieldAccess + block $constructor/EmptyCtorWithFieldNoInit + block $constructor/EmptyCtorWithFieldInit + block $constructor/EmptyCtor + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/EmptyCtorWithFieldAccess $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorReturns $constructor/CtorConditionallyReturns $constructor/CtorConditionallyReturnsThis $constructor/CtorFieldInitWithoutConstructor $constructor/CtorFieldInitOrder $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34324 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/emptyCtor + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/emptyCtorWithFieldInit + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/emptyCtorWithFieldNoInit + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/emptyCtorWithFieldAccess + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/none + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/justFieldInit + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/justFieldNoInit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 12 + call $~lib/rt/itcms/__new + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/ctorConditionallyReturnsThis + call $constructor/CtorFieldInitWithoutConstructor#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $constructor/CtorFieldInitWithoutConstructor#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=8 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 102 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 104 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 105 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/ctorFieldInitOrder + global.get $~lib/memory/__stack_pointer + global.get $constructor/ctorFieldInitOrder + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $constructor/ctorFieldInitOrder + local.tee $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $constructor/ctorFieldInitOrder + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $constructor/CtorFieldInitWithoutConstructor#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/constructor.ts b/tests/compiler/constructor.ts index 7a40fbc040..f8acd9c2e4 100644 --- a/tests/compiler/constructor.ts +++ b/tests/compiler/constructor.ts @@ -86,3 +86,27 @@ class CtorConditionallyReturnsThis { } var ctorConditionallyReturnsThis = new CtorConditionallyReturnsThis(); + +class CtorFieldInitWithoutConstructor { + a: i32 = 10; + b: i32 = this.a; +} +assert(new CtorFieldInitWithoutConstructor().a == 10); +assert(new CtorFieldInitWithoutConstructor().b == 10); + + +class CtorFieldInitOrder { + c: i32 = this.a + this.b; + constructor(public a: i32, public b: i32 = 2) { + assert(a == 1); + assert(this.a == 1); + assert(b == 2); + assert(this.b == 2); + assert(this.c == 3); + } +} + +var ctorFieldInitOrder = new CtorFieldInitOrder(1); +assert(ctorFieldInitOrder.a == 1); +assert(ctorFieldInitOrder.b == 2); +assert(ctorFieldInitOrder.c == 3); diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat deleted file mode 100644 index a733d1484f..0000000000 --- a/tests/compiler/constructor.untouched.wat +++ /dev/null @@ -1,335 +0,0 @@ -(module - (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 0) - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $constructor/emptyCtor (mut i32) (i32.const 0)) - (global $constructor/emptyCtorWithFieldInit (mut i32) (i32.const 0)) - (global $constructor/emptyCtorWithFieldNoInit (mut i32) (i32.const 0)) - (global $constructor/emptyCtorWithFieldAccess (mut i32) (i32.const 0)) - (global $constructor/none (mut i32) (i32.const 0)) - (global $constructor/justFieldInit (mut i32) (i32.const 0)) - (global $constructor/justFieldNoInit (mut i32) (i32.const 0)) - (global $constructor/ctorReturns (mut i32) (i32.const 0)) - (global $constructor/b (mut i32) (i32.const 1)) - (global $constructor/ctorConditionallyReturns (mut i32) (i32.const 0)) - (global $constructor/ctorConditionallyReturnsThis (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $constructor/EmptyCtor#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $constructor/EmptyCtorWithFieldInit#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - ) - (func $constructor/EmptyCtorWithFieldNoInit#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $constructor/EmptyCtorWithFieldAccess#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 6 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 1 - i32.store - local.get $0 - ) - (func $constructor/None#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $constructor/JustFieldInit#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 8 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - ) - (func $constructor/JustFieldNoInit#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 9 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $constructor/CtorReturns#constructor (param $0 i32) (result i32) - (local $1 i32) - i32.const 0 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $constructor/CtorConditionallyReturns#constructor (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 11 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - global.get $constructor/b - if - i32.const 0 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - return - end - local.get $0 - ) - (func $constructor/CtorConditionallyReturnsThis#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 12 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - global.get $constructor/b - if - local.get $0 - return - end - local.get $0 - ) - (func $start:constructor - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - call $constructor/EmptyCtor#constructor - global.set $constructor/emptyCtor - i32.const 0 - call $constructor/EmptyCtorWithFieldInit#constructor - global.set $constructor/emptyCtorWithFieldInit - i32.const 0 - call $constructor/EmptyCtorWithFieldNoInit#constructor - global.set $constructor/emptyCtorWithFieldNoInit - i32.const 0 - call $constructor/EmptyCtorWithFieldAccess#constructor - global.set $constructor/emptyCtorWithFieldAccess - i32.const 0 - call $constructor/None#constructor - global.set $constructor/none - i32.const 0 - call $constructor/JustFieldInit#constructor - global.set $constructor/justFieldInit - i32.const 0 - call $constructor/JustFieldNoInit#constructor - global.set $constructor/justFieldNoInit - i32.const 0 - call $constructor/CtorReturns#constructor - global.set $constructor/ctorReturns - i32.const 0 - call $constructor/CtorConditionallyReturns#constructor - global.set $constructor/ctorConditionallyReturns - i32.const 0 - call $constructor/CtorConditionallyReturnsThis#constructor - global.set $constructor/ctorConditionallyReturnsThis - ) - (func $~start - call $start:constructor - ) -) diff --git a/tests/compiler/continue.debug.wat b/tests/compiler/continue.debug.wat new file mode 100644 index 0000000000..c99183e195 --- /dev/null +++ b/tests/compiler/continue.debug.wat @@ -0,0 +1,39 @@ +(module + (type $0 (func (param i32))) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "testInherit" (func $continue/testInherit)) + (export "memory" (memory $0)) + (func $continue/testInherit (param $b i32) + (local $i i32) + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + i32.const 10 + i32.lt_s + if + block $for-continue|0 + local.get $b + if + local.get $i + i32.const 5 + i32.eq + if + br $for-continue|0 + end + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + ) +) diff --git a/tests/compiler/continue.json b/tests/compiler/continue.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/continue.json +++ b/tests/compiler/continue.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/continue.optimized.wat b/tests/compiler/continue.optimized.wat deleted file mode 100644 index c4032c074a..0000000000 --- a/tests/compiler/continue.optimized.wat +++ /dev/null @@ -1,30 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (memory $0 0) - (export "memory" (memory $0)) - (export "testInherit" (func $continue/testInherit)) - (func $continue/testInherit (param $0 i32) - (local $1 i32) - loop $for-loop|0 - local.get $1 - i32.const 10 - i32.lt_s - if - block $for-continue|0 - local.get $0 - i32.const 0 - local.get $1 - i32.const 5 - i32.eq - select - br_if $for-continue|0 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - ) -) diff --git a/tests/compiler/continue.release.wat b/tests/compiler/continue.release.wat new file mode 100644 index 0000000000..a05249d212 --- /dev/null +++ b/tests/compiler/continue.release.wat @@ -0,0 +1,30 @@ +(module + (type $0 (func (param i32))) + (memory $0 0) + (export "testInherit" (func $continue/testInherit)) + (export "memory" (memory $0)) + (func $continue/testInherit (param $0 i32) + (local $1 i32) + loop $for-loop|0 + local.get $1 + i32.const 10 + i32.lt_s + if + block $for-continue|0 + local.get $0 + i32.const 0 + local.get $1 + i32.const 5 + i32.eq + select + br_if $for-continue|0 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + ) +) diff --git a/tests/compiler/continue.untouched.wat b/tests/compiler/continue.untouched.wat deleted file mode 100644 index 6b5f9ae38d..0000000000 --- a/tests/compiler/continue.untouched.wat +++ /dev/null @@ -1,38 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "testInherit" (func $continue/testInherit)) - (func $continue/testInherit (param $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - i32.const 10 - i32.lt_s - local.set $2 - local.get $2 - if - block $for-continue|0 - local.get $0 - if - local.get $1 - i32.const 5 - i32.eq - if - br $for-continue|0 - end - end - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - ) -) diff --git a/tests/compiler/converge.debug.wat b/tests/compiler/converge.debug.wat new file mode 100644 index 0000000000..7acd820bd3 --- /dev/null +++ b/tests/compiler/converge.debug.wat @@ -0,0 +1,13 @@ +(module + (type $0 (func)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "test" (func $converge/test)) + (export "memory" (memory $0)) + (func $converge/test + ) +) diff --git a/tests/compiler/converge.json b/tests/compiler/converge.json index 47fbd0fb4f..9208cfe9d6 100644 --- a/tests/compiler/converge.json +++ b/tests/compiler/converge.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--converge" ] -} \ No newline at end of file +} diff --git a/tests/compiler/converge.optimized.wat b/tests/compiler/converge.optimized.wat deleted file mode 100644 index 46afa2e4ab..0000000000 --- a/tests/compiler/converge.optimized.wat +++ /dev/null @@ -1,9 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (export "memory" (memory $0)) - (export "test" (func $converge/test)) - (func $converge/test - nop - ) -) diff --git a/tests/compiler/converge.release.wat b/tests/compiler/converge.release.wat new file mode 100644 index 0000000000..7bbb53503e --- /dev/null +++ b/tests/compiler/converge.release.wat @@ -0,0 +1,8 @@ +(module + (type $0 (func)) + (memory $0 0) + (export "test" (func $converge/test)) + (export "memory" (memory $0)) + (func $converge/test + ) +) diff --git a/tests/compiler/converge.untouched.wat b/tests/compiler/converge.untouched.wat deleted file mode 100644 index ce4bd8d183..0000000000 --- a/tests/compiler/converge.untouched.wat +++ /dev/null @@ -1,10 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "test" (func $converge/test)) - (func $converge/test - nop - ) -) diff --git a/tests/compiler/declare.debug.wat b/tests/compiler/declare.debug.wat new file mode 100644 index 0000000000..5bc4580d52 --- /dev/null +++ b/tests/compiler/declare.debug.wat @@ -0,0 +1,49 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (import "declare" "externalConstant" (global $declare/externalConstant i32)) + (import "declare" "my.externalConstant" (global $declare/my.externalConstant i32)) + (import "declare" "externalFunction" (func $declare/externalFunction)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:declare + call $declare/externalFunction + global.get $declare/externalConstant + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $declare/my.externalFunction + global.get $declare/my.externalConstant + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:declare + ) +) diff --git a/tests/compiler/declare.js b/tests/compiler/declare.js index e99808baa3..931d65134a 100644 --- a/tests/compiler/declare.js +++ b/tests/compiler/declare.js @@ -1,8 +1,8 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports.declare = { externalFunction: function() { /* nop */ }, externalConstant: 1, "my.externalFunction": function() { /* nop */ }, "my.externalConstant": 2 }; -}; +} diff --git a/tests/compiler/declare.json b/tests/compiler/declare.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/declare.json +++ b/tests/compiler/declare.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/declare.optimized.wat b/tests/compiler/declare.optimized.wat deleted file mode 100644 index 33b9a04b8c..0000000000 --- a/tests/compiler/declare.optimized.wat +++ /dev/null @@ -1,39 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "declare" "externalConstant" (global $declare/externalConstant i32)) - (import "declare" "my.externalConstant" (global $declare/my.externalConstant i32)) - (import "declare" "externalFunction" (func $declare/externalFunction)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) - (memory $0 1) - (data (i32.const 1024) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s") - (export "memory" (memory $0)) - (start $~start) - (func $~start - call $declare/externalFunction - global.get $declare/externalConstant - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $declare/my.externalFunction - global.get $declare/my.externalConstant - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/declare.release.wat b/tests/compiler/declare.release.wat new file mode 100644 index 0000000000..93d8dcee02 --- /dev/null +++ b/tests/compiler/declare.release.wat @@ -0,0 +1,40 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (import "declare" "externalConstant" (global $declare/externalConstant i32)) + (import "declare" "my.externalConstant" (global $declare/my.externalConstant i32)) + (import "declare" "externalFunction" (func $declare/externalFunction)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s") + (export "memory" (memory $0)) + (start $~start) + (func $~start + call $declare/externalFunction + global.get $declare/externalConstant + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $declare/my.externalFunction + global.get $declare/my.externalConstant + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/declare.untouched.wat b/tests/compiler/declare.untouched.wat deleted file mode 100644 index 9ed274ac1c..0000000000 --- a/tests/compiler/declare.untouched.wat +++ /dev/null @@ -1,45 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "declare" "externalConstant" (global $declare/externalConstant i32)) - (import "declare" "my.externalConstant" (global $declare/my.externalConstant i32)) - (import "declare" "externalFunction" (func $declare/externalFunction)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) - (memory $0 1) - (data (i32.const 16) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00") - (table $0 1 funcref) - (export "memory" (memory $0)) - (start $~start) - (func $start:declare - call $declare/externalFunction - global.get $declare/externalConstant - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $declare/my.externalFunction - global.get $declare/my.externalConstant - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:declare - ) -) diff --git a/tests/compiler/do.debug.wat b/tests/compiler/do.debug.wat new file mode 100644 index 0000000000..cb3313e590 --- /dev/null +++ b/tests/compiler/do.debug.wat @@ -0,0 +1,3145 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $do/ran (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 448)) + (global $~lib/memory/__data_end i32 (i32.const 472)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33240)) + (global $~lib/memory/__heap_base i32 (i32.const 33240)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00d\00o\00.\00t\00s\00\00\00") + (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 448) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $do/testSimple + (local $n i32) + (local $m i32) + i32.const 10 + local.set $n + i32.const 0 + local.set $m + loop $do-loop|0 + local.get $n + i32.const 1 + i32.sub + local.set $n + local.get $m + i32.const 1 + i32.add + local.set $m + local.get $n + br_if $do-loop|0 + end + local.get $n + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $m + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testEmpty + (local $n i32) + (local $1 i32) + i32.const 10 + local.set $n + loop $do-loop|0 + local.get $n + local.tee $1 + i32.const 1 + i32.sub + local.set $n + local.get $1 + br_if $do-loop|0 + end + local.get $n + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testNested + (local $n i32) + (local $m i32) + (local $o i32) + i32.const 10 + local.set $n + i32.const 0 + local.set $m + i32.const 0 + local.set $o + loop $do-loop|0 + local.get $n + i32.const 1 + i32.sub + local.set $n + local.get $m + i32.const 1 + i32.add + local.set $m + loop $do-loop|1 + local.get $n + i32.const 1 + i32.sub + local.set $n + local.get $o + i32.const 1 + i32.add + local.set $o + local.get $n + br_if $do-loop|1 + end + local.get $n + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $o + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 40 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $n + br_if $do-loop|0 + end + local.get $n + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $m + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $o + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testAlwaysTrue + (local $i i32) + i32.const 0 + local.set $i + block $do-break|0 + loop $do-loop|0 + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 10 + i32.eq + if + br $do-break|0 + end + i32.const 1 + br_if $do-loop|0 + end + end + local.get $i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testAlwaysTrueNeverBreaks (result i32) + (local $i i32) + i32.const 0 + local.set $i + loop $do-loop|0 + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 10 + i32.eq + if + local.get $i + return + end + i32.const 1 + br_if $do-loop|0 + end + unreachable + ) + (func $do/testAlwaysFalse + (local $i i32) + i32.const 0 + local.set $i + loop $do-loop|0 + local.get $i + i32.const 1 + i32.add + local.set $i + i32.const 0 + br_if $do-loop|0 + end + local.get $i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 77 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testAlwaysBreaks + (local $i i32) + i32.const 0 + local.set $i + block $do-break|0 + loop $do-loop|0 + local.get $i + i32.const 1 + i32.add + local.set $i + br $do-break|0 + end + unreachable + end + local.get $i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 90 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testAlwaysReturns + (local $i i32) + i32.const 0 + local.set $i + loop $do-loop|0 + local.get $i + i32.const 1 + i32.add + local.set $i + i32.const 1 + global.set $do/ran + return + end + unreachable + ) + (func $do/testContinue + (local $i i32) + i32.const 0 + local.set $i + block $do-break|0 + loop $do-loop|0 + block $do-continue|0 + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 10 + i32.eq + if + br $do-break|0 + end + br $do-continue|0 + end + local.get $i + br_if $do-loop|0 + end + end + local.get $i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testNestedContinue + (local $i i32) + (local $j i32) + i32.const 0 + local.set $i + i32.const 0 + local.set $j + block $do-break|0 + loop $do-loop|0 + block $do-continue|0 + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 10 + i32.eq + if + br $do-break|0 + end + block $do-break|1 + loop $do-loop|1 + block $do-continue|1 + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 10 + i32.rem_s + i32.const 0 + i32.eq + if + br $do-break|1 + end + br $do-continue|1 + end + local.get $j + br_if $do-loop|1 + end + end + br $do-continue|0 + end + local.get $i + br_if $do-loop|0 + end + end + local.get $i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 134 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $j + i32.const 90 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 256 + i32.const 320 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 128 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 64 + i32.const 400 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 64 + i32.const 128 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $do/testRef + (local $i i32) + (local $ref i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $i + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $do/Ref#constructor + local.tee $ref + i32.store + loop $do-loop|0 + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 10 + i32.eq + if + i32.const 0 + local.set $ref + else + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $do/Ref#constructor + local.tee $ref + i32.store + end + local.get $ref + br_if $do-loop|0 + end + local.get $i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ref + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 151 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $do/getRef (result i32) + i32.const 0 + call $do/Ref#constructor + return + ) + (func $do/testRefAutorelease + (local $i i32) + (local $ref i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $i + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $do/Ref#constructor + local.tee $ref + i32.store + block $do-break|0 + loop $do-loop|0 + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 10 + i32.eq + if + i32.const 0 + local.set $ref + br $do-break|0 + end + call $do/getRef + br_if $do-loop|0 + end + end + local.get $i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 170 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ref + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 171 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $start:do + i32.const 0 + global.set $do/ran + call $do/testSimple + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testEmpty + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testNested + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 49 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testAlwaysTrue + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $do/testAlwaysTrueNeverBreaks + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testAlwaysFalse + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 82 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testAlwaysBreaks + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testAlwaysReturns + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testContinue + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testNestedContinue + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $do/testRef + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testRefAutorelease + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 176 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $~lib/rt/itcms/__collect + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $do/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $do/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:do + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33264 + i32.const 33312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $do/Ref#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/do.json b/tests/compiler/do.json index 59c251c705..a3487fc1c7 100644 --- a/tests/compiler/do.json +++ b/tests/compiler/do.json @@ -1,7 +1,3 @@ { - "asc_flags": [ - "--runtime half", - "--explicitStart", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + "asc_rtrace": true +} diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat deleted file mode 100644 index 565621a65f..0000000000 --- a/tests/compiler/do.optimized.wat +++ /dev/null @@ -1,1499 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00o\00.\00t\00s") - (data (i32.const 1056) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1104) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1168) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (global $do/ran (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $do/testNested - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 10 - local.set $0 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - loop $do-continue|1 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - br_if $do-continue|1 - end - local.get $0 - if - i32.const 0 - i32.const 1040 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 40 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - br_if $do-continue|0 - end - local.get $0 - if - i32.const 0 - i32.const 1040 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1072 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1072 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1216 - local.set $1 - i32.const 1216 - i32.const 0 - i32.store - i32.const 2784 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1216 - i32.const 2800 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1216 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1072 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.lt_u - if - i32.const 0 - i32.const 1072 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.tee $3 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - i32.const 16 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - call $~lib/rt/rtrace/onalloc - local.get $1 - ) - (func $do/Ref#constructor (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - local.tee $1 - i32.const 1216 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - local.tee $0 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1184 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/rtrace/onincrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1184 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1216 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $start:do - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - global.set $do/ran - i32.const 10 - local.set $0 - loop $do-continue|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - br_if $do-continue|0 - end - local.get $0 - if - i32.const 0 - i32.const 1040 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran - i32.const 10 - local.set $1 - loop $do-continue|00 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $0 - br_if $do-continue|00 - end - local.get $1 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran - call $do/testNested - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 49 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - i32.const 0 - local.set $0 - loop $do-continue|01 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.ne - br_if $do-continue|01 - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - i32.const 0 - local.set $0 - loop $do-continue|02 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.ne - br_if $do-continue|02 - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran - i32.const 0 - local.set $0 - loop $do-continue|03 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.ne - br_if $do-continue|03 - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - loop $do-continue|04 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.const 10 - i32.ne - if - loop $do-continue|1 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.rem_s - br_if $do-continue|1 - end - br $do-continue|04 - end - end - local.get $1 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 134 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 90 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran - call $do/Ref#constructor - local.set $1 - loop $do-continue|05 - local.get $2 - i32.const 1 - i32.add - local.tee $2 - i32.const 10 - i32.eq - if - i32.const 0 - local.set $0 - local.get $1 - if - local.get $1 - call $~lib/rt/pure/__release - end - else - call $do/Ref#constructor - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $0 - local.tee $1 - br_if $do-continue|05 - end - local.get $2 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 150 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - if - i32.const 0 - i32.const 1040 - i32.const 151 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - local.get $1 - call $~lib/rt/pure/__release - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - i32.const 0 - local.set $2 - call $do/Ref#constructor - local.set $1 - loop $do-continue|06 - block $do-break|0 - local.get $2 - i32.const 1 - i32.add - local.tee $2 - i32.const 10 - i32.eq - if - local.get $1 - if - local.get $1 - call $~lib/rt/pure/__release - end - i32.const 0 - local.set $1 - br $do-break|0 - end - call $do/Ref#constructor - local.tee $0 - call $~lib/rt/pure/__release - local.get $0 - br_if $do-continue|06 - end - end - local.get $2 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 170 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - if - i32.const 0 - i32.const 1040 - i32.const 171 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - local.get $1 - call $~lib/rt/pure/__release - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 176 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:do - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1184 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1216 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1184 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1184 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/do.release.wat b/tests/compiler/do.release.wat new file mode 100644 index 0000000000..1b1313c49a --- /dev/null +++ b/tests/compiler/do.release.wat @@ -0,0 +1,1909 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34264)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00d\00o\00.\00t\00s") + (data $1 (i32.const 1068) "<") + (data $1.1 (i32.const 1080) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1132) "<") + (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1260) "<") + (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1324) ",") + (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1404) "<") + (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1472) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$125 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34264 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$125 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1472 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34272 + i32.const 0 + i32.store + i32.const 35840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34272 + i32.const 35844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34264 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34264 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34264 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $start:do + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 10 + local.set $0 + loop $do-loop|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + br_if $do-loop|0 + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $do-loop|00 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + br_if $do-loop|00 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + i32.const 0 + local.set $1 + loop $do-loop|01 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + loop $do-loop|1 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + br_if $do-loop|1 + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + br_if $do-loop|01 + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $do-loop|02 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $do-loop|02 + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $do-loop|03 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $do-loop|03 + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $do-loop|09 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + i32.const 0 + local.get $0 + select + br_if $do-loop|09 + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + i32.const 0 + local.set $1 + loop $do-loop|011 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + if + loop $do-loop|113 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 10 + i32.rem_s + i32.const 0 + local.get $1 + select + br_if $do-loop|113 + end + local.get $0 + br_if $do-loop|011 + end + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 134 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 90 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 34264 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + call $do/Ref#constructor + i32.store + loop $do-loop|05 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $0 + else + global.get $~lib/memory/__stack_pointer + call $do/Ref#constructor + local.tee $0 + i32.store + end + local.get $0 + br_if $do-loop|05 + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 151 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + call $do/Ref#constructor + local.tee $1 + i32.store + loop $do-loop|08 + block $do-break|06 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $1 + br $do-break|06 + end + call $do/Ref#constructor + br_if $do-loop|08 + end + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 170 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + if + i32.const 0 + i32.const 1056 + i32.const 171 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + return + end + i32.const 34288 + i32.const 34336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $do/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $do/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + call $start:do + ) + (func $do/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34288 + i32.const 34336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/do.ts b/tests/compiler/do.ts index c7de4222eb..a432165aad 100644 --- a/tests/compiler/do.ts +++ b/tests/compiler/do.ts @@ -174,3 +174,5 @@ function testRefAutorelease(): void { ran = false; testRefAutorelease(); assert(ran); + +__collect(); diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat deleted file mode 100644 index eacfebc0d4..0000000000 --- a/tests/compiler/do.untouched.wat +++ /dev/null @@ -1,2447 +0,0 @@ -(module - (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))) - (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_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00o\00.\00t\00s\00") - (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (table $0 1 funcref) - (global $do/ran (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 208)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $do/testSimple - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 10 - local.set $0 - i32.const 0 - local.set $1 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.set $2 - local.get $2 - br_if $do-continue|0 - end - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - ) - (func $do/testEmpty - (local $0 i32) - (local $1 i32) - i32.const 10 - local.set $0 - loop $do-continue|0 - nop - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - local.set $1 - local.get $1 - br_if $do-continue|0 - end - local.get $0 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - ) - (func $do/testNested - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 10 - local.set $0 - i32.const 0 - local.set $1 - i32.const 0 - local.set $2 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - loop $do-continue|1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - local.set $3 - local.get $3 - br_if $do-continue|1 - end - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 40 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - br_if $do-continue|0 - end - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - ) - (func $do/testAlwaysTrue - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - block $do-break|0 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.eq - if - br $do-break|0 - end - i32.const 1 - local.set $1 - local.get $1 - br_if $do-continue|0 - end - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - ) - (func $do/testAlwaysTrueNeverBreaks (result i32) - (local $0 i32) - i32.const 0 - local.set $0 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.eq - if - local.get $0 - return - end - i32.const 1 - drop - br $do-continue|0 - end - unreachable - ) - (func $do/testAlwaysFalse - (local $0 i32) - i32.const 0 - local.set $0 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - i32.const 0 - drop - end - local.get $0 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 77 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - ) - (func $do/testAlwaysBreaks - (local $0 i32) - i32.const 0 - local.set $0 - block $do-break|0 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $do-break|0 - end - unreachable - end - local.get $0 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 90 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - ) - (func $do/testAlwaysReturns - (local $0 i32) - i32.const 0 - local.set $0 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - i32.const 1 - global.set $do/ran - return - end - unreachable - ) - (func $do/testContinue - (local $0 i32) - i32.const 0 - local.set $0 - block $do-break|0 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.eq - if - br $do-break|0 - end - br $do-continue|0 - end - unreachable - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - ) - (func $do/testNestedContinue - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - i32.const 0 - local.set $1 - block $do-break|0 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.eq - if - br $do-break|0 - end - block $do-break|1 - loop $do-continue|1 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.const 10 - i32.rem_s - i32.const 0 - i32.eq - if - br $do-break|1 - end - br $do-continue|1 - end - unreachable - end - br $do-continue|0 - end - unreachable - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 134 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 90 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 112 - i32.const 64 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $do/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $do/testRef - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - local.set $0 - i32.const 0 - call $do/Ref#constructor - local.set $1 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.eq - if - i32.const 0 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - else - i32.const 0 - call $do/Ref#constructor - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - local.set $1 - end - local.get $1 - local.set $3 - local.get $3 - br_if $do-continue|0 - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 150 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 151 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - local.get $1 - call $~lib/rt/pure/__release - ) - (func $do/getRef (result i32) - i32.const 0 - call $do/Ref#constructor - ) - (func $do/testRefAutorelease - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - local.set $0 - i32.const 0 - call $do/Ref#constructor - local.set $1 - block $do-break|0 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.eq - if - i32.const 0 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - br $do-break|0 - end - call $do/getRef - local.tee $2 - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - br_if $do-continue|0 - end - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 170 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 171 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $do/ran - local.get $1 - call $~lib/rt/pure/__release - ) - (func $start:do - i32.const 0 - global.set $do/ran - call $do/testSimple - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - call $do/testEmpty - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - call $do/testNested - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 49 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - call $do/testAlwaysTrue - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $do/testAlwaysTrueNeverBreaks - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - call $do/testAlwaysFalse - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 82 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - call $do/testAlwaysBreaks - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - call $do/testAlwaysReturns - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - call $do/testContinue - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - call $do/testNestedContinue - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - call $do/testRef - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran - call $do/testRefAutorelease - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 176 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:do - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/duplicate-field-errors.json b/tests/compiler/duplicate-field-errors.json new file mode 100644 index 0000000000..dd6ed9a032 --- /dev/null +++ b/tests/compiler/duplicate-field-errors.json @@ -0,0 +1,15 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS2385: Overload signatures must all be public, private or protected.", "public privPub: i32;", "private privPub: i32;", + "TS2442: Types have separate declarations of a private property 'privPriv'.", + "TS2325: Property 'privProt' is private in type 'duplicate-field-errors/A' but not in type 'duplicate-field-errors/B'.", + "TS2325: Property 'privPub' is private in type 'duplicate-field-errors/A' but not in type 'duplicate-field-errors/B'.", + "TS2325: Property 'protPriv' is private in type 'duplicate-field-errors/B' but not in type 'duplicate-field-errors/A'.", + "TS2325: Property 'pubPriv' is private in type 'duplicate-field-errors/B' but not in type 'duplicate-field-errors/A'.", + "TS2444: Property 'pubProt' is protected in type 'duplicate-field-errors/B' but public in type 'duplicate-field-errors/A'.", + "TS2394: This overload signature is not compatible with its implementation signature.", "public method: i32;", "method(): void", + "TS2394: This overload signature is not compatible with its implementation signature.", "sibling: Cat | null;", "sibling: Animal | null;" + ] +} diff --git a/tests/compiler/duplicate-field-errors.ts b/tests/compiler/duplicate-field-errors.ts new file mode 100644 index 0000000000..dd5bc58cac --- /dev/null +++ b/tests/compiler/duplicate-field-errors.ts @@ -0,0 +1,50 @@ +class A { + private privPriv: i32; + private privProt: i32; + private privPub: i32; + + // -- + + protected protPriv: i32; + public pubPriv: i32; + + // -- + + public pubProt: i32; + + // -- + + method(): void {} +} + +class B extends A { + private privPriv: i32; + protected privProt: i32; + public privPub: i32; + + // -- + + private protPriv: i32; + private pubPriv: i32; + + // -- + + protected pubProt: i32; + + // -- + + public method: i32; +} + +class Animal { + sibling: Animal | null; +} +class Cat extends Animal { + sibling: Cat | null; // covariance is unsound +} + +export function test(): void { + new A(); + new B(); + new Cat(); +} diff --git a/tests/compiler/duplicate-fields.debug.wat b/tests/compiler/duplicate-fields.debug.wat new file mode 100644 index 0000000000..752c8deba5 --- /dev/null +++ b/tests/compiler/duplicate-fields.debug.wat @@ -0,0 +1,3013 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $duplicate-fields/foo (mut i32) (i32.const 0)) + (global $duplicate-fields/raz (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 480)) + (global $~lib/memory/__data_end i32 (i32.const 528)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33296)) + (global $~lib/memory/__heap_base i32 (i32.const 33296)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00-\00f\00i\00e\00l\00d\00s\00.\00t\00s\00\00\00\00\00\00\00") + (data $9 (i32.const 480) "\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\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $duplicate-fields/A#set:bar (param $this i32) (param $bar i32) + local.get $this + local.get $bar + i32.store + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $duplicate-fields/B#set:bar (param $this i32) (param $bar i32) + local.get $this + local.get $bar + i32.store + ) + (func $duplicate-fields/B#get:bar (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $duplicate-fields/A2#set:bar (param $this i32) (param $bar i32) + local.get $this + local.get $bar + i32.store + local.get $this + local.get $bar + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $duplicate-fields/B2#set:bar (param $this i32) (param $bar i32) + local.get $this + local.get $bar + i32.store + local.get $this + local.get $bar + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $duplicate-fields/Foo#set:foo (param $this i32) (param $foo i32) + local.get $this + local.get $foo + i32.store + ) + (func $duplicate-fields/B2#get:bar (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $duplicate-fields/Foo#get:foo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $duplicate-fields/A3#set:prot (param $this i32) (param $prot i32) + local.get $this + local.get $prot + i32.store + ) + (func $duplicate-fields/A3#set:pub (param $this i32) (param $pub i32) + local.get $this + local.get $pub + i32.store offset=4 + ) + (func $duplicate-fields/B3#set:prot (param $this i32) (param $prot i32) + local.get $this + local.get $prot + i32.store + ) + (func $duplicate-fields/B3#set:pub (param $this i32) (param $pub i32) + local.get $this + local.get $pub + i32.store offset=4 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $duplicate-fields/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $duplicate-fields/raz + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $duplicate-fields/A2~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $duplicate-fields/B2~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $duplicate-fields/A2~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $duplicate-fields/A3 + block $duplicate-fields/B3 + block $duplicate-fields/B2 + block $duplicate-fields/Foo + block $duplicate-fields/A2 + block $duplicate-fields/B + block $duplicate-fields/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $duplicate-fields/A $duplicate-fields/B $duplicate-fields/A2 $duplicate-fields/Foo $duplicate-fields/B2 $duplicate-fields/B3 $duplicate-fields/A3 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $duplicate-fields/A2~visit + return + end + return + end + local.get $0 + local.get $1 + call $duplicate-fields/B2~visit + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:duplicate-fields + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33328 + i32.const 33376 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $duplicate-fields/A#constructor (param $this i32) (param $bar i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $duplicate-fields/A#set:bar + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $bar + call $duplicate-fields/A#set:bar + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $duplicate-fields/B#constructor (param $this i32) (param $bar i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $duplicate-fields/B#set:bar + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $bar + call $duplicate-fields/A#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $bar + call $duplicate-fields/B#set:bar + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $duplicate-fields/A2#constructor (param $this i32) (param $bar i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $duplicate-fields/A2#set:bar + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $bar + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $duplicate-fields/A2#set:bar + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $duplicate-fields/B2#constructor (param $this i32) (param $bar i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $duplicate-fields/B2#set:bar + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $bar + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $duplicate-fields/A2#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $bar + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $duplicate-fields/B2#set:bar + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $duplicate-fields/Foo#constructor (param $this i32) (param $foo i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $duplicate-fields/Foo#set:foo + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $foo + call $duplicate-fields/Foo#set:foo + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $duplicate-fields/A3#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $duplicate-fields/A3#set:prot + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $duplicate-fields/A3#set:pub + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $duplicate-fields/B3#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $duplicate-fields/A3#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $duplicate-fields/B3#set:prot + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $duplicate-fields/B3#set:pub + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:duplicate-fields + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 0 + i32.const 0 + i32.eq + drop + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 10 + call $duplicate-fields/B#constructor + global.set $duplicate-fields/foo + global.get $duplicate-fields/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $duplicate-fields/B#get:bar + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 0 + i32.const 0 + i32.const 1 + call $duplicate-fields/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $duplicate-fields/B2#constructor + global.set $duplicate-fields/raz + global.get $duplicate-fields/raz + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $duplicate-fields/B2#get:bar + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $duplicate-fields/Foo#get:foo + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $duplicate-fields/B3#constructor + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/duplicate-fields.json b/tests/compiler/duplicate-fields.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/duplicate-fields.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/duplicate-fields.release.wat b/tests/compiler/duplicate-fields.release.wat new file mode 100644 index 0000000000..100107f6b6 --- /dev/null +++ b/tests/compiler/duplicate-fields.release.wat @@ -0,0 +1,2051 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $duplicate-fields/foo (mut i32) (i32.const 0)) + (global $duplicate-fields/raz (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34320)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "<") + (data $8.1 (i32.const 1448) "\02\00\00\00&\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00-\00f\00i\00e\00l\00d\00s\00.\00t\00s") + (data $9 (i32.const 1504) "\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\00 \00\00\00\00\00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $duplicate-fields/foo + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $duplicate-fields/raz + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$139 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34320 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$139 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1504 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34320 + i32.const 0 + i32.store + i32.const 35888 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34320 + i32.const 35892 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34320 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34320 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34320 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34320 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $duplicate-fields/A2#set:bar (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $duplicate-fields/A3 + block $duplicate-fields/B3 + block $duplicate-fields/B2 + block $duplicate-fields/Foo + block $duplicate-fields/B + block $duplicate-fields/A + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $duplicate-fields/A $duplicate-fields/B $folding-inner0 $duplicate-fields/Foo $duplicate-fields/B2 $duplicate-fields/B3 $duplicate-fields/A3 $invalid + end + return + end + return + end + return + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + br $folding-inner0 + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 34320 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $duplicate-fields/foo + global.get $~lib/memory/__stack_pointer + global.get $duplicate-fields/foo + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $duplicate-fields/A2#set:bar + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $duplicate-fields/A2#set:bar + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $duplicate-fields/A2#set:bar + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $duplicate-fields/A2#set:bar + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $duplicate-fields/raz + global.get $~lib/memory/__stack_pointer + global.get $duplicate-fields/raz + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/duplicate-fields.ts b/tests/compiler/duplicate-fields.ts new file mode 100644 index 0000000000..de671115e2 --- /dev/null +++ b/tests/compiler/duplicate-fields.ts @@ -0,0 +1,57 @@ +class A { + bar: i32; + constructor(bar: i32) { this.bar = bar; } +} + +class B extends A { + bar: i32 = 0; + constructor(bar: i32) { super(bar); this.bar = bar; } +} + +assert(offsetof("bar") == 0); +assert(offsetof("bar") == 0); + +const foo = new B(10); +assert(foo.bar == 10); + +// duplicate fields w/ narrowing + +class Foo { + foo: i32; + constructor(foo: i32) { this.foo = foo; } +} + +class Bar extends Foo { + bar: i32; + constructor(foo: i32, bar: i32) { super(foo); this.bar = bar; } +} + +class A2 { + bar: Foo; + constructor(bar: Foo) { this.bar = bar; } +} + +class B2 extends A2 { + bar: Foo; // must be invariant + constructor(bar: Foo) { super(bar); this.bar = bar; } +} + +assert(offsetof("bar") == 0); +assert(offsetof("bar") == 0); + +const raz = new B2(new Foo(1)); +assert(raz.bar.foo == 1); + +// make sure visibility checks allow these + +class A3 { + protected prot: i32; + public pub: i32; +} + +class B3 extends A3 { + protected prot: i32; + public pub: i32; +} + +new B3(); diff --git a/tests/compiler/duplicate-function-in-scope.json b/tests/compiler/duplicate-function-in-scope.json new file mode 100644 index 0000000000..be8607a6b1 --- /dev/null +++ b/tests/compiler/duplicate-function-in-scope.json @@ -0,0 +1,8 @@ +{ + "asc_flags": [], + "stderr": [ + "EOF", + "TS2300: Duplicate identifier 'inner'.", + "TS2393: Duplicate function implementation." + ] +} diff --git a/tests/compiler/duplicate-function-in-scope.ts b/tests/compiler/duplicate-function-in-scope.ts new file mode 100644 index 0000000000..7d91e2abfc --- /dev/null +++ b/tests/compiler/duplicate-function-in-scope.ts @@ -0,0 +1,16 @@ +// Duplicate named function declarations in the same scope should +// produce a diagnostic instead of crashing the compiler. + +export function testMixed1(): void { + const inner = function (): void {}; + function inner(): void {} + inner(); +} + +export function test(): void { + function inner(): void {} + function inner(): void {} + inner(); +} + +ERROR("EOF"); diff --git a/tests/compiler/duplicate-identifier.json b/tests/compiler/duplicate-identifier.json index de16d18c48..a3f82cc818 100644 --- a/tests/compiler/duplicate-identifier.json +++ b/tests/compiler/duplicate-identifier.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "TS2300: Duplicate identifier 'a'", "var a: f32", "var a: i32", @@ -11,4 +10,4 @@ "TS2300: Duplicate identifier 'f'", "let f: f32", "EOF" ] -} \ No newline at end of file +} diff --git a/tests/compiler/empty-exportruntime.debug.wat b/tests/compiler/empty-exportruntime.debug.wat new file mode 100644 index 0000000000..e95efa75fe --- /dev/null +++ b/tests/compiler/empty-exportruntime.debug.wat @@ -0,0 +1,2439 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 544)) + (global $~lib/memory/__data_end i32 (i32.const 564)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33332)) + (global $~lib/memory/__heap_base i32 (i32.const 33332)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") + (data $9 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") + (data $10 (i32.const 544) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__pin (param $ptr i32) (result i32) + (local $obj i32) + local.get $ptr + if + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + local.get $obj + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + if + i32.const 432 + i32.const 96 + i32.const 338 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/Object#unlink + local.get $obj + global.get $~lib/rt/itcms/pinSpace + i32.const 3 + call $~lib/rt/itcms/Object#linkTo + end + local.get $ptr + return + ) + (func $~lib/rt/itcms/__unpin (param $ptr i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + local.get $obj + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.ne + if + i32.const 496 + i32.const 96 + i32.const 352 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + else + local.get $obj + call $~lib/rt/itcms/Object#unlink + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + end + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 432 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 496 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) +) diff --git a/tests/compiler/empty-exportruntime.json b/tests/compiler/empty-exportruntime.json new file mode 100644 index 0000000000..016a0919ff --- /dev/null +++ b/tests/compiler/empty-exportruntime.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--exportRuntime" + ] +} diff --git a/tests/compiler/empty-exportruntime.release.wat b/tests/compiler/empty-exportruntime.release.wat new file mode 100644 index 0000000000..605d4f43c8 --- /dev/null +++ b/tests/compiler/empty-exportruntime.release.wat @@ -0,0 +1,1744 @@ +(module + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1568)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "<") + (data $8.1 (i32.const 1448) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data $9 (i32.const 1500) "<") + (data $9.1 (i32.const 1512) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") + (data $10 (i32.const 1568) "\04\00\00\00 \00\00\00 \00\00\00 ") + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1520 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34356 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/toSpace + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1568 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + i32.const 1572 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34368 + i32.const 0 + i32.store + i32.const 35936 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34368 + i32.const 35940 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34368 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + i32.const 34356 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34356 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1456 + i32.const 1120 + i32.const 338 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 + end + local.get $0 + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 1520 + i32.const 1120 + i32.const 352 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (func $~lib/rt/itcms/__collect + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34356 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + ) +) diff --git a/tests/compiler/empty-exportruntime.ts b/tests/compiler/empty-exportruntime.ts new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/tests/compiler/empty-exportruntime.ts @@ -0,0 +1 @@ + diff --git a/tests/compiler/empty-new.debug.wat b/tests/compiler/empty-new.debug.wat new file mode 100644 index 0000000000..424bdfc617 --- /dev/null +++ b/tests/compiler/empty-new.debug.wat @@ -0,0 +1,2319 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 416)) + (global $~lib/memory/__data_end i32 (i32.const 436)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33204)) + (global $~lib/memory/__heap_base i32 (i32.const 33204)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 416) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $start:empty-new + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) + (func $~start + call $start:empty-new + ) +) diff --git a/tests/compiler/empty-new.json b/tests/compiler/empty-new.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/empty-new.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/empty-new.release.wat b/tests/compiler/empty-new.release.wat new file mode 100644 index 0000000000..21625b2ae4 --- /dev/null +++ b/tests/compiler/empty-new.release.wat @@ -0,0 +1,1421 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32 i32 i64))) + (type $5 (func (result i32))) + (type $6 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1440) "\04\00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$107 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34228 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$107 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + i32.const 34228 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34228 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34228 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34228 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $1 + i32.load offset=1568 + local.get $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $0 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $1 + local.get $0 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $2 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $2 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $1 + local.get $2 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $2 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + i32.const 0 + i32.const 0 + memory.fill + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34228 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $~lib/rt/itcms/__new + ) +) diff --git a/tests/compiler/empty-new.ts b/tests/compiler/empty-new.ts new file mode 100644 index 0000000000..2898c62b8e --- /dev/null +++ b/tests/compiler/empty-new.ts @@ -0,0 +1 @@ +__new(0, 0); diff --git a/tests/compiler/empty-use.json b/tests/compiler/empty-use.json index 38253855dc..29b0f194e5 100644 --- a/tests/compiler/empty-use.json +++ b/tests/compiler/empty-use.json @@ -1,10 +1,9 @@ { "asc_flags": [ - "--runtime none", "--use Date=" ], "stderr": [ "TS2304: Cannot find name 'Date'.", "EOF" ] -} \ No newline at end of file +} diff --git a/tests/compiler/empty.debug.wat b/tests/compiler/empty.debug.wat new file mode 100644 index 0000000000..541e3c19af --- /dev/null +++ b/tests/compiler/empty.debug.wat @@ -0,0 +1,9 @@ +(module + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/empty.json b/tests/compiler/empty.json index 453cb07770..1bdd02b1be 100644 --- a/tests/compiler/empty.json +++ b/tests/compiler/empty.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } diff --git a/tests/compiler/function.optimized.wat b/tests/compiler/empty.release.wat similarity index 100% rename from tests/compiler/function.optimized.wat rename to tests/compiler/empty.release.wat diff --git a/tests/compiler/empty.untouched.wat b/tests/compiler/empty.untouched.wat deleted file mode 100644 index bffe105a3d..0000000000 --- a/tests/compiler/empty.untouched.wat +++ /dev/null @@ -1,5 +0,0 @@ -(module - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) -) diff --git a/tests/compiler/enum-return-error.json b/tests/compiler/enum-return-error.json new file mode 100644 index 0000000000..3ca34eef92 --- /dev/null +++ b/tests/compiler/enum-return-error.json @@ -0,0 +1,8 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "AS200: Conversion from type 'i32' to 'bool' requires an explicit cast.", + "EOF" + ] +} diff --git a/tests/compiler/enum-return-error.ts b/tests/compiler/enum-return-error.ts new file mode 100644 index 0000000000..2f1a2df409 --- /dev/null +++ b/tests/compiler/enum-return-error.ts @@ -0,0 +1,11 @@ +enum Bar { + Baz +} + +function foo(): boolean { + return Bar.Baz; +} + +foo(); + +ERROR("EOF"); \ No newline at end of file diff --git a/tests/compiler/enum-to-string-error.json b/tests/compiler/enum-to-string-error.json new file mode 100644 index 0000000000..1165029fc1 --- /dev/null +++ b/tests/compiler/enum-to-string-error.json @@ -0,0 +1,7 @@ +{ + "asc_flags": [], + "stderr": [ + "TS2476: A const enum member can only be accessed using a string literal.", + "EOF" + ] +} diff --git a/tests/compiler/enum-to-string-error.ts b/tests/compiler/enum-to-string-error.ts new file mode 100644 index 0000000000..cbb58deb38 --- /dev/null +++ b/tests/compiler/enum-to-string-error.ts @@ -0,0 +1,9 @@ +const enum CE { + CE0, + CE1, + CE2, +} + +assert(CE[CE.CE0] === "CE0"); + +ERROR("EOF"); \ No newline at end of file diff --git a/tests/compiler/enum-to-string.debug.wat b/tests/compiler/enum-to-string.debug.wat new file mode 100644 index 0000000000..0f60906aa8 --- /dev/null +++ b/tests/compiler/enum-to-string.debug.wat @@ -0,0 +1,613 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $3 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $enum-to-string/Enum.E0 i32 (i32.const 0)) + (global $enum-to-string/Enum.E1 i32 (i32.const 1)) + (global $enum-to-string/Enum.E2 i32 (i32.const 2)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $enum-to-string/v (mut i32) (i32.const 0)) + (global $enum-to-string/EnumWithInit.E0 i32 (i32.const 1)) + (global $enum-to-string/EnumWithInit.E1 i32 (i32.const 2)) + (global $enum-to-string/EnumWithInit.E2 i32 (i32.const 4)) + (global $enum-to-string/EnumWithDup.E0 i32 (i32.const 1)) + (global $enum-to-string/EnumWithDup.E1 i32 (i32.const 2)) + (global $enum-to-string/EnumWithDup.E2 i32 (i32.const 1)) + (global $~lib/memory/__data_end i32 (i32.const 268)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33036)) + (global $~lib/memory/__heap_base i32 (i32.const 33036)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00E\002\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00E\001\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00E\000\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00e\00n\00u\00m\00-\00t\00o\00-\00s\00t\00r\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00C\00E\002\00\00\00\00\00\00\00") + (data $5 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00C\00E\001\00\00\00\00\00\00\00") + (data $6 (i32.const 236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00C\00E\000\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $enum-to-string/Enum#__enum_to_string (param $0 i32) (result i32) + global.get $enum-to-string/Enum.E2 + local.get $0 + i32.eq + if + i32.const 32 + return + end + global.get $enum-to-string/Enum.E1 + local.get $0 + i32.eq + if + i32.const 64 + return + end + global.get $enum-to-string/Enum.E0 + local.get $0 + i32.eq + if + i32.const 96 + return + end + unreachable + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $enum-to-string/InlineEnum#__enum_to_string (param $0 i32) (result i32) + i32.const 2 + local.get $0 + i32.eq + if + i32.const 192 + return + end + i32.const 1 + local.get $0 + i32.eq + if + i32.const 224 + return + end + i32.const 0 + local.get $0 + i32.eq + if + i32.const 256 + return + end + unreachable + ) + (func $enum-to-string/EnumWithInit#__enum_to_string (param $0 i32) (result i32) + global.get $enum-to-string/EnumWithInit.E2 + local.get $0 + i32.eq + if + i32.const 32 + return + end + global.get $enum-to-string/EnumWithInit.E1 + local.get $0 + i32.eq + if + i32.const 64 + return + end + global.get $enum-to-string/EnumWithInit.E0 + local.get $0 + i32.eq + if + i32.const 96 + return + end + unreachable + ) + (func $enum-to-string/EnumWithDup#__enum_to_string (param $0 i32) (result i32) + global.get $enum-to-string/EnumWithDup.E2 + local.get $0 + i32.eq + if + i32.const 32 + return + end + global.get $enum-to-string/EnumWithDup.E1 + local.get $0 + i32.eq + if + i32.const 64 + return + end + global.get $enum-to-string/EnumWithDup.E0 + local.get $0 + i32.eq + if + i32.const 96 + return + end + unreachable + ) + (func $~start + call $start:enum-to-string + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33056 + i32.const 33104 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:enum-to-string + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $enum-to-string/Enum.E0 + call $enum-to-string/Enum#__enum_to_string + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 96 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $enum-to-string/Enum.E1 + call $enum-to-string/Enum#__enum_to_string + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 64 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $enum-to-string/Enum.E2 + call $enum-to-string/Enum#__enum_to_string + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $enum-to-string/Enum.E2 + global.set $enum-to-string/v + global.get $enum-to-string/v + call $enum-to-string/Enum#__enum_to_string + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $enum-to-string/InlineEnum#__enum_to_string + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 256 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $enum-to-string/InlineEnum#__enum_to_string + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 224 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $enum-to-string/InlineEnum#__enum_to_string + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $enum-to-string/EnumWithInit.E0 + call $enum-to-string/EnumWithInit#__enum_to_string + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 96 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $enum-to-string/EnumWithInit.E1 + call $enum-to-string/EnumWithInit#__enum_to_string + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 64 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $enum-to-string/EnumWithInit.E2 + call $enum-to-string/EnumWithInit#__enum_to_string + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $enum-to-string/EnumWithDup.E0 + call $enum-to-string/EnumWithDup#__enum_to_string + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $enum-to-string/EnumWithDup.E1 + call $enum-to-string/EnumWithDup#__enum_to_string + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 64 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $enum-to-string/EnumWithDup.E2 + call $enum-to-string/EnumWithDup#__enum_to_string + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/enum-to-string.json b/tests/compiler/enum-to-string.json new file mode 100644 index 0000000000..ea57a955e1 --- /dev/null +++ b/tests/compiler/enum-to-string.json @@ -0,0 +1,3 @@ +{ + "asc_flags": [] +} diff --git a/tests/compiler/enum-to-string.release.wat b/tests/compiler/enum-to-string.release.wat new file mode 100644 index 0000000000..91a870b03a --- /dev/null +++ b/tests/compiler/enum-to-string.release.wat @@ -0,0 +1,408 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34060)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\04\00\00\00E\002") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\04\00\00\00E\001") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\04\00\00\00E\000") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00\"\00\00\00e\00n\00u\00m\00-\00t\00o\00-\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data $4 (i32.const 1196) "\1c") + (data $4.1 (i32.const 1208) "\02\00\00\00\06\00\00\00C\00E\002") + (data $5 (i32.const 1228) "\1c") + (data $5.1 (i32.const 1240) "\02\00\00\00\06\00\00\00C\00E\001") + (data $6 (i32.const 1260) "\1c") + (data $6.1 (i32.const 1272) "\02\00\00\00\06\00\00\00C\00E\000") + (export "memory" (memory $0)) + (start $~start) + (func $~start + call $start:enum-to-string + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1292 + i32.lt_s + if + i32.const 34080 + i32.const 34128 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$2 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$2 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $start:enum-to-string + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1292 + i32.lt_s + if + i32.const 34080 + i32.const 34128 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1120 + i32.store + i32.const 1120 + i32.const 1120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store + i32.const 1280 + i32.const 1280 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + i32.const 1248 + i32.const 1248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store + i32.const 1216 + i32.const 1216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1120 + i32.store + i32.const 1120 + i32.const 1120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/enum-to-string.ts b/tests/compiler/enum-to-string.ts new file mode 100644 index 0000000000..2fc056323d --- /dev/null +++ b/tests/compiler/enum-to-string.ts @@ -0,0 +1,43 @@ +enum Enum { + E0, + E1, + E2, +} + +assert(Enum[Enum.E0] === "E0"); +assert(Enum[Enum.E1] === "E1"); +assert(Enum[Enum.E2] === "E2"); + +let v = Enum.E2; +assert(Enum[v] === "E2"); + +@inline +enum InlineEnum { + CE0, + CE1, + CE2, +} + +assert(InlineEnum[InlineEnum.CE0] === "CE0"); +assert(InlineEnum[InlineEnum.CE1] === "CE1"); +assert(InlineEnum[InlineEnum.CE2] === "CE2"); + +enum EnumWithInit { + E0 = 1, + E1 = 2, + E2 = 4, +} + +assert(EnumWithInit[EnumWithInit.E0] === "E0"); +assert(EnumWithInit[EnumWithInit.E1] === "E1"); +assert(EnumWithInit[EnumWithInit.E2] === "E2"); + +enum EnumWithDup { + E0 = 1, + E1 = 2, + E2 = 1, +} + +assert(EnumWithDup[EnumWithDup.E0] === "E2"); +assert(EnumWithDup[EnumWithDup.E1] === "E1"); +assert(EnumWithDup[EnumWithDup.E2] === "E2"); diff --git a/tests/compiler/enum.debug.wat b/tests/compiler/enum.debug.wat new file mode 100644 index 0000000000..f29db0f6d9 --- /dev/null +++ b/tests/compiler/enum.debug.wat @@ -0,0 +1,90 @@ +(module + (type $0 (func)) + (type $1 (func (result i32))) + (global $enum/Implicit.ZERO i32 (i32.const 0)) + (global $enum/Implicit.ONE i32 (i32.const 1)) + (global $enum/Implicit.TWO i32 (i32.const 2)) + (global $enum/Implicit.THREE i32 (i32.const 3)) + (global $enum/ImplicitConst.ZERO i32 (i32.const 0)) + (global $enum/ImplicitConst.ONE i32 (i32.const 1)) + (global $enum/ImplicitConst.TWO i32 (i32.const 2)) + (global $enum/ImplicitConst.THREE i32 (i32.const 3)) + (global $enum/Explicit.ZERO i32 (i32.const 0)) + (global $enum/Explicit.ONE i32 (i32.const 1)) + (global $enum/Explicit.TWO i32 (i32.const 2)) + (global $enum/Explicit.THREE i32 (i32.const 3)) + (global $enum/ExplicitConst.ZERO i32 (i32.const 0)) + (global $enum/ExplicitConst.ONE i32 (i32.const 1)) + (global $enum/ExplicitConst.TWO i32 (i32.const 2)) + (global $enum/ExplicitConst.THREE i32 (i32.const 3)) + (global $enum/Mixed.ZERO i32 (i32.const 0)) + (global $enum/Mixed.ONE i32 (i32.const 1)) + (global $enum/Mixed.THREE i32 (i32.const 3)) + (global $enum/Mixed.FOUR i32 (i32.const 4)) + (global $enum/MixedConst.ZERO i32 (i32.const 0)) + (global $enum/MixedConst.ONE i32 (i32.const 1)) + (global $enum/MixedConst.THREE i32 (i32.const 3)) + (global $enum/MixedConst.FOUR i32 (i32.const 4)) + (global $enum/NonConstant.ZERO (mut i32) (i32.const 0)) + (global $enum/NonConstant.ONE (mut i32) (i32.const 0)) + (global $enum/SelfReference.ZERO i32 (i32.const 0)) + (global $enum/SelfReference.ONE i32 (i32.const 1)) + (global $enum/SelfReferenceConst.ZERO i32 (i32.const 0)) + (global $enum/SelfReferenceConst.ONE i32 (i32.const 1)) + (global $enum/enumType (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "Implicit.ZERO" (global $enum/Implicit.ZERO)) + (export "Implicit.ONE" (global $enum/Implicit.ONE)) + (export "Implicit.TWO" (global $enum/Implicit.TWO)) + (export "Implicit.THREE" (global $enum/Implicit.THREE)) + (export "ImplicitConst.ZERO" (global $enum/ImplicitConst.ZERO)) + (export "ImplicitConst.ONE" (global $enum/ImplicitConst.ONE)) + (export "ImplicitConst.TWO" (global $enum/ImplicitConst.TWO)) + (export "ImplicitConst.THREE" (global $enum/ImplicitConst.THREE)) + (export "Explicit.ZERO" (global $enum/Explicit.ZERO)) + (export "Explicit.ONE" (global $enum/Explicit.ONE)) + (export "Explicit.TWO" (global $enum/Explicit.TWO)) + (export "Explicit.THREE" (global $enum/Explicit.THREE)) + (export "ExplicitConst.ZERO" (global $enum/ExplicitConst.ZERO)) + (export "ExplicitConst.ONE" (global $enum/ExplicitConst.ONE)) + (export "ExplicitConst.TWO" (global $enum/ExplicitConst.TWO)) + (export "ExplicitConst.THREE" (global $enum/ExplicitConst.THREE)) + (export "Mixed.ZERO" (global $enum/Mixed.ZERO)) + (export "Mixed.ONE" (global $enum/Mixed.ONE)) + (export "Mixed.THREE" (global $enum/Mixed.THREE)) + (export "Mixed.FOUR" (global $enum/Mixed.FOUR)) + (export "MixedConst.ZERO" (global $enum/MixedConst.ZERO)) + (export "MixedConst.ONE" (global $enum/MixedConst.ONE)) + (export "MixedConst.THREE" (global $enum/MixedConst.THREE)) + (export "MixedConst.FOUR" (global $enum/MixedConst.FOUR)) + (export "SelfReference.ZERO" (global $enum/SelfReference.ZERO)) + (export "SelfReference.ONE" (global $enum/SelfReference.ONE)) + (export "SelfReferenceConst.ZERO" (global $enum/SelfReferenceConst.ZERO)) + (export "SelfReferenceConst.ONE" (global $enum/SelfReferenceConst.ONE)) + (export "memory" (memory $0)) + (start $~start) + (func $enum/getZero (result i32) + i32.const 0 + return + ) + (func $start:enum + call $enum/getZero + global.set $enum/NonConstant.ZERO + call $enum/getZero + i32.const 1 + i32.add + global.set $enum/NonConstant.ONE + global.get $enum/NonConstant.ZERO + drop + global.get $enum/NonConstant.ONE + drop + ) + (func $~start + call $start:enum + ) +) diff --git a/tests/compiler/enum.json b/tests/compiler/enum.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/enum.json +++ b/tests/compiler/enum.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/enum.optimized.wat b/tests/compiler/enum.optimized.wat deleted file mode 100644 index 2e78dc7d1e..0000000000 --- a/tests/compiler/enum.optimized.wat +++ /dev/null @@ -1,60 +0,0 @@ -(module - (memory $0 0) - (global $enum/Implicit.ZERO i32 (i32.const 0)) - (global $enum/Implicit.ONE i32 (i32.const 1)) - (global $enum/Implicit.TWO i32 (i32.const 2)) - (global $enum/Implicit.THREE i32 (i32.const 3)) - (global $enum/ImplicitConst.ZERO i32 (i32.const 0)) - (global $enum/ImplicitConst.ONE i32 (i32.const 1)) - (global $enum/ImplicitConst.TWO i32 (i32.const 2)) - (global $enum/ImplicitConst.THREE i32 (i32.const 3)) - (global $enum/Explicit.ZERO i32 (i32.const 0)) - (global $enum/Explicit.ONE i32 (i32.const 1)) - (global $enum/Explicit.TWO i32 (i32.const 2)) - (global $enum/Explicit.THREE i32 (i32.const 3)) - (global $enum/ExplicitConst.ZERO i32 (i32.const 0)) - (global $enum/ExplicitConst.ONE i32 (i32.const 1)) - (global $enum/ExplicitConst.TWO i32 (i32.const 2)) - (global $enum/ExplicitConst.THREE i32 (i32.const 3)) - (global $enum/Mixed.ZERO i32 (i32.const 0)) - (global $enum/Mixed.ONE i32 (i32.const 1)) - (global $enum/Mixed.THREE i32 (i32.const 3)) - (global $enum/Mixed.FOUR i32 (i32.const 4)) - (global $enum/MixedConst.ZERO i32 (i32.const 0)) - (global $enum/MixedConst.ONE i32 (i32.const 1)) - (global $enum/MixedConst.THREE i32 (i32.const 3)) - (global $enum/MixedConst.FOUR i32 (i32.const 4)) - (global $enum/SelfReference.ZERO i32 (i32.const 0)) - (global $enum/SelfReference.ONE i32 (i32.const 1)) - (global $enum/SelfReferenceConst.ZERO i32 (i32.const 0)) - (global $enum/SelfReferenceConst.ONE i32 (i32.const 1)) - (export "memory" (memory $0)) - (export "Implicit.ZERO" (global $enum/Implicit.ZERO)) - (export "Implicit.ONE" (global $enum/Implicit.ONE)) - (export "Implicit.TWO" (global $enum/Implicit.TWO)) - (export "Implicit.THREE" (global $enum/Implicit.THREE)) - (export "ImplicitConst.ZERO" (global $enum/ImplicitConst.ZERO)) - (export "ImplicitConst.ONE" (global $enum/ImplicitConst.ONE)) - (export "ImplicitConst.TWO" (global $enum/ImplicitConst.TWO)) - (export "ImplicitConst.THREE" (global $enum/ImplicitConst.THREE)) - (export "Explicit.ZERO" (global $enum/Explicit.ZERO)) - (export "Explicit.ONE" (global $enum/Explicit.ONE)) - (export "Explicit.TWO" (global $enum/Explicit.TWO)) - (export "Explicit.THREE" (global $enum/Explicit.THREE)) - (export "ExplicitConst.ZERO" (global $enum/ExplicitConst.ZERO)) - (export "ExplicitConst.ONE" (global $enum/ExplicitConst.ONE)) - (export "ExplicitConst.TWO" (global $enum/ExplicitConst.TWO)) - (export "ExplicitConst.THREE" (global $enum/ExplicitConst.THREE)) - (export "Mixed.ZERO" (global $enum/Mixed.ZERO)) - (export "Mixed.ONE" (global $enum/Mixed.ONE)) - (export "Mixed.THREE" (global $enum/Mixed.THREE)) - (export "Mixed.FOUR" (global $enum/Mixed.FOUR)) - (export "MixedConst.ZERO" (global $enum/MixedConst.ZERO)) - (export "MixedConst.ONE" (global $enum/MixedConst.ONE)) - (export "MixedConst.THREE" (global $enum/MixedConst.THREE)) - (export "MixedConst.FOUR" (global $enum/MixedConst.FOUR)) - (export "SelfReference.ZERO" (global $enum/SelfReference.ZERO)) - (export "SelfReference.ONE" (global $enum/SelfReference.ONE)) - (export "SelfReferenceConst.ZERO" (global $enum/SelfReferenceConst.ZERO)) - (export "SelfReferenceConst.ONE" (global $enum/SelfReferenceConst.ONE)) -) diff --git a/tests/compiler/enum.release.wat b/tests/compiler/enum.release.wat new file mode 100644 index 0000000000..cc89e08f6c --- /dev/null +++ b/tests/compiler/enum.release.wat @@ -0,0 +1,60 @@ +(module + (global $enum/Implicit.ZERO i32 (i32.const 0)) + (global $enum/Implicit.ONE i32 (i32.const 1)) + (global $enum/Implicit.TWO i32 (i32.const 2)) + (global $enum/Implicit.THREE i32 (i32.const 3)) + (global $enum/ImplicitConst.ZERO i32 (i32.const 0)) + (global $enum/ImplicitConst.ONE i32 (i32.const 1)) + (global $enum/ImplicitConst.TWO i32 (i32.const 2)) + (global $enum/ImplicitConst.THREE i32 (i32.const 3)) + (global $enum/Explicit.ZERO i32 (i32.const 0)) + (global $enum/Explicit.ONE i32 (i32.const 1)) + (global $enum/Explicit.TWO i32 (i32.const 2)) + (global $enum/Explicit.THREE i32 (i32.const 3)) + (global $enum/ExplicitConst.ZERO i32 (i32.const 0)) + (global $enum/ExplicitConst.ONE i32 (i32.const 1)) + (global $enum/ExplicitConst.TWO i32 (i32.const 2)) + (global $enum/ExplicitConst.THREE i32 (i32.const 3)) + (global $enum/Mixed.ZERO i32 (i32.const 0)) + (global $enum/Mixed.ONE i32 (i32.const 1)) + (global $enum/Mixed.THREE i32 (i32.const 3)) + (global $enum/Mixed.FOUR i32 (i32.const 4)) + (global $enum/MixedConst.ZERO i32 (i32.const 0)) + (global $enum/MixedConst.ONE i32 (i32.const 1)) + (global $enum/MixedConst.THREE i32 (i32.const 3)) + (global $enum/MixedConst.FOUR i32 (i32.const 4)) + (global $enum/SelfReference.ZERO i32 (i32.const 0)) + (global $enum/SelfReference.ONE i32 (i32.const 1)) + (global $enum/SelfReferenceConst.ZERO i32 (i32.const 0)) + (global $enum/SelfReferenceConst.ONE i32 (i32.const 1)) + (memory $0 0) + (export "Implicit.ZERO" (global $enum/Implicit.ZERO)) + (export "Implicit.ONE" (global $enum/Implicit.ONE)) + (export "Implicit.TWO" (global $enum/Implicit.TWO)) + (export "Implicit.THREE" (global $enum/Implicit.THREE)) + (export "ImplicitConst.ZERO" (global $enum/ImplicitConst.ZERO)) + (export "ImplicitConst.ONE" (global $enum/ImplicitConst.ONE)) + (export "ImplicitConst.TWO" (global $enum/ImplicitConst.TWO)) + (export "ImplicitConst.THREE" (global $enum/ImplicitConst.THREE)) + (export "Explicit.ZERO" (global $enum/Explicit.ZERO)) + (export "Explicit.ONE" (global $enum/Explicit.ONE)) + (export "Explicit.TWO" (global $enum/Explicit.TWO)) + (export "Explicit.THREE" (global $enum/Explicit.THREE)) + (export "ExplicitConst.ZERO" (global $enum/ExplicitConst.ZERO)) + (export "ExplicitConst.ONE" (global $enum/ExplicitConst.ONE)) + (export "ExplicitConst.TWO" (global $enum/ExplicitConst.TWO)) + (export "ExplicitConst.THREE" (global $enum/ExplicitConst.THREE)) + (export "Mixed.ZERO" (global $enum/Mixed.ZERO)) + (export "Mixed.ONE" (global $enum/Mixed.ONE)) + (export "Mixed.THREE" (global $enum/Mixed.THREE)) + (export "Mixed.FOUR" (global $enum/Mixed.FOUR)) + (export "MixedConst.ZERO" (global $enum/MixedConst.ZERO)) + (export "MixedConst.ONE" (global $enum/MixedConst.ONE)) + (export "MixedConst.THREE" (global $enum/MixedConst.THREE)) + (export "MixedConst.FOUR" (global $enum/MixedConst.FOUR)) + (export "SelfReference.ZERO" (global $enum/SelfReference.ZERO)) + (export "SelfReference.ONE" (global $enum/SelfReference.ONE)) + (export "SelfReferenceConst.ZERO" (global $enum/SelfReferenceConst.ZERO)) + (export "SelfReferenceConst.ONE" (global $enum/SelfReferenceConst.ONE)) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/enum.untouched.wat b/tests/compiler/enum.untouched.wat deleted file mode 100644 index 52614c23fd..0000000000 --- a/tests/compiler/enum.untouched.wat +++ /dev/null @@ -1,85 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (memory $0 0) - (table $0 1 funcref) - (global $enum/Implicit.ZERO i32 (i32.const 0)) - (global $enum/Implicit.ONE i32 (i32.const 1)) - (global $enum/Implicit.TWO i32 (i32.const 2)) - (global $enum/Implicit.THREE i32 (i32.const 3)) - (global $enum/ImplicitConst.ZERO i32 (i32.const 0)) - (global $enum/ImplicitConst.ONE i32 (i32.const 1)) - (global $enum/ImplicitConst.TWO i32 (i32.const 2)) - (global $enum/ImplicitConst.THREE i32 (i32.const 3)) - (global $enum/Explicit.ZERO i32 (i32.const 0)) - (global $enum/Explicit.ONE i32 (i32.const 1)) - (global $enum/Explicit.TWO i32 (i32.const 2)) - (global $enum/Explicit.THREE i32 (i32.const 3)) - (global $enum/ExplicitConst.ZERO i32 (i32.const 0)) - (global $enum/ExplicitConst.ONE i32 (i32.const 1)) - (global $enum/ExplicitConst.TWO i32 (i32.const 2)) - (global $enum/ExplicitConst.THREE i32 (i32.const 3)) - (global $enum/Mixed.ZERO i32 (i32.const 0)) - (global $enum/Mixed.ONE i32 (i32.const 1)) - (global $enum/Mixed.THREE i32 (i32.const 3)) - (global $enum/Mixed.FOUR i32 (i32.const 4)) - (global $enum/MixedConst.ZERO i32 (i32.const 0)) - (global $enum/MixedConst.ONE i32 (i32.const 1)) - (global $enum/MixedConst.THREE i32 (i32.const 3)) - (global $enum/MixedConst.FOUR i32 (i32.const 4)) - (global $enum/NonConstant.ZERO (mut i32) (i32.const 0)) - (global $enum/NonConstant.ONE (mut i32) (i32.const 0)) - (global $enum/SelfReference.ZERO i32 (i32.const 0)) - (global $enum/SelfReference.ONE i32 (i32.const 1)) - (global $enum/SelfReferenceConst.ZERO i32 (i32.const 0)) - (global $enum/SelfReferenceConst.ONE i32 (i32.const 1)) - (global $enum/enumType (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "Implicit.ZERO" (global $enum/Implicit.ZERO)) - (export "Implicit.ONE" (global $enum/Implicit.ONE)) - (export "Implicit.TWO" (global $enum/Implicit.TWO)) - (export "Implicit.THREE" (global $enum/Implicit.THREE)) - (export "ImplicitConst.ZERO" (global $enum/ImplicitConst.ZERO)) - (export "ImplicitConst.ONE" (global $enum/ImplicitConst.ONE)) - (export "ImplicitConst.TWO" (global $enum/ImplicitConst.TWO)) - (export "ImplicitConst.THREE" (global $enum/ImplicitConst.THREE)) - (export "Explicit.ZERO" (global $enum/Explicit.ZERO)) - (export "Explicit.ONE" (global $enum/Explicit.ONE)) - (export "Explicit.TWO" (global $enum/Explicit.TWO)) - (export "Explicit.THREE" (global $enum/Explicit.THREE)) - (export "ExplicitConst.ZERO" (global $enum/ExplicitConst.ZERO)) - (export "ExplicitConst.ONE" (global $enum/ExplicitConst.ONE)) - (export "ExplicitConst.TWO" (global $enum/ExplicitConst.TWO)) - (export "ExplicitConst.THREE" (global $enum/ExplicitConst.THREE)) - (export "Mixed.ZERO" (global $enum/Mixed.ZERO)) - (export "Mixed.ONE" (global $enum/Mixed.ONE)) - (export "Mixed.THREE" (global $enum/Mixed.THREE)) - (export "Mixed.FOUR" (global $enum/Mixed.FOUR)) - (export "MixedConst.ZERO" (global $enum/MixedConst.ZERO)) - (export "MixedConst.ONE" (global $enum/MixedConst.ONE)) - (export "MixedConst.THREE" (global $enum/MixedConst.THREE)) - (export "MixedConst.FOUR" (global $enum/MixedConst.FOUR)) - (export "SelfReference.ZERO" (global $enum/SelfReference.ZERO)) - (export "SelfReference.ONE" (global $enum/SelfReference.ONE)) - (export "SelfReferenceConst.ZERO" (global $enum/SelfReferenceConst.ZERO)) - (export "SelfReferenceConst.ONE" (global $enum/SelfReferenceConst.ONE)) - (start $~start) - (func $enum/getZero (result i32) - i32.const 0 - ) - (func $start:enum - call $enum/getZero - global.set $enum/NonConstant.ZERO - call $enum/getZero - i32.const 1 - i32.add - global.set $enum/NonConstant.ONE - global.get $enum/NonConstant.ZERO - drop - global.get $enum/NonConstant.ONE - drop - ) - (func $~start - call $start:enum - ) -) diff --git a/tests/compiler/export-default.debug.wat b/tests/compiler/export-default.debug.wat new file mode 100644 index 0000000000..d897bb947d --- /dev/null +++ b/tests/compiler/export-default.debug.wat @@ -0,0 +1,14 @@ +(module + (type $0 (func)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "theDefault" (func $export-default/theDefault)) + (export "default" (func $export-default/theDefault)) + (export "memory" (memory $0)) + (func $export-default/theDefault + ) +) diff --git a/tests/compiler/export-default.json b/tests/compiler/export-default.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/export-default.json +++ b/tests/compiler/export-default.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/export-default.optimized.wat b/tests/compiler/export-default.optimized.wat deleted file mode 100644 index db7ec48854..0000000000 --- a/tests/compiler/export-default.optimized.wat +++ /dev/null @@ -1,10 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (export "memory" (memory $0)) - (export "theDefault" (func $export-default/theDefault)) - (export "default" (func $export-default/theDefault)) - (func $export-default/theDefault - nop - ) -) diff --git a/tests/compiler/export-default.release.wat b/tests/compiler/export-default.release.wat new file mode 100644 index 0000000000..d2e7be5666 --- /dev/null +++ b/tests/compiler/export-default.release.wat @@ -0,0 +1,9 @@ +(module + (type $0 (func)) + (memory $0 0) + (export "theDefault" (func $export-default/theDefault)) + (export "default" (func $export-default/theDefault)) + (export "memory" (memory $0)) + (func $export-default/theDefault + ) +) diff --git a/tests/compiler/export-default.untouched.wat b/tests/compiler/export-default.untouched.wat deleted file mode 100644 index 58b12218e0..0000000000 --- a/tests/compiler/export-default.untouched.wat +++ /dev/null @@ -1,11 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "theDefault" (func $export-default/theDefault)) - (export "default" (func $export-default/theDefault)) - (func $export-default/theDefault - nop - ) -) diff --git a/tests/compiler/export-generic.json b/tests/compiler/export-generic.json deleted file mode 100644 index 1b7c4aae33..0000000000 --- a/tests/compiler/export-generic.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ], - "stderr": [ - "AS232: Exported generic function or class has no concrete instances.", - "export function testFunction", - "AS232: Exported generic function or class has no concrete instances.", - "export class TestClass", - "AS232: Exported generic function or class has no concrete instances.", - "public testMethod()", - "AS232: Exported generic function or class has no concrete instances.", - "export function testNamespacedFunction", - "AS232: Exported generic function or class has no concrete instances.", - "export class TestNamespacedClass" - ] -} \ No newline at end of file diff --git a/tests/compiler/export-generic.ts b/tests/compiler/export-generic.ts deleted file mode 100644 index def0f4b67b..0000000000 --- a/tests/compiler/export-generic.ts +++ /dev/null @@ -1,14 +0,0 @@ -export function testFunction(): void {} - -export class TestClass {} - -export class Foo { - public testMethod(): void {} -} - -export namespace test { - export function testNamespacedFunction(): void {} - export class TestNamespacedClass {} -} - -ERROR("EOF"); diff --git a/tests/compiler/export.debug.wat b/tests/compiler/export.debug.wat new file mode 100644 index 0000000000..84acd4d38e --- /dev/null +++ b/tests/compiler/export.debug.wat @@ -0,0 +1,37 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $export/c i32 (i32.const 3)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "add" (func $export/add)) + (export "sub" (func $export/sub)) + (export "renamed_mul" (func $export/mul)) + (export "a" (global $export/a)) + (export "b" (global $export/b)) + (export "renamed_c" (global $export/c)) + (export "memory" (memory $0)) + (func $export/add (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $export/sub (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.sub + return + ) + (func $export/mul (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.mul + return + ) +) diff --git a/tests/compiler/export.json b/tests/compiler/export.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/export.json +++ b/tests/compiler/export.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/export.optimized.wat b/tests/compiler/export.optimized.wat deleted file mode 100644 index dac2708915..0000000000 --- a/tests/compiler/export.optimized.wat +++ /dev/null @@ -1,35 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (memory $0 0) - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (export "memory" (memory $0)) - (export "add" (func $export/add)) - (export "sub" (func $export/sub)) - (export "renamed_mul" (func $export/mul)) - (export "a" (global $export/a)) - (export "b" (global $export/b)) - (export "renamed_c" (global $export/c)) - (export "ns.two" (func $export/ns.one)) - (export "default.two" (func $export/ns.one)) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $export/ns.one - nop - ) -) diff --git a/tests/compiler/export.release.wat b/tests/compiler/export.release.wat new file mode 100644 index 0000000000..cab08e7ae1 --- /dev/null +++ b/tests/compiler/export.release.wat @@ -0,0 +1,29 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $export/c i32 (i32.const 3)) + (memory $0 0) + (export "add" (func $export/add)) + (export "sub" (func $export/sub)) + (export "renamed_mul" (func $export/mul)) + (export "a" (global $export/a)) + (export "b" (global $export/b)) + (export "renamed_c" (global $export/c)) + (export "memory" (memory $0)) + (func $export/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $export/sub (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.mul + ) +) diff --git a/tests/compiler/export.untouched.wat b/tests/compiler/export.untouched.wat deleted file mode 100644 index 2b27851289..0000000000 --- a/tests/compiler/export.untouched.wat +++ /dev/null @@ -1,39 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (export "memory" (memory $0)) - (export "add" (func $export/add)) - (export "sub" (func $export/sub)) - (export "renamed_mul" (func $export/mul)) - (export "a" (global $export/a)) - (export "b" (global $export/b)) - (export "renamed_c" (global $export/c)) - (export "ns.two" (func $export/ns.two)) - (export "default.two" (func $export/ns.two)) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $export/ns.one - nop - ) - (func $export/ns.two - nop - ) -) diff --git a/tests/compiler/exportimport-table.debug.wat b/tests/compiler/exportimport-table.debug.wat new file mode 100644 index 0000000000..66306446a2 --- /dev/null +++ b/tests/compiler/exportimport-table.debug.wat @@ -0,0 +1,23 @@ +(module + (type $0 (func)) + (import "env" "table" (table $0 2 funcref)) + (global $exportimport-table/f (mut i32) (i32.const 32)) + (global $~lib/memory/__data_end i32 (i32.const 44)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32812)) + (global $~lib/memory/__heap_base i32 (i32.const 32812)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (elem $0 (i32.const 1) $start:exportimport-table~anonymous|0) + (export "memory" (memory $0)) + (export "table" (table $0)) + (start $~start) + (func $start:exportimport-table~anonymous|0 + ) + (func $start:exportimport-table + global.get $exportimport-table/f + drop + ) + (func $~start + call $start:exportimport-table + ) +) diff --git a/tests/compiler/exportimport-table.js b/tests/compiler/exportimport-table.js index ce8963366a..82a0c2c726 100644 --- a/tests/compiler/exportimport-table.js +++ b/tests/compiler/exportimport-table.js @@ -1,5 +1,5 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports.env = { table: new WebAssembly.Table({ element: "anyfunc", initial: 2 }) }; -}; +} diff --git a/tests/compiler/exportimport-table.json b/tests/compiler/exportimport-table.json index 99ea3c7483..ee90f77c52 100644 --- a/tests/compiler/exportimport-table.json +++ b/tests/compiler/exportimport-table.json @@ -1,7 +1,6 @@ { "asc_flags": [ - "--runtime none", "--importTable", "--exportTable" ] -} \ No newline at end of file +} diff --git a/tests/compiler/exportimport-table.optimized.wat b/tests/compiler/exportimport-table.optimized.wat deleted file mode 100644 index 71d65ae61f..0000000000 --- a/tests/compiler/exportimport-table.optimized.wat +++ /dev/null @@ -1,12 +0,0 @@ -(module - (type $none_=>_none (func)) - (import "env" "table" (table $0 2 funcref)) - (elem (i32.const 1) $start:exportimport-table~anonymous|0) - (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (export "memory" (memory $0)) - (export "table" (table $0)) - (func $start:exportimport-table~anonymous|0 - nop - ) -) diff --git a/tests/compiler/exportimport-table.release.wat b/tests/compiler/exportimport-table.release.wat new file mode 100644 index 0000000000..9c5d7e1158 --- /dev/null +++ b/tests/compiler/exportimport-table.release.wat @@ -0,0 +1,12 @@ +(module + (type $0 (func)) + (import "env" "table" (table $0 2 funcref)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") + (elem $0 (i32.const 1) $start:exportimport-table~anonymous|0) + (export "memory" (memory $0)) + (export "table" (table $0)) + (func $start:exportimport-table~anonymous|0 + ) +) diff --git a/tests/compiler/exportimport-table.untouched.wat b/tests/compiler/exportimport-table.untouched.wat deleted file mode 100644 index fa6be1dd7a..0000000000 --- a/tests/compiler/exportimport-table.untouched.wat +++ /dev/null @@ -1,21 +0,0 @@ -(module - (type $none_=>_none (func)) - (import "env" "table" (table $0 2 funcref)) - (elem (i32.const 1) $start:exportimport-table~anonymous|0) - (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (global $exportimport-table/f (mut i32) (i32.const 32)) - (export "memory" (memory $0)) - (export "table" (table $0)) - (start $~start) - (func $start:exportimport-table~anonymous|0 - nop - ) - (func $start:exportimport-table - global.get $exportimport-table/f - drop - ) - (func $~start - call $start:exportimport-table - ) -) diff --git a/tests/compiler/exports-lazy.debug.wat b/tests/compiler/exports-lazy.debug.wat new file mode 100644 index 0000000000..af546f4467 --- /dev/null +++ b/tests/compiler/exports-lazy.debug.wat @@ -0,0 +1,32 @@ +(module + (type $0 (func)) + (global $exports-lazy/lazyGlobalUsed i32 (i32.const 64)) + (global $exports-lazy/lazyGlobalUnused i32 (i32.const 144)) + (global $~lib/memory/__data_end i32 (i32.const 172)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32940)) + (global $~lib/memory/__heap_base i32 (i32.const 32940)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00 \00\00\00 \00\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $3 (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00p\00\00\00p\00\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "lazyGlobalUnused" (global $exports-lazy/lazyGlobalUnused)) + (export "lazyGlobalUsed" (global $exports-lazy/lazyGlobalUsed)) + (export "memory" (memory $0)) + (start $~start) + (func $start:exports-lazy + (local $0 i32) + global.get $exports-lazy/lazyGlobalUsed + drop + call $exports-lazy/lazyFuncUsed + ) + (func $exports-lazy/lazyFuncUsed + ) + (func $exports-lazy/lazyFuncUnused + ) + (func $~start + call $start:exports-lazy + ) +) diff --git a/tests/compiler/exports-lazy.json b/tests/compiler/exports-lazy.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/exports-lazy.json +++ b/tests/compiler/exports-lazy.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/exports-lazy.optimized.wat b/tests/compiler/exports-lazy.optimized.wat deleted file mode 100644 index b1c73fc7f9..0000000000 --- a/tests/compiler/exports-lazy.optimized.wat +++ /dev/null @@ -1,13 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 1056) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\10\04\00\00\10\04\00\00\0c\00\00\00\03") - (global $exports-lazy/lazyGlobalUsed i32 (i32.const 1072)) - (export "memory" (memory $0)) - (export "lazyGlobalUsed" (global $exports-lazy/lazyGlobalUsed)) - (export "lazyFuncUsed" (func $~start)) - (func $~start - nop - ) -) diff --git a/tests/compiler/exports-lazy.release.wat b/tests/compiler/exports-lazy.release.wat new file mode 100644 index 0000000000..ee41631b40 --- /dev/null +++ b/tests/compiler/exports-lazy.release.wat @@ -0,0 +1,16 @@ +(module + (global $exports-lazy/lazyGlobalUsed i32 (i32.const 1088)) + (global $exports-lazy/lazyGlobalUnused i32 (i32.const 1168)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $1 (i32.const 1068) ",") + (data $1.1 (i32.const 1080) "\04\00\00\00\10\00\00\00 \04\00\00 \04\00\00\0c\00\00\00\03") + (data $2 (i32.const 1116) "\1c") + (data $2.1 (i32.const 1128) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $3 (i32.const 1148) ",") + (data $3.1 (i32.const 1160) "\04\00\00\00\10\00\00\00p\04\00\00p\04\00\00\0c\00\00\00\03") + (export "lazyGlobalUnused" (global $exports-lazy/lazyGlobalUnused)) + (export "lazyGlobalUsed" (global $exports-lazy/lazyGlobalUsed)) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/exports-lazy.untouched.wat b/tests/compiler/exports-lazy.untouched.wat deleted file mode 100644 index 64df15c7a9..0000000000 --- a/tests/compiler/exports-lazy.untouched.wat +++ /dev/null @@ -1,25 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 48) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00 \00\00\00 \00\00\00\0c\00\00\00\03\00\00\00") - (table $0 1 funcref) - (global $exports-lazy/lazyGlobalUsed i32 (i32.const 64)) - (export "memory" (memory $0)) - (export "lazyGlobalUsed" (global $exports-lazy/lazyGlobalUsed)) - (export "lazyFuncUsed" (func $exports-lazy/lazyFuncUsed)) - (start $~start) - (func $start:exports-lazy - (local $0 i32) - (local $1 i32) - global.get $exports-lazy/lazyGlobalUsed - drop - call $exports-lazy/lazyFuncUsed - ) - (func $~start - call $start:exports-lazy - ) - (func $exports-lazy/lazyFuncUsed - nop - ) -) diff --git a/tests/compiler/exports.debug.wat b/tests/compiler/exports.debug.wat new file mode 100644 index 0000000000..6179d7f839 --- /dev/null +++ b/tests/compiler/exports.debug.wat @@ -0,0 +1,68 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32))) + (global $exports/Animal.CAT i32 (i32.const 0)) + (global $exports/Animal.DOG i32 (i32.const 1)) + (global $exports/animals.Animal.CAT i32 (i32.const 0)) + (global $exports/animals.Animal.DOG i32 (i32.const 1)) + (global $exports/Car.TIRES i32 (i32.const 4)) + (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) + (global $exports/outer.inner.a i32 (i32.const 42)) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $export/c i32 (i32.const 3)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "add" (func $exports/add)) + (export "subOpt" (func $exports/subOpt@varargs)) + (export "Animal.CAT" (global $exports/Animal.CAT)) + (export "Animal.DOG" (global $exports/Animal.DOG)) + (export "renamed_mul" (func $export/mul)) + (export "memory" (memory $0)) + (export "__setArgumentsLength" (func $~setArgumentsLength)) + (func $exports/add (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $exports/subOpt (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.sub + return + ) + (func $exports/subOpt@varargs (param $a i32) (param $b i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $b + end + local.get $a + local.get $b + call $exports/subOpt + ) + (func $export/mul (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.mul + return + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) +) diff --git a/tests/compiler/exports.json b/tests/compiler/exports.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/exports.json +++ b/tests/compiler/exports.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat deleted file mode 100644 index d935ff06e9..0000000000 --- a/tests/compiler/exports.optimized.wat +++ /dev/null @@ -1,226 +0,0 @@ -(module - (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 $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (memory $0 0) - (global $exports/Animal.CAT i32 (i32.const 0)) - (global $exports/Animal.DOG i32 (i32.const 1)) - (global $exports/animals.Animal.CAT i32 (i32.const 0)) - (global $exports/animals.Animal.DOG i32 (i32.const 1)) - (global $exports/Car.TIRES i32 (i32.const 4)) - (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) - (global $exports/outer.inner.a i32 (i32.const 42)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $exports/Car i32 (i32.const 3)) - (global $exports/vehicles.Car i32 (i32.const 4)) - (export "memory" (memory $0)) - (export "add" (func $exports/add)) - (export "subOpt" (func $exports/subOpt@varargs)) - (export "math.sub" (func $exports/subOpt)) - (export "Animal.CAT" (global $exports/Animal.CAT)) - (export "Animal.DOG" (global $exports/Animal.DOG)) - (export "animals.Animal.CAT" (global $exports/animals.Animal.CAT)) - (export "animals.Animal.DOG" (global $exports/animals.Animal.DOG)) - (export "Car" (global $exports/Car)) - (export "Car#get:doors" (func $exports/Car#get:doors)) - (export "Car#set:doors" (func $exports/Car#set:doors)) - (export "Car#constructor" (func $exports/Car#constructor@varargs)) - (export "Car#get:numDoors" (func $exports/Car#get:doors)) - (export "Car#set:numDoors" (func $exports/Car#set:doors)) - (export "Car#openDoors" (func $exports/Car#openDoors)) - (export "Car.TIRES" (global $exports/Car.TIRES)) - (export "Car.getNumTires" (func $exports/Car.getNumTires)) - (export "vehicles.Car" (global $exports/vehicles.Car)) - (export "vehicles.Car#get:doors" (func $exports/Car#get:doors)) - (export "vehicles.Car#set:doors" (func $exports/Car#set:doors)) - (export "vehicles.Car#constructor" (func $exports/vehicles.Car#constructor@varargs)) - (export "vehicles.Car#get:numDoors" (func $exports/Car#get:doors)) - (export "vehicles.Car#set:numDoors" (func $exports/Car#set:doors)) - (export "vehicles.Car#openDoors" (func $exports/Car#openDoors)) - (export "vehicles.Car.TIRES" (global $exports/vehicles.Car.TIRES)) - (export "vehicles.Car.getNumTires" (func $exports/Car.getNumTires)) - (export "outer.inner.a" (global $exports/outer.inner.a)) - (export "renamed_mul" (func $export/mul)) - (export "__setArgumentsLength" (func $~setArgumentsLength)) - (start $~start) - (func $exports/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $exports/subOpt (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/Car.getNumTires (result i32) - i32.const 4 - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - i32.const 16 - i32.add - local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $4 - local.get $1 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $4 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $1 - global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 - i32.sub - local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $3 - ) - (func $exports/Car#get:doors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/Car#set:doors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $exports/Car#openDoors (param $0 i32) - nop - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $~start - i32.const 1024 - global.set $~lib/rt/stub/offset - ) - (func $exports/subOpt@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - local.get $0 - i32.eqz - if - i32.const 3 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - local.get $0 - i32.eqz - if - i32.const 4 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) -) diff --git a/tests/compiler/exports.release.wat b/tests/compiler/exports.release.wat new file mode 100644 index 0000000000..ec7aad9f8e --- /dev/null +++ b/tests/compiler/exports.release.wat @@ -0,0 +1,47 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32))) + (global $exports/Animal.CAT i32 (i32.const 0)) + (global $exports/Animal.DOG i32 (i32.const 1)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (memory $0 0) + (export "add" (func $exports/add)) + (export "subOpt" (func $exports/subOpt@varargs)) + (export "Animal.CAT" (global $exports/Animal.CAT)) + (export "Animal.DOG" (global $exports/Animal.DOG)) + (export "renamed_mul" (func $export/mul)) + (export "memory" (memory $0)) + (export "__setArgumentsLength" (func $~setArgumentsLength)) + (func $exports/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $exports/subOpt@varargs (param $0 i32) (param $1 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + local.get $0 + local.get $1 + i32.sub + ) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.mul + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) +) diff --git a/tests/compiler/exports.ts b/tests/compiler/exports.ts index c18fc6a1fa..c79d484347 100644 --- a/tests/compiler/exports.ts +++ b/tests/compiler/exports.ts @@ -58,3 +58,9 @@ export namespace outer { } export {renamed_mul} from "./export"; + +// interfaces (should not error) +export interface Iface {} +export namespace outer { + export interface Iface {} +} diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat deleted file mode 100644 index 642deb6a97..0000000000 --- a/tests/compiler/exports.untouched.wat +++ /dev/null @@ -1,338 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (global $exports/Animal.CAT i32 (i32.const 0)) - (global $exports/Animal.DOG i32 (i32.const 1)) - (global $exports/animals.Animal.CAT i32 (i32.const 0)) - (global $exports/animals.Animal.DOG i32 (i32.const 1)) - (global $exports/Car.TIRES i32 (i32.const 4)) - (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) - (global $exports/outer.inner.a i32 (i32.const 42)) - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $exports/Car i32 (i32.const 3)) - (global $exports/vehicles.Car i32 (i32.const 4)) - (export "memory" (memory $0)) - (export "add" (func $exports/add)) - (export "subOpt" (func $exports/subOpt@varargs)) - (export "math.sub" (func $exports/math.sub)) - (export "Animal.CAT" (global $exports/Animal.CAT)) - (export "Animal.DOG" (global $exports/Animal.DOG)) - (export "animals.Animal.CAT" (global $exports/animals.Animal.CAT)) - (export "animals.Animal.DOG" (global $exports/animals.Animal.DOG)) - (export "Car" (global $exports/Car)) - (export "Car#get:doors" (func $exports/Car#get:doors)) - (export "Car#set:doors" (func $exports/Car#set:doors)) - (export "Car#constructor" (func $exports/Car#constructor@varargs)) - (export "Car#get:numDoors" (func $exports/Car#get:numDoors)) - (export "Car#set:numDoors" (func $exports/Car#set:numDoors)) - (export "Car#openDoors" (func $exports/Car#openDoors)) - (export "Car.TIRES" (global $exports/Car.TIRES)) - (export "Car.getNumTires" (func $exports/Car.getNumTires)) - (export "vehicles.Car" (global $exports/vehicles.Car)) - (export "vehicles.Car#get:doors" (func $exports/vehicles.Car#get:doors)) - (export "vehicles.Car#set:doors" (func $exports/vehicles.Car#set:doors)) - (export "vehicles.Car#constructor" (func $exports/vehicles.Car#constructor@varargs)) - (export "vehicles.Car#get:numDoors" (func $exports/vehicles.Car#get:numDoors)) - (export "vehicles.Car#set:numDoors" (func $exports/vehicles.Car#set:numDoors)) - (export "vehicles.Car#openDoors" (func $exports/vehicles.Car#openDoors)) - (export "vehicles.Car.TIRES" (global $exports/vehicles.Car.TIRES)) - (export "vehicles.Car.getNumTires" (func $exports/vehicles.Car.getNumTires)) - (export "outer.inner.a" (global $exports/outer.inner.a)) - (export "renamed_mul" (func $export/mul)) - (export "__setArgumentsLength" (func $~setArgumentsLength)) - (start $~start) - (func $exports/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $exports/subOpt (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/math.sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/Car.getNumTires (result i32) - global.get $exports/Car.TIRES - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $exports/Car#get:doors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/Car#set:doors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $exports/Car#get:numDoors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/Car#set:numDoors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $exports/Car#openDoors (param $0 i32) - nop - ) - (func $exports/vehicles.Car.getNumTires (result i32) - global.get $exports/vehicles.Car.TIRES - ) - (func $exports/vehicles.Car#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $exports/vehicles.Car#get:doors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/vehicles.Car#set:doors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $exports/vehicles.Car#get:numDoors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/vehicles.Car#set:numDoors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $exports/vehicles.Car#openDoors (param $0 i32) - nop - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $~start - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) - (func $exports/subOpt@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/subOpt - ) - (func $exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/Car#constructor - ) - (func $exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/vehicles.Car#constructor - ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) -) diff --git a/tests/compiler/exportstar-rereexport.debug.wat b/tests/compiler/exportstar-rereexport.debug.wat new file mode 100644 index 0000000000..26289418ed --- /dev/null +++ b/tests/compiler/exportstar-rereexport.debug.wat @@ -0,0 +1,2657 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $export/c i32 (i32.const 3)) + (global $exports/Car.TIRES i32 (i32.const 4)) + (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) + (global $exports/outer.inner.a i32 (i32.const 42)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $reexport/car (mut i32) (i32.const 0)) + (global $rereexport/car (mut i32) (i32.const 0)) + (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 512)) + (global $~lib/memory/__data_end i32 (i32.const 536)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33304)) + (global $~lib/memory/__heap_base i32 (i32.const 33304)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00\00\00\00\00") + (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00") + (data $10 (i32.const 512) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "a" (global $export/a)) + (export "renamed_a" (global $export/a)) + (export "renamed_b" (global $export/b)) + (export "renamed_renamed_b" (global $export/b)) + (export "default" (func $export-default/theDefault)) + (export "renamed_default" (func $export-default/theDefault)) + (export "memory" (memory $0)) + (start $~start) + (func $export/add (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $export/mul (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.mul + return + ) + (func $exports/add (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $exports/Car#set:doors (param $this i32) (param $doors i32) + local.get $this + local.get $doors + i32.store + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 272 + i32.const 336 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 144 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 80 + i32.const 416 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 80 + i32.const 144 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $exports/Car#get:doors (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $start:exportstar-rereexport + call $start:rereexport + ) + (func $export-default/theDefault + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 272 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 80 + local.get $0 + call $~lib/rt/itcms/__visit + global.get $rereexport/car + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rereexport/exportsNamespaceCar + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $reexport/car + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:exportstar-rereexport + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33328 + i32.const 33376 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $exports/Car#constructor (param $this i32) (param $doors i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $doors + call $exports/Car#set:doors + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $doors + call $exports/Car#set:doors + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $exports/Car#get:numDoors (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $exports/Car#get:doors + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $start:reexport + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + i32.const 2 + call $export/add + i32.const 3 + i32.const 4 + call $export/mul + i32.add + drop + i32.const 2 + i32.const 2 + call $exports/add + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $export/mul + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 192 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 2 + call $exports/Car#constructor + global.set $reexport/car + global.get $reexport/car + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:rereexport + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + call $start:reexport + i32.const 2 + i32.const 2 + call $export/add + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $export/mul + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + call $exports/Car#constructor + global.set $rereexport/car + global.get $rereexport/car + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $exports/add + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $export/mul + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + call $exports/Car#constructor + global.set $rereexport/exportsNamespaceCar + global.get $rereexport/exportsNamespaceCar + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/exportstar-rereexport.json b/tests/compiler/exportstar-rereexport.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/exportstar-rereexport.json +++ b/tests/compiler/exportstar-rereexport.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/exportstar-rereexport.optimized.wat b/tests/compiler/exportstar-rereexport.optimized.wat deleted file mode 100644 index 606338749d..0000000000 --- a/tests/compiler/exportstar-rereexport.optimized.wat +++ /dev/null @@ -1,169 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $reexport/car (mut i32) (i32.const 0)) - (global $rereexport/car (mut i32) (i32.const 0)) - (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "a" (global $export/a)) - (export "renamed_a" (global $export/a)) - (export "renamed_b" (global $export/b)) - (export "renamed_renamed_b" (global $export/b)) - (export "default" (func $export-default/theDefault)) - (export "renamed_default" (func $export-default/theDefault)) - (export "exportstar.add" (func $export/add)) - (export "exportstar.sub" (func $export/sub)) - (export "exportstar.renamed_mul" (func $export/mul)) - (export "exportstar.a" (global $export/a)) - (export "exportstar.b" (global $export/b)) - (export "exportstar.renamed_c" (global $export/c)) - (export "exportstar.ns.two" (func $export-default/theDefault)) - (export "exportstar.default.two" (func $export-default/theDefault)) - (start $~start) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $exports/Car#constructor (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $1 - i32.const 16 - i32.add - local.tee $0 - memory.size - local.tee $3 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $3 - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $3 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - local.get $1 - i32.const 16 - i32.sub - local.tee $0 - i32.const 16 - i32.store - local.get $0 - i32.const 1 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 2 - i32.store - local.get $1 - i32.const 2 - i32.store - local.get $1 - ) - (func $export-default/theDefault - nop - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $~start - i32.const 1120 - global.set $~lib/rt/stub/offset - call $exports/Car#constructor - global.set $reexport/car - global.get $reexport/car - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $exports/Car#constructor - global.set $rereexport/car - global.get $rereexport/car - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $exports/Car#constructor - global.set $rereexport/exportsNamespaceCar - global.get $rereexport/exportsNamespaceCar - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/exportstar-rereexport.release.wat b/tests/compiler/exportstar-rereexport.release.wat new file mode 100644 index 0000000000..fbd6f1e267 --- /dev/null +++ b/tests/compiler/exportstar-rereexport.release.wat @@ -0,0 +1,1627 @@ +(module + (type $0 (func)) + (type $1 (func (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $reexport/car (mut i32) (i32.const 0)) + (global $rereexport/car (mut i32) (i32.const 0)) + (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34328)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data $1 (i32.const 1084) "<") + (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1148) "<") + (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1276) "<") + (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1340) ",") + (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1420) "<") + (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1484) ",") + (data $9.1 (i32.const 1496) "\02\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data $10 (i32.const 1536) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (export "a" (global $export/a)) + (export "renamed_a" (global $export/a)) + (export "renamed_b" (global $export/b)) + (export "renamed_renamed_b" (global $export/b)) + (export "default" (func $export-default/theDefault)) + (export "renamed_default" (func $export-default/theDefault)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $rereexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rereexport/exportsNamespaceCar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $reexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34328 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34336 + i32.const 35908 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34336 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34328 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34328 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34328 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $1 + i32.load offset=1568 + local.get $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $0 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $1 + local.get $0 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $2 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $2 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $1 + local.get $2 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $2 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store align=1 + local.get $0 + ) + (func $export-default/theDefault + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + block $__inlined_func$start:exportstar-rereexport$1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34328 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + call $exports/Car#constructor + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $exports/Car#constructor + global.set $rereexport/car + global.get $~lib/memory/__stack_pointer + global.get $rereexport/car + local.tee $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exports/Car#constructor + global.set $rereexport/exportsNamespaceCar + global.get $~lib/memory/__stack_pointer + global.get $rereexport/exportsNamespaceCar + local.tee $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$start:exportstar-rereexport$1 + end + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $exports/Car#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $exports/Car#get:numDoors (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/exportstar-rereexport.untouched.wat b/tests/compiler/exportstar-rereexport.untouched.wat deleted file mode 100644 index 57c3341551..0000000000 --- a/tests/compiler/exportstar-rereexport.untouched.wat +++ /dev/null @@ -1,367 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") - (table $0 1 funcref) - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (global $exports/Car.TIRES i32 (i32.const 4)) - (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) - (global $exports/outer.inner.a i32 (i32.const 42)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $reexport/car (mut i32) (i32.const 0)) - (global $rereexport/car (mut i32) (i32.const 0)) - (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 108)) - (export "memory" (memory $0)) - (export "a" (global $export/a)) - (export "renamed_a" (global $export/a)) - (export "renamed_b" (global $export/b)) - (export "renamed_renamed_b" (global $export/b)) - (export "default" (func $export-default/theDefault)) - (export "renamed_default" (func $export-default/theDefault)) - (export "exportstar.add" (func $export/add)) - (export "exportstar.sub" (func $export/sub)) - (export "exportstar.renamed_mul" (func $export/mul)) - (export "exportstar.a" (global $export/a)) - (export "exportstar.b" (global $export/b)) - (export "exportstar.renamed_c" (global $export/c)) - (export "exportstar.ns.two" (func $export/ns.two)) - (export "exportstar.default.two" (func $export/ns.two)) - (start $~start) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $exports/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $exports/Car#get:numDoors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $start:reexport - i32.const 1 - i32.const 2 - call $export/add - i32.const 3 - i32.const 4 - call $export/mul - i32.add - drop - i32.const 2 - i32.const 2 - call $exports/add - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - call $export/mul - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - i32.const 2 - call $exports/Car#constructor - global.set $reexport/car - global.get $reexport/car - call $exports/Car#get:numDoors - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:rereexport - call $start:reexport - i32.const 2 - i32.const 2 - call $export/add - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - call $export/mul - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - call $exports/Car#constructor - global.set $rereexport/car - global.get $rereexport/car - call $exports/Car#get:numDoors - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - call $exports/add - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - call $export/mul - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - call $exports/Car#constructor - global.set $rereexport/exportsNamespaceCar - global.get $rereexport/exportsNamespaceCar - call $exports/Car#get:numDoors - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:exportstar-rereexport - call $start:rereexport - ) - (func $export-default/theDefault - nop - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $export/ns.one - nop - ) - (func $export/ns.two - nop - ) - (func $~start - call $start:exportstar-rereexport - ) -) diff --git a/tests/compiler/exportstar.debug.wat b/tests/compiler/exportstar.debug.wat new file mode 100644 index 0000000000..84acd4d38e --- /dev/null +++ b/tests/compiler/exportstar.debug.wat @@ -0,0 +1,37 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $export/c i32 (i32.const 3)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "add" (func $export/add)) + (export "sub" (func $export/sub)) + (export "renamed_mul" (func $export/mul)) + (export "a" (global $export/a)) + (export "b" (global $export/b)) + (export "renamed_c" (global $export/c)) + (export "memory" (memory $0)) + (func $export/add (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $export/sub (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.sub + return + ) + (func $export/mul (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.mul + return + ) +) diff --git a/tests/compiler/exportstar.json b/tests/compiler/exportstar.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/exportstar.json +++ b/tests/compiler/exportstar.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/exportstar.optimized.wat b/tests/compiler/exportstar.optimized.wat deleted file mode 100644 index dac2708915..0000000000 --- a/tests/compiler/exportstar.optimized.wat +++ /dev/null @@ -1,35 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (memory $0 0) - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (export "memory" (memory $0)) - (export "add" (func $export/add)) - (export "sub" (func $export/sub)) - (export "renamed_mul" (func $export/mul)) - (export "a" (global $export/a)) - (export "b" (global $export/b)) - (export "renamed_c" (global $export/c)) - (export "ns.two" (func $export/ns.one)) - (export "default.two" (func $export/ns.one)) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $export/ns.one - nop - ) -) diff --git a/tests/compiler/exportstar.release.wat b/tests/compiler/exportstar.release.wat new file mode 100644 index 0000000000..cab08e7ae1 --- /dev/null +++ b/tests/compiler/exportstar.release.wat @@ -0,0 +1,29 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $export/c i32 (i32.const 3)) + (memory $0 0) + (export "add" (func $export/add)) + (export "sub" (func $export/sub)) + (export "renamed_mul" (func $export/mul)) + (export "a" (global $export/a)) + (export "b" (global $export/b)) + (export "renamed_c" (global $export/c)) + (export "memory" (memory $0)) + (func $export/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $export/sub (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.mul + ) +) diff --git a/tests/compiler/exportstar.untouched.wat b/tests/compiler/exportstar.untouched.wat deleted file mode 100644 index 2b27851289..0000000000 --- a/tests/compiler/exportstar.untouched.wat +++ /dev/null @@ -1,39 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (export "memory" (memory $0)) - (export "add" (func $export/add)) - (export "sub" (func $export/sub)) - (export "renamed_mul" (func $export/mul)) - (export "a" (global $export/a)) - (export "b" (global $export/b)) - (export "renamed_c" (global $export/c)) - (export "ns.two" (func $export/ns.two)) - (export "default.two" (func $export/ns.two)) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $export/ns.one - nop - ) - (func $export/ns.two - nop - ) -) diff --git a/tests/compiler/extends-baseaggregate.debug.wat b/tests/compiler/extends-baseaggregate.debug.wat new file mode 100644 index 0000000000..9842604142 --- /dev/null +++ b/tests/compiler/extends-baseaggregate.debug.wat @@ -0,0 +1,3098 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 f64))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $extends-baseaggregate/poolB i32 (i32.const 64)) + (global $extends-baseaggregate/poolA i32 (i32.const 144)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 672)) + (global $~lib/memory/__data_end i32 (i32.const 716)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33484)) + (global $~lib/memory/__heap_base i32 (i32.const 33484)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\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") + (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\10\00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 92) "\1c\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") + (data $3 (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\t\00\00\00\10\00\00\00p\00\00\00p\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 336) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $13 (i32.const 620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $14 (i32.const 672) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\02A\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 256 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 256 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 256 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 384 + i32.const 448 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 256 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 256 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 192 + i32.const 528 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 192 + i32.const 256 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $extends-baseaggregate/A1#set:padding0 (param $this i32) (param $padding0 f64) + local.get $this + local.get $padding0 + f64.store + ) + (func $extends-baseaggregate/A1#set:padding1 (param $this i32) (param $padding1 f64) + local.get $this + local.get $padding1 + f64.store offset=8 + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 256 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $extends-baseaggregate/A1#set:c1 (param $this i32) (param $c1 i32) + local.get $this + local.get $c1 + i32.store offset=16 + local.get $this + local.get $c1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $extends-baseaggregate/poolB + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $extends-baseaggregate/poolA + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 384 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 592 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 192 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $extends-baseaggregate/B1~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $extends-baseaggregate/A1~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=16 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $extends-baseaggregate/C1~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $extends-baseaggregate/A2~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $extends-baseaggregate/A1~visit + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $extends-baseaggregate/A2 + block $extends-baseaggregate/C1 + block $extends-baseaggregate/A1 + block $extends-baseaggregate/B1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $extends-baseaggregate/B1 $extends-baseaggregate/A1 $extends-baseaggregate/C1 $extends-baseaggregate/A2 $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $extends-baseaggregate/B1~visit + return + end + local.get $0 + local.get $1 + call $extends-baseaggregate/A1~visit + return + end + local.get $0 + local.get $1 + call $extends-baseaggregate/C1~visit + return + end + local.get $0 + local.get $1 + call $extends-baseaggregate/A2~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:extends-baseaggregate + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33504 + i32.const 33552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $extends-baseaggregate/A1#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + f64.const 0 + call $extends-baseaggregate/A1#set:padding0 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + f64.const 0 + call $extends-baseaggregate/A1#set:padding1 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $extends-baseaggregate/A1#set:c1 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $extends-baseaggregate/A2#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $extends-baseaggregate/A1#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 592 + i32.const 640 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 1 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $start:extends-baseaggregate + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 336 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 480 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $extends-baseaggregate/poolA + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $extends-baseaggregate/A2#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/extends-baseaggregate.json b/tests/compiler/extends-baseaggregate.json index 8e2a32c1e2..1bdd02b1be 100644 --- a/tests/compiler/extends-baseaggregate.json +++ b/tests/compiler/extends-baseaggregate.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime half" ] } diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat deleted file mode 100644 index a67611b82c..0000000000 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ /dev/null @@ -1,2271 +0,0 @@ -(module - (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 $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))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1028) "\01") - (data (i32.const 1040) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00\10\04\00\00\10\04") - (data (i32.const 1076) "\01") - (data (i32.const 1088) "\10\00\00\00\01\00\00\00\08\00\00\00\10\00\00\00@\04\00\00@\04") - (data (i32.const 1120) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1168) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1232) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1280) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1328) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1376) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1440) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1488) "\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 ") - (data (i32.const 1544) "\04\00\00\00\"A\00\00\00\00\00\00\"A") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1136 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1136 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1136 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1568 - local.set $1 - i32.const 1568 - i32.const 0 - i32.store - i32.const 3136 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1568 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1568 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1568 - i32.const 3152 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1568 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 1184 - i32.const 1136 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1136 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1136 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1136 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1564 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1248 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1248 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - local.get $1 - i32.load - local.tee $5 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $4 - i32.const 1 - i32.and - if - local.get $5 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 1564 - i32.ge_u - if - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 28 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1564 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/array/Array#push (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 1116 - i32.load - local.tee $6 - i32.const 1 - i32.add - local.tee $2 - local.set $0 - local.get $2 - i32.const 1112 - i32.load - local.tee $3 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $0 - i32.const 268435452 - i32.gt_u - if - i32.const 1296 - i32.const 1344 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - i32.const 1104 - i32.load - local.set $4 - local.get $3 - call $~lib/rt/tlsf/maybeInitialize - local.get $4 - call $~lib/rt/tlsf/checkUsedBlock - local.get $0 - i32.const 2 - i32.shl - local.tee $5 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - local.tee $0 - i32.add - local.get $5 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $0 - local.get $4 - i32.ne - if - i32.const 1104 - local.get $0 - i32.store - i32.const 1108 - local.get $0 - i32.store - end - i32.const 1112 - local.get $5 - i32.store - end - i32.const 1108 - i32.load - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $1 - call $~lib/rt/pure/__retain - i32.store - i32.const 1116 - local.get $2 - i32.store - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~start - (local $0 i32) - i32.const 20 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.eqz - if - i32.const 20 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - f64.const 0 - f64.store - local.get $0 - f64.const 0 - f64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - call $~lib/array/Array#push - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/pure/markGray (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - select - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - ) - (func $~lib/rt/pure/__collect - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.tee $1 - local.tee $3 - local.set $4 - global.get $~lib/rt/pure/CUR - local.set $0 - loop $for-loop|0 - local.get $4 - local.get $0 - i32.lt_u - if - local.get $4 - i32.load - local.tee $5 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.const 0 - local.get $2 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - select - if - local.get $5 - call $~lib/rt/pure/markGray - local.get $3 - local.get $5 - i32.store - local.get $3 - i32.const 4 - i32.add - local.set $3 - else - i32.const 0 - local.get $2 - i32.const 268435455 - i32.and - i32.eqz - local.get $2 - i32.const 1879048192 - i32.and - select - if - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/freeBlock - else - local.get $5 - local.get $2 - i32.const 2147483647 - i32.and - i32.store offset=4 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - global.set $~lib/rt/pure/CUR - local.get $1 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/pure/scan - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - local.set $0 - loop $for-loop|2 - local.get $0 - local.get $3 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - local.get $2 - i32.load offset=4 - i32.const 2147483647 - i32.and - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/collectWhite - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|2 - end - end - local.get $1 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1248 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $2 - i32.const -2147483648 - i32.and - if - local.get $0 - i32.const -2147483648 - i32.store offset=4 - else - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1248 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 1488 - i32.load - i32.gt_u - if - i32.const 1392 - i32.const 1456 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - if - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - else - local.get $0 - local.get $1 - i32.const 1 - i32.sub - i32.const -1342177280 - i32.or - i32.store offset=4 - local.get $2 - i32.const -2147483648 - i32.and - i32.eqz - if - global.get $~lib/rt/pure/CUR - local.tee $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - global.get $~lib/rt/pure/CUR - global.get $~lib/rt/pure/ROOTS - local.tee $1 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - local.tee $2 - i32.const 256 - local.get $2 - i32.const 256 - i32.gt_u - select - local.tee $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $1 - local.get $3 - call $~lib/memory/memory.copy - local.get $1 - if - call $~lib/rt/tlsf/maybeInitialize - local.get $1 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - end - local.get $2 - global.set $~lib/rt/pure/ROOTS - local.get $2 - local.get $3 - i32.add - global.set $~lib/rt/pure/CUR - local.get $2 - local.get $4 - i32.add - global.set $~lib/rt/pure/END - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/rt/pure/CUR - end - end - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.const 1564 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - local.set $0 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - i32.const 1 - i32.sub - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 - end - local.get $0 - call $~lib/rt/pure/decrement - br $break|0 - end - local.get $0 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1248 - i32.const 79 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/markGray - br $break|0 - end - local.get $0 - call $~lib/rt/pure/scan - br $break|0 - end - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1248 - i32.const 90 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.const 1879048192 - i32.and - if - local.get $0 - call $~lib/rt/pure/scanBlack - end - br $break|0 - end - local.get $0 - call $~lib/rt/pure/collectWhite - br $break|0 - end - i32.const 0 - i32.const 1248 - i32.const 101 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.tee $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $switch$1$default - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$6 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$6 $switch$1$case$4 $switch$1$case$6 $switch$1$case$9 $switch$1$case$10 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - i32.load offset=16 - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/extends-baseaggregate.release.wat b/tests/compiler/extends-baseaggregate.release.wat new file mode 100644 index 0000000000..280a9a62c3 --- /dev/null +++ b/tests/compiler/extends-baseaggregate.release.wat @@ -0,0 +1,2058 @@ +(module + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34508)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\01") + (data $1 (i32.const 1068) ",") + (data $1.1 (i32.const 1080) "\08\00\00\00\10\00\00\00 \04\00\00 \04") + (data $2 (i32.const 1116) "\1c") + (data $2.1 (i32.const 1128) "\01") + (data $3 (i32.const 1148) ",") + (data $3.1 (i32.const 1160) "\t\00\00\00\10\00\00\00p\04\00\00p\04") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1260) "<") + (data $5.1 (i32.const 1272) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1388) "<") + (data $8.1 (i32.const 1400) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1452) ",") + (data $9.1 (i32.const 1464) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1532) "<") + (data $11.1 (i32.const 1544) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1596) ",") + (data $12.1 (i32.const 1608) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $13 (i32.const 1644) ",") + (data $13.1 (i32.const 1656) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $14 (i32.const 1696) "\n\00\00\00 \00\00\00 \00\00\00 ") + (data $14.1 (i32.const 1732) "\02A\00\00\02A") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 1408 + call $~lib/rt/itcms/__visit + i32.const 1616 + call $~lib/rt/itcms/__visit + i32.const 1216 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1280 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$142 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34508 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$142 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1696 + i32.load + i32.gt_u + if + i32.const 1408 + i32.const 1472 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1700 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34512 + i32.const 0 + i32.store + i32.const 36080 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34512 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34512 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34512 + i32.const 36084 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34512 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34508 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1280 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34508 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34508 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1552 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1216 + i32.const 1280 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1216 + i32.const 1552 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1552 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array~visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + if + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $extends-baseaggregate/A2 + block $extends-baseaggregate/A1 + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $extends-baseaggregate/A1 $folding-inner0 $extends-baseaggregate/A2 $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load offset=16 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load offset=16 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 34508 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/pinSpace + i32.const 1364 + i32.const 1360 + i32.store + i32.const 1368 + i32.const 1360 + i32.store + i32.const 1360 + global.set $~lib/rt/itcms/toSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $6 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $6 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 0 + f64.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 0 + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=16 + local.get $6 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1180 + i32.load + local.tee $5 + i32.const 1 + i32.add + local.tee $4 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + local.get $2 + i32.const 1176 + i32.load + local.tee $0 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $2 + i32.const 268435455 + i32.gt_u + if + i32.const 1616 + i32.const 1664 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$141 + i32.const 1073741820 + local.get $0 + i32.const 1 + i32.shl + local.tee $0 + local.get $0 + i32.const 1073741820 + i32.ge_u + select + local.tee $1 + i32.const 8 + local.get $2 + local.get $2 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 + local.get $0 + local.get $1 + i32.lt_u + select + local.tee $3 + i32.const 1168 + i32.load + local.tee $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $3 + i32.store offset=16 + local.get $0 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$141 + end + local.get $3 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $0 + local.get $3 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $2 + local.get $3 + i32.gt_u + select + memory.copy + end + local.get $0 + local.get $1 + i32.ne + if + i32.const 1168 + local.get $1 + i32.store + i32.const 1172 + local.get $1 + i32.store + i32.const 1168 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + end + i32.const 1176 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1172 + i32.load + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + i32.const 1168 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1180 + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat deleted file mode 100644 index 664c7a63fa..0000000000 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ /dev/null @@ -1,4111 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (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_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 32) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 64) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 80) "\10\00\00\00\01\00\00\00\08\00\00\00\10\00\00\00P\00\00\00P\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 224) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 272) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 320) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 368) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 432) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 480) "\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\"A\00\00\00\00\00\00\"A\00\00\00\00\00\00") - (table $0 1 funcref) - (global $extends-baseaggregate/poolB i32 (i32.const 48)) - (global $extends-baseaggregate/poolA i32 (i32.const 96)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 480)) - (global $~lib/heap/__heap_base i32 (i32.const 556)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 176 - i32.const 128 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $extends-baseaggregate/A1#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 20 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - f64.const 0 - f64.store - local.get $0 - f64.const 0 - f64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - ) - (func $extends-baseaggregate/A2#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 20 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - call $extends-baseaggregate/A1#constructor - local.set $0 - local.get $0 - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 0 - drop - ) - (func $~lib/rt/tlsf/reallocateBlock (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.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $3 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $6 - local.get $6 - i32.load - local.set $7 - local.get $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $5 - local.get $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $8 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u - if - i32.const 0 - drop - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $8 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=8 - local.set $3 - local.get $1 - local.get $3 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 288 - i32.const 336 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $4 - local.get $1 - local.get $2 - i32.shl - local.set $5 - local.get $4 - local.get $5 - call $~lib/rt/tlsf/__realloc - local.set $6 - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $5 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $6 - local.get $4 - i32.ne - if - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.store offset=8 - end - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - call $~lib/rt/pure/__retain - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:extends-baseaggregate - (local $0 i32) - (local $1 i32) - global.get $extends-baseaggregate/poolA - i32.const 0 - call $extends-baseaggregate/A2#constructor - local.tee $0 - call $~lib/array/Array#push - drop - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~start - call $start:extends-baseaggregate - ) - (func $~lib/rt/pure/markGray (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/scanBlack (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - local.get $0 - call $~lib/rt/pure/finalize - end - ) - (func $~lib/rt/pure/__collect - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - drop - global.get $~lib/rt/pure/ROOTS - local.set $0 - local.get $0 - local.set $1 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $6 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $6 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $5 - call $~lib/rt/pure/markGray - local.get $1 - local.get $5 - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - else - local.get $6 - i32.const 1879048192 - i32.and - i32.const 0 - i32.eq - if (result i32) - local.get $6 - i32.const 268435455 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $5 - call $~lib/rt/pure/finalize - else - local.get $5 - local.get $6 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - end - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - global.set $~lib/rt/pure/CUR - local.get $0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $1 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $3 - i32.load - call $~lib/rt/pure/scan - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $for-loop|1 - end - end - local.get $0 - local.set $3 - loop $for-loop|2 - local.get $3 - local.get $1 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $3 - i32.load - local.set $4 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/collectWhite - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $0 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 384 - i32.const 448 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/growRoots - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.set $0 - global.get $~lib/rt/pure/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul - local.tee $2 - i32.const 64 - i32.const 2 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - local.set $4 - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $5 - i32.const 0 - drop - local.get $5 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $0 - if - i32.const 0 - drop - local.get $0 - call $~lib/rt/tlsf/__free - end - local.get $5 - global.set $~lib/rt/pure/ROOTS - local.get $5 - local.get $1 - i32.add - global.set $~lib/rt/pure/CUR - local.get $5 - local.get $4 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/appendRoot (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.set $1 - local.get $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 0 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/finalize - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 - end - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - drop - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.eqz - if - local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 0 - drop - local.get $0 - i32.const 16 - i32.sub - local.set $2 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 - br $case5|0 - end - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - end - i32.const 1 - drop - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 79 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray - br $break|0 - end - local.get $2 - call $~lib/rt/pure/scan - br $break|0 - end - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 90 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end - br $break|0 - end - local.get $2 - call $~lib/rt/pure/collectWhite - br $break|0 - end - i32.const 1 - drop - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 101 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$6 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$6 $switch$1$case$4 $switch$1$case$6 $switch$1$case$9 $switch$1$case$10 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - i32.load offset=16 - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/extends-recursive.debug.wat b/tests/compiler/extends-recursive.debug.wat new file mode 100644 index 0000000000..a4d78b0d14 --- /dev/null +++ b/tests/compiler/extends-recursive.debug.wat @@ -0,0 +1,2547 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 416)) + (global $~lib/memory/__data_end i32 (i32.const 444)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33212)) + (global $~lib/memory/__heap_base i32 (i32.const 33212)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 416) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $extends-recursive/Parent#set:child (param $this i32) (param $child i32) + local.get $this + local.get $child + i32.store + local.get $this + local.get $child + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $start:extends-recursive + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $extends-recursive/Child#constructor + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $extends-recursive/Child~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $extends-recursive/Parent~visit + ) + (func $extends-recursive/Parent~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $extends-recursive/Parent + block $extends-recursive/Child + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $extends-recursive/Child $extends-recursive/Parent $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $extends-recursive/Child~visit + return + end + local.get $0 + local.get $1 + call $extends-recursive/Parent~visit + return + end + unreachable + ) + (func $~start + call $start:extends-recursive + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33232 + i32.const 33280 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $extends-recursive/Parent#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $extends-recursive/Parent#set:child + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $extends-recursive/Child#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $extends-recursive/Parent#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/extends-recursive.json b/tests/compiler/extends-recursive.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/extends-recursive.json +++ b/tests/compiler/extends-recursive.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/extends-recursive.optimized.wat b/tests/compiler/extends-recursive.optimized.wat deleted file mode 100644 index eaf97cd657..0000000000 --- a/tests/compiler/extends-recursive.optimized.wat +++ /dev/null @@ -1,22 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (memory $0 0) - (global $extends-recursive/Child i32 (i32.const 3)) - (export "memory" (memory $0)) - (export "Child" (global $extends-recursive/Child)) - (export "Child#get:child" (func $extends-recursive/Parent#get:child)) - (export "Child#set:child" (func $extends-recursive/Parent#set:child)) - (func $extends-recursive/Parent#get:child (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $extends-recursive/Parent#set:child (param $0 i32) (param $1 i32) - local.get $0 - i32.load - drop - local.get $0 - local.get $1 - i32.store - ) -) diff --git a/tests/compiler/extends-recursive.release.wat b/tests/compiler/extends-recursive.release.wat new file mode 100644 index 0000000000..b00fbf4cd8 --- /dev/null +++ b/tests/compiler/extends-recursive.release.wat @@ -0,0 +1,1680 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34236)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1440) "\06\00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$116 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34236 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$116 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34236 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $__inlined_func$start:extends-recursive$1 + memory.size + i32.const 16 + i32.shl + i32.const 34236 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$start:extends-recursive$1 + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/extends-recursive.ts b/tests/compiler/extends-recursive.ts index 2deae0ab2e..f834cda68d 100644 --- a/tests/compiler/extends-recursive.ts +++ b/tests/compiler/extends-recursive.ts @@ -1,4 +1,6 @@ class Parent { child: Child | null = null; } -export class Child extends Parent { } +class Child extends Parent { } + +new Child(); diff --git a/tests/compiler/extends-recursive.untouched.wat b/tests/compiler/extends-recursive.untouched.wat deleted file mode 100644 index 06d2040bd3..0000000000 --- a/tests/compiler/extends-recursive.untouched.wat +++ /dev/null @@ -1,199 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 0) - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) - (global $extends-recursive/Child i32 (i32.const 3)) - (export "memory" (memory $0)) - (export "Child" (global $extends-recursive/Child)) - (export "Child#get:child" (func $extends-recursive/Parent#get:child)) - (export "Child#set:child" (func $extends-recursive/Parent#set:child)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $extends-recursive/Parent#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - call $~lib/rt/stub/__retain - i32.store - local.get $0 - ) - (func $extends-recursive/Child#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $extends-recursive/Parent#constructor - local.set $0 - local.get $0 - ) - (func $extends-recursive/Parent#get:child (param $0 i32) (result i32) - local.get $0 - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $extends-recursive/Parent#set:child (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $1 - i32.store - ) - (func $~start - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) -) diff --git a/tests/compiler/extends-self.json b/tests/compiler/extends-self.json index a6b4e4b4ae..839343b16a 100644 --- a/tests/compiler/extends-self.json +++ b/tests/compiler/extends-self.json @@ -1,9 +1,8 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "TS2506", "EOF" ] -} \ No newline at end of file +} diff --git a/tests/compiler/external.debug.wat b/tests/compiler/external.debug.wat new file mode 100644 index 0000000000..67fa2919b1 --- /dev/null +++ b/tests/compiler/external.debug.wat @@ -0,0 +1,18 @@ +(module + (type $0 (func)) + (import "foo" "var" (global $external/var_ i32)) + (import "external" "foo" (func $external/foo)) + (import "external" "bar" (func $external/two)) + (import "foo" "baz" (func $external/three)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "foo" (func $external/foo)) + (export "two" (func $external/two)) + (export "three" (func $external/three)) + (export "var_" (global $external/var_)) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/external.js b/tests/compiler/external.js index 503cde0fa0..1bab69af70 100644 --- a/tests/compiler/external.js +++ b/tests/compiler/external.js @@ -1,4 +1,4 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports.external = { foo: function() { /* nop */ }, "foo.bar": function() { /* nop */ }, @@ -8,4 +8,4 @@ exports.preInstantiate = function(imports, exports) { baz: function() { /* nop */ }, "var": 3 }; -}; +} diff --git a/tests/compiler/external.json b/tests/compiler/external.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/external.json +++ b/tests/compiler/external.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/external.optimized.wat b/tests/compiler/external.optimized.wat deleted file mode 100644 index ba9388aa48..0000000000 --- a/tests/compiler/external.optimized.wat +++ /dev/null @@ -1,15 +0,0 @@ -(module - (type $none_=>_none (func)) - (import "foo" "var" (global $external/var_ i32)) - (import "external" "foo" (func $external/foo)) - (import "external" "foo.bar" (func $external/foo.bar)) - (import "external" "bar" (func $external/two)) - (import "foo" "baz" (func $external/three)) - (memory $0 0) - (export "memory" (memory $0)) - (export "foo" (func $external/foo)) - (export "foo.bar" (func $external/foo.bar)) - (export "two" (func $external/two)) - (export "three" (func $external/three)) - (export "var_" (global $external/var_)) -) diff --git a/tests/compiler/external.release.wat b/tests/compiler/external.release.wat new file mode 100644 index 0000000000..26463e94fb --- /dev/null +++ b/tests/compiler/external.release.wat @@ -0,0 +1,13 @@ +(module + (type $0 (func)) + (import "foo" "var" (global $external/var_ i32)) + (import "external" "foo" (func $external/foo)) + (import "external" "bar" (func $external/two)) + (import "foo" "baz" (func $external/three)) + (memory $0 0) + (export "foo" (func $external/foo)) + (export "two" (func $external/two)) + (export "three" (func $external/three)) + (export "var_" (global $external/var_)) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/external.ts b/tests/compiler/external.ts index a45aaffd49..2ce590e009 100644 --- a/tests/compiler/external.ts +++ b/tests/compiler/external.ts @@ -1,7 +1,4 @@ export declare function foo(): void; // external , foo -export declare namespace foo { - export function bar(): void; // external , foo.bar -} @external("bar") export declare function two(): void; // external , bar diff --git a/tests/compiler/external.untouched.wat b/tests/compiler/external.untouched.wat deleted file mode 100644 index bf285b5d40..0000000000 --- a/tests/compiler/external.untouched.wat +++ /dev/null @@ -1,16 +0,0 @@ -(module - (type $none_=>_none (func)) - (import "foo" "var" (global $external/var_ i32)) - (import "external" "foo" (func $external/foo)) - (import "external" "foo.bar" (func $external/foo.bar)) - (import "external" "bar" (func $external/two)) - (import "foo" "baz" (func $external/three)) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "foo" (func $external/foo)) - (export "foo.bar" (func $external/foo.bar)) - (export "two" (func $external/two)) - (export "three" (func $external/three)) - (export "var_" (global $external/var_)) -) diff --git a/tests/compiler/features/README.md b/tests/compiler/features/README.md index 883099ce5e..30ac70c4d5 100644 --- a/tests/compiler/features/README.md +++ b/tests/compiler/features/README.md @@ -1 +1 @@ -Test cases for post-MVP WebAssembly features. \ No newline at end of file +Test cases for future WebAssembly features. diff --git a/tests/compiler/features/exception-handling.debug.wat b/tests/compiler/features/exception-handling.debug.wat new file mode 100644 index 0000000000..541e3c19af --- /dev/null +++ b/tests/compiler/features/exception-handling.debug.wat @@ -0,0 +1,9 @@ +(module + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/features/exception-handling.json b/tests/compiler/features/exception-handling.json new file mode 100644 index 0000000000..dfa6f975e5 --- /dev/null +++ b/tests/compiler/features/exception-handling.json @@ -0,0 +1,5 @@ +{ + "features": [ + "exception-handling" + ] +} diff --git a/tests/compiler/import.optimized.wat b/tests/compiler/features/exception-handling.release.wat similarity index 100% rename from tests/compiler/import.optimized.wat rename to tests/compiler/features/exception-handling.release.wat diff --git a/tests/compiler/features/exception-handling.ts b/tests/compiler/features/exception-handling.ts new file mode 100644 index 0000000000..70b786d12e --- /dev/null +++ b/tests/compiler/features/exception-handling.ts @@ -0,0 +1 @@ +// TODO diff --git a/tests/compiler/features/gc.debug.wat b/tests/compiler/features/gc.debug.wat new file mode 100644 index 0000000000..8f24f21139 --- /dev/null +++ b/tests/compiler/features/gc.debug.wat @@ -0,0 +1,65 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (type $1) (param i32 i32 i32 i32))) + (global $features/gc/globalFunc funcref (ref.null nofunc)) + (global $features/gc/globalExtern externref (ref.null noextern)) + (global $features/gc/globalAny anyref (ref.null none)) + (global $features/gc/globalEq eqref (ref.null none)) + (global $features/gc/globalI31 i31ref (ref.null none)) + (global $features/gc/globalStruct structref (ref.null none)) + (global $features/gc/globalArray arrayref (ref.null none)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00g\00c\00.\00t\00s\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "globalFunc" (global $features/gc/globalFunc)) + (export "globalExtern" (global $features/gc/globalExtern)) + (export "globalAny" (global $features/gc/globalAny)) + (export "globalEq" (global $features/gc/globalEq)) + (export "globalI31" (global $features/gc/globalI31)) + (export "globalStruct" (global $features/gc/globalStruct)) + (export "globalArray" (global $features/gc/globalArray)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $features/gc/test_i31 (type $0) + (local $ref (ref i31)) + (local $val i32) + (local $uval i32) + i32.const 123 + ref.i31 + local.set $ref + local.get $ref + ref.is_null + if + i32.const 0 + i32.const 32 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ref + i31.get_s + local.set $val + local.get $ref + i31.get_u + local.set $uval + ) + (func $start:features/gc (type $0) + call $features/gc/test_i31 + ) + (func $~start (type $0) + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:features/gc + ) +) diff --git a/tests/compiler/features/gc.json b/tests/compiler/features/gc.json new file mode 100644 index 0000000000..f90012c0fb --- /dev/null +++ b/tests/compiler/features/gc.json @@ -0,0 +1,10 @@ +{ + "features": [ + "gc" + ], + "asc_flags": [ + "--exportStart", "_start", + "--noValidate" + ], + "skipInstantiate": true +} diff --git a/tests/compiler/features/gc.release.wat b/tests/compiler/features/gc.release.wat new file mode 100644 index 0000000000..e5baaab127 --- /dev/null +++ b/tests/compiler/features/gc.release.wat @@ -0,0 +1,24 @@ +(module + (type $0 (func)) + (global $features/gc/globalFunc funcref (ref.null nofunc)) + (global $features/gc/globalExtern externref (ref.null noextern)) + (global $features/gc/globalAny anyref (ref.null none)) + (global $features/gc/globalEq eqref (ref.null none)) + (global $features/gc/globalI31 i31ref (ref.null none)) + (global $features/gc/globalStruct structref (ref.null none)) + (global $features/gc/globalArray arrayref (ref.null none)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00g\00c\00.\00t\00s") + (export "globalFunc" (global $features/gc/globalFunc)) + (export "globalExtern" (global $features/gc/globalExtern)) + (export "globalAny" (global $features/gc/globalAny)) + (export "globalEq" (global $features/gc/globalEq)) + (export "globalI31" (global $features/gc/globalI31)) + (export "globalStruct" (global $features/gc/globalStruct)) + (export "globalArray" (global $features/gc/globalArray)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~start (type $0) + ) +) diff --git a/tests/compiler/features/gc.ts b/tests/compiler/features/gc.ts new file mode 100644 index 0000000000..a21093b929 --- /dev/null +++ b/tests/compiler/features/gc.ts @@ -0,0 +1,18 @@ +function test_i31(): void { + var ref = i31.new(123); + assert(ref); + var val = i31.get(ref); + var uval = i31.get(ref); +} + +test_i31(); + +// constant globals + +export const globalFunc: ref_func | null = null; +export const globalExtern: ref_extern | null = null; +export const globalAny: ref_any | null = null; +export const globalEq: ref_eq | null = null; +export const globalI31: ref_i31 | null = null; +export const globalStruct: ref_struct | null = null; +export const globalArray: ref_array | null = null; diff --git a/tests/compiler/features/js-bigint-integration.js b/tests/compiler/features/js-bigint-integration.js deleted file mode 100644 index 7519fea873..0000000000 --- a/tests/compiler/features/js-bigint-integration.js +++ /dev/null @@ -1,15 +0,0 @@ -exports.preInstantiate = function(imports, exports) { - const externalValue = 9007199254740991n; - imports["js-bigint-integration"] = { - externalValue, - getExternalValue: function() { - return externalValue; - }, - }; -}; -exports.postInstantiate = function(instance) { - const exports = instance.exports; - const internalValue = exports.internalValue; - if (internalValue != 9007199254740991n) throw Error("unexpected value"); - if (exports.getInternalValue() != internalValue) throw Error("unexpected value"); -}; diff --git a/tests/compiler/features/js-bigint-integration.json b/tests/compiler/features/js-bigint-integration.json deleted file mode 100644 index 1f50c442e6..0000000000 --- a/tests/compiler/features/js-bigint-integration.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "features": [ - "bigint-integration" - ], - "asc_flags": [ - "--runtime none", - "--explicitStart" - ] -} diff --git a/tests/compiler/features/js-bigint-integration.optimized.wat b/tests/compiler/features/js-bigint-integration.optimized.wat deleted file mode 100644 index 6c9fe3ed3a..0000000000 --- a/tests/compiler/features/js-bigint-integration.optimized.wat +++ /dev/null @@ -1,50 +0,0 @@ -(module - (type $none_=>_i64 (func (result i64))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "js-bigint-integration" "externalValue" (global $features/js-bigint-integration/externalValue i64)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "js-bigint-integration" "getExternalValue" (func $features/js-bigint-integration/getExternalValue (result i64))) - (memory $0 1) - (data (i32.const 1024) "B\00\00\00\01\00\00\00\01\00\00\00B\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00j\00s\00-\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s") - (global $features/js-bigint-integration/internalValue i64 (i64.const 9007199254740991)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "internalValue" (global $features/js-bigint-integration/internalValue)) - (export "getInternalValue" (func $features/js-bigint-integration/getInternalValue)) - (func $features/js-bigint-integration/getInternalValue (result i64) - i64.const 9007199254740991 - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - global.get $features/js-bigint-integration/externalValue - i64.const 9007199254740991 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $features/js-bigint-integration/getExternalValue - global.get $features/js-bigint-integration/externalValue - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/features/js-bigint-integration.untouched.wat b/tests/compiler/features/js-bigint-integration.untouched.wat deleted file mode 100644 index aaa8482d1a..0000000000 --- a/tests/compiler/features/js-bigint-integration.untouched.wat +++ /dev/null @@ -1,56 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i64 (func (result i64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "js-bigint-integration" "externalValue" (global $features/js-bigint-integration/externalValue i64)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "js-bigint-integration" "getExternalValue" (func $features/js-bigint-integration/getExternalValue (result i64))) - (memory $0 1) - (data (i32.const 16) "B\00\00\00\01\00\00\00\01\00\00\00B\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00j\00s\00-\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s\00") - (table $0 1 funcref) - (global $features/js-bigint-integration/internalValue i64 (i64.const 9007199254740991)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "internalValue" (global $features/js-bigint-integration/internalValue)) - (export "getInternalValue" (func $features/js-bigint-integration/getInternalValue)) - (func $start:features/js-bigint-integration - global.get $features/js-bigint-integration/externalValue - i64.const 9007199254740991 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $features/js-bigint-integration/getExternalValue - global.get $features/js-bigint-integration/externalValue - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $features/js-bigint-integration/getInternalValue (result i64) - global.get $features/js-bigint-integration/internalValue - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:features/js-bigint-integration - ) -) diff --git a/tests/compiler/features/mutable-globals.json b/tests/compiler/features/mutable-globals.json deleted file mode 100644 index a8edac7a10..0000000000 --- a/tests/compiler/features/mutable-globals.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "features": [ - "mutable-globals" - ], - "asc_flags": [ - "--runtime none", - "--explicitStart" - ] -} diff --git a/tests/compiler/features/mutable-globals.optimized.wat b/tests/compiler/features/mutable-globals.optimized.wat deleted file mode 100644 index 01861b6059..0000000000 --- a/tests/compiler/features/mutable-globals.optimized.wat +++ /dev/null @@ -1,75 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "mutable-globals" "external" (global $features/mutable-globals/external (mut i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s") - (global $features/mutable-globals/internal (mut i32) (i32.const 124)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "external" (global $features/mutable-globals/external)) - (export "internal" (global $features/mutable-globals/internal)) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - global.get $features/mutable-globals/external - i32.const 123 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $features/mutable-globals/internal - i32.const 124 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $features/mutable-globals/external - i32.const 10 - i32.add - global.set $features/mutable-globals/external - global.get $features/mutable-globals/internal - i32.const 10 - i32.add - global.set $features/mutable-globals/internal - global.get $features/mutable-globals/external - i32.const 133 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $features/mutable-globals/internal - i32.const 134 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/features/mutable-globals.untouched.wat b/tests/compiler/features/mutable-globals.untouched.wat deleted file mode 100644 index 0d386c0006..0000000000 --- a/tests/compiler/features/mutable-globals.untouched.wat +++ /dev/null @@ -1,83 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "mutable-globals" "external" (global $features/mutable-globals/external (mut i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s\00") - (table $0 1 funcref) - (global $features/mutable-globals/internal (mut i32) (i32.const 124)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "external" (global $features/mutable-globals/external)) - (export "internal" (global $features/mutable-globals/internal)) - (func $start:features/mutable-globals - global.get $features/mutable-globals/external - i32.const 123 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $features/mutable-globals/internal - i32.const 124 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $features/mutable-globals/external - i32.const 10 - i32.add - global.set $features/mutable-globals/external - global.get $features/mutable-globals/internal - i32.const 10 - i32.add - global.set $features/mutable-globals/internal - global.get $features/mutable-globals/external - i32.const 133 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $features/mutable-globals/internal - i32.const 134 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:features/mutable-globals - ) -) diff --git a/tests/compiler/features/not-supported.json b/tests/compiler/features/not-supported.json index 99f1dac543..c00b1eca4d 100644 --- a/tests/compiler/features/not-supported.json +++ b/tests/compiler/features/not-supported.json @@ -1,6 +1,6 @@ { "asc_flags": [ - "--runtime none" + "--disable", "simd" ], "stderr": [ "AS103: Feature 'simd' is not enabled.", diff --git a/tests/compiler/features/reference-types.debug.wat b/tests/compiler/features/reference-types.debug.wat new file mode 100644 index 0000000000..77709d2bd9 --- /dev/null +++ b/tests/compiler/features/reference-types.debug.wat @@ -0,0 +1,340 @@ +(module + (type $0 (func)) + (type $1 (func (result externref))) + (type $2 (func (param externref) (result externref))) + (type $3 (func (param i32 i32 i32 i32))) + (import "reference-types" "somethingReal" (func $features/reference-types/somethingReal (result externref))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "reference-types" "somethingNull" (func $features/reference-types/somethingNull (result externref))) + (import "reference-types" "external" (func $features/reference-types/external (param externref) (result externref))) + (global $features/reference-types/funcGlobal (mut funcref) (ref.null nofunc)) + (global $features/reference-types/funcGlobalInit (mut funcref) (ref.null nofunc)) + (global $features/reference-types/anyGlobal (mut externref) (ref.null noextern)) + (global $features/reference-types/anyGlobalInit (mut externref) (ref.null noextern)) + (global $features/reference-types/otherFuncGlobal (mut funcref) (ref.func $features/reference-types/someFunc)) + (global $features/reference-types/a externref (ref.null noextern)) + (global $features/reference-types/b funcref (ref.null nofunc)) + (global $features/reference-types/nonNullFunc (mut funcref) (ref.null nofunc)) + (global $features/reference-types/nonNullReal (mut externref) (ref.null noextern)) + (global $~lib/memory/__data_end i32 (i32.const 220)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32988)) + (global $~lib/memory/__heap_base i32 (i32.const 32988)) + (memory $0 1) + (data $0 (i32.const 12) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s\00\00\00\00\00\00\00") + (data $1 (i32.const 92) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (elem declare func $features/reference-types/someFunc) + (export "external" (func $features/reference-types/external)) + (export "somethingReal" (func $features/reference-types/somethingReal)) + (export "somethingNull" (func $features/reference-types/somethingNull)) + (export "internal" (func $features/reference-types/internal)) + (export "a" (global $features/reference-types/a)) + (export "b" (global $features/reference-types/b)) + (export "nonNullFunc" (global $features/reference-types/nonNullFunc)) + (export "nonNullReal" (global $features/reference-types/nonNullReal)) + (export "memory" (memory $0)) + (start $~start) + (func $features/reference-types/testLocal + (local $local funcref) + ref.null nofunc + local.set $local + local.get $local + ref.is_null + i32.eqz + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ref.null nofunc + local.set $local + local.get $local + ref.is_null + i32.eqz + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $features/reference-types/testLocal + (local $local externref) + ref.null noextern + local.set $local + local.get $local + ref.is_null + i32.eqz + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ref.null noextern + local.set $local + local.get $local + ref.is_null + i32.eqz + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $features/reference-types/someFunc + ) + (func $start:features/reference-types + (local $funcLocal funcref) + (local $1 funcref) + (local $2 externref) + call $features/reference-types/somethingReal + ref.is_null + i32.eqz + i32.eqz + if + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + end + call $features/reference-types/somethingNull + ref.is_null + i32.eqz + i32.eqz + if + else + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + end + call $features/reference-types/somethingReal + ref.is_null + i32.eqz + if + else + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 26 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + end + call $features/reference-types/somethingNull + ref.is_null + i32.eqz + if + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + end + global.get $features/reference-types/funcGlobal + ref.is_null + i32.eqz + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 55 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ref.null nofunc + global.set $features/reference-types/funcGlobal + global.get $features/reference-types/funcGlobal + ref.is_null + i32.eqz + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 57 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $features/reference-types/funcGlobalInit + ref.is_null + i32.eqz + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $features/reference-types/anyGlobal + ref.is_null + i32.eqz + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ref.null noextern + global.set $features/reference-types/anyGlobal + global.get $features/reference-types/anyGlobal + ref.is_null + i32.eqz + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $features/reference-types/anyGlobalInit + ref.is_null + i32.eqz + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $features/reference-types/testLocal + call $features/reference-types/testLocal + ref.func $features/reference-types/someFunc + global.set $features/reference-types/funcGlobal + global.get $features/reference-types/funcGlobal + ref.is_null + if + i32.const 0 + i32.const 32 + i32.const 81 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $features/reference-types/otherFuncGlobal + ref.is_null + if + i32.const 0 + i32.const 32 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ref.func $features/reference-types/someFunc + local.set $funcLocal + local.get $funcLocal + ref.is_null + if + i32.const 0 + i32.const 32 + i32.const 86 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $features/reference-types/otherFuncGlobal + local.tee $1 + ref.is_null + if (result funcref) + i32.const 112 + i32.const 32 + i32.const 95 + i32.const 28 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $features/reference-types/nonNullFunc + call $features/reference-types/somethingReal + local.tee $2 + ref.is_null + if (result externref) + i32.const 112 + i32.const 32 + i32.const 96 + i32.const 28 + call $~lib/builtins/abort + unreachable + else + local.get $2 + end + global.set $features/reference-types/nonNullReal + ) + (func $features/reference-types/internal (param $a externref) (result externref) + (local $b externref) + (local $c externref) + (local $d externref) + local.get $a + call $features/reference-types/external + local.set $b + local.get $b + call $features/reference-types/external + local.set $c + local.get $c + call $features/reference-types/external + local.set $d + local.get $d + return + ) + (func $~start + call $start:features/reference-types + ) +) diff --git a/tests/compiler/features/reference-types.js b/tests/compiler/features/reference-types.js index 50aeab08ba..9bbc05cd27 100644 --- a/tests/compiler/features/reference-types.js +++ b/tests/compiler/features/reference-types.js @@ -1,4 +1,4 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports.Reflect = Reflect; imports.console = { log: function(ref) { @@ -9,9 +9,15 @@ exports.preInstantiate = function(imports, exports) { external: function(a) { return a; }, + somethingReal() { + return {}; + }, + somethingNull() { + return null; + }, someObject: { theKey: "Hello world!" }, someKey: "theKey" }; -}; +} diff --git a/tests/compiler/features/reference-types.json b/tests/compiler/features/reference-types.json index 6492822f55..a12f0f88e3 100644 --- a/tests/compiler/features/reference-types.json +++ b/tests/compiler/features/reference-types.json @@ -3,6 +3,5 @@ "reference-types" ], "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/features/reference-types.optimized.wat b/tests/compiler/features/reference-types.optimized.wat deleted file mode 100644 index 8f9e7c11e3..0000000000 --- a/tests/compiler/features/reference-types.optimized.wat +++ /dev/null @@ -1,48 +0,0 @@ -(module - (type $externref_=>_externref (func (param externref) (result externref))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $externref_=>_none (func (param externref))) - (type $externref_externref_=>_i32 (func (param externref externref) (result i32))) - (type $externref_externref_=>_externref (func (param externref externref) (result externref))) - (import "reference-types" "someObject" (global $features/reference-types/someObject externref)) - (import "reference-types" "someKey" (global $features/reference-types/someKey externref)) - (import "Reflect" "has" (func $~lib/bindings/Reflect/has (param externref externref) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "console" "log" (func $~lib/bindings/console/log (param externref))) - (import "Reflect" "get" (func $~lib/bindings/Reflect/get (param externref externref) (result externref))) - (import "reference-types" "external" (func $features/reference-types/external (param externref) (result externref))) - (memory $0 1) - (data (i32.const 1024) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s") - (export "memory" (memory $0)) - (export "external" (func $features/reference-types/external)) - (export "internal" (func $features/reference-types/internal)) - (start $~start) - (func $features/reference-types/internal (param $0 externref) (result externref) - local.get $0 - call $features/reference-types/external - call $features/reference-types/external - call $features/reference-types/external - ) - (func $~start - global.get $features/reference-types/someObject - global.get $features/reference-types/someKey - call $~lib/bindings/Reflect/has - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $features/reference-types/someObject - call $~lib/bindings/console/log - global.get $features/reference-types/someKey - call $~lib/bindings/console/log - global.get $features/reference-types/someObject - global.get $features/reference-types/someKey - call $~lib/bindings/Reflect/get - call $~lib/bindings/console/log -) diff --git a/tests/compiler/features/reference-types.release.wat b/tests/compiler/features/reference-types.release.wat new file mode 100644 index 0000000000..1c580b033e --- /dev/null +++ b/tests/compiler/features/reference-types.release.wat @@ -0,0 +1,114 @@ +(module + (type $0 (func (result externref))) + (type $1 (func)) + (type $2 (func (param externref) (result externref))) + (type $3 (func (param i32 i32 i32 i32))) + (import "reference-types" "somethingReal" (func $features/reference-types/somethingReal (result externref))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "reference-types" "somethingNull" (func $features/reference-types/somethingNull (result externref))) + (import "reference-types" "external" (func $features/reference-types/external (param externref) (result externref))) + (global $features/reference-types/funcGlobal (mut funcref) (ref.null nofunc)) + (global $features/reference-types/a externref (ref.null noextern)) + (global $features/reference-types/b funcref (ref.null nofunc)) + (global $features/reference-types/nonNullFunc (mut funcref) (ref.null nofunc)) + (global $features/reference-types/nonNullReal (mut externref) (ref.null noextern)) + (memory $0 1) + (data $0 (i32.const 1036) "L") + (data $0.1 (i32.const 1048) "\02\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s") + (data $1 (i32.const 1116) "|") + (data $1.1 (i32.const 1128) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (elem declare func $features/reference-types/someFunc) + (export "external" (func $features/reference-types/external)) + (export "somethingReal" (func $features/reference-types/somethingReal)) + (export "somethingNull" (func $features/reference-types/somethingNull)) + (export "internal" (func $features/reference-types/internal)) + (export "a" (global $features/reference-types/a)) + (export "b" (global $features/reference-types/b)) + (export "nonNullFunc" (global $features/reference-types/nonNullFunc)) + (export "nonNullReal" (global $features/reference-types/nonNullReal)) + (export "memory" (memory $0)) + (start $~start) + (func $features/reference-types/someFunc + ) + (func $features/reference-types/internal (param $0 externref) (result externref) + local.get $0 + call $features/reference-types/external + call $features/reference-types/external + call $features/reference-types/external + ) + (func $~start + (local $0 externref) + call $features/reference-types/somethingReal + ref.is_null + if + i32.const 0 + i32.const 1056 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + call $features/reference-types/somethingNull + ref.is_null + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + call $features/reference-types/somethingReal + ref.is_null + if + i32.const 0 + i32.const 1056 + i32.const 26 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + call $features/reference-types/somethingNull + ref.is_null + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $features/reference-types/funcGlobal + ref.is_null + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 55 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ref.null nofunc + global.set $features/reference-types/funcGlobal + ref.func $features/reference-types/someFunc + global.set $features/reference-types/funcGlobal + ref.func $features/reference-types/someFunc + global.set $features/reference-types/nonNullFunc + call $features/reference-types/somethingReal + local.tee $0 + ref.is_null + if + i32.const 1136 + i32.const 1056 + i32.const 96 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $features/reference-types/nonNullReal + ) +) diff --git a/tests/compiler/features/reference-types.ts b/tests/compiler/features/reference-types.ts index fa2fa17d89..050c9f1e3d 100644 --- a/tests/compiler/features/reference-types.ts +++ b/tests/compiler/features/reference-types.ts @@ -1,6 +1,8 @@ -// can use externref as a parameter or return type +// can use anyref as a parameter or return type export declare function external(a: externref): externref; +export declare function somethingReal(): externref; +export declare function somethingNull(): externref; export function internal(a: externref): externref { const b = external(a); @@ -9,44 +11,86 @@ export function internal(a: externref): externref { return d; } -// can use reflection to work with externref values - -import * as Reflect from "bindings/Reflect"; - -declare const someObject: externref; -declare const someKey: externref; +// Truthiness conversion +if (!somethingReal()) { + assert(false); +} +if (!somethingNull()) { + // nop +} else { + assert(false); +} +if (somethingReal()) { + // nop +} else { + assert(false); +} +if (somethingNull()) { + assert(false); +} -assert(Reflect.has(someObject, someKey)); +// Explicit null checks (don’t work yet) +/* +if(somethingReal() != null) { + // nop +} else { + assert(false); +} +if(somethingReal() == null) { + assert(false); +} +if(somethingNull() == null) { + // nop +} else { + assert(false); +} +if(somethingNull() != null) { + assert(false); +} +*/ -// can call JS bindings with externref values +// can represent and recognize 'null' -import * as console from "bindings/console"; +var funcGlobal: funcref; +assert(!funcGlobal); +funcGlobal = null; +assert(!funcGlobal); +var funcGlobalInit: funcref = null; +assert(!funcGlobalInit); -console.log(someObject); -console.log(someKey); -console.log(Reflect.get(someObject, someKey)); +var anyGlobal: externref; +assert(!anyGlobal); +anyGlobal = null; +assert(!anyGlobal); +var anyGlobalInit: externref = null; +assert(!anyGlobalInit); -// TODO: can represent and recognize 'null' for both externref and funcref -/* var nullGlobal: externref; -assert(!nullGlobal); -nullGlobal = null; -assert(!nullGlobal); -var nullGlobalInit: externref = null; -assert(!nullGlobalInit); -{ - let nullLocal: externref; - assert(!nullLocal); - nullLocal = null; - assert(!nullLocal); - let nullLocalInit: externref = null; - assert(!nullLocalInit); +function testLocal(): void { + let local: T = null; + assert(!local); + local = null; + assert(!local); } +testLocal(); +testLocal(); // funcref can represent function references function someFunc(): void {} -var funcGlobal: externref = someFunc; +funcGlobal = someFunc; +assert(funcGlobal); +var otherFuncGlobal: funcref = someFunc; +assert(otherFuncGlobal); { - let funcLocal: externref = someFunc; + let funcLocal: funcref = someFunc; + assert(funcLocal); } -*/ \ No newline at end of file + +// constant globals + +export const a: externref = null; +export const b: funcref = null; + +// non-null assertions +export const nonNullFunc = otherFuncGlobal!; +export const nonNullReal = somethingReal()!; diff --git a/tests/compiler/features/reference-types.untouched.wat b/tests/compiler/features/reference-types.untouched.wat deleted file mode 100644 index 0f9a373a7c..0000000000 --- a/tests/compiler/features/reference-types.untouched.wat +++ /dev/null @@ -1,64 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $externref_=>_externref (func (param externref) (result externref))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $externref_=>_none (func (param externref))) - (type $externref_externref_=>_i32 (func (param externref externref) (result i32))) - (type $externref_externref_=>_externref (func (param externref externref) (result externref))) - (import "reference-types" "someObject" (global $features/reference-types/someObject externref)) - (import "reference-types" "someKey" (global $features/reference-types/someKey externref)) - (import "Reflect" "has" (func $~lib/bindings/Reflect/has (param externref externref) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "console" "log" (func $~lib/bindings/console/log (param externref))) - (import "Reflect" "get" (func $~lib/bindings/Reflect/get (param externref externref) (result externref))) - (import "reference-types" "external" (func $features/reference-types/external (param externref) (result externref))) - (memory $0 1) - (data (i32.const 16) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s\00") - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "external" (func $features/reference-types/external)) - (export "internal" (func $features/reference-types/internal)) - (start $~start) - (func $start:features/reference-types - global.get $features/reference-types/someObject - global.get $features/reference-types/someKey - call $~lib/bindings/Reflect/has - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $features/reference-types/someObject - call $~lib/bindings/console/log - global.get $features/reference-types/someKey - call $~lib/bindings/console/log - global.get $features/reference-types/someObject - global.get $features/reference-types/someKey - call $~lib/bindings/Reflect/get - call $~lib/bindings/console/log - ) - (func $features/reference-types/internal (param $0 externref) (result externref) - (local $1 externref) - (local $2 externref) - (local $3 externref) - local.get $0 - call $features/reference-types/external - local.set $1 - local.get $1 - call $features/reference-types/external - local.set $2 - local.get $2 - call $features/reference-types/external - local.set $3 - local.get $3 - ) - (func $~start - call $start:features/reference-types - ) -) diff --git a/tests/compiler/features/relaxed-simd.debug.wat b/tests/compiler/features/relaxed-simd.debug.wat new file mode 100644 index 0000000000..af8063a69d --- /dev/null +++ b/tests/compiler/features/relaxed-simd.debug.wat @@ -0,0 +1,175 @@ +(module + (type $0 (func)) + (global $features/relaxed-simd/v v128 (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $features/relaxed-simd/r (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:features/relaxed-simd + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i8x16.relaxed_swizzle + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i8x16.relaxed_swizzle + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + i32x4.relaxed_trunc_f32x4_s + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + i32x4.relaxed_trunc_f32x4_s + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + i32x4.relaxed_trunc_f32x4_u + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + i32x4.relaxed_trunc_f32x4_u + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + i32x4.relaxed_trunc_f64x2_s_zero + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + i32x4.relaxed_trunc_f64x2_s_zero + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + i32x4.relaxed_trunc_f64x2_u_zero + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + i32x4.relaxed_trunc_f64x2_u_zero + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f32x4.relaxed_madd + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f32x4.relaxed_madd + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f32x4.relaxed_nmadd + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f32x4.relaxed_nmadd + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f64x2.relaxed_madd + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f64x2.relaxed_madd + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f64x2.relaxed_nmadd + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f64x2.relaxed_nmadd + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i8x16.laneselect + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i8x16.laneselect + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i16x8.laneselect + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i16x8.laneselect + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i32x4.laneselect + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i32x4.laneselect + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i64x2.laneselect + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i64x2.laneselect + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f32x4.relaxed_min + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f32x4.relaxed_min + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f32x4.relaxed_max + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f32x4.relaxed_max + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f64x2.relaxed_min + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f64x2.relaxed_min + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f64x2.relaxed_max + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + f64x2.relaxed_max + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i16x8.relaxed_q15mulr_s + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i16x8.relaxed_q15mulr_s + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i16x8.dot_i8x16_i7x16_s + global.set $features/relaxed-simd/r + global.get $features/relaxed-simd/v + global.get $features/relaxed-simd/v + i16x8.dot_i8x16_i7x16_s + global.set $features/relaxed-simd/r + ) + (func $~start + call $start:features/relaxed-simd + ) +) diff --git a/tests/compiler/features/relaxed-simd.json b/tests/compiler/features/relaxed-simd.json new file mode 100644 index 0000000000..a01579d1e7 --- /dev/null +++ b/tests/compiler/features/relaxed-simd.json @@ -0,0 +1,9 @@ +{ + "asc_flags": [ + "--runtime stub" + ], + "features": [ + "simd", + "relaxed-simd" + ] +} diff --git a/tests/compiler/indexof-valueof.optimized.wat b/tests/compiler/features/relaxed-simd.release.wat similarity index 100% rename from tests/compiler/indexof-valueof.optimized.wat rename to tests/compiler/features/relaxed-simd.release.wat diff --git a/tests/compiler/features/relaxed-simd.ts b/tests/compiler/features/relaxed-simd.ts new file mode 100644 index 0000000000..3fc581cc7e --- /dev/null +++ b/tests/compiler/features/relaxed-simd.ts @@ -0,0 +1,83 @@ +const v = v128.splat(0); +let r: v128; + +r = i8x16.relaxed_swizzle(v, v); +// == +r = v128.relaxed_swizzle(v, v); + +r = i32x4.relaxed_trunc_f32x4_s(v); +// == +r = v128.relaxed_trunc(v); + +r = i32x4.relaxed_trunc_f32x4_u(v); +// == +r = v128.relaxed_trunc(v); + +r = i32x4.relaxed_trunc_f64x2_s_zero(v); +// == +r = v128.relaxed_trunc_zero(v); + +r = i32x4.relaxed_trunc_f64x2_u_zero(v); +// == +r = v128.relaxed_trunc_zero(v); + +r = f32x4.relaxed_madd(v, v, v); +// == +r = v128.relaxed_madd(v, v, v); + +r = f32x4.relaxed_nmadd(v, v, v); +// == +r = v128.relaxed_nmadd(v, v, v); + +r = f64x2.relaxed_madd(v, v, v); +// == +r = v128.relaxed_madd(v, v, v); + +r = f64x2.relaxed_nmadd(v, v, v); +// == +r = v128.relaxed_nmadd(v, v, v); + +r = i8x16.relaxed_laneselect(v, v, v); +// == +r = v128.relaxed_laneselect(v, v, v); + +r = i16x8.relaxed_laneselect(v, v, v); +// == +r = v128.relaxed_laneselect(v, v, v); + +r = i32x4.relaxed_laneselect(v, v, v); +// == +r = v128.relaxed_laneselect(v, v, v); + +r = i64x2.relaxed_laneselect(v, v, v); +// == +r = v128.relaxed_laneselect(v, v, v); + +r = f32x4.relaxed_min(v, v); +// == +r = v128.relaxed_min(v, v); + +r = f32x4.relaxed_max(v, v); +// == +r = v128.relaxed_max(v, v); + +r = f64x2.relaxed_min(v, v); +// == +r = v128.relaxed_min(v, v); + +r = f64x2.relaxed_max(v, v); +// == +r = v128.relaxed_max(v, v); + +r = i16x8.relaxed_q15mulr_s(v, v); +// == +r = v128.relaxed_q15mulr(v, v); + +r = i16x8.relaxed_dot_i8x16_i7x16_s(v, v); +// == +r = v128.relaxed_dot(v, v); + +// TODO: not yet implemented in binaryen/src/wasm-interpreter.h +// r = i32x4.relaxed_dot_i8x16_i7x16_add_s(v, v, v); +// // == +// r = v128.relaxed_dot_add(v, v, v); diff --git a/tests/compiler/features/simd.json b/tests/compiler/features/simd.json deleted file mode 100644 index 314c29279f..0000000000 --- a/tests/compiler/features/simd.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "features": [ - "simd" - ], - "asc_flags": [ - "--runtime none" - ], - "skipInstantiate": true -} diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat deleted file mode 100644 index 71fb2f303b..0000000000 --- a/tests/compiler/features/simd.optimized.wat +++ /dev/null @@ -1,94 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") - (data (i32.const 1072) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $start:features/simd - (local $0 i32) - (local $1 i32) - i32.const 1120 - global.set $~lib/rt/stub/offset - i32.const 1200 - memory.size - local.tee $1 - i32.const 16 - i32.shl - local.tee $0 - i32.gt_u - if - local.get $1 - i32.const 66735 - local.get $0 - i32.sub - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $1 - local.get $0 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - i32.const 1200 - global.set $~lib/rt/stub/offset - i32.const 1120 - i32.const 64 - i32.store - i32.const 1124 - i32.const 1 - i32.store - i32.const 1128 - i32.const 0 - i32.store - i32.const 1132 - i32.const 64 - i32.store - i32.const 1168 - i32.const 1152 - v128.load - v128.store - i32.const 1124 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 70 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 1120 - i32.load - i32.const 1136 - i32.add - i32.eq - if - i32.const 1120 - global.set $~lib/rt/stub/offset - end - ) - (func $~start - call $start:features/simd - ) -) diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts deleted file mode 100644 index c62347b856..0000000000 --- a/tests/compiler/features/simd.ts +++ /dev/null @@ -1,704 +0,0 @@ -// hint: asc tests/compiler/simd --enable simd - -function test_v128(): void { - // equality and inequality - assert( - v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) - == // i8x16.all_true(i8x16.eq(lhs, rhs)) - v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) - ); - assert( - v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) - != // i8x16.any_true(i8x16.ne(lhs, rhs)) - v128(2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) - ); - // bitwise - assert( - v128.and( - v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), - v128(1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1 , 1 , 1 , 1 , 1 , 1) - ) == - v128(1, 0, 1, 0, 1, 0, 1, 0, 1, 0 , 1 , 0 , 1 , 0 , 1 , 0) - ); - assert( - v128.or( - v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), - v128(1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1 , 1 , 1 , 1 , 1 , 1) - ) == - v128(1, 3, 3, 5, 5, 7, 7, 9, 9, 11, 11, 13, 13, 15, 15, 17) - ); - assert( - v128.xor( - v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), - v128(1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1 , 1 , 1 , 1 , 1 , 1) - ) == - v128(0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 17) - ); - assert( - v128.not( - v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) - ) == - v128(-2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17) - ); - assert( - v128.bitselect( - v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), - v128(16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1), - v128(0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1), - ) == - v128(16, 2, 14, 4, 12, 6, 10, 8, 8, 10, 6, 12, 4, 14, 2, 16), - ); - { - let ptr = __alloc(64, 0); - v128.store(ptr, v128.load(ptr, 16), 32); - __free(ptr); - } - // generic operations are tested by the aliases below already -} - -function test_i8x16(): void { - var a = i8x16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 127); - assert(a == v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 127)); - var b = i8x16.splat(1); - assert(b == v128(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)); - var c = i8x16.add(a, b); - assert(c == i8x16(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -128)); - assert(i8x16.sub(c, b) == a); - assert(i8x16.mul(c, b) == c); - assert( - i8x16.min_s( - i8x16(0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - i8x16(-128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - ) - == - i8x16(-128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - ); - assert( - i8x16.min_u( - i8x16(0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - i8x16(-128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - ) - == - i8x16(0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - ); - assert( - i8x16.max_s( - i8x16(0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - i8x16(-128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - ) - == - i8x16(0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - ); - assert( - i8x16.max_u( - i8x16(0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - i8x16(-128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - ) - == - i8x16(-128, 127, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - ); - assert( - i8x16.avgr_u( - i8x16(1, 2, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0x80, 0xFF), - i8x16(1, 4, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0x80, 0xFF) - ) - == - i8x16(1, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0x80, 0xFF) - ); - assert( - i8x16.neg(a) - == - i8x16(-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -127) - ); - assert(i8x16.extract_lane_s(c, 0) == 2); - assert(i8x16.extract_lane_s(c, 15) == -128); - assert(i8x16.extract_lane_u(c, 15) == 128); - assert( - i8x16.replace_lane(c, 15, 17) - == - i8x16(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17) - ); - assert( - v128.shuffle(a, b, 0, 1, 2, 3, 4, 5, 6, 7, 24, 25, 26, 27, 28, 29, 30, 31) - == - i8x16(1, 2, 3, 4, 5, 6, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1) - ); - assert( - i8x16.add_saturate_s( - i8x16(126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127), - i8x16.splat(2) - ) == i8x16.splat(127) - ); - assert( - i8x16.add_saturate_u( - i8x16(-2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1), - i8x16.splat(2) - ) == i8x16.splat(-1) - ); - assert( - i8x16.sub_saturate_s( - i8x16(-127, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128), - i8x16.splat(2) - ) == i8x16.splat(-128) - ); - assert( - i8x16.sub_saturate_u( - i8x16(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - i8x16.splat(2) - ) == i8x16.splat(0) - ); - assert(i8x16.shl(i8x16.splat(1), 1) == i8x16.splat(2)); - assert(i8x16.shr_s(i8x16.splat(-2), 1) == i8x16.splat(-1)); - assert(i8x16.shr_u(i8x16.splat(-1), 1) == i8x16.splat(127)); - assert(i8x16.any_true(i8x16(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) == true); - assert(i8x16.all_true(i8x16.splat(1)) == true); - var one = i8x16.replace_lane(i8x16.splat(0), 0, 1); - var negOne = i8x16.replace_lane(i8x16.splat(0), 0, -1); - var only1st = negOne; - var excl1st = v128.not(negOne); - assert(i8x16.eq(negOne, one) == excl1st); - assert(i8x16.ne(negOne, one) == only1st); - assert(i8x16.lt_s(negOne, one) == only1st); - assert(i8x16.lt_u(one, negOne) == only1st); - assert(i8x16.le_s(one, negOne) == excl1st); - assert(i8x16.le_u(negOne, one) == excl1st); - assert(i8x16.gt_s(one, negOne) == only1st); - assert(i8x16.gt_u(negOne, one) == only1st); - assert(i8x16.ge_s(negOne, one) == excl1st); - assert(i8x16.ge_u(one, negOne) == excl1st); - assert(i8x16.narrow_i16x8_s(i16x8.splat(i16.MAX_VALUE), i16x8.splat(i16.MAX_VALUE)) == i8x16.splat(i8.MAX_VALUE)); - assert(i8x16.narrow_i16x8_u(i16x8.splat(i16.MAX_VALUE), i16x8.splat(i16.MAX_VALUE)) == i8x16.splat(u8.MAX_VALUE)); -} - -function test_i16x8(): void { - var a = i16x8(1, 2, 3, 4, 5, 6, 7, 32767); - assert(a == v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, 127)); - var b = i16x8.splat(1); - assert(b == v128(1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0)); - var c = i16x8.add(a, b); - assert(c == i16x8(2, 3, 4, 5, 6, 7, 8, -32768)); - assert(i16x8.sub(c, b) == a); - assert(i16x8.mul(c, b) == c); - assert( - i16x8.min_s( - i16x8(0, 32767, 32767, 0, 0, 0, 0, 0), - i16x8(-32768, 0, -32768, 0, 0, 0, 0, 0) - ) - == - i16x8(-32768, 0, -32768, 0, 0, 0, 0, 0) - ); - assert( - i16x8.min_u( - i16x8(0, 32767, 32767, 0, 0, 0, 0, 0), - i16x8(-32768, 0, -32768, 0, 0, 0, 0, 0) - ) - == - i16x8(0, 0, 32767, 0, 0, 0, 0, 0) - ); - assert( - i16x8.max_s( - i16x8(0, 32767, 32767, 0, 0, 0, 0, 0), - i16x8(-32768, 0, -32768, 0, 0, 0, 0, 0) - ) - == - i16x8(0, 32767, 32767, 0, 0, 0, 0, 0) - ); - assert( - i16x8.max_u( - i16x8(0, 32767, 32767, 0, 0, 0, 0, 0), - i16x8(-32768, 0, -32768, 0, 0, 0, 0, 0) - ) - == - i16x8(-32768, 32767, -32768, 0, 0, 0, 0, 0) - ); - assert( - i16x8.avgr_u( - i16x8(1, 2, 4, 4, 5, 6, 0x8000, 0xFFFF), - i16x8(1, 4, 2, 4, 5, 6, 0x8000, 0xFFFF) - ) - == - i16x8(1, 3, 3, 4, 5, 6, 0x8000, 0xFFFF) - ); - assert( - i16x8.neg(a) - == - i16x8(-1, -2, -3, -4, -5, -6, -7, -32767) - ); - assert(i16x8.extract_lane_s(c, 0) == 2); - assert(i16x8.extract_lane_s(c, 7) == -32768); - assert(i16x8.extract_lane_u(c, 7) == 32768); - assert( - i16x8.replace_lane(c, 7, 9) - == - i16x8(2, 3, 4, 5, 6, 7, 8, 9) - ); - assert( - v128.shuffle(a, b, 0, 1, 2, 3, 12, 13, 14, 15) - == - i16x8(1, 2, 3, 4, 1, 1, 1, 1) - ); - assert( - i16x8.add_saturate_s( - i16x8(32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767), - i16x8.splat(2) - ) == i16x8.splat(32767) - ); - assert( - i16x8.add_saturate_u( - i16x8(-2, -1, -1, -1, -1, -1, -1, -1), - i16x8.splat(2) - ) == i16x8.splat(-1) - ); - assert( - i16x8.sub_saturate_s( - i16x8(-32767, -32768, -32768, -32768, -32768, -32768, -32768, -32768), - i16x8.splat(2) - ) == i16x8.splat(-32768) - ); - assert( - i16x8.sub_saturate_u( - i16x8(1, 0, 0, 0, 0, 0, 0, 0), - i16x8.splat(2) - ) == i16x8.splat(0) - ); - assert(i16x8.shl(i16x8.splat(1), 1) == i16x8.splat(2)); - assert(i16x8.shr_s(i16x8.splat(-2), 1) == i16x8.splat(-1)); - assert(i16x8.shr_u(i16x8.splat(-1), 1) == i16x8.splat(32767)); - assert(i16x8.any_true(i16x8(1, 0, 0, 0, 0, 0, 0, 0)) == true); - assert(i16x8.all_true(i16x8.splat(1)) == true); - var one = i16x8.replace_lane(i16x8.splat(0), 0, 1); - var negOne = i16x8.replace_lane(i16x8.splat(0), 0, -1); - var only1st = negOne; - var excl1st = v128.not(negOne); - assert(i16x8.eq(negOne, one) == excl1st); - assert(i16x8.ne(negOne, one) == only1st); - assert(i16x8.lt_s(negOne, one) == only1st); - assert(i16x8.lt_u(one, negOne) == only1st); - assert(i16x8.le_s(one, negOne) == excl1st); - assert(i16x8.le_u(negOne, one) == excl1st); - assert(i16x8.gt_s(one, negOne) == only1st); - assert(i16x8.gt_u(negOne, one) == only1st); - assert(i16x8.ge_s(negOne, one) == excl1st); - assert(i16x8.ge_u(one, negOne) == excl1st); - assert(i16x8.narrow_i32x4_s(i32x4.splat(i32.MAX_VALUE), i32x4.splat(i32.MAX_VALUE)) == i16x8.splat(i16.MAX_VALUE)); - assert(i16x8.narrow_i32x4_u(i32x4.splat(i32.MAX_VALUE), i32x4.splat(i32.MAX_VALUE)) == i16x8.splat(u16.MAX_VALUE)); - assert(i16x8.widen_low_i8x16_s(i8x16.replace_lane(i8x16.splat(-1), 8, 0)) == i16x8.splat(-1)); - assert(i16x8.widen_low_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 8, 0)) == i16x8.splat(255)); - assert(i16x8.widen_high_i8x16_s(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(-1)); - assert(i16x8.widen_high_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(255)); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 1); - // store(ptr, 2, 1); - // store(ptr, 3, 2); - // store(ptr, 4, 3); - // store(ptr, 5, 4); - // store(ptr, 6, 5); - // store(ptr, 7, 6); - // store(ptr, -1, 7); - // assert( - // i16x8.load8x8_s(ptr) - // == - // v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, -1) - // ); - // assert( - // i16x8.load8x8_u(ptr) - // == - // v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, 0) - // ); - // __free(ptr); - // } -} - -function test_i32x4(): void { - var a = i32x4(1, 2, 3, 2147483647); - assert(a == v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, -1, 127)); - var b = i32x4.splat(1); - assert(b == v128(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)); - var c = i32x4.add(a, b); - assert(c == i32x4(2, 3, 4, -2147483648)); - assert(i32x4.sub(c, b) == a); - assert(i32x4.mul(c, b) == c); - assert( - i32x4.min_s( - i32x4(0, 2147483647, 2147483647, 0), - i32x4(-2147483648, 0, -2147483648, 0) - ) - == - i32x4(-2147483648, 0, -2147483648, 0) - ); - assert( - i32x4.min_u( - i32x4(0, 2147483647, 2147483647, 0), - i32x4(-2147483648, 0, -2147483648, 0) - ) - == - i32x4(0, 0, 2147483647, 0) - ); - assert( - i32x4.max_s( - i32x4(0, 2147483647, 2147483647, 0), - i32x4(-2147483648, 0, -2147483648, 0) - ) - == - i32x4(0, 2147483647, 2147483647, 0) - ); - assert( - i32x4.max_u( - i32x4(0, 2147483647, 2147483647, 0), - i32x4(-2147483648, 0, -2147483648, 0) - ) - == - i32x4(-2147483648, 2147483647, -2147483648, 0) - ); - assert( - i32x4.dot_i16x8_s( - i16x8(1, 2, 3, 4, -1, 3, 0, 0), - i16x8(5, 6, 7, 8, 2, -1, 0, 0), - ) - == - i32x4(17, 53, -5, 0) - ); - assert( - i32x4.neg(a) - == - i32x4(-1, -2, -3, -2147483647) - ); - assert(i32x4.extract_lane(c, 0) == 2); - assert(i32x4.extract_lane(c, 3) == -2147483648); - assert( - i32x4.replace_lane(c, 3, 5) - == - i32x4(2, 3, 4, 5) - ); - assert( - v128.shuffle(a, b, 0, 1, 6, 7) - == - i32x4(1, 2, 1, 1) - ); - assert(i32x4.shl(i32x4.splat(1), 1) == i32x4.splat(2)); - assert(i32x4.shr_s(i32x4.splat(-2), 1) == i32x4.splat(-1)); - assert(i32x4.shr_u(i32x4.splat(-1), 1) == i32x4.splat(2147483647)); - assert(i32x4.any_true(i32x4(1, 0, 0, 0)) == true); - assert(i32x4.all_true(i32x4.splat(1)) == true); - var one = i32x4.replace_lane(i32x4.splat(0), 0, 1); - var negOne = i32x4.replace_lane(i32x4.splat(0), 0, -1); - var only1st = negOne; - var excl1st = v128.not(negOne); - assert(i32x4.eq(negOne, one) == excl1st); - assert(i32x4.ne(negOne, one) == only1st); - assert(i32x4.lt_s(negOne, one) == only1st); - assert(i32x4.lt_u(one, negOne) == only1st); - assert(i32x4.le_s(one, negOne) == excl1st); - assert(i32x4.le_u(negOne, one) == excl1st); - assert(i32x4.gt_s(one, negOne) == only1st); - assert(i32x4.gt_u(negOne, one) == only1st); - assert(i32x4.ge_s(negOne, one) == excl1st); - assert(i32x4.ge_u(one, negOne) == excl1st); - assert( - i32x4.trunc_sat_f32x4_s(f32x4.splat(-1.5)) - == - i32x4.splat(-1) - ); - assert( - i32x4.trunc_sat_f32x4_u(f32x4.splat(-1.5)) - == - i32x4.splat(0) - ); - assert(i32x4.widen_low_i16x8_s(i16x8.replace_lane(i16x8.splat(-1), 4, 0)) == i32x4.splat(-1)); - assert(i32x4.widen_low_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 4, 0)) == i32x4.splat(65535)); - assert(i32x4.widen_high_i16x8_s(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(-1)); - assert(i32x4.widen_high_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(65535)); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 1); - // store(ptr, 2, 2); - // store(ptr, 3, 4); - // store(ptr, -1, 6); - // assert( - // i32x4.load16x4_s(ptr) - // == - // v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, -1, -1) - // ); - // assert( - // i32x4.load16x4_u(ptr) - // == - // v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, 0, 0) - // ); - // __free(ptr); - // } -} - -function test_i64x2(): void { - var a = i64x2(1, 9223372036854775807); - assert(a == v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 127)); - var b = i64x2.splat(1); - assert(b == v128(1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0)); - var c = i64x2.add(a, b); - assert(c == i64x2(2, -9223372036854775808)); - assert(i64x2.sub(c, b) == a); - assert( - i64x2.neg(a) - == - i64x2(-1, -9223372036854775807) - ); - assert(i64x2.extract_lane(c, 0) == 2); - assert(i64x2.extract_lane(c, 1) == -9223372036854775808); - assert( - i64x2.replace_lane(c, 1, 3) - == - i64x2(2, 3) - ); - assert( - v128.shuffle(a, b, 0, 3) - == - i64x2(1, 1) - ); - assert(i64x2.shl(i64x2.splat(1), 1) == i64x2.splat(2)); - assert(i64x2.shr_s(i64x2.splat(-2), 1) == i64x2.splat(-1)); - assert(i64x2.shr_u(i64x2.splat(-1), 1) == i64x2.splat(9223372036854775807)); - assert(i64x2.any_true(i64x2(1, 0)) == true); - assert(i64x2.all_true(i64x2.splat(1)) == true); - assert( - i64x2.trunc_sat_f64x2_s(f64x2.splat(-1.5)) - == - i64x2.splat(-1) - ); - assert( - i64x2.trunc_sat_f64x2_u(f64x2.splat(-1.5)) - == - i64x2.splat(0) - ); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 1); - // store(ptr, -1, 4); - // assert( - // i64x2.load32x2_s(ptr) - // == - // v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1) - // ); - // assert( - // i64x2.load32x2_u(ptr) - // == - // v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0) - // ); - // __free(ptr); - // } -} - -function test_f32x4(): void { - var a = f32x4(1.5, 2.5, 3.5, 4.5); - assert(a == v128(0, 0, -64, 63, 0, 0, 32, 64, 0, 0, 96, 64, 0, 0, -112, 64)); - var b = f32x4.splat(1.0); - assert(b == v128(0, 0, -128, 63, 0, 0, -128, 63, 0, 0, -128, 63, 0, 0, -128, 63)); - var c = f32x4.add(a, b); - assert(c == f32x4(2.5, 3.5, 4.5, 5.5)); - assert(f32x4.sub(c, b) == a); - assert(f32x4.mul(c, b) == c); - var d = f32x4.mul(a, a); - assert(f32x4.div(d, a) == a); - assert(f32x4.mul(d, a) != a); - assert(f32x4.neg(a) == f32x4(-1.5, -2.5, -3.5, -4.5)); - assert(f32x4.extract_lane(c, 0) == 2.5); - assert(f32x4.extract_lane(c, 3) == 5.5); - assert( - f32x4.replace_lane(c, 3, 6.5) - == - f32x4(2.5, 3.5, 4.5, 6.5) - ); - assert( - v128.shuffle(a, b, 0, 1, 6, 7) - == - f32x4(1.5, 2.5, 1.0, 1.0) - ); - var one = f32x4.replace_lane(f32x4.splat(0), 0, 1); - var negOne = f32x4.replace_lane(f32x4.splat(0), 0, -1); - var only1st = i32x4(-1, 0, 0, 0); - var excl1st = i32x4(0, -1, -1, -1); - assert(f32x4.eq(negOne, one) == excl1st); - assert(f32x4.ne(negOne, one) == only1st); - assert(f32x4.lt(negOne, one) == only1st); - assert(f32x4.le(one, negOne) == excl1st); - assert(f32x4.gt(one, negOne) == only1st); - assert(f32x4.ge(negOne, one) == excl1st); - assert(f32x4.min(negOne, one) == negOne); - assert(f32x4.max(negOne, one) == one); - assert(f32x4.abs(negOne) == one); - assert(f32x4.sqrt(f32x4(4.0, 9.0, 16.0, 25.0)) == f32x4(2.0, 3.0, 4.0, 5.0)); - assert( - f32x4.convert_i32x4_s(i32x4.splat(-1)) - == - f32x4.splat(-1.0) - ); - assert( - f32x4.convert_i32x4_u(i32x4.splat(-1)) - == - f32x4.splat(4294967296.0) - ); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // assert( - // f32x4.qfma(f32x4.splat(2), f32x4.splat(3), f32x4.splat(4)) - // == - // f32x4.splat(10) - // ); - // assert( - // f32x4.qfms(f32x4.splat(2), f32x4.splat(3), f32x4.splat(4)) - // == - // f32x4.splat(2) - // ); -} - -function test_f64x2(): void { - var a = f64x2(1.5, 2.5); - assert(a == v128(0, 0, 0, 0, 0, 0, -8, 63, 0, 0, 0, 0, 0, 0, 4, 64)); - var b = f64x2.splat(1.0); - assert(b == v128(0, 0, 0, 0, 0, 0, -16, 63, 0, 0, 0, 0, 0, 0, -16, 63)); - var c = f64x2.add(a, b); - assert(c == f64x2(2.5, 3.5)); - assert(f64x2.sub(c, b) == a); - assert(f64x2.mul(c, b) == c); - var d = f64x2.mul(a, a); - assert(f64x2.div(d, a) == a); - assert(f64x2.mul(d, a) != a); - assert(f64x2.neg(a) == f64x2(-1.5, -2.5)); - assert(f64x2.extract_lane(c, 0) == 2.5); - assert(f64x2.extract_lane(c, 1) == 3.5); - assert( - f64x2.replace_lane(c, 1, 4.5) - == - f64x2(2.5, 4.5) - ); - assert( - v128.shuffle(a, b, 0, 3) - == - f64x2(1.5, 1.0) - ); - var one = f64x2.replace_lane(f64x2.splat(0), 0, 1); - var negOne = f64x2.replace_lane(f64x2.splat(0), 0, -1); - var only1st = i64x2(-1, 0); - var excl1st = i64x2(0, -1); - assert(f64x2.eq(negOne, one) == excl1st); - assert(f64x2.ne(negOne, one) == only1st); - assert(f64x2.lt(negOne, one) == only1st); - assert(f64x2.le(one, negOne) == excl1st); - assert(f64x2.gt(one, negOne) == only1st); - assert(f64x2.ge(negOne, one) == excl1st); - assert(f64x2.min(negOne, one) == negOne); - assert(f64x2.max(negOne, one) == one); - assert(f64x2.abs(negOne) == one); - assert(f64x2.sqrt(f64x2(4.0, 9.0)) == f64x2(2.0, 3.0)); - assert( - f64x2.convert_i64x2_s(i64x2.splat(-1)) - == - f64x2.splat(-1.0) - ); - assert( - f64x2.convert_i64x2_u(i64x2.splat(-1)) - == - f64x2.splat(18446744073709551615.0) - ); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // assert( - // f64x2.qfma(f64x2.splat(2), f64x2.splat(3), f64x2.splat(4)) - // == - // f64x2.splat(10) - // ); - // assert( - // f64x2.qfms(f64x2.splat(2), f64x2.splat(3), f64x2.splat(4)) - // == - // f64x2.splat(2) - // ); -} - -function test_v8x16(): void { - var a = v128( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); - var b = v128(16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31); - assert( - v8x16.shuffle(a, b, 0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31) - == - v128(0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31) - ); - var c = v128(16, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); - assert( - v8x16.swizzle(a, c) - == - v128(0, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) - ); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 42); - // assert( - // v8x16.load_splat(ptr) - // == - // v128(42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42) - // ); - // __free(ptr); - // } -} - -function test_v16x8(): void { - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 42); - // assert( - // v16x8.load_splat(ptr) - // == - // v128(42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0) - // ); - // __free(ptr); - // } -} - -function test_v32x4(): void { - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 42); - // assert( - // v32x4.load_splat(ptr) - // == - // v128(42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0) - // ); - // __free(ptr); - // } -} - -function test_v64x2(): void { - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 42); - // assert( - // v64x2.load_splat(ptr) - // == - // v128(42, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0) - // ); - // __free(ptr); - // } -} - -function test_const(): v128 { - const one = i32x4.splat(1); // should precompute - return one; // should not inline -} - -if (ASC_FEATURE_SIMD) { - test_v128(); - test_i8x16(); - test_i16x8(); - test_i32x4(); - test_i64x2(); - test_f32x4(); - test_f64x2(); - test_v8x16(); - test_v16x8(); - test_v32x4(); - test_v64x2(); - test_const(); -} diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat deleted file mode 100644 index 616a7bba44..0000000000 --- a/tests/compiler/features/simd.untouched.wat +++ /dev/null @@ -1,3029 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_v128 (func (result v128))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") - (data (i32.const 64) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 1)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/builtins/i16.MAX_VALUE i32 (i32.const 32767)) - (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) - (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) - (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) - (global $~lib/heap/__heap_base i32 (i32.const 112)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__free (param $0 i32) - (local $1 i32) - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.set $1 - i32.const 1 - drop - local.get $1 - i32.load offset=4 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 70 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.load - i32.add - global.get $~lib/rt/stub/offset - i32.eq - if - local.get $1 - global.set $~lib/rt/stub/offset - end - ) - (func $features/simd/test_v128 - (local $0 i32) - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.const i32x4 0x04030202 0x08070605 0x0c0b0a09 0x100f0e0d - i8x16.ne - i8x16.any_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 - v128.and - v128.const i32x4 0x00010001 0x00010001 0x00010001 0x00010001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 - v128.or - v128.const i32x4 0x05030301 0x09070705 0x0d0b0b09 0x110f0f0d - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 - v128.xor - v128.const i32x4 0x05020300 0x09060704 0x0d0a0b08 0x110e0f0c - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.not - v128.const i32x4 0xfbfcfdfe 0xf7f8f9fa 0xf3f4f5f6 0xeff0f1f2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d - v128.const i32x4 0x0d0e0f10 0x090a0b0c 0x05060708 0x01020304 - v128.const i32x4 0xff00ff00 0xff00ff00 0xff00ff00 0xff00ff00 - v128.bitselect - v128.const i32x4 0x040e0210 0x080a060c 0x0c060a08 0x10020e04 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const 64 - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $0 - local.get $0 - local.get $0 - v128.load offset=16 - v128.store offset=32 - local.get $0 - call $~lib/rt/stub/__free - ) - (func $features/simd/test_i8x16 - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x7f0f0e0d - local.set $0 - local.get $0 - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x7f0f0e0d - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i8x16.splat - local.set $1 - local.get $1 - v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i8x16.add - local.set $2 - local.get $2 - v128.const i32x4 0x05040302 0x09080706 0x0d0c0b0a 0x80100f0e - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i8x16.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i8x16.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x007f7f00 0x00000000 0x00000000 0x00000000 - v128.const i32x4 0x00800080 0x00000000 0x00000000 0x00000000 - i8x16.min_s - v128.const i32x4 0x00800080 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x007f7f00 0x00000000 0x00000000 0x00000000 - v128.const i32x4 0x00800080 0x00000000 0x00000000 0x00000000 - i8x16.min_u - v128.const i32x4 0x007f0000 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x007f7f00 0x00000000 0x00000000 0x00000000 - v128.const i32x4 0x00800080 0x00000000 0x00000000 0x00000000 - i8x16.max_s - v128.const i32x4 0x007f7f00 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x007f7f00 0x00000000 0x00000000 0x00000000 - v128.const i32x4 0x00800080 0x00000000 0x00000000 0x00000000 - i8x16.max_u - v128.const i32x4 0x00807f80 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x04040201 0x08070605 0x0c0b0a09 0xff800e0d - v128.const i32x4 0x04020401 0x08070605 0x0c0b0a09 0xff800e0d - i8x16.avgr_u - v128.const i32x4 0x04030301 0x08070605 0x0c0b0a09 0xff800e0d - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - local.get $0 - i8x16.neg - v128.const i32x4 0xfcfdfeff 0xf8f9fafb 0xf4f5f6f7 0x81f1f2f3 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i8x16.extract_lane_s 0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 113 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i8x16.extract_lane_s 15 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i8x16.extract_lane_u 15 - i32.const 255 - i32.and - i32.const 128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 115 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 17 - i8x16.replace_lane 15 - v128.const i32x4 0x05040302 0x09080706 0x0d0c0b0a 0x11100f0e - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x04030201 0x08070605 0x01010101 0x01010101 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x7f7f7f7e 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f - i32.const 2 - i8x16.splat - i8x16.add_saturate_s - i32.const 127 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0xfffffffe 0xffffffff 0xffffffff 0xffffffff - i32.const 2 - i8x16.splat - i8x16.add_saturate_u - i32.const -1 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x80808081 0x80808080 0x80808080 0x80808080 - i32.const 2 - i8x16.splat - i8x16.sub_saturate_s - i32.const -128 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i32.const 2 - i8x16.splat - i8x16.sub_saturate_u - i32.const 0 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const 1 - i8x16.splat - i32.const 1 - i8x16.shl - i32.const 2 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -2 - i8x16.splat - i32.const 1 - i8x16.shr_s - i32.const -1 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -1 - i8x16.splat - i32.const 1 - i8x16.shr_u - i32.const 127 - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i8x16.any_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - i32.const 1 - i8x16.splat - i8x16.all_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - i32.const 0 - i8x16.splat - i32.const 1 - i8x16.replace_lane 0 - local.set $3 - i32.const 0 - i8x16.splat - i32.const -1 - i8x16.replace_lane 0 - local.set $4 - local.get $4 - local.set $5 - local.get $4 - v128.not - local.set $6 - local.get $4 - local.get $3 - i8x16.eq - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 159 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.ne - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 160 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.lt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 161 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i8x16.lt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 162 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i8x16.le_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 163 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.le_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 164 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i8x16.gt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.gt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.ge_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i8x16.ge_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/i16.MAX_VALUE - i16x8.splat - global.get $~lib/builtins/i16.MAX_VALUE - i16x8.splat - i8x16.narrow_i16x8_s - global.get $~lib/builtins/i8.MAX_VALUE - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - global.get $~lib/builtins/i16.MAX_VALUE - i16x8.splat - global.get $~lib/builtins/i16.MAX_VALUE - i16x8.splat - i8x16.narrow_i16x8_u - global.get $~lib/builtins/u8.MAX_VALUE - i8x16.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - ) - (func $features/simd/test_i16x8 - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - v128.const i32x4 0x00020001 0x00040003 0x00060005 0x7fff0007 - local.set $0 - local.get $0 - v128.const i32x4 0x00020001 0x00040003 0x00060005 0x7fff0007 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 175 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i16x8.splat - local.set $1 - local.get $1 - v128.const i32x4 0x00010001 0x00010001 0x00010001 0x00010001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 177 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i16x8.add - local.set $2 - local.get $2 - v128.const i32x4 0x00030002 0x00050004 0x00070006 0x80000008 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 179 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i16x8.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 180 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i16x8.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 181 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x7fff0000 0x00007fff 0x00000000 0x00000000 - v128.const i32x4 0x00008000 0x00008000 0x00000000 0x00000000 - i16x8.min_s - v128.const i32x4 0x00008000 0x00008000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x7fff0000 0x00007fff 0x00000000 0x00000000 - v128.const i32x4 0x00008000 0x00008000 0x00000000 0x00000000 - i16x8.min_u - v128.const i32x4 0x00000000 0x00007fff 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x7fff0000 0x00007fff 0x00000000 0x00000000 - v128.const i32x4 0x00008000 0x00008000 0x00000000 0x00000000 - i16x8.max_s - v128.const i32x4 0x7fff0000 0x00007fff 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x7fff0000 0x00007fff 0x00000000 0x00000000 - v128.const i32x4 0x00008000 0x00008000 0x00000000 0x00000000 - i16x8.max_u - v128.const i32x4 0x7fff8000 0x00008000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x00020001 0x00040004 0x00060005 0xffff8000 - v128.const i32x4 0x00040001 0x00040002 0x00060005 0xffff8000 - i16x8.avgr_u - v128.const i32x4 0x00030001 0x00040003 0x00060005 0xffff8000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - local.get $0 - i16x8.neg - v128.const i32x4 0xfffeffff 0xfffcfffd 0xfffafffb 0x8001fff9 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 222 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i16x8.extract_lane_s 0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 227 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i16x8.extract_lane_s 7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 228 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i16x8.extract_lane_u 7 - i32.const 65535 - i32.and - i32.const 32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 229 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i16x8.replace_lane 7 - v128.const i32x4 0x00030002 0x00050004 0x00070006 0x00090008 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 230 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x00020001 0x00040003 0x00010001 0x00010001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 235 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x7fff7ffe 0x7fff7fff 0x7fff7fff 0x7fff7fff - i32.const 2 - i16x8.splat - i16x8.add_saturate_s - i32.const 32767 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0xfffffffe 0xffffffff 0xffffffff 0xffffffff - i32.const 2 - i16x8.splat - i16x8.add_saturate_u - i32.const -1 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x80008001 0x80008000 0x80008000 0x80008000 - i32.const 2 - i16x8.splat - i16x8.sub_saturate_s - i32.const -32768 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i32.const 2 - i16x8.splat - i16x8.sub_saturate_u - i32.const 0 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const 1 - i16x8.splat - i32.const 1 - i16x8.shl - i32.const 2 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -2 - i16x8.splat - i32.const 1 - i16x8.shr_s - i32.const -1 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -1 - i16x8.splat - i32.const 1 - i16x8.shr_u - i32.const 32767 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i16x8.any_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - i32.const 1 - i16x8.splat - i16x8.all_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - i32.const 0 - i16x8.splat - i32.const 1 - i16x8.replace_lane 0 - local.set $3 - i32.const 0 - i16x8.splat - i32.const -1 - i16x8.replace_lane 0 - local.set $4 - local.get $4 - local.set $5 - local.get $4 - v128.not - local.set $6 - local.get $4 - local.get $3 - i16x8.eq - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 273 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.ne - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 274 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.lt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 275 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i16x8.lt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 276 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i16x8.le_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 277 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.le_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 278 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i16x8.gt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 279 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.gt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 280 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.ge_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 281 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i16x8.ge_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 282 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/i32.MAX_VALUE - i32x4.splat - global.get $~lib/builtins/i32.MAX_VALUE - i32x4.splat - i16x8.narrow_i32x4_s - global.get $~lib/builtins/i16.MAX_VALUE - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - global.get $~lib/builtins/i32.MAX_VALUE - i32x4.splat - global.get $~lib/builtins/i32.MAX_VALUE - i32x4.splat - i16x8.narrow_i32x4_u - global.get $~lib/builtins/u16.MAX_VALUE - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -1 - i8x16.splat - i32.const 0 - i8x16.replace_lane 8 - i16x8.widen_low_i8x16_s - i32.const -1 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -1 - i8x16.splat - i32.const 0 - i8x16.replace_lane 8 - i16x8.widen_low_i8x16_u - i32.const 255 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -1 - i8x16.splat - i32.const 0 - i8x16.replace_lane 0 - i16x8.widen_high_i8x16_s - i32.const -1 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -1 - i8x16.splat - i32.const 0 - i8x16.replace_lane 0 - i16x8.widen_high_i8x16_u - i32.const 255 - i16x8.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - ) - (func $features/simd/test_i32x4 - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - v128.const i32x4 0x00000001 0x00000002 0x00000003 0x7fffffff - local.set $0 - local.get $0 - v128.const i32x4 0x00000001 0x00000002 0x00000003 0x7fffffff - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 316 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32x4.splat - local.set $1 - local.get $1 - v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 318 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32x4.add - local.set $2 - local.get $2 - v128.const i32x4 0x00000002 0x00000003 0x00000004 0x80000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 320 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32x4.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 321 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32x4.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 322 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x00000000 0x7fffffff 0x7fffffff 0x00000000 - v128.const i32x4 0x80000000 0x00000000 0x80000000 0x00000000 - i32x4.min_s - v128.const i32x4 0x80000000 0x00000000 0x80000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x00000000 0x7fffffff 0x7fffffff 0x00000000 - v128.const i32x4 0x80000000 0x00000000 0x80000000 0x00000000 - i32x4.min_u - v128.const i32x4 0x00000000 0x00000000 0x7fffffff 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x00000000 0x7fffffff 0x7fffffff 0x00000000 - v128.const i32x4 0x80000000 0x00000000 0x80000000 0x00000000 - i32x4.max_s - v128.const i32x4 0x00000000 0x7fffffff 0x7fffffff 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x00000000 0x7fffffff 0x7fffffff 0x00000000 - v128.const i32x4 0x80000000 0x00000000 0x80000000 0x00000000 - i32x4.max_u - v128.const i32x4 0x80000000 0x7fffffff 0x80000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x00020001 0x00040003 0x0003ffff 0x00000000 - v128.const i32x4 0x00060005 0x00080007 0xffff0002 0x00000000 - i32x4.dot_i16x8_s - v128.const i32x4 0x00000011 0x00000035 0xfffffffb 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - local.get $0 - i32x4.neg - v128.const i32x4 0xffffffff 0xfffffffe 0xfffffffd 0x80000001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 363 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32x4.extract_lane 0 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 368 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32x4.extract_lane 3 - i32.const -2147483648 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 369 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 5 - i32x4.replace_lane 3 - v128.const i32x4 0x00000002 0x00000003 0x00000004 0x00000005 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 370 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x00000001 0x00000002 0x00000001 0x00000001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 375 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32x4.splat - i32.const 1 - i32x4.shl - i32.const 2 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -2 - i32x4.splat - i32.const 1 - i32x4.shr_s - i32.const -1 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -1 - i32x4.splat - i32.const 1 - i32x4.shr_u - i32.const 2147483647 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i32x4.any_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - i32.const 1 - i32x4.splat - i32x4.all_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - i32.const 0 - i32x4.splat - i32.const 1 - i32x4.replace_lane 0 - local.set $3 - i32.const 0 - i32x4.splat - i32.const -1 - i32x4.replace_lane 0 - local.set $4 - local.get $4 - local.set $5 - local.get $4 - v128.not - local.set $6 - local.get $4 - local.get $3 - i32x4.eq - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.ne - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.lt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32x4.lt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32x4.le_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.le_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32x4.gt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 395 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.gt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 396 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.ge_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 397 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32x4.ge_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 398 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32x4.splat - i32x4.trunc_sat_f32x4_s - i32.const -1 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - f32.const -1.5 - f32x4.splat - i32x4.trunc_sat_f32x4_u - i32.const 0 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -1 - i16x8.splat - i32.const 0 - i16x8.replace_lane 4 - i32x4.widen_low_i16x8_s - i32.const -1 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -1 - i16x8.splat - i32.const 0 - i16x8.replace_lane 4 - i32x4.widen_low_i16x8_u - i32.const 65535 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -1 - i16x8.splat - i32.const 0 - i16x8.replace_lane 0 - i32x4.widen_high_i16x8_s - i32.const -1 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -1 - i16x8.splat - i32.const 0 - i16x8.replace_lane 0 - i32x4.widen_high_i16x8_u - i32.const 65535 - i32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - ) - (func $features/simd/test_i64x2 - (local $0 v128) - (local $1 v128) - (local $2 v128) - v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x7fffffff - local.set $0 - local.get $0 - v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x7fffffff - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 436 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64x2.splat - local.set $1 - local.get $1 - v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i64x2.add - local.set $2 - local.get $2 - v128.const i32x4 0x00000002 0x00000000 0x00000000 0x80000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i64x2.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 441 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64x2.neg - v128.const i32x4 0xffffffff 0xffffffff 0x00000001 0x80000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 442 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i64x2.extract_lane 0 - i64.const 2 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 447 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i64x2.extract_lane 1 - i64.const -9223372036854775808 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 448 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i64.const 3 - i64x2.replace_lane 1 - v128.const i32x4 0x00000002 0x00000000 0x00000003 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 449 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 454 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64x2.splat - i32.const 1 - i64x2.shl - i64.const 2 - i64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i64.const -2 - i64x2.splat - i32.const 1 - i64x2.shr_s - i64.const -1 - i64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i64.const -1 - i64x2.splat - i32.const 1 - i64x2.shr_u - i64.const 9223372036854775807 - i64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i64x2.any_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - i64.const 1 - i64x2.splat - i64x2.all_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - f64.const -1.5 - f64x2.splat - i64x2.trunc_sat_f64x2_s - i64.const -1 - i64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - f64.const -1.5 - f64x2.splat - i64x2.trunc_sat_f64x2_u - i64.const 0 - i64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - ) - (func $features/simd/test_f32x4 - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - (local $7 v128) - v128.const i32x4 0x3fc00000 0x40200000 0x40600000 0x40900000 - local.set $0 - local.get $0 - v128.const i32x4 0x3fc00000 0x40200000 0x40600000 0x40900000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32x4.splat - local.set $1 - local.get $1 - v128.const i32x4 0x3f800000 0x3f800000 0x3f800000 0x3f800000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 497 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - f32x4.add - local.set $2 - local.get $2 - v128.const i32x4 0x40200000 0x40600000 0x40900000 0x40b00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 499 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - f32x4.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 500 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - f32x4.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 501 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - f32x4.mul - local.set $3 - local.get $3 - local.get $0 - f32x4.div - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 503 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $0 - f32x4.mul - local.get $0 - i8x16.ne - i8x16.any_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 504 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32x4.neg - v128.const i32x4 0xbfc00000 0xc0200000 0xc0600000 0xc0900000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 505 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f32x4.extract_lane 0 - f32.const 2.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 506 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f32x4.extract_lane 3 - f32.const 5.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 507 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f32.const 6.5 - f32x4.replace_lane 3 - v128.const i32x4 0x40200000 0x40600000 0x40900000 0x40d00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 508 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x3fc00000 0x40200000 0x3f800000 0x3f800000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 513 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32x4.splat - f32.const 1 - f32x4.replace_lane 0 - local.set $4 - f32.const 0 - f32x4.splat - f32.const -1 - f32x4.replace_lane 0 - local.set $5 - v128.const i32x4 0xffffffff 0x00000000 0x00000000 0x00000000 - local.set $6 - v128.const i32x4 0x00000000 0xffffffff 0xffffffff 0xffffffff - local.set $7 - local.get $5 - local.get $4 - f32x4.eq - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 522 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.ne - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 523 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.lt - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 524 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $5 - f32x4.le - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 525 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $5 - f32x4.gt - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 526 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.ge - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 527 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.min - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 528 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.max - local.get $4 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - f32x4.abs - local.get $4 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x40800000 0x41100000 0x41800000 0x41c80000 - f32x4.sqrt - v128.const i32x4 0x40000000 0x40400000 0x40800000 0x40a00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -1 - i32x4.splat - f32x4.convert_i32x4_s - f32.const -1 - f32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i32.const -1 - i32x4.splat - f32x4.convert_i32x4_u - f32.const 4294967296 - f32x4.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - ) - (func $features/simd/test_f64x2 - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - (local $7 v128) - v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x40040000 - local.set $0 - local.get $0 - v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x40040000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64x2.splat - local.set $1 - local.get $1 - v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x3ff00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - f64x2.add - local.set $2 - local.get $2 - v128.const i32x4 0x00000000 0x40040000 0x00000000 0x400c0000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - f64x2.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - f64x2.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - f64x2.mul - local.set $3 - local.get $3 - local.get $0 - f64x2.div - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $0 - f64x2.mul - local.get $0 - i8x16.ne - i8x16.any_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 566 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64x2.neg - v128.const i32x4 0x00000000 0xbff80000 0x00000000 0xc0040000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f64x2.extract_lane 0 - f64.const 2.5 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f64x2.extract_lane 1 - f64.const 3.5 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f64.const 4.5 - f64x2.replace_lane 1 - v128.const i32x4 0x00000000 0x40040000 0x00000000 0x40120000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x3ff00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64x2.splat - f64.const 1 - f64x2.replace_lane 0 - local.set $4 - f64.const 0 - f64x2.splat - f64.const -1 - f64x2.replace_lane 0 - local.set $5 - v128.const i32x4 0xffffffff 0xffffffff 0x00000000 0x00000000 - local.set $6 - v128.const i32x4 0x00000000 0x00000000 0xffffffff 0xffffffff - local.set $7 - local.get $5 - local.get $4 - f64x2.eq - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.ne - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.lt - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $5 - f64x2.le - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $5 - f64x2.gt - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 588 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.ge - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 589 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.min - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 590 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.max - local.get $4 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 591 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - f64x2.abs - local.get $4 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 592 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x00000000 0x40100000 0x00000000 0x40220000 - f64x2.sqrt - v128.const i32x4 0x00000000 0x40000000 0x00000000 0x40080000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i64.const -1 - i64x2.splat - f64x2.convert_i64x2_s - f64.const -1 - f64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i64.const -1 - i64x2.splat - f64x2.convert_i64x2_u - f64.const 18446744073709551615 - f64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - ) - (func $features/simd/test_v8x16 - (local $0 v128) - (local $1 v128) - (local $2 v128) - v128.const i32x4 0x03020100 0x07060504 0x0b0a0908 0x0f0e0d0c - local.set $0 - v128.const i32x4 0x13121110 0x17161514 0x1b1a1918 0x1f1e1d1c - local.set $1 - local.get $0 - local.get $1 - v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 - v128.const i32x4 0x13021100 0x17061504 0x1b0a1908 0x1f0e1d0c - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x0c0d0e10 0x08090a0b 0x04050607 0x00010203 - local.set $2 - local.get $0 - local.get $2 - v8x16.swizzle - v128.const i32x4 0x0c0d0e00 0x08090a0b 0x04050607 0x00010203 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $features/simd/test_v16x8 - nop - ) - (func $features/simd/test_v32x4 - nop - ) - (func $features/simd/test_v64x2 - nop - ) - (func $features/simd/test_const (result v128) - (local $0 v128) - v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 - local.set $0 - local.get $0 - ) - (func $start:features/simd - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 1 - drop - call $features/simd/test_v128 - call $features/simd/test_i8x16 - call $features/simd/test_i16x8 - call $features/simd/test_i32x4 - call $features/simd/test_i64x2 - call $features/simd/test_f32x4 - call $features/simd/test_f64x2 - call $features/simd/test_v8x16 - call $features/simd/test_v16x8 - call $features/simd/test_v32x4 - call $features/simd/test_v64x2 - call $features/simd/test_const - drop - ) - (func $~start - call $start:features/simd - ) -) diff --git a/tests/compiler/features/threads.debug.wat b/tests/compiler/features/threads.debug.wat new file mode 100644 index 0000000000..b3b7038f39 --- /dev/null +++ b/tests/compiler/features/threads.debug.wat @@ -0,0 +1,550 @@ +(module + (type $0 (func)) + (global $~lib/native/ASC_FEATURE_THREADS i32 (i32.const 1)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 1 10 shared) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $features/threads/testAtomic + i32.const 0 + i32.atomic.load8_u + drop + i32.const 0 + i32.atomic.load16_u + drop + i32.const 0 + i32.atomic.load + drop + i32.const 0 + i64.atomic.load8_u + drop + i32.const 0 + i64.atomic.load16_u + drop + i32.const 0 + i64.atomic.load32_u + drop + i32.const 0 + i64.atomic.load + drop + i32.const 0 + i64.atomic.load offset=8 + drop + i32.const 0 + i32.const 1 + i32.atomic.store8 + i32.const 0 + i32.const 1 + i32.atomic.store16 + i32.const 0 + i32.const 1 + i32.atomic.store + i32.const 0 + i64.const 1 + i64.atomic.store8 + i32.const 0 + i64.const 1 + i64.atomic.store16 + i32.const 0 + i64.const 1 + i64.atomic.store32 + i32.const 0 + i64.const 1 + i64.atomic.store + i32.const 0 + i64.const 1 + i64.atomic.store offset=8 + i32.const 0 + i32.const 1 + i32.atomic.rmw8.add_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.add_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.add + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.add_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.add_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.add_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.add + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.add offset=8 + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.sub_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.sub_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.sub + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.sub_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.sub_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.sub_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.sub + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.sub offset=8 + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.and_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.and_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.and + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.and_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.and_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.and_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.and + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.and offset=8 + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.or_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.or_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.or + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.or_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.or_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.or_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.or + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.or offset=8 + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.xor_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.xor_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.xor + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.xor_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.xor_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.xor_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.xor + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.xor offset=8 + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.xchg_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.xchg_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.xchg + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.xchg_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.xchg_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.xchg_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.xchg + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.xchg offset=8 + drop + i32.const 0 + i32.const 1 + i32.const 2 + i32.atomic.rmw8.cmpxchg_u + drop + i32.const 0 + i32.const 1 + i32.const 2 + i32.atomic.rmw16.cmpxchg_u + drop + i32.const 0 + i32.const 1 + i32.const 2 + i32.atomic.rmw.cmpxchg + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw8.cmpxchg_u + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw16.cmpxchg_u + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw32.cmpxchg_u + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw.cmpxchg + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw.cmpxchg offset=8 + drop + ) + (func $features/threads/testAtomicAsm + i32.const 0 + i32.atomic.load8_u + drop + i32.const 0 + i32.atomic.load16_u + drop + i32.const 0 + i32.atomic.load + drop + i32.const 0 + i64.atomic.load8_u + drop + i32.const 0 + i64.atomic.load16_u + drop + i32.const 0 + i64.atomic.load32_u + drop + i32.const 0 + i64.atomic.load + drop + i32.const 0 + i32.const 1 + i32.atomic.store8 + i32.const 0 + i32.const 1 + i32.atomic.store16 + i32.const 0 + i32.const 1 + i32.atomic.store + i32.const 0 + i64.const 1 + i64.atomic.store8 + i32.const 0 + i64.const 1 + i64.atomic.store16 + i32.const 0 + i64.const 1 + i64.atomic.store32 + i32.const 0 + i64.const 1 + i64.atomic.store + i32.const 0 + i32.const 1 + i32.atomic.rmw8.add_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.add_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.add + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.add_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.add_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.add_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.add + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.sub_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.sub_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.sub + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.sub_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.sub_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.sub_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.sub + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.and_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.and_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.and + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.and_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.and_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.and_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.and + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.or_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.or_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.or + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.or_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.or_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.or_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.or + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.xor_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.xor_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.xor + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.xor_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.xor_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.xor_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.xor + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.xchg_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.xchg_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.xchg + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.xchg_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.xchg_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.xchg_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.xchg + drop + i32.const 0 + i32.const 1 + i32.const 2 + i32.atomic.rmw8.cmpxchg_u + drop + i32.const 0 + i32.const 1 + i32.const 2 + i32.atomic.rmw16.cmpxchg_u + drop + i32.const 0 + i32.const 1 + i32.const 2 + i32.atomic.rmw.cmpxchg + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw8.cmpxchg_u + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw16.cmpxchg_u + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw32.cmpxchg_u + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw.cmpxchg + drop + ) + (func $start:features/threads + i32.const 1 + drop + call $features/threads/testAtomic + call $features/threads/testAtomicAsm + ) + (func $~start + call $start:features/threads + ) +) diff --git a/tests/compiler/features/threads.json b/tests/compiler/features/threads.json index 20ea38f00b..106712bc6e 100644 --- a/tests/compiler/features/threads.json +++ b/tests/compiler/features/threads.json @@ -3,7 +3,6 @@ "threads" ], "asc_flags": [ - "--runtime none", "--memoryBase 8", "--maximumMemory 10", "--sharedMemory" diff --git a/tests/compiler/features/threads.optimized.wat b/tests/compiler/features/threads.optimized.wat deleted file mode 100644 index e6d6a676f1..0000000000 --- a/tests/compiler/features/threads.optimized.wat +++ /dev/null @@ -1,539 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 (shared 1 10)) - (export "memory" (memory $0)) - (start $~start) - (func $features/threads/testAtomic - i32.const 0 - i32.atomic.load8_u - drop - i32.const 0 - i32.atomic.load16_u - drop - i32.const 0 - i32.atomic.load - drop - i32.const 0 - i64.atomic.load8_u - drop - i32.const 0 - i64.atomic.load16_u - drop - i32.const 0 - i64.atomic.load32_u - drop - i32.const 0 - i64.atomic.load - drop - i32.const 8 - i64.atomic.load - drop - i32.const 0 - i32.const 1 - i32.atomic.store8 - i32.const 0 - i32.const 1 - i32.atomic.store16 - i32.const 0 - i32.const 1 - i32.atomic.store - i32.const 0 - i64.const 1 - i64.atomic.store8 - i32.const 0 - i64.const 1 - i64.atomic.store16 - i32.const 0 - i64.const 1 - i64.atomic.store32 - i32.const 0 - i64.const 1 - i64.atomic.store - i32.const 8 - i64.const 1 - i64.atomic.store - i32.const 0 - i32.const 1 - i32.atomic.rmw8.add_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.add_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.add - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.add_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.add_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.add_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.add - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.add offset=8 - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.sub_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.sub_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.sub - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.sub_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.sub_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.sub_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.sub - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.sub offset=8 - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.and_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.and_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.and - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.and_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.and_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.and_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.and - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.and offset=8 - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.or_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.or_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.or - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.or_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.or_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.or_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.or - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.or offset=8 - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.xor_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.xor_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.xor - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.xor_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.xor_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.xor_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.xor - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.xor offset=8 - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.xchg_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.xchg_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.xchg - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.xchg_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.xchg_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.xchg_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.xchg - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.xchg offset=8 - drop - i32.const 0 - i32.const 1 - i32.const 2 - i32.atomic.rmw8.cmpxchg_u - drop - i32.const 0 - i32.const 1 - i32.const 2 - i32.atomic.rmw16.cmpxchg_u - drop - i32.const 0 - i32.const 1 - i32.const 2 - i32.atomic.rmw.cmpxchg - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw8.cmpxchg_u - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw16.cmpxchg_u - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw32.cmpxchg_u - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw.cmpxchg - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw.cmpxchg offset=8 - drop - ) - (func $features/threads/testAtomicAsm - i32.const 0 - i32.atomic.load8_u - drop - i32.const 0 - i32.atomic.load16_u - drop - i32.const 0 - i32.atomic.load - drop - i32.const 0 - i64.atomic.load8_u - drop - i32.const 0 - i64.atomic.load16_u - drop - i32.const 0 - i64.atomic.load32_u - drop - i32.const 0 - i64.atomic.load - drop - i32.const 0 - i32.const 1 - i32.atomic.store8 - i32.const 0 - i32.const 1 - i32.atomic.store16 - i32.const 0 - i32.const 1 - i32.atomic.store - i32.const 0 - i64.const 1 - i64.atomic.store8 - i32.const 0 - i64.const 1 - i64.atomic.store16 - i32.const 0 - i64.const 1 - i64.atomic.store32 - i32.const 0 - i64.const 1 - i64.atomic.store - i32.const 0 - i32.const 1 - i32.atomic.rmw8.add_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.add_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.add - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.add_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.add_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.add_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.add - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.sub_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.sub_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.sub - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.sub_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.sub_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.sub_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.sub - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.and_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.and_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.and - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.and_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.and_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.and_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.and - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.or_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.or_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.or - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.or_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.or_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.or_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.or - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.xor_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.xor_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.xor - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.xor_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.xor_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.xor_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.xor - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.xchg_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.xchg_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.xchg - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.xchg_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.xchg_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.xchg_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.xchg - drop - i32.const 0 - i32.const 1 - i32.const 2 - i32.atomic.rmw8.cmpxchg_u - drop - i32.const 0 - i32.const 1 - i32.const 2 - i32.atomic.rmw16.cmpxchg_u - drop - i32.const 0 - i32.const 1 - i32.const 2 - i32.atomic.rmw.cmpxchg - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw8.cmpxchg_u - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw16.cmpxchg_u - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw32.cmpxchg_u - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw.cmpxchg - drop - ) - (func $~start - call $features/threads/testAtomic - call $features/threads/testAtomicAsm - ) -) diff --git a/tests/compiler/features/threads.release.wat b/tests/compiler/features/threads.release.wat new file mode 100644 index 0000000000..679c863058 --- /dev/null +++ b/tests/compiler/features/threads.release.wat @@ -0,0 +1,539 @@ +(module + (type $0 (func)) + (memory $0 1 10 shared) + (export "memory" (memory $0)) + (start $~start) + (func $features/threads/testAtomic + i32.const 0 + i32.atomic.load8_u + drop + i32.const 0 + i32.atomic.load16_u + drop + i32.const 0 + i32.atomic.load + drop + i32.const 0 + i64.atomic.load8_u + drop + i32.const 0 + i64.atomic.load16_u + drop + i32.const 0 + i64.atomic.load32_u + drop + i32.const 0 + i64.atomic.load + drop + i32.const 8 + i64.atomic.load + drop + i32.const 0 + i32.const 1 + i32.atomic.store8 + i32.const 0 + i32.const 1 + i32.atomic.store16 + i32.const 0 + i32.const 1 + i32.atomic.store + i32.const 0 + i64.const 1 + i64.atomic.store8 + i32.const 0 + i64.const 1 + i64.atomic.store16 + i32.const 0 + i64.const 1 + i64.atomic.store32 + i32.const 0 + i64.const 1 + i64.atomic.store + i32.const 8 + i64.const 1 + i64.atomic.store + i32.const 0 + i32.const 1 + i32.atomic.rmw8.add_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.add_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.add + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.add_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.add_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.add_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.add + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.add offset=8 + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.sub_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.sub_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.sub + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.sub_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.sub_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.sub_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.sub + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.sub offset=8 + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.and_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.and_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.and + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.and_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.and_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.and_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.and + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.and offset=8 + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.or_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.or_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.or + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.or_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.or_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.or_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.or + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.or offset=8 + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.xor_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.xor_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.xor + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.xor_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.xor_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.xor_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.xor + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.xor offset=8 + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.xchg_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.xchg_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.xchg + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.xchg_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.xchg_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.xchg_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.xchg + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.xchg offset=8 + drop + i32.const 0 + i32.const 1 + i32.const 2 + i32.atomic.rmw8.cmpxchg_u + drop + i32.const 0 + i32.const 1 + i32.const 2 + i32.atomic.rmw16.cmpxchg_u + drop + i32.const 0 + i32.const 1 + i32.const 2 + i32.atomic.rmw.cmpxchg + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw8.cmpxchg_u + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw16.cmpxchg_u + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw32.cmpxchg_u + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw.cmpxchg + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw.cmpxchg offset=8 + drop + ) + (func $features/threads/testAtomicAsm + i32.const 0 + i32.atomic.load8_u + drop + i32.const 0 + i32.atomic.load16_u + drop + i32.const 0 + i32.atomic.load + drop + i32.const 0 + i64.atomic.load8_u + drop + i32.const 0 + i64.atomic.load16_u + drop + i32.const 0 + i64.atomic.load32_u + drop + i32.const 0 + i64.atomic.load + drop + i32.const 0 + i32.const 1 + i32.atomic.store8 + i32.const 0 + i32.const 1 + i32.atomic.store16 + i32.const 0 + i32.const 1 + i32.atomic.store + i32.const 0 + i64.const 1 + i64.atomic.store8 + i32.const 0 + i64.const 1 + i64.atomic.store16 + i32.const 0 + i64.const 1 + i64.atomic.store32 + i32.const 0 + i64.const 1 + i64.atomic.store + i32.const 0 + i32.const 1 + i32.atomic.rmw8.add_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.add_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.add + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.add_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.add_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.add_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.add + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.sub_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.sub_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.sub + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.sub_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.sub_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.sub_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.sub + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.and_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.and_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.and + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.and_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.and_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.and_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.and + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.or_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.or_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.or + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.or_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.or_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.or_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.or + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.xor_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.xor_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.xor + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.xor_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.xor_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.xor_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.xor + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw8.xchg_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw16.xchg_u + drop + i32.const 0 + i32.const 1 + i32.atomic.rmw.xchg + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw8.xchg_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw16.xchg_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw32.xchg_u + drop + i32.const 0 + i64.const 1 + i64.atomic.rmw.xchg + drop + i32.const 0 + i32.const 1 + i32.const 2 + i32.atomic.rmw8.cmpxchg_u + drop + i32.const 0 + i32.const 1 + i32.const 2 + i32.atomic.rmw16.cmpxchg_u + drop + i32.const 0 + i32.const 1 + i32.const 2 + i32.atomic.rmw.cmpxchg + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw8.cmpxchg_u + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw16.cmpxchg_u + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw32.cmpxchg_u + drop + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw.cmpxchg + drop + ) + (func $~start + call $features/threads/testAtomic + call $features/threads/testAtomicAsm + ) +) diff --git a/tests/compiler/features/threads.untouched.wat b/tests/compiler/features/threads.untouched.wat deleted file mode 100644 index 62ce310643..0000000000 --- a/tests/compiler/features/threads.untouched.wat +++ /dev/null @@ -1,546 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 (shared 1 10)) - (table $0 1 funcref) - (global $~lib/ASC_FEATURE_THREADS i32 (i32.const 1)) - (export "memory" (memory $0)) - (start $~start) - (func $features/threads/testAtomic - i32.const 0 - i32.atomic.load8_u - drop - i32.const 0 - i32.atomic.load16_u - drop - i32.const 0 - i32.atomic.load - drop - i32.const 0 - i64.atomic.load8_u - drop - i32.const 0 - i64.atomic.load16_u - drop - i32.const 0 - i64.atomic.load32_u - drop - i32.const 0 - i64.atomic.load - drop - i32.const 0 - i64.atomic.load offset=8 - drop - i32.const 0 - i32.const 1 - i32.atomic.store8 - i32.const 0 - i32.const 1 - i32.atomic.store16 - i32.const 0 - i32.const 1 - i32.atomic.store - i32.const 0 - i64.const 1 - i64.atomic.store8 - i32.const 0 - i64.const 1 - i64.atomic.store16 - i32.const 0 - i64.const 1 - i64.atomic.store32 - i32.const 0 - i64.const 1 - i64.atomic.store - i32.const 0 - i64.const 1 - i64.atomic.store offset=8 - i32.const 0 - i32.const 1 - i32.atomic.rmw8.add_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.add_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.add - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.add_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.add_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.add_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.add - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.add offset=8 - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.sub_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.sub_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.sub - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.sub_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.sub_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.sub_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.sub - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.sub offset=8 - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.and_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.and_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.and - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.and_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.and_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.and_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.and - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.and offset=8 - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.or_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.or_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.or - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.or_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.or_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.or_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.or - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.or offset=8 - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.xor_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.xor_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.xor - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.xor_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.xor_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.xor_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.xor - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.xor offset=8 - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.xchg_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.xchg_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.xchg - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.xchg_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.xchg_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.xchg_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.xchg - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.xchg offset=8 - drop - i32.const 0 - i32.const 1 - i32.const 2 - i32.atomic.rmw8.cmpxchg_u - drop - i32.const 0 - i32.const 1 - i32.const 2 - i32.atomic.rmw16.cmpxchg_u - drop - i32.const 0 - i32.const 1 - i32.const 2 - i32.atomic.rmw.cmpxchg - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw8.cmpxchg_u - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw16.cmpxchg_u - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw32.cmpxchg_u - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw.cmpxchg - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw.cmpxchg offset=8 - drop - ) - (func $features/threads/testAtomicAsm - i32.const 0 - i32.atomic.load8_u - drop - i32.const 0 - i32.atomic.load16_u - drop - i32.const 0 - i32.atomic.load - drop - i32.const 0 - i64.atomic.load8_u - drop - i32.const 0 - i64.atomic.load16_u - drop - i32.const 0 - i64.atomic.load32_u - drop - i32.const 0 - i64.atomic.load - drop - i32.const 0 - i32.const 1 - i32.atomic.store8 - i32.const 0 - i32.const 1 - i32.atomic.store16 - i32.const 0 - i32.const 1 - i32.atomic.store - i32.const 0 - i64.const 1 - i64.atomic.store8 - i32.const 0 - i64.const 1 - i64.atomic.store16 - i32.const 0 - i64.const 1 - i64.atomic.store32 - i32.const 0 - i64.const 1 - i64.atomic.store - i32.const 0 - i32.const 1 - i32.atomic.rmw8.add_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.add_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.add - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.add_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.add_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.add_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.add - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.sub_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.sub_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.sub - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.sub_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.sub_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.sub_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.sub - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.and_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.and_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.and - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.and_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.and_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.and_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.and - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.or_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.or_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.or - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.or_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.or_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.or_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.or - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.xor_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.xor_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.xor - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.xor_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.xor_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.xor_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.xor - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw8.xchg_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw16.xchg_u - drop - i32.const 0 - i32.const 1 - i32.atomic.rmw.xchg - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw8.xchg_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw16.xchg_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw32.xchg_u - drop - i32.const 0 - i64.const 1 - i64.atomic.rmw.xchg - drop - i32.const 0 - i32.const 1 - i32.const 2 - i32.atomic.rmw8.cmpxchg_u - drop - i32.const 0 - i32.const 1 - i32.const 2 - i32.atomic.rmw16.cmpxchg_u - drop - i32.const 0 - i32.const 1 - i32.const 2 - i32.atomic.rmw.cmpxchg - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw8.cmpxchg_u - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw16.cmpxchg_u - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw32.cmpxchg_u - drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw.cmpxchg - drop - ) - (func $start:features/threads - i32.const 1 - drop - call $features/threads/testAtomic - call $features/threads/testAtomicAsm - ) - (func $~start - call $start:features/threads - ) -) diff --git a/tests/compiler/field-initialization-errors.json b/tests/compiler/field-initialization-errors.json index c4c505491c..3a81ef7882 100644 --- a/tests/compiler/field-initialization-errors.json +++ b/tests/compiler/field-initialization-errors.json @@ -1,20 +1,19 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ - "TS2564: Property 'field-initialization-errors/Ref.a' has no initializer", - "TS2564: Property 'field-initialization-errors/Ref_Ctor.a' has no initializer", - "TS2564: Property 'field-initialization-errors/Ref_InlineCtor.a' has no initializer", - "TS2564: Property 'field-initialization-errors/Ref_Ctor_Branch.a' has no initializer", - "TS2565: Property 'field-initialization-errors/Ref_Ctor_Use_Init.a' is used before being assigned.", - "TS2564: Property 'field-initialization-errors/Ref_Ctor_Call_Init.a' has no initializer", - "TS2564: Property 'field-initialization-errors/Ref_Ctor_Prop_Init.a' has no initializer", - "TS2564: Property 'field-initialization-errors/Ref_Ctor_Callwith_Init.a' has no initializer", - "TS2564: Property 'field-initialization-errors/Ref_Ctor_Alias_Init.a' has no initializer", - "TS2564: Property 'field-initialization-errors/Ref_Ctor_Assign_Init.a' has no initializer", - "TS2564: Property 'field-initialization-errors/Ref_Ctor_Icallwith_Init.a' has no initializer", - "TS2564: Property 'field-initialization-errors/Inherit_Base.a' has no initializer", + "TS2564: Property 'field-initialization-errors/Ref#a' has no initializer", + "TS2564: Property 'field-initialization-errors/Ref_Ctor#a' has no initializer", + "TS2564: Property 'field-initialization-errors/Ref_InlineCtor#a' has no initializer", + "TS2564: Property 'field-initialization-errors/Ref_Ctor_Branch#a' has no initializer", + "TS2565: Property 'field-initialization-errors/Ref_Ctor_Use_Init#a' is used before being assigned.", + "TS2564: Property 'field-initialization-errors/Ref_Ctor_Call_Init#a' has no initializer", + "TS2564: Property 'field-initialization-errors/Ref_Ctor_Prop_Init#a' has no initializer", + "TS2564: Property 'field-initialization-errors/Ref_Ctor_Callwith_Init#a' has no initializer", + "TS2564: Property 'field-initialization-errors/Ref_Ctor_Alias_Init#a' has no initializer", + "TS2564: Property 'field-initialization-errors/Ref_Ctor_Assign_Init#a' has no initializer", + "TS2564: Property 'field-initialization-errors/Ref_Ctor_Icallwith_Init#a' has no initializer", + "TS2564: Property 'field-initialization-errors/Inherit_Base#a' has no initializer", "EOF" ] -} \ No newline at end of file +} diff --git a/tests/compiler/field-initialization-warnings.json b/tests/compiler/field-initialization-warnings.json index 1d20f3ea5e..f898f65542 100644 --- a/tests/compiler/field-initialization-warnings.json +++ b/tests/compiler/field-initialization-warnings.json @@ -1,10 +1,9 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "AS906: Unnecessary definite assignment.", - "AS233: Property 'field-initialization-warnings/Ref_Ctor_Init.a' is always assigned", + "AS233: Property 'field-initialization-warnings/Ref_Ctor_Init#a' is always assigned", "EOF" ] -} \ No newline at end of file +} diff --git a/tests/compiler/field-initialization.debug.wat b/tests/compiler/field-initialization.debug.wat new file mode 100644 index 0000000000..e5375a2469 --- /dev/null +++ b/tests/compiler/field-initialization.debug.wat @@ -0,0 +1,5155 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 768)) + (global $~lib/memory/__data_end i32 (i32.const 876)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33644)) + (global $~lib/memory/__heap_base i32 (i32.const 33644)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $10 (i32.const 540) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $11 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00b\00b\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00b\00b\00b\00\00\00\00\00\00\00") + (data $15 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00c\00c\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 768) "\1a\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $field-initialization/Value_Init#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $field-initialization/Value_Init#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Value#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $field-initialization/Value#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $field-initialization/Ref_Init#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Ref_Init#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Nullable_Init#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Nullable_Init#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Nullable#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Nullable#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Value_Ctor#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $field-initialization/Value_Ctor#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Value_Init_Ctor#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $field-initialization/Value_Init_Ctor#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Value_Ctor_Init#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $field-initialization/Value_Ctor_Init#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Ref_Init_Ctor#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Ref_Init_Ctor#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Ref_Ctor_Init#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Ref_Ctor_Init#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Ref_Ctor_Param#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Ref_Ctor_Param#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Nullable_Ctor#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Nullable_Ctor#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Nullable_Init_Ctor#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Nullable_Init_Ctor#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Nullable_Ctor_Init#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Nullable_Ctor_Init#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Inherit_Base#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Inherit_Base#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/SomeObject#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $field-initialization/SomeObject#set:b (param $this i32) (param $b i32) + local.get $this + local.get $b + i32.store offset=4 + local.get $this + local.get $b + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/SomeObject#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/SomeObject#get:b (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $field-initialization/SomeOtherObject#set:c (param $this i32) (param $c i32) + local.get $this + local.get $c + i32.store offset=8 + local.get $this + local.get $c + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/SomeOtherObject#get:c (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $field-initialization/Flow_Balanced#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Flow_Balanced#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Ref_Init_InlineCtor#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Ref_Init_InlineCtor#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $field-initialization/Ref_InlineCtor_Init#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Ref_InlineCtor_Init#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 512 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $field-initialization/Ref_Init~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Nullable_Init~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Nullable~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Ref_Init_Ctor~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Ref_Ctor_Init~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Ref_Ctor_Param~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Nullable_Ctor~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Nullable_Init_Ctor~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Nullable_Ctor_Init~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Inherit~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $field-initialization/Inherit_Base~visit + ) + (func $field-initialization/Inherit_Base~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Inherit_Ctor~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $field-initialization/Inherit_Base~visit + ) + (func $field-initialization/SomeObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/SomeOtherObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $field-initialization/SomeObject~visit + local.get $0 + i32.load offset=8 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Flow_Balanced~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Ref_Init_InlineCtor~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $field-initialization/Ref_InlineCtor_Init~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $field-initialization/Ref_InlineCtor_Init + block $field-initialization/Ref_Init_InlineCtor + block $field-initialization/Flow_Balanced + block $field-initialization/SomeOtherObject + block $field-initialization/SomeObject + block $field-initialization/Inherit_Ctor + block $field-initialization/Inherit_Base + block $field-initialization/Inherit + block $field-initialization/Nullable_Ctor_Init + block $field-initialization/Nullable_Init_Ctor + block $field-initialization/Nullable_Ctor + block $field-initialization/Ref_Ctor_Param + block $field-initialization/Ref_Ctor_Init + block $field-initialization/Ref_Init_Ctor + block $field-initialization/Value_Ctor_Init + block $field-initialization/Value_Init_Ctor + block $field-initialization/Value_Ctor + block $field-initialization/Nullable + block $field-initialization/Nullable_Init + block $field-initialization/Ref_Init + block $field-initialization/Value + block $field-initialization/Value_Init + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $field-initialization/Value_Init $field-initialization/Value $field-initialization/Ref_Init $field-initialization/Nullable_Init $field-initialization/Nullable $field-initialization/Value_Ctor $field-initialization/Value_Init_Ctor $field-initialization/Value_Ctor_Init $field-initialization/Ref_Init_Ctor $field-initialization/Ref_Ctor_Init $field-initialization/Ref_Ctor_Param $field-initialization/Nullable_Ctor $field-initialization/Nullable_Init_Ctor $field-initialization/Nullable_Ctor_Init $field-initialization/Inherit $field-initialization/Inherit_Base $field-initialization/Inherit_Ctor $field-initialization/SomeObject $field-initialization/SomeOtherObject $field-initialization/Flow_Balanced $field-initialization/Ref_Init_InlineCtor $field-initialization/Ref_InlineCtor_Init $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Init~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable_Init~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable~visit + return + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Init_Ctor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Ctor_Init~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Ctor_Param~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable_Ctor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable_Init_Ctor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable_Ctor_Init~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Inherit~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Inherit_Base~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Inherit_Ctor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/SomeObject~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/SomeOtherObject~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Flow_Balanced~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Init_InlineCtor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_InlineCtor_Init~visit + return + end + unreachable + ) + (func $~start + call $start:field-initialization + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33664 + i32.const 33712 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $field-initialization/Value_Init#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $field-initialization/Value_Init#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Value#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $field-initialization/Value#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Ref_Init#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $field-initialization/Ref_Init#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Nullable_Init#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $field-initialization/Nullable_Init#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Nullable#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $field-initialization/Nullable#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Value_Ctor#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $field-initialization/Value_Ctor#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Value_Init_Ctor#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $field-initialization/Value_Init_Ctor#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Value_Ctor_Init#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $field-initialization/Value_Ctor_Init#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $field-initialization/Value_Ctor_Init#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Ref_Init_Ctor#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $field-initialization/Ref_Init_Ctor#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Ref_Ctor_Init#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $field-initialization/Ref_Ctor_Init#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $field-initialization/Ref_Ctor_Init#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Ref_Ctor_Param#constructor (param $this i32) (param $a i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $field-initialization/Ref_Ctor_Param#set:a + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $field-initialization/Nullable_Ctor#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $field-initialization/Nullable_Ctor#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Nullable_Init_Ctor#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $field-initialization/Nullable_Init_Ctor#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Nullable_Ctor_Init#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $field-initialization/Nullable_Ctor_Init#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $field-initialization/Nullable_Ctor_Init#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Inherit_Base#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $field-initialization/Inherit_Base#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Inherit#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $field-initialization/Inherit_Base#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Inherit_Ctor#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $field-initialization/Inherit_Base#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/SomeObject#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $field-initialization/SomeObject#set:a + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $field-initialization/SomeObject#set:b + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $field-initialization/SomeOtherObject#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $field-initialization/SomeObject#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $field-initialization/SomeOtherObject#set:c + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $field-initialization/Flow_Balanced#constructor (param $this i32) (param $cond i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $field-initialization/Flow_Balanced#set:a + local.get $cond + if + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $field-initialization/Flow_Balanced#set:a + else + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $field-initialization/Flow_Balanced#set:a + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $start:field-initialization + (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) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 144 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 144 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Value_Init#constructor + local.tee $0 + i32.store + local.get $0 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Value_Init#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Value#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Value#get:a + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Ref_Init#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Ref_Init#get:a + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Nullable_Init#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Nullable_Init#get:a + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Nullable#constructor + local.tee $4 + i32.store offset=20 + local.get $4 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Nullable#get:a + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Value_Ctor#constructor + local.tee $5 + i32.store offset=24 + local.get $5 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Value_Ctor#get:a + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Value_Init_Ctor#constructor + local.tee $6 + i32.store offset=28 + local.get $6 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Value_Init_Ctor#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Value_Ctor_Init#constructor + local.tee $7 + i32.store offset=32 + local.get $7 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Value_Ctor_Init#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Ref_Init_Ctor#constructor + local.tee $8 + i32.store offset=36 + local.get $8 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Ref_Init_Ctor#get:a + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Ref_Ctor_Init#constructor + local.tee $9 + i32.store offset=40 + local.get $9 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Ref_Ctor_Init#get:a + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 94 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $10 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $10 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Ref_Ctor_Param#constructor + local.tee $11 + i32.store offset=48 + local.get $11 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Ref_Ctor_Param#get:a + local.get $10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Nullable_Ctor#constructor + local.tee $12 + i32.store offset=52 + local.get $12 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Nullable_Ctor#get:a + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Nullable_Init_Ctor#constructor + local.tee $13 + i32.store offset=56 + local.get $13 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Nullable_Init_Ctor#get:a + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Nullable_Ctor_Init#constructor + local.tee $14 + i32.store offset=60 + local.get $14 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Nullable_Ctor_Init#get:a + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Inherit#constructor + local.tee $15 + i32.store offset=64 + local.get $15 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Inherit_Base#get:a + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Inherit_Ctor#constructor + local.tee $16 + i32.store offset=68 + local.get $16 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Inherit_Base#get:a + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 153 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/SomeObject#constructor + local.tee $17 + i32.store offset=72 + local.get $17 + i32.const 0 + i32.store + local.get $17 + i32.const 0 + i32.store offset=4 + local.get $17 + local.tee $18 + i32.store offset=76 + local.get $18 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/SomeObject#get:a + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 164 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $18 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=80 + local.get $34 + call $field-initialization/SomeObject#get:b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 165 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/SomeObject#constructor + local.tee $19 + i32.store offset=84 + local.get $19 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 1 + call $field-initialization/SomeObject#set:a + local.get $19 + i32.const 0 + i32.store offset=4 + local.get $19 + local.tee $20 + i32.store offset=88 + local.get $20 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/SomeObject#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 167 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $20 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=80 + local.get $34 + call $field-initialization/SomeObject#get:b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 168 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/SomeObject#constructor + local.tee $21 + i32.store offset=92 + local.get $21 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 624 + call $field-initialization/SomeObject#set:b + local.get $21 + i32.const 0 + i32.store + local.get $21 + local.tee $22 + i32.store offset=96 + local.get $22 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/SomeObject#get:a + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 170 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $22 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=80 + local.get $34 + call $field-initialization/SomeObject#get:b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 171 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/SomeObject#constructor + local.tee $23 + i32.store offset=100 + local.get $23 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 2 + call $field-initialization/SomeObject#set:a + local.get $23 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 656 + call $field-initialization/SomeObject#set:b + local.get $23 + local.tee $24 + i32.store offset=104 + local.get $24 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/SomeObject#get:a + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 173 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $24 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=80 + local.get $34 + call $field-initialization/SomeObject#get:b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 174 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/SomeOtherObject#constructor + local.tee $25 + i32.store offset=108 + local.get $25 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 688 + call $field-initialization/SomeOtherObject#set:c + local.get $25 + i32.const 0 + i32.store + local.get $25 + i32.const 0 + i32.store offset=4 + local.get $25 + local.tee $26 + i32.store offset=112 + local.get $26 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/SomeObject#get:a + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 182 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $26 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=80 + local.get $34 + call $field-initialization/SomeObject#get:b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 183 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $26 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=80 + local.get $34 + call $field-initialization/SomeOtherObject#get:c + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/SomeOtherObject#constructor + local.tee $27 + i32.store offset=116 + local.get $27 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 3 + call $field-initialization/SomeObject#set:a + local.get $27 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 720 + call $field-initialization/SomeObject#set:b + local.get $27 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 752 + call $field-initialization/SomeOtherObject#set:c + local.get $27 + local.tee $28 + i32.store offset=120 + local.get $28 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/SomeObject#get:a + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 186 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $28 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=80 + local.get $34 + call $field-initialization/SomeObject#get:b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 720 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $28 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=80 + local.get $34 + call $field-initialization/SomeOtherObject#get:c + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 188 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $field-initialization/Flow_Balanced#constructor + local.tee $29 + i32.store offset=124 + local.get $29 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Flow_Balanced#get:a + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 205 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $30 + local.get $30 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $30 + i32.store offset=128 + end + local.get $30 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=80 + local.get $34 + call $field-initialization/Ref_Init_InlineCtor#set:a + local.get $30 + local.tee $31 + i32.store offset=132 + local.get $31 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Ref_Init_InlineCtor#get:a + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 218 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $32 + local.get $32 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 25 + call $~lib/rt/itcms/__new + local.tee $32 + i32.store offset=136 + end + local.get $32 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 0 + call $field-initialization/Ref_InlineCtor_Init#set:a + local.get $32 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=80 + local.get $34 + call $field-initialization/Ref_InlineCtor_Init#set:a + local.get $32 + local.tee $33 + i32.store offset=140 + local.get $33 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=4 + local.get $34 + call $field-initialization/Ref_InlineCtor_Init#get:a + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 144 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 512 + i32.const 560 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) +) diff --git a/tests/compiler/field-initialization.json b/tests/compiler/field-initialization.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/field-initialization.json +++ b/tests/compiler/field-initialization.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat deleted file mode 100644 index 6f20599bb8..0000000000 --- a/tests/compiler/field-initialization.optimized.wat +++ /dev/null @@ -1,870 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s") - (data (i32.const 1088) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1136) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1200) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 1232) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00b") - (data (i32.const 1264) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00c") - (data (i32.const 1296) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00b\00b") - (data (i32.const 1328) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00c\00c") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $5 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $field-initialization/Inherit_Base#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 18 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__alloc - i32.store - local.get $0 - ) - (func $field-initialization/SomeObject#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 20 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - local.get $0 - i32.load16_u - local.tee $3 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $3 - local.get $4 - i32.sub - return - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - return - end - i32.const 0 - ) - (func $field-initialization/SomeOtherObject#constructor (result i32) - (local $0 i32) - i32.const 12 - i32.const 21 - call $~lib/rt/stub/__alloc - call $field-initialization/SomeObject#constructor - local.tee $0 - i32.const 0 - i32.store offset=8 - local.get $0 - ) - (func $start:field-initialization - (local $0 i32) - (local $1 i32) - i32.const 1360 - global.set $~lib/rt/stub/offset - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.load - if - i32.const 0 - i32.const 1040 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 5 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__alloc - i32.store - local.get $0 - i32.load - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 24 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 6 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__alloc - i32.store - local.get $0 - i32.load - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 7 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.load - if - i32.const 0 - i32.const 1040 - i32.const 40 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 8 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.load - if - i32.const 0 - i32.const 1040 - i32.const 52 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 9 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 10 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 11 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__alloc - i32.store - local.get $0 - i32.load - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 12 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.store - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $1 - local.get $0 - i32.load - drop - local.get $0 - local.get $1 - i32.store - local.get $0 - i32.load - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 94 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $0 - i32.const 4 - i32.const 13 - call $~lib/rt/stub/__alloc - local.tee $1 - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.load - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 14 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.load - if - i32.const 0 - i32.const 1040 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 15 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__alloc - i32.store - local.get $0 - i32.load - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 16 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.store - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $1 - local.get $0 - i32.load - drop - local.get $0 - local.get $1 - i32.store - local.get $0 - i32.load - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 17 - call $~lib/rt/stub/__alloc - call $field-initialization/Inherit_Base#constructor - i32.load - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 147 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 19 - call $~lib/rt/stub/__alloc - call $field-initialization/Inherit_Base#constructor - i32.load - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 153 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $field-initialization/SomeObject#constructor - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.load - if - i32.const 0 - i32.const 1040 - i32.const 164 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $field-initialization/SomeObject#constructor - local.tee $0 - i32.const 1 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $field-initialization/SomeObject#constructor - local.tee $0 - i32.const 1216 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.load - if - i32.const 0 - i32.const 1040 - i32.const 170 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 1216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 171 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $field-initialization/SomeObject#constructor - local.tee $0 - i32.const 2 - i32.store - local.get $0 - i32.const 1248 - i32.store offset=4 - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 173 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 1248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 174 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - call $field-initialization/SomeOtherObject#constructor - local.tee $0 - i32.const 1280 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.load - if - i32.const 0 - i32.const 1040 - i32.const 182 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 183 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 184 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - call $field-initialization/SomeOtherObject#constructor - local.tee $0 - i32.const 3 - i32.store - local.get $0 - i32.const 1312 - i32.store offset=4 - local.get $0 - i32.const 1344 - i32.store offset=8 - local.get $0 - i32.load - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 186 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 1312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 187 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 1344 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 188 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 22 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.store - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $1 - local.get $0 - i32.load - drop - local.get $0 - local.get $1 - i32.store - local.get $0 - i32.load - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 23 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__alloc - i32.store - local.get $0 - i32.load - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 218 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 24 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.store - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $1 - local.get $0 - i32.load - drop - local.get $0 - local.get $1 - i32.store - local.get $0 - i32.load - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 230 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:field-initialization - ) -) diff --git a/tests/compiler/field-initialization.release.wat b/tests/compiler/field-initialization.release.wat new file mode 100644 index 0000000000..6f87390f7f --- /dev/null +++ b/tests/compiler/field-initialization.release.wat @@ -0,0 +1,3491 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (result i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34668)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "L") + (data $8.1 (i32.const 1448) "\02\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s") + (data $9 (i32.const 1516) ",") + (data $9.1 (i32.const 1528) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $10 (i32.const 1564) "<") + (data $10.1 (i32.const 1576) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $11 (i32.const 1628) "\1c") + (data $11.1 (i32.const 1640) "\02\00\00\00\02\00\00\00b") + (data $12 (i32.const 1660) "\1c") + (data $12.1 (i32.const 1672) "\02\00\00\00\04\00\00\00b\00b") + (data $13 (i32.const 1692) "\1c") + (data $13.1 (i32.const 1704) "\02\00\00\00\02\00\00\00c") + (data $14 (i32.const 1724) "\1c") + (data $14.1 (i32.const 1736) "\02\00\00\00\06\00\00\00b\00b\00b") + (data $15 (i32.const 1756) "\1c") + (data $15.1 (i32.const 1768) "\02\00\00\00\04\00\00\00c\00c") + (data $16 (i32.const 1792) "\1a\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (data $16.1 (i32.const 1832) " \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1536 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$241 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34668 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$241 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1792 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34672 + i32.const 0 + i32.store + i32.const 36240 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34672 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34672 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34672 + i32.const 36244 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34672 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34668 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34668 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34668 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $field-initialization/SomeOtherObject + block $field-initialization/SomeObject + block $field-initialization/Value_Ctor_Init + block $field-initialization/Value_Init_Ctor + block $field-initialization/Value_Ctor + block $field-initialization/Value + block $field-initialization/Value_Init + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $field-initialization/Value_Init $field-initialization/Value $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/Value_Ctor $field-initialization/Value_Init_Ctor $field-initialization/Value_Ctor_Init $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/SomeObject $field-initialization/SomeOtherObject $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + call $start:field-initialization + ) + (func $field-initialization/Inherit_Base#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $field-initialization/SomeObject#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$118 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$118 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $field-initialization/SomeOtherObject#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $field-initialization/SomeObject#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $start:field-initialization + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 144 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 144 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 34668 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 94 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + i32.load + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $field-initialization/Inherit_Base#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $field-initialization/Inherit_Base#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 153 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/SomeObject#constructor + local.tee $1 + i32.store offset=72 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.store offset=76 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 164 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=80 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 165 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/SomeObject#constructor + local.tee $1 + i32.store offset=84 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 167 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=80 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 168 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/SomeObject#constructor + local.tee $1 + i32.store offset=92 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1648 + i32.store offset=4 + local.get $1 + i32.const 1648 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.store offset=96 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 170 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=80 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 171 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/SomeObject#constructor + local.tee $1 + i32.store offset=100 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1680 + i32.store offset=4 + local.get $1 + i32.const 1680 + call $~lib/rt/itcms/__link + local.get $1 + i32.store offset=104 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 173 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=80 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 174 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + call $field-initialization/SomeOtherObject#constructor + local.tee $1 + i32.store offset=108 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1712 + i32.store offset=8 + local.get $1 + i32.const 1712 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.store offset=112 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 182 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=80 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 183 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=80 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + call $field-initialization/SomeOtherObject#constructor + local.tee $1 + i32.store offset=116 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1744 + i32.store offset=4 + local.get $1 + i32.const 1744 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1776 + i32.store offset=8 + local.get $1 + i32.const 1776 + call $~lib/rt/itcms/__link + local.get $1 + i32.store offset=120 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 186 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=80 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 1744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=80 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 1776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 188 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=124 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 205 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=128 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=80 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + i32.store offset=132 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 218 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 25 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=136 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=80 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + i32.store offset=140 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 144 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/field-initialization.untouched.wat b/tests/compiler/field-initialization.untouched.wat deleted file mode 100644 index 0517dcbf9c..0000000000 --- a/tests/compiler/field-initialization.untouched.wat +++ /dev/null @@ -1,1665 +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)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s\00") - (data (i32.const 80) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 128) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 192) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 224) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00b\00") - (data (i32.const 256) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00c\00") - (data (i32.const 288) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00b\00b\00") - (data (i32.const 320) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00c\00c\00") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 340)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $field-initialization/Value_Init#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $field-initialization/Value#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.const 1073741808 - i32.gt_u - if - i32.const 96 - i32.const 144 - i32.const 49 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $2 - call $~lib/rt/stub/__retain - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $field-initialization/Ref_Init#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - ) - (func $field-initialization/Nullable_Init#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 6 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - ) - (func $field-initialization/Nullable#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 7 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $field-initialization/Value_Ctor#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 8 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $field-initialization/Value_Init_Ctor#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 9 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - ) - (func $field-initialization/Value_Ctor_Init#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 10 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 1 - i32.store - local.get $0 - ) - (func $field-initialization/Ref_Init_Ctor#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 11 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - ) - (func $field-initialization/Ref_Ctor_Init#constructor (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 12 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.tee $1 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - ) - (func $field-initialization/Ref_Ctor_Param#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 13 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - call $~lib/rt/stub/__retain - i32.store - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $field-initialization/Nullable_Ctor#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 14 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $field-initialization/Nullable_Init_Ctor#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 15 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - ) - (func $field-initialization/Nullable_Ctor_Init#constructor (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 16 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.tee $1 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - local.get $0 - ) - (func $field-initialization/Inherit_Base#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 18 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - ) - (func $field-initialization/Inherit#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 17 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $field-initialization/Inherit_Base#constructor - local.set $0 - local.get $0 - ) - (func $field-initialization/Inherit_Ctor#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 19 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $field-initialization/Inherit_Base#constructor - local.set $0 - local.get $0 - ) - (func $field-initialization/SomeObject#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 20 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $field-initialization/SomeOtherObject#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 21 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $field-initialization/SomeObject#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - ) - (func $field-initialization/Flow_Balanced#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 22 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $1 - if - local.get $0 - local.tee $2 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.load - call $~lib/rt/stub/__release - local.get $3 - i32.store - else - local.get $0 - local.tee $3 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $3 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store - end - local.get $0 - ) - (func $start:field-initialization - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - call $field-initialization/Value_Init#constructor - local.set $0 - local.get $0 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Value#constructor - local.set $0 - local.get $0 - i32.load - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Ref_Init#constructor - local.set $0 - local.get $0 - i32.load - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 24 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Nullable_Init#constructor - local.set $0 - local.get $0 - i32.load - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Nullable#constructor - local.set $0 - local.get $0 - i32.load - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 40 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Value_Ctor#constructor - local.set $0 - local.get $0 - i32.load - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 52 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Value_Init_Ctor#constructor - local.set $0 - local.get $0 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Value_Ctor_Init#constructor - local.set $0 - local.get $0 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Ref_Init_Ctor#constructor - local.set $0 - local.get $0 - i32.load - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Ref_Ctor_Init#constructor - local.set $0 - local.get $0 - i32.load - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 94 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $0 - i32.const 0 - local.get $0 - call $field-initialization/Ref_Ctor_Param#constructor - local.set $1 - local.get $1 - i32.load - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Nullable_Ctor#constructor - local.set $1 - local.get $1 - i32.load - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Nullable_Init_Ctor#constructor - local.set $1 - local.get $1 - i32.load - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Nullable_Ctor_Init#constructor - local.set $1 - local.get $1 - i32.load - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Inherit#constructor - local.set $1 - local.get $1 - i32.load - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 147 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Inherit_Ctor#constructor - local.set $1 - local.get $1 - i32.load - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 153 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/SomeObject#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.load - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 164 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $field-initialization/SomeObject#constructor - local.set $2 - local.get $2 - i32.const 1 - i32.store - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $field-initialization/SomeObject#constructor - local.set $4 - local.get $4 - i32.const 208 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store - local.get $4 - call $~lib/rt/stub/__retain - local.set $5 - local.get $5 - i32.load - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 170 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=4 - i32.const 208 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 171 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $field-initialization/SomeObject#constructor - local.set $6 - local.get $6 - i32.const 2 - i32.store - local.get $6 - i32.const 240 - i32.store offset=4 - local.get $6 - call $~lib/rt/stub/__retain - local.set $7 - local.get $7 - i32.load - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 173 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.load offset=4 - i32.const 240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 174 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/SomeOtherObject#constructor - local.set $7 - local.get $7 - i32.const 272 - i32.store offset=8 - local.get $7 - i32.const 0 - i32.store - local.get $7 - i32.const 0 - i32.store offset=4 - local.get $7 - call $~lib/rt/stub/__retain - local.set $6 - local.get $6 - i32.load - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 182 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.load offset=4 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 183 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.load offset=8 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 184 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $field-initialization/SomeOtherObject#constructor - local.set $5 - local.get $5 - i32.const 3 - i32.store - local.get $5 - i32.const 304 - i32.store offset=4 - local.get $5 - i32.const 336 - i32.store offset=8 - local.get $5 - call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - i32.load - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 186 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - i32.const 304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 187 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=8 - i32.const 336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 188 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - i32.const 0 - i32.const 1 - call $field-initialization/Flow_Balanced#constructor - local.set $4 - local.get $4 - i32.load - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/stub/__release - i32.const 0 - local.set $1 - local.get $1 - i32.eqz - if - i32.const 4 - i32.const 23 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $1 - end - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $1 - local.set $1 - local.get $1 - i32.load - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 218 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - i32.const 0 - local.set $0 - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 24 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.tee $2 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.load - call $~lib/rt/stub/__release - local.get $3 - i32.store - local.get $0 - local.set $0 - local.get $0 - i32.load - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 230 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:field-initialization - ) -) diff --git a/tests/compiler/field-reference-types.json b/tests/compiler/field-reference-types.json new file mode 100644 index 0000000000..328a6864a7 --- /dev/null +++ b/tests/compiler/field-reference-types.json @@ -0,0 +1,7 @@ +{ + "stderr": [ + "Not implemented: Reference typed fields", + "Not implemented: Reference typed fields", + "EOF" + ] +} diff --git a/tests/compiler/field-reference-types.ts b/tests/compiler/field-reference-types.ts new file mode 100644 index 0000000000..181e62a0ef --- /dev/null +++ b/tests/compiler/field-reference-types.ts @@ -0,0 +1,12 @@ +class Foo { + bar: externref = null; +} + +class Baz { + qux: T; +} + +new Foo(); +new Baz(); + +ERROR("EOF"); diff --git a/tests/compiler/field.debug.wat b/tests/compiler/field.debug.wat new file mode 100644 index 0000000000..e2ca4b3acc --- /dev/null +++ b/tests/compiler/field.debug.wat @@ -0,0 +1,2798 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32) (result i32))) + (type $10 (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 448)) + (global $~lib/memory/__data_end i32 (i32.const 480)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33248)) + (global $~lib/memory/__heap_base i32 (i32.const 33248)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "\1c\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") + (data $9 (i32.const 448) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\02A\00\00\02\t\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $field/NoStaticConflict#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + local.get $this + local.get $a + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field/NoStaticConflict.a (param $v i32) + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $start:field + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $field/testNoStaticConflict + call $~lib/rt/itcms/__collect + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $field/NoStaticConflict~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String> + block $field/NoStaticConflict + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $field/NoStaticConflict $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $field/NoStaticConflict~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:field + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33280 + i32.const 33328 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $field/NoStaticConflict#constructor (param $this i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 2 + i32.const 5 + i32.const 432 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $field/NoStaticConflict#set:a + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $field/testNoStaticConflict + (local $inst i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field/NoStaticConflict#constructor + local.tee $inst + i32.store + local.get $inst + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $field/NoStaticConflict.a + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) +) diff --git a/tests/compiler/field.json b/tests/compiler/field.json new file mode 100644 index 0000000000..b83788465e --- /dev/null +++ b/tests/compiler/field.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + ], + "asc_rtrace": true +} diff --git a/tests/compiler/field.release.wat b/tests/compiler/field.release.wat new file mode 100644 index 0000000000..415b3934d5 --- /dev/null +++ b/tests/compiler/field.release.wat @@ -0,0 +1,1911 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34272)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "\1c") + (data $8.1 (i32.const 1448) "\01") + (data $9 (i32.const 1472) "\07\00\00\00 \00\00\00 \00\00\00 ") + (data $9.1 (i32.const 1496) "\02A\00\00\02\t") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$127 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34272 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$127 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1472 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34272 + i32.const 0 + i32.store + i32.const 35840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34272 + i32.const 35844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34272 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34272 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34272 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $start:field + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + memory.size + i32.const 16 + i32.shl + i32.const 34272 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1504 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1504 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1504 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1504 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 1456 + i32.const 0 + memory.copy + local.get $3 + i32.store + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $3 + i32.store + local.get $2 + local.get $3 + call $~lib/rt/itcms/__link + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + return + end + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String> + block $field/NoStaticConflict + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $field/NoStaticConflict $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1504 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1504 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 + end + unreachable + end + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:field + ) +) diff --git a/tests/compiler/field.ts b/tests/compiler/field.ts new file mode 100644 index 0000000000..24bb5b863f --- /dev/null +++ b/tests/compiler/field.ts @@ -0,0 +1,13 @@ +// see: https://github.com/AssemblyScript/assemblyscript/issues/2006 + +class NoStaticConflict { + a: string[] = []; + static a(v: NoStaticConflict): void {} +} +function testNoStaticConflict(): void { + var inst = new NoStaticConflict(); + NoStaticConflict.a(inst); +} +testNoStaticConflict(); + +__collect(); diff --git a/tests/compiler/for.debug.wat b/tests/compiler/for.debug.wat new file mode 100644 index 0000000000..fd03f109f2 --- /dev/null +++ b/tests/compiler/for.debug.wat @@ -0,0 +1,3152 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $for/ran (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 448)) + (global $~lib/memory/__data_end i32 (i32.const 472)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33240)) + (global $~lib/memory/__heap_base i32 (i32.const 33240)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s\00") + (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 448) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $for/testInitExpression + (local $i i32) + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + i32.const 10 + i32.lt_s + if + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testInitStatement + (local $j i32) + i32.const 0 + local.set $j + loop $for-loop|0 + local.get $j + i32.const 10 + i32.lt_s + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|0 + end + end + local.get $j + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testEmpty + (local $i i32) + i32.const 10 + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.gt_s + if + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testConditionOmitted + (local $i i32) + i32.const 0 + local.set $i + block $for-break0 + loop $for-loop|0 + i32.const 1 + if + local.get $i + i32.const 10 + i32.eq + if + br $for-break0 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + end + local.get $i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 39 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAllOmitted + (local $i i32) + i32.const 10 + local.set $i + block $for-break0 + loop $for-loop|0 + i32.const 1 + if + local.get $i + i32.const 1 + i32.sub + local.tee $i + i32.const 0 + i32.eq + if + br $for-break0 + end + br $for-loop|0 + end + end + end + local.get $i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysTrue + (local $i i32) + i32.const 0 + local.set $i + block $for-break0 + loop $for-loop|0 + i32.const 1 + if + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 10 + i32.eq + if + br $for-break0 + end + br $for-loop|0 + end + end + end + local.get $i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysFalse + i32.const 0 + drop + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysContinues + (local $k i32) + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 10 + i32.lt_s + if + block $for-continue|0 + br $for-continue|0 + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $k + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysBreaks + (local $k i32) + i32.const 0 + local.set $k + block $for-break0 + local.get $k + i32.const 10 + i32.lt_s + if + br $for-break0 + end + end + local.get $k + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysReturns + (local $k i32) + i32.const 0 + local.set $k + local.get $k + i32.const 10 + i32.lt_s + if + i32.const 1 + global.set $for/ran + return + end + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 101 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $for/testNestedContinue + (local $i i32) + (local $j i32) + (local $k i32) + i32.const 0 + local.set $i + i32.const 0 + local.set $j + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $i + i32.const 10 + i32.lt_s + if + block $for-continue|0 + local.get $i + i32.const 2 + i32.lt_s + if + br $for-continue|0 + end + i32.const 0 + local.set $j + loop $for-loop|1 + local.get $j + i32.const 10 + i32.lt_s + if + block $for-continue|1 + local.get $i + local.get $j + i32.lt_s + if + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-continue|1 + end + end + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $j + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 121 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 28 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 256 + i32.const 320 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 128 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 64 + i32.const 400 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 64 + i32.const 128 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $for/testRef + (local $i i32) + (local $ref i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $i + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $for/Ref#constructor + local.tee $ref + i32.store + loop $for-loop|0 + local.get $ref + if + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 10 + i32.eq + if + i32.const 0 + local.set $ref + else + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $for/Ref#constructor + local.tee $ref + i32.store + end + br $for-loop|0 + end + end + local.get $i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 137 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ref + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $for/getRef (result i32) + i32.const 0 + call $for/Ref#constructor + return + ) + (func $for/testRefAutorelease + (local $i i32) + (local $ref i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $i + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $for/Ref#constructor + local.tee $ref + i32.store + global.get $~lib/memory/__stack_pointer + call $for/getRef + local.tee $ref + i32.store + block $for-break0 + loop $for-loop|0 + call $for/getRef + if + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 10 + i32.eq + if + i32.const 0 + local.set $ref + br $for-break0 + end + global.get $~lib/memory/__stack_pointer + call $for/getRef + local.tee $ref + i32.store + br $for-loop|0 + end + end + end + local.get $i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 157 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ref + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 158 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $start:for + i32.const 0 + global.set $for/ran + call $for/testInitExpression + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testInitStatement + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testEmpty + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testConditionOmitted + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAllOmitted + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAlwaysTrue + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAlwaysFalse + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 76 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAlwaysContinues + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 85 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAlwaysBreaks + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAlwaysReturns + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testNestedContinue + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $for/testRef + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testRefAutorelease + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $~lib/rt/itcms/__collect + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $for/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $for/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:for + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33264 + i32.const 33312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $for/Ref#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/for.json b/tests/compiler/for.json index 59c251c705..b83788465e 100644 --- a/tests/compiler/for.json +++ b/tests/compiler/for.json @@ -1,7 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--explicitStart", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + ], + "asc_rtrace": true +} diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat deleted file mode 100644 index 8680bc669c..0000000000 --- a/tests/compiler/for.optimized.wat +++ /dev/null @@ -1,1509 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s") - (data (i32.const 1056) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1104) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1168) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (global $for/ran (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $for/testNestedContinue - (local $0 i32) - (local $1 i32) - (local $2 i32) - loop $for-loop|0 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $0 - i32.const 2 - i32.ge_s - if - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 10 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.add - local.get $2 - local.get $0 - local.get $1 - i32.lt_s - select - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 28 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1072 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1072 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1216 - local.set $1 - i32.const 1216 - i32.const 0 - i32.store - i32.const 2784 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1216 - i32.const 2800 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1216 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1072 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.lt_u - if - i32.const 0 - i32.const 1072 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.tee $3 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - i32.const 16 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - call $~lib/rt/rtrace/onalloc - local.get $1 - ) - (func $for/Ref#constructor (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - local.tee $1 - i32.const 1216 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - local.tee $0 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1184 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/rtrace/onincrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1184 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1216 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $start:for - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - global.set $for/ran - loop $for-loop|0 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran - i32.const 10 - local.set $0 - loop $for-loop|01 - local.get $0 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|01 - end - end - local.get $0 - if - i32.const 0 - i32.const 1040 - i32.const 29 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran - i32.const 0 - local.set $0 - loop $for-loop|02 - local.get $0 - i32.const 10 - i32.ne - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|02 - end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran - i32.const 10 - local.set $0 - loop $for-loop|03 - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - br_if $for-loop|03 - end - local.get $0 - if - i32.const 0 - i32.const 1040 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran - i32.const 0 - local.set $0 - loop $for-loop|04 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.ne - br_if $for-loop|04 - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran - i32.const 0 - local.set $0 - loop $for-loop|05 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|05 - end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran - call $for/testNestedContinue - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 127 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/Ref#constructor - local.set $0 - loop $for-loop|06 - local.get $0 - if - local.get $2 - i32.const 1 - i32.add - local.tee $2 - i32.const 10 - i32.eq - if - i32.const 0 - local.set $1 - local.get $0 - if - local.get $0 - call $~lib/rt/pure/__release - end - else - call $for/Ref#constructor - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - end - local.get $1 - local.set $0 - br $for-loop|06 - end - end - local.get $2 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 137 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - if - i32.const 0 - i32.const 1040 - i32.const 138 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - local.get $0 - call $~lib/rt/pure/__release - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - i32.const 0 - local.set $2 - call $for/Ref#constructor - call $for/Ref#constructor - local.set $0 - call $~lib/rt/pure/__release - loop $for-loop|07 - block $for-break0 - call $for/Ref#constructor - local.tee $1 - call $~lib/rt/pure/__release - local.get $1 - if - local.get $2 - i32.const 1 - i32.add - local.tee $2 - i32.const 10 - i32.eq - if - local.get $0 - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 0 - local.set $0 - br $for-break0 - end - call $for/Ref#constructor - local.get $0 - call $~lib/rt/pure/__release - local.set $0 - br $for-loop|07 - end - end - end - local.get $2 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 157 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - if - i32.const 0 - i32.const 1040 - i32.const 158 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - local.get $0 - call $~lib/rt/pure/__release - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:for - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1184 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1216 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1184 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1184 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/for.release.wat b/tests/compiler/for.release.wat new file mode 100644 index 0000000000..4f07612e6c --- /dev/null +++ b/tests/compiler/for.release.wat @@ -0,0 +1,1905 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34264)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s") + (data $1 (i32.const 1068) "<") + (data $1.1 (i32.const 1080) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1132) "<") + (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1260) "<") + (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1324) ",") + (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1404) "<") + (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1472) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$128 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34264 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$128 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1472 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34272 + i32.const 0 + i32.store + i32.const 35840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34272 + i32.const 35844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34264 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34264 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34264 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $start:for + (local $0 i32) + (local $1 i32) + (local $2 i32) + loop $for-loop|0 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + end + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $for-loop|01 + local.get $0 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|01 + end + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|02 + local.get $0 + i32.const 10 + i32.ne + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|02 + end + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 39 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $for-loop|04 + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + br_if $for-loop|04 + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|06 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $for-loop|06 + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|07 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|07 + end + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|09 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $0 + i32.const 2 + i32.ge_s + if + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 10 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.add + local.get $2 + local.get $0 + local.get $1 + i32.lt_s + select + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|09 + end + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 121 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 28 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 34264 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + call $for/Ref#constructor + local.tee $0 + i32.store + loop $for-loop|05 + local.get $0 + if + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $0 + else + global.get $~lib/memory/__stack_pointer + call $for/Ref#constructor + local.tee $0 + i32.store + end + br $for-loop|05 + end + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 137 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + call $for/Ref#constructor + i32.store + global.get $~lib/memory/__stack_pointer + call $for/Ref#constructor + local.tee $0 + i32.store + loop $for-loop|08 + call $for/Ref#constructor + if + block $for-break06 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $0 + br $for-break06 + end + global.get $~lib/memory/__stack_pointer + call $for/Ref#constructor + local.tee $0 + i32.store + br $for-loop|08 + end + end + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 157 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 158 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + return + end + i32.const 34288 + i32.const 34336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $for/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $for/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + call $start:for + ) + (func $for/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34288 + i32.const 34336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/for.ts b/tests/compiler/for.ts index 565bbd564f..f58eff9f2d 100644 --- a/tests/compiler/for.ts +++ b/tests/compiler/for.ts @@ -161,3 +161,5 @@ function testRefAutorelease(): void { ran = false; testRefAutorelease(); assert(ran); + +__collect(); diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat deleted file mode 100644 index 3ea1d01e04..0000000000 --- a/tests/compiler/for.untouched.wat +++ /dev/null @@ -1,2492 +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))) - (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_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s\00") - (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (table $0 1 funcref) - (global $for/ran (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 208)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $for/testInitExpression - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - i32.const 10 - i32.lt_s - local.set $1 - local.get $1 - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $for/testInitStatement - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - i32.const 10 - i32.lt_s - local.set $1 - local.get $1 - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $for/testEmpty - (local $0 i32) - (local $1 i32) - i32.const 10 - local.set $0 - loop $for-loop|0 - local.get $0 - i32.const 0 - i32.gt_s - local.set $1 - local.get $1 - if - nop - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 29 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $for/testConditionOmitted - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - block $for-break0 - loop $for-loop|0 - i32.const 1 - local.set $1 - local.get $1 - if - local.get $0 - i32.const 10 - i32.eq - if - br $for-break0 - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $for/testAllOmitted - (local $0 i32) - (local $1 i32) - i32.const 10 - local.set $0 - block $for-break0 - loop $for-loop|0 - i32.const 1 - local.set $1 - local.get $1 - if - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.eq - if - br $for-break0 - end - br $for-loop|0 - end - end - end - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $for/testAlwaysTrue - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - block $for-break0 - loop $for-loop|0 - i32.const 1 - local.set $1 - local.get $1 - if - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.eq - if - br $for-break0 - end - br $for-loop|0 - end - end - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $for/testAlwaysFalse - i32.const 0 - drop - i32.const 1 - global.set $for/ran - ) - (func $for/testAlwaysContinues - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - i32.const 10 - i32.lt_s - local.set $1 - local.get $1 - if - block $for-continue|0 - br $for-continue|0 - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $for/testAlwaysBreaks - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - block $for-break0 - loop $for-loop|0 - local.get $0 - i32.const 10 - i32.lt_s - local.set $1 - local.get $1 - if - br $for-break0 - end - end - end - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 89 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $for/testAlwaysReturns - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - i32.const 10 - i32.lt_s - local.set $1 - local.get $1 - if - i32.const 1 - global.set $for/ran - return - end - end - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 101 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $for/testNestedContinue - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.set $0 - i32.const 0 - local.set $1 - i32.const 0 - local.set $2 - loop $for-loop|0 - local.get $0 - i32.const 10 - i32.lt_s - local.set $3 - local.get $3 - if - block $for-continue|0 - local.get $0 - i32.const 2 - i32.lt_s - if - br $for-continue|0 - end - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 10 - i32.lt_s - local.set $4 - local.get $4 - if - block $for-continue|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-continue|1 - end - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 28 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 112 - i32.const 64 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $for/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $for/testRef - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.set $0 - i32.const 0 - call $for/Ref#constructor - local.set $1 - loop $for-loop|0 - local.get $1 - local.set $2 - local.get $2 - if - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.eq - if - i32.const 0 - local.tee $3 - local.get $1 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $3 - local.set $1 - else - i32.const 0 - call $for/Ref#constructor - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - local.set $1 - end - br $for-loop|0 - end - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 137 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 138 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - local.get $1 - call $~lib/rt/pure/__release - ) - (func $for/getRef (result i32) - i32.const 0 - call $for/Ref#constructor - ) - (func $for/testRefAutorelease - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.set $0 - i32.const 0 - call $for/Ref#constructor - local.set $1 - call $for/getRef - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - block $for-break0 - loop $for-loop|0 - call $for/getRef - local.tee $2 - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - if - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.eq - if - i32.const 0 - local.tee $2 - local.get $1 - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - br $for-break0 - end - call $for/getRef - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - local.set $1 - br $for-loop|0 - end - end - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 157 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 158 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $for/ran - local.get $1 - call $~lib/rt/pure/__release - ) - (func $start:for - i32.const 0 - global.set $for/ran - call $for/testInitExpression - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testInitStatement - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testEmpty - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testConditionOmitted - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testAllOmitted - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 54 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testAlwaysTrue - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testAlwaysFalse - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 76 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testAlwaysContinues - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 85 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testAlwaysBreaks - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 94 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testAlwaysReturns - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testNestedContinue - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 127 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testRef - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran - call $for/testRefAutorelease - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:for - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/function-call.debug.wat b/tests/compiler/function-call.debug.wat new file mode 100644 index 0000000000..d533f74061 --- /dev/null +++ b/tests/compiler/function-call.debug.wat @@ -0,0 +1,2794 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $function-call/fnVoid (mut i32) (i32.const 32)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $function-call/faVoid (mut i32) (i32.const 64)) + (global $function-call/fnRet (mut i32) (i32.const 96)) + (global $function-call/faRet (mut i32) (i32.const 192)) + (global $function-call/fnThis (mut i32) (i32.const 224)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $function-call/foo (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 736)) + (global $~lib/memory/__data_end i32 (i32.const 780)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33548)) + (global $~lib/memory/__heap_base i32 (i32.const 33548)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $7 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\t\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 736) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (table $0 9 9 funcref) + (elem $0 (i32.const 1) $start:function-call~anonymous|0 $start:function-call~anonymous|1 $start:function-call~anonymous|2 $start:function-call~anonymous|3 $start:function-call~fn2|4 $function-call/Foo#fnVoid $function-call/Foo#fnThis $function-call/Foo#fnRet) + (export "memory" (memory $0)) + (start $~start) + (func $start:function-call~anonymous|0 + ) + (func $start:function-call~anonymous|1 + ) + (func $start:function-call~anonymous|2 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $start:function-call~anonymous|3 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $start:function-call~fn2|4 (param $this i32) (result i32) + local.get $this + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 448 + i32.const 512 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 320 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 256 + i32.const 592 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 256 + i32.const 320 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $function-call/Foo#fnVoid (param $this i32) + ) + (func $function-call/Foo#fnThis (param $this i32) (result i32) + local.get $this + return + ) + (func $function-call/Foo#fnRet (param $this i32) (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $function-call/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 448 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28this:i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28this:i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:i32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28this:function-call/Foo%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28this:function-call/Foo%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:function-call/Foo%29=>void>#__visit + ) + (func $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32> + block $~lib/function/Function<%28this:function-call/Foo%29=>void> + block $function-call/Foo + block $~lib/function/Function<%28this:i32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28this:i32%29=>i32> $function-call/Foo $~lib/function/Function<%28this:function-call/Foo%29=>void> $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:i32%29=>i32>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:function-call/Foo%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>~visit + return + end + unreachable + ) + (func $~start + call $start:function-call + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33568 + i32.const 33616 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $function-call/Foo#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:function-call + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $function-call/fnVoid + i32.load + call_indirect (type $2) + i32.const 0 + global.set $~argumentsLength + global.get $function-call/faVoid + i32.load + call_indirect (type $2) + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + global.get $function-call/fnRet + i32.load + call_indirect (type $4) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 3 + i32.const 2 + global.set $~argumentsLength + global.get $function-call/faRet + i32.load + call_indirect (type $4) + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + global.set $~argumentsLength + global.get $function-call/fnThis + i32.load + call_indirect (type $0) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $function-call/Foo#constructor + global.set $function-call/foo + global.get $function-call/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + global.set $~argumentsLength + i32.const 656 + i32.load + call_indirect (type $3) + i32.const 1 + i32.const 0 + global.set $~argumentsLength + i32.const 688 + i32.load + call_indirect (type $0) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $function-call/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + i32.const 720 + i32.load + call_indirect (type $6) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28this:i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28this:i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28this:function-call/Foo%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28this:function-call/Foo%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/function-call.json b/tests/compiler/function-call.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/function-call.json +++ b/tests/compiler/function-call.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.optimized.wat deleted file mode 100644 index b83d0ceef2..0000000000 --- a/tests/compiler/function-call.optimized.wat +++ /dev/null @@ -1,182 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1056) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\02") - (data (i32.const 1088) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\03") - (data (i32.const 1120) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s") - (data (i32.const 1168) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\04") - (data (i32.const 1200) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\05") - (data (i32.const 1232) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\06") - (data (i32.const 1264) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\07") - (data (i32.const 1296) "\08\00\00\00\01\00\00\00\08\00\00\00\08\00\00\00\08") - (table $0 9 funcref) - (elem (i32.const 1) $start:function-call~anonymous|0 $start:function-call~anonymous|0 $start:function-call~anonymous|2 $start:function-call~anonymous|2 $start:function-call~fn2 $function-call/Foo#fnVoid $start:function-call~fn2 $function-call/Foo#fnRet) - (global $function-call/foo (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $start:function-call~anonymous|0 - nop - ) - (func $start:function-call~anonymous|2 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $start:function-call~fn2 (param $0 i32) (result i32) - local.get $0 - ) - (func $function-call/Foo#fnVoid (param $0 i32) - nop - ) - (func $function-call/Foo#fnRet (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 - local.get $2 - i32.add - ) - (func $start:function-call - (local $0 i32) - (local $1 i32) - i32.const 1040 - i32.load - call_indirect (type $none_=>_none) - i32.const 1072 - i32.load - call_indirect (type $none_=>_none) - i32.const 1 - i32.const 2 - i32.const 1104 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1136 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 3 - i32.const 1184 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1136 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1216 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1136 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1360 - memory.size - local.tee $1 - i32.const 16 - i32.shl - local.tee $0 - i32.gt_u - if - local.get $1 - i32.const 66895 - local.get $0 - i32.sub - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $1 - local.get $0 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - i32.const 1328 - i32.const 16 - i32.store - i32.const 1332 - i32.const 1 - i32.store - i32.const 1336 - i32.const 6 - i32.store - i32.const 1340 - i32.const 0 - i32.store - i32.const 1344 - global.set $function-call/foo - i32.const 1344 - i32.const 1248 - i32.load - call_indirect (type $i32_=>_none) - i32.const 1 - i32.const 1280 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1136 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $function-call/foo - i32.const 1 - i32.const 2 - i32.const 1312 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1136 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:function-call - ) -) diff --git a/tests/compiler/function-call.release.wat b/tests/compiler/function-call.release.wat new file mode 100644 index 0000000000..fa80a471b8 --- /dev/null +++ b/tests/compiler/function-call.release.wat @@ -0,0 +1,1653 @@ +(module + (type $0 (func)) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $function-call/foo (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34572)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\04\00\00\00\08\00\00\00\02") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\05\00\00\00\08\00\00\00\03") + (data $3 (i32.const 1132) "<") + (data $3.1 (i32.const 1144) "\02\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s") + (data $4 (i32.const 1196) "\1c") + (data $4.1 (i32.const 1208) "\05\00\00\00\08\00\00\00\04") + (data $5 (i32.const 1228) "\1c") + (data $5.1 (i32.const 1240) "\06\00\00\00\08\00\00\00\05") + (data $6 (i32.const 1260) "<") + (data $6.1 (i32.const 1272) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $7 (i32.const 1324) "<") + (data $7.1 (i32.const 1336) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $10 (i32.const 1452) "<") + (data $10.1 (i32.const 1464) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $11 (i32.const 1516) ",") + (data $11.1 (i32.const 1528) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $13 (i32.const 1596) "<") + (data $13.1 (i32.const 1608) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $14 (i32.const 1660) "\1c") + (data $14.1 (i32.const 1672) "\08\00\00\00\08\00\00\00\06") + (data $15 (i32.const 1692) "\1c") + (data $15.1 (i32.const 1704) "\06\00\00\00\08\00\00\00\07") + (data $16 (i32.const 1724) "\1c") + (data $16.1 (i32.const 1736) "\t\00\00\00\08\00\00\00\08") + (data $17 (i32.const 1760) "\n\00\00\00 \00\00\00 \00\00\00 ") + (data $17.1 (i32.const 1792) " ") + (table $0 9 9 funcref) + (elem $0 (i32.const 1) $start:function-call~anonymous|0 $start:function-call~anonymous|0 $start:function-call~anonymous|2 $start:function-call~anonymous|2 $start:function-call~fn2|4 $function-call/Foo#fnVoid $start:function-call~fn2|4 $function-call/Foo#fnRet) + (export "memory" (memory $0)) + (start $~start) + (func $start:function-call~anonymous|0 + ) + (func $start:function-call~anonymous|2 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $start:function-call~fn2|4 (param $0 i32) (result i32) + i32.const 1 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $function-call/foo + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$115 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34572 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$115 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1760 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1764 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1616 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34576 + i32.const 0 + i32.store + i32.const 36144 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34576 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34576 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34576 + i32.const 36148 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34576 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34572 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34572 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34572 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $function-call/Foo#fnVoid (param $0 i32) + ) + (func $function-call/Foo#fnRet (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 3 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $function-call/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $function-call/Foo $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1804 + i32.lt_s + if + i32.const 34592 + i32.const 34640 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1804 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1056 + i32.load + call_indirect (type $0) + i32.const 1088 + i32.load + call_indirect (type $0) + i32.const 1 + i32.const 2 + i32.const 1120 + i32.load + call_indirect (type $3) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 3 + i32.const 1216 + i32.load + call_indirect (type $3) + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1248 + i32.load + call_indirect (type $1) + drop + memory.size + i32.const 16 + i32.shl + i32.const 34572 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1804 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1804 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $function-call/foo + global.get $~lib/memory/__stack_pointer + global.get $function-call/foo + local.tee $0 + i32.store + local.get $0 + i32.const 1680 + i32.load + call_indirect (type $2) + i32.const 1 + i32.const 1712 + i32.load + call_indirect (type $1) + drop + global.get $~lib/memory/__stack_pointer + global.get $function-call/foo + local.tee $0 + i32.store + local.get $0 + i32.const 1 + i32.const 2 + i32.const 1744 + i32.load + call_indirect (type $5) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34592 + i32.const 34640 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/function-call.untouched.wat b/tests/compiler/function-call.untouched.wat deleted file mode 100644 index 9c92a36153..0000000000 --- a/tests/compiler/function-call.untouched.wat +++ /dev/null @@ -1,310 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 48) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 80) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 112) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s\00") - (data (i32.const 160) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 192) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") - (data (i32.const 224) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") - (data (i32.const 256) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00") - (data (i32.const 288) "\08\00\00\00\01\00\00\00\08\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00") - (table $0 9 funcref) - (elem (i32.const 1) $start:function-call~anonymous|0 $start:function-call~anonymous|1 $start:function-call~anonymous|2 $start:function-call~anonymous|3 $start:function-call~fn2 $function-call/Foo#fnVoid $function-call/Foo#fnThis $function-call/Foo#fnRet) - (global $function-call/fnVoid (mut i32) (i32.const 32)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $function-call/faVoid (mut i32) (i32.const 64)) - (global $function-call/fnRet (mut i32) (i32.const 96)) - (global $function-call/faRet (mut i32) (i32.const 176)) - (global $function-call/fnThis (mut i32) (i32.const 208)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $function-call/foo (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 312)) - (export "memory" (memory $0)) - (start $~start) - (func $start:function-call~anonymous|0 - nop - ) - (func $start:function-call~anonymous|1 - nop - ) - (func $start:function-call~anonymous|2 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $start:function-call~anonymous|3 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $start:function-call~fn2 (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $function-call/Foo#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 6 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $function-call/Foo#fnVoid (param $0 i32) - nop - ) - (func $function-call/Foo#fnThis (param $0 i32) (result i32) - local.get $0 - ) - (func $function-call/Foo#fnRet (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 - local.get $2 - i32.add - ) - (func $start:function-call - i32.const 0 - global.set $~argumentsLength - global.get $function-call/fnVoid - i32.load - call_indirect (type $none_=>_none) - i32.const 0 - global.set $~argumentsLength - global.get $function-call/faVoid - i32.load - call_indirect (type $none_=>_none) - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - global.get $function-call/fnRet - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 3 - i32.const 2 - global.set $~argumentsLength - global.get $function-call/faRet - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - global.set $~argumentsLength - global.get $function-call/fnThis - i32.load - call_indirect (type $i32_=>_i32) - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - call $function-call/Foo#constructor - global.set $function-call/foo - global.get $function-call/foo - i32.const 0 - global.set $~argumentsLength - i32.const 240 - i32.load - call_indirect (type $i32_=>_none) - i32.const 1 - i32.const 0 - global.set $~argumentsLength - i32.const 272 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $function-call/foo - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - i32.const 304 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:function-call - ) -) diff --git a/tests/compiler/function-expression-error.json b/tests/compiler/function-expression-error.json new file mode 100644 index 0000000000..6476b63d8e --- /dev/null +++ b/tests/compiler/function-expression-error.json @@ -0,0 +1,8 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS1110: Type expected.", "missingReturnType", + "EOF" + ] +} diff --git a/tests/compiler/function-expression-error.ts b/tests/compiler/function-expression-error.ts new file mode 100644 index 0000000000..310b903961 --- /dev/null +++ b/tests/compiler/function-expression-error.ts @@ -0,0 +1,5 @@ +// see: https://github.com/AssemblyScript/assemblyscript/issues/2036 + +const missingReturnType: u32 = (() => 42).index; + +ERROR("EOF"); diff --git a/tests/compiler/function-expression.debug.wat b/tests/compiler/function-expression.debug.wat new file mode 100644 index 0000000000..15aa15e36f --- /dev/null +++ b/tests/compiler/function-expression.debug.wat @@ -0,0 +1,3248 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (result i32))) + (type $4 (func)) + (type $5 (func (param i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $function-expression/f1 (mut i32) (i32.const 32)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $function-expression/f2 (mut i32) (i32.const 128)) + (global $function-expression/f3 (mut i32) (i32.const 160)) + (global $function-expression/f4 (mut i32) (i32.const 192)) + (global $function-expression/globalFunc (mut i32) (i32.const 480)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1088)) + (global $~lib/memory/__data_end i32 (i32.const 1132)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33900)) + (global $~lib/memory/__heap_base i32 (i32.const 33900)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") + (data $2 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 236) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 268) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 300) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 364) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 396) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 428) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 460) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 492) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 524) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 556) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $17 (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 688) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 720) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 748) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 812) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 864) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 892) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 956) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 988) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 1020) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 1052) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 1088) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 20 20 funcref) + (elem $0 (i32.const 1) $start:function-expression~anonymous|0 $start:function-expression~anonymous|1 $start:function-expression~someName|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|6 $function-expression/testOmittedReturn1~anonymous|0 $function-expression/testOmittedReturn2~anonymous|0 $function-expression/testOmittedReturn3~anonymous|0 $function-expression/testNullable~anonymous|0 $start:function-expression~anonymous|7~anonymous|0 $start:function-expression~anonymous|7 $function-expression/testLocal~anonymous|0~anonymous|0 $function-expression/testLocal~anonymous|0 $function-expression/testField~anonymous|0~anonymous|0 $function-expression/testField~anonymous|0 $function-expression/semanticallyAnonymous~fnDecl $function-expression/semanticallyAnonymous~fnDecl|0) + (export "semanticallyAnonymous" (func $function-expression/semanticallyAnonymous)) + (export "memory" (memory $0)) + (start $~start) + (func $start:function-expression~anonymous|0 (param $a i32) (result i32) + local.get $a + return + ) + (func $start:function-expression~anonymous|1 (param $a i32) (result i32) + local.get $a + return + ) + (func $start:function-expression~someName|2 + ) + (func $start:function-expression~anonymous|3 (result i32) + i32.const 1 + ) + (func $start:function-expression~anonymous|4 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + ) + (func $function-expression/testOmitted (param $fn i32) (result i32) + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $2) + return + ) + (func $start:function-expression~anonymous|5 (param $a i32) (param $$1 i32) (result i32) + local.get $a + ) + (func $start:function-expression~anonymous|6 (param $$0 i32) (param $$1 i32) (result i32) + i32.const 42 + ) + (func $function-expression/testOmittedReturn1~anonymous|0 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + ) + (func $function-expression/testOmittedReturn1 (result i32) + i32.const 320 + return + ) + (func $function-expression/testOmittedReturn2~anonymous|0 (param $a i32) (param $$1 i32) (result i32) + local.get $a + ) + (func $function-expression/testOmittedReturn2 (result i32) + i32.const 352 + return + ) + (func $function-expression/testOmittedReturn3~anonymous|0 (param $$0 i32) (param $$1 i32) (result i32) + i32.const 42 + ) + (func $function-expression/testOmittedReturn3 (result i32) + i32.const 384 + return + ) + (func $function-expression/testNullable~anonymous|0 (result i32) + i32.const 1 + ) + (func $function-expression/testNullable (param $b i32) (result i32) + local.get $b + if + i32.const 416 + return + else + i32.const 0 + return + end + unreachable + ) + (func $start:function-expression~anonymous|7~anonymous|0 (param $x i32) (result i32) + i32.const 24 + local.get $x + i32.add + return + ) + (func $function-expression/testGlobal + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $function-expression/globalFunc + i32.load + call_indirect (type $3) + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.load + call_indirect (type $0) + i32.const 25 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $function-expression/testLocal~anonymous|0~anonymous|0 (param $x i32) (result i32) + i32.const 24 + local.get $x + i32.add + return + ) + (func $function-expression/testLocal + (local $localFunc i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 544 + local.tee $localFunc + i32.store + i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $localFunc + i32.load + call_indirect (type $3) + local.tee $1 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $0) + i32.const 25 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 768 + i32.const 832 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 640 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 576 + i32.const 912 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 576 + i32.const 640 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $function-expression/FieldClass#set:fieldFunc (param $this i32) (param $fieldFunc i32) + local.get $this + local.get $fieldFunc + i32.store + local.get $this + local.get $fieldFunc + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $function-expression/testField~anonymous|0~anonymous|0 (param $x i32) (result i32) + i32.const 24 + local.get $x + i32.add + return + ) + (func $function-expression/FieldClass#get:fieldFunc (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $function-expression/semanticallyAnonymous~fnDecl (param $val i32) (result i32) + local.get $val + return + ) + (func $function-expression/semanticallyAnonymous~fnDecl|0 (param $val i32) (result i32) + local.get $val + return + ) + (func $function-expression/semanticallyAnonymous + (local $fnDecl i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1040 + local.tee $fnDecl + i32.store + local.get $fnDecl + drop + local.get $fnDecl + i32.const 1072 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 768 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 576 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%29=>%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>%28i32%29=>i32>#__visit + ) + (func $function-expression/FieldClass~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $function-expression/FieldClass + block $~lib/function/Function<%28%29=>%28i32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28%29=>i32> + block $~lib/function/Function<%28%29=>void> + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28%29=>%28i32%29=>i32> $function-expression/FieldClass $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>%28i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $function-expression/FieldClass~visit + return + end + unreachable + ) + (func $~start + call $start:function-expression + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33920 + i32.const 33968 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $function-expression/FieldClass#constructor (param $this i32) (param $fieldFunc i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $fieldFunc + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $function-expression/FieldClass#set:fieldFunc + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $function-expression/testField + (local $fieldInst i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1008 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $function-expression/FieldClass#constructor + local.tee $fieldInst + i32.store offset=4 + i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fieldInst + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $function-expression/FieldClass#get:fieldFunc + i32.load + call_indirect (type $3) + local.tee $1 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $0) + i32.const 25 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:function-expression + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + i32.const 1 + global.set $~argumentsLength + global.get $function-expression/f1 + i32.load + call_indirect (type $0) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 1 + global.set $~argumentsLength + global.get $function-expression/f2 + i32.load + call_indirect (type $0) + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $~argumentsLength + global.get $function-expression/f3 + i32.load + call_indirect (type $4) + i32.const 0 + global.set $~argumentsLength + global.get $function-expression/f4 + i32.load + call_indirect (type $3) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 224 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $function-expression/testOmitted + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 256 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $function-expression/testOmitted + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 288 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $function-expression/testOmitted + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + call $function-expression/testOmittedReturn1 + i32.load + call_indirect (type $2) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + call $function-expression/testOmittedReturn2 + i32.load + call_indirect (type $2) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + call $function-expression/testOmittedReturn3 + i32.load + call_indirect (type $2) + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $function-expression/testNullable + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 45 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $function-expression/testGlobal + call $function-expression/testLocal + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 688 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 720 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 864 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $function-expression/testField + call $function-expression/semanticallyAnonymous + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>%28i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:function-expression~anonymous|7 (result i32) + (local $myFunc i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 448 + local.tee $myFunc + i32.store + local.get $myFunc + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $function-expression/testLocal~anonymous|0 (result i32) + (local $myFunc i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 512 + local.tee $myFunc + i32.store + local.get $myFunc + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $function-expression/testField~anonymous|0 (result i32) + (local $myFunc i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 976 + local.tee $myFunc + i32.store + local.get $myFunc + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) +) diff --git a/tests/compiler/function-expression.json b/tests/compiler/function-expression.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/function-expression.json +++ b/tests/compiler/function-expression.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat deleted file mode 100644 index 9384556cdd..0000000000 --- a/tests/compiler/function-expression.optimized.wat +++ /dev/null @@ -1,302 +0,0 @@ -(module - (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_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1056) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") - (data (i32.const 1120) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\02") - (data (i32.const 1152) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\03") - (data (i32.const 1184) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\04") - (data (i32.const 1216) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\05") - (data (i32.const 1248) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\06") - (data (i32.const 1280) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\07") - (data (i32.const 1312) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\08") - (data (i32.const 1344) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\t") - (data (i32.const 1376) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\n") - (data (i32.const 1408) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\0b") - (data (i32.const 1440) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\0c") - (data (i32.const 1472) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\0d") - (data (i32.const 1504) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\0e") - (data (i32.const 1536) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\0f") - (data (i32.const 1568) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\10") - (data (i32.const 1600) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\11") - (table $0 18 funcref) - (elem (i32.const 1) $start:function-expression~anonymous|0 $start:function-expression~anonymous|0 $start:function-expression~someName $start:function-expression~anonymous|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|2 $function-expression/testGlobal~anonymous|0~anonymous|0 $function-expression/testGlobal~anonymous|0 $function-expression/testGlobal~anonymous|0~anonymous|0 $function-expression/testLocal~anonymous|0 $function-expression/testGlobal~anonymous|0~anonymous|0 $function-expression/testField~anonymous|0) - (export "memory" (memory $0)) - (start $~start) - (func $start:function-expression~anonymous|0 (param $0 i32) (result i32) - local.get $0 - ) - (func $start:function-expression~someName - nop - ) - (func $start:function-expression~anonymous|2 (result i32) - i32.const 1 - ) - (func $start:function-expression~anonymous|3 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $function-expression/testOmitted (param $0 i32) (result i32) - i32.const 1 - i32.const 2 - local.get $0 - i32.load - call_indirect (type $i32_i32_=>_i32) - ) - (func $start:function-expression~anonymous|4 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - ) - (func $start:function-expression~anonymous|5 (param $0 i32) (param $1 i32) (result i32) - i32.const 42 - ) - (func $function-expression/testGlobal~anonymous|0~anonymous|0 (param $0 i32) (result i32) - local.get $0 - i32.const 24 - i32.add - ) - (func $function-expression/testGlobal~anonymous|0 (result i32) - i32.const 1456 - ) - (func $function-expression/testLocal~anonymous|0 (result i32) - i32.const 1520 - ) - (func $function-expression/testField~anonymous|0 (result i32) - i32.const 1584 - ) - (func $start:function-expression - (local $0 i32) - (local $1 i32) - i32.const 1 - i32.const 1040 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 1136 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1168 - i32.load - call_indirect (type $none_=>_none) - i32.const 1200 - i32.load - call_indirect (type $none_=>_i32) - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1232 - call $function-expression/testOmitted - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1264 - call $function-expression/testOmitted - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1296 - call $function-expression/testOmitted - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 1328 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 1360 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 1392 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1488 - i32.load - call_indirect (type $none_=>_i32) - i32.load - call_indirect (type $i32_=>_i32) - i32.const 25 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 57 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1552 - i32.load - call_indirect (type $none_=>_i32) - i32.load - call_indirect (type $i32_=>_i32) - i32.const 25 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1664 - memory.size - local.tee $1 - i32.const 16 - i32.shl - local.tee $0 - i32.gt_u - if - local.get $1 - i32.const 67199 - local.get $0 - i32.sub - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $1 - local.get $0 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - i32.const 1632 - i32.const 16 - i32.store - i32.const 1636 - i32.const 1 - i32.store - i32.const 1640 - i32.const 8 - i32.store - i32.const 1644 - i32.const 4 - i32.store - i32.const 1648 - i32.const 1616 - i32.store - i32.const 1 - i32.const 1648 - i32.load - i32.load - call_indirect (type $none_=>_i32) - i32.load - call_indirect (type $i32_=>_i32) - i32.const 25 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:function-expression - ) -) diff --git a/tests/compiler/function-expression.release.wat b/tests/compiler/function-expression.release.wat new file mode 100644 index 0000000000..9272f39796 --- /dev/null +++ b/tests/compiler/function-expression.release.wat @@ -0,0 +1,2009 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func)) + (type $4 (func (param i32))) + (type $5 (func (param i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34924)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") + (data $1 (i32.const 1068) "<") + (data $1.1 (i32.const 1080) "\02\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") + (data $2 (i32.const 1132) "\1c") + (data $2.1 (i32.const 1144) "\04\00\00\00\08\00\00\00\02") + (data $3 (i32.const 1164) "\1c") + (data $3.1 (i32.const 1176) "\05\00\00\00\08\00\00\00\03") + (data $4 (i32.const 1196) "\1c") + (data $4.1 (i32.const 1208) "\06\00\00\00\08\00\00\00\04") + (data $5 (i32.const 1228) "\1c") + (data $5.1 (i32.const 1240) "\07\00\00\00\08\00\00\00\05") + (data $6 (i32.const 1260) "\1c") + (data $6.1 (i32.const 1272) "\07\00\00\00\08\00\00\00\06") + (data $7 (i32.const 1292) "\1c") + (data $7.1 (i32.const 1304) "\07\00\00\00\08\00\00\00\07") + (data $8 (i32.const 1324) "\1c") + (data $8.1 (i32.const 1336) "\07\00\00\00\08\00\00\00\08") + (data $9 (i32.const 1356) "\1c") + (data $9.1 (i32.const 1368) "\07\00\00\00\08\00\00\00\t") + (data $10 (i32.const 1388) "\1c") + (data $10.1 (i32.const 1400) "\07\00\00\00\08\00\00\00\n") + (data $11 (i32.const 1420) "\1c") + (data $11.1 (i32.const 1432) "\06\00\00\00\08\00\00\00\0b") + (data $12 (i32.const 1452) "\1c") + (data $12.1 (i32.const 1464) "\04\00\00\00\08\00\00\00\0c") + (data $13 (i32.const 1484) "\1c") + (data $13.1 (i32.const 1496) "\08\00\00\00\08\00\00\00\r") + (data $14 (i32.const 1516) "\1c") + (data $14.1 (i32.const 1528) "\04\00\00\00\08\00\00\00\0e") + (data $15 (i32.const 1548) "\1c") + (data $15.1 (i32.const 1560) "\08\00\00\00\08\00\00\00\0f") + (data $16 (i32.const 1580) "<") + (data $16.1 (i32.const 1592) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $17 (i32.const 1644) "<") + (data $17.1 (i32.const 1656) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $20 (i32.const 1772) "<") + (data $20.1 (i32.const 1784) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $21 (i32.const 1836) ",") + (data $21.1 (i32.const 1848) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $23 (i32.const 1916) "<") + (data $23.1 (i32.const 1928) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $24 (i32.const 1980) "\1c") + (data $24.1 (i32.const 1992) "\04\00\00\00\08\00\00\00\10") + (data $25 (i32.const 2012) "\1c") + (data $25.1 (i32.const 2024) "\08\00\00\00\08\00\00\00\11") + (data $26 (i32.const 2044) "\1c") + (data $26.1 (i32.const 2056) "\04\00\00\00\08\00\00\00\12") + (data $27 (i32.const 2076) "\1c") + (data $27.1 (i32.const 2088) "\04\00\00\00\08\00\00\00\13") + (data $28 (i32.const 2112) "\n\00\00\00 \00\00\00 \00\00\00 ") + (table $0 20 20 funcref) + (elem $0 (i32.const 1) $start:function-expression~anonymous|0 $start:function-expression~anonymous|0 $start:function-expression~someName|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|6 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|6 $start:function-expression~anonymous|3 $start:function-expression~anonymous|7~anonymous|0 $start:function-expression~anonymous|7 $start:function-expression~anonymous|7~anonymous|0 $function-expression/testLocal~anonymous|0 $start:function-expression~anonymous|7~anonymous|0 $function-expression/testField~anonymous|0 $start:function-expression~anonymous|0 $start:function-expression~anonymous|0) + (export "semanticallyAnonymous" (func $function-expression/semanticallyAnonymous)) + (export "memory" (memory $0)) + (start $~start) + (func $start:function-expression~anonymous|0 (param $0 i32) (result i32) + local.get $0 + ) + (func $start:function-expression~someName|2 + ) + (func $start:function-expression~anonymous|3 (result i32) + i32.const 1 + ) + (func $start:function-expression~anonymous|4 (param $0 i32) (param $1 i32) (result i32) + i32.const 3 + ) + (func $start:function-expression~anonymous|5 (param $0 i32) (param $1 i32) (result i32) + i32.const 1 + ) + (func $start:function-expression~anonymous|6 (param $0 i32) (param $1 i32) (result i32) + i32.const 42 + ) + (func $start:function-expression~anonymous|7~anonymous|0 (param $0 i32) (result i32) + local.get $0 + i32.const 24 + i32.add + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1792 + call $~lib/rt/itcms/__visit + i32.const 1600 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1664 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$133 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34924 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$133 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2112 + i32.load + i32.gt_u + if + i32.const 1792 + i32.const 1856 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 2116 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1936 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1936 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1936 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1936 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1936 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1936 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34928 + i32.const 0 + i32.store + i32.const 36496 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34928 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34928 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34928 + i32.const 36500 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34928 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34924 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1664 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34924 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34924 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1936 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$71 + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $1 + i32.load offset=1568 + local.get $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $0 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $1 + local.get $0 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1936 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $2 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $2 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $1 + local.get $2 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $2 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 9 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store align=1 + local.get $0 + ) + (func $function-expression/semanticallyAnonymous + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + if + i32.const 34944 + i32.const 34992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2064 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $function-expression/FieldClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $function-expression/FieldClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + if + i32.const 34944 + i32.const 34992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:function-expression + ) + (func $start:function-expression + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + i32.const 1056 + i32.load + call_indirect (type $2) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 1152 + i32.load + call_indirect (type $2) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1184 + i32.load + call_indirect (type $3) + i32.const 1216 + i32.load + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + i32.const 1 + i32.const 2 + i32.const 1248 + i32.load + call_indirect (type $1) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store + i32.const 1 + i32.const 2 + i32.const 1280 + i32.load + call_indirect (type $1) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1312 + i32.store + i32.const 1 + i32.const 2 + i32.const 1312 + i32.load + call_indirect (type $1) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 1344 + i32.load + call_indirect (type $1) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 1376 + i32.load + call_indirect (type $1) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 1408 + i32.load + call_indirect (type $1) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1504 + i32.load + call_indirect (type $0) + local.tee $0 + i32.store + i32.const 1 + local.get $0 + i32.load + call_indirect (type $2) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.load + call_indirect (type $0) + local.tee $0 + i32.store offset=4 + i32.const 1 + local.get $0 + i32.load + call_indirect (type $2) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + memory.size + i32.const 16 + i32.shl + i32.const 34924 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1716 + i32.const 1712 + i32.store + i32.const 1720 + i32.const 1712 + i32.store + i32.const 1712 + global.set $~lib/rt/itcms/pinSpace + i32.const 1748 + i32.const 1744 + i32.store + i32.const 1752 + i32.const 1744 + i32.store + i32.const 1744 + global.set $~lib/rt/itcms/toSpace + i32.const 1892 + i32.const 1888 + i32.store + i32.const 1896 + i32.const 1888 + i32.store + i32.const 1888 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store offset=8 + local.get $1 + i32.const 2032 + i32.store + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + i32.const 2016 + i32.load + i32.const 3 + i32.and + i32.eq + if + local.get $1 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + i32.const 2012 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + i32.const 2012 + call $~lib/rt/itcms/Object#makeGray + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + i32.load + call_indirect (type $0) + local.tee $0 + i32.store offset=8 + i32.const 1 + local.get $0 + i32.load + call_indirect (type $2) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + call $function-expression/semanticallyAnonymous + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34944 + i32.const 34992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $start:function-expression~anonymous|7 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + if + i32.const 34944 + i32.const 34992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1472 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1472 + ) + (func $function-expression/testLocal~anonymous|0 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + if + i32.const 34944 + i32.const 34992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1536 + ) + (func $function-expression/testField~anonymous|0 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + if + i32.const 34944 + i32.const 34992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2000 + ) +) diff --git a/tests/compiler/function-expression.ts b/tests/compiler/function-expression.ts index 8fe0fdbf2e..2b5861ab04 100644 --- a/tests/compiler/function-expression.ts +++ b/tests/compiler/function-expression.ts @@ -46,14 +46,13 @@ assert(testNullable(false) == null); // see: https://github.com/AssemblyScript/assemblyscript/issues/1289 -var globalFunc: () => (x: i32) => i32; -function testGlobal(): void { - globalFunc = (): (x:i32) => i32 => { - let myFunc = (x: i32): i32 => { - return 24 + x; - }; - return myFunc; +var globalFunc: () => (x: i32) => i32 = (): (x:i32) => i32 => { + let myFunc = (x: i32): i32 => { + return 24 + x; }; + return myFunc; +}; +function testGlobal(): void { assert(globalFunc()(1) == 25); } testGlobal(); @@ -82,3 +81,14 @@ function testField(): void { assert(fieldInst.fieldFunc()(1) == 25); } testField(); + +export function semanticallyAnonymous(): void { + function fnDecl(val: i32): i32 { + return val; + } + const exprDecl = function fnDecl(val: i32): i32 { // must not shadow + return val; + }; + assert(fnDecl != exprDecl); +} +semanticallyAnonymous(); diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat deleted file mode 100644 index c59cfba85b..0000000000 --- a/tests/compiler/function-expression.untouched.wat +++ /dev/null @@ -1,605 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (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_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 48) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") - (data (i32.const 112) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 144) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 176) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 208) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") - (data (i32.const 240) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") - (data (i32.const 272) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00") - (data (i32.const 304) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00") - (data (i32.const 336) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 368) "\08\00\00\00\01\00\00\00\06\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00") - (data (i32.const 400) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00") - (data (i32.const 432) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00") - (data (i32.const 464) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00") - (data (i32.const 496) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00") - (data (i32.const 528) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 560) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 592) "\08\00\00\00\01\00\00\00\07\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00") - (table $0 18 funcref) - (elem (i32.const 1) $start:function-expression~anonymous|0 $start:function-expression~anonymous|1 $start:function-expression~someName $start:function-expression~anonymous|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $function-expression/testOmittedReturn1~anonymous|0 $function-expression/testOmittedReturn2~anonymous|0 $function-expression/testOmittedReturn3~anonymous|0 $function-expression/testNullable~anonymous|0 $function-expression/testGlobal~anonymous|0~anonymous|0 $function-expression/testGlobal~anonymous|0 $function-expression/testLocal~anonymous|0~anonymous|0 $function-expression/testLocal~anonymous|0 $function-expression/testField~anonymous|0~anonymous|0 $function-expression/testField~anonymous|0) - (global $function-expression/f1 (mut i32) (i32.const 32)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $function-expression/f2 (mut i32) (i32.const 128)) - (global $function-expression/f3 (mut i32) (i32.const 160)) - (global $function-expression/f4 (mut i32) (i32.const 192)) - (global $function-expression/globalFunc (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 616)) - (export "memory" (memory $0)) - (start $~start) - (func $start:function-expression~anonymous|0 (param $0 i32) (result i32) - local.get $0 - ) - (func $start:function-expression~anonymous|1 (param $0 i32) (result i32) - local.get $0 - ) - (func $start:function-expression~someName - nop - ) - (func $start:function-expression~anonymous|2 (result i32) - i32.const 1 - ) - (func $start:function-expression~anonymous|3 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $function-expression/testOmitted (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - local.get $0 - i32.load - call_indirect (type $i32_i32_=>_i32) - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $start:function-expression~anonymous|4 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - ) - (func $start:function-expression~anonymous|5 (param $0 i32) (param $1 i32) (result i32) - i32.const 42 - ) - (func $function-expression/testOmittedReturn1~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $function-expression/testOmittedReturn1 (result i32) - i32.const 320 - call $~lib/rt/stub/__retain - ) - (func $function-expression/testOmittedReturn2~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - ) - (func $function-expression/testOmittedReturn2 (result i32) - i32.const 352 - call $~lib/rt/stub/__retain - ) - (func $function-expression/testOmittedReturn3~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - i32.const 42 - ) - (func $function-expression/testOmittedReturn3 (result i32) - i32.const 384 - call $~lib/rt/stub/__retain - ) - (func $function-expression/testNullable~anonymous|0 (result i32) - i32.const 1 - ) - (func $function-expression/testNullable (param $0 i32) (result i32) - local.get $0 - if - i32.const 416 - call $~lib/rt/stub/__retain - return - else - i32.const 0 - call $~lib/rt/stub/__retain - return - end - unreachable - ) - (func $function-expression/testGlobal~anonymous|0~anonymous|0 (param $0 i32) (result i32) - i32.const 24 - local.get $0 - i32.add - ) - (func $function-expression/testGlobal~anonymous|0 (result i32) - (local $0 i32) - i32.const 448 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - ) - (func $function-expression/testGlobal - (local $0 i32) - (local $1 i32) - i32.const 480 - local.tee $0 - global.get $function-expression/globalFunc - local.tee $1 - i32.ne - if - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - end - local.get $0 - global.set $function-expression/globalFunc - i32.const 1 - i32.const 0 - global.set $~argumentsLength - global.get $function-expression/globalFunc - i32.load - call_indirect (type $none_=>_i32) - local.tee $0 - local.set $1 - i32.const 1 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 25 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 57 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $function-expression/testLocal~anonymous|0~anonymous|0 (param $0 i32) (result i32) - i32.const 24 - local.get $0 - i32.add - ) - (func $function-expression/testLocal~anonymous|0 (result i32) - (local $0 i32) - i32.const 512 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - ) - (func $function-expression/testLocal - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 544 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 1 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.load - call_indirect (type $none_=>_i32) - local.tee $1 - local.set $2 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 25 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $function-expression/FieldClass#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 8 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - call $~lib/rt/stub/__retain - i32.store - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $function-expression/testField~anonymous|0~anonymous|0 (param $0 i32) (result i32) - i32.const 24 - local.get $0 - i32.add - ) - (func $function-expression/testField~anonymous|0 (result i32) - (local $0 i32) - i32.const 576 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - ) - (func $function-expression/testField - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 608 - call $function-expression/FieldClass#constructor - local.set $0 - i32.const 1 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.load - i32.load - call_indirect (type $none_=>_i32) - local.tee $1 - local.set $2 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 25 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $start:function-expression - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 1 - i32.const 1 - global.set $~argumentsLength - global.get $function-expression/f1 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 1 - global.set $~argumentsLength - global.get $function-expression/f2 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $~argumentsLength - global.get $function-expression/f3 - i32.load - call_indirect (type $none_=>_none) - i32.const 0 - global.set $~argumentsLength - global.get $function-expression/f4 - i32.load - call_indirect (type $none_=>_i32) - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 224 - call $function-expression/testOmitted - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 256 - call $function-expression/testOmitted - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 288 - call $function-expression/testOmitted - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - call $function-expression/testOmittedReturn1 - local.tee $0 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - call $function-expression/testOmittedReturn2 - local.tee $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - call $function-expression/testOmittedReturn3 - local.tee $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $function-expression/testNullable - local.tee $3 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 45 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $function-expression/testGlobal - call $function-expression/testLocal - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - call $function-expression/testField - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:function-expression - ) -) diff --git a/tests/compiler/function-inline-regressions.debug.wat b/tests/compiler/function-inline-regressions.debug.wat new file mode 100644 index 0000000000..8d0f3aa3af --- /dev/null +++ b/tests/compiler/function-inline-regressions.debug.wat @@ -0,0 +1,84 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (result i32))) + (type $4 (func (param i32 i32 i32) (result i32))) + (global $function-inline-regressions/struct i32 (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "baz" (func $function-inline-regressions/baz)) + (export "foo" (func $function-inline-regressions/foo)) + (export "memory" (memory $0)) + (func $function-inline-regressions/baz (param $v i32) + local.get $v + if + unreachable + end + ) + (func $function-inline-regressions/loadX (param $a i32) (param $b i32) (result i32) + i32.const 2 + local.get $a + i32.mul + local.get $b + i32.add + i32.load + return + ) + (func $function-inline-regressions/loadZ (result i32) + i32.const 16 + i32.load + return + ) + (func $function-inline-regressions/Struct#set:v0 (param $this i32) (param $v0 i32) + local.get $this + local.get $v0 + i32.store + ) + (func $function-inline-regressions/Struct#set:v1 (param $this i32) (param $v1 i32) + local.get $this + local.get $v1 + i32.store offset=4 + ) + (func $function-inline-regressions/Struct#set:v2 (param $this i32) (param $v2 i32) + local.get $this + local.get $v2 + i32.store offset=8 + ) + (func $function-inline-regressions/foo (param $v0 i32) (param $v1 i32) (param $v2 i32) (result i32) + (local $x i32) + (local $y i32) + (local $z i32) + local.get $v0 + i32.const 0 + call $function-inline-regressions/loadX + local.set $x + local.get $v0 + i32.const 1 + call $function-inline-regressions/loadX + local.set $y + call $function-inline-regressions/loadZ + local.set $z + local.get $z + local.get $x + i32.add + local.get $y + i32.add + call $function-inline-regressions/baz + global.get $function-inline-regressions/struct + local.get $v0 + call $function-inline-regressions/Struct#set:v0 + global.get $function-inline-regressions/struct + local.get $v1 + call $function-inline-regressions/Struct#set:v1 + global.get $function-inline-regressions/struct + local.get $v2 + call $function-inline-regressions/Struct#set:v2 + local.get $z + return + ) +) diff --git a/tests/compiler/function-inline-regressions.json b/tests/compiler/function-inline-regressions.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/function-inline-regressions.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/function-inline-regressions.release.wat b/tests/compiler/function-inline-regressions.release.wat new file mode 100644 index 0000000000..8fb2f2a946 --- /dev/null +++ b/tests/compiler/function-inline-regressions.release.wat @@ -0,0 +1,42 @@ +(module + (type $0 (func (param i32))) + (type $1 (func (param i32 i32 i32) (result i32))) + (memory $0 0) + (export "baz" (func $function-inline-regressions/baz)) + (export "foo" (func $function-inline-regressions/foo)) + (export "memory" (memory $0)) + (func $function-inline-regressions/baz (param $0 i32) + local.get $0 + if + unreachable + end + ) + (func $function-inline-regressions/foo (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.const 1 + i32.shl + local.tee $3 + i32.load offset=1 + local.get $3 + i32.load + i32.const 16 + i32.load + local.tee $3 + i32.add + i32.add + if + unreachable + end + i32.const 0 + local.get $0 + i32.store + i32.const 4 + local.get $1 + i32.store + i32.const 8 + local.get $2 + i32.store + local.get $3 + ) +) diff --git a/tests/compiler/function-inline-regressions.ts b/tests/compiler/function-inline-regressions.ts new file mode 100644 index 0000000000..32c19e274f --- /dev/null +++ b/tests/compiler/function-inline-regressions.ts @@ -0,0 +1,35 @@ +@unmanaged class Struct { + v0: u32; + v1: u32; + v2: u32; +} + +// @inline +function loadZ() : u32 { + return load(16); +} + +// @inline +function loadX(a: i32, b: i32): u32 { + return load(2 * a + b); +} + +export function baz(v: u32): void { + if (v) unreachable(); +} + +export function foo(v0: i32, v1: i32, v2: i32): u32 { + const x = loadX(v0, 0); + const y = loadX(v0, 1); + const z = loadZ(); + + baz(z + x + y); + + struct.v0 = v0; + struct.v1 = v1; + struct.v2 = v2; + + return z; +} + +const struct = changetype(0); diff --git a/tests/compiler/function-types.debug.wat b/tests/compiler/function-types.debug.wat new file mode 100644 index 0000000000..06b04a6227 --- /dev/null +++ b/tests/compiler/function-types.debug.wat @@ -0,0 +1,313 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (result i32))) + (type $2 (func (param i32 i32 i32) (result i32))) + (type $3 (func)) + (type $4 (func (param i64 i64) (result i64))) + (type $5 (func (param f64 f64) (result f64))) + (type $6 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $function-types/i32Adder (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $function-types/i64Adder (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 204)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32972)) + (global $~lib/memory/__heap_base i32 (i32.const 32972)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (table $0 5 5 funcref) + (elem $0 (i32.const 1) $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/addI32) + (export "memory" (memory $0)) + (start $~start) + (func $function-types/makeAdder~anonymous|0 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $function-types/makeAdder (result i32) + i32.const 32 + return + ) + (func $function-types/makeAdder~anonymous|0 (param $a i64) (param $b i64) (result i64) + local.get $a + local.get $b + i64.add + return + ) + (func $function-types/makeAdder (result i32) + i32.const 128 + return + ) + (func $function-types/makeAdder~anonymous|0 (param $a f64) (param $b f64) (result f64) + local.get $a + local.get $b + f64.add + return + ) + (func $function-types/makeAdder (result i32) + i32.const 160 + return + ) + (func $function-types/doAddWithFn (param $a i32) (param $b i32) (param $fn i32) (result i32) + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $0) + return + ) + (func $function-types/doAdd (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + call $function-types/makeAdder + i32.load + call_indirect (type $0) + return + ) + (func $function-types/addI32 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $function-types/makeAndAdd (param $a i32) (param $b i32) (param $adder i32) (result i32) + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $adder + i32.load + call_indirect (type $0) + return + ) + (func $~start + call $start:function-types + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 32992 + i32.const 33040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $function-types/makeAndAdd@varargs (param $a i32) (param $b i32) (param $adder i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 2 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + call $function-types/makeAdder + local.tee $adder + i32.store + end + local.get $a + local.get $b + local.get $adder + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $function-types/makeAndAdd + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $start:function-types + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + call $function-types/makeAdder + global.set $function-types/i32Adder + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + global.get $function-types/i32Adder + i32.load + call_indirect (type $0) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $function-types/makeAdder + global.set $function-types/i64Adder + i64.const 10 + i64.const 20 + i32.const 2 + global.set $~argumentsLength + global.get $function-types/i64Adder + i32.load + call_indirect (type $4) + i64.const 30 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 2.5 + i32.const 2 + global.set $~argumentsLength + call $function-types/makeAdder + i32.load + call_indirect (type $5) + f64.const 4 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 3 + global.get $function-types/i32Adder + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $function-types/doAddWithFn + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 4 + call $function-types/doAdd + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 5 + i32.const 192 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $function-types/doAddWithFn + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $function-types/makeAndAdd@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + call $function-types/makeAdder + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $function-types/makeAndAdd + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/function-types.json b/tests/compiler/function-types.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/function-types.json +++ b/tests/compiler/function-types.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat deleted file mode 100644 index 7f9d073b3f..0000000000 --- a/tests/compiler/function-types.optimized.wat +++ /dev/null @@ -1,165 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1056) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s") - (data (i32.const 1120) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\02") - (data (i32.const 1152) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\03") - (data (i32.const 1184) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\04") - (table $0 5 funcref) - (elem (i32.const 1) $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0) - (global $function-types/i32Adder (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $function-types/makeAdder~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $function-types/makeAdder~anonymous|0 (param $0 i64) (param $1 i64) (result i64) - local.get $0 - local.get $1 - i64.add - ) - (func $function-types/makeAdder~anonymous|0 (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - f64.add - ) - (func $function-types/doAddWithFn (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - local.get $1 - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - ) - (func $start:function-types - i32.const 1040 - global.set $function-types/i32Adder - i32.const 1 - i32.const 2 - i32.const 1040 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 10 - i64.const 20 - i32.const 1136 - i32.load - call_indirect (type $i64_i64_=>_i64) - i64.const 30 - i64.ne - if - i32.const 0 - i32.const 1072 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 2.5 - i32.const 1168 - i32.load - call_indirect (type $f64_f64_=>_f64) - f64.const 4 - f64.ne - if - i32.const 0 - i32.const 1072 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 3 - global.get $function-types/i32Adder - call $function-types/doAddWithFn - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 4 - i32.const 1040 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 5 - i32.const 1200 - call $function-types/doAddWithFn - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 1040 - call $function-types/doAddWithFn - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 1040 - call $function-types/doAddWithFn - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:function-types - ) -) diff --git a/tests/compiler/function-types.release.wat b/tests/compiler/function-types.release.wat new file mode 100644 index 0000000000..726e8230ce --- /dev/null +++ b/tests/compiler/function-types.release.wat @@ -0,0 +1,216 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i64 i64) (result i64))) + (type $2 (func (param f64 f64) (result f64))) + (type $3 (func (param i32 i32 i32 i32))) + (type $4 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $function-types/i32Adder (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33996)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") + (data $1 (i32.const 1068) "<") + (data $1.1 (i32.const 1080) "\02\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s") + (data $2 (i32.const 1132) "\1c") + (data $2.1 (i32.const 1144) "\05\00\00\00\08\00\00\00\02") + (data $3 (i32.const 1164) "\1c") + (data $3.1 (i32.const 1176) "\06\00\00\00\08\00\00\00\03") + (data $4 (i32.const 1196) "\1c") + (data $4.1 (i32.const 1208) "\04\00\00\00\08\00\00\00\04") + (table $0 5 5 funcref) + (elem $0 (i32.const 1) $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $function-types/makeAdder~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $function-types/makeAdder~anonymous|0 (param $0 i64) (param $1 i64) (result i64) + i64.const 30 + ) + (func $function-types/makeAdder~anonymous|0 (param $0 f64) (param $1 f64) (result f64) + f64.const 4 + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1228 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1056 + global.set $function-types/i32Adder + i32.const 1 + i32.const 2 + i32.const 1056 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 10 + i64.const 20 + i32.const 1152 + i32.load + call_indirect (type $1) + i64.const 30 + i64.ne + if + i32.const 0 + i32.const 1088 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 2.5 + i32.const 1184 + i32.load + call_indirect (type $2) + f64.const 4 + f64.ne + if + i32.const 0 + i32.const 1088 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $function-types/i32Adder + local.tee $0 + i32.store + i32.const 2 + i32.const 3 + local.get $0 + i32.load + call_indirect (type $0) + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 4 + i32.const 1056 + i32.load + call_indirect (type $0) + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store + i32.const 4 + i32.const 5 + i32.const 1216 + i32.load + call_indirect (type $0) + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1228 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + i32.const 1 + i32.const 2 + i32.const 1056 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1 + i32.const 2 + i32.const 1056 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34016 + i32.const 34064 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/function-types.untouched.wat b/tests/compiler/function-types.untouched.wat deleted file mode 100644 index a682c4a707..0000000000 --- a/tests/compiler/function-types.untouched.wat +++ /dev/null @@ -1,286 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 48) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s\00") - (data (i32.const 112) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 144) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 176) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") - (table $0 5 funcref) - (elem (i32.const 1) $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/addI32) - (global $function-types/i32Adder (mut i32) (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $function-types/i64Adder (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $function-types/makeAdder~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $function-types/makeAdder (result i32) - i32.const 32 - call $~lib/rt/stub/__retain - ) - (func $function-types/makeAdder~anonymous|0 (param $0 i64) (param $1 i64) (result i64) - local.get $0 - local.get $1 - i64.add - ) - (func $function-types/makeAdder (result i32) - i32.const 128 - call $~lib/rt/stub/__retain - ) - (func $function-types/makeAdder~anonymous|0 (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - f64.add - ) - (func $function-types/makeAdder (result i32) - i32.const 160 - call $~lib/rt/stub/__retain - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $function-types/doAddWithFn (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $function-types/doAdd (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - i32.const 2 - global.set $~argumentsLength - call $function-types/makeAdder - local.tee $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $function-types/addI32 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $function-types/makeAndAdd (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $function-types/makeAndAdd@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - call $function-types/makeAdder - local.tee $3 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $function-types/makeAndAdd - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $start:function-types - (local $0 i32) - (local $1 i32) - call $function-types/makeAdder - global.set $function-types/i32Adder - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - global.get $function-types/i32Adder - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $function-types/makeAdder - global.set $function-types/i64Adder - i64.const 10 - i64.const 20 - i32.const 2 - global.set $~argumentsLength - global.get $function-types/i64Adder - i32.load - call_indirect (type $i64_i64_=>_i64) - i64.const 30 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 2.5 - i32.const 2 - global.set $~argumentsLength - call $function-types/makeAdder - local.tee $0 - i32.load - call_indirect (type $f64_f64_=>_f64) - f64.const 4 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 3 - global.get $function-types/i32Adder - call $function-types/doAddWithFn - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 4 - call $function-types/doAdd - i32.const 7 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 5 - i32.const 192 - call $function-types/doAddWithFn - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - i32.const 0 - call $function-types/makeAndAdd@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - call $function-types/makeAdder - local.tee $1 - call $function-types/makeAndAdd - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:function-types - ) -) diff --git a/tests/compiler/function.json b/tests/compiler/function.json index b1da366ff4..60507dccd4 100644 --- a/tests/compiler/function.json +++ b/tests/compiler/function.json @@ -1,5 +1,7 @@ { "asc_flags": [ - "--runtime none" + ], + "stderr": [ + "TS2300: Duplicate identifier 'a'" ] -} \ No newline at end of file +} diff --git a/tests/compiler/function.ts b/tests/compiler/function.ts index 9f74a3cd1a..bc57107fc8 100644 --- a/tests/compiler/function.ts +++ b/tests/compiler/function.ts @@ -39,3 +39,7 @@ iii(1, 2); jjj(1, 2); fff(1, 2); ddd(1, 2); + +function duplicateParams(a: i32, a: i32): void {} +// TS2300: Duplicate identifier 'a' +duplicateParams(1, 2); diff --git a/tests/compiler/function.untouched.wat b/tests/compiler/function.untouched.wat deleted file mode 100644 index c887809623..0000000000 --- a/tests/compiler/function.untouched.wat +++ /dev/null @@ -1,137 +0,0 @@ -(module - (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))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i64_i32_=>_i64 (func (param i64 i32) (result i64))) - (type $none_=>_f32 (func (result f32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $none_=>_f64 (func (result f64))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (start $~start) - (func $function/_ - nop - ) - (func $function/v - return - ) - (func $function/i (result i32) - i32.const 0 - ) - (func $function/j (result i64) - i64.const 0 - ) - (func $function/f (result f32) - f32.const 0 - ) - (func $function/d (result f64) - f64.const 0 - ) - (func $function/i_ (param $0 i32) - nop - ) - (func $function/iv (param $0 i32) - return - ) - (func $function/ii (param $0 i32) (result i32) - local.get $0 - ) - (func $function/jj (param $0 i64) (result i64) - local.get $0 - ) - (func $function/ff (param $0 f32) (result f32) - local.get $0 - ) - (func $function/dd (param $0 f64) (result f64) - local.get $0 - ) - (func $function/ii_ (param $0 i32) (param $1 i32) - nop - ) - (func $function/iiv (param $0 i32) (param $1 i32) - return - ) - (func $function/iii (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $function/jjj (param $0 i64) (param $1 i32) (result i64) - local.get $0 - local.get $1 - i64.extend_i32_s - i64.add - ) - (func $function/fff (param $0 f32) (param $1 f32) (result f32) - local.get $0 - local.get $1 - f32.add - ) - (func $function/ddd (param $0 f64) (param $1 f64) (result f64) - local.get $0 - local.get $1 - f64.add - ) - (func $start:function - call $function/_ - call $function/v - call $function/i - drop - call $function/j - drop - call $function/f - drop - call $function/d - drop - i32.const 0 - call $function/i_ - i32.const 0 - call $function/iv - i32.const 0 - call $function/ii - drop - i64.const 0 - call $function/jj - drop - f32.const 0 - call $function/ff - drop - f64.const 0 - call $function/dd - drop - i32.const 1 - i32.const 2 - call $function/ii_ - i32.const 1 - i32.const 2 - call $function/iiv - i32.const 1 - i32.const 2 - call $function/iii - drop - i64.const 1 - i32.const 2 - call $function/jjj - drop - f32.const 1 - f32.const 2 - call $function/fff - drop - f64.const 1 - f64.const 2 - call $function/ddd - drop - ) - (func $~start - call $start:function - ) -) diff --git a/tests/compiler/getter-call.debug.wat b/tests/compiler/getter-call.debug.wat new file mode 100644 index 0000000000..9b5cc21b43 --- /dev/null +++ b/tests/compiler/getter-call.debug.wat @@ -0,0 +1,2481 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 448)) + (global $~lib/memory/__data_end i32 (i32.const 476)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33244)) + (global $~lib/memory/__heap_base i32 (i32.const 33244)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 448) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $getter-call/C#get:x~anonymous|0) + (export "test" (func $getter-call/test)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $getter-call/C#get:x~anonymous|0 (result i32) + i32.const 42 + ) + (func $getter-call/C#get:x (param $this i32) (result i32) + i32.const 432 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28%29=>i32> + block $getter-call/C + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $getter-call/C $~lib/function/Function<%28%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>~visit + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33264 + i32.const 33312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $getter-call/C#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $getter-call/test (result i32) + (local $c i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $getter-call/C#constructor + local.tee $c + i32.store + i32.const 0 + global.set $~argumentsLength + local.get $c + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $getter-call/C#get:x + i32.load + call_indirect (type $4) + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/getter-call.json b/tests/compiler/getter-call.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/getter-call.json +++ b/tests/compiler/getter-call.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat deleted file mode 100644 index e809d8a045..0000000000 --- a/tests/compiler/getter-call.optimized.wat +++ /dev/null @@ -1,87 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\01") - (table $0 2 funcref) - (elem (i32.const 1) $getter-call/C#get:x~anonymous|0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "test" (func $getter-call/test)) - (start $~start) - (func $getter-call/C#get:x~anonymous|0 (result i32) - i32.const 42 - ) - (func $getter-call/test (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - i32.const 16 - i32.add - local.tee $0 - memory.size - local.tee $2 - i32.const 16 - i32.shl - local.tee $1 - i32.gt_u - if - local.get $2 - local.get $0 - local.get $1 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 - i32.sub - local.tee $0 - i32.const 16 - i32.store - local.get $0 - i32.const 1 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - i32.const 1040 - i32.load - call_indirect (type $none_=>_i32) - ) - (func $~start - i32.const 1056 - global.set $~lib/rt/stub/offset - ) -) diff --git a/tests/compiler/getter-call.release.wat b/tests/compiler/getter-call.release.wat new file mode 100644 index 0000000000..b31fd6bd03 --- /dev/null +++ b/tests/compiler/getter-call.release.wat @@ -0,0 +1,1555 @@ +(module + (type $0 (func (result i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34268)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "\1c") + (data $8.1 (i32.const 1448) "\05\00\00\00\08\00\00\00\01") + (data $9 (i32.const 1472) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $getter-call/C#get:x~anonymous|0) + (export "test" (func $getter-call/test)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$115 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34268 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$115 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1472 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34272 + i32.const 0 + i32.store + i32.const 35840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34272 + i32.const 35844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34268 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34268 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34268 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $getter-call/C#get:x~anonymous|0 (result i32) + i32.const 42 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28%29=>i32> + block $getter-call/C + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $getter-call/C $~lib/function/Function<%28%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1500 + i32.lt_s + if + i32.const 34288 + i32.const 34336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34268 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + ) + (func $getter-call/test (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1500 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1500 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1500 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1456 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 42 + return + end + i32.const 34288 + i32.const 34336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat deleted file mode 100644 index 9397fc74a6..0000000000 --- a/tests/compiler/getter-call.untouched.wat +++ /dev/null @@ -1,185 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (table $0 2 funcref) - (elem (i32.const 1) $getter-call/C#get:x~anonymous|0) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 40)) - (export "memory" (memory $0)) - (export "test" (func $getter-call/test)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $getter-call/C#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $getter-call/C#get:x~anonymous|0 (result i32) - i32.const 42 - ) - (func $getter-call/C#get:x (param $0 i32) (result i32) - i32.const 32 - call $~lib/rt/stub/__retain - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $getter-call/test (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - call $getter-call/C#constructor - local.set $0 - i32.const 0 - global.set $~argumentsLength - local.get $0 - call $getter-call/C#get:x - local.tee $1 - i32.load - call_indirect (type $none_=>_i32) - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~start - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) -) diff --git a/tests/compiler/getter-setter-errors.json b/tests/compiler/getter-setter-errors.json new file mode 100644 index 0000000000..21c80b71ce --- /dev/null +++ b/tests/compiler/getter-setter-errors.json @@ -0,0 +1,9 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "AS229: Property 'm' only has a setter and is missing a getter.", + "TS2808: Get accessor 'm2' must be at least as accessible as the setter.", + "EOF" + ] +} diff --git a/tests/compiler/getter-setter-errors.ts b/tests/compiler/getter-setter-errors.ts new file mode 100644 index 0000000000..c714d2f843 --- /dev/null +++ b/tests/compiler/getter-setter-errors.ts @@ -0,0 +1,20 @@ +class UseNonExistedGetter { + set m(v: string) {} +} +new UseNonExistedGetter().m.toString(); + +class GetSetWithoutDifferenceVisibility { + public get m1(): i32 { + return 1; + } + private set m1(v: i32) {} + + private get m2(): i32 { + return 1; + } + public set m2(v: i32) {} +} +new GetSetWithoutDifferenceVisibility().m1; // m1 is valid +new GetSetWithoutDifferenceVisibility().m2; // m2 is invalid + +ERROR("EOF"); diff --git a/tests/compiler/getter-setter.debug.wat b/tests/compiler/getter-setter.debug.wat new file mode 100644 index 0000000000..82ad196874 --- /dev/null +++ b/tests/compiler/getter-setter.debug.wat @@ -0,0 +1,72 @@ +(module + (type $0 (func)) + (type $1 (func (result i32))) + (type $2 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 76)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32844)) + (global $~lib/memory/__heap_base i32 (i32.const 32844)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $getter-setter/Foo.get:bar (result i32) + global.get $getter-setter/Foo._bar + return + ) + (func $getter-setter/Foo.set:bar (param $bar i32) + local.get $bar + global.set $getter-setter/Foo._bar + ) + (func $start:getter-setter + (local $0 i32) + call $getter-setter/Foo.get:bar + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $getter-setter/Foo.set:bar + call $getter-setter/Foo.get:bar + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + local.tee $0 + call $getter-setter/Foo.set:bar + local.get $0 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:getter-setter + ) +) diff --git a/tests/compiler/getter-setter.json b/tests/compiler/getter-setter.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/getter-setter.json +++ b/tests/compiler/getter-setter.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/getter-setter.optimized.wat b/tests/compiler/getter-setter.optimized.wat deleted file mode 100644 index 74641982c2..0000000000 --- a/tests/compiler/getter-setter.optimized.wat +++ /dev/null @@ -1,25 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s") - (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~start - global.get $getter-setter/Foo._bar - if - i32.const 0 - i32.const 1040 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $getter-setter/Foo._bar - i32.const 2 - global.set $getter-setter/Foo._bar - ) -) diff --git a/tests/compiler/getter-setter.release.wat b/tests/compiler/getter-setter.release.wat new file mode 100644 index 0000000000..dc779d8714 --- /dev/null +++ b/tests/compiler/getter-setter.release.wat @@ -0,0 +1,26 @@ +(module + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s") + (export "memory" (memory $0)) + (start $~start) + (func $~start + global.get $getter-setter/Foo._bar + if + i32.const 0 + i32.const 1056 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $getter-setter/Foo._bar + i32.const 2 + global.set $getter-setter/Foo._bar + ) +) diff --git a/tests/compiler/getter-setter.untouched.wat b/tests/compiler/getter-setter.untouched.wat deleted file mode 100644 index 5c91033b3e..0000000000 --- a/tests/compiler/getter-setter.untouched.wat +++ /dev/null @@ -1,65 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s\00") - (table $0 1 funcref) - (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $getter-setter/Foo.get:bar (result i32) - global.get $getter-setter/Foo._bar - ) - (func $getter-setter/Foo.set:bar (param $0 i32) - local.get $0 - global.set $getter-setter/Foo._bar - ) - (func $start:getter-setter - call $getter-setter/Foo.get:bar - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $getter-setter/Foo.set:bar - call $getter-setter/Foo.get:bar - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $getter-setter/Foo.set:bar - call $getter-setter/Foo.get:bar - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:getter-setter - ) -) diff --git a/tests/compiler/heap.debug.wat b/tests/compiler/heap.debug.wat new file mode 100644 index 0000000000..3b82eebc93 --- /dev/null +++ b/tests/compiler/heap.debug.wat @@ -0,0 +1,1750 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func)) + (type $4 (func (param i32 i32 i32) (result i32))) + (type $5 (func (param i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (param i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $heap/ptr (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 140)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32908)) + (global $~lib/memory/__heap_base i32 (i32.const 32908)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 96 + i32.const 32 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/memory/heap.alloc (param $size i32) (result i32) + local.get $size + call $~lib/rt/tlsf/__alloc + return + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/moveBlock (param $root i32) (param $block i32) (param $newSize i32) (result i32) + (local $newBlock i32) + local.get $root + local.get $newSize + call $~lib/rt/tlsf/allocateBlock + local.set $newBlock + local.get $newBlock + i32.const 4 + i32.add + local.get $block + i32.const 4 + i32.add + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + memory.copy + local.get $block + global.get $~lib/memory/__heap_base + i32.ge_u + if + i32.const 0 + drop + local.get $root + local.get $block + call $~lib/rt/tlsf/freeBlock + end + local.get $newBlock + return + ) + (func $~lib/rt/tlsf/reallocateBlock (param $root i32) (param $block i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $blockInfo i32) + (local $blockSize i32) + (local $block|6 i32) + (local $right i32) + (local $rightInfo i32) + (local $mergeSize i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $blockSize + local.get $payloadSize + local.get $blockSize + i32.le_u + if + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + end + block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.4 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $blockSize + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $mergeSize + local.get $mergeSize + local.get $payloadSize + i32.ge_u + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 3 + i32.and + local.get $mergeSize + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + end + end + local.get $root + local.get $block + local.get $size + call $~lib/rt/tlsf/moveBlock + return + ) + (func $~lib/rt/tlsf/__realloc (param $ptr i32) (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if (result i32) + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + local.get $size + call $~lib/rt/tlsf/moveBlock + else + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + local.get $size + call $~lib/rt/tlsf/reallocateBlock + end + i32.const 4 + i32.add + return + ) + (func $~lib/memory/heap.realloc (param $ptr i32) (param $size i32) (result i32) + local.get $ptr + local.get $size + call $~lib/rt/tlsf/__realloc + return + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/memory/heap.free (param $ptr i32) + local.get $ptr + call $~lib/rt/tlsf/__free + ) + (func $start:heap + i32.const 16 + call $~lib/memory/heap.alloc + global.set $heap/ptr + global.get $heap/ptr + i32.const 32 + call $~lib/memory/heap.realloc + global.set $heap/ptr + global.get $heap/ptr + call $~lib/memory/heap.free + ) + (func $~start + call $start:heap + ) +) diff --git a/tests/compiler/heap.json b/tests/compiler/heap.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/heap.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/heap.release.wat b/tests/compiler/heap.release.wat new file mode 100644 index 0000000000..14a0518c9b --- /dev/null +++ b/tests/compiler/heap.release.wat @@ -0,0 +1,1145 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (param i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $heap/ptr (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1056 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1056 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 33936 + i32.const 0 + i32.store + i32.const 35504 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 33936 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 33936 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 33936 + i32.const 35508 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 33936 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 1120 + i32.const 1056 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1056 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $3 + local.get $2 + i32.const 256 + i32.ge_u + if (result i32) + local.get $2 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $2 + end + else + local.get $2 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $3 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $1 + local.get $3 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $3 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1056 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1056 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 32 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + memory.copy + local.get $1 + i32.const 33932 + i32.ge_u + if + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + end + local.get $2 + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + global.set $heap/ptr + global.get $heap/ptr + local.set $0 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $0 + i32.const 33932 + i32.lt_u + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock$53 + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 + i32.const 32 + call $~lib/rt/tlsf/prepareSize + local.tee $5 + local.get $0 + i32.load + local.tee $1 + i32.const -4 + i32.and + local.tee $4 + i32.le_u + if + local.get $3 + local.get $0 + local.get $5 + call $~lib/rt/tlsf/prepareBlock + br $__inlined_func$~lib/rt/tlsf/reallocateBlock$53 + end + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + i32.load + local.tee $6 + i32.const 1 + i32.and + if + local.get $4 + i32.const 4 + i32.add + local.get $6 + i32.const -4 + i32.and + i32.add + local.tee $4 + local.get $5 + i32.ge_u + if + local.get $3 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + i32.const 3 + i32.and + local.get $4 + i32.or + i32.store + local.get $3 + local.get $0 + local.get $5 + call $~lib/rt/tlsf/prepareBlock + br $__inlined_func$~lib/rt/tlsf/reallocateBlock$53 + end + end + local.get $3 + local.get $0 + call $~lib/rt/tlsf/moveBlock + local.set $0 + end + end + local.get $0 + i32.const 4 + i32.add + global.set $heap/ptr + global.get $heap/ptr + local.tee $0 + i32.const 33932 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.tee $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + ) +) diff --git a/tests/compiler/heap.ts b/tests/compiler/heap.ts new file mode 100644 index 0000000000..b8a56285b9 --- /dev/null +++ b/tests/compiler/heap.ts @@ -0,0 +1,3 @@ +var ptr = heap.alloc(16); +ptr = heap.realloc(ptr, 32); +heap.free(ptr); diff --git a/tests/compiler/if.debug.wat b/tests/compiler/if.debug.wat new file mode 100644 index 0000000000..482f743bca --- /dev/null +++ b/tests/compiler/if.debug.wat @@ -0,0 +1,149 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__data_end i32 (i32.const 76)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32844)) + (global $~lib/memory/__heap_base i32 (i32.const 32844)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00i\00f\00.\00t\00s\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00e\00r\00r\00o\00r\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "ifThenElse" (func $if/ifThenElse)) + (export "ifThen" (func $if/ifThen)) + (export "ifThenElseBlock" (func $if/ifThenElseBlock)) + (export "ifAlwaysReturns" (func $if/ifAlwaysReturns)) + (export "memory" (memory $0)) + (start $~start) + (func $if/ifThenElse (param $n i32) (result i32) + local.get $n + if + i32.const 1 + return + else + i32.const 0 + return + end + unreachable + ) + (func $if/ifThen (param $n i32) (result i32) + local.get $n + if + i32.const 1 + return + end + i32.const 0 + return + ) + (func $if/ifThenElseBlock (param $n i32) (result i32) + local.get $n + if + i32.const 1 + return + else + i32.const 0 + return + end + unreachable + ) + (func $start:if + i32.const 0 + call $if/ifThenElse + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $if/ifThenElse + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $if/ifThen + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $if/ifThen + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $if/ifThenElseBlock + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $if/ifThenElseBlock + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $if/ifAlwaysReturns (param $n i32) (result i32) + local.get $n + if + i32.const 1 + return + else + i32.const 64 + i32.const 32 + i32.const 37 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + unreachable + ) + (func $~start + call $start:if + ) +) diff --git a/tests/compiler/if.json b/tests/compiler/if.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/if.json +++ b/tests/compiler/if.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/if.optimized.wat b/tests/compiler/if.optimized.wat deleted file mode 100644 index 313c758fd6..0000000000 --- a/tests/compiler/if.optimized.wat +++ /dev/null @@ -1,65 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00i\00f\00.\00t\00s") - (data (i32.const 1056) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r") - (export "memory" (memory $0)) - (export "ifThenElse" (func $if/ifThenElse)) - (export "ifThen" (func $if/ifThen)) - (export "ifThenElseBlock" (func $if/ifThenElse)) - (export "ifAlwaysReturns" (func $if/ifAlwaysReturns)) - (start $~start) - (func $if/ifThenElse (param $0 i32) (result i32) - local.get $0 - i32.eqz - i32.eqz - ) - (func $if/ifThen (param $0 i32) (result i32) - local.get $0 - if - i32.const 1 - return - end - i32.const 0 - ) - (func $if/ifAlwaysReturns (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 1072 - i32.const 1040 - i32.const 37 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - ) - (func $~start - i32.const 0 - call $if/ifThen - if - i32.const 0 - i32.const 1040 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $if/ifThen - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/if.release.wat b/tests/compiler/if.release.wat new file mode 100644 index 0000000000..549bb1ff21 --- /dev/null +++ b/tests/compiler/if.release.wat @@ -0,0 +1,41 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\n\00\00\00i\00f\00.\00t\00s") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00e\00r\00r\00o\00r") + (export "ifThenElse" (func $if/ifThenElse)) + (export "ifThen" (func $if/ifThen)) + (export "ifThenElseBlock" (func $if/ifThenElse)) + (export "ifAlwaysReturns" (func $if/ifAlwaysReturns)) + (export "memory" (memory $0)) + (func $if/ifThenElse (param $0 i32) (result i32) + local.get $0 + i32.const 0 + i32.ne + ) + (func $if/ifThen (param $0 i32) (result i32) + local.get $0 + if + i32.const 1 + return + end + i32.const 0 + ) + (func $if/ifAlwaysReturns (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 1088 + i32.const 1056 + i32.const 37 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + ) +) diff --git a/tests/compiler/if.untouched.wat b/tests/compiler/if.untouched.wat deleted file mode 100644 index 66e6635a9d..0000000000 --- a/tests/compiler/if.untouched.wat +++ /dev/null @@ -1,144 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00i\00f\00.\00t\00s\00") - (data (i32.const 48) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r\00") - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "ifThenElse" (func $if/ifThenElse)) - (export "ifThen" (func $if/ifThen)) - (export "ifThenElseBlock" (func $if/ifThenElseBlock)) - (export "ifAlwaysReturns" (func $if/ifAlwaysReturns)) - (start $~start) - (func $if/ifThenElse (param $0 i32) (result i32) - local.get $0 - if - i32.const 1 - return - else - i32.const 0 - return - end - unreachable - ) - (func $if/ifThen (param $0 i32) (result i32) - local.get $0 - if - i32.const 1 - return - end - i32.const 0 - ) - (func $if/ifThenElseBlock (param $0 i32) (result i32) - local.get $0 - if - i32.const 1 - return - else - i32.const 0 - return - end - unreachable - ) - (func $start:if - i32.const 0 - call $if/ifThenElse - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $if/ifThenElse - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $if/ifThen - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $if/ifThen - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $if/ifThenElseBlock - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $if/ifThenElseBlock - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $if/ifAlwaysReturns (param $0 i32) (result i32) - local.get $0 - if - i32.const 1 - return - else - i32.const 64 - i32.const 32 - i32.const 37 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - unreachable - ) - (func $~start - call $start:if - ) -) diff --git a/tests/compiler/implicit-getter-setter.js b/tests/compiler/implicit-getter-setter.js deleted file mode 100644 index 4431ff7ba5..0000000000 --- a/tests/compiler/implicit-getter-setter.js +++ /dev/null @@ -1,41 +0,0 @@ -exports.postInstantiate = function(instance) { - const exports = instance.exports; - - // using an integer value - var basic = exports["Basic#constructor"](0, 123); // retain $0 - (() => { - var val = exports["Basic#get:val"](basic); - if (val != 123) throw Error("invalid value"); - exports["Basic#set:val"](basic, 42); - val = exports["Basic#get:val"](basic); - if (val != 42) throw Error("invalid value"); - })(); - - // using a managed value - var managed = exports["Managed#constructor"](0, basic); // retain $1 - (() => { - var foo = exports["Managed#get:foo"](managed); // retain $2 - if (foo != basic) throw Error("invalid value"); - exports.__release(foo); // release $2 - })(); - (() => { - var foo = exports["Basic#constructor"](0, 321); // retain $3 - exports["Managed#set:foo"](managed, foo); - exports.__release(foo); // release $3 - var expectedFoo = foo; - foo = exports["Managed#get:foo"](managed); // retain $4 - if (foo != expectedFoo) throw Error("invalid value"); - exports.__release(foo); // releae $4 - })(); - - // combining both - (() => { - var foo = exports["Managed#get:foo"](managed); // retain $5 - var val = exports["Basic#get:val"](foo); - if (val != 321) throw Error("invalid value"); - exports.__release(foo); // release $5 - })(); - - exports.__release(basic); // release $0 - exports.__release(managed); // release $1 -}; diff --git a/tests/compiler/implicit-getter-setter.json b/tests/compiler/implicit-getter-setter.json deleted file mode 100644 index 0c036aee46..0000000000 --- a/tests/compiler/implicit-getter-setter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime full", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat deleted file mode 100644 index 9c33c3adf4..0000000000 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ /dev/null @@ -1,1280 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1184)) - (global $implicit-getter-setter/Basic i32 (i32.const 3)) - (global $implicit-getter-setter/Managed i32 (i32.const 4)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (export "Basic" (global $implicit-getter-setter/Basic)) - (export "Basic#get:val" (func $implicit-getter-setter/Basic#get:val)) - (export "Basic#set:val" (func $implicit-getter-setter/Basic#set:val)) - (export "Basic#constructor" (func $implicit-getter-setter/Basic#constructor)) - (export "Managed" (global $implicit-getter-setter/Managed)) - (export "Managed#get:foo" (func $implicit-getter-setter/Managed#get:foo)) - (export "Managed#set:foo" (func $implicit-getter-setter/Managed#set:foo)) - (export "Managed#constructor" (func $implicit-getter-setter/Managed#constructor)) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1232 - local.set $1 - i32.const 1232 - i32.const 0 - i32.store - i32.const 2800 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1232 - i32.const 2816 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1232 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1040 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1073741808 - i32.ge_u - if - i32.const 1088 - i32.const 1040 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - call $~lib/rt/rtrace/onalloc - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1228 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1228 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $implicit-getter-setter/Basic#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $implicit-getter-setter/Basic#get:val (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $implicit-getter-setter/Basic#set:val (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $implicit-getter-setter/Managed#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - call $~lib/rt/pure/__retain - i32.store - local.get $0 - ) - (func $implicit-getter-setter/Managed#get:foo (param $0 i32) (result i32) - local.get $0 - i32.load - call $~lib/rt/pure/__retain - ) - (func $implicit-getter-setter/Managed#set:foo (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/rt/pure/__collect - nop - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1228 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/implicit-getter-setter.ts b/tests/compiler/implicit-getter-setter.ts deleted file mode 100644 index 6d3ef713e4..0000000000 --- a/tests/compiler/implicit-getter-setter.ts +++ /dev/null @@ -1,7 +0,0 @@ -export class Basic { - constructor(public val: i32) {} -} - -export class Managed { - constructor(public foo: Basic) {} -} diff --git a/tests/compiler/implicit-getter-setter.untouched.wat b/tests/compiler/implicit-getter-setter.untouched.wat deleted file mode 100644 index 906a0165ec..0000000000 --- a/tests/compiler/implicit-getter-setter.untouched.wat +++ /dev/null @@ -1,1787 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param 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))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\05\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/rt/__rtti_base i32 (i32.const 176)) - (global $~lib/heap/__heap_base i32 (i32.const 220)) - (global $implicit-getter-setter/Basic i32 (i32.const 3)) - (global $implicit-getter-setter/Managed i32 (i32.const 4)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (export "Basic" (global $implicit-getter-setter/Basic)) - (export "Basic#get:val" (func $implicit-getter-setter/Basic#get:val)) - (export "Basic#set:val" (func $implicit-getter-setter/Basic#set:val)) - (export "Basic#constructor" (func $implicit-getter-setter/Basic#constructor)) - (export "Managed" (global $implicit-getter-setter/Managed)) - (export "Managed#get:foo" (func $implicit-getter-setter/Managed#get:foo)) - (export "Managed#set:foo" (func $implicit-getter-setter/Managed#set:foo)) - (export "Managed#constructor" (func $implicit-getter-setter/Managed#constructor)) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 80 - i32.const 32 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $implicit-getter-setter/Basic#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $implicit-getter-setter/Basic#get:val (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $implicit-getter-setter/Basic#set:val (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $implicit-getter-setter/Managed#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - call $~lib/rt/pure/__retain - i32.store - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $implicit-getter-setter/Managed#get:foo (param $0 i32) (result i32) - local.get $0 - i32.load - call $~lib/rt/pure/__retain - ) - (func $implicit-getter-setter/Managed#set:foo (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $2 - call $~lib/rt/pure/__release - end - local.get $1 - i32.store - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$case$4 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/import-memory.debug.wat b/tests/compiler/import-memory.debug.wat new file mode 100644 index 0000000000..9478e9002e --- /dev/null +++ b/tests/compiler/import-memory.debug.wat @@ -0,0 +1,31 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (import "env" "memory" (memory $0 1)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__data_end i32 (i32.const 76)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32844)) + (global $~lib/memory/__heap_base i32 (i32.const 32844)) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00m\00p\00o\00r\00t\00-\00m\00e\00m\00o\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:import-memory + memory.size + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:import-memory + ) +) diff --git a/tests/compiler/import-memory.json b/tests/compiler/import-memory.json new file mode 100644 index 0000000000..66be819572 --- /dev/null +++ b/tests/compiler/import-memory.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--importMemory" + ] +} diff --git a/tests/compiler/import-memory.release.wat b/tests/compiler/import-memory.release.wat new file mode 100644 index 0000000000..be4cb9b4ae --- /dev/null +++ b/tests/compiler/import-memory.release.wat @@ -0,0 +1,21 @@ +(module + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func)) + (import "env" "memory" (memory $0 1)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (data $0 (i32.const 1036) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00m\00p\00o\00r\00t\00-\00m\00e\00m\00o\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (export "memory" (memory $0)) + (start $~start) + (func $~start + memory.size + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/import-memory.ts b/tests/compiler/import-memory.ts new file mode 100644 index 0000000000..0d6ba2933a --- /dev/null +++ b/tests/compiler/import-memory.ts @@ -0,0 +1 @@ +assert(memory.size() != 0); diff --git a/tests/compiler/import.debug.wat b/tests/compiler/import.debug.wat new file mode 100644 index 0000000000..bec85bb9df --- /dev/null +++ b/tests/compiler/import.debug.wat @@ -0,0 +1,70 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32) (result i32))) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $export/c i32 (i32.const 3)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $export/add (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $export/sub (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.sub + return + ) + (func $export/mul (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.mul + return + ) + (func $export/ns.two + ) + (func $export-default/theDefault + ) + (func $start:import + global.get $export/a + global.get $export/b + call $export/add + global.get $export/b + global.get $export/c + call $export/sub + i32.add + global.get $export/c + global.get $export/a + call $export/mul + i32.add + drop + call $export/ns.two + global.get $export/a + global.get $export/b + call $export/add + global.get $export/b + global.get $export/c + call $export/sub + i32.add + global.get $export/c + global.get $export/a + call $export/mul + i32.add + drop + call $export/ns.two + call $export/ns.two + call $export-default/theDefault + ) + (func $~start + call $start:import + ) +) diff --git a/tests/compiler/import.json b/tests/compiler/import.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/import.json +++ b/tests/compiler/import.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/limits.optimized.wat b/tests/compiler/import.release.wat similarity index 100% rename from tests/compiler/limits.optimized.wat rename to tests/compiler/import.release.wat diff --git a/tests/compiler/import.ts b/tests/compiler/import.ts index ca6c73650c..fef97ebf3e 100644 --- a/tests/compiler/import.ts +++ b/tests/compiler/import.ts @@ -1,5 +1,3 @@ -/* tslint:disable:no-duplicate-imports */ - import { add, sub as sub, diff --git a/tests/compiler/import.untouched.wat b/tests/compiler/import.untouched.wat deleted file mode 100644 index 9f2d080c71..0000000000 --- a/tests/compiler/import.untouched.wat +++ /dev/null @@ -1,65 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 0) - (table $0 1 funcref) - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (export "memory" (memory $0)) - (start $~start) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $export/ns.two - nop - ) - (func $export-default/theDefault - nop - ) - (func $start:import - global.get $export/a - global.get $export/b - call $export/add - global.get $export/b - global.get $export/c - call $export/sub - i32.add - global.get $export/c - global.get $export/a - call $export/mul - i32.add - drop - call $export/ns.two - global.get $export/a - global.get $export/b - call $export/add - global.get $export/b - global.get $export/c - call $export/sub - i32.add - global.get $export/c - global.get $export/a - call $export/mul - i32.add - drop - call $export/ns.two - call $export/ns.two - call $export-default/theDefault - ) - (func $~start - call $start:import - ) -) diff --git a/tests/compiler/in.json b/tests/compiler/in.json new file mode 100644 index 0000000000..286e739637 --- /dev/null +++ b/tests/compiler/in.json @@ -0,0 +1,6 @@ +{ + "stderr": [ + "AS100: Not implemented: 'in' operator", "\"log\" in console", + "EOF" + ] +} \ No newline at end of file diff --git a/tests/compiler/in.ts b/tests/compiler/in.ts new file mode 100644 index 0000000000..797148ed28 --- /dev/null +++ b/tests/compiler/in.ts @@ -0,0 +1,3 @@ +"log" in console; + +ERROR("EOF"); diff --git a/tests/compiler/incremental-gc/call-indirect.debug.wat b/tests/compiler/incremental-gc/call-indirect.debug.wat new file mode 100644 index 0000000000..f41def2823 --- /dev/null +++ b/tests/compiler/incremental-gc/call-indirect.debug.wat @@ -0,0 +1,2641 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 544)) + (global $~lib/memory/__data_end i32 (i32.const 576)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33344)) + (global $~lib/memory/__heap_base i32 (i32.const 33344)) + (memory $0 1) + (data $0 (i32.const 16) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $8 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00>\00\00\00i\00n\00c\00r\00e\00m\00e\00n\00t\00a\00l\00-\00g\00c\00/\00c\00a\00l\00l\00-\00i\00n\00d\00i\00r\00e\00c\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 544) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $incremental-gc/call-indirect/foo) + (export "issue_2923" (func $incremental-gc/call-indirect/issue_2923)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 160 + i32.const 224 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 64 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 368 + i32.const 304 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 368 + i32.const 64 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $incremental-gc/call-indirect/B#set:v (param $this i32) (param $v i32) + local.get $this + local.get $v + i32.store + ) + (func $incremental-gc/call-indirect/A#get:v (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#get:index (param $this i32) (result i32) + local.get $this + i32.load + return + ) + (func $incremental-gc/call-indirect/A#set:v (param $this i32) (param $v i32) + local.get $this + local.get $v + i32.store + ) + (func $start:incremental-gc/call-indirect + i32.const 16 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 112 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + call $incremental-gc/call-indirect/issue_2923 + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 368 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $incremental-gc/call-indirect/B + block $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> + block $incremental-gc/call-indirect/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $incremental-gc/call-indirect/A $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> $incremental-gc/call-indirect/B $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:incremental-gc/call-indirect + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33376 + i32.const 33424 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $incremental-gc/call-indirect/B#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 20 + call $incremental-gc/call-indirect/B#set:v + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $incremental-gc/call-indirect/foo (param $a i32) (result i32) + (local $b i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $incremental-gc/call-indirect/B#constructor + local.tee $b + i32.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $incremental-gc/call-indirect/A#get:v + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $incremental-gc/call-indirect/A#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 10 + call $incremental-gc/call-indirect/A#set:v + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $incremental-gc/call-indirect/issue_2923 (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + call $incremental-gc/call-indirect/A#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 432 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#get:index + call_indirect (type $0) + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + ) + (func $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/incremental-gc/call-indirect.json b/tests/compiler/incremental-gc/call-indirect.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/incremental-gc/call-indirect.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/incremental-gc/call-indirect.release.wat b/tests/compiler/incremental-gc/call-indirect.release.wat new file mode 100644 index 0000000000..709def24e2 --- /dev/null +++ b/tests/compiler/incremental-gc/call-indirect.release.wat @@ -0,0 +1,1845 @@ +(module + (type $0 (func)) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34352)) + (memory $0 1) + (data $1 (i32.const 1052) "<") + (data $1.1 (i32.const 1064) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $3 (i32.const 1148) "<") + (data $3.1 (i32.const 1160) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $4 (i32.const 1212) ",") + (data $4.1 (i32.const 1224) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $6 (i32.const 1292) "<") + (data $6.1 (i32.const 1304) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $7 (i32.const 1356) "<") + (data $7.1 (i32.const 1368) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $8 (i32.const 1420) "\1c") + (data $8.1 (i32.const 1432) "\05\00\00\00\08\00\00\00\01") + (data $9 (i32.const 1452) "\\") + (data $9.1 (i32.const 1464) "\02\00\00\00>\00\00\00i\00n\00c\00r\00e\00m\00e\00n\00t\00a\00l\00-\00g\00c\00/\00c\00a\00l\00l\00-\00i\00n\00d\00i\00r\00e\00c\00t\00.\00t\00s") + (data $10 (i32.const 1552) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $incremental-gc/call-indirect/foo) + (export "issue_2923" (func $incremental-gc/call-indirect/issue_2923)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 1376 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1072 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1072 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$123 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34352 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1072 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$123 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1072 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1552 + i32.load + i32.gt_u + if + i32.const 1168 + i32.const 1232 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1556 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1312 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1312 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1312 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1312 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1312 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1312 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34352 + i32.const 0 + i32.store + i32.const 35920 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34352 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34352 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34352 + i32.const 35924 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34352 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34352 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1072 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34352 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34352 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1312 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1376 + i32.const 1072 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1376 + i32.const 1312 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1312 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1312 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $incremental-gc/call-indirect/B + block $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> + block $incremental-gc/call-indirect/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $incremental-gc/call-indirect/A $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> $incremental-gc/call-indirect/B $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + unreachable + ) + (func $~start + i32.const 1028 + i32.const 1024 + i32.store + i32.const 1032 + i32.const 1024 + i32.store + i32.const 1024 + global.set $~lib/rt/itcms/pinSpace + i32.const 1124 + i32.const 1120 + i32.store + i32.const 1128 + i32.const 1120 + i32.store + i32.const 1120 + global.set $~lib/rt/itcms/toSpace + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/fromSpace + memory.size + i32.const 16 + i32.shl + i32.const 34352 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + call $incremental-gc/call-indirect/issue_2923 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1472 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $incremental-gc/call-indirect/foo (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/object/Object#constructor + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 20 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $incremental-gc/call-indirect/issue_2923 (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1440 + i32.store offset=4 + local.get $0 + i32.const 1440 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/incremental-gc/call-indirect.ts b/tests/compiler/incremental-gc/call-indirect.ts new file mode 100644 index 0000000000..9c4f0ed06e --- /dev/null +++ b/tests/compiler/incremental-gc/call-indirect.ts @@ -0,0 +1,17 @@ +class A { + v: i32 = 10; +} +class B { + v: i32 = 20; +} +function foo(a: A): i32 { + __collect(); // to trigger GC + let b = new B(); + return a.v; +} + +export function issue_2923(): i32 { + return call_indirect(foo.index, new A()); +} + +assert(issue_2923() == 10); diff --git a/tests/compiler/indexing-regexp.json b/tests/compiler/indexing-regexp.json new file mode 100644 index 0000000000..683cd4c33d --- /dev/null +++ b/tests/compiler/indexing-regexp.json @@ -0,0 +1,7 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS2329: Index signature is missing in type '~lib/regexp/RegExp'" + ] +} diff --git a/tests/compiler/indexing-regexp.ts b/tests/compiler/indexing-regexp.ts new file mode 100644 index 0000000000..9f2e3cb3c7 --- /dev/null +++ b/tests/compiler/indexing-regexp.ts @@ -0,0 +1 @@ +/ /[0]; diff --git a/tests/compiler/indexof-valueof.debug.wat b/tests/compiler/indexof-valueof.debug.wat new file mode 100644 index 0000000000..259e6d6148 --- /dev/null +++ b/tests/compiler/indexof-valueof.debug.wat @@ -0,0 +1,119 @@ +(module + (type $0 (func)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:indexof-valueof + i32.const 1 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + i32.const 1 + i32.eq + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 8 + i32.const 8 + i32.eq + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + ) + (func $~start + call $start:indexof-valueof + ) +) diff --git a/tests/compiler/indexof-valueof.json b/tests/compiler/indexof-valueof.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/indexof-valueof.json +++ b/tests/compiler/indexof-valueof.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/literals.optimized.wat b/tests/compiler/indexof-valueof.release.wat similarity index 100% rename from tests/compiler/literals.optimized.wat rename to tests/compiler/indexof-valueof.release.wat diff --git a/tests/compiler/indexof-valueof.ts b/tests/compiler/indexof-valueof.ts index 9e271e2c0b..44bc5cc950 100644 --- a/tests/compiler/indexof-valueof.ts +++ b/tests/compiler/indexof-valueof.ts @@ -39,6 +39,12 @@ assert(sizeof>() == 4); // i32 assert(isInteger>()); assert(!isSigned>()); assert(sizeof>() == 1); +assert(isFloat>()); +assert(!isInteger>()); +assert(sizeof>() == 4); +assert(isInteger>()); +assert(isSigned>()); +assert(sizeof>() == 8); // map indexes assert(isInteger>>()); diff --git a/tests/compiler/indexof-valueof.untouched.wat b/tests/compiler/indexof-valueof.untouched.wat deleted file mode 100644 index ec0868b667..0000000000 --- a/tests/compiler/indexof-valueof.untouched.wat +++ /dev/null @@ -1,98 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (start $~start) - (func $start:indexof-valueof - i32.const 1 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - i32.const 1 - i32.eq - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - ) - (func $~start - call $start:indexof-valueof - ) -) diff --git a/tests/compiler/infer-array.debug.wat b/tests/compiler/infer-array.debug.wat new file mode 100644 index 0000000000..9a5dcdf64f --- /dev/null +++ b/tests/compiler/infer-array.debug.wat @@ -0,0 +1,4545 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32) (result i32))) + (type $10 (func (param i32 i32) (result f64))) + (type $11 (func (param i32 i32) (result f32))) + (type $12 (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 1136)) + (global $~lib/memory/__data_end i32 (i32.const 1192)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33960)) + (global $~lib/memory/__heap_base i32 (i32.const 33960)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $10 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data $11 (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00") + (data $12 (i32.const 588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\ff\ff\ff\ff\00\00\00\00") + (data $13 (i32.const 620) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00") + (data $14 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data $15 (i32.const 700) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $16 (i32.const 748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\00\03\00\00\00\00\00\00") + (data $18 (i32.const 812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data $22 (i32.const 940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 1004) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 1136) "\r\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\1a\00\00\02\01\00\00\02\19\00\00 \00\00\00\02a\00\00\02a\00\00\02\01\00\00\02A\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 256 + i32.const 320 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 128 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 64 + i32.const 400 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 64 + i32.const 128 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/string/String|null>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/string/String|null>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/array/Array>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/array/Array>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/array/Array>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 720 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1024 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/string/String|null>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String|null>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String|null> + block $~lib/array/Array + block $infer-array/Ref + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $infer-array/Ref $~lib/array/Array $~lib/array/Array<~lib/string/String|null> $~lib/array/Array $~lib/array/Array<~lib/array/Array> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>~visit + return + end + unreachable + ) + (func $~start + call $start:infer-array + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33984 + i32.const 34032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 256 + i32.const 464 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f64) + (local $value f64) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 256 + i32.const 464 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 256 + i32.const 464 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f32) + (local $value f32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 256 + i32.const 464 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $infer-array/Ref#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 720 + i32.const 464 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 256 + i32.const 464 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 256 + i32.const 464 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 1 + i32.eqz + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array<~lib/string/String|null>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String|null>#get:length_ + i32.ge_u + if + i32.const 256 + i32.const 464 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String|null>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 1 + i32.eqz + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 256 + i32.const 464 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array<~lib/array/Array>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 256 + i32.const 464 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<~lib/array/Array>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.ge_u + if + i32.const 256 + i32.const 464 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 1024 + i32.const 464 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:infer-array + (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 f32) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 96 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 96 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 32 + call $~lib/rt/__newArray + local.tee $1 + i32.store + local.get $1 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 3 + i32.const 5 + i32.const 560 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=8 + local.get $3 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 6 + i32.const 608 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=12 + local.get $5 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 12 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 0 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 1 + call $~lib/array/Array#__get + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 14 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 3 + i32.const 5 + i32.const 640 + call $~lib/rt/__newArray + local.tee $7 + i32.store offset=16 + local.get $7 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 7 + i32.const 688 + call $~lib/rt/__newArray + local.tee $9 + i32.store offset=20 + local.get $9 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 1 + call $~lib/array/Array#__get + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $infer-array/Ref#constructor + local.tee $11 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $infer-array/Ref#constructor + local.tee $12 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $13 + i32.store offset=32 + local.get $13 + i32.const 0 + local.get $11 + call $~lib/array/Array#__set + local.get $13 + i32.const 1 + local.get $12 + call $~lib/array/Array#__set + local.get $13 + local.tee $14 + i32.store offset=36 + local.get $14 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $infer-array/Ref#constructor + local.tee $15 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $infer-array/Ref#constructor + local.tee $16 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $17 + i32.store offset=48 + local.get $17 + i32.const 0 + local.get $15 + call $~lib/array/Array#__set + local.get $17 + i32.const 1 + local.get $16 + call $~lib/array/Array#__set + local.get $17 + local.tee $18 + i32.store offset=52 + local.get $18 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 1 + call $~lib/array/Array#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $infer-array/Ref#constructor + local.tee $19 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $20 + i32.store offset=60 + local.get $20 + i32.const 0 + local.get $19 + call $~lib/array/Array#__set + local.get $20 + i32.const 1 + i32.const 0 + call $~lib/array/Array#__set + local.get $20 + local.tee $21 + i32.store offset=64 + local.get $21 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 41 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 10 + i32.const 800 + call $~lib/rt/__newArray + local.tee $23 + i32.store offset=68 + local.get $23 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array<~lib/string/String|null>#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 11 + i32.const 832 + call $~lib/rt/__newArray + local.tee $25 + i32.store offset=72 + local.get $25 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $25 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 0 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 50 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 11 + i32.const 864 + call $~lib/rt/__newArray + local.tee $27 + i32.store offset=76 + local.get $27 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $27 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 0 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 53 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 896 + call $~lib/rt/__newArray + local.tee $29 + i32.store offset=80 + local.get $29 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $29 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 0 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 928 + call $~lib/rt/__newArray + local.tee $31 + i32.store offset=84 + local.get $31 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $31 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array#__get + drop + i32.const 0 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 12 + i32.const 0 + call $~lib/rt/__newArray + local.tee $32 + i32.store offset=88 + local.get $32 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 960 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $32 + i32.const 1 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 992 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $32 + local.tee $35 + i32.store offset=92 + local.get $35 + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store offset=4 + local.get $36 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.eqz + drop + global.get $~lib/memory/__stack_pointer + i32.const 96 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String|null>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String|null>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String|null>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String|null>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/infer-array.json b/tests/compiler/infer-array.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/infer-array.json +++ b/tests/compiler/infer-array.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat deleted file mode 100644 index ebe9642e9f..0000000000 --- a/tests/compiler/infer-array.optimized.wat +++ /dev/null @@ -1,505 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 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))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 1056) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1120) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1168) "\18\00\00\00\01\00\00\00\00\00\00\00\18") - (data (i32.const 1190) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 1216) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\ff\ff\ff\ff") - (data (i32.const 1248) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1296) "\18\00\00\00\01\00\00\00\00\00\00\00\18") - (data (i32.const 1318) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 1344) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 1376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1408) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00p\05") - (data (i32.const 1440) "\04\00\00\00\01\00\00\00\00\00\00\00\04") - (data (i32.const 1472) "\08\00\00\00\01\00\00\00\00\00\00\00\08") - (data (i32.const 1504) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01") - (data (i32.const 1536) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\01") - (data (i32.const 1568) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 1600) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\02") - (data (i32.const 1632) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $5 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - i32.const 16 - local.get $2 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $0 - local.get $1 - i32.shl - local.tee $4 - local.set $5 - local.get $4 - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $1 - local.get $3 - if - local.get $1 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy - end - local.get $2 - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - local.get $4 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $start:infer-array - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 1744 - global.set $~lib/rt/stub/offset - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 1040 - call $~lib/rt/__allocArray - drop - i32.const 3 - i32.const 3 - i32.const 4 - i32.const 1184 - call $~lib/rt/__allocArray - drop - block $folding-inner0 - i32.const 1 - i32.const 2 - i32.const 2 - i32.const 5 - i32.const 1232 - call $~lib/rt/__allocArray - local.tee $0 - i32.load offset=12 - i32.ge_u - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - i32.load offset=4 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1264 - i32.const 14 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 3 - i32.const 4 - i32.const 1312 - call $~lib/rt/__allocArray - drop - i32.const 1 - i32.const 3 - i32.const 2 - i32.const 6 - i32.const 1360 - call $~lib/rt/__allocArray - local.tee $0 - i32.load offset=12 - i32.ge_u - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - f32.load offset=4 - drop - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__alloc - local.set $0 - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__alloc - local.set $1 - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - i32.load offset=4 - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__alloc - local.set $0 - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__alloc - local.set $1 - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - i32.load offset=4 - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__alloc - local.set $0 - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - i32.load offset=4 - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - i32.const 2 - i32.const 2 - i32.const 9 - i32.const 1424 - call $~lib/rt/__allocArray - drop - i32.const 1 - i32.const 2 - i32.const 10 - i32.const 1456 - call $~lib/rt/__allocArray - drop - i32.const 2 - i32.const 2 - i32.const 10 - i32.const 1488 - call $~lib/rt/__allocArray - drop - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 1520 - call $~lib/rt/__allocArray - drop - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 1552 - call $~lib/rt/__allocArray - drop - i32.const 2 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__allocArray - i32.load offset=4 - local.tee $0 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 1584 - call $~lib/rt/__allocArray - i32.store - local.get $0 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 1616 - call $~lib/rt/__allocArray - i32.store offset=4 - return - end - i32.const 1072 - i32.const 1136 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - ) - (func $~start - call $start:infer-array - ) -) diff --git a/tests/compiler/infer-array.release.wat b/tests/compiler/infer-array.release.wat new file mode 100644 index 0000000000..07fd25eb5e --- /dev/null +++ b/tests/compiler/infer-array.release.wat @@ -0,0 +1,2747 @@ +(module + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34984)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $1 (i32.const 1068) "<") + (data $1.1 (i32.const 1080) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1132) "<") + (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1260) "<") + (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1324) ",") + (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1404) "<") + (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1468) ",") + (data $9.1 (i32.const 1480) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $10 (i32.const 1516) ",") + (data $10.1 (i32.const 1528) "\02\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s") + (data $11 (i32.const 1564) ",") + (data $11.1 (i32.const 1576) "\01\00\00\00\18") + (data $11.2 (i32.const 1590) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data $12 (i32.const 1612) "\1c") + (data $12.1 (i32.const 1624) "\01\00\00\00\08\00\00\00\01\00\00\00\ff\ff\ff\ff") + (data $13 (i32.const 1644) ",") + (data $13.1 (i32.const 1656) "\01\00\00\00\18") + (data $13.2 (i32.const 1670) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data $14 (i32.const 1692) "\1c") + (data $14.1 (i32.const 1704) "\01\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data $15 (i32.const 1724) ",") + (data $15.1 (i32.const 1736) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $16 (i32.const 1772) "\1c") + (data $16.1 (i32.const 1784) "\02\00\00\00\02\00\00\00a") + (data $17 (i32.const 1804) "\1c") + (data $17.1 (i32.const 1816) "\01\00\00\00\08\00\00\00\00\00\00\00\00\07") + (data $18 (i32.const 1836) "\1c") + (data $18.1 (i32.const 1848) "\01\00\00\00\04") + (data $19 (i32.const 1868) "\1c") + (data $19.1 (i32.const 1880) "\01\00\00\00\08") + (data $20 (i32.const 1900) "\1c") + (data $20.1 (i32.const 1912) "\01\00\00\00\08\00\00\00\01") + (data $21 (i32.const 1932) "\1c") + (data $21.1 (i32.const 1944) "\01\00\00\00\08\00\00\00\00\00\00\00\01") + (data $22 (i32.const 1964) "\1c") + (data $22.1 (i32.const 1976) "\01\00\00\00\04\00\00\00\01") + (data $23 (i32.const 1996) "\1c") + (data $23.1 (i32.const 2008) "\01\00\00\00\04\00\00\00\02") + (data $24 (i32.const 2028) "|") + (data $24.1 (i32.const 2040) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $25 (i32.const 2160) "\r\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\1a\00\00\02\01\00\00\02\19\00\00 \00\00\00\02a\00\00\02a\00\00\02\01\00\00\02A") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1744 + call $~lib/rt/itcms/__visit + i32.const 2048 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$154 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34984 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$154 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2160 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 2164 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34992 + i32.const 0 + i32.store + i32.const 36560 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34992 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34992 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34992 + i32.const 36564 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34992 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34984 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34984 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34984 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1088 + i32.const 1424 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1424 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $infer-array/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:infer-array + ) + (func $~lib/array/Array#__get (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + if + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.load + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + if + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + f64.load + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + if + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + if + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $infer-array/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1280 + i32.const 1488 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.tee $6 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=8 + local.tee $4 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $3 + i32.const 268435455 + i32.gt_u + if + i32.const 1744 + i32.const 1488 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$149 + i32.const 1073741820 + local.get $4 + i32.const 1 + i32.shl + local.tee $4 + local.get $4 + i32.const 1073741820 + i32.ge_u + select + local.tee $4 + i32.const 8 + local.get $3 + local.get $3 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + local.get $3 + local.get $4 + i32.lt_u + select + local.tee $5 + local.get $0 + i32.load + local.tee $4 + i32.const 20 + i32.sub + local.tee $7 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $7 + local.get $5 + i32.store offset=16 + local.get $4 + local.set $3 + br $__inlined_func$~lib/rt/itcms/__renew$149 + end + local.get $5 + local.get $7 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $4 + local.get $5 + local.get $7 + i32.load offset=16 + local.tee $7 + local.get $5 + local.get $7 + i32.lt_u + select + memory.copy + end + local.get $3 + local.get $4 + i32.ne + if + local.get $0 + local.get $3 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $5 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $6 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + if + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:infer-array + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 96 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 96 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 34984 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 1056 + call $~lib/rt/__newArray + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 3 + i32.const 5 + i32.const 1584 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 6 + i32.const 1632 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 14 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 3 + i32.const 5 + i32.const 1664 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 7 + i32.const 1712 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + call $infer-array/Ref#constructor + local.tee $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + call $infer-array/Ref#constructor + local.tee $1 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=32 + local.get $3 + i32.const 0 + local.get $0 + call $~lib/array/Array#__set + local.get $3 + i32.const 1 + local.get $1 + call $~lib/array/Array#__set + local.get $3 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + call $infer-array/Ref#constructor + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + call $infer-array/Ref#constructor + local.tee $1 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=48 + local.get $3 + i32.const 0 + local.get $0 + call $~lib/array/Array#__set + local.get $3 + i32.const 1 + local.get $1 + call $~lib/array/Array#__set + local.get $3 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + call $infer-array/Ref#constructor + local.tee $0 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=60 + local.get $2 + i32.const 0 + local.get $0 + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.const 0 + call $~lib/array/Array#__set + local.get $2 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 10 + i32.const 1824 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 11 + i32.const 1856 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + drop + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 11 + i32.const 1888 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=76 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + drop + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 1920 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=80 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 1952 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=84 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 12 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=88 + local.get $1 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 1984 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 2016 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.store offset=92 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 2048 + i32.const 1488 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 96 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + if + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.shl + local.tee $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $1 + local.get $3 + if + local.get $1 + local.get $3 + local.get $5 + memory.copy + end + local.get $1 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) +) diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat deleted file mode 100644 index 6ee473ce24..0000000000 --- a/tests/compiler/infer-array.untouched.wat +++ /dev/null @@ -1,2042 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 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" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 48) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 112) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 160) "\18\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 208) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\ff\ff\ff\ff") - (data (i32.const 240) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00i\00n\00f\00e\00r\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 288) "\18\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 336) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 368) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 400) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\80\01\00\00") - (data (i32.const 432) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 464) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 496) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 528) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\01\00\00\00") - (data (i32.const 560) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 592) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\02\00\00\00") - (data (i32.const 624) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 736)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end - local.get $3 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 16 - local.get $2 - call $~lib/rt/stub/__alloc - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.set $5 - local.get $5 - i32.const 0 - local.get $3 - call $~lib/rt/__allocBuffer - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/stub/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $infer-array/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 1 - drop - i32.const 1 - i32.eqz - drop - local.get $2 - ) - (func $~lib/array/Array<~lib/string/String|null>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/string/String|null>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String|null>#__uget - local.set $2 - i32.const 1 - drop - i32.const 1 - i32.eqz - drop - local.get $2 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/array/Array<~lib/array/Array>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 640 - i32.const 128 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - ) - (func $start:infer-array - (local $0 i32) - (local $1 i32) - (local $2 f32) - (local $3 i32) - (local $4 i32) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 32 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $1 - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - call $~lib/rt/stub/__release - i32.const 3 - i32.const 3 - i32.const 4 - i32.const 176 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $0 - i32.const 1 - drop - local.get $0 - call $~lib/rt/stub/__release - i32.const 2 - i32.const 2 - i32.const 5 - i32.const 224 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $1 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $1 - i32.const 1 - call $~lib/array/Array#__get - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 14 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/stub/__release - i32.const 3 - i32.const 3 - i32.const 4 - i32.const 304 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $0 - i32.const 1 - drop - local.get $0 - call $~lib/rt/stub/__release - i32.const 3 - i32.const 2 - i32.const 6 - i32.const 352 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $1 - i32.const 1 - drop - local.get $1 - i32.const 1 - call $~lib/array/Array#__get - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - i32.const 0 - call $infer-array/Ref#constructor - local.set $1 - i32.const 0 - call $infer-array/Ref#constructor - local.set $0 - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $1 - call $~lib/rt/stub/__retain - i32.store - local.get $4 - local.get $0 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $3 - local.set $4 - i32.const 1 - drop - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - i32.const 0 - call $infer-array/Ref#constructor - local.set $3 - i32.const 0 - call $infer-array/Ref#constructor - local.set $4 - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - local.get $3 - call $~lib/rt/stub/__retain - i32.store - local.get $1 - local.get $4 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $0 - local.set $1 - i32.const 1 - drop - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $infer-array/Ref#constructor - local.set $0 - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $0 - call $~lib/rt/stub/__retain - i32.store - local.get $4 - i32.const 0 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $1 - local.set $4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - i32.const 2 - i32.const 2 - i32.const 9 - i32.const 416 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $4 - i32.const 1 - drop - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - i32.const 1 - i32.const 2 - i32.const 10 - i32.const 448 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $4 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 2 - i32.const 2 - i32.const 10 - i32.const 480 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $0 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $4 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 512 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $4 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 544 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $1 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - i32.const 2 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $4 - local.get $4 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 576 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - i32.store - local.get $4 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 608 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $1 - local.set $4 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:infer-array - ) -) diff --git a/tests/compiler/infer-generic.debug.wat b/tests/compiler/infer-generic.debug.wat new file mode 100644 index 0000000000..4eba1f7c8d --- /dev/null +++ b/tests/compiler/infer-generic.debug.wat @@ -0,0 +1,3113 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 f32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param f32) (result f32))) + (type $8 (func (param f64 f64) (result i32))) + (type $9 (func (param i32 i32 i32 i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (result i32))) + (type $12 (func (param i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $infer-generic/arr i32 (i32.const 128)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 592)) + (global $~lib/memory/__data_end i32 (i32.const 636)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33404)) + (global $~lib/memory/__heap_base i32 (i32.const 33404)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data $2 (i32.const 108) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00`\00\00\00`\00\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 188) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 496) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 592) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $start:infer-generic~anonymous|0) + (export "test1" (func $infer-generic/test1)) + (export "memory" (memory $0)) + (export "test2" (func $export:infer-generic/test2)) + (export "test3" (func $export:infer-generic/test3)) + (export "test4" (func $export:infer-generic/test4)) + (export "test5" (func $export:infer-generic/test5)) + (export "inferAssert" (func $export:infer-generic/inferAssert)) + (start $~start) + (func $infer-generic/inferCompatible (param $a f64) (param $b f64) (result i32) + local.get $a + local.get $b + f64.eq + return + ) + (func $start:infer-generic~anonymous|0 (param $acc i32) (param $cur f32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + if (result i32) + local.get $cur + f32.const 0 + f32.ne + else + i32.const 0 + end + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $infer-generic/inferDefault (param $a i32) (result i32) + local.get $a + return + ) + (func $infer-generic/Ref#set:x (param $this i32) (param $x i32) + local.get $this + local.get $x + i32.store + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 272 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 272 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 272 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 400 + i32.const 464 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 272 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 272 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 208 + i32.const 544 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 208 + i32.const 272 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $infer-generic/inferDefault (param $a i32) (result i32) + local.get $a + return + ) + (func $infer-generic/inferPlain (param $arr f32) (result f32) + local.get $arr + return + ) + (func $infer-generic/test1 (param $arr f32) (result f32) + local.get $arr + call $infer-generic/inferPlain + return + ) + (func $infer-generic/inferEncapsulatedClass (param $arr i32) (result i32) + local.get $arr + return + ) + (func $infer-generic/inferEncapsulatedFunctionNull (param $fn i32) (result i32) + local.get $fn + return + ) + (func $"infer-generic/inferEncapsulatedFunction" (param $fn i32) (result i32) + local.get $fn + return + ) + (func $"infer-generic/inferEncapsulatedFunctionMixed" (param $fn i32) (result i32) + local.get $fn + return + ) + (func $infer-generic/Ref#get:x (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $infer-generic/arr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 400 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 208 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28%29=>f64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>f64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>f64>#__visit + ) + (func $~lib/function/Function<%28f32%29=>f64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%29=>f64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%29=>f64>#__visit + ) + (func $~lib/function/Function<%28f32%2Ci32%29=>f64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Ci32%29=>f64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%29=>f64>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28f32%2Ci32%29=>f64> + block $~lib/function/Function<%28f32%29=>f64> + block $~lib/function/Function<%28%29=>f64> + block $infer-generic/Ref + block $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool> $infer-generic/Ref $~lib/function/Function<%28%29=>f64> $~lib/function/Function<%28f32%29=>f64> $~lib/function/Function<%28f32%2Ci32%29=>f64> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>f64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%29=>f64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%29=>f64>~visit + return + end + unreachable + ) + (func $~start + call $start:infer-generic + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33424 + i32.const 33472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $acc i32) + (local $i i32) + (local $len i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $initialValue + local.set $acc + i32.const 0 + local.set $i + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length_ + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + local.tee $6 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length_ + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if + local.get $acc + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.get $i + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $5) + local.set $acc + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $acc + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $infer-generic/Ref#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $infer-generic/Ref#set:x + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:infer-generic + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + f64.const 1 + f64.const 1 + call $infer-generic/inferCompatible + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $infer-generic/arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 176 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/array/Array#reduce + drop + i32.const 1 + call $infer-generic/inferDefault + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 496 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $infer-generic/Ref#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $infer-generic/Ref#set:x + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $infer-generic/inferDefault + drop + i32.const 1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 71 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $infer-generic/test2 (param $arr i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $arr + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $infer-generic/inferEncapsulatedClass + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $infer-generic/test3 (param $fn i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $fn + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $infer-generic/inferEncapsulatedFunctionNull + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $infer-generic/test4 (param $fn i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $fn + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"infer-generic/inferEncapsulatedFunction" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $infer-generic/test5 (param $fn i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $fn + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"infer-generic/inferEncapsulatedFunctionMixed" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $infer-generic/inferAssert (param $v i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $v + local.tee $1 + i32.store offset=4 + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 32 + i32.const 75 + i32.const 3 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $infer-generic/Ref#get:x + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28bool%2Cf32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>f64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>f64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f32%29=>f64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f32%29=>f64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f32%2Ci32%29=>f64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f32%2Ci32%29=>f64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:infer-generic/test2 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $infer-generic/test2 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:infer-generic/test3 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $infer-generic/test3 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:infer-generic/test4 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $infer-generic/test4 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:infer-generic/test5 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $infer-generic/test5 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:infer-generic/inferAssert (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $infer-generic/inferAssert + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/infer-generic.json b/tests/compiler/infer-generic.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/infer-generic.json +++ b/tests/compiler/infer-generic.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat deleted file mode 100644 index ce07f87f18..0000000000 --- a/tests/compiler/infer-generic.optimized.wat +++ /dev/null @@ -1,78 +0,0 @@ -(module - (type $i32_f32_i32_i32_=>_i32 (func (param i32 f32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s") - (data (i32.const 1072) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 1104) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00@\04\00\00@\04\00\00\0c\00\00\00\03") - (data (i32.const 1136) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\01") - (table $0 2 funcref) - (elem (i32.const 1) $start:infer-generic~anonymous|0) - (export "memory" (memory $0)) - (export "test1" (func $infer-generic/test1)) - (export "test2" (func $infer-generic/test2)) - (export "test3" (func $infer-generic/test2)) - (export "test4" (func $infer-generic/test2)) - (start $~start) - (func $start:infer-generic~anonymous|0 (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) (result i32) - local.get $1 - f32.const 0 - f32.ne - i32.const 0 - local.get $0 - select - ) - (func $infer-generic/test1 (param $0 f32) (result f32) - local.get $0 - ) - (func $infer-generic/test2 (param $0 i32) (result i32) - local.get $0 - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1132 - i32.load - local.set $1 - loop $for-loop|0 - local.get $1 - i32.const 1132 - i32.load - local.tee $2 - i32.lt_s - local.set $3 - local.get $0 - local.get $1 - local.get $2 - local.get $3 - select - i32.lt_s - if - local.get $4 - i32.const 1124 - i32.load - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $0 - i32.const 1120 - i32.const 1152 - i32.load - call_indirect (type $i32_f32_i32_i32_=>_i32) - local.set $4 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - ) -) diff --git a/tests/compiler/infer-generic.release.wat b/tests/compiler/infer-generic.release.wat new file mode 100644 index 0000000000..bfd2ec7d06 --- /dev/null +++ b/tests/compiler/infer-generic.release.wat @@ -0,0 +1,1947 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 f32 i32 i32) (result i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param f32) (result f32))) + (type $9 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34428)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s") + (data $1 (i32.const 1100) "\1c") + (data $1.1 (i32.const 1112) "\01\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data $2 (i32.const 1132) ",") + (data $2.1 (i32.const 1144) "\04\00\00\00\10\00\00\00`\04\00\00`\04\00\00\0c\00\00\00\03") + (data $3 (i32.const 1180) "\1c") + (data $3.1 (i32.const 1192) "\05\00\00\00\08\00\00\00\01") + (data $4 (i32.const 1212) "<") + (data $4.1 (i32.const 1224) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1276) "<") + (data $5.1 (i32.const 1288) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1404) "<") + (data $8.1 (i32.const 1416) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1468) ",") + (data $9.1 (i32.const 1480) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1548) "<") + (data $11.1 (i32.const 1560) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1616) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\00\00\00\00 ") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $start:infer-generic~anonymous|0) + (export "test1" (func $infer-generic/test1)) + (export "memory" (memory $0)) + (export "test2" (func $export:infer-generic/test2)) + (export "test3" (func $export:infer-generic/test2)) + (export "test4" (func $export:infer-generic/test2)) + (export "test5" (func $export:infer-generic/test2)) + (export "inferAssert" (func $export:infer-generic/inferAssert)) + (start $~start) + (func $start:infer-generic~anonymous|0 (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) (result i32) + local.get $1 + f32.const 0 + f32.ne + i32.const 0 + local.get $0 + select + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 1424 + call $~lib/rt/itcms/__visit + i32.const 1232 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1296 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$138 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34428 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$138 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1616 + i32.load + i32.gt_u + if + i32.const 1424 + i32.const 1488 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1620 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1568 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1568 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1568 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1568 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34432 + i32.const 0 + i32.store + i32.const 36000 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34432 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34432 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34432 + i32.const 36004 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34432 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34428 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1296 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34428 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34428 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1568 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1232 + i32.const 1296 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1232 + i32.const 1568 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1568 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1568 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $infer-generic/test1 (param $0 f32) (result f32) + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $infer-generic/Ref + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34448 + i32.const 34496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 f32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1152 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1200 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1152 + i32.store + i32.const 1164 + i32.load + local.set $3 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + i32.const 1152 + i32.store + local.get $1 + local.get $3 + i32.const 1164 + i32.load + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 1152 + i32.store offset=4 + i32.const 1156 + i32.load + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 1152 + i32.store + local.get $0 + local.get $2 + local.get $1 + i32.const 1152 + i32.const 1200 + i32.load + call_indirect (type $2) + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + memory.size + i32.const 16 + i32.shl + i32.const 34428 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/pinSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/toSpace + i32.const 1524 + i32.const 1520 + i32.store + i32.const 1528 + i32.const 1520 + i32.store + i32.const 1520 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34448 + i32.const 34496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:infer-generic/test2 (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34448 + i32.const 34496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:infer-generic/inferAssert (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 75 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34448 + i32.const 34496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/infer-generic.ts b/tests/compiler/infer-generic.ts index fc8e5aedc7..6270d04739 100644 --- a/tests/compiler/infer-generic.ts +++ b/tests/compiler/infer-generic.ts @@ -18,23 +18,31 @@ export function test2(arr: f32[]): f32[] { return inferEncapsulatedClass(arr); } +// () => R should infer R +function inferEncapsulatedFunctionNull(fn: () => R): () => R { + return fn; +} +export function test3(fn: () => f64): () => f64 { + return inferEncapsulatedFunctionNull(fn); +} + // (a: T) => R should infer T,R -function inferEncapsulatedFunction(fn: (a: T) => R): (a: T) => R { +function inferEncapsulatedFunction(fn: (a: T) => R): (a: T) => R { return fn; } -export function test3(fn: (a: f32) => f64): (a: f32) => f64 { +export function test4(fn: (a: f32) => f64): (a: f32) => f64 { return inferEncapsulatedFunction(fn); } // (a: T, b: i32) => R should not bail out on non-inferred i32 -function inferEncapsulatedFunctionMixed(fn: (a: T, b: i32) => R): (a: T, b: i32) => R { +function inferEncapsulatedFunctionMixed(fn: (a: T, b: i32) => R): (a: T, b: i32) => R { return fn; } -export function test4(fn: (a: f32, b: i32) => f64): (a: f32, b: i32) => f64 { +export function test5(fn: (a: f32, b: i32) => f64): (a: f32, b: i32) => f64 { return inferEncapsulatedFunctionMixed(fn); } @@ -50,3 +58,19 @@ assert(inferCompatible(1, 1.0)); const arr: f32[] = [1.0, 2.0, 3.0]; arr.reduce(((acc, cur) => acc && cur != 0), false); + +// should fall back to default type + +class Ref { + x: i32; +} +function inferDefault(a: T): T { + return a; +} +assert(inferDefault(1) == 1); +assert(inferDefault({ x: 2 }) instanceof Ref); + +// infer builtin assert generic +export function inferAssert(v: Ref | null): void { + assert(v).x; +} diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat deleted file mode 100644 index 8c4d706838..0000000000 --- a/tests/compiler/infer-generic.untouched.wat +++ /dev/null @@ -1,200 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_f32_i32_i32_=>_i32 (func (param i32 f32 i32 i32) (result i32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s\00") - (data (i32.const 64) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 96) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00P\00\00\00P\00\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 128) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (table $0 2 funcref) - (elem (i32.const 1) $start:infer-generic~anonymous|0) - (global $infer-generic/arr i32 (i32.const 112)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "test1" (func $infer-generic/test1)) - (export "test2" (func $infer-generic/test2)) - (export "test3" (func $infer-generic/test3)) - (export "test4" (func $infer-generic/test4)) - (start $~start) - (func $infer-generic/inferCompatible (param $0 f64) (param $1 f64) (result i32) - local.get $0 - local.get $1 - f64.eq - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $start:infer-generic~anonymous|0 (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/stub/__retain - local.set $3 - local.get $0 - if (result i32) - local.get $1 - f32.const 0 - f32.ne - else - i32.const 0 - end - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/array/Array#reduce (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.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - local.set $3 - i32.const 0 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $4 - local.get $5 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - local.set $6 - local.get $6 - if - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $4 - local.get $0 - i32.const 4 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_f32_i32_i32_=>_i32) - local.set $3 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - local.set $5 - local.get $1 - call $~lib/rt/stub/__release - local.get $5 - ) - (func $start:infer-generic - (local $0 i32) - (local $1 i32) - f64.const 1 - f64.const 1 - call $infer-generic/inferCompatible - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $infer-generic/arr - i32.const 144 - i32.const 0 - call $~lib/array/Array#reduce - drop - ) - (func $infer-generic/inferPlain (param $0 f32) (result f32) - local.get $0 - ) - (func $infer-generic/test1 (param $0 f32) (result f32) - local.get $0 - call $infer-generic/inferPlain - ) - (func $infer-generic/inferEncapsulatedClass (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - ) - (func $infer-generic/test2 (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $infer-generic/inferEncapsulatedClass - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $infer-generic/inferEncapsulatedFunction (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - ) - (func $infer-generic/test3 (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $infer-generic/inferEncapsulatedFunction - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $infer-generic/inferEncapsulatedFunctionMixed (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - ) - (func $infer-generic/test4 (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $infer-generic/inferEncapsulatedFunctionMixed - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $~start - call $start:infer-generic - ) -) diff --git a/tests/compiler/infer-type.debug.wat b/tests/compiler/infer-type.debug.wat new file mode 100644 index 0000000000..376253a6c4 --- /dev/null +++ b/tests/compiler/infer-type.debug.wat @@ -0,0 +1,111 @@ +(module + (type $0 (func)) + (type $1 (func (result i32))) + (type $2 (func (result i64))) + (type $3 (func (result f32))) + (type $4 (func (result f64))) + (global $infer-type/i i32 (i32.const 10)) + (global $infer-type/I i64 (i64.const 4294967296)) + (global $infer-type/F f64 (f64.const 1.5)) + (global $infer-type/ri (mut i32) (i32.const 0)) + (global $infer-type/rI (mut i64) (i64.const 0)) + (global $infer-type/rf (mut f32) (f32.const 0)) + (global $infer-type/rF (mut f64) (f64.const 0)) + (global $infer-type/inferi (mut i32) (i32.const -2147483648)) + (global $infer-type/inferu (mut i32) (i32.const 2147483647)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $infer-type/locals + (local $li i32) + (local $lI i64) + (local $lF f64) + (local $ai i32) + (local $aI i64) + (local $aF f64) + i32.const 10 + local.set $li + i64.const 4294967296 + local.set $lI + f64.const 1.5 + local.set $lF + global.get $infer-type/i + local.set $ai + global.get $infer-type/I + local.set $aI + global.get $infer-type/F + local.set $aF + ) + (func $infer-type/reti (result i32) + i32.const 0 + return + ) + (func $infer-type/retI (result i64) + i64.const 0 + return + ) + (func $infer-type/retf (result f32) + f32.const 0 + return + ) + (func $infer-type/refF (result f64) + f64.const 0 + return + ) + (func $start:infer-type + (local $a i32) + (local $b i32) + global.get $infer-type/i + drop + global.get $infer-type/I + drop + global.get $infer-type/F + drop + call $infer-type/locals + call $infer-type/reti + global.set $infer-type/ri + global.get $infer-type/ri + drop + call $infer-type/retI + global.set $infer-type/rI + global.get $infer-type/rI + drop + call $infer-type/retf + global.set $infer-type/rf + global.get $infer-type/rf + drop + call $infer-type/refF + global.set $infer-type/rF + global.get $infer-type/rF + drop + i32.const 0 + local.set $a + i32.const 10 + local.set $b + loop $for-loop|0 + local.get $a + local.get $b + i32.lt_s + if + local.get $a + i32.const 1 + i32.add + local.set $a + br $for-loop|0 + end + end + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + ) + (func $~start + call $start:infer-type + ) +) diff --git a/tests/compiler/infer-type.json b/tests/compiler/infer-type.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/infer-type.json +++ b/tests/compiler/infer-type.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/infer-type.optimized.wat b/tests/compiler/infer-type.optimized.wat deleted file mode 100644 index 4a4b656673..0000000000 --- a/tests/compiler/infer-type.optimized.wat +++ /dev/null @@ -1,21 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (export "memory" (memory $0)) - (start $~start) - (func $~start - (local $0 i32) - loop $for-loop|0 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - ) -) diff --git a/tests/compiler/infer-type.release.wat b/tests/compiler/infer-type.release.wat new file mode 100644 index 0000000000..22a0288df2 --- /dev/null +++ b/tests/compiler/infer-type.release.wat @@ -0,0 +1,21 @@ +(module + (type $0 (func)) + (memory $0 0) + (export "memory" (memory $0)) + (start $~start) + (func $~start + (local $0 i32) + loop $for-loop|0 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + ) +) diff --git a/tests/compiler/infer-type.untouched.wat b/tests/compiler/infer-type.untouched.wat deleted file mode 100644 index b9097d3c32..0000000000 --- a/tests/compiler/infer-type.untouched.wat +++ /dev/null @@ -1,106 +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))) - (memory $0 0) - (table $0 1 funcref) - (global $infer-type/i i32 (i32.const 10)) - (global $infer-type/I i64 (i64.const 4294967296)) - (global $infer-type/F f64 (f64.const 1.5)) - (global $infer-type/ri (mut i32) (i32.const 0)) - (global $infer-type/rI (mut i64) (i64.const 0)) - (global $infer-type/rf (mut f32) (f32.const 0)) - (global $infer-type/rF (mut f64) (f64.const 0)) - (global $infer-type/inferi (mut i32) (i32.const -2147483648)) - (global $infer-type/inferu (mut i32) (i32.const 2147483647)) - (export "memory" (memory $0)) - (start $~start) - (func $infer-type/locals - (local $0 i32) - (local $1 i64) - (local $2 f64) - (local $3 i32) - (local $4 i64) - (local $5 f64) - i32.const 10 - local.set $0 - i64.const 4294967296 - local.set $1 - f64.const 1.5 - local.set $2 - global.get $infer-type/i - local.set $3 - global.get $infer-type/I - local.set $4 - global.get $infer-type/F - local.set $5 - ) - (func $infer-type/reti (result i32) - i32.const 0 - ) - (func $infer-type/retI (result i64) - i64.const 0 - ) - (func $infer-type/retf (result f32) - f32.const 0 - ) - (func $infer-type/refF (result f64) - f64.const 0 - ) - (func $start:infer-type - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $infer-type/i - drop - global.get $infer-type/I - drop - global.get $infer-type/F - drop - call $infer-type/locals - call $infer-type/reti - global.set $infer-type/ri - global.get $infer-type/ri - drop - call $infer-type/retI - global.set $infer-type/rI - global.get $infer-type/rI - drop - call $infer-type/retf - global.set $infer-type/rf - global.get $infer-type/rf - drop - call $infer-type/refF - global.set $infer-type/rF - global.get $infer-type/rF - drop - i32.const 0 - local.set $0 - i32.const 10 - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - local.set $2 - local.get $2 - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - ) - (func $~start - call $start:infer-type - ) -) diff --git a/tests/compiler/inlining-blocklocals.debug.wat b/tests/compiler/inlining-blocklocals.debug.wat new file mode 100644 index 0000000000..fd5ccaf5c2 --- /dev/null +++ b/tests/compiler/inlining-blocklocals.debug.wat @@ -0,0 +1,107 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $inlining-blocklocals/b (mut i32) (i32.const 2)) + (global $inlining-blocklocals/theCall_a (mut i32) (i32.const 0)) + (global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0)) + (global $inlining-blocklocals/theCall_c (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 92)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32860)) + (global $~lib/memory/__heap_base i32 (i32.const 32860)) + (memory $0 1) + (data $0 (i32.const 12) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $inlining-blocklocals/test + (local $a i32) + (local $1 i32) + (local $2 i32) + (local $a|3 i32) + (local $b i32) + (local $c i32) + i32.const 1 + local.set $a + local.get $a + local.tee $1 + i32.const 1 + i32.add + local.set $a + local.get $1 + local.set $a|3 + global.get $inlining-blocklocals/b + local.tee $2 + i32.const 1 + i32.add + global.set $inlining-blocklocals/b + local.get $2 + local.set $b + local.get $a + i32.const 1 + i32.add + local.tee $a + local.set $c + local.get $a|3 + global.set $inlining-blocklocals/theCall_a + local.get $b + global.set $inlining-blocklocals/theCall_b + local.get $c + global.set $inlining-blocklocals/theCall_c + global.get $inlining-blocklocals/theCall_a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $inlining-blocklocals/theCall_b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $inlining-blocklocals/theCall_c + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 20 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:inlining-blocklocals + call $inlining-blocklocals/test + ) + (func $~start + call $start:inlining-blocklocals + ) +) diff --git a/tests/compiler/inlining-blocklocals.json b/tests/compiler/inlining-blocklocals.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/inlining-blocklocals.json +++ b/tests/compiler/inlining-blocklocals.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/inlining-blocklocals.optimized.wat b/tests/compiler/inlining-blocklocals.optimized.wat deleted file mode 100644 index ce5c7454ee..0000000000 --- a/tests/compiler/inlining-blocklocals.optimized.wat +++ /dev/null @@ -1,46 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s") - (global $inlining-blocklocals/b (mut i32) (i32.const 2)) - (global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0)) - (global $inlining-blocklocals/theCall_c (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~start - (local $0 i32) - global.get $inlining-blocklocals/b - local.tee $0 - i32.const 1 - i32.add - global.set $inlining-blocklocals/b - local.get $0 - global.set $inlining-blocklocals/theCall_b - i32.const 3 - global.set $inlining-blocklocals/theCall_c - global.get $inlining-blocklocals/theCall_b - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $inlining-blocklocals/theCall_c - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 20 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/inlining-blocklocals.release.wat b/tests/compiler/inlining-blocklocals.release.wat new file mode 100644 index 0000000000..ede3330ebc --- /dev/null +++ b/tests/compiler/inlining-blocklocals.release.wat @@ -0,0 +1,47 @@ +(module + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $inlining-blocklocals/b (mut i32) (i32.const 2)) + (global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0)) + (global $inlining-blocklocals/theCall_c (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "L") + (data $0.1 (i32.const 1048) "\02\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s") + (export "memory" (memory $0)) + (start $~start) + (func $~start + (local $0 i32) + global.get $inlining-blocklocals/b + local.tee $0 + i32.const 1 + i32.add + global.set $inlining-blocklocals/b + local.get $0 + global.set $inlining-blocklocals/theCall_b + i32.const 3 + global.set $inlining-blocklocals/theCall_c + global.get $inlining-blocklocals/theCall_b + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $inlining-blocklocals/theCall_c + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 20 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/inlining-blocklocals.untouched.wat b/tests/compiler/inlining-blocklocals.untouched.wat deleted file mode 100644 index 7431ad7d83..0000000000 --- a/tests/compiler/inlining-blocklocals.untouched.wat +++ /dev/null @@ -1,101 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") - (table $0 1 funcref) - (global $inlining-blocklocals/b (mut i32) (i32.const 2)) - (global $inlining-blocklocals/theCall_a (mut i32) (i32.const 0)) - (global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0)) - (global $inlining-blocklocals/theCall_c (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $inlining-blocklocals/test - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 1 - local.set $0 - local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.set $3 - global.get $inlining-blocklocals/b - local.tee $1 - i32.const 1 - i32.add - global.set $inlining-blocklocals/b - local.get $1 - local.set $2 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.set $1 - local.get $3 - global.set $inlining-blocklocals/theCall_a - local.get $2 - global.set $inlining-blocklocals/theCall_b - local.get $1 - global.set $inlining-blocklocals/theCall_c - global.get $inlining-blocklocals/theCall_a - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $inlining-blocklocals/theCall_b - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $inlining-blocklocals/theCall_c - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 20 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:inlining-blocklocals - call $inlining-blocklocals/test - ) - (func $~start - call $start:inlining-blocklocals - ) -) diff --git a/tests/compiler/inlining-recursive.debug.wat b/tests/compiler/inlining-recursive.debug.wat new file mode 100644 index 0000000000..4c1161873d --- /dev/null +++ b/tests/compiler/inlining-recursive.debug.wat @@ -0,0 +1,22 @@ +(module + (type $0 (func)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "foo" (func $inlining-recursive/foo)) + (export "bar" (func $inlining-recursive/bar)) + (export "baz" (func $inlining-recursive/baz)) + (export "memory" (memory $0)) + (func $inlining-recursive/foo + call $inlining-recursive/foo + ) + (func $inlining-recursive/baz + call $inlining-recursive/bar + ) + (func $inlining-recursive/bar + call $inlining-recursive/baz + ) +) diff --git a/tests/compiler/inlining-recursive.json b/tests/compiler/inlining-recursive.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/inlining-recursive.json +++ b/tests/compiler/inlining-recursive.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/inlining-recursive.optimized.wat b/tests/compiler/inlining-recursive.optimized.wat deleted file mode 100644 index f736b4cbc5..0000000000 --- a/tests/compiler/inlining-recursive.optimized.wat +++ /dev/null @@ -1,14 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (export "memory" (memory $0)) - (export "foo" (func $inlining-recursive/foo)) - (export "bar" (func $inlining-recursive/baz)) - (export "baz" (func $inlining-recursive/baz)) - (func $inlining-recursive/foo - call $inlining-recursive/foo - ) - (func $inlining-recursive/baz - call $inlining-recursive/baz - ) -) diff --git a/tests/compiler/inlining-recursive.release.wat b/tests/compiler/inlining-recursive.release.wat new file mode 100644 index 0000000000..79a6b7c99a --- /dev/null +++ b/tests/compiler/inlining-recursive.release.wat @@ -0,0 +1,14 @@ +(module + (type $0 (func)) + (memory $0 0) + (export "foo" (func $inlining-recursive/foo)) + (export "bar" (func $inlining-recursive/baz)) + (export "baz" (func $inlining-recursive/baz)) + (export "memory" (memory $0)) + (func $inlining-recursive/foo + call $inlining-recursive/foo + ) + (func $inlining-recursive/baz + call $inlining-recursive/baz + ) +) diff --git a/tests/compiler/inlining-recursive.untouched.wat b/tests/compiler/inlining-recursive.untouched.wat deleted file mode 100644 index aa96cf8172..0000000000 --- a/tests/compiler/inlining-recursive.untouched.wat +++ /dev/null @@ -1,18 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "foo" (func $inlining-recursive/foo)) - (export "bar" (func $inlining-recursive/bar)) - (export "baz" (func $inlining-recursive/baz)) - (func $inlining-recursive/foo - call $inlining-recursive/foo - ) - (func $inlining-recursive/baz - call $inlining-recursive/bar - ) - (func $inlining-recursive/bar - call $inlining-recursive/baz - ) -) diff --git a/tests/compiler/inlining.debug.wat b/tests/compiler/inlining.debug.wat new file mode 100644 index 0000000000..c4f5314669 --- /dev/null +++ b/tests/compiler/inlining.debug.wat @@ -0,0 +1,3063 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32) (result f64))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (param f64) (result f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $inlining/constantGlobal i32 (i32.const 1)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 496)) + (global $~lib/memory/__data_end i32 (i32.const 532)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33300)) + (global $~lib/memory/__heap_base i32 (i32.const 33300)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00") + (data $1 (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 92) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 496) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $inlining/func_fe~anonymous|0) + (export "test" (func $inlining/test)) + (export "foo" (func $inlining/foo)) + (export "bar" (func $inlining/bar)) + (export "memory" (memory $0)) + (start $~start) + (func $inlining/test (result i32) + global.get $inlining/constantGlobal + i32.const 2 + i32.add + return + ) + (func $inlining/func_fe~anonymous|0 (param $a i32) (result i32) + local.get $a + ) + (func $inlining/test_funcs + (local $a f32) + (local $b f64) + (local $a|2 i32) + (local $a|3 i32) + (local $a|4 i32) + (local $a|5 i32) + (local $a|6 i32) + (local $a|7 i32) + (local $a|8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $e i32) + (local $c i32) + (local $d i32) + (local $a|14 i32) + (local $b|15 i32) + (local $e|16 i32) + (local $c|17 i32) + (local $d|18 i32) + (local $a|19 i32) + (local $a|20 i32) + (local $b|21 i32) + (local $foo i32) + (local $this i32) + (local $a|24 i32) + (local $b|25 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + f32.const -1 + local.set $a + f64.const -2 + local.set $b + block $inlining/func_ii|inlined.0 (result i32) + i32.const 42 + local.set $a|2 + local.get $a|2 + i32.const 42 + i32.eq + if + i32.const 1 + br $inlining/func_ii|inlined.0 + end + local.get $a|2 + i32.const 42 + i32.lt_s + if (result i32) + i32.const 2 + else + i32.const 3 + end + br $inlining/func_ii|inlined.0 + end + i32.const 1 + i32.eq + drop + block $inlining/func_ii|inlined.1 (result i32) + i32.const 41 + local.set $a|3 + local.get $a|3 + i32.const 42 + i32.eq + if + i32.const 1 + br $inlining/func_ii|inlined.1 + end + local.get $a|3 + i32.const 42 + i32.lt_s + if (result i32) + i32.const 2 + else + i32.const 3 + end + br $inlining/func_ii|inlined.1 + end + i32.const 2 + i32.eq + drop + block $inlining/func_ii|inlined.2 (result i32) + i32.const 43 + local.set $a|4 + local.get $a|4 + i32.const 42 + i32.eq + if + i32.const 1 + br $inlining/func_ii|inlined.2 + end + local.get $a|4 + i32.const 42 + i32.lt_s + if (result i32) + i32.const 2 + else + i32.const 3 + end + br $inlining/func_ii|inlined.2 + end + i32.const 3 + i32.eq + drop + block $inlining/func_ii_opt|inlined.0 (result i32) + i32.const 0 + local.set $a|5 + local.get $a|5 + br $inlining/func_ii_opt|inlined.0 + end + i32.const 0 + i32.eq + drop + block $inlining/func_ii_opt|inlined.1 (result i32) + i32.const 1 + local.set $a|6 + local.get $a|6 + br $inlining/func_ii_opt|inlined.1 + end + i32.const 1 + i32.eq + drop + block $inlining/func_ii_opt|inlined.3 (result i32) + block $inlining/func_ii_opt|inlined.2 (result i32) + i32.const 1 + local.set $a|7 + local.get $a|7 + br $inlining/func_ii_opt|inlined.2 + end + local.set $a|8 + local.get $a|8 + br $inlining/func_ii_opt|inlined.3 + end + i32.const 1 + i32.eq + drop + block $inlining/func_ii_loc|inlined.0 (result i32) + i32.const 2 + local.set $a|9 + local.get $a|9 + local.set $b|10 + i32.const 1 + drop + local.get $b|10 + local.set $c + local.get $c + local.set $d + local.get $d + i32.const 1 + i32.add + local.set $e + local.get $e + br $inlining/func_ii_loc|inlined.0 + end + i32.const 3 + i32.eq + drop + block $inlining/func_ii_loc|inlined.1 (result i32) + i32.const 3 + local.set $a|14 + local.get $a|14 + local.set $b|15 + i32.const 1 + drop + local.get $b|15 + local.set $c|17 + local.get $c|17 + local.set $d|18 + local.get $d|18 + i32.const 1 + i32.add + local.set $e|16 + local.get $e|16 + br $inlining/func_ii_loc|inlined.1 + end + i32.const 4 + i32.eq + drop + i32.const 0 + local.set $a|19 + i32.const 2 + i32.const 1 + global.set $~argumentsLength + block $inlining/func_fe|inlined.0 (result i32) + i32.const 80 + br $inlining/func_fe|inlined.0 + end + i32.load + call_indirect (type $0) + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $inlining/Foo.method_static|inlined.0 (result i32) + i32.const 42 + local.set $a|20 + i32.const 2 + local.set $b|21 + local.get $a|20 + local.get $b|21 + i32.add + br $inlining/Foo.method_static|inlined.0 + end + i32.const 44 + i32.eq + drop + global.get $~lib/memory/__stack_pointer + i32.const 123 + local.tee $foo + i32.store + block $inlining/Foo#method_this|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $foo + local.tee $this + i32.store offset=4 + i32.const 43 + local.set $a|24 + i32.const 3 + local.set $b|25 + local.get $this + br $inlining/Foo#method_this|inlined.0 + end + i32.const 123 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $inlining/Baz#set:b (param $this i32) (param $b i32) + local.get $this + local.get $b + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 304 + i32.const 368 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 176 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 112 + i32.const 448 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 112 + i32.const 176 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $inlining/Baz#set:a (param $this i32) (param $a i32) + local.get $this + local.get $a + i32.store + ) + (func $inlining/Bar#set:e (param $this i32) (param $e i32) + local.get $this + local.get $e + i32.store offset=12 + ) + (func $inlining/Bar#set:d (param $this i32) (param $d i32) + local.get $this + local.get $d + i32.store offset=8 + ) + (func $inlining/Baz#get:a (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $inlining/Baz#get:b (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $inlining/Bar#get:d (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $inlining/Bar#get:e (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $start:inlining + call $inlining/test + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $inlining/test_funcs + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $inlining/test_ctor + ) + (func $~lib/math/NativeMath.cbrt (param $x f64) (result f64) + (local $u i64) + (local $hx i32) + (local $t f64) + (local $r f64) + (local $s f64) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.set $hx + local.get $hx + i32.const 2146435072 + i32.ge_u + if + local.get $x + local.get $x + f64.add + return + end + local.get $hx + i32.const 1048576 + i32.lt_u + if + local.get $x + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.set $hx + local.get $hx + i32.const 0 + i32.eq + if + local.get $x + return + end + local.get $hx + i32.const 3 + i32.div_u + i32.const 696219795 + i32.add + local.set $hx + else + local.get $hx + i32.const 3 + i32.div_u + i32.const 715094163 + i32.add + local.set $hx + end + local.get $u + i64.const 1 + i64.const 63 + i64.shl + i64.and + local.set $u + local.get $u + local.get $hx + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + local.set $u + local.get $u + f64.reinterpret_i64 + local.set $t + local.get $t + local.get $t + f64.mul + local.get $t + local.get $x + f64.div + f64.mul + local.set $r + local.get $t + f64.const 1.87595182427177 + local.get $r + f64.const -1.8849797954337717 + local.get $r + f64.const 1.6214297201053545 + f64.mul + f64.add + f64.mul + f64.add + local.get $r + local.get $r + f64.mul + local.get $r + f64.mul + f64.const -0.758397934778766 + local.get $r + f64.const 0.14599619288661245 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $t + local.get $t + i64.reinterpret_f64 + i64.const 2147483648 + i64.add + i64.const -1073741824 + i64.and + f64.reinterpret_i64 + local.set $t + local.get $t + local.get $t + f64.mul + local.set $s + local.get $x + local.get $s + f64.div + local.set $r + local.get $r + local.get $t + f64.sub + f64.const 2 + local.get $t + f64.mul + local.get $r + f64.add + f64.div + local.set $r + local.get $t + local.get $t + local.get $r + f64.mul + f64.add + local.set $t + local.get $t + return + ) + (func $inlining/foo (param $a i32) (param $b i32) (param $c i32) (result f64) + local.get $a + f64.convert_i32_s + local.get $b + f64.convert_i32_s + call $~lib/math/NativeMath.cbrt + f64.mul + local.get $c + f64.convert_i32_s + f64.add + return + ) + (func $inlining/bar (param $a i32) (param $b i32) (param $c i32) (result f64) + (local $a|3 i32) + (local $b|4 i32) + (local $c|5 i32) + block $inlining/foo|inlined.0 (result f64) + local.get $a + local.set $a|3 + local.get $b + local.set $b|4 + local.get $c + local.set $c|5 + local.get $a|3 + f64.convert_i32_s + local.get $b|4 + f64.convert_i32_s + call $~lib/math/NativeMath.cbrt + f64.mul + local.get $c|5 + f64.convert_i32_s + f64.add + br $inlining/foo|inlined.0 + end + local.get $b + local.get $a + local.get $c + call $inlining/foo + f64.div + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 304 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 112 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $inlining/Baz + block $inlining/Bar + block $inlining/Foo + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $inlining/Foo $inlining/Bar $inlining/Baz $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:inlining + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33328 + i32.const 33376 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $inlining/test_ctor + (local $this i32) + (local $f i32) + (local $this|2 i32) + (local $c i32) + (local $bar i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $this + i32.const 4 + local.set $f + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + call $inlining/Bar#set:d + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + call $inlining/Bar#set:e + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $this|2 + i32.store offset=8 + i32.const 2 + local.set $c + local.get $this|2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this|2 + i32.store offset=8 + end + local.get $this|2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + call $inlining/Baz#set:a + local.get $this|2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + call $inlining/Baz#set:b + local.get $this|2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $c + call $inlining/Baz#set:b + local.get $this|2 + local.tee $this + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $f + call $inlining/Bar#set:e + local.get $this + local.tee $bar + i32.store offset=12 + local.get $bar + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $inlining/Baz#get:a + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $bar + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $inlining/Baz#get:b + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $bar + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $inlining/Bar#get:d + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $bar + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $inlining/Bar#get:e + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 99 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/inlining.json b/tests/compiler/inlining.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/inlining.json +++ b/tests/compiler/inlining.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat deleted file mode 100644 index 40b5a9b781..0000000000 --- a/tests/compiler/inlining.optimized.wat +++ /dev/null @@ -1,206 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s") - (data (i32.const 1072) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (table $0 2 funcref) - (elem (i32.const 1) $inlining/func_fe~anonymous|0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "test" (func $inlining/test)) - (start $~start) - (func $inlining/test (result i32) - i32.const 3 - ) - (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $5 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $inlining/test_ctor - (local $0 i32) - i32.const 16 - i32.const 5 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 3 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 6 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - i32.const 2 - i32.const 1088 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1104 - global.set $~lib/rt/stub/offset - call $inlining/test_ctor - ) -) diff --git a/tests/compiler/inlining.release.wat b/tests/compiler/inlining.release.wat new file mode 100644 index 0000000000..d8a449feae --- /dev/null +++ b/tests/compiler/inlining.release.wat @@ -0,0 +1,1973 @@ +(module + (type $0 (func)) + (type $1 (func (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32) (result f64))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64))) + (type $9 (func (param f64) (result f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34324)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s") + (data $1 (i32.const 1084) "\1c") + (data $1.1 (i32.const 1096) "\04\00\00\00\08\00\00\00\01") + (data $2 (i32.const 1116) "<") + (data $2.1 (i32.const 1128) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $3 (i32.const 1180) "<") + (data $3.1 (i32.const 1192) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $6 (i32.const 1308) "<") + (data $6.1 (i32.const 1320) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $7 (i32.const 1372) ",") + (data $7.1 (i32.const 1384) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $9 (i32.const 1452) "<") + (data $9.1 (i32.const 1464) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 1520) "\08\00\00\00 \00\00\00 \00\00\00 ") + (data $10.1 (i32.const 1544) " \00\00\00 \00\00\00 ") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $inlining/func_fe~anonymous|0) + (export "test" (func $inlining/test)) + (export "foo" (func $inlining/foo)) + (export "bar" (func $inlining/bar)) + (export "memory" (memory $0)) + (start $~start) + (func $inlining/test (result i32) + i32.const 3 + ) + (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) + i32.const 2 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1328 + call $~lib/rt/itcms/__visit + i32.const 1136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1200 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$125 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34324 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$125 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1520 + i32.load + i32.gt_u + if + i32.const 1328 + i32.const 1392 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1524 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1472 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34336 + i32.const 35908 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34336 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34324 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1200 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34324 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34324 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1472 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1136 + i32.const 1200 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1136 + i32.const 1472 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1472 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $start:inlining + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 2 + i32.const 1104 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 123 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 123 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + memory.size + i32.const 16 + i32.shl + i32.const 34324 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/pinSpace + i32.const 1284 + i32.const 1280 + i32.store + i32.const 1288 + i32.const 1280 + i32.store + i32.const 1280 + global.set $~lib/rt/itcms/toSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store offset=4 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 99 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/math/NativeMath.cbrt (param $0 f64) (result f64) + (local $1 i32) + (local $2 i64) + (local $3 f64) + (local $4 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 2146435072 + i32.ge_u + if + local.get $0 + local.get $0 + f64.add + return + end + local.get $1 + i32.const 1048576 + i32.lt_u + if (result i32) + local.get $0 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + return + end + local.get $1 + i32.const 3 + i32.div_u + i32.const 696219795 + i32.add + else + local.get $1 + i32.const 3 + i32.div_u + i32.const 715094163 + i32.add + end + local.set $1 + local.get $2 + i64.const -9223372036854775808 + i64.and + local.get $1 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + local.tee $4 + local.get $4 + f64.mul + local.get $4 + local.get $0 + f64.div + f64.mul + local.set $3 + local.get $0 + local.get $4 + local.get $3 + local.get $3 + f64.const 1.6214297201053545 + f64.mul + f64.const -1.8849797954337717 + f64.add + f64.mul + f64.const 1.87595182427177 + f64.add + local.get $3 + local.get $3 + f64.mul + local.get $3 + f64.mul + local.get $3 + f64.const 0.14599619288661245 + f64.mul + f64.const -0.758397934778766 + f64.add + f64.mul + f64.add + f64.mul + i64.reinterpret_f64 + i64.const 2147483648 + i64.add + i64.const -1073741824 + i64.and + f64.reinterpret_i64 + local.tee $0 + local.get $0 + f64.mul + f64.div + local.set $3 + local.get $0 + local.get $0 + local.get $3 + local.get $0 + f64.sub + local.get $0 + local.get $0 + f64.add + local.get $3 + f64.add + f64.div + f64.mul + f64.add + ) + (func $inlining/foo (param $0 i32) (param $1 i32) (param $2 i32) (result f64) + local.get $0 + f64.convert_i32_s + local.get $1 + f64.convert_i32_s + call $~lib/math/NativeMath.cbrt + f64.mul + local.get $2 + f64.convert_i32_s + f64.add + ) + (func $inlining/bar (param $0 i32) (param $1 i32) (param $2 i32) (result f64) + (local $3 f64) + (local $4 f64) + (local $5 f64) + local.get $0 + f64.convert_i32_s + local.tee $3 + local.get $1 + f64.convert_i32_s + local.tee $4 + call $~lib/math/NativeMath.cbrt + f64.mul + local.get $2 + f64.convert_i32_s + local.tee $5 + f64.add + local.get $4 + local.get $3 + call $~lib/math/NativeMath.cbrt + f64.mul + local.get $5 + f64.add + f64.div + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $inlining/Baz + block $inlining/Bar + block $inlining/Foo + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $inlining/Foo $inlining/Bar $inlining/Baz $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:inlining + ) +) diff --git a/tests/compiler/inlining.ts b/tests/compiler/inlining.ts index 1c98d1de75..0758d7176d 100644 --- a/tests/compiler/inlining.ts +++ b/tests/compiler/inlining.ts @@ -62,6 +62,7 @@ function test_funcs(): void { assert(func_ii(43) == 3); assert(func_ii_opt() == 0); assert(func_ii_opt(1) == 1); + assert(func_ii_opt(func_ii_opt(1)) == 1); assert(func_ii_loc(2) == 3); assert(func_ii_loc(3) == 4); func_iv(0); @@ -99,3 +100,11 @@ function test_ctor(): void { } test_ctor(); + +export function foo(a: i32, b: i32, c: i32): f64 { + return a * Math.cbrt(b) + c; +} + +export function bar(a: i32, b: i32, c: i32): f64 { + return inline.always(foo(a, b, c)) / foo(b, a, c); +} diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat deleted file mode 100644 index 50202075bc..0000000000 --- a/tests/compiler/inlining.untouched.wat +++ /dev/null @@ -1,471 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param 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_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 64) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (table $0 2 funcref) - (elem (i32.const 1) $inlining/func_fe~anonymous|0) - (global $inlining/constantGlobal i32 (i32.const 1)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 88)) - (export "memory" (memory $0)) - (export "test" (func $inlining/test)) - (start $~start) - (func $inlining/test (result i32) - global.get $inlining/constantGlobal - i32.const 2 - i32.add - ) - (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $inlining/test_funcs - (local $0 f32) - (local $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - f32.const -1 - local.set $0 - f64.const -2 - local.set $1 - block $inlining/func_ii|inlined.0 (result i32) - i32.const 42 - local.set $2 - local.get $2 - i32.const 42 - i32.eq - if - i32.const 1 - br $inlining/func_ii|inlined.0 - end - local.get $2 - i32.const 42 - i32.lt_s - if (result i32) - i32.const 2 - else - i32.const 3 - end - end - i32.const 1 - i32.eq - drop - block $inlining/func_ii|inlined.1 (result i32) - i32.const 41 - local.set $2 - local.get $2 - i32.const 42 - i32.eq - if - i32.const 1 - br $inlining/func_ii|inlined.1 - end - local.get $2 - i32.const 42 - i32.lt_s - if (result i32) - i32.const 2 - else - i32.const 3 - end - end - i32.const 2 - i32.eq - drop - block $inlining/func_ii|inlined.2 (result i32) - i32.const 43 - local.set $2 - local.get $2 - i32.const 42 - i32.eq - if - i32.const 1 - br $inlining/func_ii|inlined.2 - end - local.get $2 - i32.const 42 - i32.lt_s - if (result i32) - i32.const 2 - else - i32.const 3 - end - end - i32.const 3 - i32.eq - drop - i32.const 0 - local.set $2 - local.get $2 - i32.const 0 - i32.eq - drop - i32.const 1 - local.set $2 - local.get $2 - i32.const 1 - i32.eq - drop - i32.const 2 - local.set $2 - local.get $2 - local.set $3 - i32.const 1 - drop - local.get $3 - local.set $5 - local.get $5 - local.set $6 - local.get $6 - i32.const 1 - i32.add - local.set $4 - local.get $4 - i32.const 3 - i32.eq - drop - i32.const 3 - local.set $5 - local.get $5 - local.set $4 - i32.const 1 - drop - local.get $4 - local.set $2 - local.get $2 - local.set $6 - local.get $6 - i32.const 1 - i32.add - local.set $3 - local.get $3 - i32.const 4 - i32.eq - drop - i32.const 0 - local.set $2 - i32.const 2 - i32.const 1 - global.set $~argumentsLength - i32.const 80 - call $~lib/rt/stub/__retain - local.tee $2 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 42 - local.set $6 - i32.const 2 - local.set $3 - local.get $6 - local.get $3 - i32.add - i32.const 44 - i32.eq - drop - i32.const 123 - call $~lib/rt/stub/__retain - local.set $7 - local.get $7 - local.set $4 - i32.const 43 - local.set $5 - i32.const 3 - local.set $3 - local.get $4 - call $~lib/rt/stub/__retain - local.tee $3 - i32.const 123 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 71 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $inlining/test_ctor - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.set $1 - local.get $1 - i32.eqz - if - i32.const 16 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $1 - end - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - i32.const 4 - local.set $0 - local.get $1 - local.set $3 - local.get $3 - i32.eqz - if - i32.const 8 - i32.const 6 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $3 - end - local.get $3 - i32.const 1 - i32.store - local.get $3 - i32.const 0 - i32.store offset=4 - i32.const 2 - local.set $2 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $3 - local.set $1 - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - local.set $4 - local.get $4 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=8 - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=12 - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/stub/__release - ) - (func $start:inlining - call $inlining/test - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $inlining/test_funcs - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - call $inlining/test_ctor - ) - (func $~start - call $start:inlining - ) -) diff --git a/tests/compiler/instanceof-class.json b/tests/compiler/instanceof-class.json deleted file mode 100644 index b1da366ff4..0000000000 --- a/tests/compiler/instanceof-class.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} \ No newline at end of file diff --git a/tests/compiler/instanceof-class.optimized.wat b/tests/compiler/instanceof-class.optimized.wat deleted file mode 100644 index e1d5c7c1c4..0000000000 --- a/tests/compiler/instanceof-class.optimized.wat +++ /dev/null @@ -1,163 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00-\00c\00l\00a\00s\00s\00.\00t\00s") - (data (i32.const 1088) "\07\00\00\00 \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\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\05") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $instanceof-class/b (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - i32.const 16 - i32.add - local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $4 - local.get $1 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $4 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $1 - global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 - i32.sub - local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $3 - ) - (func $~start - (local $0 i32) - i32.const 1152 - global.set $~lib/rt/stub/offset - i32.const 3 - call $~lib/rt/stub/__alloc - i32.eqz - if - i32.const 4 - call $~lib/rt/stub/__alloc - drop - end - i32.const 6 - call $~lib/rt/stub/__alloc - local.tee $0 - if (result i32) - local.get $0 - else - i32.const 5 - call $~lib/rt/stub/__alloc - end - global.set $instanceof-class/b - block $__inlined_func$instanceof-class/Child~instanceof (result i32) - i32.const 0 - global.get $instanceof-class/b - local.tee $0 - i32.eqz - br_if $__inlined_func$instanceof-class/Child~instanceof - drop - i32.const 1 - local.get $0 - i32.const 3 - call $~lib/rt/__instanceof - br_if $__inlined_func$instanceof-class/Child~instanceof - drop - i32.const 1 - local.get $0 - i32.const 6 - call $~lib/rt/__instanceof - br_if $__inlined_func$instanceof-class/Child~instanceof - drop - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/__instanceof (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=8 - local.tee $0 - i32.const 1088 - i32.load - i32.le_u - if - loop $do-continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1092 - i32.add - i32.load offset=4 - local.tee $0 - br_if $do-continue|0 - end - end - i32.const 0 - ) -) diff --git a/tests/compiler/instanceof-class.ts b/tests/compiler/instanceof-class.ts deleted file mode 100644 index 7f85869576..0000000000 --- a/tests/compiler/instanceof-class.ts +++ /dev/null @@ -1,18 +0,0 @@ -class Parent { -} - -class Child extends Parent { -} - -class SomethingElse { -} - -var a: Child = new Child(); -assert(a instanceof Child); // static true -assert(a instanceof Parent); // static true -assert(!(a instanceof SomethingElse)); // static false - -var b: Parent = new Child(); -assert(b instanceof Parent); // static true -assert(b instanceof Child); // dynamic true (checks Child, Child) -assert(!(b instanceof SomethingElse)); // static false diff --git a/tests/compiler/instanceof-class.untouched.wat b/tests/compiler/instanceof-class.untouched.wat deleted file mode 100644 index 67f434a05b..0000000000 --- a/tests/compiler/instanceof-class.untouched.wat +++ /dev/null @@ -1,294 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (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))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00-\00c\00l\00a\00s\00s\00.\00t\00s\00") - (data (i32.const 80) "\07\00\00\00 \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\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\05\00\00\00") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $instanceof-class/a (mut i32) (i32.const 0)) - (global $instanceof-class/b (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 80)) - (global $~lib/heap/__heap_base i32 (i32.const 140)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $instanceof-class/Parent#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $instanceof-class/Child#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $instanceof-class/Parent#constructor - local.set $0 - local.get $0 - ) - (func $instanceof-class/Parent#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $instanceof-class/Child#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 6 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $instanceof-class/Parent#constructor - local.set $0 - local.get $0 - ) - (func $start:instanceof-class - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - call $instanceof-class/Child#constructor - global.set $instanceof-class/a - i32.const 1 - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - call $instanceof-class/Child#constructor - global.set $instanceof-class/b - i32.const 1 - drop - global.get $instanceof-class/b - call $instanceof-class/Child~instanceof - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.eqz - drop - ) - (func $~start - call $start:instanceof-class - ) - (func $~lib/rt/__instanceof (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=8 - local.set $2 - global.get $~lib/rt/__rtti_base - local.set $3 - local.get $2 - local.get $3 - i32.load - i32.le_u - if - loop $do-continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - local.set $4 - local.get $4 - br_if $do-continue|0 - end - end - i32.const 0 - ) - (func $instanceof-class/Child~instanceof (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - return - end - local.get $0 - i32.const 3 - call $~lib/rt/__instanceof - if - i32.const 1 - return - end - local.get $0 - i32.const 6 - call $~lib/rt/__instanceof - if - i32.const 1 - return - end - i32.const 0 - return - ) -) diff --git a/tests/compiler/instanceof.debug.wat b/tests/compiler/instanceof.debug.wat new file mode 100644 index 0000000000..6cf9d166a7 --- /dev/null +++ b/tests/compiler/instanceof.debug.wat @@ -0,0 +1,7039 @@ +(module + (type $0 (func (param i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param f64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $instanceof/a (mut i32) (i32.const 0)) + (global $instanceof/b (mut i32) (i32.const 0)) + (global $instanceof/i (mut i32) (i32.const 0)) + (global $instanceof/I (mut i64) (i64.const 0)) + (global $instanceof/f (mut f32) (f32.const 0)) + (global $instanceof/F (mut f64) (f64.const 0)) + (global $instanceof/an (mut i32) (i32.const 0)) + (global $instanceof/child (mut i32) (i32.const 0)) + (global $instanceof/childAsParent (mut i32) (i32.const 0)) + (global $instanceof/animal (mut i32) (i32.const 0)) + (global $instanceof/cat (mut i32) (i32.const 0)) + (global $instanceof/blackcat (mut i32) (i32.const 0)) + (global $instanceof/nullableAnimal (mut i32) (i32.const 0)) + (global $instanceof/nullableCat (mut i32) (i32.const 0)) + (global $instanceof/nullableBlackcat (mut i32) (i32.const 0)) + (global $instanceof/nullAnimal (mut i32) (i32.const 0)) + (global $instanceof/nullCat (mut i32) (i32.const 0)) + (global $instanceof/nullBlackcat (mut i32) (i32.const 0)) + (global $instanceof/w (mut i32) (i32.const 0)) + (global $instanceof/x (mut i32) (i32.const 0)) + (global $instanceof/y (mut i32) (i32.const 0)) + (global $instanceof/z (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 464)) + (global $~lib/memory/__data_end i32 (i32.const 564)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33332)) + (global $~lib/memory/__heap_base i32 (i32.const 33332)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00\00\00") + (data $9 (i32.const 464) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $instanceof/A#checkInstanceof (param $this i32) + ) + (func $instanceof/isI32 (param $v i32) (result i32) + i32.const 1 + drop + i32.const 1 + return + ) + (func $instanceof/isI32 (param $v f64) (result i32) + i32.const 0 + drop + i32.const 0 + return + ) + (func $instanceof/isI32 (param $v i32) (result i32) + i32.const 0 + drop + i32.const 0 + return + ) + (func $instanceof/isI32 (param $v i32) (result i32) + i32.const 0 + drop + i32.const 0 + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/W>" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/W + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/X + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Y + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Z + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/IA>" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/IA + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/IB>" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/IB + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/IC>" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/IC + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/ID>" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/ID + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertDynamicFalse" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Y + end + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicFalse" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Z + end + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Y + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Z + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertDynamicFalse" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Z + end + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Z + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertDynamicFalse" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/IC + end + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicFalse" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/IC + end + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicFalse" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/ID + end + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicFalse" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/ID + end + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/IC + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/IC + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/ID + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/ID + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertDynamicFalse" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/ID + end + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicFalse" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/IC + end + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/ID + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/IC + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticTrue" (param $value i32) + i32.const 1 + drop + return + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertStaticFalse" (param $value i32) + i32.const 0 + i32.eqz + drop + return + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/X + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/X + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Y + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Y + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Y + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Y + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Z + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Z + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Z + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue" (param $value i32) + (local $1 i32) + (local $check i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $value + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Z + end + i32.eqz + if + i32.const 0 + local.set $check + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $instanceof/C#checkInstanceof (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/a + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/C + end + if + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $instanceof/A#checkInstanceof@override (param $0 i32) + (local $1 i32) + block $default + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 6 + i32.eq + br_if $case0 + br $default + end + local.get $0 + call $instanceof/C#checkInstanceof + return + end + local.get $0 + call $instanceof/A#checkInstanceof + ) + (func $~instanceof|instanceof/B (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 5 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~instanceof|instanceof/Child (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 9 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~anyinstanceof|instanceof/Child (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 7 + i32.eq + br_if $is_instance + local.get $1 + i32.const 9 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~instanceof|instanceof/Cat (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 13 + i32.eq + br_if $is_instance + local.get $1 + i32.const 14 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~instanceof|instanceof/BlackCat (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 14 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~instanceof|instanceof/W (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 15 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~instanceof|instanceof/X (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 16 + i32.eq + br_if $is_instance + local.get $1 + i32.const 19 + i32.eq + br_if $is_instance + local.get $1 + i32.const 22 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~instanceof|instanceof/Y (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 19 + i32.eq + br_if $is_instance + local.get $1 + i32.const 22 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~instanceof|instanceof/Z (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 22 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~instanceof|instanceof/IA (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 16 + i32.eq + br_if $is_instance + local.get $1 + i32.const 19 + i32.eq + br_if $is_instance + local.get $1 + i32.const 22 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~instanceof|instanceof/IB (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 16 + i32.eq + br_if $is_instance + local.get $1 + i32.const 19 + i32.eq + br_if $is_instance + local.get $1 + i32.const 22 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~instanceof|instanceof/IC (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 19 + i32.eq + br_if $is_instance + local.get $1 + i32.const 22 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~instanceof|instanceof/ID (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 19 + i32.eq + br_if $is_instance + local.get $1 + i32.const 22 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~instanceof|instanceof/C (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 6 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $instanceof/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/b + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/an + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/child + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/childAsParent + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/animal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/cat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/blackcat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullableAnimal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullableCat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullableBlackcat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullAnimal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullCat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullBlackcat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/w + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/x + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/y + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/z + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $instanceof/IE + block $instanceof/Z + block $instanceof/IC + block $instanceof/ID + block $instanceof/Y + block $instanceof/IA + block $instanceof/IB + block $instanceof/X + block $instanceof/W + block $instanceof/BlackCat + block $instanceof/Cat + block $instanceof/Animal + block $instanceof/SomethingElse + block $instanceof/Parent + block $instanceof/Child + block $instanceof/Parent + block $instanceof/Child + block $instanceof/C + block $instanceof/B + block $instanceof/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $instanceof/A $instanceof/B $instanceof/C $instanceof/Child $instanceof/Parent $instanceof/Child $instanceof/Parent $instanceof/SomethingElse $instanceof/Animal $instanceof/Cat $instanceof/BlackCat $instanceof/W $instanceof/X $instanceof/IB $instanceof/IA $instanceof/Y $instanceof/ID $instanceof/IC $instanceof/Z $instanceof/IE $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:instanceof + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33360 + i32.const 33408 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $instanceof/A#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof/B#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $instanceof/A#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof/C#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $instanceof/A#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof/Parent#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof/Child#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $instanceof/Parent#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof/Parent#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof/Child#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $instanceof/Parent#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof/Animal#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof/Cat#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $instanceof/Animal#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof/BlackCat#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $instanceof/Cat#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof/W#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof/X#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof/Y#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $instanceof/X#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof/Z#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $instanceof/Y#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:instanceof + (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) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + global.get $~lib/memory/__stack_pointer + i32.const 88 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 88 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $instanceof/A#constructor + global.set $instanceof/a + i32.const 0 + call $instanceof/B#constructor + global.set $instanceof/b + i32.const 0 + call $instanceof/C#constructor + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $instanceof/A#checkInstanceof@override + i32.const 1 + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + global.get $~lib/memory/__stack_pointer + global.get $instanceof/a + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $0 + call $~instanceof|instanceof/B + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + call $instanceof/isI32 + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $instanceof/isI32 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $instanceof/isI32 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $instanceof/isI32 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $instanceof/an + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + i32.const 1 + global.set $instanceof/an + global.get $instanceof/an + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 103 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + i32.const 0 + call $instanceof/Child#constructor + global.set $instanceof/child + i32.const 1 + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + call $instanceof/Child#constructor + global.set $instanceof/childAsParent + i32.const 1 + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + global.get $~lib/memory/__stack_pointer + global.get $instanceof/childAsParent + local.tee $1 + i32.store offset=8 + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|instanceof/Child + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.eqz + drop + global.get $~lib/memory/__stack_pointer + global.get $instanceof/childAsParent + local.tee $2 + i32.store offset=12 + local.get $2 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $2 + call $~anyinstanceof|instanceof/Child + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.eqz + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + call $instanceof/Animal#constructor + global.set $instanceof/animal + i32.const 0 + call $instanceof/Cat#constructor + global.set $instanceof/cat + i32.const 0 + call $instanceof/BlackCat#constructor + global.set $instanceof/blackcat + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + global.get $instanceof/animal + local.tee $3 + i32.store offset=16 + local.get $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + call $~instanceof|instanceof/Cat + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/animal + local.tee $4 + i32.store offset=20 + local.get $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + call $~instanceof|instanceof/BlackCat + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + global.get $instanceof/cat + local.tee $5 + i32.store offset=24 + local.get $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + call $~instanceof|instanceof/Cat + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 147 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/cat + local.tee $6 + i32.store offset=28 + local.get $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + call $~instanceof|instanceof/BlackCat + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 148 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + global.get $instanceof/blackcat + local.tee $7 + i32.store offset=32 + local.get $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + call $~instanceof|instanceof/Cat + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/blackcat + local.tee $8 + i32.store offset=36 + local.get $8 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $8 + call $~instanceof|instanceof/BlackCat + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $instanceof/Animal#constructor + global.set $instanceof/nullableAnimal + i32.const 0 + call $instanceof/Cat#constructor + global.set $instanceof/nullableCat + i32.const 0 + call $instanceof/BlackCat#constructor + global.set $instanceof/nullableBlackcat + global.get $instanceof/nullableAnimal + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullableAnimal + local.tee $9 + i32.store offset=40 + local.get $9 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $9 + call $~instanceof|instanceof/Cat + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 159 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullableAnimal + local.tee $10 + i32.store offset=44 + local.get $10 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $10 + call $~instanceof|instanceof/BlackCat + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 160 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $instanceof/nullableCat + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullableCat + local.tee $11 + i32.store offset=48 + local.get $11 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $11 + call $~instanceof|instanceof/Cat + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullableCat + local.tee $12 + i32.store offset=52 + local.get $12 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $12 + call $~instanceof|instanceof/BlackCat + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 164 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $instanceof/nullableBlackcat + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullableBlackcat + local.tee $13 + i32.store offset=56 + local.get $13 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $13 + call $~instanceof|instanceof/Cat + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 167 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullableBlackcat + local.tee $14 + i32.store offset=60 + local.get $14 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $14 + call $~instanceof|instanceof/BlackCat + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 168 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $instanceof/nullAnimal + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 174 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullAnimal + local.tee $15 + i32.store offset=64 + local.get $15 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $15 + call $~instanceof|instanceof/Cat + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullAnimal + local.tee $16 + i32.store offset=68 + local.get $16 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $16 + call $~instanceof|instanceof/BlackCat + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 176 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $instanceof/nullCat + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 178 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullCat + local.tee $17 + i32.store offset=72 + local.get $17 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $17 + call $~instanceof|instanceof/Cat + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 179 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullCat + local.tee $18 + i32.store offset=76 + local.get $18 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $18 + call $~instanceof|instanceof/BlackCat + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 180 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $instanceof/nullBlackcat + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 182 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullBlackcat + local.tee $19 + i32.store offset=80 + local.get $19 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $19 + call $~instanceof|instanceof/Cat + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullBlackcat + local.tee $20 + i32.store offset=84 + local.get $20 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $20 + call $~instanceof|instanceof/BlackCat + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 184 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $instanceof/W#constructor + global.set $instanceof/w + i32.const 0 + call $instanceof/X#constructor + global.set $instanceof/x + i32.const 0 + call $instanceof/Y#constructor + global.set $instanceof/y + i32.const 0 + call $instanceof/Z#constructor + global.set $instanceof/z + global.get $instanceof/w + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/w + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/W>" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/IA>" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/IB>" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/IA>" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/IB>" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/IC>" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/ID>" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/IA>" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/IB>" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/IC>" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/ID>" + global.get $instanceof/w + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/w + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/w + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/w + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicFalse" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicFalse" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicFalse" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertStaticFalse" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/x + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/y + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $instanceof/z + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store + local.get $21 + call $"instanceof/assertDynamicTrue" + global.get $~lib/memory/__stack_pointer + i32.const 88 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/instanceof.json b/tests/compiler/instanceof.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/instanceof.json +++ b/tests/compiler/instanceof.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/instanceof.optimized.wat b/tests/compiler/instanceof.optimized.wat deleted file mode 100644 index e3ce4e0ac0..0000000000 --- a/tests/compiler/instanceof.optimized.wat +++ /dev/null @@ -1,23 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") - (global $instanceof/an (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~start - global.get $instanceof/an - if - i32.const 0 - i32.const 1040 - i32.const 68 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $instanceof/an - ) -) diff --git a/tests/compiler/instanceof.release.wat b/tests/compiler/instanceof.release.wat new file mode 100644 index 0000000000..bdbf1e3b54 --- /dev/null +++ b/tests/compiler/instanceof.release.wat @@ -0,0 +1,3591 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32))) + (type $2 (func)) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $instanceof/a (mut i32) (i32.const 0)) + (global $instanceof/b (mut i32) (i32.const 0)) + (global $instanceof/an (mut i32) (i32.const 0)) + (global $instanceof/child (mut i32) (i32.const 0)) + (global $instanceof/childAsParent (mut i32) (i32.const 0)) + (global $instanceof/animal (mut i32) (i32.const 0)) + (global $instanceof/cat (mut i32) (i32.const 0)) + (global $instanceof/blackcat (mut i32) (i32.const 0)) + (global $instanceof/nullableAnimal (mut i32) (i32.const 0)) + (global $instanceof/nullableCat (mut i32) (i32.const 0)) + (global $instanceof/nullableBlackcat (mut i32) (i32.const 0)) + (global $instanceof/w (mut i32) (i32.const 0)) + (global $instanceof/x (mut i32) (i32.const 0)) + (global $instanceof/y (mut i32) (i32.const 0)) + (global $instanceof/z (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34356)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) ",") + (data $8.1 (i32.const 1448) "\02\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") + (data $9 (i32.const 1488) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $instanceof/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/b + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/an + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/child + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/childAsParent + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/animal + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/cat + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/blackcat + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullableAnimal + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullableCat + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullableBlackcat + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/w + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/x + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/y + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/z + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$241 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34356 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$241 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34368 + i32.const 0 + i32.store + i32.const 35936 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34368 + i32.const 35940 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34368 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34356 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + if (result i32) + block $__inlined_func$~instanceof|instanceof/X$76 (result i32) + block $is_instance + block $tablify|0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 16 + i32.sub + br_table $is_instance $tablify|0 $tablify|0 $is_instance $tablify|0 $tablify|0 $is_instance $tablify|0 + end + i32.const 0 + br $__inlined_func$~instanceof|instanceof/X$76 + end + i32.const 1 + end + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + if (result i32) + block $__inlined_func$~instanceof|instanceof/Y$78 (result i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 19 + i32.eq + br_if $is_instance + local.get $0 + i32.const 22 + i32.eq + br_if $is_instance + i32.const 0 + br $__inlined_func$~instanceof|instanceof/Y$78 + end + i32.const 1 + end + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 22 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicFalse" (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + if (result i32) + block $__inlined_func$~instanceof|instanceof/Y$82 (result i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 19 + i32.eq + br_if $is_instance + local.get $0 + i32.const 22 + i32.eq + br_if $is_instance + i32.const 0 + br $__inlined_func$~instanceof|instanceof/Y$82 + end + i32.const 1 + end + else + i32.const 0 + end + if + i32.const 0 + i32.const 1456 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicFalse" (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 22 + i32.eq + else + i32.const 0 + end + if + i32.const 0 + i32.const 1456 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $instanceof/IE + block $instanceof/Z + block $instanceof/IC + block $instanceof/ID + block $instanceof/Y + block $instanceof/IA + block $instanceof/IB + block $instanceof/X + block $instanceof/W + block $instanceof/BlackCat + block $instanceof/Cat + block $instanceof/Animal + block $instanceof/SomethingElse + block $instanceof/Parent + block $instanceof/Child + block $instanceof/Parent + block $instanceof/Child + block $instanceof/C + block $instanceof/B + block $instanceof/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $instanceof/A $instanceof/B $instanceof/C $instanceof/Child $instanceof/Parent $instanceof/Child $instanceof/Parent $instanceof/SomethingElse $instanceof/Animal $instanceof/Cat $instanceof/BlackCat $instanceof/W $instanceof/X $instanceof/IB $instanceof/IA $instanceof/Y $instanceof/ID $instanceof/IC $instanceof/Z $instanceof/IE $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:instanceof + ) + (func $instanceof/A#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $instanceof/Animal#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $instanceof/Cat#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $instanceof/Animal#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $instanceof/BlackCat#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $instanceof/Cat#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $instanceof/X#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $instanceof/Y#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $instanceof/X#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $start:instanceof + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 88 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 88 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 34356 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $instanceof/A#constructor + global.set $instanceof/a + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $instanceof/A#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $instanceof/b + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $instanceof/A#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/a + local.tee $0 + i32.store + local.get $0 + if + local.get $0 + i32.const 8 + i32.sub + i32.load + drop + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/a + local.tee $0 + i32.store offset=4 + local.get $0 + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.eq + else + i32.const 0 + end + if + i32.const 0 + i32.const 1456 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $instanceof/an + if + i32.const 0 + i32.const 1456 + i32.const 100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $instanceof/an + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $instanceof/child + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $instanceof/childAsParent + global.get $~lib/memory/__stack_pointer + global.get $instanceof/childAsParent + local.tee $0 + i32.store offset=8 + local.get $0 + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 9 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/childAsParent + local.tee $0 + i32.store offset=12 + local.get $0 + if (result i32) + block $__inlined_func$~anyinstanceof|instanceof/Child$110 (result i32) + block $is_instance1 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 7 + i32.eq + br_if $is_instance1 + local.get $0 + i32.const 9 + i32.eq + br_if $is_instance1 + i32.const 0 + br $__inlined_func$~anyinstanceof|instanceof/Child$110 + end + i32.const 1 + end + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $instanceof/Animal#constructor + global.set $instanceof/animal + i32.const 0 + call $instanceof/Cat#constructor + global.set $instanceof/cat + call $instanceof/BlackCat#constructor + global.set $instanceof/blackcat + global.get $~lib/memory/__stack_pointer + global.get $instanceof/animal + local.tee $0 + i32.store offset=16 + local.get $0 + if (result i32) + block $__inlined_func$~instanceof|instanceof/Cat$111 (result i32) + block $is_instance2 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 13 + i32.eq + br_if $is_instance2 + local.get $0 + i32.const 14 + i32.eq + br_if $is_instance2 + i32.const 0 + br $__inlined_func$~instanceof|instanceof/Cat$111 + end + i32.const 1 + end + else + i32.const 0 + end + if + i32.const 0 + i32.const 1456 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/animal + local.tee $0 + i32.store offset=20 + local.get $0 + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.eq + else + i32.const 0 + end + if + i32.const 0 + i32.const 1456 + i32.const 144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/cat + local.tee $0 + i32.store offset=24 + local.get $0 + if (result i32) + block $__inlined_func$~instanceof|instanceof/Cat$113 (result i32) + block $is_instance4 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 13 + i32.eq + br_if $is_instance4 + local.get $0 + i32.const 14 + i32.eq + br_if $is_instance4 + i32.const 0 + br $__inlined_func$~instanceof|instanceof/Cat$113 + end + i32.const 1 + end + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 147 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/cat + local.tee $0 + i32.store offset=28 + local.get $0 + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.eq + else + i32.const 0 + end + if + i32.const 0 + i32.const 1456 + i32.const 148 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/blackcat + local.tee $0 + i32.store offset=32 + local.get $0 + if (result i32) + block $__inlined_func$~instanceof|instanceof/Cat$115 (result i32) + block $is_instance6 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 13 + i32.eq + br_if $is_instance6 + local.get $0 + i32.const 14 + i32.eq + br_if $is_instance6 + i32.const 0 + br $__inlined_func$~instanceof|instanceof/Cat$115 + end + i32.const 1 + end + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/blackcat + local.tee $0 + i32.store offset=36 + local.get $0 + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $instanceof/Animal#constructor + global.set $instanceof/nullableAnimal + i32.const 0 + call $instanceof/Cat#constructor + global.set $instanceof/nullableCat + call $instanceof/BlackCat#constructor + global.set $instanceof/nullableBlackcat + global.get $instanceof/nullableAnimal + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullableAnimal + local.tee $0 + i32.store offset=40 + local.get $0 + if (result i32) + block $__inlined_func$~instanceof|instanceof/Cat$117 (result i32) + block $is_instance8 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 13 + i32.eq + br_if $is_instance8 + local.get $0 + i32.const 14 + i32.eq + br_if $is_instance8 + i32.const 0 + br $__inlined_func$~instanceof|instanceof/Cat$117 + end + i32.const 1 + end + else + i32.const 0 + end + if + i32.const 0 + i32.const 1456 + i32.const 159 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullableAnimal + local.tee $0 + i32.store offset=44 + local.get $0 + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.eq + else + i32.const 0 + end + if + i32.const 0 + i32.const 1456 + i32.const 160 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $instanceof/nullableCat + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullableCat + local.tee $0 + i32.store offset=48 + local.get $0 + if (result i32) + block $__inlined_func$~instanceof|instanceof/Cat$119 (result i32) + block $is_instance10 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 13 + i32.eq + br_if $is_instance10 + local.get $0 + i32.const 14 + i32.eq + br_if $is_instance10 + i32.const 0 + br $__inlined_func$~instanceof|instanceof/Cat$119 + end + i32.const 1 + end + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullableCat + local.tee $0 + i32.store offset=52 + local.get $0 + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.eq + else + i32.const 0 + end + if + i32.const 0 + i32.const 1456 + i32.const 164 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $instanceof/nullableBlackcat + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullableBlackcat + local.tee $0 + i32.store offset=56 + local.get $0 + if (result i32) + block $__inlined_func$~instanceof|instanceof/Cat$121 (result i32) + block $is_instance12 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 13 + i32.eq + br_if $is_instance12 + local.get $0 + i32.const 14 + i32.eq + br_if $is_instance12 + i32.const 0 + br $__inlined_func$~instanceof|instanceof/Cat$121 + end + i32.const 1 + end + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 167 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $instanceof/nullableBlackcat + local.tee $0 + i32.store offset=60 + local.get $0 + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 168 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=76 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=80 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=84 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $instanceof/w + i32.const 0 + call $instanceof/X#constructor + global.set $instanceof/x + i32.const 0 + call $instanceof/Y#constructor + global.set $instanceof/y + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $instanceof/Y#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $instanceof/z + global.get $~lib/memory/__stack_pointer + global.get $instanceof/w + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/w + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 15 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/w + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/w + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/w + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/w + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicFalse" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicFalse" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicFalse" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicFalse" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicFalse" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicFalse" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicFalse" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicFalse" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicFalse" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicFalse" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + i32.store + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/x + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/y + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" + global.get $~lib/memory/__stack_pointer + global.get $instanceof/z + local.tee $0 + i32.store + local.get $0 + call $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" + global.get $~lib/memory/__stack_pointer + i32.const 88 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/instanceof.ts b/tests/compiler/instanceof.ts index 2cff1b0bc4..d1e4b27b8e 100644 --- a/tests/compiler/instanceof.ts +++ b/tests/compiler/instanceof.ts @@ -1,8 +1,40 @@ -class A {} +function assertStaticTrue(value: T): void { + if (value instanceof U) return; + ERROR("should be statically true"); +} +function assertStaticFalse(value: T): void { + if (!(value instanceof U)) return; + ERROR("should be statically false"); +} +function assertDynamicTrue(value: T): void { + if (!(value instanceof U)) { + var check: i32 = 0; + assert(false); + } + assert(isDefined(check)); +} +function assertDynamicFalse(value: T): void { + if (value instanceof U) { + var check: i32 = 0; + assert(false); + } + assert(isDefined(check)); +} + +class A { + checkInstanceof(): void {} +} class B extends A {} -var a: A; -var b: B; +var a: A = new A(); +class C extends A { + checkInstanceof(): void { + if (a instanceof C) { + } + } +} +var b: B = new B(); +(new C() as A).checkInstanceof(); var i: i32; var I: i64; var f: f32; @@ -15,7 +47,7 @@ assert(!(I instanceof A)); assert(!(f instanceof A)); assert(!(F instanceof A)); -// assert(!(a instanceof B)); // dynamic upcast, checked in rt/instanceof +assert(!(a instanceof B)); assert( b instanceof B ); assert(!(i instanceof B)); assert(!(I instanceof B)); @@ -71,5 +103,270 @@ an = changetype(1); assert( an instanceof A); // TS: !=null is an instance of A assert( an instanceof A | null); // AS: !=null is an instance of A | null -// TODO: keep track of nullability during flows, so this becomes precomputable: -// assert(an !== null && an instanceof A); +// Formerly instanceof-class + +class Parent {} +class Child extends Parent {} +class SomethingElse {} + +var child: Child = new Child(); +assert(child instanceof Child); // static true +assert(child instanceof Child); // static true +assert(!(child instanceof Child)); // static false +assert(child instanceof Parent); // static true +assert(child instanceof Parent); // static true +assert(!(child instanceof Parent)); // static false +assert(!(child instanceof SomethingElse)); // static false +assert(!(child instanceof SomethingElse)); // static false + +var childAsParent: Parent = new Child(); +assert(childAsParent instanceof Parent); // static true +assert(childAsParent instanceof Parent); // static true +assert(!(childAsParent instanceof Parent)); // static false +assert(childAsParent instanceof Child); // dynamic true +assert(!(childAsParent instanceof Child)); // dynamic false +assert(childAsParent instanceof Child); // dynamic true (checks Child, Child) +assert(!(childAsParent instanceof SomethingElse)); // static false +assert(!(childAsParent instanceof SomethingElse)); // static false + +// Formerly rt/instanceof + +class Animal {} +class Cat extends Animal {} +class BlackCat extends Cat {} + +var animal: Animal = new Animal(); +var cat: Animal = new Cat(); +var blackcat: Animal = new BlackCat(); + +assert(animal instanceof Animal); // static true +assert(!(animal instanceof Cat)); // dynamic false +assert(!(animal instanceof BlackCat)); // dynamic false + +assert(cat instanceof Animal); // static true +assert(cat instanceof Cat); // dynamic true +assert(!(cat instanceof BlackCat)); // dynamic false + +assert(blackcat instanceof Animal); // static true +assert(blackcat instanceof Cat); // dynamic true +assert(blackcat instanceof BlackCat); // dynamic true + +var nullableAnimal: Animal | null = new Animal(); +var nullableCat: Animal | null = new Cat(); +var nullableBlackcat: Animal | null = new BlackCat(); + +assert(nullableAnimal instanceof Animal); // static true +assert(!(nullableAnimal instanceof Cat)); // dynamic false +assert(!(nullableAnimal instanceof BlackCat)); // dynamic false + +assert(nullableCat instanceof Animal); // static true +assert(nullableCat instanceof Cat); // dynamic true +assert(!(nullableCat instanceof BlackCat)); // dynamic false + +assert(nullableBlackcat instanceof Animal); // static true +assert(nullableBlackcat instanceof Cat); // dynamic true +assert(nullableBlackcat instanceof BlackCat); // dynamic true + +var nullAnimal: Animal | null = null; +var nullCat: Animal | null = null; +var nullBlackcat: Animal | null = null; + +assert(!(nullAnimal instanceof Animal)); // static false +assert(!(nullAnimal instanceof Cat)); // dynamic false +assert(!(nullAnimal instanceof BlackCat)); // dynamic false + +assert(!(nullCat instanceof Animal)); // static false +assert(!(nullCat instanceof Cat)); // dynamic false +assert(!(nullCat instanceof BlackCat)); // dynamic false + +assert(!(nullBlackcat instanceof Animal)); // static false +assert(!(nullBlackcat instanceof Cat)); // dynamic false +assert(!(nullBlackcat instanceof BlackCat)); // dynamic false + +// Interfaces + +// IA W +// | +// IB IC IE +// | / +// X ID +// | / +// Y +// | +// Z +class W {} +interface IA {} +interface IB extends IA {} +class X implements IB {} +interface IC {} +interface ID extends IC {} +class Y extends X implements ID {} +class Z extends Y {} +interface IE {} + +let w = new W(); +let x = new X(); +let y = new Y(); +let z = new Z(); + +// instanceof Object + +assertStaticTrue(w); +assertStaticTrue(x); +assertStaticTrue(y); +assertStaticTrue(z); + +assertStaticTrue(x); +assertStaticTrue(x); +assertStaticTrue(y); +assertStaticTrue(y); +assertStaticTrue(y); +assertStaticTrue(y); +assertStaticTrue(z); +assertStaticTrue(z); +assertStaticTrue(z); +assertStaticTrue(z); + +// Object instanceof + +assertDynamicTrue(w); +assertDynamicTrue(x); +assertDynamicTrue(y); +assertDynamicTrue(z); +assertDynamicTrue(y); +assertDynamicTrue(z); +assertDynamicTrue(z); + +assertDynamicTrue(x); +assertDynamicTrue(x); +assertDynamicTrue(y); +assertDynamicTrue(y); +assertDynamicTrue(y); +assertDynamicTrue(y); +assertDynamicTrue(z); +assertDynamicTrue(z); +assertDynamicTrue(z); +assertDynamicTrue(z); + +// instanceof + +assertStaticTrue(w); +assertStaticFalse(w); +assertStaticFalse(w); +assertStaticFalse(w); +assertStaticFalse(x); +assertStaticFalse(y); +assertStaticFalse(z); + +assertStaticTrue(x); +assertDynamicFalse(x); +assertDynamicFalse(x); +assertStaticTrue(y); +assertDynamicTrue(y); +assertDynamicFalse(y); +assertStaticTrue(z); +assertDynamicTrue(z); +assertDynamicTrue(z); + +assertStaticTrue(y); +assertStaticTrue(y); +assertDynamicFalse(y); +assertStaticTrue(z); +assertStaticTrue(z); +assertDynamicTrue(z); + +assertStaticTrue(z); +assertStaticTrue(z); +assertStaticTrue(z); + +// instanceof + +assertDynamicFalse(x); +assertDynamicFalse(x); +assertDynamicFalse(x); +assertDynamicFalse(x); +assertStaticFalse(x); +assertStaticFalse(x); + +assertDynamicTrue(y); +assertDynamicTrue(y); +assertDynamicTrue(y); +assertDynamicTrue(y); +assertStaticFalse(y); +assertStaticFalse(y); + +assertDynamicTrue(z); +assertDynamicTrue(z); +assertDynamicTrue(z); +assertDynamicTrue(z); +assertStaticFalse(z); +assertStaticFalse(z); + +// instanceof + +assertStaticTrue(x); +assertStaticTrue(x); +assertDynamicFalse(x); +assertDynamicFalse(x); +assertStaticFalse(x); +assertStaticTrue(y); +assertStaticTrue(y); +assertDynamicTrue(y); +assertDynamicTrue(y); +assertStaticFalse(y); +assertStaticTrue(z); +assertStaticTrue(z); +assertDynamicTrue(z); +assertDynamicTrue(z); +assertStaticFalse(z); + +assertStaticTrue(y); +assertStaticTrue(y); +assertStaticTrue(y); +assertStaticTrue(y); +assertStaticFalse(y); +assertStaticTrue(z); +assertStaticTrue(z); +assertStaticTrue(z); +assertStaticTrue(z); +assertStaticFalse(z); + +assertStaticTrue(z); +assertStaticTrue(z); +assertStaticTrue(z); +assertStaticTrue(z); +assertStaticFalse(z); + +// instanceof + +assertStaticFalse(x); +assertStaticFalse(x); +assertStaticFalse(y); +assertStaticFalse(y); +assertStaticFalse(y); +assertStaticFalse(y); +assertStaticFalse(z); +assertStaticFalse(z); +assertStaticFalse(z); +assertStaticFalse(z); + +assertDynamicTrue(x); +assertDynamicTrue(x); +assertDynamicTrue(y); +assertDynamicTrue(y); +assertDynamicTrue(z); +assertDynamicTrue(z); + +assertDynamicTrue(y); +assertDynamicTrue(y); +assertDynamicTrue(y); +assertDynamicTrue(y); +assertDynamicTrue(z); +assertDynamicTrue(z); +assertDynamicTrue(z); +assertDynamicTrue(z); + +assertDynamicTrue(z); +assertDynamicTrue(z); +assertDynamicTrue(z); +assertDynamicTrue(z); diff --git a/tests/compiler/instanceof.untouched.wat b/tests/compiler/instanceof.untouched.wat deleted file mode 100644 index 50638d990a..0000000000 --- a/tests/compiler/instanceof.untouched.wat +++ /dev/null @@ -1,245 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00") - (table $0 1 funcref) - (global $instanceof/a (mut i32) (i32.const 0)) - (global $instanceof/b (mut i32) (i32.const 0)) - (global $instanceof/i (mut i32) (i32.const 0)) - (global $instanceof/I (mut i64) (i64.const 0)) - (global $instanceof/f (mut f32) (f32.const 0)) - (global $instanceof/F (mut f64) (f64.const 0)) - (global $instanceof/an (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $instanceof/isI32 (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 1 - return - ) - (func $instanceof/isI32 (param $0 f64) (result i32) - i32.const 0 - drop - i32.const 0 - return - ) - (func $instanceof/isI32 (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 0 - return - ) - (func $instanceof/isI32 (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 0 - return - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $start:instanceof - (local $0 i32) - (local $1 i32) - i32.const 1 - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 0 - i32.eqz - drop - i32.const 1 - drop - i32.const 0 - call $instanceof/isI32 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - call $instanceof/isI32 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $instanceof/isI32 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $instanceof/isI32 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 65 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $instanceof/an - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 68 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - i32.const 1 - local.tee $0 - global.get $instanceof/an - local.tee $1 - i32.ne - if - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - end - local.get $0 - global.set $instanceof/an - global.get $instanceof/an - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 71 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - ) - (func $~start - call $start:instanceof - ) -) diff --git a/tests/compiler/interface-with-initializer.json b/tests/compiler/interface-with-initializer.json new file mode 100644 index 0000000000..be54c01a3f --- /dev/null +++ b/tests/compiler/interface-with-initializer.json @@ -0,0 +1,7 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS1246: An interface property cannot have an initializer." + ] +} diff --git a/tests/compiler/interface-with-initializer.ts b/tests/compiler/interface-with-initializer.ts new file mode 100644 index 0000000000..c1d5689042 --- /dev/null +++ b/tests/compiler/interface-with-initializer.ts @@ -0,0 +1,9 @@ +interface I { + v: string = ""; +} + +class C implements I { + v: string = ""; +} + +new C(); diff --git a/tests/compiler/issues/1095.debug.wat b/tests/compiler/issues/1095.debug.wat new file mode 100644 index 0000000000..4a22d3612d --- /dev/null +++ b/tests/compiler/issues/1095.debug.wat @@ -0,0 +1,2575 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 624)) + (global $~lib/memory/__data_end i32 (i32.const 648)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33416)) + (global $~lib/memory/__heap_base i32 (i32.const 33416)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00e\00s\00t\00\00\00\00\00") + (data $9 (i32.const 444) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s\00") + (data $11 (i32.const 624) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $issues/1095/Foo#set:bar (param $this i32) (param $bar i32) + local.get $this + local.get $bar + i32.store + local.get $this + local.get $bar + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $issues/1095/Foo#get:bar (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $issues/1095/Foo~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $issues/1095/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1095/Foo $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $issues/1095/Foo~visit + return + end + unreachable + ) + (func $~start + call $start:issues/1095 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33440 + i32.const 33488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $issues/1095/Foo#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 432 + call $issues/1095/Foo#set:bar + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $issues/1095/test (param $foo i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $foo + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $foo + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $issues/1095/Foo#get:bar + local.tee $1 + i32.store offset=12 + local.get $1 + if (result i32) + local.get $1 + else + i32.const 464 + i32.const 592 + i32.const 8 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $issues/1095/Foo#set:bar + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:issues/1095 + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $issues/1095/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $issues/1095/test + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/issues/1095.json b/tests/compiler/issues/1095.json index 9f7878d475..1bdd02b1be 100644 --- a/tests/compiler/issues/1095.json +++ b/tests/compiler/issues/1095.json @@ -1,6 +1,4 @@ { "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" ] -} \ No newline at end of file +} diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat deleted file mode 100644 index 4913000374..0000000000 --- a/tests/compiler/issues/1095.optimized.wat +++ /dev/null @@ -1,1105 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t") - (data (i32.const 1216) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") - (data (i32.const 1264) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1312 - local.set $1 - i32.const 1312 - i32.const 0 - i32.store - i32.const 2880 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1312 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1312 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1312 - i32.const 2896 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1312 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.tee $3 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - i32.const 16 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - call $~lib/rt/rtrace/onalloc - local.get $1 - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1308 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1308 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 1200 - i32.store - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - local.set $2 - local.get $1 - i32.load - local.tee $0 - i32.eqz - if - i32.const 1232 - i32.const 1280 - i32.const 8 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $1 - local.get $0 - i32.store - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1308 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/issues/1095.release.wat b/tests/compiler/issues/1095.release.wat new file mode 100644 index 0000000000..b5ae2294e0 --- /dev/null +++ b/tests/compiler/issues/1095.release.wat @@ -0,0 +1,1781 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34440)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "\1c") + (data $8.1 (i32.const 1448) "\02\00\00\00\08\00\00\00t\00e\00s\00t") + (data $9 (i32.const 1468) "|") + (data $9.1 (i32.const 1480) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (data $10 (i32.const 1596) ",") + (data $10.1 (i32.const 1608) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s") + (data $11 (i32.const 1648) "\05\00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$117 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34440 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$117 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1648 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1652 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34448 + i32.const 0 + i32.store + i32.const 36016 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34448 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34448 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34448 + i32.const 36020 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34448 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34440 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34440 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34440 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $issues/1095/Foo#set:bar (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/1095/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1095/Foo $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1672 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34440 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1672 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1672 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1456 + call $issues/1095/Foo#set:bar + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1672 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store offset=12 + local.get $1 + i32.eqz + if + i32.const 1488 + i32.const 1616 + i32.const 8 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $issues/1095/Foo#set:bar + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34464 + i32.const 34512 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/issues/1095.untouched.wat b/tests/compiler/issues/1095.untouched.wat deleted file mode 100644 index 63f4eb361c..0000000000 --- a/tests/compiler/issues/1095.untouched.wat +++ /dev/null @@ -1,1772 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 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_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t\00") - (data (i32.const 208) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") - (data (i32.const 256) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/heap/__heap_base i32 (i32.const 300)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 80 - i32.const 32 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $issues/1095/Foo#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 192 - i32.store - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $issues/1095/test (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.tee $2 - local.get $0 - i32.load - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 224 - i32.const 272 - i32.const 8 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.tee $1 - local.get $2 - i32.load - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $1 - i32.store - local.get $0 - call $~lib/rt/pure/__release - ) - (func $start:issues/1095 - (local $0 i32) - i32.const 0 - call $issues/1095/Foo#constructor - local.tee $0 - call $issues/1095/test - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~start - call $start:issues/1095 - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/issues/1225.debug.wat b/tests/compiler/issues/1225.debug.wat new file mode 100644 index 0000000000..2abb8194d5 --- /dev/null +++ b/tests/compiler/issues/1225.debug.wat @@ -0,0 +1,2573 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $issues/1225/x (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 464)) + (global $~lib/memory/__data_end i32 (i32.const 488)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33256)) + (global $~lib/memory/__heap_base i32 (i32.const 33256)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s\00") + (data $9 (i32.const 464) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "normal" (func $issues/1225/normal)) + (export "viaThis" (func $issues/1225/viaThis)) + (export "memory" (memory $0)) + (start $~start) + (func $issues/1225/X#get:x (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $issues/1225/X#set:viaThis (param $this i32) (param $viaThis i32) + local.get $this + local.get $viaThis + i32.store offset=4 + ) + (func $issues/1225/X#set:normal (param $this i32) (param $normal i32) + local.get $this + local.get $normal + i32.store + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $issues/1225/X#set:x (param $this i32) (param $x i32) + local.get $this + local.get $x + i32.store offset=8 + ) + (func $issues/1225/X#get:normal (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $issues/1225/X#get:viaThis (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $start:issues/1225 + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 4 + call $issues/1225/X#constructor + global.set $issues/1225/x + call $issues/1225/normal + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $issues/1225/viaThis + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $issues/1225/x + call $~lib/rt/itcms/__collect + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $issues/1225/x + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $issues/1225/X + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:issues/1225 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33280 + i32.const 33328 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $issues/1225/X#constructor (param $this i32) (param $x i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $x + call $issues/1225/X#set:x + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $issues/1225/X#set:normal + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $issues/1225/X#set:viaThis + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $issues/1225/X#get:x + call $issues/1225/X#set:viaThis + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $x + call $issues/1225/X#set:normal + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $issues/1225/normal (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $issues/1225/x + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $issues/1225/X#get:normal + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + ) + (func $issues/1225/viaThis (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $issues/1225/x + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $issues/1225/X#get:viaThis + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + ) +) diff --git a/tests/compiler/issues/1225.json b/tests/compiler/issues/1225.json index 9f7878d475..b83788465e 100644 --- a/tests/compiler/issues/1225.json +++ b/tests/compiler/issues/1225.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + ], + "asc_rtrace": true +} diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat deleted file mode 100644 index 717e09b3a0..0000000000 --- a/tests/compiler/issues/1225.optimized.wat +++ /dev/null @@ -1,1115 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $issues/1225/x (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "normal" (func $issues/1225/normal)) - (export "viaThis" (func $issues/1225/viaThis)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1232 - local.set $1 - i32.const 1232 - i32.const 0 - i32.store - i32.const 2800 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1232 - i32.const 2816 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1232 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 12 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.tee $3 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - i32.const 16 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - call $~lib/rt/rtrace/onalloc - local.get $1 - ) - (func $issues/1225/normal (result i32) - global.get $issues/1225/x - i32.load - ) - (func $issues/1225/viaThis (result i32) - global.get $issues/1225/x - i32.load offset=4 - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - local.tee $0 - i32.const 1228 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=8 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store - local.get $0 - global.set $issues/1225/x - global.get $issues/1225/x - i32.load - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $issues/1225/x - i32.load offset=4 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $issues/1225/x - local.tee $0 - if - local.get $0 - i32.const 1228 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - i32.const 0 - global.set $issues/1225/x - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1228 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/issues/1225.release.wat b/tests/compiler/issues/1225.release.wat new file mode 100644 index 0000000000..10fcd3691c --- /dev/null +++ b/tests/compiler/issues/1225.release.wat @@ -0,0 +1,1622 @@ +(module + (type $0 (func (result i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $issues/1225/x (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34280)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) ",") + (data $8.1 (i32.const 1448) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s") + (data $9 (i32.const 1488) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (export "normal" (func $issues/1225/normal)) + (export "viaThis" (func $issues/1225/viaThis)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $issues/1225/x + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34280 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34288 + i32.const 0 + i32.store + i32.const 35856 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34288 + i32.const 35860 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34288 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34280 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $1 + i32.load offset=1568 + local.get $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $0 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $1 + local.get $0 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $2 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $2 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $1 + local.get $2 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $2 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 12 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 12 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/1225/X + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + memory.size + i32.const 16 + i32.shl + i32.const 34280 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + if + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $issues/1225/x + call $issues/1225/normal + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $issues/1225/viaThis + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $issues/1225/x + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + ) + (func $issues/1225/normal (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + if + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $issues/1225/x + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $issues/1225/viaThis (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + if + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $issues/1225/x + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/issues/1225.ts b/tests/compiler/issues/1225.ts index 4ebdfdc956..5f6288f68d 100644 --- a/tests/compiler/issues/1225.ts +++ b/tests/compiler/issues/1225.ts @@ -15,7 +15,9 @@ export function viaThis(): u32 { return x.viaThis; } -assert(normal() === 4); -assert(viaThis() === 4); +assert(normal() == 4); +assert(viaThis() == 4); x = changetype(0); // unleak + +__collect(); diff --git a/tests/compiler/issues/1225.untouched.wat b/tests/compiler/issues/1225.untouched.wat deleted file mode 100644 index ee99447b69..0000000000 --- a/tests/compiler/issues/1225.untouched.wat +++ /dev/null @@ -1,1792 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 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 $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $issues/1225/x (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 220)) - (export "memory" (memory $0)) - (export "normal" (func $issues/1225/normal)) - (export "viaThis" (func $issues/1225/viaThis)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 80 - i32.const 32 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $issues/1225/X#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=8 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $issues/1225/normal (result i32) - global.get $issues/1225/x - i32.load - ) - (func $issues/1225/viaThis (result i32) - global.get $issues/1225/x - i32.load offset=4 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $start:issues/1225 - (local $0 i32) - (local $1 i32) - i32.const 0 - i32.const 4 - call $issues/1225/X#constructor - global.set $issues/1225/x - call $issues/1225/normal - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $issues/1225/viaThis - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.tee $0 - global.get $issues/1225/x - local.tee $1 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $0 - global.set $issues/1225/x - ) - (func $~start - call $start:issues/1225 - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/issues/1699.debug.wat b/tests/compiler/issues/1699.debug.wat new file mode 100644 index 0000000000..b7c5009d63 --- /dev/null +++ b/tests/compiler/issues/1699.debug.wat @@ -0,0 +1,3254 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 688)) + (global $~lib/memory/__data_end i32 (i32.const 716)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33484)) + (global $~lib/memory/__heap_base i32 (i32.const 33484)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $1 (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $3 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 508) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 636) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\006\009\009\00.\00t\00s\00") + (data $12 (i32.const 688) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\02A\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $issues/1699/MultiAssignmentTest#set:test (param $this i32) (param $test i32) + local.get $this + local.get $test + i32.store + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $start:issues/1699 + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $issues/1699/test + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 528 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $issues/1699/MultiAssignmentTest + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:issues/1699 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33504 + i32.const 33552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $issues/1699/MultiAssignmentTest#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $issues/1699/MultiAssignmentTest#set:test + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 528 + i32.const 80 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $issues/1699/test + (local $testinstances i32) + (local $1 i32) + (local $2 i32) + (local $n i32) + (local $testinstance i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/array/Array#constructor + local.tee $testinstances + i32.store + local.get $testinstances + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $testinstances + local.tee $1 + i32.store offset=20 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + i32.const 1 + local.tee $2 + i32.const 0 + call $issues/1699/MultiAssignmentTest#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + call $~lib/array/Array#__set + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $2 + call $~lib/array/Array#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/array/Array#__set + i32.const 0 + local.set $n + loop $for-loop|0 + local.get $n + local.get $testinstances + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $issues/1699/MultiAssignmentTest#constructor + local.tee $testinstance + i32.store offset=24 + local.get $n + i32.const 1 + i32.gt_s + if + local.get $testinstances + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $n + local.get $testinstance + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/array/Array#__set + end + local.get $n + i32.const 1 + i32.add + local.set $n + br $for-loop|0 + end + end + local.get $testinstances + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + call $~lib/array/Array#__get + local.get $testinstances + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + call $~lib/array/Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 656 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $testinstances + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + call $~lib/array/Array#__get + local.get $testinstances + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + call $~lib/array/Array#__get + i32.ne + i32.eqz + if + i32.const 0 + i32.const 656 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/issues/1699.release.wat b/tests/compiler/issues/1699.release.wat new file mode 100644 index 0000000000..0ba5679b98 --- /dev/null +++ b/tests/compiler/issues/1699.release.wat @@ -0,0 +1,2314 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34508)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $1 (i32.const 1084) ",") + (data $1.1 (i32.const 1096) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $2 (i32.const 1132) "<") + (data $2.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $3 (i32.const 1196) "<") + (data $3.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $6 (i32.const 1324) "<") + (data $6.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $7 (i32.const 1388) ",") + (data $7.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $9 (i32.const 1468) "<") + (data $9.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 1532) "|") + (data $10.1 (i32.const 1544) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $11 (i32.const 1660) ",") + (data $11.1 (i32.const 1672) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\006\009\009\00.\00t\00s") + (data $12 (i32.const 1712) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\02A") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1552 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$146 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34508 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$146 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1712 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1716 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34512 + i32.const 0 + i32.store + i32.const 36080 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34512 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34512 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34512 + i32.const 36084 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34512 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34508 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34508 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34508 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $start:issues/1699 + (local $0 i32) + (local $1 i32) + (local $2 i32) + memory.size + i32.const 16 + i32.shl + i32.const 34508 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 32 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + call $issues/1699/MultiAssignmentTest#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $0 + i32.const 1 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 + local.get $2 + call $~lib/array/Array#__set + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + call $issues/1699/MultiAssignmentTest#constructor + local.tee $2 + i32.store offset=24 + local.get $1 + i32.const 1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__set + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.get $1 + i32.ne + if + i32.const 0 + i32.const 1680 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.get $1 + i32.eq + if + i32.const 0 + i32.const 1680 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $invalid + block $~lib/array/Array + block $issues/1699/MultiAssignmentTest + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + if + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~start + call $start:issues/1699 + ) + (func $issues/1699/MultiAssignmentTest#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1344 + i32.const 1104 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.tee $6 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=8 + local.tee $4 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $3 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$145 + i32.const 1073741820 + local.get $4 + i32.const 1 + i32.shl + local.tee $4 + local.get $4 + i32.const 1073741820 + i32.ge_u + select + local.tee $4 + i32.const 8 + local.get $3 + local.get $3 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + local.get $3 + local.get $4 + i32.lt_u + select + local.tee $5 + local.get $0 + i32.load + local.tee $4 + i32.const 20 + i32.sub + local.tee $7 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $7 + local.get $5 + i32.store offset=16 + local.get $4 + local.set $3 + br $__inlined_func$~lib/rt/itcms/__renew$145 + end + local.get $5 + local.get $7 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $4 + local.get $5 + local.get $7 + i32.load offset=16 + local.tee $7 + local.get $5 + local.get $7 + i32.lt_u + select + memory.copy + end + local.get $3 + local.get $4 + i32.ne + if + local.get $0 + local.get $3 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $5 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $6 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + if + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1552 + i32.const 1104 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/issues/1699.ts b/tests/compiler/issues/1699.ts new file mode 100644 index 0000000000..a72b7352af --- /dev/null +++ b/tests/compiler/issues/1699.ts @@ -0,0 +1,19 @@ +class MultiAssignmentTest { + test: i32 = 2; +} + +function test(): void { + const testinstances = new Array(3); + testinstances[0] = testinstances[1] = new MultiAssignmentTest(); + + for (let n = 0; n < testinstances.length; n++) { + const testinstance = new MultiAssignmentTest(); + if (n > 1) { + testinstances[n] = testinstance; + } + } + assert(testinstances[0] == testinstances[1]); + assert(testinstances[2] != testinstances[1]); +} + +test(); diff --git a/tests/compiler/issues/1714.debug.wat b/tests/compiler/issues/1714.debug.wat new file mode 100644 index 0000000000..a99a595629 --- /dev/null +++ b/tests/compiler/issues/1714.debug.wat @@ -0,0 +1,320 @@ +(module + (type $0 (func (result i32))) + (type $1 (func)) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 92)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32860)) + (global $~lib/memory/__heap_base i32 (i32.const 32860)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\007\001\004\00.\00t\00s\00") + (data $1 (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\003\002\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $"issues/1714/a_i64_i32" (result i32) + i32.const 8 + i32.const 4 + i32.eq + return + ) + (func $"issues/1714/foo" (result i32) + call $"issues/1714/a_i64_i32" + i32.const 1 + i32.eq + return + ) + (func $"issues/1714/bar" (result i32) + i32.const 0 + drop + i32.const 80 + return + ) + (func $"issues/1714/bar" (result i32) + i32.const 1 + drop + call $"issues/1714/bar" + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~start + call $start:issues/1714 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 32880 + i32.const 32928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:issues/1714 + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + call $"issues/1714/foo" + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $"issues/1714/bar" + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 80 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/issues/1714.release.wat b/tests/compiler/issues/1714.release.wat new file mode 100644 index 0000000000..5fc4c4ca7e --- /dev/null +++ b/tests/compiler/issues/1714.release.wat @@ -0,0 +1,57 @@ +(module + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33884)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\007\001\004\00.\00t\00s") + (data $1 (i32.const 1084) "\1c") + (data $1.1 (i32.const 1096) "\02\00\00\00\06\00\00\00i\003\002") + (export "memory" (memory $0)) + (start $~start) + (func $~start + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1116 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1104 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1116 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 33904 + i32.const 33952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/issues/1714.ts b/tests/compiler/issues/1714.ts new file mode 100644 index 0000000000..7527bdfc60 --- /dev/null +++ b/tests/compiler/issues/1714.ts @@ -0,0 +1,18 @@ +function a_i64_i32(): bool { // T'=U=i64, U'=T=i32 + return sizeof() == sizeof(); +} + +function foo(): bool { // T=i32, U=i64 + return a_i64_i32() == true; +} + +assert(foo() == false); + +function bar(): string { // T1=f64, T2=i32 + if (isInteger()) { + return bar(); // T2'=T1=f64, T2'=T1=i32 + } + return nameof(); // iff T1 == i32 +} + +assert(bar() == "i32"); diff --git a/tests/compiler/issues/1751.debug.wat b/tests/compiler/issues/1751.debug.wat new file mode 100644 index 0000000000..541e3c19af --- /dev/null +++ b/tests/compiler/issues/1751.debug.wat @@ -0,0 +1,9 @@ +(module + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/merge.optimized.wat b/tests/compiler/issues/1751.release.wat similarity index 100% rename from tests/compiler/merge.optimized.wat rename to tests/compiler/issues/1751.release.wat diff --git a/tests/compiler/issues/1751.ts b/tests/compiler/issues/1751.ts new file mode 100644 index 0000000000..23c21e98a5 --- /dev/null +++ b/tests/compiler/issues/1751.ts @@ -0,0 +1 @@ +import { Foo } from './1751/_reexport'; diff --git a/tests/compiler/issues/1751/_common.ts b/tests/compiler/issues/1751/_common.ts new file mode 100644 index 0000000000..0120276916 --- /dev/null +++ b/tests/compiler/issues/1751/_common.ts @@ -0,0 +1 @@ +export { Foo } from "./_foo"; diff --git a/tests/compiler/issues/1751/_foo.ts b/tests/compiler/issues/1751/_foo.ts new file mode 100644 index 0000000000..223d0a8b39 --- /dev/null +++ b/tests/compiler/issues/1751/_foo.ts @@ -0,0 +1 @@ +export class Foo {} diff --git a/tests/compiler/issues/1751/_reexport.ts b/tests/compiler/issues/1751/_reexport.ts new file mode 100644 index 0000000000..da28848d46 --- /dev/null +++ b/tests/compiler/issues/1751/_reexport.ts @@ -0,0 +1 @@ +export * from './_common'; // should propagate diff --git a/tests/compiler/issues/2085.json b/tests/compiler/issues/2085.json new file mode 100644 index 0000000000..6523a98644 --- /dev/null +++ b/tests/compiler/issues/2085.json @@ -0,0 +1,8 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "AS100: Not implemented: Interface hidden classes", + "EOF" + ] +} diff --git a/tests/compiler/issues/2085.ts b/tests/compiler/issues/2085.ts new file mode 100644 index 0000000000..ac1c26437f --- /dev/null +++ b/tests/compiler/issues/2085.ts @@ -0,0 +1,3 @@ +interface Foo {} +const foo: Foo = {}; +ERROR("EOF"); \ No newline at end of file diff --git a/tests/compiler/issues/2166.debug.wat b/tests/compiler/issues/2166.debug.wat new file mode 100644 index 0000000000..0d98c3c656 --- /dev/null +++ b/tests/compiler/issues/2166.debug.wat @@ -0,0 +1,2753 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 608)) + (global $~lib/memory/__data_end i32 (i32.const 636)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33404)) + (global $~lib/memory/__heap_base i32 (i32.const 33404)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\001\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00") + (data $10 (i32.const 476) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\001\006\006\00.\00t\00s\00") + (data $11 (i32.const 524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\003\002\00\00\00\00\00\00\00") + (data $12 (i32.const 556) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00t\00e\00s\00t\00-\002\001\006\006\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 608) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $issues/2166/Test2166Ref1<~lib/string/String>#fn (param $this i32) (param $a1 i32) (param $a2 i32) + i32.const 464 + i32.const 464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 544 + i32.const 544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 10 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + ) + (func $issues/2166/Test2166Ref2#bar<~lib/string/String> (param $this i32) (param $i i32) + i32.const 464 + i32.const 464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 22 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $issues/2166/Test2166Ref2 + block $issues/2166/Test2166Ref1<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2166/Test2166Ref1<~lib/string/String> $issues/2166/Test2166Ref2 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:issues/2166 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33424 + i32.const 33472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $issues/2166/Test2166Ref1<~lib/string/String>#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $issues/2166/testfunc2166 + (local $a i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $issues/2166/Test2166Ref1<~lib/string/String>#constructor + local.tee $a + i32.store + local.get $a + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 432 + i32.const 1 + call $issues/2166/Test2166Ref1<~lib/string/String>#fn + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:issues/2166 + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $issues/2166/testfunc2166 + i32.const 0 + call $issues/2166/Test2166Ref2#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 576 + call $issues/2166/Test2166Ref2#bar<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $issues/2166/Test2166Ref2#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + i32.const 544 + i32.const 544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/issues/2166.release.wat b/tests/compiler/issues/2166.release.wat new file mode 100644 index 0000000000..d445b2d6cd --- /dev/null +++ b/tests/compiler/issues/2166.release.wat @@ -0,0 +1,1771 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34428)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "\1c") + (data $8.1 (i32.const 1448) "\02\00\00\00\04\00\00\001\001") + (data $9 (i32.const 1468) "\1c") + (data $9.1 (i32.const 1480) "\02\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") + (data $10 (i32.const 1500) ",") + (data $10.1 (i32.const 1512) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\001\006\006\00.\00t\00s") + (data $11 (i32.const 1548) "\1c") + (data $11.1 (i32.const 1560) "\02\00\00\00\06\00\00\00i\003\002") + (data $12 (i32.const 1580) ",") + (data $12.1 (i32.const 1592) "\02\00\00\00\12\00\00\00t\00e\00s\00t\00-\002\001\006\006") + (data $13 (i32.const 1632) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$122 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34428 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$122 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1632 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1636 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34432 + i32.const 0 + i32.store + i32.const 36000 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34432 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34432 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34432 + i32.const 36004 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34432 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34428 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34428 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34428 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/2166/Test2166Ref2 + block $issues/2166/Test2166Ref1<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2166/Test2166Ref1<~lib/string/String> $issues/2166/Test2166Ref2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34428 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1488 + i32.const 1488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 1568 + i32.const 1568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 10 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + i32.const 1568 + i32.const 1568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1488 + i32.const 1488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 22 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34448 + i32.const 34496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + if + i32.const 34448 + i32.const 34496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$79 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$79 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) +) diff --git a/tests/compiler/issues/2166.ts b/tests/compiler/issues/2166.ts new file mode 100644 index 0000000000..87fe888211 --- /dev/null +++ b/tests/compiler/issues/2166.ts @@ -0,0 +1,25 @@ +// case 1 +function testfunc2166(): void { + let a = new Test2166Ref1(); + // class generic should override non-related function generic(testfunc2166): T in fn is string + a.fn("11", 1); +} +class Test2166Ref1 { + fn(a1: T, a2: U): void { + assert(nameof() == nameof()); + assert(nameof() == nameof(1)); + } +} +testfunc2166(); + +// case 2 +class Test2166Ref2 { + constructor() { + assert(nameof() == nameof()); + } + bar(i: T): void { + // function generic should override class generic, T in bar is string + assert(nameof() == nameof()); + } +} +new Test2166Ref2().bar("test-2166"); diff --git a/tests/compiler/issues/2202.json b/tests/compiler/issues/2202.json new file mode 100644 index 0000000000..5f2e3488a6 --- /dev/null +++ b/tests/compiler/issues/2202.json @@ -0,0 +1,24 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "EOF" + ] +} diff --git a/tests/compiler/issues/2202.ts b/tests/compiler/issues/2202.ts new file mode 100644 index 0000000000..52d3a313b8 --- /dev/null +++ b/tests/compiler/issues/2202.ts @@ -0,0 +1,18 @@ +i16; +i32; +i64; +u8; +u16; +u32; +u64; +bool; +f32; +f64; +v128; +i8x16; +i16x8; +i32x4; +i64x2; +f32x4; +f64x2; +ERROR("EOF"); \ No newline at end of file diff --git a/tests/compiler/issues/2322/index.debug.wat b/tests/compiler/issues/2322/index.debug.wat new file mode 100644 index 0000000000..3799f01a97 --- /dev/null +++ b/tests/compiler/issues/2322/index.debug.wat @@ -0,0 +1,2433 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 416)) + (global $~lib/memory/__data_end i32 (i32.const 440)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33208)) + (global $~lib/memory/__heap_base i32 (i32.const 33208)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 416) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "test" (func $issues/2322/index/test)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $issues/2322/lib/Wrapper#set:v (param $this i32) (param $v i32) + local.get $this + local.get $v + i32.store + ) + (func $issues/2322/lib/test (param $t i32) + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $issues/2322/lib/Wrapper + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2322/lib/Wrapper $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33232 + i32.const 33280 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $issues/2322/lib/Wrapper#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $issues/2322/lib/Wrapper#set:v + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $issues/2322/index/test + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + call $issues/2322/lib/Wrapper#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $issues/2322/lib/test + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/issues/2322/index.release.wat b/tests/compiler/issues/2322/index.release.wat new file mode 100644 index 0000000000..026f2c493b --- /dev/null +++ b/tests/compiler/issues/2322/index.release.wat @@ -0,0 +1,1671 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34232)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1440) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (export "test" (func $issues/2322/index/test)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$112 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34232 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$112 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34232 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34232 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34232 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/2322/lib/Wrapper + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2322/lib/Wrapper $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34232 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + ) + (func $issues/2322/index/test + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1464 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1464 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1464 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/issues/2322/index.ts b/tests/compiler/issues/2322/index.ts new file mode 100644 index 0000000000..b4b97c1394 --- /dev/null +++ b/tests/compiler/issues/2322/index.ts @@ -0,0 +1,5 @@ +import * as lib from "./lib"; + +export function test(): void { + lib.test(new lib.Wrapper()); +} diff --git a/tests/compiler/issues/2322/lib.debug.wat b/tests/compiler/issues/2322/lib.debug.wat new file mode 100644 index 0000000000..541e3c19af --- /dev/null +++ b/tests/compiler/issues/2322/lib.debug.wat @@ -0,0 +1,9 @@ +(module + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/namespace.optimized.wat b/tests/compiler/issues/2322/lib.release.wat similarity index 100% rename from tests/compiler/namespace.optimized.wat rename to tests/compiler/issues/2322/lib.release.wat diff --git a/tests/compiler/issues/2322/lib.ts b/tests/compiler/issues/2322/lib.ts new file mode 100644 index 0000000000..b6c890767b --- /dev/null +++ b/tests/compiler/issues/2322/lib.ts @@ -0,0 +1,4 @@ +export function test(t: Wrapper): void {} +export class Wrapper { + v: T; +} diff --git a/tests/compiler/issues/2473.json b/tests/compiler/issues/2473.json new file mode 100644 index 0000000000..69747d89e4 --- /dev/null +++ b/tests/compiler/issues/2473.json @@ -0,0 +1,13 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS1345: An expression of type 'void' cannot be tested for truthiness.", + "TS1345: An expression of type 'void' cannot be tested for truthiness.", + "TS1345: An expression of type 'void' cannot be tested for truthiness.", + "AS203: Operation 'store' cannot be applied to type 'void'.", + "AS203: Operation 'load' cannot be applied to type 'void'.", + "AS203: Operation 'load' cannot be applied to type 'ref_extern'.", + "EOF" + ] +} diff --git a/tests/compiler/issues/2473.ts b/tests/compiler/issues/2473.ts new file mode 100644 index 0000000000..6eb0af60fe --- /dev/null +++ b/tests/compiler/issues/2473.ts @@ -0,0 +1,16 @@ +const voidFn = (): void => {}; + +// TS1345: An expression of type 'void' cannot be tested for truthiness. +voidFn() ? 1 : 0; + +// TS1345: An expression of type 'void' cannot be tested for truthiness. +if (voidFn()) {} + +// TS1345: An expression of type 'void' cannot be tested for truthiness. +!voidFn(); + +store(8, voidFn()); +load(8); +load(8); + +ERROR("EOF"); diff --git a/tests/compiler/issues/2622.debug.wat b/tests/compiler/issues/2622.debug.wat new file mode 100644 index 0000000000..6514ce97bf --- /dev/null +++ b/tests/compiler/issues/2622.debug.wat @@ -0,0 +1,2497 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $issues/2622/_a/t1 (mut i32) (i32.const 0)) + (global $issues/2622/a (mut i32) (i32.const 0)) + (global $issues/2622/_b/t2 (mut i32) (i32.const 0)) + (global $issues/2622/b (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 416)) + (global $~lib/memory/__data_end i32 (i32.const 444)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33212)) + (global $~lib/memory/__heap_base i32 (i32.const 33212)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 416) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $start:issues/2622/_a + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $issues/2622/_a/T1#constructor + global.set $issues/2622/_a/t1 + ) + (func $start:issues/2622 + call $start:issues/2622/_a + global.get $issues/2622/_a/t1 + global.set $issues/2622/a + i32.const 0 + call $issues/2622/_b/T2#constructor + global.set $issues/2622/_b/t2 + global.get $issues/2622/_b/t2 + global.set $issues/2622/b + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $issues/2622/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/b + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + global.get $issues/2622/_a/t1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_a/t1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_b/t2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_b/t2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $issues/2622/_b/T2 + block $issues/2622/_a/T1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2622/_a/T1 $issues/2622/_b/T2 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:issues/2622 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33232 + i32.const 33280 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $issues/2622/_a/T1#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $issues/2622/_b/T2#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/issues/2622.json b/tests/compiler/issues/2622.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/issues/2622.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/issues/2622.release.wat b/tests/compiler/issues/2622.release.wat new file mode 100644 index 0000000000..885743588e --- /dev/null +++ b/tests/compiler/issues/2622.release.wat @@ -0,0 +1,1579 @@ +(module + (type $0 (func)) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $issues/2622/_a/t1 (mut i32) (i32.const 0)) + (global $issues/2622/a (mut i32) (i32.const 0)) + (global $issues/2622/_b/t2 (mut i32) (i32.const 0)) + (global $issues/2622/b (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34236)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1440) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $issues/2622/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/b + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $issues/2622/_a/t1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_a/t1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_b/t2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_b/t2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$111 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34236 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$111 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34236 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/2622/_b/T2 + block $issues/2622/_a/T1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2622/_a/T1 $issues/2622/_b/T2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + block $__inlined_func$start:issues/2622$1 + memory.size + i32.const 16 + i32.shl + i32.const 34236 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $issues/2622/_a/t1 + global.get $issues/2622/_a/t1 + global.set $issues/2622/a + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $issues/2622/_b/t2 + global.get $issues/2622/_b/t2 + global.set $issues/2622/b + br $__inlined_func$start:issues/2622$1 + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + if + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/issues/2622.ts b/tests/compiler/issues/2622.ts new file mode 100644 index 0000000000..db58a9ad3e --- /dev/null +++ b/tests/compiler/issues/2622.ts @@ -0,0 +1,5 @@ +import "./2622/_a"; // declares @global t1 +let a = t1; + +let b = t2; +import "./2622/_b"; // declares @lazy @global t2 diff --git a/tests/compiler/issues/2622/_a.ts b/tests/compiler/issues/2622/_a.ts new file mode 100644 index 0000000000..7c4ea8cc16 --- /dev/null +++ b/tests/compiler/issues/2622/_a.ts @@ -0,0 +1,3 @@ +class T1 {} + +@global const t1 = new T1(); diff --git a/tests/compiler/issues/2622/_b.ts b/tests/compiler/issues/2622/_b.ts new file mode 100644 index 0000000000..2e20c5c29a --- /dev/null +++ b/tests/compiler/issues/2622/_b.ts @@ -0,0 +1,3 @@ +class T2 {} + +@global @lazy const t2 = new T2(); diff --git a/tests/compiler/issues/2707.debug.wat b/tests/compiler/issues/2707.debug.wat new file mode 100644 index 0000000000..58a64cf649 --- /dev/null +++ b/tests/compiler/issues/2707.debug.wat @@ -0,0 +1,2591 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32) (result i32))) + (type $10 (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $issues/2707/func (mut i32) (i32.const 32)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 496)) + (global $~lib/memory/__data_end i32 (i32.const 524)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33292)) + (global $~lib/memory/__heap_base i32 (i32.const 33292)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 92) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 496) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\00\00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $start:issues/2707~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $start:issues/2707~anonymous|0 (param $args i32) (result i32) + i32.const 1 + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 304 + i32.const 368 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 176 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 112 + i32.const 448 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 112 + i32.const 176 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 304 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 112 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/array/Array%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28~lib/array/Array%29=>i32> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/function/Function<%28~lib/array/Array%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/array/Array%29=>i32>~visit + return + end + unreachable + ) + (func $~start + call $start:issues/2707 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33312 + i32.const 33360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:issues/2707 + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 64 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + global.set $~argumentsLength + global.get $issues/2707/func + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28~lib/array/Array%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28~lib/array/Array%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) +) diff --git a/tests/compiler/issues/2707.json b/tests/compiler/issues/2707.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/issues/2707.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/issues/2707.release.wat b/tests/compiler/issues/2707.release.wat new file mode 100644 index 0000000000..980e20a05d --- /dev/null +++ b/tests/compiler/issues/2707.release.wat @@ -0,0 +1,1618 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34316)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\05\00\00\00\08\00\00\00\01") + (data $1 (i32.const 1068) ",") + (data $1.1 (i32.const 1080) "\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") + (data $2 (i32.const 1116) "<") + (data $2.1 (i32.const 1128) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $3 (i32.const 1180) "<") + (data $3.1 (i32.const 1192) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $6 (i32.const 1308) "<") + (data $6.1 (i32.const 1320) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $7 (i32.const 1372) ",") + (data $7.1 (i32.const 1384) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $9 (i32.const 1452) "<") + (data $9.1 (i32.const 1464) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 1520) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $start:issues/2707~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $start:issues/2707~anonymous|0 (param $0 i32) (result i32) + i32.const 1 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1328 + call $~lib/rt/itcms/__visit + i32.const 1136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1200 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34316 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1520 + i32.load + i32.gt_u + if + i32.const 1328 + i32.const 1392 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1524 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1472 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34320 + i32.const 0 + i32.store + i32.const 35888 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34320 + i32.const 35892 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34320 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34316 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1200 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34316 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34316 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1472 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65579 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 44 + i32.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 44 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 44 + i32.or + i32.store + local.get $1 + i32.const 48 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i64.const 0 + i64.store align=1 + local.get $0 + i64.const 0 + i64.store offset=8 align=1 + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/function/Function<%28~lib/array/Array%29=>i32> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/function/Function<%28~lib/array/Array%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + end + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34316 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/pinSpace + i32.const 1284 + i32.const 1280 + i32.store + i32.const 1288 + i32.const 1280 + i32.store + i32.const 1280 + global.set $~lib/rt/itcms/toSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 1088 + i32.const 16 + memory.copy + local.get $0 + i32.store + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + i32.store + local.get $0 + if + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $2 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $3 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $1 + i32.const 3 + i32.eq + i32.and + if + local.get $3 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.const 16 + i32.store offset=8 + local.get $2 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1056 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/issues/2707.ts b/tests/compiler/issues/2707.ts new file mode 100644 index 0000000000..dc380b73d6 --- /dev/null +++ b/tests/compiler/issues/2707.ts @@ -0,0 +1,6 @@ +// should not crash +let func: (...args: i32[]) => i32 = (...args: i32[]) => { + return 1; +}; + +func(1, 2, 3, 4); diff --git a/tests/compiler/issues/2737.json b/tests/compiler/issues/2737.json new file mode 100644 index 0000000000..07404f851a --- /dev/null +++ b/tests/compiler/issues/2737.json @@ -0,0 +1,15 @@ +{ + "stderr": [ + "TS1140: Type argument expected.", + "foo.bar;", + "AS234: Expression does not compile to a value at runtime.", + "foo.bar;", + "TS1140: Type argument expected.", + "memory.data;", + "AS234: Expression does not compile to a value at runtime.", + "memory.data;", + "AS100: Not implemented: First-class built-ins", + "atomic.fence;", + "EOF" + ] +} \ No newline at end of file diff --git a/tests/compiler/issues/2737.ts b/tests/compiler/issues/2737.ts new file mode 100644 index 0000000000..05d5faaae3 --- /dev/null +++ b/tests/compiler/issues/2737.ts @@ -0,0 +1,12 @@ +namespace foo { + export function bar(): void {} +} + +// Should error from missing type arguments: +foo.bar; +memory.data; + +// Should error from lacking first-class builtins: +atomic.fence; + +ERROR("EOF"); \ No newline at end of file diff --git a/tests/compiler/issues/2825.debug.wat b/tests/compiler/issues/2825.debug.wat new file mode 100644 index 0000000000..4ecc4ddd57 --- /dev/null +++ b/tests/compiler/issues/2825.debug.wat @@ -0,0 +1,69 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\008\002\005\00.\00t\00s\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "init" (func $issues/2825/init)) + (export "memory" (memory $0)) + (start $~start) + (func $issues/2825/increment (param $x i32) (result i32) + local.get $x + i32.const 1234 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $x + i32.const 1 + i32.add + return + ) + (func $start:issues/2825 + (local $i i32) + (local $i|1 i32) + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + i32.const 10 + i32.lt_s + if + i32.const 1234 + local.set $i|1 + local.get $i + call $issues/2825/increment + local.set $i + br $for-loop|0 + end + end + ) + (func $issues/2825/init + (local $not_unassigned i32) + loop $for-loop|0 + i32.const 1 + if + i32.const 0 + local.set $not_unassigned + local.get $not_unassigned + drop + br $for-loop|0 + end + end + ) + (func $~start + call $start:issues/2825 + ) +) diff --git a/tests/compiler/issues/2825.json b/tests/compiler/issues/2825.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/tests/compiler/issues/2825.json @@ -0,0 +1 @@ +{} diff --git a/tests/compiler/issues/2825.release.wat b/tests/compiler/issues/2825.release.wat new file mode 100644 index 0000000000..c11fb2dae0 --- /dev/null +++ b/tests/compiler/issues/2825.release.wat @@ -0,0 +1,43 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\008\002\005\00.\00t\00s") + (export "init" (func $issues/2825/init)) + (export "memory" (memory $0)) + (start $~start) + (func $issues/2825/init + loop $for-loop|0 + br $for-loop|0 + end + unreachable + ) + (func $~start + (local $0 i32) + loop $for-loop|0 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $0 + i32.const 1234 + i32.eq + if + i32.const 0 + i32.const 1056 + i32.const 2 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + ) +) diff --git a/tests/compiler/issues/2825.ts b/tests/compiler/issues/2825.ts new file mode 100644 index 0000000000..f563fd5bf7 --- /dev/null +++ b/tests/compiler/issues/2825.ts @@ -0,0 +1,15 @@ +function increment(x: i32): i32 { + assert(x !== 1234); + return x + 1; +} + +for (let i = 0; i < 10; i = increment(i)) { + let i = 1234; +} + +export function init(): void { + let not_unassigned: i32; + for (; ; not_unassigned) { + not_unassigned = 0; + } +} diff --git a/tests/compiler/issues/2873.debug.wat b/tests/compiler/issues/2873.debug.wat new file mode 100644 index 0000000000..15c9c5ddef --- /dev/null +++ b/tests/compiler/issues/2873.debug.wat @@ -0,0 +1,5287 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $8 (func (param i32 f64 i32) (result i32))) + (type $9 (func (param i32 i32 i32 i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (result i32))) + (type $12 (func (param f32 i32) (result i32))) + (type $13 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $14 (func (param f64 i32) (result i32))) + (type $15 (func (param i32 f32) (result i32))) + (type $16 (func (param i32 f64) (result i32))) + (type $17 (func (param f32) (result i32))) + (type $18 (func (param f64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $issues/2873/f32arr i32 (i32.const 2080)) + (global $issues/2873/f64arr i32 (i32.const 2288)) + (global $~lib/rt/__rtti_base i32 (i32.const 2320)) + (global $~lib/memory/__data_end i32 (i32.const 2348)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35116)) + (global $~lib/memory/__heap_base i32 (i32.const 35116)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data $2 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 232) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/number/F64#toString (param $this f64) (param $radix i32) (result i32) + local.get $this + call $~lib/util/number/dtoa + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/util/number/dtoa_buffered (param $buffer i32) (param $value f32) (result i32) + (local $buffer|2 i32) + (local $value|3 f64) + (local $isSingle i32) + (local $sign i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + local.get $buffer + local.set $buffer|2 + local.get $value + f64.promote_f32 + local.set $value|3 + i32.const 1 + local.set $isSingle + local.get $value|3 + f64.const 0 + f64.eq + if + local.get $buffer|2 + i32.const 48 + i32.store16 + local.get $buffer|2 + i32.const 46 + i32.store16 offset=2 + local.get $buffer|2 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + local.get $value|3 + local.get $value|3 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|3 + local.get $value|3 + f64.ne + if + local.get $buffer|2 + i32.const 78 + i32.store16 + local.get $buffer|2 + i32.const 97 + i32.store16 offset=2 + local.get $buffer|2 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + else + local.get $value|3 + f64.const 0 + f64.lt + local.set $sign + local.get $sign + if + local.get $buffer|2 + i32.const 45 + i32.store16 + local.get $buffer|2 + i32.const 2 + i32.add + local.set $buffer|2 + end + local.get $buffer|2 + i64.const 29555310648492105 + i64.store + local.get $buffer|2 + i64.const 34058970405077102 + i64.store offset=8 + i32.const 8 + local.get $sign + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + unreachable + end + local.get $buffer|2 + local.get $value|3 + local.get $isSingle + call $~lib/util/number/dtoa_core + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/util/number/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) + (local $buffer|2 i32) + (local $value|3 f64) + (local $isSingle i32) + (local $sign i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result i32) + local.get $buffer + local.set $buffer|2 + local.get $value + local.set $value|3 + i32.const 0 + local.set $isSingle + local.get $value|3 + f64.const 0 + f64.eq + if + local.get $buffer|2 + i32.const 48 + i32.store16 + local.get $buffer|2 + i32.const 46 + i32.store16 offset=2 + local.get $buffer|2 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + end + local.get $value|3 + local.get $value|3 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|3 + local.get $value|3 + f64.ne + if + local.get $buffer|2 + i32.const 78 + i32.store16 + local.get $buffer|2 + i32.const 97 + i32.store16 offset=2 + local.get $buffer|2 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + else + local.get $value|3 + f64.const 0 + f64.lt + local.set $sign + local.get $sign + if + local.get $buffer|2 + i32.const 45 + i32.store16 + local.get $buffer|2 + i32.const 2 + i32.add + local.set $buffer|2 + end + local.get $buffer|2 + i64.const 29555310648492105 + i64.store + local.get $buffer|2 + i64.const 34058970405077102 + i64.store offset=8 + i32.const 8 + local.get $sign + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + end + unreachable + end + local.get $buffer|2 + local.get $value|3 + local.get $isSingle + call $~lib/util/number/dtoa_core + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + end + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $issues/2873/f32arr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2873/f64arr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1760 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1568 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:issues/2873 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35136 + i32.const 35184 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String#substring (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $finalStart i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $finalEnd i32) + (local $14 i32) + (local $15 i32) + (local $fromPos i32) + (local $17 i32) + (local $18 i32) + (local $toPos i32) + (local $size i32) + (local $out i32) + (local $22 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $22 + global.get $~lib/memory/__stack_pointer + local.get $22 + i32.store + local.get $22 + call $~lib/string/String#get:length + local.set $len + local.get $start + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $finalStart + local.get $end + local.tee $9 + i32.const 0 + local.tee $10 + local.get $9 + local.get $10 + i32.gt_s + select + local.tee $11 + local.get $len + local.tee $12 + local.get $11 + local.get $12 + i32.lt_s + select + local.set $finalEnd + local.get $finalStart + local.tee $14 + local.get $finalEnd + local.tee $15 + local.get $14 + local.get $15 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $fromPos + local.get $finalStart + local.tee $17 + local.get $finalEnd + local.tee $18 + local.get $17 + local.get $18 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $toPos + local.get $toPos + local.get $fromPos + i32.sub + local.set $size + local.get $size + i32.eqz + if + i32.const 2128 + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + end + local.get $fromPos + i32.eqz + if (result i32) + local.get $toPos + local.get $len + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 + end + if + local.get $this + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + end + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $fromPos + i32.add + local.get $size + memory.copy + local.get $out + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + ) + (func $~lib/util/string/joinFloatArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value f32) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 2128 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + f32.load + call $~lib/util/number/dtoa + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $separator + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 28 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 28 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + call $~lib/util/number/dtoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + call $~lib/util/number/dtoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $result + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinFloatArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/util/string/joinFloatArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value f64) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 2128 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + f64.load + call $~lib/util/number/dtoa + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $separator + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 28 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 28 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + call $~lib/util/number/dtoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + call $~lib/util/number/dtoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $result + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinFloatArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $start:issues/2873 + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1680 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1712 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1856 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + f32.const 1.100000023841858 + i32.const 0 + call $~lib/number/F32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2000 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1 + i32.const 0 + call $~lib/number/F64#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2000 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $issues/2873/f32arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2160 + call $~lib/array/Array#join + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 2192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2000 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $issues/2873/f64arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2160 + call $~lib/array/Array#join + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 2192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2000 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/dtoa (param $value f32) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + local.get $value + f64.promote_f32 + local.set $value|1 + i32.const 1 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 32 + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 64 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 96 + i32.const 144 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 176 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 176 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/util/number/dtoa (param $value f64) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.1 (result i32) + local.get $value + local.set $value|1 + i32.const 0 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 32 + br $~lib/util/number/dtoa_impl|inlined.1 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 64 + br $~lib/util/number/dtoa_impl|inlined.1 + end + i32.const 96 + i32.const 144 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.1 + end + i32.const 176 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 176 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.1 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) +) diff --git a/tests/compiler/issues/2873.json b/tests/compiler/issues/2873.json new file mode 100644 index 0000000000..ea57a955e1 --- /dev/null +++ b/tests/compiler/issues/2873.json @@ -0,0 +1,3 @@ +{ + "asc_flags": [] +} diff --git a/tests/compiler/issues/2873.release.wat b/tests/compiler/issues/2873.release.wat new file mode 100644 index 0000000000..7cc4d874f8 --- /dev/null +++ b/tests/compiler/issues/2873.release.wat @@ -0,0 +1,3851 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i64 i64 i32 i64 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 f64 i32) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i64))) + (type $10 (func (result i32))) + (type $11 (func (param i32) (result i32))) + (type $12 (func (param i32 f32) (result i32))) + (type $13 (func (param i32 f64) (result i32))) + (type $14 (func (param f32) (result i32))) + (type $15 (func (param f64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36140)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\06\00\00\000\00.\000") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\06\00\00\00N\00a\00N") + (data $2 (i32.const 1100) ",") + (data $2.1 (i32.const 1112) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $3 (i32.const 1148) ",") + (data $3.1 (i32.const 1160) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data $5 (i32.const 1256) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 f32) (result i32) + (local $2 f64) + (local $3 i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + local.get $1 + f64.promote_f32 + local.tee $2 + f64.const 0 + f64.eq + if + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + local.get $2 + local.get $2 + f64.sub + f64.const 0 + f64.ne + if + local.get $2 + local.get $2 + f64.ne + if + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + else + local.get $2 + f64.const 0 + f64.lt + local.tee $3 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $3 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + unreachable + end + local.get $0 + local.get $2 + i32.const 1 + call $~lib/util/number/dtoa_core + end + ) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result i32) + local.get $1 + f64.const 0 + f64.eq + if + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + end + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne + if + local.get $1 + local.get $1 + f64.ne + if + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + else + local.get $1 + f64.const 0 + f64.lt + local.tee $2 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + end + unreachable + end + local.get $0 + local.get $1 + i32.const 0 + call $~lib/util/number/dtoa_core + end + ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + if + i32.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 36140 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 2708 + i32.const 2704 + i32.store + i32.const 2712 + i32.const 2704 + i32.store + i32.const 2704 + global.set $~lib/rt/itcms/pinSpace + i32.const 2740 + i32.const 2736 + i32.store + i32.const 2744 + i32.const 2736 + i32.store + i32.const 2736 + global.set $~lib/rt/itcms/toSpace + i32.const 2884 + i32.const 2880 + i32.store + i32.const 2888 + i32.const 2880 + i32.store + i32.const 2880 + global.set $~lib/rt/itcms/fromSpace + f32.const 1.100000023841858 + call $~lib/util/number/dtoa + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3024 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1 + call $~lib/util/number/dtoa + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3024 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3104 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3104 + i32.store + i32.const 3108 + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 3104 + i32.store + i32.const 3116 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 3184 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinFloatArray$143 + local.get $1 + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3152 + local.set $1 + br $__inlined_func$~lib/util/string/joinFloatArray$143 + end + local.get $4 + i32.eqz + if + local.get $3 + f32.load + call $~lib/util/number/dtoa + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinFloatArray$143 + end + global.get $~lib/memory/__stack_pointer + i32.const 3184 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3180 + i32.load + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 28 + i32.add + local.get $4 + i32.mul + i32.const 28 + i32.add + local.tee $6 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + call $~lib/util/number/dtoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $5 + if + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.const 3184 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $5 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load + call $~lib/util/number/dtoa_buffered + local.get $0 + i32.add + local.tee $0 + local.get $6 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinFloatArray$143 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 3216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3024 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3312 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3312 + i32.store + i32.const 3316 + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 3312 + i32.store + i32.const 3324 + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 3184 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinFloatArray$144 + local.get $0 + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3152 + local.set $1 + br $__inlined_func$~lib/util/string/joinFloatArray$144 + end + local.get $4 + i32.eqz + if + local.get $3 + f64.load + call $~lib/util/number/dtoa + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinFloatArray$144 + end + global.get $~lib/memory/__stack_pointer + i32.const 3184 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3180 + i32.load + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 28 + i32.add + local.get $4 + i32.mul + i32.const 28 + i32.add + local.tee $6 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + i32.const 0 + local.set $0 + i32.const 0 + local.set $2 + loop $for-loop|01 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $5 + if + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.const 3184 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $5 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|01 + end + end + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $0 + i32.add + local.tee $0 + local.get $6 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinFloatArray$144 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 3216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3024 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + if + i32.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$82 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$82 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + if + i32.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.le_s + select + i32.const 1 + i32.shl + local.set $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.ge_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + i32.sub + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3152 + return + end + local.get $3 + i32.eqz + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $3 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/dtoa (param $0 f32) (result i32) + (local $1 f64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + if + i32.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1056 + local.set $2 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne + if + i32.const 1088 + local.set $2 + local.get $1 + local.get $1 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 1120 + i32.const 1168 + local.get $1 + f64.const 0 + f64.lt + select + local.set $2 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 1200 + local.get $1 + i32.const 1 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 1200 + local.get $3 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/number/dtoa (param $0 f64) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + if + i32.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1056 + local.set $1 + block $~lib/util/number/dtoa_impl|inlined.1 + local.get $0 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.1 + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if + i32.const 1088 + local.set $1 + local.get $0 + local.get $0 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.1 + i32.const 1120 + i32.const 1168 + local.get $0 + f64.const 0 + f64.lt + select + local.set $1 + br $~lib/util/number/dtoa_impl|inlined.1 + end + i32.const 1200 + local.get $0 + i32.const 0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 1200 + local.get $2 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/issues/2873.ts b/tests/compiler/issues/2873.ts new file mode 100644 index 0000000000..2c93f8b66b --- /dev/null +++ b/tests/compiler/issues/2873.ts @@ -0,0 +1,8 @@ +assert((1.1).toString() == "1.1"); +assert((1.1).toString() == "1.1"); + +const f32arr: f32[] = [1.1, 2.2, 3.3]; +assert(f32arr.join() == "1.1,2.2,3.3"); + +const f64arr: f64[] = [1.1, 2.2, 3.3]; +assert(f64arr.join() == "1.1,2.2,3.3"); diff --git a/tests/compiler/limits.debug.wat b/tests/compiler/limits.debug.wat new file mode 100644 index 0000000000..85ccb74c68 --- /dev/null +++ b/tests/compiler/limits.debug.wat @@ -0,0 +1,94 @@ +(module + (type $0 (func)) + (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) + (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) + (global $~lib/builtins/i16.MIN_VALUE i32 (i32.const -32768)) + (global $~lib/builtins/i16.MAX_VALUE i32 (i32.const 32767)) + (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) + (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) + (global $~lib/builtins/isize.MIN_VALUE i32 (i32.const -2147483648)) + (global $~lib/builtins/isize.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/builtins/u8.MIN_VALUE i32 (i32.const 0)) + (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) + (global $~lib/builtins/u16.MIN_VALUE i32 (i32.const 0)) + (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) + (global $~lib/builtins/u32.MIN_VALUE i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/builtins/u64.MIN_VALUE i64 (i64.const 0)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/builtins/usize.MIN_VALUE i32 (i32.const 0)) + (global $~lib/builtins/usize.MAX_VALUE i32 (i32.const -1)) + (global $~lib/builtins/bool.MIN_VALUE i32 (i32.const 0)) + (global $~lib/builtins/bool.MAX_VALUE i32 (i32.const 1)) + (global $~lib/builtins/f32.MIN_SAFE_INTEGER f32 (f32.const -16777215)) + (global $~lib/builtins/f32.MAX_SAFE_INTEGER f32 (f32.const 16777215)) + (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) + (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:limits + global.get $~lib/builtins/i8.MIN_VALUE + drop + global.get $~lib/builtins/i8.MAX_VALUE + drop + global.get $~lib/builtins/i16.MIN_VALUE + drop + global.get $~lib/builtins/i16.MAX_VALUE + drop + global.get $~lib/builtins/i32.MIN_VALUE + drop + global.get $~lib/builtins/i32.MAX_VALUE + drop + global.get $~lib/builtins/i64.MIN_VALUE + drop + global.get $~lib/builtins/i64.MAX_VALUE + drop + global.get $~lib/builtins/isize.MIN_VALUE + drop + global.get $~lib/builtins/isize.MAX_VALUE + drop + global.get $~lib/builtins/u8.MIN_VALUE + drop + global.get $~lib/builtins/u8.MAX_VALUE + drop + global.get $~lib/builtins/u16.MIN_VALUE + drop + global.get $~lib/builtins/u16.MAX_VALUE + drop + global.get $~lib/builtins/u32.MIN_VALUE + drop + global.get $~lib/builtins/u32.MAX_VALUE + drop + global.get $~lib/builtins/u64.MIN_VALUE + drop + global.get $~lib/builtins/u64.MAX_VALUE + drop + global.get $~lib/builtins/usize.MIN_VALUE + drop + global.get $~lib/builtins/usize.MAX_VALUE + drop + global.get $~lib/builtins/bool.MIN_VALUE + drop + global.get $~lib/builtins/bool.MAX_VALUE + drop + global.get $~lib/builtins/f32.MIN_SAFE_INTEGER + drop + global.get $~lib/builtins/f32.MAX_SAFE_INTEGER + drop + global.get $~lib/builtins/f64.MIN_SAFE_INTEGER + drop + global.get $~lib/builtins/f64.MAX_SAFE_INTEGER + drop + ) + (func $~start + call $start:limits + ) +) diff --git a/tests/compiler/limits.json b/tests/compiler/limits.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/limits.json +++ b/tests/compiler/limits.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/rt/ids.optimized.wat b/tests/compiler/limits.release.wat similarity index 100% rename from tests/compiler/rt/ids.optimized.wat rename to tests/compiler/limits.release.wat diff --git a/tests/compiler/limits.untouched.wat b/tests/compiler/limits.untouched.wat deleted file mode 100644 index a3d1cfd9ce..0000000000 --- a/tests/compiler/limits.untouched.wat +++ /dev/null @@ -1,90 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) - (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) - (global $~lib/builtins/i16.MIN_VALUE i32 (i32.const -32768)) - (global $~lib/builtins/i16.MAX_VALUE i32 (i32.const 32767)) - (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) - (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) - (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) - (global $~lib/builtins/isize.MIN_VALUE i32 (i32.const -2147483648)) - (global $~lib/builtins/isize.MAX_VALUE i32 (i32.const 2147483647)) - (global $~lib/builtins/u8.MIN_VALUE i32 (i32.const 0)) - (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) - (global $~lib/builtins/u16.MIN_VALUE i32 (i32.const 0)) - (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) - (global $~lib/builtins/u32.MIN_VALUE i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/builtins/u64.MIN_VALUE i64 (i64.const 0)) - (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) - (global $~lib/builtins/usize.MIN_VALUE i32 (i32.const 0)) - (global $~lib/builtins/usize.MAX_VALUE i32 (i32.const -1)) - (global $~lib/builtins/bool.MIN_VALUE i32 (i32.const 0)) - (global $~lib/builtins/bool.MAX_VALUE i32 (i32.const 1)) - (global $~lib/builtins/f32.MIN_SAFE_INTEGER f32 (f32.const -16777215)) - (global $~lib/builtins/f32.MAX_SAFE_INTEGER f32 (f32.const 16777215)) - (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) - (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) - (export "memory" (memory $0)) - (start $~start) - (func $start:limits - global.get $~lib/builtins/i8.MIN_VALUE - drop - global.get $~lib/builtins/i8.MAX_VALUE - drop - global.get $~lib/builtins/i16.MIN_VALUE - drop - global.get $~lib/builtins/i16.MAX_VALUE - drop - global.get $~lib/builtins/i32.MIN_VALUE - drop - global.get $~lib/builtins/i32.MAX_VALUE - drop - global.get $~lib/builtins/i64.MIN_VALUE - drop - global.get $~lib/builtins/i64.MAX_VALUE - drop - global.get $~lib/builtins/isize.MIN_VALUE - drop - global.get $~lib/builtins/isize.MAX_VALUE - drop - global.get $~lib/builtins/u8.MIN_VALUE - drop - global.get $~lib/builtins/u8.MAX_VALUE - drop - global.get $~lib/builtins/u16.MIN_VALUE - drop - global.get $~lib/builtins/u16.MAX_VALUE - drop - global.get $~lib/builtins/u32.MIN_VALUE - drop - global.get $~lib/builtins/u32.MAX_VALUE - drop - global.get $~lib/builtins/u64.MIN_VALUE - drop - global.get $~lib/builtins/u64.MAX_VALUE - drop - global.get $~lib/builtins/usize.MIN_VALUE - drop - global.get $~lib/builtins/usize.MAX_VALUE - drop - global.get $~lib/builtins/bool.MIN_VALUE - drop - global.get $~lib/builtins/bool.MAX_VALUE - drop - global.get $~lib/builtins/f32.MIN_SAFE_INTEGER - drop - global.get $~lib/builtins/f32.MAX_SAFE_INTEGER - drop - global.get $~lib/builtins/f64.MIN_SAFE_INTEGER - drop - global.get $~lib/builtins/f64.MAX_SAFE_INTEGER - drop - ) - (func $~start - call $start:limits - ) -) diff --git a/tests/compiler/literals-errors.json b/tests/compiler/literals-errors.json new file mode 100644 index 0000000000..5a0469c44c --- /dev/null +++ b/tests/compiler/literals-errors.json @@ -0,0 +1,10 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "AS236: Literal '-9223372036854775809' does not fit into 'i64' or 'u64' types.", + "AS236: Literal '-0x8000000000000001' does not fit into 'i64' or 'u64' types.", + "AS236: Literal '-0o1000000000000000000001' does not fit into 'i64' or 'u64' types.", + "EOF" + ] +} diff --git a/tests/compiler/literals-errors.ts b/tests/compiler/literals-errors.ts new file mode 100644 index 0000000000..1317db1aa4 --- /dev/null +++ b/tests/compiler/literals-errors.ts @@ -0,0 +1,6 @@ +// Signed underflow +-9223372036854775809; +-0x8000000000000001; +-0o1000000000000000000001; + +ERROR("EOF"); diff --git a/tests/compiler/literals.debug.wat b/tests/compiler/literals.debug.wat new file mode 100644 index 0000000000..da883bddc8 --- /dev/null +++ b/tests/compiler/literals.debug.wat @@ -0,0 +1,122 @@ +(module + (type $0 (func)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:literals + i32.const 0 + drop + i32.const 1 + drop + i32.const 2 + drop + i32.const 3 + drop + i32.const 4 + drop + i32.const 5 + drop + i32.const 6 + drop + i32.const 7 + drop + i32.const 8 + drop + i32.const 9 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 2 + drop + i32.const 3 + drop + i32.const 4 + drop + i32.const 5 + drop + i32.const 6 + drop + i32.const 7 + drop + i32.const 8 + drop + i32.const 9 + drop + i32.const 10 + drop + i32.const 11 + drop + i32.const 12 + drop + i32.const 13 + drop + i32.const 14 + drop + i32.const 15 + drop + i32.const 10 + drop + i32.const 11 + drop + i32.const 12 + drop + i32.const 13 + drop + i32.const 14 + drop + i32.const 15 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 2 + drop + i32.const 3 + drop + i32.const 4 + drop + i32.const 5 + drop + i32.const 6 + drop + i32.const 7 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 0 + drop + i64.const -9223372036854775808 + drop + i64.const -9223372036854775808 + drop + i64.const -9223372036854775808 + drop + i64.const -9223372036854775808 + drop + i32.const 0 + drop + i64.const 0 + drop + f64.const -0 + drop + f32.const -0 + drop + f64.const -0 + drop + ) + (func $~start + call $start:literals + ) +) diff --git a/tests/compiler/literals.json b/tests/compiler/literals.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/literals.json +++ b/tests/compiler/literals.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/runtime-half.optimized.wat b/tests/compiler/literals.release.wat similarity index 100% rename from tests/compiler/runtime-half.optimized.wat rename to tests/compiler/literals.release.wat diff --git a/tests/compiler/literals.ts b/tests/compiler/literals.ts index 0b3652c816..a754e2eecd 100644 --- a/tests/compiler/literals.ts +++ b/tests/compiler/literals.ts @@ -42,3 +42,14 @@ 0b1; true; false; + +0x8000000000000000; +-0x8000000000000000; +0o1000000000000000000000; +-0o1000000000000000000000; + +-0; // i32.const 0 +-0; // i64.const 0 +-0; // f64.const -0. +f32(-0); // f32.const -0. +-0; // f64.const -0. diff --git a/tests/compiler/literals.untouched.wat b/tests/compiler/literals.untouched.wat deleted file mode 100644 index 8660c80785..0000000000 --- a/tests/compiler/literals.untouched.wat +++ /dev/null @@ -1,100 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (start $~start) - (func $start:literals - i32.const 0 - drop - i32.const 1 - drop - i32.const 2 - drop - i32.const 3 - drop - i32.const 4 - drop - i32.const 5 - drop - i32.const 6 - drop - i32.const 7 - drop - i32.const 8 - drop - i32.const 9 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 2 - drop - i32.const 3 - drop - i32.const 4 - drop - i32.const 5 - drop - i32.const 6 - drop - i32.const 7 - drop - i32.const 8 - drop - i32.const 9 - drop - i32.const 10 - drop - i32.const 11 - drop - i32.const 12 - drop - i32.const 13 - drop - i32.const 14 - drop - i32.const 15 - drop - i32.const 10 - drop - i32.const 11 - drop - i32.const 12 - drop - i32.const 13 - drop - i32.const 14 - drop - i32.const 15 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 2 - drop - i32.const 3 - drop - i32.const 4 - drop - i32.const 5 - drop - i32.const 6 - drop - i32.const 7 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 0 - drop - ) - (func $~start - call $start:literals - ) -) diff --git a/tests/compiler/localinit.debug.wat b/tests/compiler/localinit.debug.wat new file mode 100644 index 0000000000..c97e35fdd2 --- /dev/null +++ b/tests/compiler/localinit.debug.wat @@ -0,0 +1,168 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $localinit/initInIf + (local $a i32) + i32.const 1 + local.tee $a + i32.const 0 + i32.gt_s + drop + local.get $a + drop + local.get $a + drop + ) + (func $localinit/initInIfElse + (local $a i32) + i32.const 1 + local.tee $a + i32.const 0 + i32.gt_s + drop + local.get $a + drop + local.get $a + drop + ) + (func $localinit/initInIfAnd (param $cond i32) + (local $a i32) + (local $b i32) + local.get $cond + if (result i32) + i32.const 0 + local.tee $a + else + i32.const 0 + end + if (result i32) + i32.const 0 + local.tee $b + else + i32.const 0 + end + if + local.get $a + drop + local.get $b + drop + end + ) + (func $localinit/initInIfOr (param $cond i32) + (local $a i32) + (local $b i32) + local.get $cond + if (result i32) + i32.const 1 + else + i32.const 0 + local.tee $a + end + if (result i32) + i32.const 1 + else + i32.const 0 + local.tee $b + end + if + return + end + local.get $a + drop + local.get $b + drop + ) + (func $localinit/initInDo (param $cond i32) + (local $a i32) + loop $do-loop|0 + i32.const 1 + local.set $a + local.get $cond + br_if $do-loop|0 + end + local.get $a + drop + ) + (func $localinit/initInWhile + (local $a i32) + block $while-break|0 + loop $while-continue|0 + i32.const 1 + local.tee $a + if + local.get $a + drop + br $while-break|0 + end + end + end + local.get $a + drop + ) + (func $localinit/initInWhileAnd (param $cond i32) + (local $a i32) + loop $while-continue|0 + local.get $cond + if (result i32) + i32.const 0 + local.tee $a + else + i32.const 0 + end + if + local.get $a + drop + br $while-continue|0 + end + end + ) + (func $localinit/initInWhileOr (param $cond i32) + (local $a i32) + (local $b i32) + loop $while-continue|0 + local.get $cond + if (result i32) + i32.const 1 + else + i32.const 1 + local.tee $a + end + if (result i32) + i32.const 1 + else + i32.const 1 + local.tee $b + end + if + return + end + end + local.get $a + drop + local.get $b + drop + ) + (func $start:localinit + call $localinit/initInIf + call $localinit/initInIfElse + i32.const 1 + call $localinit/initInIfAnd + i32.const 1 + call $localinit/initInIfOr + i32.const 0 + call $localinit/initInDo + call $localinit/initInWhile + i32.const 1 + call $localinit/initInWhileAnd + i32.const 1 + call $localinit/initInWhileOr + ) + (func $~start + call $start:localinit + ) +) diff --git a/tests/compiler/localinit.json b/tests/compiler/localinit.json new file mode 100644 index 0000000000..8e0a066281 --- /dev/null +++ b/tests/compiler/localinit.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--runtime", "stub" + ] +} diff --git a/tests/compiler/runtime-none.optimized.wat b/tests/compiler/localinit.release.wat similarity index 100% rename from tests/compiler/runtime-none.optimized.wat rename to tests/compiler/localinit.release.wat diff --git a/tests/compiler/localinit.ts b/tests/compiler/localinit.ts new file mode 100644 index 0000000000..0eede006ad --- /dev/null +++ b/tests/compiler/localinit.ts @@ -0,0 +1,77 @@ +function initInIf(): void { + let a: i32; + if ((a = 1) > 0) { + a; + } + a; +} +initInIf(); + +function initInIfElse(): void { + let a: i32; + if ((a = 1) > 0) { + a; + } else { + a; + } + a; +} +initInIfElse(); + +function initInIfAnd(cond: bool): void { + let a: i32; + let b: i32; + if (cond && (a = 0) && (b = 0)) { + a; + b; + } +} +initInIfAnd(true); + +function initInIfOr(cond: bool): void { + let a: i32; + let b: i32; + if (cond || (a = 0) || (b = 0)) { + return; + } + a; + b; +} +initInIfOr(true); + +function initInDo(cond: bool): void { + let a: i32; + do a = 1; + while (cond); + a; +} +initInDo(false); + +function initInWhile(): void { + let a: i32; + while (a = 1) { + a; + break; + } + a; +} +initInWhile(); + +function initInWhileAnd(cond: bool): void { + let a: i32; + while (cond && (a = 0)) { + a; + } +} +initInWhileAnd(true); + +function initInWhileOr(cond: bool): void { + let a: i32; + let b: i32; + while (cond || (a = 1) || (b = 1)) { + return; + } + a; + b; +} +initInWhileOr(true); diff --git a/tests/compiler/logical.debug.wat b/tests/compiler/logical.debug.wat new file mode 100644 index 0000000000..bf7e9e66c3 --- /dev/null +++ b/tests/compiler/logical.debug.wat @@ -0,0 +1,3022 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i64 i32) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $logical/i (mut i32) (i32.const 0)) + (global $logical/I (mut i64) (i64.const 0)) + (global $logical/f (mut f32) (f32.const 0)) + (global $logical/F (mut f64) (f64.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $logical/foo (mut i32) (i32.const 456)) + (global $logical/bar (mut f64) (f64.const -0)) + (global $logical/baz (mut i32) (i32.const 321)) + (global $logical/qux (mut f64) (f64.const 2.718)) + (global $logical/b (mut i32) (i32.const 0)) + (global $logical/c (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 464)) + (global $~lib/memory/__data_end i32 (i32.const 500)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33268)) + (global $~lib/memory/__heap_base i32 (i32.const 33268)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 464) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "foo" (global $logical/foo)) + (export "bar" (global $logical/bar)) + (export "baz" (global $logical/baz)) + (export "qux" (global $logical/qux)) + (export "memory" (memory $0)) + (start $~start) + (func $logical/testShortcutAnd (param $a i64) (param $b i32) (result i32) + local.get $a + i64.const 0 + i64.ne + if (result i32) + local.get $b + else + i32.const 0 + end + return + ) + (func $logical/testShortcutOr (param $a i64) (param $b i32) (result i32) + local.get $a + i64.const 0 + i64.ne + if (result i32) + i32.const 1 + else + local.get $b + end + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 272 + i32.const 336 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 144 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 80 + i32.const 416 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 80 + i32.const 144 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $logical/testContextualBoolAnd (param $someObj i32) (param $someInt i32) (result i32) + local.get $someObj + if (result i32) + local.get $someInt + else + i32.const 0 + end + return + ) + (func $logical/testContextualBoolOr (param $someObj i32) (param $someInt i32) (result i32) + local.get $someObj + if (result i32) + i32.const 1 + else + local.get $someInt + end + return + ) + (func $logical/commonOr (param $b i32) (result i32) + local.get $b + if (result i32) + local.get $b + else + global.get $logical/c + end + return + ) + (func $logical/commonAnd (param $b i32) (result i32) + local.get $b + if (result i32) + global.get $logical/c + else + local.get $b + end + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $logical/b + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $logical/c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 272 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 80 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $logical/C + block $logical/A + block $logical/B + block $logical/Obj + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $logical/Obj $logical/B $logical/A $logical/C $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:logical + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33296 + i32.const 33344 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $logical/Obj#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $logical/A#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $logical/B#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $logical/A#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $logical/C#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $logical/A#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:logical + (local $0 f32) + (local $1 f32) + (local $2 f64) + (local $3 f64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + f64.const 0 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + drop + i32.const 1 + drop + f64.const 1 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + drop + i32.const 2 + drop + f64.const 2 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + drop + i32.const 2 + global.set $logical/i + global.get $logical/i + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $logical/i + global.get $logical/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + global.set $logical/I + global.get $logical/I + i64.const 2 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + global.set $logical/I + global.get $logical/I + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + global.set $logical/f + global.get $logical/f + f32.const 2 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + global.set $logical/f + global.get $logical/f + f32.const 1 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + global.set $logical/F + global.get $logical/F + f64.const 2 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + global.set $logical/F + global.get $logical/F + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + global.set $logical/f + global.get $logical/f + f32.const 1 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + global.set $logical/f + global.get $logical/f + f32.const 1 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + global.set $logical/F + global.get $logical/F + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + global.set $logical/F + global.get $logical/F + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + global.set $logical/f + global.get $logical/f + local.tee $0 + local.get $0 + f32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + global.set $logical/f + global.get $logical/f + local.tee $1 + local.get $1 + f32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + global.set $logical/F + global.get $logical/F + local.tee $2 + local.get $2 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + global.set $logical/F + global.get $logical/F + local.tee $3 + local.get $3 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 65 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i32.const 1 + call $logical/testShortcutAnd + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 76 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i32.const 1 + call $logical/testShortcutOr + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 192 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $logical/Obj#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + call $logical/testContextualBoolAnd + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $logical/Obj#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $logical/testContextualBoolOr + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $logical/B#constructor + global.set $logical/b + i32.const 0 + call $logical/C#constructor + global.set $logical/c + global.get $logical/b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $logical/commonOr + global.get $logical/b + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $logical/commonOr + global.get $logical/c + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $logical/b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $logical/commonAnd + global.get $logical/c + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $logical/commonAnd + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/logical.json b/tests/compiler/logical.json index 9f7878d475..1bdd02b1be 100644 --- a/tests/compiler/logical.json +++ b/tests/compiler/logical.json @@ -1,6 +1,4 @@ { "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" ] -} \ No newline at end of file +} diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat deleted file mode 100644 index ce3a0a2d5d..0000000000 --- a/tests/compiler/logical.optimized.wat +++ /dev/null @@ -1,1100 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s") - (data (i32.const 1072) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1120) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1184) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1088 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1088 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1232 - local.set $1 - i32.const 1232 - i32.const 0 - i32.store - i32.const 2800 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1232 - i32.const 2816 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1232 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1088 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.lt_u - if - i32.const 0 - i32.const 1088 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.tee $3 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - i32.const 16 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - call $~lib/rt/rtrace/onalloc - local.get $1 - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1232 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1200 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $logical/Obj#constructor (result i32) - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1232 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - call $logical/Obj#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/rt/pure/__release - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $logical/Obj#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.tee $2 - call $~lib/rt/pure/__release - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1200 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1232 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1200 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1200 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/logical.release.wat b/tests/compiler/logical.release.wat new file mode 100644 index 0000000000..5147bdfca1 --- /dev/null +++ b/tests/compiler/logical.release.wat @@ -0,0 +1,1727 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $logical/foo (mut i32) (i32.const 456)) + (global $logical/bar (mut f64) (f64.const -0)) + (global $logical/baz (mut i32) (i32.const 321)) + (global $logical/qux (mut f64) (f64.const 2.718)) + (global $logical/b (mut i32) (i32.const 0)) + (global $logical/c (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34292)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s") + (data $1 (i32.const 1084) "<") + (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1148) "<") + (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1276) "<") + (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1340) ",") + (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1420) "<") + (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1488) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (export "foo" (global $logical/foo)) + (export "bar" (global $logical/bar)) + (export "baz" (global $logical/baz)) + (export "qux" (global $logical/qux)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $logical/b + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $logical/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$122 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34292 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$122 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34304 + i32.const 0 + i32.store + i32.const 35872 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34304 + i32.const 35876 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34304 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34292 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34292 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34292 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $logical/C + block $logical/A + block $logical/B + block $logical/Obj + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $logical/Obj $logical/B $logical/A $logical/C $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + block $__inlined_func$start:logical$1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34292 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + call $logical/Obj#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $logical/Obj#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $logical/A#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $logical/b + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $logical/A#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $logical/c + global.get $~lib/memory/__stack_pointer + global.get $logical/b + local.tee $0 + i32.store + global.get $logical/b + local.get $0 + global.get $logical/c + local.get $0 + select + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $logical/b + local.tee $0 + i32.store + global.get $logical/c + global.get $logical/c + local.get $0 + local.get $0 + select + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$start:logical$1 + end + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $logical/Obj#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + if + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $logical/A#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + if + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + if + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/logical.ts b/tests/compiler/logical.ts index f91f1ce1a1..a5943a4f3f 100644 --- a/tests/compiler/logical.ts +++ b/tests/compiler/logical.ts @@ -90,3 +90,32 @@ function testContextualBoolOr(someObj: Obj, someInt: i32): bool { return someObj || someInt; } assert(testContextualBoolOr(new Obj(), 0)); + +// Test simplification with precomputable LHS operands +// see: https://github.com/AssemblyScript/assemblyscript/issues/2946 + +export let foo = 123 && 456; +export let bar = -0.0 && 1.23; +export let baz = 321 || 654; +export let qux = NaN || 2.718; + +// Common type + +class A {} +class B extends A {} +class C extends A {} + +let b = new B(); +let c = new C(); + +function commonOr(b: B | null): A { + return b || c; +} +assert(commonOr(b) == b); +assert(commonOr(null) == c); + +function commonAnd(b: B | null): A | null { + return b && c; +} +assert(commonAnd(b) == c); +assert(commonAnd(null) == null); diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat deleted file mode 100644 index 5ce7daa94c..0000000000 --- a/tests/compiler/logical.untouched.wat +++ /dev/null @@ -1,2322 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s\00") - (data (i32.const 64) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 112) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 176) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (table $0 1 funcref) - (global $logical/i (mut i32) (i32.const 0)) - (global $logical/I (mut i64) (i64.const 0)) - (global $logical/f (mut f32) (f32.const 0)) - (global $logical/F (mut f64) (f64.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/heap/__heap_base i32 (i32.const 224)) - (export "memory" (memory $0)) - (start $~start) - (func $logical/testShortcutAnd (param $0 i64) (param $1 i32) (result i32) - local.get $0 - i64.const 0 - i64.ne - if (result i32) - local.get $1 - else - i32.const 0 - end - ) - (func $logical/testShortcutOr (param $0 i64) (param $1 i32) (result i32) - local.get $0 - i64.const 0 - i64.ne - if (result i32) - i32.const 1 - else - local.get $1 - end - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 128 - i32.const 80 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $logical/Obj#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $logical/testContextualBoolAnd (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - if (result i32) - local.get $1 - else - i32.const 0 - end - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $logical/testContextualBoolOr (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - end - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $start:logical - (local $0 f32) - (local $1 f64) - (local $2 i32) - (local $3 i32) - i32.const 0 - if (result i32) - unreachable - else - i32.const 0 - end - drop - f64.const 0 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - if (result i32) - unreachable - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 1 - else - unreachable - end - drop - f64.const 1 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - if (result i32) - i32.const 1 - else - unreachable - end - drop - i32.const 1 - if (result i32) - i32.const 2 - else - i32.const 1 - end - if (result i32) - i32.const 1 - else - unreachable - end - drop - f64.const 1 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - if (result f64) - f64.const 2 - else - f64.const 1 - end - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - if (result i32) - i32.const 1 - else - unreachable - end - drop - i32.const 1 - if (result i32) - i32.const 2 - else - i32.const 1 - end - global.set $logical/i - global.get $logical/i - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 1 - end - global.set $logical/i - global.get $logical/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.const 0 - i64.ne - if (result i64) - i64.const 2 - else - i64.const 1 - end - global.set $logical/I - global.get $logical/I - i64.const 2 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i64.const 0 - i64.ne - if (result i64) - i64.const 0 - else - i64.const 1 - end - global.set $logical/I - global.get $logical/I - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - if (result f32) - f32.const 2 - else - f32.const 1 - end - global.set $logical/f - global.get $logical/f - f32.const 2 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - if (result f32) - f32.const 0 - else - f32.const 1 - end - global.set $logical/f - global.get $logical/f - f32.const 1 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - if (result f64) - f64.const 2 - else - f64.const 1 - end - global.set $logical/F - global.get $logical/F - f64.const 2 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - if (result f64) - f64.const 0 - else - f64.const 1 - end - global.set $logical/F - global.get $logical/F - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - if (result f32) - f32.const nan:0x400000 - else - f32.const 1 - end - global.set $logical/f - global.get $logical/f - f32.const 1 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - if (result f32) - f32.const 1 - else - f32.const nan:0x400000 - end - global.set $logical/f - global.get $logical/f - f32.const 1 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - if (result f64) - f64.const nan:0x8000000000000 - else - f64.const 1 - end - global.set $logical/F - global.get $logical/F - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - if (result f64) - f64.const 1 - else - f64.const nan:0x8000000000000 - end - global.set $logical/F - global.get $logical/F - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 53 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - if (result f32) - f32.const nan:0x400000 - else - f32.const 1 - end - global.set $logical/f - global.get $logical/f - local.tee $0 - local.get $0 - f32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - if (result f32) - f32.const 1 - else - f32.const nan:0x400000 - end - global.set $logical/f - global.get $logical/f - local.tee $0 - local.get $0 - f32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - if (result f64) - f64.const nan:0x8000000000000 - else - f64.const 1 - end - global.set $logical/F - global.get $logical/F - local.tee $1 - local.get $1 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - if (result f64) - f64.const 1 - else - f64.const nan:0x8000000000000 - end - global.set $logical/F - global.get $logical/F - local.tee $1 - local.get $1 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 65 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i32.const 1 - call $logical/testShortcutAnd - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 76 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i32.const 1 - call $logical/testShortcutOr - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $logical/Obj#constructor - local.tee $2 - i32.const 1 - call $logical/testContextualBoolAnd - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $logical/Obj#constructor - local.tee $3 - i32.const 0 - call $logical/testContextualBoolOr - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~start - call $start:logical - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/loop-flow.debug.wat b/tests/compiler/loop-flow.debug.wat new file mode 100644 index 0000000000..2fde4e0b10 --- /dev/null +++ b/tests/compiler/loop-flow.debug.wat @@ -0,0 +1,288 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__data_end i32 (i32.const 92)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32860)) + (global $~lib/memory/__heap_base i32 (i32.const 32860)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s\00\00\00\00\00") + (data $1 (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00e\00r\00m\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "whileReturn" (func $loop-flow/whileReturn)) + (export "whileThrow" (func $loop-flow/whileThrow)) + (export "whileContinue" (func $loop-flow/whileContinue)) + (export "whileAny" (func $loop-flow/whileAny)) + (export "forReturn" (func $loop-flow/forReturn)) + (export "forThrow" (func $loop-flow/forThrow)) + (export "forContinue" (func $loop-flow/forContinue)) + (export "forAny" (func $loop-flow/forAny)) + (export "doReturn" (func $loop-flow/doReturn)) + (export "doThrow" (func $loop-flow/doThrow)) + (export "doAny" (func $loop-flow/doAny)) + (export "memory" (memory $0)) + (start $~start) + (func $loop-flow/whileReturn (result i32) + loop $while-continue|0 + i32.const 1 + if + i32.const 1 + return + end + end + unreachable + ) + (func $loop-flow/whileAny (param $a i32) (result i32) + loop $while-continue|0 + i32.const 1 + if + local.get $a + i32.const 1 + i32.eq + if + i32.const 1 + return + else + local.get $a + i32.const 2 + i32.eq + if + i32.const 80 + i32.const 32 + i32.const 24 + i32.const 22 + call $~lib/builtins/abort + unreachable + else + br $while-continue|0 + end + unreachable + end + unreachable + end + end + unreachable + ) + (func $loop-flow/forReturn (result i32) + i32.const 1 + if + i32.const 1 + return + end + unreachable + ) + (func $loop-flow/forAny (param $a i32) (result i32) + loop $for-loop|0 + i32.const 1 + if + block $for-continue|0 + local.get $a + i32.const 1 + i32.eq + if + i32.const 1 + return + else + local.get $a + i32.const 2 + i32.eq + if + i32.const 80 + i32.const 32 + i32.const 54 + i32.const 22 + call $~lib/builtins/abort + unreachable + else + br $for-continue|0 + end + unreachable + end + unreachable + end + br $for-loop|0 + end + end + unreachable + ) + (func $loop-flow/doReturn (result i32) + loop $do-loop|0 + i32.const 1 + return + end + unreachable + ) + (func $loop-flow/doAny (param $a i32) (result i32) + loop $do-loop|0 + block $do-continue|0 + local.get $a + i32.const 1 + i32.eq + if + i32.const 1 + return + else + local.get $a + i32.const 2 + i32.eq + if + i32.const 80 + i32.const 32 + i32.const 78 + i32.const 22 + call $~lib/builtins/abort + unreachable + else + br $do-continue|0 + end + unreachable + end + unreachable + end + i32.const 1 + br_if $do-loop|0 + end + unreachable + ) + (func $start:loop-flow + call $loop-flow/whileReturn + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $loop-flow/whileAny + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $loop-flow/forReturn + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $loop-flow/forAny + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $loop-flow/doReturn + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $loop-flow/doAny + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $loop-flow/whileThrow (result i32) + loop $while-continue|0 + i32.const 1 + if + i32.const 80 + i32.const 32 + i32.const 11 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + unreachable + ) + (func $loop-flow/whileContinue (result i32) + loop $while-continue|0 + i32.const 1 + if + br $while-continue|0 + end + end + unreachable + ) + (func $loop-flow/forThrow (result i32) + i32.const 1 + if + i32.const 80 + i32.const 32 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + unreachable + ) + (func $loop-flow/forContinue (result i32) + loop $for-loop|0 + i32.const 1 + if + block $for-continue|0 + br $for-continue|0 + end + br $for-loop|0 + end + end + unreachable + ) + (func $loop-flow/doThrow (result i32) + loop $do-loop|0 + i32.const 80 + i32.const 32 + i32.const 71 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + unreachable + ) + (func $~start + call $start:loop-flow + ) +) diff --git a/tests/compiler/loop-flow.json b/tests/compiler/loop-flow.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/loop-flow.json +++ b/tests/compiler/loop-flow.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/loop-flow.optimized.wat b/tests/compiler/loop-flow.optimized.wat deleted file mode 100644 index 638f2185d5..0000000000 --- a/tests/compiler/loop-flow.optimized.wat +++ /dev/null @@ -1,168 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s") - (data (i32.const 1072) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00r\00m") - (export "memory" (memory $0)) - (export "whileReturn" (func $loop-flow/whileReturn)) - (export "whileThrow" (func $loop-flow/whileThrow)) - (export "whileContinue" (func $loop-flow/whileContinue)) - (export "whileAny" (func $loop-flow/whileAny)) - (export "forReturn" (func $loop-flow/whileReturn)) - (export "forThrow" (func $loop-flow/forThrow)) - (export "forContinue" (func $loop-flow/whileContinue)) - (export "forAny" (func $loop-flow/forAny)) - (export "doReturn" (func $loop-flow/whileReturn)) - (export "doThrow" (func $loop-flow/doThrow)) - (export "doAny" (func $loop-flow/doAny)) - (start $~start) - (func $loop-flow/whileReturn (result i32) - i32.const 1 - ) - (func $loop-flow/whileAny (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1 - i32.eq - local.set $1 - loop $while-continue|0 - local.get $1 - i32.eqz - if - local.get $0 - i32.const 2 - i32.ne - br_if $while-continue|0 - i32.const 1088 - i32.const 1040 - i32.const 24 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - ) - (func $loop-flow/forAny (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1 - i32.eq - local.set $1 - loop $for-loop|0 - local.get $1 - i32.eqz - if - local.get $0 - i32.const 2 - i32.eq - if - i32.const 1088 - i32.const 1040 - i32.const 54 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - br $for-loop|0 - end - end - i32.const 1 - ) - (func $loop-flow/doAny (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1 - i32.eq - local.set $1 - loop $do-continue|0 - local.get $1 - i32.eqz - if - local.get $0 - i32.const 2 - i32.ne - br_if $do-continue|0 - i32.const 1088 - i32.const 1040 - i32.const 78 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - end - i32.const 1 - ) - (func $loop-flow/whileThrow (result i32) - i32.const 1088 - i32.const 1040 - i32.const 11 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $loop-flow/whileContinue (result i32) - loop $while-continue|0 - br $while-continue|0 - end - unreachable - ) - (func $loop-flow/forThrow (result i32) - i32.const 1088 - i32.const 1040 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $loop-flow/doThrow (result i32) - i32.const 1088 - i32.const 1040 - i32.const 71 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~start - i32.const 1 - call $loop-flow/whileAny - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $loop-flow/forAny - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $loop-flow/doAny - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 83 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/loop-flow.release.wat b/tests/compiler/loop-flow.release.wat new file mode 100644 index 0000000000..f6a91f814e --- /dev/null +++ b/tests/compiler/loop-flow.release.wat @@ -0,0 +1,140 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32 i32 i32))) + (type $3 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s") + (data $1 (i32.const 1084) "\1c") + (data $1.1 (i32.const 1096) "\02\00\00\00\08\00\00\00t\00e\00r\00m") + (export "whileReturn" (func $loop-flow/whileReturn)) + (export "whileThrow" (func $loop-flow/whileThrow)) + (export "whileContinue" (func $loop-flow/whileContinue)) + (export "whileAny" (func $loop-flow/whileAny)) + (export "forReturn" (func $loop-flow/whileReturn)) + (export "forThrow" (func $loop-flow/forThrow)) + (export "forContinue" (func $loop-flow/whileContinue)) + (export "forAny" (func $loop-flow/forAny)) + (export "doReturn" (func $loop-flow/whileReturn)) + (export "doThrow" (func $loop-flow/doThrow)) + (export "doAny" (func $loop-flow/doAny)) + (export "memory" (memory $0)) + (start $~start) + (func $loop-flow/whileReturn (result i32) + i32.const 1 + ) + (func $loop-flow/whileAny (param $0 i32) (result i32) + loop $while-continue|0 (result i32) + local.get $0 + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 2 + i32.eq + if + i32.const 1104 + i32.const 1056 + i32.const 24 + i32.const 22 + call $~lib/builtins/abort + unreachable + else + br $while-continue|0 + end + unreachable + end + end + ) + (func $loop-flow/forAny (param $0 i32) (result i32) + loop $for-loop|0 (result i32) + local.get $0 + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 2 + i32.eq + if + i32.const 1104 + i32.const 1056 + i32.const 54 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + br $for-loop|0 + end + end + ) + (func $loop-flow/doAny (param $0 i32) (result i32) + loop $do-loop|0 (result i32) + local.get $0 + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 2 + i32.eq + if + i32.const 1104 + i32.const 1056 + i32.const 78 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + br $do-loop|0 + end + end + ) + (func $loop-flow/whileThrow (result i32) + i32.const 1104 + i32.const 1056 + i32.const 11 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $loop-flow/whileContinue (result i32) + loop $while-continue|0 + br $while-continue|0 + end + unreachable + ) + (func $loop-flow/forThrow (result i32) + i32.const 1104 + i32.const 1056 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $loop-flow/doThrow (result i32) + i32.const 1104 + i32.const 1056 + i32.const 71 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~start + i32.const 1 + call $loop-flow/whileAny + drop + i32.const 1 + call $loop-flow/forAny + drop + i32.const 1 + call $loop-flow/doAny + drop + ) +) diff --git a/tests/compiler/loop-flow.untouched.wat b/tests/compiler/loop-flow.untouched.wat deleted file mode 100644 index 117fc0ca89..0000000000 --- a/tests/compiler/loop-flow.untouched.wat +++ /dev/null @@ -1,308 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s\00") - (data (i32.const 64) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00r\00m\00") - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "whileReturn" (func $loop-flow/whileReturn)) - (export "whileThrow" (func $loop-flow/whileThrow)) - (export "whileContinue" (func $loop-flow/whileContinue)) - (export "whileAny" (func $loop-flow/whileAny)) - (export "forReturn" (func $loop-flow/forReturn)) - (export "forThrow" (func $loop-flow/forThrow)) - (export "forContinue" (func $loop-flow/forContinue)) - (export "forAny" (func $loop-flow/forAny)) - (export "doReturn" (func $loop-flow/doReturn)) - (export "doThrow" (func $loop-flow/doThrow)) - (export "doAny" (func $loop-flow/doAny)) - (start $~start) - (func $loop-flow/whileReturn (result i32) - (local $0 i32) - loop $while-continue|0 - i32.const 1 - local.set $0 - local.get $0 - if - i32.const 1 - return - end - end - unreachable - ) - (func $loop-flow/whileAny (param $0 i32) (result i32) - (local $1 i32) - loop $while-continue|0 - i32.const 1 - local.set $1 - local.get $1 - if - local.get $0 - i32.const 1 - i32.eq - if - i32.const 1 - return - else - local.get $0 - i32.const 2 - i32.eq - if - i32.const 80 - i32.const 32 - i32.const 24 - i32.const 22 - call $~lib/builtins/abort - unreachable - else - br $while-continue|0 - end - unreachable - end - unreachable - end - end - unreachable - ) - (func $loop-flow/forReturn (result i32) - (local $0 i32) - loop $for-loop|0 - i32.const 1 - local.set $0 - local.get $0 - if - i32.const 1 - return - end - end - unreachable - ) - (func $loop-flow/forAny (param $0 i32) (result i32) - (local $1 i32) - loop $for-loop|0 - i32.const 1 - local.set $1 - local.get $1 - if - block $for-continue|0 - local.get $0 - i32.const 1 - i32.eq - if - i32.const 1 - return - else - local.get $0 - i32.const 2 - i32.eq - if - i32.const 80 - i32.const 32 - i32.const 54 - i32.const 22 - call $~lib/builtins/abort - unreachable - else - br $for-continue|0 - end - unreachable - end - unreachable - end - br $for-loop|0 - end - end - unreachable - ) - (func $loop-flow/doReturn (result i32) - loop $do-continue|0 - i32.const 1 - return - end - unreachable - ) - (func $loop-flow/doAny (param $0 i32) (result i32) - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.eq - if - i32.const 1 - return - else - local.get $0 - i32.const 2 - i32.eq - if - i32.const 80 - i32.const 32 - i32.const 78 - i32.const 22 - call $~lib/builtins/abort - unreachable - else - br $do-continue|0 - end - unreachable - end - unreachable - end - unreachable - ) - (func $start:loop-flow - call $loop-flow/whileReturn - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $loop-flow/whileAny - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $loop-flow/forReturn - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $loop-flow/forAny - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $loop-flow/doReturn - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 67 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $loop-flow/doAny - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 83 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $loop-flow/whileThrow (result i32) - (local $0 i32) - loop $while-continue|0 - i32.const 1 - local.set $0 - local.get $0 - if - i32.const 80 - i32.const 32 - i32.const 11 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - unreachable - ) - (func $loop-flow/whileContinue (result i32) - (local $0 i32) - loop $while-continue|0 - i32.const 1 - local.set $0 - local.get $0 - if - br $while-continue|0 - end - end - unreachable - ) - (func $loop-flow/forThrow (result i32) - (local $0 i32) - loop $for-loop|0 - i32.const 1 - local.set $0 - local.get $0 - if - i32.const 80 - i32.const 32 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - unreachable - ) - (func $loop-flow/forContinue (result i32) - (local $0 i32) - loop $for-loop|0 - i32.const 1 - local.set $0 - local.get $0 - if - block $for-continue|0 - br $for-continue|0 - end - br $for-loop|0 - end - end - unreachable - ) - (func $loop-flow/doThrow (result i32) - loop $do-continue|0 - i32.const 80 - i32.const 32 - i32.const 71 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - unreachable - ) - (func $~start - call $start:loop-flow - ) -) diff --git a/tests/compiler/loop-wrap.debug.wat b/tests/compiler/loop-wrap.debug.wat new file mode 100644 index 0000000000..43e1bbb674 --- /dev/null +++ b/tests/compiler/loop-wrap.debug.wat @@ -0,0 +1,84 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "testAlwaysWrapped" (func $loop-wrap/testAlwaysWrapped)) + (export "testFirstWrapped" (func $loop-wrap/testFirstWrapped)) + (export "testSubsequentWrapped" (func $loop-wrap/testSubsequentWrapped)) + (export "memory" (memory $0)) + (func $loop-wrap/testAlwaysWrapped + (local $i i32) + i32.const 0 + local.set $i + block $do-break|0 + loop $do-loop|0 + local.get $i + i32.const 10 + i32.eq + if + br $do-break|0 + end + local.get $i + i32.const 1 + i32.add + i32.const 255 + i32.and + local.tee $i + br_if $do-loop|0 + end + end + ) + (func $loop-wrap/testFirstWrapped + (local $i i32) + i32.const 0 + local.set $i + block $do-break|1 + loop $do-loop|1 + local.get $i + i32.const 255 + i32.and + i32.const 10 + i32.eq + if + br $do-break|1 + end + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 255 + i32.and + br_if $do-loop|1 + end + end + ) + (func $loop-wrap/testSubsequentWrapped (param $a i32) + (local $i i32) + local.get $a + local.set $i + block $do-break|0 + loop $do-loop|0 + local.get $i + i32.const 255 + i32.and + i32.const 10 + i32.eq + if + br $do-break|0 + end + local.get $i + i32.const 1 + i32.add + i32.const 255 + i32.and + local.tee $i + br_if $do-loop|0 + end + end + ) +) diff --git a/tests/compiler/loop-wrap.json b/tests/compiler/loop-wrap.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/loop-wrap.json +++ b/tests/compiler/loop-wrap.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/loop-wrap.optimized.wat b/tests/compiler/loop-wrap.optimized.wat deleted file mode 100644 index fb9a7b9452..0000000000 --- a/tests/compiler/loop-wrap.optimized.wat +++ /dev/null @@ -1,63 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (memory $0 0) - (export "memory" (memory $0)) - (export "testAlwaysWrapped" (func $loop-wrap/testAlwaysWrapped)) - (export "testFirstWrapped" (func $loop-wrap/testFirstWrapped)) - (export "testSubsequentWrapped" (func $loop-wrap/testSubsequentWrapped)) - (func $loop-wrap/testAlwaysWrapped - (local $0 i32) - loop $do-continue|0 - local.get $0 - i32.const 10 - i32.ne - if - local.get $0 - i32.const 1 - i32.add - i32.const 255 - i32.and - local.tee $0 - br_if $do-continue|0 - end - end - ) - (func $loop-wrap/testFirstWrapped - (local $0 i32) - loop $do-continue|1 - local.get $0 - i32.const 255 - i32.and - i32.const 10 - i32.ne - if - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 255 - i32.and - br_if $do-continue|1 - end - end - ) - (func $loop-wrap/testSubsequentWrapped (param $0 i32) - loop $do-continue|0 - local.get $0 - i32.const 255 - i32.and - i32.const 10 - i32.ne - if - local.get $0 - i32.const 1 - i32.add - i32.const 255 - i32.and - local.tee $0 - br_if $do-continue|0 - end - end - ) -) diff --git a/tests/compiler/loop-wrap.release.wat b/tests/compiler/loop-wrap.release.wat new file mode 100644 index 0000000000..aeb624f5ba --- /dev/null +++ b/tests/compiler/loop-wrap.release.wat @@ -0,0 +1,63 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (memory $0 0) + (export "testAlwaysWrapped" (func $loop-wrap/testAlwaysWrapped)) + (export "testFirstWrapped" (func $loop-wrap/testFirstWrapped)) + (export "testSubsequentWrapped" (func $loop-wrap/testSubsequentWrapped)) + (export "memory" (memory $0)) + (func $loop-wrap/testAlwaysWrapped + (local $0 i32) + loop $do-loop|0 + local.get $0 + i32.const 10 + i32.ne + if + local.get $0 + i32.const 1 + i32.add + i32.const 255 + i32.and + local.tee $0 + br_if $do-loop|0 + end + end + ) + (func $loop-wrap/testFirstWrapped + (local $0 i32) + loop $do-loop|1 + local.get $0 + i32.const 255 + i32.and + i32.const 10 + i32.ne + if + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 255 + i32.and + br_if $do-loop|1 + end + end + ) + (func $loop-wrap/testSubsequentWrapped (param $0 i32) + loop $do-loop|0 + local.get $0 + i32.const 255 + i32.and + i32.const 10 + i32.ne + if + local.get $0 + i32.const 1 + i32.add + i32.const 255 + i32.and + local.tee $0 + br_if $do-loop|0 + end + end + ) +) diff --git a/tests/compiler/loop-wrap.untouched.wat b/tests/compiler/loop-wrap.untouched.wat deleted file mode 100644 index b5c4d03b09..0000000000 --- a/tests/compiler/loop-wrap.untouched.wat +++ /dev/null @@ -1,89 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "testAlwaysWrapped" (func $loop-wrap/testAlwaysWrapped)) - (export "testFirstWrapped" (func $loop-wrap/testFirstWrapped)) - (export "testSubsequentWrapped" (func $loop-wrap/testSubsequentWrapped)) - (func $loop-wrap/testAlwaysWrapped - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - block $do-break|0 - loop $do-continue|0 - local.get $0 - i32.const 10 - i32.eq - if - br $do-break|0 - end - local.get $0 - i32.const 1 - i32.add - i32.const 255 - i32.and - local.tee $0 - local.set $1 - local.get $1 - br_if $do-continue|0 - end - end - ) - (func $loop-wrap/testFirstWrapped - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - block $do-break|1 - loop $do-continue|1 - local.get $0 - i32.const 255 - i32.and - i32.const 10 - i32.eq - if - br $do-break|1 - end - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 255 - i32.and - local.set $1 - local.get $1 - br_if $do-continue|1 - end - end - ) - (func $loop-wrap/testSubsequentWrapped (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.set $1 - block $do-break|0 - loop $do-continue|0 - local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.eq - if - br $do-break|0 - end - local.get $1 - i32.const 1 - i32.add - i32.const 255 - i32.and - local.tee $1 - local.set $2 - local.get $2 - br_if $do-continue|0 - end - end - ) -) diff --git a/tests/compiler/managed-cast.debug.wat b/tests/compiler/managed-cast.debug.wat new file mode 100644 index 0000000000..1582c65137 --- /dev/null +++ b/tests/compiler/managed-cast.debug.wat @@ -0,0 +1,2905 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 672)) + (global $~lib/memory/__data_end i32 (i32.const 700)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33468)) + (global $~lib/memory/__heap_base i32 (i32.const 33468)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 540) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 604) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00n\00v\00a\00l\00i\00d\00 \00d\00o\00w\00n\00c\00a\00s\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 672) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $managed-cast/Animal#tame (param $this i32) + ) + (func $managed-cast/Cat#meow (param $this i32) + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~instanceof|managed-cast/Cat (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 4 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $managed-cast/Animal + block $managed-cast/Cat + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $managed-cast/Cat $managed-cast/Animal $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:managed-cast + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33488 + i32.const 33536 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $managed-cast/Animal#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $managed-cast/Cat#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $managed-cast/Animal#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $managed-cast/testUpcast (param $cat i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $cat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $managed-cast/Animal#tame + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $managed-cast/testUpcastFromNullable (param $cat i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $cat + local.tee $1 + i32.store offset=4 + local.get $1 + if (result i32) + local.get $1 + else + i32.const 432 + i32.const 560 + i32.const 14 + i32.const 12 + call $~lib/builtins/abort + unreachable + end + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $managed-cast/Animal#tame + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $managed-cast/testUpcastToNullable (param $cat i32) + (local $maybeAnimal i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $cat + local.tee $maybeAnimal + i32.store + local.get $maybeAnimal + if + local.get $maybeAnimal + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $managed-cast/Animal#tame + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $managed-cast/testUpcastFromToNullable (param $cat i32) + (local $maybeAnimal i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $cat + local.tee $maybeAnimal + i32.store + local.get $maybeAnimal + if + local.get $maybeAnimal + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $managed-cast/Animal#tame + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $managed-cast/testDowncast (param $animal i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $animal + local.tee $1 + i32.store offset=4 + local.get $1 + call $~instanceof|managed-cast/Cat + if (result i32) + local.get $1 + else + i32.const 624 + i32.const 560 + i32.const 31 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $managed-cast/Cat#meow + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $managed-cast/testDowncastFromNullable (param $animal i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $animal + local.tee $1 + i32.store offset=4 + local.get $1 + if (result i32) + local.get $1 + else + i32.const 432 + i32.const 560 + i32.const 36 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.tee $2 + i32.store offset=8 + local.get $2 + call $~instanceof|managed-cast/Cat + if (result i32) + local.get $2 + else + i32.const 624 + i32.const 560 + i32.const 36 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $managed-cast/Cat#meow + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $managed-cast/testDowncastToNullable (param $animal i32) + (local $1 i32) + (local $maybeCat i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $animal + local.tee $1 + i32.store + local.get $1 + call $~instanceof|managed-cast/Cat + if (result i32) + local.get $1 + else + i32.const 624 + i32.const 560 + i32.const 41 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.tee $maybeCat + i32.store offset=4 + local.get $maybeCat + if + local.get $maybeCat + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $managed-cast/Cat#meow + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $managed-cast/testDowncastFromToNullable (param $animal i32) + (local $1 i32) + (local $maybeCat i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $animal + local.tee $1 + i32.store + local.get $1 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + call $~instanceof|managed-cast/Cat + if (result i32) + local.get $1 + else + i32.const 624 + i32.const 560 + i32.const 47 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + end + local.tee $maybeCat + i32.store offset=4 + local.get $maybeCat + if + local.get $maybeCat + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $managed-cast/Cat#meow + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:managed-cast + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $managed-cast/testUpcast + i32.const 0 + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $managed-cast/testUpcastFromNullable + i32.const 0 + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $managed-cast/testUpcastToNullable + i32.const 0 + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $managed-cast/testUpcastFromToNullable + i32.const 0 + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $managed-cast/testDowncast + i32.const 0 + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $managed-cast/testDowncastFromNullable + i32.const 0 + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $managed-cast/testDowncastToNullable + i32.const 0 + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $managed-cast/testDowncastFromToNullable + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/managed-cast.json b/tests/compiler/managed-cast.json index 59c251c705..b83788465e 100644 --- a/tests/compiler/managed-cast.json +++ b/tests/compiler/managed-cast.json @@ -1,7 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--explicitStart", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + ], + "asc_rtrace": true +} diff --git a/tests/compiler/managed-cast.optimized.wat b/tests/compiler/managed-cast.optimized.wat deleted file mode 100644 index ba0ca816f5..0000000000 --- a/tests/compiler/managed-cast.optimized.wat +++ /dev/null @@ -1,1258 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") - (data (i32.const 1232) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s") - (data (i32.const 1280) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00u\00p\00c\00a\00s\00t") - (data (i32.const 1344) "\05\00\00\00 \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\00\00\00 ") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1392 - local.set $1 - i32.const 1392 - i32.const 0 - i32.store - i32.const 2960 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1392 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1392 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1392 - i32.const 2976 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1392 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.tee $1 - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.tee $3 - i32.const 32 - i32.ge_u - if - local.get $2 - local.get $1 - i32.const 2 - i32.and - i32.const 16 - i32.or - i32.store - local.get $2 - i32.const 32 - i32.add - local.tee $1 - local.get $3 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $1 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 16 - i32.add - local.tee $0 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $2 - call $~lib/rt/rtrace/onalloc - local.get $2 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1388 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $managed-cast/Cat#constructor (result i32) - (local $0 i32) - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - if (result i32) - local.get $0 - else - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - end - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1388 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $managed-cast/testDowncastToNullable (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - ) - (func $~lib/rt/__instanceof (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=8 - local.tee $0 - i32.const 1344 - i32.load - i32.le_u - if - loop $do-continue|0 - local.get $0 - i32.const 3 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1348 - i32.add - i32.load offset=4 - local.tee $0 - br_if $do-continue|0 - end - end - i32.const 0 - ) - (func $start:managed-cast - (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) - call $managed-cast/Cat#constructor - call $managed-cast/Cat#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - i32.eqz - if - i32.const 1200 - i32.const 1248 - i32.const 14 - i32.const 12 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - call $managed-cast/Cat#constructor - local.tee $6 - call $managed-cast/testDowncastToNullable - call $managed-cast/Cat#constructor - local.tee $7 - call $managed-cast/testDowncastToNullable - call $managed-cast/Cat#constructor - local.tee $8 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/rt/__instanceof - i32.eqz - if - i32.const 1296 - i32.const 1248 - i32.const 31 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - call $managed-cast/Cat#constructor - local.tee $9 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $0 - i32.eqz - if - i32.const 1200 - i32.const 1248 - i32.const 36 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/__instanceof - i32.eqz - if - i32.const 1296 - i32.const 1248 - i32.const 36 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - call $managed-cast/Cat#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $0 - call $~lib/rt/__instanceof - i32.eqz - if - i32.const 1296 - i32.const 1248 - i32.const 41 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - call $managed-cast/Cat#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $0 - call $~lib/rt/__instanceof - i32.eqz - if - i32.const 1296 - i32.const 1248 - i32.const 47 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:managed-cast - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1388 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/managed-cast.release.wat b/tests/compiler/managed-cast.release.wat new file mode 100644 index 0000000000..62f92354e5 --- /dev/null +++ b/tests/compiler/managed-cast.release.wat @@ -0,0 +1,1918 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34492)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "|") + (data $8.1 (i32.const 1448) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (data $9 (i32.const 1564) "<") + (data $9.1 (i32.const 1576) "\02\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s") + (data $10 (i32.const 1628) "<") + (data $10.1 (i32.const 1640) "\02\00\00\00 \00\00\00i\00n\00v\00a\00l\00i\00d\00 \00d\00o\00w\00n\00c\00a\00s\00t") + (data $11 (i32.const 1696) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$137 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34492 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$137 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1696 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1700 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34496 + i32.const 0 + i32.store + i32.const 36064 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34496 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34496 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34496 + i32.const 36068 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34496 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34492 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34492 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34492 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $managed-cast/Animal + block $managed-cast/Cat + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $managed-cast/Cat $managed-cast/Animal $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34492 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1456 + i32.const 1584 + i32.const 14 + i32.const 12 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $managed-cast/testUpcastToNullable + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $managed-cast/testUpcastToNullable + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~instanceof|managed-cast/Cat$85 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.ne + br_if $__inlined_func$~instanceof|managed-cast/Cat$85 + drop + i32.const 1 + end + i32.eqz + if + i32.const 1648 + i32.const 1584 + i32.const 31 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $__inlined_func$~instanceof|managed-cast/Cat$88 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.eqz + if + i32.const 1456 + i32.const 1584 + i32.const 36 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.store offset=8 + i32.const 0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.ne + br_if $__inlined_func$~instanceof|managed-cast/Cat$88 + drop + i32.const 1 + end + i32.eqz + if + i32.const 1648 + i32.const 1584 + i32.const 36 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~instanceof|managed-cast/Cat$91 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.ne + br_if $__inlined_func$~instanceof|managed-cast/Cat$91 + drop + i32.const 1 + end + i32.eqz + if + i32.const 1648 + i32.const 1584 + i32.const 41 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.store offset=4 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + if + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.ne + if + i32.const 1648 + i32.const 1584 + i32.const 47 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.store offset=4 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 34492 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34512 + i32.const 34560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $managed-cast/Cat#constructor (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34512 + i32.const 34560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $managed-cast/testUpcastToNullable (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + if + i32.const 34512 + i32.const 34560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/managed-cast.ts b/tests/compiler/managed-cast.ts index d3ea53b229..454dd834f1 100644 --- a/tests/compiler/managed-cast.ts +++ b/tests/compiler/managed-cast.ts @@ -5,46 +5,49 @@ class Cat extends Animal { meow(): void {} } -function testDowncast(cat: Cat): void { +function testUpcast(cat: Cat): void { (cat).tame(); } -testDowncast(new Cat()); +testUpcast(new Cat()); -function testDowncastFromNullable(cat: Cat | null): void { +function testUpcastFromNullable(cat: Cat | null): void { (cat).tame(); } -testDowncastFromNullable(new Cat()); +testUpcastFromNullable(new Cat()); -function testDowncastToNullable(cat: Cat): void { +function testUpcastToNullable(cat: Cat): void { var maybeAnimal = cat; if (maybeAnimal) maybeAnimal.tame(); } -testDowncastToNullable(new Cat()); +testUpcastToNullable(new Cat()); -function testDowncastFromToNullable(cat: Cat | null): void { +function testUpcastFromToNullable(cat: Cat | null): void { var maybeAnimal = cat; if (maybeAnimal) maybeAnimal.tame(); } -testDowncastFromToNullable(new Cat()); +testUpcastFromToNullable(new Cat()); -function testUpcast(animal: Animal): void { +function testDowncast(animal: Animal): void { (animal).meow(); } -testUpcast(new Cat()); +testDowncast(new Cat()); -function testUpcastFromNullable(animal: Animal | null): void { +function testDowncastFromNullable(animal: Animal | null): void { (animal).meow(); } -testUpcastFromNullable(new Cat()); +testDowncastFromNullable(new Cat()); -function testUpcastToNullable(animal: Animal): void { +function testDowncastToNullable(animal: Animal): void { var maybeCat = animal; if (maybeCat) maybeCat.meow(); } -testUpcastToNullable(new Cat()); +testDowncastToNullable(new Cat()); -function testUpcastFromToNullable(animal: Animal | null): void { +function testDowncastFromToNullable(animal: Animal | null): void { var maybeCat = animal; if (maybeCat) maybeCat.meow(); } -testUpcastFromToNullable(new Cat()); +testDowncastFromToNullable(new Cat()); + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/managed-cast.untouched.wat b/tests/compiler/managed-cast.untouched.wat deleted file mode 100644 index 5f6f58c1b2..0000000000 --- a/tests/compiler/managed-cast.untouched.wat +++ /dev/null @@ -1,2037 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (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))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") - (data (i32.const 224) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s\00") - (data (i32.const 272) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00u\00p\00c\00a\00s\00t\00") - (data (i32.const 336) "\05\00\00\00 \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\00\00\00 \00\00\00\00\00\00\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 336)) - (global $~lib/heap/__heap_base i32 (i32.const 380)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 80 - i32.const 32 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $managed-cast/Animal#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $managed-cast/Cat#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - call $managed-cast/Animal#constructor - local.set $0 - local.get $0 - ) - (func $managed-cast/Animal#tame (param $0 i32) - nop - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $managed-cast/testDowncast (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $managed-cast/Animal#tame - local.get $0 - call $~lib/rt/pure/__release - ) - (func $managed-cast/testDowncastFromNullable (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 192 - i32.const 240 - i32.const 14 - i32.const 12 - call $~lib/builtins/abort - unreachable - end - call $managed-cast/Animal#tame - local.get $0 - call $~lib/rt/pure/__release - ) - (func $managed-cast/testDowncastToNullable (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - if - local.get $1 - call $managed-cast/Animal#tame - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $managed-cast/testDowncastFromToNullable (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - if - local.get $1 - call $managed-cast/Animal#tame - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/__instanceof (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=8 - local.set $2 - global.get $~lib/rt/__rtti_base - local.set $3 - local.get $2 - local.get $3 - i32.load - i32.le_u - if - loop $do-continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - local.set $4 - local.get $4 - br_if $do-continue|0 - end - end - i32.const 0 - ) - (func $managed-cast/Cat#meow (param $0 i32) - nop - ) - (func $managed-cast/testUpcast (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.tee $1 - i32.const 3 - call $~lib/rt/__instanceof - if (result i32) - local.get $1 - else - i32.const 288 - i32.const 240 - i32.const 31 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - call $managed-cast/Cat#meow - local.get $0 - call $~lib/rt/pure/__release - ) - (func $managed-cast/testUpcastFromNullable (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 192 - i32.const 240 - i32.const 36 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.tee $1 - i32.const 3 - call $~lib/rt/__instanceof - if (result i32) - local.get $1 - else - i32.const 288 - i32.const 240 - i32.const 36 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - call $managed-cast/Cat#meow - local.get $0 - call $~lib/rt/pure/__release - ) - (func $managed-cast/testUpcastToNullable (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.tee $1 - i32.const 3 - call $~lib/rt/__instanceof - if (result i32) - local.get $1 - else - i32.const 288 - i32.const 240 - i32.const 41 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - if - local.get $2 - call $managed-cast/Cat#meow - end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $managed-cast/testUpcastFromToNullable (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.tee $1 - i32.const 3 - call $~lib/rt/__instanceof - if (result i32) - local.get $1 - else - i32.const 288 - i32.const 240 - i32.const 47 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - if - local.get $2 - call $managed-cast/Cat#meow - end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $start:managed-cast - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - call $managed-cast/Cat#constructor - local.tee $0 - call $managed-cast/testDowncast - i32.const 0 - call $managed-cast/Cat#constructor - local.tee $1 - call $managed-cast/testDowncastFromNullable - i32.const 0 - call $managed-cast/Cat#constructor - local.tee $2 - call $managed-cast/testDowncastToNullable - i32.const 0 - call $managed-cast/Cat#constructor - local.tee $3 - call $managed-cast/testDowncastFromToNullable - i32.const 0 - call $managed-cast/Cat#constructor - local.tee $4 - call $managed-cast/testUpcast - i32.const 0 - call $managed-cast/Cat#constructor - local.tee $5 - call $managed-cast/testUpcastFromNullable - i32.const 0 - call $managed-cast/Cat#constructor - local.tee $6 - call $managed-cast/testUpcastToNullable - i32.const 0 - call $managed-cast/Cat#constructor - local.tee $7 - call $managed-cast/testUpcastFromToNullable - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:managed-cast - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$case$2 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/many-locals.debug.wat b/tests/compiler/many-locals.debug.wat new file mode 100644 index 0000000000..d3fd8e7178 --- /dev/null +++ b/tests/compiler/many-locals.debug.wat @@ -0,0 +1,825 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "testI32" (func $many-locals/testI32)) + (export "testI8" (func $many-locals/testI8)) + (export "memory" (memory $0)) + (start $~start) + (func $many-locals/testI32 (param $a i32) (result i32) + (local $a00 i32) + (local $a01 i32) + (local $a02 i32) + (local $a03 i32) + (local $a04 i32) + (local $a05 i32) + (local $a06 i32) + (local $a07 i32) + (local $a08 i32) + (local $a09 i32) + (local $a0A i32) + (local $a0B i32) + (local $a0C i32) + (local $a0D i32) + (local $a0E i32) + (local $a0F i32) + (local $a10 i32) + (local $a11 i32) + (local $a12 i32) + (local $a13 i32) + (local $a14 i32) + (local $a15 i32) + (local $a16 i32) + (local $a17 i32) + (local $a18 i32) + (local $a19 i32) + (local $a1A i32) + (local $a1B i32) + (local $a1C i32) + (local $a1D i32) + (local $a1E i32) + (local $a1F i32) + (local $a20 i32) + (local $a21 i32) + (local $a22 i32) + (local $a23 i32) + (local $a24 i32) + (local $a25 i32) + (local $a26 i32) + (local $a27 i32) + (local $a28 i32) + (local $a29 i32) + (local $a2A i32) + (local $a2B i32) + (local $a2C i32) + (local $a2D i32) + (local $a2E i32) + (local $a2F i32) + (local $a30 i32) + (local $a31 i32) + (local $a32 i32) + (local $a33 i32) + (local $a34 i32) + (local $a35 i32) + (local $a36 i32) + (local $a37 i32) + (local $a38 i32) + (local $a39 i32) + (local $a3A i32) + (local $a3B i32) + (local $a3C i32) + (local $a3D i32) + (local $a3E i32) + (local $a3F i32) + (local $a40 i32) + (local $a41 i32) + (local $a42 i32) + (local $a43 i32) + (local $a44 i32) + (local $a45 i32) + (local $a46 i32) + (local $a47 i32) + (local $a48 i32) + (local $a49 i32) + (local $a4A i32) + (local $a4B i32) + (local $a4C i32) + (local $a4D i32) + (local $a4E i32) + (local $a4F i32) + (local $a50 i32) + (local $a51 i32) + (local $a52 i32) + (local $a53 i32) + (local $a54 i32) + (local $a55 i32) + (local $a56 i32) + (local $a57 i32) + (local $a58 i32) + (local $a59 i32) + (local $a5A i32) + (local $a5B i32) + (local $a5C i32) + (local $a5D i32) + (local $a5E i32) + (local $a5F i32) + (local $a60 i32) + (local $a61 i32) + (local $a62 i32) + (local $a63 i32) + (local $a64 i32) + (local $a65 i32) + (local $a66 i32) + (local $a67 i32) + (local $a68 i32) + (local $a69 i32) + (local $a6A i32) + (local $a6B i32) + (local $a6C i32) + (local $a6D i32) + (local $a6E i32) + (local $a6F i32) + (local $a70 i32) + (local $a71 i32) + (local $a72 i32) + (local $a73 i32) + (local $a74 i32) + (local $a75 i32) + (local $a76 i32) + (local $a77 i32) + (local $a78 i32) + (local $a79 i32) + (local $a7A i32) + (local $a7B i32) + (local $a7C i32) + (local $a7D i32) + (local $a7E i32) + (local $a7F i32) + local.get $a + local.set $a00 + local.get $a00 + local.set $a01 + local.get $a01 + local.set $a02 + local.get $a02 + local.set $a03 + local.get $a03 + local.set $a04 + local.get $a04 + local.set $a05 + local.get $a05 + local.set $a06 + local.get $a06 + local.set $a07 + local.get $a07 + local.set $a08 + local.get $a08 + local.set $a09 + local.get $a09 + local.set $a0A + local.get $a0A + local.set $a0B + local.get $a0B + local.set $a0C + local.get $a0C + local.set $a0D + local.get $a0D + local.set $a0E + local.get $a0E + local.set $a0F + local.get $a0F + local.set $a10 + local.get $a10 + local.set $a11 + local.get $a11 + local.set $a12 + local.get $a12 + local.set $a13 + local.get $a13 + local.set $a14 + local.get $a14 + local.set $a15 + local.get $a15 + local.set $a16 + local.get $a16 + local.set $a17 + local.get $a17 + local.set $a18 + local.get $a18 + local.set $a19 + local.get $a19 + local.set $a1A + local.get $a1A + local.set $a1B + local.get $a1B + local.set $a1C + local.get $a1C + local.set $a1D + local.get $a1D + local.set $a1E + local.get $a1E + local.set $a1F + local.get $a1F + local.set $a20 + local.get $a20 + local.set $a21 + local.get $a21 + local.set $a22 + local.get $a22 + local.set $a23 + local.get $a23 + local.set $a24 + local.get $a24 + local.set $a25 + local.get $a25 + local.set $a26 + local.get $a26 + local.set $a27 + local.get $a27 + local.set $a28 + local.get $a28 + local.set $a29 + local.get $a29 + local.set $a2A + local.get $a2A + local.set $a2B + local.get $a2B + local.set $a2C + local.get $a2C + local.set $a2D + local.get $a2D + local.set $a2E + local.get $a2E + local.set $a2F + local.get $a2F + local.set $a30 + local.get $a30 + local.set $a31 + local.get $a31 + local.set $a32 + local.get $a32 + local.set $a33 + local.get $a33 + local.set $a34 + local.get $a34 + local.set $a35 + local.get $a35 + local.set $a36 + local.get $a36 + local.set $a37 + local.get $a37 + local.set $a38 + local.get $a38 + local.set $a39 + local.get $a39 + local.set $a3A + local.get $a3A + local.set $a3B + local.get $a3B + local.set $a3C + local.get $a3C + local.set $a3D + local.get $a3D + local.set $a3E + local.get $a3E + local.set $a3F + local.get $a3F + local.set $a40 + local.get $a40 + local.set $a41 + local.get $a41 + local.set $a42 + local.get $a42 + local.set $a43 + local.get $a43 + local.set $a44 + local.get $a44 + local.set $a45 + local.get $a45 + local.set $a46 + local.get $a46 + local.set $a47 + local.get $a47 + local.set $a48 + local.get $a48 + local.set $a49 + local.get $a49 + local.set $a4A + local.get $a4A + local.set $a4B + local.get $a4B + local.set $a4C + local.get $a4C + local.set $a4D + local.get $a4D + local.set $a4E + local.get $a4E + local.set $a4F + local.get $a4F + local.set $a50 + local.get $a50 + local.set $a51 + local.get $a51 + local.set $a52 + local.get $a52 + local.set $a53 + local.get $a53 + local.set $a54 + local.get $a54 + local.set $a55 + local.get $a55 + local.set $a56 + local.get $a56 + local.set $a57 + local.get $a57 + local.set $a58 + local.get $a58 + local.set $a59 + local.get $a59 + local.set $a5A + local.get $a5A + local.set $a5B + local.get $a5B + local.set $a5C + local.get $a5C + local.set $a5D + local.get $a5D + local.set $a5E + local.get $a5E + local.set $a5F + local.get $a5F + local.set $a60 + local.get $a60 + local.set $a61 + local.get $a61 + local.set $a62 + local.get $a62 + local.set $a63 + local.get $a63 + local.set $a64 + local.get $a64 + local.set $a65 + local.get $a65 + local.set $a66 + local.get $a66 + local.set $a67 + local.get $a67 + local.set $a68 + local.get $a68 + local.set $a69 + local.get $a69 + local.set $a6A + local.get $a6A + local.set $a6B + local.get $a6B + local.set $a6C + local.get $a6C + local.set $a6D + local.get $a6D + local.set $a6E + local.get $a6E + local.set $a6F + local.get $a6F + local.set $a70 + local.get $a70 + local.set $a71 + local.get $a71 + local.set $a72 + local.get $a72 + local.set $a73 + local.get $a73 + local.set $a74 + local.get $a74 + local.set $a75 + local.get $a75 + local.set $a76 + local.get $a76 + local.set $a77 + local.get $a77 + local.set $a78 + local.get $a78 + local.set $a79 + local.get $a79 + local.set $a7A + local.get $a7A + local.set $a7B + local.get $a7B + local.set $a7C + local.get $a7C + local.set $a7D + local.get $a7D + local.set $a7E + local.get $a7E + local.set $a7F + local.get $a7F + return + ) + (func $many-locals/testI8 (param $a i32) (result i32) + (local $a00 i32) + (local $a01 i32) + (local $a02 i32) + (local $a03 i32) + (local $a04 i32) + (local $a05 i32) + (local $a06 i32) + (local $a07 i32) + (local $a08 i32) + (local $a09 i32) + (local $a0A i32) + (local $a0B i32) + (local $a0C i32) + (local $a0D i32) + (local $a0E i32) + (local $a0F i32) + (local $a10 i32) + (local $a11 i32) + (local $a12 i32) + (local $a13 i32) + (local $a14 i32) + (local $a15 i32) + (local $a16 i32) + (local $a17 i32) + (local $a18 i32) + (local $a19 i32) + (local $a1A i32) + (local $a1B i32) + (local $a1C i32) + (local $a1D i32) + (local $a1E i32) + (local $a1F i32) + (local $a20 i32) + (local $a21 i32) + (local $a22 i32) + (local $a23 i32) + (local $a24 i32) + (local $a25 i32) + (local $a26 i32) + (local $a27 i32) + (local $a28 i32) + (local $a29 i32) + (local $a2A i32) + (local $a2B i32) + (local $a2C i32) + (local $a2D i32) + (local $a2E i32) + (local $a2F i32) + (local $a30 i32) + (local $a31 i32) + (local $a32 i32) + (local $a33 i32) + (local $a34 i32) + (local $a35 i32) + (local $a36 i32) + (local $a37 i32) + (local $a38 i32) + (local $a39 i32) + (local $a3A i32) + (local $a3B i32) + (local $a3C i32) + (local $a3D i32) + (local $a3E i32) + (local $a3F i32) + (local $a40 i32) + (local $a41 i32) + (local $a42 i32) + (local $a43 i32) + (local $a44 i32) + (local $a45 i32) + (local $a46 i32) + (local $a47 i32) + (local $a48 i32) + (local $a49 i32) + (local $a4A i32) + (local $a4B i32) + (local $a4C i32) + (local $a4D i32) + (local $a4E i32) + (local $a4F i32) + (local $a50 i32) + (local $a51 i32) + (local $a52 i32) + (local $a53 i32) + (local $a54 i32) + (local $a55 i32) + (local $a56 i32) + (local $a57 i32) + (local $a58 i32) + (local $a59 i32) + (local $a5A i32) + (local $a5B i32) + (local $a5C i32) + (local $a5D i32) + (local $a5E i32) + (local $a5F i32) + (local $a60 i32) + (local $a61 i32) + (local $a62 i32) + (local $a63 i32) + (local $a64 i32) + (local $a65 i32) + (local $a66 i32) + (local $a67 i32) + (local $a68 i32) + (local $a69 i32) + (local $a6A i32) + (local $a6B i32) + (local $a6C i32) + (local $a6D i32) + (local $a6E i32) + (local $a6F i32) + (local $a70 i32) + (local $a71 i32) + (local $a72 i32) + (local $a73 i32) + (local $a74 i32) + (local $a75 i32) + (local $a76 i32) + (local $a77 i32) + (local $a78 i32) + (local $a79 i32) + (local $a7A i32) + (local $a7B i32) + (local $a7C i32) + (local $a7D i32) + (local $a7E i32) + (local $a7F i32) + local.get $a + local.set $a00 + local.get $a00 + local.set $a01 + local.get $a01 + local.set $a02 + local.get $a02 + local.set $a03 + local.get $a03 + local.set $a04 + local.get $a04 + local.set $a05 + local.get $a05 + local.set $a06 + local.get $a06 + local.set $a07 + local.get $a07 + local.set $a08 + local.get $a08 + local.set $a09 + local.get $a09 + local.set $a0A + local.get $a0A + local.set $a0B + local.get $a0B + local.set $a0C + local.get $a0C + local.set $a0D + local.get $a0D + local.set $a0E + local.get $a0E + local.set $a0F + local.get $a0F + local.set $a10 + local.get $a10 + local.set $a11 + local.get $a11 + local.set $a12 + local.get $a12 + local.set $a13 + local.get $a13 + local.set $a14 + local.get $a14 + local.set $a15 + local.get $a15 + local.set $a16 + local.get $a16 + local.set $a17 + local.get $a17 + local.set $a18 + local.get $a18 + local.set $a19 + local.get $a19 + local.set $a1A + local.get $a1A + local.set $a1B + local.get $a1B + local.set $a1C + local.get $a1C + local.set $a1D + local.get $a1D + local.set $a1E + local.get $a1E + local.set $a1F + local.get $a1F + local.set $a20 + local.get $a20 + local.set $a21 + local.get $a21 + local.set $a22 + local.get $a22 + local.set $a23 + local.get $a23 + local.set $a24 + local.get $a24 + local.set $a25 + local.get $a25 + local.set $a26 + local.get $a26 + local.set $a27 + local.get $a27 + local.set $a28 + local.get $a28 + local.set $a29 + local.get $a29 + local.set $a2A + local.get $a2A + local.set $a2B + local.get $a2B + local.set $a2C + local.get $a2C + local.set $a2D + local.get $a2D + local.set $a2E + local.get $a2E + local.set $a2F + local.get $a2F + local.set $a30 + local.get $a30 + local.set $a31 + local.get $a31 + local.set $a32 + local.get $a32 + local.set $a33 + local.get $a33 + local.set $a34 + local.get $a34 + local.set $a35 + local.get $a35 + local.set $a36 + local.get $a36 + local.set $a37 + local.get $a37 + local.set $a38 + local.get $a38 + local.set $a39 + local.get $a39 + local.set $a3A + local.get $a3A + local.set $a3B + local.get $a3B + local.set $a3C + local.get $a3C + local.set $a3D + local.get $a3D + local.set $a3E + local.get $a3E + local.set $a3F + local.get $a3F + local.set $a40 + local.get $a40 + local.set $a41 + local.get $a41 + local.set $a42 + local.get $a42 + local.set $a43 + local.get $a43 + local.set $a44 + local.get $a44 + local.set $a45 + local.get $a45 + local.set $a46 + local.get $a46 + local.set $a47 + local.get $a47 + local.set $a48 + local.get $a48 + local.set $a49 + local.get $a49 + local.set $a4A + local.get $a4A + local.set $a4B + local.get $a4B + local.set $a4C + local.get $a4C + local.set $a4D + local.get $a4D + local.set $a4E + local.get $a4E + local.set $a4F + local.get $a4F + local.set $a50 + local.get $a50 + local.set $a51 + local.get $a51 + local.set $a52 + local.get $a52 + local.set $a53 + local.get $a53 + local.set $a54 + local.get $a54 + local.set $a55 + local.get $a55 + local.set $a56 + local.get $a56 + local.set $a57 + local.get $a57 + local.set $a58 + local.get $a58 + local.set $a59 + local.get $a59 + local.set $a5A + local.get $a5A + local.set $a5B + local.get $a5B + local.set $a5C + local.get $a5C + local.set $a5D + local.get $a5D + local.set $a5E + local.get $a5E + local.set $a5F + local.get $a5F + local.set $a60 + local.get $a60 + local.set $a61 + local.get $a61 + local.set $a62 + local.get $a62 + local.set $a63 + local.get $a63 + local.set $a64 + local.get $a64 + local.set $a65 + local.get $a65 + local.set $a66 + local.get $a66 + local.set $a67 + local.get $a67 + local.set $a68 + local.get $a68 + local.set $a69 + local.get $a69 + local.set $a6A + local.get $a6A + local.set $a6B + local.get $a6B + local.set $a6C + local.get $a6C + local.set $a6D + local.get $a6D + local.set $a6E + local.get $a6E + local.set $a6F + local.get $a6F + local.set $a70 + local.get $a70 + local.set $a71 + local.get $a71 + local.set $a72 + local.get $a72 + local.set $a73 + local.get $a73 + local.set $a74 + local.get $a74 + local.set $a75 + local.get $a75 + local.set $a76 + local.get $a76 + local.set $a77 + local.get $a77 + local.set $a78 + local.get $a78 + local.set $a79 + local.get $a79 + local.set $a7A + local.get $a7A + local.set $a7B + local.get $a7B + local.set $a7C + local.get $a7C + local.set $a7D + local.get $a7D + local.set $a7E + local.get $a7E + local.set $a7F + local.get $a7F + i32.extend8_s + return + ) + (func $start:many-locals + i32.const 42 + call $many-locals/testI32 + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 133 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 42 + call $many-locals/testI8 + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 267 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:many-locals + ) +) diff --git a/tests/compiler/many-locals.json b/tests/compiler/many-locals.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/many-locals.json +++ b/tests/compiler/many-locals.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/many-locals.optimized.wat b/tests/compiler/many-locals.optimized.wat deleted file mode 100644 index 4c9f7826dd..0000000000 --- a/tests/compiler/many-locals.optimized.wat +++ /dev/null @@ -1,36 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s") - (export "memory" (memory $0)) - (export "testI32" (func $many-locals/testI32)) - (export "testI8" (func $many-locals/testI8)) - (start $~start) - (func $many-locals/testI32 (param $0 i32) (result i32) - local.get $0 - ) - (func $many-locals/testI8 (param $0 i32) (result i32) - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - ) - (func $~start - i32.const 42 - call $many-locals/testI8 - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 267 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/many-locals.release.wat b/tests/compiler/many-locals.release.wat new file mode 100644 index 0000000000..d6e24e0568 --- /dev/null +++ b/tests/compiler/many-locals.release.wat @@ -0,0 +1,16 @@ +(module + (type $0 (func (param i32) (result i32))) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s") + (export "testI32" (func $many-locals/testI32)) + (export "testI8" (func $many-locals/testI8)) + (export "memory" (memory $0)) + (func $many-locals/testI32 (param $0 i32) (result i32) + local.get $0 + ) + (func $many-locals/testI8 (param $0 i32) (result i32) + local.get $0 + i32.extend8_s + ) +) diff --git a/tests/compiler/many-locals.untouched.wat b/tests/compiler/many-locals.untouched.wat deleted file mode 100644 index 8e2517e717..0000000000 --- a/tests/compiler/many-locals.untouched.wat +++ /dev/null @@ -1,822 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "testI32" (func $many-locals/testI32)) - (export "testI8" (func $many-locals/testI8)) - (start $~start) - (func $many-locals/testI32 (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.get $0 - local.set $1 - local.get $1 - local.set $2 - local.get $2 - local.set $3 - local.get $3 - local.set $4 - local.get $4 - local.set $5 - local.get $5 - local.set $6 - local.get $6 - local.set $7 - local.get $7 - local.set $8 - local.get $8 - local.set $9 - local.get $9 - local.set $10 - local.get $10 - local.set $11 - local.get $11 - local.set $12 - local.get $12 - local.set $13 - local.get $13 - local.set $14 - local.get $14 - local.set $15 - local.get $15 - local.set $16 - local.get $16 - local.set $17 - local.get $17 - local.set $18 - local.get $18 - local.set $19 - local.get $19 - local.set $20 - local.get $20 - local.set $21 - local.get $21 - local.set $22 - local.get $22 - local.set $23 - local.get $23 - local.set $24 - local.get $24 - local.set $25 - local.get $25 - local.set $26 - local.get $26 - local.set $27 - local.get $27 - local.set $28 - local.get $28 - local.set $29 - local.get $29 - local.set $30 - local.get $30 - local.set $31 - local.get $31 - local.set $32 - local.get $32 - local.set $33 - local.get $33 - local.set $34 - local.get $34 - local.set $35 - local.get $35 - local.set $36 - local.get $36 - local.set $37 - local.get $37 - local.set $38 - local.get $38 - local.set $39 - local.get $39 - local.set $40 - local.get $40 - local.set $41 - local.get $41 - local.set $42 - local.get $42 - local.set $43 - local.get $43 - local.set $44 - local.get $44 - local.set $45 - local.get $45 - local.set $46 - local.get $46 - local.set $47 - local.get $47 - local.set $48 - local.get $48 - local.set $49 - local.get $49 - local.set $50 - local.get $50 - local.set $51 - local.get $51 - local.set $52 - local.get $52 - local.set $53 - local.get $53 - local.set $54 - local.get $54 - local.set $55 - local.get $55 - local.set $56 - local.get $56 - local.set $57 - local.get $57 - local.set $58 - local.get $58 - local.set $59 - local.get $59 - local.set $60 - local.get $60 - local.set $61 - local.get $61 - local.set $62 - local.get $62 - local.set $63 - local.get $63 - local.set $64 - local.get $64 - local.set $65 - local.get $65 - local.set $66 - local.get $66 - local.set $67 - local.get $67 - local.set $68 - local.get $68 - local.set $69 - local.get $69 - local.set $70 - local.get $70 - local.set $71 - local.get $71 - local.set $72 - local.get $72 - local.set $73 - local.get $73 - local.set $74 - local.get $74 - local.set $75 - local.get $75 - local.set $76 - local.get $76 - local.set $77 - local.get $77 - local.set $78 - local.get $78 - local.set $79 - local.get $79 - local.set $80 - local.get $80 - local.set $81 - local.get $81 - local.set $82 - local.get $82 - local.set $83 - local.get $83 - local.set $84 - local.get $84 - local.set $85 - local.get $85 - local.set $86 - local.get $86 - local.set $87 - local.get $87 - local.set $88 - local.get $88 - local.set $89 - local.get $89 - local.set $90 - local.get $90 - local.set $91 - local.get $91 - local.set $92 - local.get $92 - local.set $93 - local.get $93 - local.set $94 - local.get $94 - local.set $95 - local.get $95 - local.set $96 - local.get $96 - local.set $97 - local.get $97 - local.set $98 - local.get $98 - local.set $99 - local.get $99 - local.set $100 - local.get $100 - local.set $101 - local.get $101 - local.set $102 - local.get $102 - local.set $103 - local.get $103 - local.set $104 - local.get $104 - local.set $105 - local.get $105 - local.set $106 - local.get $106 - local.set $107 - local.get $107 - local.set $108 - local.get $108 - local.set $109 - local.get $109 - local.set $110 - local.get $110 - local.set $111 - local.get $111 - local.set $112 - local.get $112 - local.set $113 - local.get $113 - local.set $114 - local.get $114 - local.set $115 - local.get $115 - local.set $116 - local.get $116 - local.set $117 - local.get $117 - local.set $118 - local.get $118 - local.set $119 - local.get $119 - local.set $120 - local.get $120 - local.set $121 - local.get $121 - local.set $122 - local.get $122 - local.set $123 - local.get $123 - local.set $124 - local.get $124 - local.set $125 - local.get $125 - local.set $126 - local.get $126 - local.set $127 - local.get $127 - local.set $128 - local.get $128 - ) - (func $many-locals/testI8 (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.get $0 - local.set $1 - local.get $1 - local.set $2 - local.get $2 - local.set $3 - local.get $3 - local.set $4 - local.get $4 - local.set $5 - local.get $5 - local.set $6 - local.get $6 - local.set $7 - local.get $7 - local.set $8 - local.get $8 - local.set $9 - local.get $9 - local.set $10 - local.get $10 - local.set $11 - local.get $11 - local.set $12 - local.get $12 - local.set $13 - local.get $13 - local.set $14 - local.get $14 - local.set $15 - local.get $15 - local.set $16 - local.get $16 - local.set $17 - local.get $17 - local.set $18 - local.get $18 - local.set $19 - local.get $19 - local.set $20 - local.get $20 - local.set $21 - local.get $21 - local.set $22 - local.get $22 - local.set $23 - local.get $23 - local.set $24 - local.get $24 - local.set $25 - local.get $25 - local.set $26 - local.get $26 - local.set $27 - local.get $27 - local.set $28 - local.get $28 - local.set $29 - local.get $29 - local.set $30 - local.get $30 - local.set $31 - local.get $31 - local.set $32 - local.get $32 - local.set $33 - local.get $33 - local.set $34 - local.get $34 - local.set $35 - local.get $35 - local.set $36 - local.get $36 - local.set $37 - local.get $37 - local.set $38 - local.get $38 - local.set $39 - local.get $39 - local.set $40 - local.get $40 - local.set $41 - local.get $41 - local.set $42 - local.get $42 - local.set $43 - local.get $43 - local.set $44 - local.get $44 - local.set $45 - local.get $45 - local.set $46 - local.get $46 - local.set $47 - local.get $47 - local.set $48 - local.get $48 - local.set $49 - local.get $49 - local.set $50 - local.get $50 - local.set $51 - local.get $51 - local.set $52 - local.get $52 - local.set $53 - local.get $53 - local.set $54 - local.get $54 - local.set $55 - local.get $55 - local.set $56 - local.get $56 - local.set $57 - local.get $57 - local.set $58 - local.get $58 - local.set $59 - local.get $59 - local.set $60 - local.get $60 - local.set $61 - local.get $61 - local.set $62 - local.get $62 - local.set $63 - local.get $63 - local.set $64 - local.get $64 - local.set $65 - local.get $65 - local.set $66 - local.get $66 - local.set $67 - local.get $67 - local.set $68 - local.get $68 - local.set $69 - local.get $69 - local.set $70 - local.get $70 - local.set $71 - local.get $71 - local.set $72 - local.get $72 - local.set $73 - local.get $73 - local.set $74 - local.get $74 - local.set $75 - local.get $75 - local.set $76 - local.get $76 - local.set $77 - local.get $77 - local.set $78 - local.get $78 - local.set $79 - local.get $79 - local.set $80 - local.get $80 - local.set $81 - local.get $81 - local.set $82 - local.get $82 - local.set $83 - local.get $83 - local.set $84 - local.get $84 - local.set $85 - local.get $85 - local.set $86 - local.get $86 - local.set $87 - local.get $87 - local.set $88 - local.get $88 - local.set $89 - local.get $89 - local.set $90 - local.get $90 - local.set $91 - local.get $91 - local.set $92 - local.get $92 - local.set $93 - local.get $93 - local.set $94 - local.get $94 - local.set $95 - local.get $95 - local.set $96 - local.get $96 - local.set $97 - local.get $97 - local.set $98 - local.get $98 - local.set $99 - local.get $99 - local.set $100 - local.get $100 - local.set $101 - local.get $101 - local.set $102 - local.get $102 - local.set $103 - local.get $103 - local.set $104 - local.get $104 - local.set $105 - local.get $105 - local.set $106 - local.get $106 - local.set $107 - local.get $107 - local.set $108 - local.get $108 - local.set $109 - local.get $109 - local.set $110 - local.get $110 - local.set $111 - local.get $111 - local.set $112 - local.get $112 - local.set $113 - local.get $113 - local.set $114 - local.get $114 - local.set $115 - local.get $115 - local.set $116 - local.get $116 - local.set $117 - local.get $117 - local.set $118 - local.get $118 - local.set $119 - local.get $119 - local.set $120 - local.get $120 - local.set $121 - local.get $121 - local.set $122 - local.get $122 - local.set $123 - local.get $123 - local.set $124 - local.get $124 - local.set $125 - local.get $125 - local.set $126 - local.get $126 - local.set $127 - local.get $127 - local.set $128 - local.get $128 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - ) - (func $start:many-locals - i32.const 42 - call $many-locals/testI32 - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 133 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 42 - call $many-locals/testI8 - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 267 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:many-locals - ) -) diff --git a/tests/compiler/memcpy.debug.wat b/tests/compiler/memcpy.debug.wat new file mode 100644 index 0000000000..0435fe9b90 --- /dev/null +++ b/tests/compiler/memcpy.debug.wat @@ -0,0 +1,1338 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32) (result i32))) + (type $2 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $memcpy/base i32 (i32.const 8)) + (global $memcpy/dest (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memcpy" (func $memcpy/memcpy)) + (export "memory" (memory $0)) + (start $~start) + (func $memcpy/memcpy (param $dest i32) (param $src i32) (param $n i32) (result i32) + (local $ret i32) + (local $w i32) + (local $x 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.get $dest + local.set $ret + loop $while-continue|0 + local.get $n + if (result i32) + local.get $src + i32.const 4 + i32.rem_u + else + i32.const 0 + end + if + local.get $dest + local.tee $6 + i32.const 1 + i32.add + local.set $dest + local.get $6 + local.get $src + local.tee $7 + i32.const 1 + i32.add + local.set $src + local.get $7 + i32.load8_u + i32.store8 + local.get $n + i32.const 1 + i32.sub + local.set $n + br $while-continue|0 + end + end + local.get $dest + i32.const 4 + i32.rem_u + i32.const 0 + i32.eq + if + loop $while-continue|1 + local.get $n + i32.const 16 + i32.ge_u + if + local.get $dest + local.get $src + i32.load + i32.store + local.get $dest + i32.const 4 + i32.add + local.get $src + i32.const 4 + i32.add + i32.load + i32.store + local.get $dest + i32.const 8 + i32.add + local.get $src + i32.const 8 + i32.add + i32.load + i32.store + local.get $dest + i32.const 12 + i32.add + local.get $src + i32.const 12 + i32.add + i32.load + i32.store + local.get $src + i32.const 16 + i32.add + local.set $src + local.get $dest + i32.const 16 + i32.add + local.set $dest + local.get $n + i32.const 16 + i32.sub + local.set $n + br $while-continue|1 + end + end + local.get $n + i32.const 8 + i32.and + if + local.get $dest + local.get $src + i32.load + i32.store + local.get $dest + i32.const 4 + i32.add + local.get $src + i32.const 4 + i32.add + i32.load + i32.store + local.get $dest + i32.const 8 + i32.add + local.set $dest + local.get $src + i32.const 8 + i32.add + local.set $src + end + local.get $n + i32.const 4 + i32.and + if + local.get $dest + local.get $src + i32.load + i32.store + local.get $dest + i32.const 4 + i32.add + local.set $dest + local.get $src + i32.const 4 + i32.add + local.set $src + end + local.get $n + i32.const 2 + i32.and + if + local.get $dest + local.get $src + i32.load16_u + i32.store16 + local.get $dest + i32.const 2 + i32.add + local.set $dest + local.get $src + i32.const 2 + i32.add + local.set $src + end + local.get $n + i32.const 1 + i32.and + if + local.get $dest + local.tee $8 + i32.const 1 + i32.add + local.set $dest + local.get $8 + local.get $src + local.tee $9 + i32.const 1 + i32.add + local.set $src + local.get $9 + i32.load8_u + i32.store8 + end + local.get $ret + return + end + local.get $n + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $dest + i32.const 4 + i32.rem_u + local.set $10 + local.get $10 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $10 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $10 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $src + i32.load + local.set $w + local.get $dest + local.tee $11 + i32.const 1 + i32.add + local.set $dest + local.get $11 + local.get $src + local.tee $12 + i32.const 1 + i32.add + local.set $src + local.get $12 + i32.load8_u + i32.store8 + local.get $dest + local.tee $13 + i32.const 1 + i32.add + local.set $dest + local.get $13 + local.get $src + local.tee $14 + i32.const 1 + i32.add + local.set $src + local.get $14 + i32.load8_u + i32.store8 + local.get $dest + local.tee $15 + i32.const 1 + i32.add + local.set $dest + local.get $15 + local.get $src + local.tee $16 + i32.const 1 + i32.add + local.set $src + local.get $16 + i32.load8_u + i32.store8 + local.get $n + i32.const 3 + i32.sub + local.set $n + loop $while-continue|3 + local.get $n + i32.const 17 + i32.ge_u + if + local.get $src + i32.const 1 + i32.add + i32.load + local.set $x + local.get $dest + local.get $w + i32.const 24 + i32.shr_u + local.get $x + i32.const 8 + i32.shl + i32.or + i32.store + local.get $src + i32.const 5 + i32.add + i32.load + local.set $w + local.get $dest + i32.const 4 + i32.add + local.get $x + i32.const 24 + i32.shr_u + local.get $w + i32.const 8 + i32.shl + i32.or + i32.store + local.get $src + i32.const 9 + i32.add + i32.load + local.set $x + local.get $dest + i32.const 8 + i32.add + local.get $w + i32.const 24 + i32.shr_u + local.get $x + i32.const 8 + i32.shl + i32.or + i32.store + local.get $src + i32.const 13 + i32.add + i32.load + local.set $w + local.get $dest + i32.const 12 + i32.add + local.get $x + i32.const 24 + i32.shr_u + local.get $w + i32.const 8 + i32.shl + i32.or + i32.store + local.get $src + i32.const 16 + i32.add + local.set $src + local.get $dest + i32.const 16 + i32.add + local.set $dest + local.get $n + i32.const 16 + i32.sub + local.set $n + br $while-continue|3 + end + end + br $break|2 + end + local.get $src + i32.load + local.set $w + local.get $dest + local.tee $17 + i32.const 1 + i32.add + local.set $dest + local.get $17 + local.get $src + local.tee $18 + i32.const 1 + i32.add + local.set $src + local.get $18 + i32.load8_u + i32.store8 + local.get $dest + local.tee $19 + i32.const 1 + i32.add + local.set $dest + local.get $19 + local.get $src + local.tee $20 + i32.const 1 + i32.add + local.set $src + local.get $20 + i32.load8_u + i32.store8 + local.get $n + i32.const 2 + i32.sub + local.set $n + loop $while-continue|4 + local.get $n + i32.const 18 + i32.ge_u + if + local.get $src + i32.const 2 + i32.add + i32.load + local.set $x + local.get $dest + local.get $w + i32.const 16 + i32.shr_u + local.get $x + i32.const 16 + i32.shl + i32.or + i32.store + local.get $src + i32.const 6 + i32.add + i32.load + local.set $w + local.get $dest + i32.const 4 + i32.add + local.get $x + i32.const 16 + i32.shr_u + local.get $w + i32.const 16 + i32.shl + i32.or + i32.store + local.get $src + i32.const 10 + i32.add + i32.load + local.set $x + local.get $dest + i32.const 8 + i32.add + local.get $w + i32.const 16 + i32.shr_u + local.get $x + i32.const 16 + i32.shl + i32.or + i32.store + local.get $src + i32.const 14 + i32.add + i32.load + local.set $w + local.get $dest + i32.const 12 + i32.add + local.get $x + i32.const 16 + i32.shr_u + local.get $w + i32.const 16 + i32.shl + i32.or + i32.store + local.get $src + i32.const 16 + i32.add + local.set $src + local.get $dest + i32.const 16 + i32.add + local.set $dest + local.get $n + i32.const 16 + i32.sub + local.set $n + br $while-continue|4 + end + end + br $break|2 + end + local.get $src + i32.load + local.set $w + local.get $dest + local.tee $21 + i32.const 1 + i32.add + local.set $dest + local.get $21 + local.get $src + local.tee $22 + i32.const 1 + i32.add + local.set $src + local.get $22 + i32.load8_u + i32.store8 + local.get $n + i32.const 1 + i32.sub + local.set $n + loop $while-continue|5 + local.get $n + i32.const 19 + i32.ge_u + if + local.get $src + i32.const 3 + i32.add + i32.load + local.set $x + local.get $dest + local.get $w + i32.const 8 + i32.shr_u + local.get $x + i32.const 24 + i32.shl + i32.or + i32.store + local.get $src + i32.const 7 + i32.add + i32.load + local.set $w + local.get $dest + i32.const 4 + i32.add + local.get $x + i32.const 8 + i32.shr_u + local.get $w + i32.const 24 + i32.shl + i32.or + i32.store + local.get $src + i32.const 11 + i32.add + i32.load + local.set $x + local.get $dest + i32.const 8 + i32.add + local.get $w + i32.const 8 + i32.shr_u + local.get $x + i32.const 24 + i32.shl + i32.or + i32.store + local.get $src + i32.const 15 + i32.add + i32.load + local.set $w + local.get $dest + i32.const 12 + i32.add + local.get $x + i32.const 8 + i32.shr_u + local.get $w + i32.const 24 + i32.shl + i32.or + i32.store + local.get $src + i32.const 16 + i32.add + local.set $src + local.get $dest + i32.const 16 + i32.add + local.set $dest + local.get $n + i32.const 16 + i32.sub + local.set $n + br $while-continue|5 + end + end + br $break|2 + end + end + local.get $n + i32.const 16 + i32.and + if + local.get $dest + local.tee $23 + i32.const 1 + i32.add + local.set $dest + local.get $23 + local.get $src + local.tee $24 + i32.const 1 + i32.add + local.set $src + local.get $24 + i32.load8_u + i32.store8 + local.get $dest + local.tee $25 + i32.const 1 + i32.add + local.set $dest + local.get $25 + local.get $src + local.tee $26 + i32.const 1 + i32.add + local.set $src + local.get $26 + i32.load8_u + i32.store8 + local.get $dest + local.tee $27 + i32.const 1 + i32.add + local.set $dest + local.get $27 + local.get $src + local.tee $28 + i32.const 1 + i32.add + local.set $src + local.get $28 + i32.load8_u + i32.store8 + local.get $dest + local.tee $29 + i32.const 1 + i32.add + local.set $dest + local.get $29 + local.get $src + local.tee $30 + i32.const 1 + i32.add + local.set $src + local.get $30 + i32.load8_u + i32.store8 + local.get $dest + local.tee $31 + i32.const 1 + i32.add + local.set $dest + local.get $31 + local.get $src + local.tee $32 + i32.const 1 + i32.add + local.set $src + local.get $32 + i32.load8_u + i32.store8 + local.get $dest + local.tee $33 + i32.const 1 + i32.add + local.set $dest + local.get $33 + local.get $src + local.tee $34 + i32.const 1 + i32.add + local.set $src + local.get $34 + i32.load8_u + i32.store8 + local.get $dest + local.tee $35 + i32.const 1 + i32.add + local.set $dest + local.get $35 + local.get $src + local.tee $36 + i32.const 1 + i32.add + local.set $src + local.get $36 + i32.load8_u + i32.store8 + local.get $dest + local.tee $37 + i32.const 1 + i32.add + local.set $dest + local.get $37 + local.get $src + local.tee $38 + i32.const 1 + i32.add + local.set $src + local.get $38 + i32.load8_u + i32.store8 + local.get $dest + local.tee $39 + i32.const 1 + i32.add + local.set $dest + local.get $39 + local.get $src + local.tee $40 + i32.const 1 + i32.add + local.set $src + local.get $40 + i32.load8_u + i32.store8 + local.get $dest + local.tee $41 + i32.const 1 + i32.add + local.set $dest + local.get $41 + local.get $src + local.tee $42 + i32.const 1 + i32.add + local.set $src + local.get $42 + i32.load8_u + i32.store8 + local.get $dest + local.tee $43 + i32.const 1 + i32.add + local.set $dest + local.get $43 + local.get $src + local.tee $44 + i32.const 1 + i32.add + local.set $src + local.get $44 + i32.load8_u + i32.store8 + local.get $dest + local.tee $45 + i32.const 1 + i32.add + local.set $dest + local.get $45 + local.get $src + local.tee $46 + i32.const 1 + i32.add + local.set $src + local.get $46 + i32.load8_u + i32.store8 + local.get $dest + local.tee $47 + i32.const 1 + i32.add + local.set $dest + local.get $47 + local.get $src + local.tee $48 + i32.const 1 + i32.add + local.set $src + local.get $48 + i32.load8_u + i32.store8 + local.get $dest + local.tee $49 + i32.const 1 + i32.add + local.set $dest + local.get $49 + local.get $src + local.tee $50 + i32.const 1 + i32.add + local.set $src + local.get $50 + i32.load8_u + i32.store8 + local.get $dest + local.tee $51 + i32.const 1 + i32.add + local.set $dest + local.get $51 + local.get $src + local.tee $52 + i32.const 1 + i32.add + local.set $src + local.get $52 + i32.load8_u + i32.store8 + local.get $dest + local.tee $53 + i32.const 1 + i32.add + local.set $dest + local.get $53 + local.get $src + local.tee $54 + i32.const 1 + i32.add + local.set $src + local.get $54 + i32.load8_u + i32.store8 + end + local.get $n + i32.const 8 + i32.and + if + local.get $dest + local.tee $55 + i32.const 1 + i32.add + local.set $dest + local.get $55 + local.get $src + local.tee $56 + i32.const 1 + i32.add + local.set $src + local.get $56 + i32.load8_u + i32.store8 + local.get $dest + local.tee $57 + i32.const 1 + i32.add + local.set $dest + local.get $57 + local.get $src + local.tee $58 + i32.const 1 + i32.add + local.set $src + local.get $58 + i32.load8_u + i32.store8 + local.get $dest + local.tee $59 + i32.const 1 + i32.add + local.set $dest + local.get $59 + local.get $src + local.tee $60 + i32.const 1 + i32.add + local.set $src + local.get $60 + i32.load8_u + i32.store8 + local.get $dest + local.tee $61 + i32.const 1 + i32.add + local.set $dest + local.get $61 + local.get $src + local.tee $62 + i32.const 1 + i32.add + local.set $src + local.get $62 + i32.load8_u + i32.store8 + local.get $dest + local.tee $63 + i32.const 1 + i32.add + local.set $dest + local.get $63 + local.get $src + local.tee $64 + i32.const 1 + i32.add + local.set $src + local.get $64 + i32.load8_u + i32.store8 + local.get $dest + local.tee $65 + i32.const 1 + i32.add + local.set $dest + local.get $65 + local.get $src + local.tee $66 + i32.const 1 + i32.add + local.set $src + local.get $66 + i32.load8_u + i32.store8 + local.get $dest + local.tee $67 + i32.const 1 + i32.add + local.set $dest + local.get $67 + local.get $src + local.tee $68 + i32.const 1 + i32.add + local.set $src + local.get $68 + i32.load8_u + i32.store8 + local.get $dest + local.tee $69 + i32.const 1 + i32.add + local.set $dest + local.get $69 + local.get $src + local.tee $70 + i32.const 1 + i32.add + local.set $src + local.get $70 + i32.load8_u + i32.store8 + end + local.get $n + i32.const 4 + i32.and + if + local.get $dest + local.tee $71 + i32.const 1 + i32.add + local.set $dest + local.get $71 + local.get $src + local.tee $72 + i32.const 1 + i32.add + local.set $src + local.get $72 + i32.load8_u + i32.store8 + local.get $dest + local.tee $73 + i32.const 1 + i32.add + local.set $dest + local.get $73 + local.get $src + local.tee $74 + i32.const 1 + i32.add + local.set $src + local.get $74 + i32.load8_u + i32.store8 + local.get $dest + local.tee $75 + i32.const 1 + i32.add + local.set $dest + local.get $75 + local.get $src + local.tee $76 + i32.const 1 + i32.add + local.set $src + local.get $76 + i32.load8_u + i32.store8 + local.get $dest + local.tee $77 + i32.const 1 + i32.add + local.set $dest + local.get $77 + local.get $src + local.tee $78 + i32.const 1 + i32.add + local.set $src + local.get $78 + i32.load8_u + i32.store8 + end + local.get $n + i32.const 2 + i32.and + if + local.get $dest + local.tee $79 + i32.const 1 + i32.add + local.set $dest + local.get $79 + local.get $src + local.tee $80 + i32.const 1 + i32.add + local.set $src + local.get $80 + i32.load8_u + i32.store8 + local.get $dest + local.tee $81 + i32.const 1 + i32.add + local.set $dest + local.get $81 + local.get $src + local.tee $82 + i32.const 1 + i32.add + local.set $src + local.get $82 + i32.load8_u + i32.store8 + end + local.get $n + i32.const 1 + i32.and + if + local.get $dest + local.tee $83 + i32.const 1 + i32.add + local.set $dest + local.get $83 + local.get $src + local.tee $84 + i32.const 1 + i32.add + local.set $src + local.get $84 + i32.load8_u + i32.store8 + end + local.get $ret + return + ) + (func $start:memcpy + global.get $memcpy/base + i64.const 1229782938247303441 + i64.store + global.get $memcpy/base + i32.const 8 + i32.add + i64.const 2459565876494606882 + i64.store + global.get $memcpy/base + i32.const 16 + i32.add + i64.const 3689348814741910323 + i64.store + global.get $memcpy/base + i32.const 24 + i32.add + i64.const 4919131752989213764 + i64.store + global.get $memcpy/base + i32.const 1 + i32.add + global.get $memcpy/base + i32.const 16 + i32.add + i32.const 4 + call $memcpy/memcpy + global.set $memcpy/dest + global.get $memcpy/dest + global.get $memcpy/base + i32.const 1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memcpy/base + i64.load + i64.const 1229783084848853777 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memcpy/base + global.get $memcpy/base + i32.const 32 + call $memcpy/memcpy + global.set $memcpy/dest + global.get $memcpy/dest + global.get $memcpy/base + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memcpy/base + i64.load + i64.const 1229783084848853777 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memcpy/base + i32.const 8 + i32.add + i64.load + i64.const 2459565876494606882 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memcpy/base + i32.const 16 + i32.add + i64.load + i64.const 3689348814741910323 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memcpy/base + i32.const 24 + i32.add + i64.load + i64.const 4919131752989213764 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 159 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memcpy/base + i32.const 5 + i32.add + global.get $memcpy/base + i32.const 28 + i32.add + i32.const 3 + call $memcpy/memcpy + global.set $memcpy/dest + global.get $memcpy/base + i64.load + i64.const 4919131679688438545 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memcpy/base + i32.const 8 + i32.add + global.get $memcpy/base + i32.const 16 + i32.add + i32.const 15 + call $memcpy/memcpy + global.set $memcpy/dest + global.get $memcpy/base + i64.load + i64.const 4919131679688438545 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 165 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memcpy/base + i32.const 8 + i32.add + i64.load + i64.const 3689348814741910323 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memcpy/base + i32.const 16 + i32.add + i64.load + i64.const 3694152654344438852 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 167 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memcpy/base + i32.const 24 + i32.add + i64.load + i64.const 4919131752989213764 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 168 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:memcpy + ) +) diff --git a/tests/compiler/memcpy.json b/tests/compiler/memcpy.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/memcpy.json +++ b/tests/compiler/memcpy.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat deleted file mode 100644 index c55ff71226..0000000000 --- a/tests/compiler/memcpy.optimized.wat +++ /dev/null @@ -1,952 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s") - (global $memcpy/dest (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "memcpy" (func $memcpy/memcpy)) - (start $~start) - (func $memcpy/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.set $5 - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=12 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - local.get $5 - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - i32.const 1 - i32.sub - br_table $case0|2 $case1|2 $case2|2 $break|2 - end - local.get $1 - i32.load - local.set $6 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $4 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 - local.get $4 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=1 - local.tee $3 - i32.const 8 - i32.shl - local.get $6 - i32.const 24 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.load offset=5 - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $1 - i32.load offset=9 - local.tee $3 - i32.const 8 - i32.shl - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=13 - local.tee $6 - i32.const 8 - i32.shl - local.get $3 - i32.const 24 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $6 - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $4 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 - local.get $4 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=2 - local.tee $3 - i32.const 16 - i32.shl - local.get $6 - i32.const 16 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.load offset=6 - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $1 - i32.load offset=10 - local.tee $3 - i32.const 16 - i32.shl - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=14 - local.tee $6 - i32.const 16 - i32.shl - local.get $3 - i32.const 16 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $6 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load offset=3 - local.tee $3 - i32.const 24 - i32.shl - local.get $6 - i32.const 8 - i32.shr_u - i32.or - i32.store - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.load offset=7 - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $1 - i32.load offset=11 - local.tee $3 - i32.const 24 - i32.shl - i32.or - i32.store offset=8 - local.get $0 - local.get $1 - i32.load offset=15 - local.tee $6 - i32.const 24 - i32.shl - local.get $3 - i32.const 8 - i32.shr_u - i32.or - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $4 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 - local.get $4 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $4 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 - local.get $4 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $4 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 - local.get $4 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $4 - i32.const 2 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add - local.set $1 - local.get $4 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $1 - i32.load8_u - i32.store8 - end - local.get $5 - ) - (func $start:memcpy - i32.const 8 - i64.const 1229782938247303441 - i64.store - i32.const 16 - i64.const 2459565876494606882 - i64.store - i32.const 24 - i64.const 3689348814741910323 - i64.store - i32.const 32 - i64.const 4919131752989213764 - i64.store - i32.const 9 - i32.const 24 - i32.const 4 - call $memcpy/memcpy - global.set $memcpy/dest - global.get $memcpy/dest - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i64.load - i64.const 1229783084848853777 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 152 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 8 - i32.const 32 - call $memcpy/memcpy - global.set $memcpy/dest - global.get $memcpy/dest - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 155 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i64.load - i64.const 1229783084848853777 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - i64.load - i64.const 2459565876494606882 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 24 - i64.load - i64.const 3689348814741910323 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 158 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - i64.load - i64.const 4919131752989213764 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 159 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13 - i32.const 36 - i32.const 3 - call $memcpy/memcpy - global.set $memcpy/dest - i32.const 8 - i64.load - i64.const 4919131679688438545 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - i32.const 24 - i32.const 15 - call $memcpy/memcpy - global.set $memcpy/dest - i32.const 8 - i64.load - i64.const 4919131679688438545 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 165 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - i64.load - i64.const 3689348814741910323 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 166 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 24 - i64.load - i64.const 3694152654344438852 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 167 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - i64.load - i64.const 4919131752989213764 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 168 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:memcpy - ) -) diff --git a/tests/compiler/memcpy.release.wat b/tests/compiler/memcpy.release.wat new file mode 100644 index 0000000000..b82c318426 --- /dev/null +++ b/tests/compiler/memcpy.release.wat @@ -0,0 +1,876 @@ +(module + (type $0 (func (param i32 i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $memcpy/dest (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s") + (export "memcpy" (func $memcpy/memcpy)) + (export "memory" (memory $0)) + (start $~start) + (func $memcpy/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + local.set $5 + loop $while-continue|0 + local.get $1 + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select + if + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.const 3 + i32.and + i32.eqz + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=12 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + local.get $5 + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + i32.const 1 + i32.sub + br_table $case0|2 $case1|2 $case2|2 $break|2 + end + local.get $1 + i32.load + local.set $6 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=1 + local.tee $3 + i32.const 8 + i32.shl + local.get $6 + i32.const 24 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $1 + i32.load offset=5 + local.tee $4 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=9 + local.tee $3 + i32.const 8 + i32.shl + local.get $4 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=13 + local.tee $6 + i32.const 8 + i32.shl + local.get $3 + i32.const 24 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $6 + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $3 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 2 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=2 + local.tee $3 + i32.const 16 + i32.shl + local.get $6 + i32.const 16 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $1 + i32.load offset=6 + local.tee $4 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=10 + local.tee $3 + i32.const 16 + i32.shl + local.get $4 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=14 + local.tee $6 + i32.const 16 + i32.shl + local.get $3 + i32.const 16 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $6 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load offset=3 + local.tee $3 + i32.const 24 + i32.shl + local.get $6 + i32.const 8 + i32.shr_u + i32.or + i32.store + local.get $0 + local.get $1 + i32.load offset=7 + local.tee $4 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=11 + local.tee $3 + i32.const 24 + i32.shl + local.get $4 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=8 + local.get $0 + local.get $1 + i32.load offset=15 + local.tee $6 + i32.const 24 + i32.shl + local.get $3 + i32.const 8 + i32.shr_u + i32.or + i32.store offset=12 + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 + i32.const 2 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 + i32.const 2 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 + i32.const 2 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 + i32.const 2 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 + i32.const 2 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 + i32.const 2 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 + i32.const 2 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $3 + i32.const 2 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 + i32.const 2 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 + i32.const 2 + i32.add + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 + i32.const 2 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $3 + i32.const 2 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 + i32.const 2 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $3 + i32.const 2 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + local.get $0 + local.tee $3 + i32.const 2 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 2 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u offset=1 + i32.store8 offset=1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $1 + i32.load8_u + i32.store8 + end + local.get $5 + ) + (func $~start + i32.const 8 + i64.const 1229782938247303441 + i64.store + i32.const 16 + i64.const 2459565876494606882 + i64.store + i32.const 24 + i64.const 3689348814741910323 + i64.store + i32.const 32 + i64.const 4919131752989213764 + i64.store + i32.const 9 + i32.const 24 + i32.const 4 + call $memcpy/memcpy + global.set $memcpy/dest + global.get $memcpy/dest + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i64.load + i64.const 1229783084848853777 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.const 8 + i32.const 32 + call $memcpy/memcpy + global.set $memcpy/dest + global.get $memcpy/dest + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i64.load + i64.const 1229783084848853777 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + i64.load + i64.const 2459565876494606882 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 24 + i64.load + i64.const 3689348814741910323 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + i64.load + i64.const 4919131752989213764 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 159 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13 + i32.const 36 + i32.const 3 + call $memcpy/memcpy + global.set $memcpy/dest + i32.const 8 + i64.load + i64.const 4919131679688438545 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + i32.const 24 + i32.const 15 + call $memcpy/memcpy + global.set $memcpy/dest + i32.const 8 + i64.load + i64.const 4919131679688438545 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 165 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + i64.load + i64.const 3689348814741910323 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 24 + i64.load + i64.const 3694152654344438852 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 167 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + i64.load + i64.const 4919131752989213764 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 168 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/memcpy.untouched.wat b/tests/compiler/memcpy.untouched.wat deleted file mode 100644 index 73835e9b4b..0000000000 --- a/tests/compiler/memcpy.untouched.wat +++ /dev/null @@ -1,1266 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00") - (table $0 1 funcref) - (global $memcpy/base i32 (i32.const 8)) - (global $memcpy/dest (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "memcpy" (func $memcpy/memcpy)) - (start $~start) - (func $memcpy/memcpy (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.get $0 - local.set $3 - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 4 - i32.rem_u - else - i32.const 0 - end - local.set $6 - local.get $6 - if - local.get $0 - local.tee $7 - i32.const 1 - i32.add - local.set $0 - local.get $7 - local.get $1 - local.tee $7 - i32.const 1 - i32.add - local.set $1 - local.get $7 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 4 - i32.rem_u - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - end - local.get $3 - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 4 - i32.rem_u - local.set $6 - local.get $6 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $6 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $6 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $4 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $5 - local.get $0 - local.get $4 - i32.const 24 - i32.shr_u - local.get $5 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 4 - i32.add - local.get $5 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $5 - local.get $0 - i32.const 8 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $5 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 12 - i32.add - local.get $5 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $4 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $5 - local.get $0 - local.get $4 - i32.const 16 - i32.shr_u - local.get $5 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 4 - i32.add - local.get $5 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $5 - local.get $0 - i32.const 8 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $5 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 12 - i32.add - local.get $5 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $4 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $5 - local.get $0 - local.get $4 - i32.const 8 - i32.shr_u - local.get $5 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 4 - i32.add - local.get $5 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $5 - local.get $0 - i32.const 8 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $5 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 12 - i32.add - local.get $5 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - end - local.get $3 - ) - (func $start:memcpy - global.get $memcpy/base - i64.const 1229782938247303441 - i64.store - global.get $memcpy/base - i32.const 8 - i32.add - i64.const 2459565876494606882 - i64.store - global.get $memcpy/base - i32.const 16 - i32.add - i64.const 3689348814741910323 - i64.store - global.get $memcpy/base - i32.const 24 - i32.add - i64.const 4919131752989213764 - i64.store - global.get $memcpy/base - i32.const 1 - i32.add - global.get $memcpy/base - i32.const 16 - i32.add - i32.const 4 - call $memcpy/memcpy - global.set $memcpy/dest - global.get $memcpy/dest - global.get $memcpy/base - i32.const 1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memcpy/base - i64.load - i64.const 1229783084848853777 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 152 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memcpy/base - global.get $memcpy/base - i32.const 32 - call $memcpy/memcpy - global.set $memcpy/dest - global.get $memcpy/dest - global.get $memcpy/base - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 155 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memcpy/base - i64.load - i64.const 1229783084848853777 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memcpy/base - i32.const 8 - i32.add - i64.load - i64.const 2459565876494606882 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memcpy/base - i32.const 16 - i32.add - i64.load - i64.const 3689348814741910323 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 158 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memcpy/base - i32.const 24 - i32.add - i64.load - i64.const 4919131752989213764 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 159 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memcpy/base - i32.const 5 - i32.add - global.get $memcpy/base - i32.const 28 - i32.add - i32.const 3 - call $memcpy/memcpy - global.set $memcpy/dest - global.get $memcpy/base - i64.load - i64.const 4919131679688438545 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memcpy/base - i32.const 8 - i32.add - global.get $memcpy/base - i32.const 16 - i32.add - i32.const 15 - call $memcpy/memcpy - global.set $memcpy/dest - global.get $memcpy/base - i64.load - i64.const 4919131679688438545 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 165 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memcpy/base - i32.const 8 - i32.add - i64.load - i64.const 3689348814741910323 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 166 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memcpy/base - i32.const 16 - i32.add - i64.load - i64.const 3694152654344438852 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 167 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memcpy/base - i32.const 24 - i32.add - i64.load - i64.const 4919131752989213764 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 168 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:memcpy - ) -) diff --git a/tests/compiler/memmove.debug.wat b/tests/compiler/memmove.debug.wat new file mode 100644 index 0000000000..e325c90617 --- /dev/null +++ b/tests/compiler/memmove.debug.wat @@ -0,0 +1,426 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32) (result i32))) + (type $2 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $memmove/base i32 (i32.const 8)) + (global $memmove/dest (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $memmove/memmove (param $dest i32) (param $src i32) (param $n i32) (result i32) + (local $ret i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $dest + local.set $ret + local.get $dest + local.get $src + i32.eq + if + local.get $ret + return + end + local.get $dest + local.get $src + i32.lt_u + if + local.get $src + i32.const 8 + i32.rem_u + local.get $dest + i32.const 8 + i32.rem_u + i32.eq + if + loop $while-continue|0 + local.get $dest + i32.const 8 + i32.rem_u + if + local.get $n + i32.eqz + if + local.get $ret + return + end + local.get $n + i32.const 1 + i32.sub + local.set $n + local.get $dest + local.tee $4 + i32.const 1 + i32.add + local.set $dest + local.get $4 + local.get $src + local.tee $5 + i32.const 1 + i32.add + local.set $src + local.get $5 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $n + i32.const 8 + i32.ge_u + if + local.get $dest + local.get $src + i64.load + i64.store + local.get $n + i32.const 8 + i32.sub + local.set $n + local.get $dest + i32.const 8 + i32.add + local.set $dest + local.get $src + i32.const 8 + i32.add + local.set $src + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $n + if + local.get $dest + local.tee $6 + i32.const 1 + i32.add + local.set $dest + local.get $6 + local.get $src + local.tee $7 + i32.const 1 + i32.add + local.set $src + local.get $7 + i32.load8_u + i32.store8 + local.get $n + i32.const 1 + i32.sub + local.set $n + br $while-continue|2 + end + end + else + local.get $src + i32.const 8 + i32.rem_u + local.get $dest + i32.const 8 + i32.rem_u + i32.eq + if + loop $while-continue|3 + local.get $dest + local.get $n + i32.add + i32.const 8 + i32.rem_u + if + local.get $n + i32.eqz + if + local.get $ret + return + end + local.get $dest + local.get $n + i32.const 1 + i32.sub + local.tee $n + i32.add + local.get $src + local.get $n + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $n + i32.const 8 + i32.ge_u + if + local.get $n + i32.const 8 + i32.sub + local.set $n + local.get $dest + local.get $n + i32.add + local.get $src + local.get $n + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $n + if + local.get $dest + local.get $n + i32.const 1 + i32.sub + local.tee $n + i32.add + local.get $src + local.get $n + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + local.get $ret + return + ) + (func $start:memmove + global.get $memmove/base + i64.const 1229782938247303441 + i64.store + global.get $memmove/base + i32.const 8 + i32.add + i64.const 2459565876494606882 + i64.store + global.get $memmove/base + i32.const 16 + i32.add + i64.const 3689348814741910323 + i64.store + global.get $memmove/base + i32.const 24 + i32.add + i64.const 4919131752989213764 + i64.store + global.get $memmove/base + i32.const 1 + i32.add + global.get $memmove/base + i32.const 16 + i32.add + i32.const 4 + call $memmove/memmove + global.set $memmove/dest + global.get $memmove/dest + global.get $memmove/base + i32.const 1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 55 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memmove/base + i64.load + i64.const 1229783084848853777 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memmove/base + global.get $memmove/base + i32.const 32 + call $memmove/memmove + global.set $memmove/dest + global.get $memmove/dest + global.get $memmove/base + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memmove/base + i64.load + i64.const 1229783084848853777 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memmove/base + i32.const 8 + i32.add + i64.load + i64.const 2459565876494606882 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memmove/base + i32.const 16 + i32.add + i64.load + i64.const 3689348814741910323 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memmove/base + i32.const 24 + i32.add + i64.load + i64.const 4919131752989213764 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memmove/base + i32.const 5 + i32.add + global.get $memmove/base + i32.const 28 + i32.add + i32.const 3 + call $memmove/memmove + global.set $memmove/dest + global.get $memmove/base + i64.load + i64.const 4919131679688438545 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memmove/base + i32.const 8 + i32.add + global.get $memmove/base + i32.const 16 + i32.add + i32.const 15 + call $memmove/memmove + global.set $memmove/dest + global.get $memmove/base + i64.load + i64.const 4919131679688438545 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memmove/base + i32.const 8 + i32.add + i64.load + i64.const 3689348814741910323 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memmove/base + i32.const 16 + i32.add + i64.load + i64.const 3694152654344438852 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 71 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memmove/base + i32.const 24 + i32.add + i64.load + i64.const 4919131752989213764 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:memmove + ) +) diff --git a/tests/compiler/memmove.json b/tests/compiler/memmove.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/memmove.json +++ b/tests/compiler/memmove.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.optimized.wat deleted file mode 100644 index 254021bcd4..0000000000 --- a/tests/compiler/memmove.optimized.wat +++ /dev/null @@ -1,372 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s") - (global $memmove/dest (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $memmove/memmove (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.set $5 - local.get $0 - local.get $1 - i32.eq - if - local.get $5 - return - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $2 - i32.eqz - if - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $2 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $2 - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $2 - i32.add - i32.const 7 - i32.and - if - local.get $2 - i32.eqz - if - local.get $5 - return - end - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $2 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $2 - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - local.get $5 - ) - (func $start:memmove - i32.const 8 - i64.const 1229782938247303441 - i64.store - i32.const 16 - i64.const 2459565876494606882 - i64.store - i32.const 24 - i64.const 3689348814741910323 - i64.store - i32.const 32 - i64.const 4919131752989213764 - i64.store - i32.const 9 - i32.const 24 - i32.const 4 - call $memmove/memmove - global.set $memmove/dest - global.get $memmove/dest - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 55 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i64.load - i64.const 1229783084848853777 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 8 - i32.const 32 - call $memmove/memmove - global.set $memmove/dest - global.get $memmove/dest - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i64.load - i64.const 1229783084848853777 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 60 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - i64.load - i64.const 2459565876494606882 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 24 - i64.load - i64.const 3689348814741910323 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - i64.load - i64.const 4919131752989213764 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13 - i32.const 36 - i32.const 3 - call $memmove/memmove - global.set $memmove/dest - i32.const 8 - i64.load - i64.const 4919131679688438545 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - i32.const 24 - i32.const 15 - call $memmove/memmove - global.set $memmove/dest - i32.const 8 - i64.load - i64.const 4919131679688438545 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - i64.load - i64.const 3689348814741910323 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 24 - i64.load - i64.const 3694152654344438852 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 71 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - i64.load - i64.const 4919131752989213764 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:memmove - ) -) diff --git a/tests/compiler/memmove.release.wat b/tests/compiler/memmove.release.wat new file mode 100644 index 0000000000..9c569cc378 --- /dev/null +++ b/tests/compiler/memmove.release.wat @@ -0,0 +1,370 @@ +(module + (type $0 (func (param i32 i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $memmove/dest (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s") + (export "memory" (memory $0)) + (start $~start) + (func $memmove/memmove (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + i32.eq + if + local.get $0 + return + end + local.get $0 + local.set $5 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $2 + i32.eqz + if + local.get $5 + return + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $2 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $2 + i32.const 8 + i32.sub + local.set $2 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $2 + if + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $2 + i32.add + i32.const 7 + i32.and + if + local.get $2 + i32.eqz + if + local.get $5 + return + end + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $2 + i32.const 8 + i32.ge_u + if + local.get $2 + i32.const 8 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $2 + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + local.get $5 + ) + (func $~start + i32.const 8 + i64.const 1229782938247303441 + i64.store + i32.const 16 + i64.const 2459565876494606882 + i64.store + i32.const 24 + i64.const 3689348814741910323 + i64.store + i32.const 32 + i64.const 4919131752989213764 + i64.store + i32.const 9 + i32.const 24 + i32.const 4 + call $memmove/memmove + global.set $memmove/dest + global.get $memmove/dest + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 55 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i64.load + i64.const 1229783084848853777 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.const 8 + i32.const 32 + call $memmove/memmove + global.set $memmove/dest + global.get $memmove/dest + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i64.load + i64.const 1229783084848853777 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + i64.load + i64.const 2459565876494606882 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 24 + i64.load + i64.const 3689348814741910323 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + i64.load + i64.const 4919131752989213764 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13 + i32.const 36 + i32.const 3 + call $memmove/memmove + global.set $memmove/dest + i32.const 8 + i64.load + i64.const 4919131679688438545 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + i32.const 24 + i32.const 15 + call $memmove/memmove + global.set $memmove/dest + i32.const 8 + i64.load + i64.const 4919131679688438545 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + i64.load + i64.const 3689348814741910323 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 24 + i64.load + i64.const 3694152654344438852 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 71 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + i64.load + i64.const 4919131752989213764 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/memmove.untouched.wat b/tests/compiler/memmove.untouched.wat deleted file mode 100644 index 80fd6c4623..0000000000 --- a/tests/compiler/memmove.untouched.wat +++ /dev/null @@ -1,431 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s\00") - (table $0 1 funcref) - (global $memmove/base i32 (i32.const 8)) - (global $memmove/dest (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $memmove/memmove (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.set $3 - local.get $0 - local.get $1 - i32.eq - if - local.get $3 - return - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 8 - i32.rem_u - local.get $0 - i32.const 8 - i32.rem_u - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 8 - i32.rem_u - local.set $4 - local.get $4 - if - local.get $2 - i32.eqz - if - local.get $3 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $2 - i32.const 8 - i32.ge_u - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $2 - local.set $4 - local.get $4 - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 8 - i32.rem_u - local.get $0 - i32.const 8 - i32.rem_u - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $2 - i32.add - i32.const 8 - i32.rem_u - local.set $4 - local.get $4 - if - local.get $2 - i32.eqz - if - local.get $3 - return - end - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $2 - i32.const 8 - i32.ge_u - local.set $4 - local.get $4 - if - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $2 - local.set $4 - local.get $4 - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - local.get $3 - ) - (func $start:memmove - global.get $memmove/base - i64.const 1229782938247303441 - i64.store - global.get $memmove/base - i32.const 8 - i32.add - i64.const 2459565876494606882 - i64.store - global.get $memmove/base - i32.const 16 - i32.add - i64.const 3689348814741910323 - i64.store - global.get $memmove/base - i32.const 24 - i32.add - i64.const 4919131752989213764 - i64.store - global.get $memmove/base - i32.const 1 - i32.add - global.get $memmove/base - i32.const 16 - i32.add - i32.const 4 - call $memmove/memmove - global.set $memmove/dest - global.get $memmove/dest - global.get $memmove/base - i32.const 1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 55 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memmove/base - i64.load - i64.const 1229783084848853777 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memmove/base - global.get $memmove/base - i32.const 32 - call $memmove/memmove - global.set $memmove/dest - global.get $memmove/dest - global.get $memmove/base - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memmove/base - i64.load - i64.const 1229783084848853777 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 60 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memmove/base - i32.const 8 - i32.add - i64.load - i64.const 2459565876494606882 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memmove/base - i32.const 16 - i32.add - i64.load - i64.const 3689348814741910323 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memmove/base - i32.const 24 - i32.add - i64.load - i64.const 4919131752989213764 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memmove/base - i32.const 5 - i32.add - global.get $memmove/base - i32.const 28 - i32.add - i32.const 3 - call $memmove/memmove - global.set $memmove/dest - global.get $memmove/base - i64.load - i64.const 4919131679688438545 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memmove/base - i32.const 8 - i32.add - global.get $memmove/base - i32.const 16 - i32.add - i32.const 15 - call $memmove/memmove - global.set $memmove/dest - global.get $memmove/base - i64.load - i64.const 4919131679688438545 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memmove/base - i32.const 8 - i32.add - i64.load - i64.const 3689348814741910323 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memmove/base - i32.const 16 - i32.add - i64.load - i64.const 3694152654344438852 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 71 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memmove/base - i32.const 24 - i32.add - i64.load - i64.const 4919131752989213764 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:memmove - ) -) diff --git a/tests/compiler/memory.debug.wat b/tests/compiler/memory.debug.wat new file mode 100644 index 0000000000..f9d1689708 --- /dev/null +++ b/tests/compiler/memory.debug.wat @@ -0,0 +1,482 @@ +(module + (type $0 (func (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $memory/ptr (mut i32) (i32.const 80)) + (global $~lib/memory/__data_end i32 (i32.const 212)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32980)) + (global $~lib/memory/__heap_base i32 (i32.const 32980)) + (memory $0 1) + (data $0 (i32.const 16) "\00\00\00\00") + (data $1 (i32.const 28) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 80) "\00") + (data $3 (i32.const 96) "\00") + (data $4 (i32.const 104) "\00") + (data $5 (i32.const 108) "\00") + (data $6 (i32.const 110) "\00") + (data $7 (i32.const 111) "\00") + (data $8 (i32.const 112) "\00") + (data $9 (i32.const 128) "\00") + (data $10 (i32.const 144) "\00") + (data $11 (i32.const 152) "\00") + (data $12 (i32.const 156) "\00") + (data $13 (i32.const 158) "\00") + (data $14 (i32.const 159) "\00") + (data $15 (i32.const 160) "\00") + (data $16 (i32.const 161) "\01\02\03") + (data $17 (i32.const 164) "\00\00\c0?\00\00 @\00\00`@") + (data $18 (i32.const 176) "\00") + (data $19 (i32.const 192) "\01") + (data $20 (i32.const 200) "\01") + (data $21 (i32.const 204) "\01") + (data $22 (i32.const 206) "\01") + (data $23 (i32.const 207) "\01") + (data $24 (i32.const 208) "\01") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $memory/test (result i32) + (local $value i32) + i32.const 16 + i32.load + local.set $value + i32.const 16 + local.get $value + i32.const 1 + i32.add + i32.store + local.get $value + return + ) + (func $memory/testGeneric (result i32) + i32.const 144 + return + ) + (func $memory/testGeneric (result i32) + i32.const 152 + return + ) + (func $memory/testGeneric (result i32) + i32.const 156 + return + ) + (func $memory/testGeneric (result i32) + i32.const 158 + return + ) + (func $memory/testGeneric (result i32) + i32.const 159 + return + ) + (func $start:memory + call $memory/test + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $memory/test + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $memory/test + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 16 + i32.add + i32.const 96 + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 8 + i32.add + i32.const 104 + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 4 + i32.add + i32.const 108 + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 2 + i32.add + i32.const 110 + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 1 + i32.add + i32.const 111 + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 1 + i32.add + i32.const 112 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 128 + global.set $memory/ptr + global.get $memory/ptr + i32.const 16 + i32.add + call $memory/testGeneric + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 8 + i32.add + call $memory/testGeneric + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 4 + i32.add + call $memory/testGeneric + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 2 + i32.add + call $memory/testGeneric + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 1 + i32.add + call $memory/testGeneric + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 1 + i32.add + i32.const 160 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 161 + global.set $memory/ptr + global.get $memory/ptr + i32.load8_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.load8_u offset=1 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 45 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.load8_u offset=2 + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 164 + global.set $memory/ptr + global.get $memory/ptr + f32.load + f32.const 1.5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 49 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + f32.load offset=4 + f32.const 2.5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + f32.load offset=8 + f32.const 3.5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 176 + global.set $memory/ptr + global.get $memory/ptr + i32.const 16 + i32.add + i32.const 192 + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 8 + i32.add + i32.const 200 + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 57 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 4 + i32.add + i32.const 204 + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 58 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 2 + i32.add + i32.const 206 + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 1 + i32.add + i32.const 207 + global.set $memory/ptr + global.get $memory/ptr + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 1 + i32.add + i32.const 208 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 48 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:memory + ) +) diff --git a/tests/compiler/memory.json b/tests/compiler/memory.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/memory.json +++ b/tests/compiler/memory.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/memory.optimized.wat b/tests/compiler/memory.optimized.wat deleted file mode 100644 index bf670ac375..0000000000 --- a/tests/compiler/memory.optimized.wat +++ /dev/null @@ -1,253 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1040) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s") - (data (i32.const 1169) "\01\02\03") - (data (i32.const 1174) "\c0?\00\00 @\00\00`@") - (data (i32.const 1200) "\01") - (data (i32.const 1208) "\01") - (data (i32.const 1212) "\01") - (data (i32.const 1214) "\01") - (data (i32.const 1215) "\01") - (data (i32.const 1216) "\01") - (global $memory/ptr (mut i32) (i32.const 1088)) - (export "memory" (memory $0)) - (start $~start) - (func $memory/test (result i32) - (local $0 i32) - i32.const 1024 - i32.const 1024 - i32.load - local.tee $0 - i32.const 1 - i32.add - i32.store - local.get $0 - ) - (func $start:memory - (local $0 i32) - call $memory/test - if - i32.const 0 - i32.const 1056 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $memory/test - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $memory/test - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 16 - i32.add - i32.const 1104 - global.set $memory/ptr - i32.const 1104 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 8 - i32.add - i32.const 1112 - global.set $memory/ptr - i32.const 1112 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 4 - i32.add - i32.const 1116 - global.set $memory/ptr - i32.const 1116 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 2 - i32.add - i32.const 1118 - global.set $memory/ptr - i32.const 1118 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 1 - i32.add - i32.const 1119 - global.set $memory/ptr - i32.const 1119 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 1119 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1136 - global.set $memory/ptr - i32.const 1152 - global.set $memory/ptr - i32.const 1160 - global.set $memory/ptr - i32.const 1164 - global.set $memory/ptr - i32.const 1166 - global.set $memory/ptr - i32.const 1167 - global.set $memory/ptr - i32.const 1169 - global.set $memory/ptr - i32.const 1169 - i32.load8_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.load8_u offset=1 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 45 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.load8_u offset=2 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1172 - global.set $memory/ptr - i32.const 1172 - f32.load - f32.const 1.5 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 49 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - f32.load offset=4 - f32.const 2.5 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - f32.load offset=8 - f32.const 3.5 - f32.ne - if - i32.const 0 - i32.const 1056 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1184 - global.set $memory/ptr - i32.const 1200 - global.set $memory/ptr - i32.const 1208 - global.set $memory/ptr - i32.const 1212 - global.set $memory/ptr - i32.const 1214 - global.set $memory/ptr - i32.const 1215 - global.set $memory/ptr - ) - (func $~start - call $start:memory - ) -) diff --git a/tests/compiler/memory.release.wat b/tests/compiler/memory.release.wat new file mode 100644 index 0000000000..b1afa82e8f --- /dev/null +++ b/tests/compiler/memory.release.wat @@ -0,0 +1,263 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $memory/ptr (mut i32) (i32.const 1088)) + (memory $0 1) + (data $1 (i32.const 1036) ",") + (data $1.1 (i32.const 1048) "\02\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s") + (data $16 (i32.const 1169) "\01\02\03") + (data $17 (i32.const 1174) "\c0?\00\00 @\00\00`@") + (data $19 (i32.const 1200) "\01") + (data $20 (i32.const 1208) "\01") + (data $21 (i32.const 1212) "\01") + (data $22 (i32.const 1214) "\01") + (data $23 (i32.const 1215) "\01") + (data $24 (i32.const 1216) "\01") + (export "memory" (memory $0)) + (start $~start) + (func $start:memory + (local $0 i32) + i32.const 1024 + i32.const 1024 + i32.load + local.tee $0 + i32.const 1 + i32.add + i32.store + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1024 + i32.const 1024 + i32.load + local.tee $0 + i32.const 1 + i32.add + i32.store + local.get $0 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1024 + i32.const 1024 + i32.load + local.tee $0 + i32.const 1 + i32.add + i32.store + local.get $0 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 16 + i32.add + i32.const 1104 + global.set $memory/ptr + i32.const 1104 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 8 + i32.add + i32.const 1112 + global.set $memory/ptr + i32.const 1112 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 4 + i32.add + i32.const 1116 + global.set $memory/ptr + i32.const 1116 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 2 + i32.add + i32.const 1118 + global.set $memory/ptr + i32.const 1118 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 1 + i32.add + i32.const 1119 + global.set $memory/ptr + i32.const 1119 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.const 1119 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1136 + global.set $memory/ptr + i32.const 1152 + global.set $memory/ptr + i32.const 1160 + global.set $memory/ptr + i32.const 1164 + global.set $memory/ptr + i32.const 1166 + global.set $memory/ptr + i32.const 1167 + global.set $memory/ptr + i32.const 1169 + global.set $memory/ptr + i32.const 1169 + i32.load8_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.load8_u offset=1 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 45 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + i32.load8_u offset=2 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1172 + global.set $memory/ptr + i32.const 1172 + f32.load + f32.const 1.5 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 49 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + f32.load offset=4 + f32.const 2.5 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memory/ptr + f32.load offset=8 + f32.const 3.5 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1184 + global.set $memory/ptr + i32.const 1200 + global.set $memory/ptr + i32.const 1208 + global.set $memory/ptr + i32.const 1212 + global.set $memory/ptr + i32.const 1214 + global.set $memory/ptr + i32.const 1215 + global.set $memory/ptr + ) + (func $~start + call $start:memory + ) +) diff --git a/tests/compiler/memory.untouched.wat b/tests/compiler/memory.untouched.wat deleted file mode 100644 index 60eed3e3ad..0000000000 --- a/tests/compiler/memory.untouched.wat +++ /dev/null @@ -1,472 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\00\00\00\00") - (data (i32.const 32) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s\00") - (data (i32.const 80) "\00") - (data (i32.const 96) "\00") - (data (i32.const 104) "\00") - (data (i32.const 108) "\00") - (data (i32.const 110) "\00") - (data (i32.const 111) "\00") - (data (i32.const 112) "\00") - (data (i32.const 128) "\00") - (data (i32.const 144) "\00") - (data (i32.const 152) "\00") - (data (i32.const 156) "\00") - (data (i32.const 158) "\00") - (data (i32.const 159) "\00") - (data (i32.const 160) "\00") - (data (i32.const 161) "\01\02\03") - (data (i32.const 164) "\00\00\c0?\00\00 @\00\00`@") - (data (i32.const 176) "\00") - (data (i32.const 192) "\01") - (data (i32.const 200) "\01") - (data (i32.const 204) "\01") - (data (i32.const 206) "\01") - (data (i32.const 207) "\01") - (data (i32.const 208) "\01") - (table $0 1 funcref) - (global $memory/ptr (mut i32) (i32.const 80)) - (export "memory" (memory $0)) - (start $~start) - (func $memory/test (result i32) - (local $0 i32) - i32.const 16 - i32.load - local.set $0 - i32.const 16 - local.get $0 - i32.const 1 - i32.add - i32.store - local.get $0 - ) - (func $memory/testGeneric (result i32) - i32.const 144 - ) - (func $memory/testGeneric (result i32) - i32.const 152 - ) - (func $memory/testGeneric (result i32) - i32.const 156 - ) - (func $memory/testGeneric (result i32) - i32.const 158 - ) - (func $memory/testGeneric (result i32) - i32.const 159 - ) - (func $start:memory - call $memory/test - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $memory/test - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $memory/test - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 16 - i32.add - i32.const 96 - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 8 - i32.add - i32.const 104 - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 4 - i32.add - i32.const 108 - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 2 - i32.add - i32.const 110 - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 1 - i32.add - i32.const 111 - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 1 - i32.add - i32.const 112 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 128 - global.set $memory/ptr - global.get $memory/ptr - i32.const 16 - i32.add - call $memory/testGeneric - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 8 - i32.add - call $memory/testGeneric - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 4 - i32.add - call $memory/testGeneric - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 2 - i32.add - call $memory/testGeneric - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 1 - i32.add - call $memory/testGeneric - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 1 - i32.add - i32.const 160 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 161 - global.set $memory/ptr - global.get $memory/ptr - i32.load8_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.load8_u offset=1 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 45 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.load8_u offset=2 - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 164 - global.set $memory/ptr - global.get $memory/ptr - f32.load - f32.const 1.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 49 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - f32.load offset=4 - f32.const 2.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - f32.load offset=8 - f32.const 3.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 176 - global.set $memory/ptr - global.get $memory/ptr - i32.const 16 - i32.add - i32.const 192 - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 8 - i32.add - i32.const 200 - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 57 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 4 - i32.add - i32.const 204 - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 2 - i32.add - i32.const 206 - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 1 - i32.add - i32.const 207 - global.set $memory/ptr - global.get $memory/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 60 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memory/ptr - i32.const 1 - i32.add - i32.const 208 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:memory - ) -) diff --git a/tests/compiler/memorybase.debug.wat b/tests/compiler/memorybase.debug.wat new file mode 100644 index 0000000000..882e0b2278 --- /dev/null +++ b/tests/compiler/memorybase.debug.wat @@ -0,0 +1,27 @@ +(module + (type $0 (func)) + (global $memorybase/staticData i32 (i32.const 1024)) + (global $~lib/native/ASC_MEMORY_BASE i32 (i32.const 1024)) + (global $~lib/memory/__data_end i32 (i32.const 1028)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33796)) + (global $~lib/memory/__heap_base i32 (i32.const 33796)) + (memory $0 1) + (data $0 (i32.const 1024) "\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:memorybase + i32.const 1024 + i32.const 1024 + i32.eq + drop + global.get $memorybase/staticData + i32.const 1024 + i32.eq + drop + ) + (func $~start + call $start:memorybase + ) +) diff --git a/tests/compiler/memorybase.json b/tests/compiler/memorybase.json index 649107a8f2..6349eac2ae 100644 --- a/tests/compiler/memorybase.json +++ b/tests/compiler/memorybase.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--memoryBase 1024" ] -} \ No newline at end of file +} diff --git a/tests/compiler/memorybase.optimized.wat b/tests/compiler/memorybase.optimized.wat deleted file mode 100644 index 0954999754..0000000000 --- a/tests/compiler/memorybase.optimized.wat +++ /dev/null @@ -1,5 +0,0 @@ -(module - (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d") - (export "memory" (memory $0)) -) diff --git a/tests/compiler/memorybase.release.wat b/tests/compiler/memorybase.release.wat new file mode 100644 index 0000000000..7a4e7940e7 --- /dev/null +++ b/tests/compiler/memorybase.release.wat @@ -0,0 +1,4 @@ +(module + (memory $0 1) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/memorybase.ts b/tests/compiler/memorybase.ts index 9b28726d4c..a4aff01e9d 100644 --- a/tests/compiler/memorybase.ts +++ b/tests/compiler/memorybase.ts @@ -1,6 +1,4 @@ -import { BLOCK_OVERHEAD } from "rt/common"; - -const staticString = "hello world"; +const staticData = memory.data(1); assert(ASC_MEMORY_BASE == 1024); -assert(changetype(staticString) - BLOCK_OVERHEAD == 1024); +assert(changetype(staticData) == ASC_MEMORY_BASE); diff --git a/tests/compiler/memorybase.untouched.wat b/tests/compiler/memorybase.untouched.wat deleted file mode 100644 index 041735216e..0000000000 --- a/tests/compiler/memorybase.untouched.wat +++ /dev/null @@ -1,25 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00") - (table $0 1 funcref) - (global $memorybase/staticString i32 (i32.const 1040)) - (global $~lib/ASC_MEMORY_BASE i32 (i32.const 1024)) - (export "memory" (memory $0)) - (start $~start) - (func $start:memorybase - i32.const 1024 - i32.const 1024 - i32.eq - drop - global.get $memorybase/staticString - i32.const 16 - i32.sub - i32.const 1024 - i32.eq - drop - ) - (func $~start - call $start:memorybase - ) -) diff --git a/tests/compiler/memset.debug.wat b/tests/compiler/memset.debug.wat new file mode 100644 index 0000000000..06ad44229b --- /dev/null +++ b/tests/compiler/memset.debug.wat @@ -0,0 +1,382 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32) (result i32))) + (type $2 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $memset/dest (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $memset/memset (param $dest i32) (param $c i32) (param $n i32) (result i32) + (local $ret i32) + (local $k i32) + (local $c32 i32) + (local $c64 i64) + local.get $dest + local.set $ret + local.get $n + i32.eqz + if + local.get $ret + return + end + local.get $dest + local.get $c + i32.store8 + local.get $dest + local.get $n + i32.add + i32.const 1 + i32.sub + local.get $c + i32.store8 + local.get $n + i32.const 2 + i32.le_u + if + local.get $ret + return + end + local.get $dest + i32.const 1 + i32.add + local.get $c + i32.store8 + local.get $dest + i32.const 2 + i32.add + local.get $c + i32.store8 + local.get $dest + local.get $n + i32.add + i32.const 2 + i32.sub + local.get $c + i32.store8 + local.get $dest + local.get $n + i32.add + i32.const 3 + i32.sub + local.get $c + i32.store8 + local.get $n + i32.const 6 + i32.le_u + if + local.get $ret + return + end + local.get $dest + i32.const 3 + i32.add + local.get $c + i32.store8 + local.get $dest + local.get $n + i32.add + i32.const 4 + i32.sub + local.get $c + i32.store8 + local.get $n + i32.const 8 + i32.le_u + if + local.get $ret + return + end + i32.const 0 + local.get $dest + i32.sub + i32.const 3 + i32.and + local.set $k + local.get $dest + local.get $k + i32.add + local.set $dest + local.get $n + local.get $k + i32.sub + local.set $n + local.get $n + i32.const -4 + i32.and + local.set $n + i32.const -1 + i32.const 255 + i32.div_u + local.get $c + i32.const 255 + i32.and + i32.mul + local.set $c32 + local.get $dest + local.get $c32 + i32.store + local.get $dest + local.get $n + i32.add + i32.const 4 + i32.sub + local.get $c32 + i32.store + local.get $n + i32.const 8 + i32.le_u + if + local.get $ret + return + end + local.get $dest + i32.const 4 + i32.add + local.get $c32 + i32.store + local.get $dest + i32.const 8 + i32.add + local.get $c32 + i32.store + local.get $dest + local.get $n + i32.add + i32.const 12 + i32.sub + local.get $c32 + i32.store + local.get $dest + local.get $n + i32.add + i32.const 8 + i32.sub + local.get $c32 + i32.store + local.get $n + i32.const 24 + i32.le_u + if + local.get $ret + return + end + local.get $dest + i32.const 12 + i32.add + local.get $c32 + i32.store + local.get $dest + i32.const 16 + i32.add + local.get $c32 + i32.store + local.get $dest + i32.const 20 + i32.add + local.get $c32 + i32.store + local.get $dest + i32.const 24 + i32.add + local.get $c32 + i32.store + local.get $dest + local.get $n + i32.add + i32.const 28 + i32.sub + local.get $c32 + i32.store + local.get $dest + local.get $n + i32.add + i32.const 24 + i32.sub + local.get $c32 + i32.store + local.get $dest + local.get $n + i32.add + i32.const 20 + i32.sub + local.get $c32 + i32.store + local.get $dest + local.get $n + i32.add + i32.const 16 + i32.sub + local.get $c32 + i32.store + i32.const 24 + local.get $dest + i32.const 4 + i32.and + i32.add + local.set $k + local.get $dest + local.get $k + i32.add + local.set $dest + local.get $n + local.get $k + i32.sub + local.set $n + local.get $c32 + i64.extend_i32_u + local.get $c32 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + local.set $c64 + loop $while-continue|0 + local.get $n + i32.const 32 + i32.ge_u + if + local.get $dest + local.get $c64 + i64.store + local.get $dest + i32.const 8 + i32.add + local.get $c64 + i64.store + local.get $dest + i32.const 16 + i32.add + local.get $c64 + i64.store + local.get $dest + i32.const 24 + i32.add + local.get $c64 + i64.store + local.get $n + i32.const 32 + i32.sub + local.set $n + local.get $dest + i32.const 32 + i32.add + local.set $dest + br $while-continue|0 + end + end + local.get $ret + return + ) + (func $start:memset + global.get $~lib/memory/__heap_base + global.set $memset/dest + global.get $memset/dest + i32.const 1 + i32.const 16 + call $memset/memset + drop + global.get $memset/dest + i32.load8_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.const 15 + i32.add + i32.load8_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.const 1 + i32.add + i32.const 2 + i32.const 14 + call $memset/memset + drop + global.get $memset/dest + i32.load8_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.const 1 + i32.add + i32.load8_u + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.const 14 + i32.add + i32.load8_u + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.const 15 + i32.add + i32.load8_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 80 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:memset + ) +) diff --git a/tests/compiler/memset.json b/tests/compiler/memset.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/memset.json +++ b/tests/compiler/memset.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/memset.optimized.wat b/tests/compiler/memset.optimized.wat deleted file mode 100644 index a8adc41d48..0000000000 --- a/tests/compiler/memset.optimized.wat +++ /dev/null @@ -1,299 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s") - (global $memset/dest (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $memset/memset (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) - block $folding-inner0 - local.get $2 - i32.eqz - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 1 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 2 - i32.le_u - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.store8 offset=1 - local.get $0 - local.get $1 - i32.store8 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.const 2 - i32.sub - local.get $1 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 6 - i32.le_u - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.store8 offset=3 - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - br_if $folding-inner0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $3 - i32.add - local.tee $0 - local.get $1 - i32.const 255 - i32.and - i32.const 16843009 - i32.mul - local.tee $1 - i32.store - local.get $0 - local.get $2 - local.get $3 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 8 - i32.le_u - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.const 12 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 8 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 24 - i32.le_u - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=16 - local.get $0 - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - i32.store offset=24 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.const 28 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 24 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 20 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 16 - i32.sub - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.sub - local.set $2 - local.get $1 - i64.extend_i32_u - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $4 - loop $while-continue|0 - local.get $2 - i32.const 32 - i32.ge_u - if - local.get $0 - local.get $4 - i64.store - local.get $0 - local.get $4 - i64.store offset=8 - local.get $0 - local.get $4 - i64.store offset=16 - local.get $0 - local.get $4 - i64.store offset=24 - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) - (func $start:memset - i32.const 1060 - global.set $memset/dest - i32.const 1060 - i32.const 1 - i32.const 16 - call $memset/memset - global.get $memset/dest - i32.load8_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.load8_u offset=15 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.const 1 - i32.add - i32.const 2 - i32.const 14 - call $memset/memset - global.get $memset/dest - i32.load8_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.load8_u offset=1 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.load8_u offset=14 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.load8_u offset=15 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 80 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:memset - ) -) diff --git a/tests/compiler/memset.release.wat b/tests/compiler/memset.release.wat new file mode 100644 index 0000000000..422cb7f274 --- /dev/null +++ b/tests/compiler/memset.release.wat @@ -0,0 +1,288 @@ +(module + (type $0 (func (param i32 i32 i32))) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $memset/dest (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s") + (export "memory" (memory $0)) + (start $~start) + (func $memset/memset (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i64) + (local $4 i32) + block $folding-inner0 + local.get $2 + i32.eqz + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.store8 + local.get $0 + local.get $2 + i32.add + local.tee $4 + i32.const 1 + i32.sub + local.get $1 + i32.store8 + local.get $2 + i32.const 2 + i32.le_u + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.store8 offset=1 + local.get $0 + local.get $1 + i32.store8 offset=2 + local.get $4 + i32.const 2 + i32.sub + local.get $1 + i32.store8 + local.get $4 + i32.const 3 + i32.sub + local.get $1 + i32.store8 + local.get $2 + i32.const 6 + i32.le_u + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.store8 offset=3 + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store8 + local.get $2 + i32.const 8 + i32.le_u + br_if $folding-inner0 + i32.const 0 + local.get $0 + i32.sub + i32.const 3 + i32.and + local.tee $4 + local.get $0 + i32.add + local.tee $0 + local.get $1 + i32.const 255 + i32.and + i32.const 16843009 + i32.mul + local.tee $1 + i32.store + local.get $2 + local.get $4 + i32.sub + i32.const -4 + i32.and + local.tee $2 + local.get $0 + i32.add + local.tee $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 8 + i32.le_u + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $4 + i32.const 12 + i32.sub + local.get $1 + i32.store + local.get $4 + i32.const 8 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 24 + i32.le_u + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=16 + local.get $0 + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + i32.store offset=24 + local.get $4 + i32.const 28 + i32.sub + local.get $1 + i32.store + local.get $4 + i32.const 24 + i32.sub + local.get $1 + i32.store + local.get $4 + i32.const 20 + i32.sub + local.get $1 + i32.store + local.get $4 + i32.const 16 + i32.sub + local.get $1 + i32.store + local.get $0 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $4 + local.get $0 + i32.add + local.set $0 + local.get $2 + local.get $4 + i32.sub + local.set $2 + local.get $1 + i64.extend_i32_u + local.tee $3 + local.get $3 + i64.const 32 + i64.shl + i64.or + local.set $3 + loop $while-continue|0 + local.get $2 + i32.const 32 + i32.ge_u + if + local.get $0 + local.get $3 + i64.store + local.get $0 + local.get $3 + i64.store offset=8 + local.get $0 + local.get $3 + i64.store offset=16 + local.get $0 + local.get $3 + i64.store offset=24 + local.get $2 + i32.const 32 + i32.sub + local.set $2 + local.get $0 + i32.const 32 + i32.add + local.set $0 + br $while-continue|0 + end + end + end + ) + (func $~start + i32.const 33852 + global.set $memset/dest + i32.const 33852 + i32.const 1 + i32.const 16 + call $memset/memset + global.get $memset/dest + i32.load8_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.load8_u offset=15 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.const 1 + i32.add + i32.const 2 + i32.const 14 + call $memset/memset + global.get $memset/dest + i32.load8_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.load8_u offset=1 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.load8_u offset=14 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.load8_u offset=15 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 80 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/memset.untouched.wat b/tests/compiler/memset.untouched.wat deleted file mode 100644 index 804effb895..0000000000 --- a/tests/compiler/memset.untouched.wat +++ /dev/null @@ -1,381 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00") - (table $0 1 funcref) - (global $memset/dest (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 52)) - (export "memory" (memory $0)) - (start $~start) - (func $memset/memset (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i32) - local.get $0 - local.set $3 - local.get $2 - i32.eqz - if - local.get $3 - return - end - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 1 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 2 - i32.le_u - if - local.get $3 - return - end - local.get $0 - i32.const 1 - i32.add - local.get $1 - i32.store8 - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 2 - i32.sub - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 3 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 6 - i32.le_u - if - local.get $3 - return - end - local.get $0 - i32.const 3 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - if - local.get $3 - return - end - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.set $4 - local.get $0 - local.get $4 - i32.add - local.set $0 - local.get $2 - local.get $4 - i32.sub - local.set $2 - local.get $2 - i32.const -4 - i32.and - local.set $2 - i32.const -1 - i32.const 255 - i32.div_u - local.get $1 - i32.const 255 - i32.and - i32.mul - local.set $5 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $5 - i32.store - local.get $2 - i32.const 8 - i32.le_u - if - local.get $3 - return - end - local.get $0 - i32.const 4 - i32.add - local.get $5 - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $5 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 12 - i32.sub - local.get $5 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 8 - i32.sub - local.get $5 - i32.store - local.get $2 - i32.const 24 - i32.le_u - if - local.get $3 - return - end - local.get $0 - i32.const 12 - i32.add - local.get $5 - i32.store - local.get $0 - i32.const 16 - i32.add - local.get $5 - i32.store - local.get $0 - i32.const 20 - i32.add - local.get $5 - i32.store - local.get $0 - i32.const 24 - i32.add - local.get $5 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 28 - i32.sub - local.get $5 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 24 - i32.sub - local.get $5 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 20 - i32.sub - local.get $5 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.get $5 - i32.store - i32.const 24 - local.get $0 - i32.const 4 - i32.and - i32.add - local.set $4 - local.get $0 - local.get $4 - i32.add - local.set $0 - local.get $2 - local.get $4 - i32.sub - local.set $2 - local.get $5 - i64.extend_i32_u - local.get $5 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $6 - loop $while-continue|0 - local.get $2 - i32.const 32 - i32.ge_u - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $6 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $3 - ) - (func $start:memset - global.get $~lib/heap/__heap_base - global.set $memset/dest - global.get $memset/dest - i32.const 1 - i32.const 16 - call $memset/memset - drop - global.get $memset/dest - i32.load8_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.const 15 - i32.add - i32.load8_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.const 1 - i32.add - i32.const 2 - i32.const 14 - call $memset/memset - drop - global.get $memset/dest - i32.load8_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.const 1 - i32.add - i32.load8_u - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.const 14 - i32.add - i32.load8_u - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.const 15 - i32.add - i32.load8_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 80 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:memset - ) -) diff --git a/tests/compiler/merge.debug.wat b/tests/compiler/merge.debug.wat new file mode 100644 index 0000000000..62a1517ef0 --- /dev/null +++ b/tests/compiler/merge.debug.wat @@ -0,0 +1,82 @@ +(module + (type $0 (func)) + (global $merge/globalType i32 (i32.const 2)) + (global $merge/globalType_test (mut i32) (i32.const 0)) + (global $merge/typeGlobal i32 (i32.const 3)) + (global $merge/typeGlobal_test (mut i32) (i32.const 0)) + (global $merge/namespaceType_test (mut i32) (i32.const 0)) + (global $merge/typeNamespace_test (mut i32) (i32.const 0)) + (global $merge/functionType_test (mut i32) (i32.const 0)) + (global $merge/typeFunction_test (mut i32) (i32.const 0)) + (global $merge/enumNamespace.val i32 (i32.const 1)) + (global $merge/namespaceEnum.val i32 (i32.const 2)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $merge/namespaceType.test + ) + (func $merge/typeNamespace.test + ) + (func $merge/functionType + ) + (func $merge/typeFunction + ) + (func $merge/classNamespace.test1 + ) + (func $merge/classNamespace.test2 + ) + (func $merge/namespaceClass.test1 + ) + (func $merge/namespaceClass.test2 + ) + (func $merge/functionNamespace + ) + (func $merge/functionNamespace.test + ) + (func $merge/namespaceFunction.test + ) + (func $merge/namespaceFunction + ) + (func $merge/enumNamespace.test + ) + (func $merge/namespaceEnum.test + ) + (func $merge/namespaceNamespace.test1 + ) + (func $merge/namespaceNamespace.test2 + ) + (func $start:merge + global.get $merge/globalType + drop + global.get $merge/typeGlobal + drop + call $merge/namespaceType.test + call $merge/typeNamespace.test + call $merge/functionType + call $merge/typeFunction + call $merge/classNamespace.test1 + call $merge/classNamespace.test2 + call $merge/namespaceClass.test1 + call $merge/namespaceClass.test2 + call $merge/functionNamespace + call $merge/functionNamespace.test + call $merge/namespaceFunction.test + call $merge/namespaceFunction + global.get $merge/enumNamespace.val + drop + call $merge/enumNamespace.test + call $merge/namespaceEnum.test + global.get $merge/namespaceEnum.val + drop + call $merge/namespaceNamespace.test1 + call $merge/namespaceNamespace.test2 + ) + (func $~start + call $start:merge + ) +) diff --git a/tests/compiler/merge.json b/tests/compiler/merge.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/merge.json +++ b/tests/compiler/merge.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/std/simd.optimized.wat b/tests/compiler/merge.release.wat similarity index 100% rename from tests/compiler/std/simd.optimized.wat rename to tests/compiler/merge.release.wat diff --git a/tests/compiler/merge.untouched.wat b/tests/compiler/merge.untouched.wat deleted file mode 100644 index 893d924eb1..0000000000 --- a/tests/compiler/merge.untouched.wat +++ /dev/null @@ -1,94 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (global $merge/globalType i32 (i32.const 2)) - (global $merge/globalType_test (mut i32) (i32.const 0)) - (global $merge/typeGlobal i32 (i32.const 3)) - (global $merge/typeGlobal_test (mut i32) (i32.const 0)) - (global $merge/namespaceType_test (mut i32) (i32.const 0)) - (global $merge/typeNamespace_test (mut i32) (i32.const 0)) - (global $merge/functionType_test (mut i32) (i32.const 0)) - (global $merge/typeFunction_test (mut i32) (i32.const 0)) - (global $merge/enumNamespace.val i32 (i32.const 1)) - (global $merge/namespaceEnum.val i32 (i32.const 2)) - (export "memory" (memory $0)) - (start $~start) - (func $merge/namespaceType.test - nop - ) - (func $merge/typeNamespace.test - nop - ) - (func $merge/functionType - nop - ) - (func $merge/typeFunction - nop - ) - (func $merge/classNamespace.test1 - nop - ) - (func $merge/classNamespace.test2 - nop - ) - (func $merge/namespaceClass.test1 - nop - ) - (func $merge/namespaceClass.test2 - nop - ) - (func $merge/functionNamespace - nop - ) - (func $merge/functionNamespace.test - nop - ) - (func $merge/namespaceFunction.test - nop - ) - (func $merge/namespaceFunction - nop - ) - (func $merge/enumNamespace.test - nop - ) - (func $merge/namespaceEnum.test - nop - ) - (func $merge/namespaceNamespace.test1 - nop - ) - (func $merge/namespaceNamespace.test2 - nop - ) - (func $start:merge - global.get $merge/globalType - drop - global.get $merge/typeGlobal - drop - call $merge/namespaceType.test - call $merge/typeNamespace.test - call $merge/functionType - call $merge/typeFunction - call $merge/classNamespace.test1 - call $merge/classNamespace.test2 - call $merge/namespaceClass.test1 - call $merge/namespaceClass.test2 - call $merge/functionNamespace - call $merge/functionNamespace.test - call $merge/namespaceFunction.test - call $merge/namespaceFunction - global.get $merge/enumNamespace.val - drop - call $merge/enumNamespace.test - call $merge/namespaceEnum.test - global.get $merge/namespaceEnum.val - drop - call $merge/namespaceNamespace.test1 - call $merge/namespaceNamespace.test2 - ) - (func $~start - call $start:merge - ) -) diff --git a/tests/compiler/mutable-globals.debug.wat b/tests/compiler/mutable-globals.debug.wat new file mode 100644 index 0000000000..6b2dac9834 --- /dev/null +++ b/tests/compiler/mutable-globals.debug.wat @@ -0,0 +1,86 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (import "mutable-globals" "external" (global $mutable-globals/external (mut i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $mutable-globals/internal (mut i32) (i32.const 124)) + (global $~lib/memory/__data_end i32 (i32.const 76)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32844)) + (global $~lib/memory/__heap_base i32 (i32.const 32844)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "external" (global $mutable-globals/external)) + (export "internal" (global $mutable-globals/internal)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $start:mutable-globals + global.get $mutable-globals/external + i32.const 123 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $mutable-globals/internal + i32.const 124 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $mutable-globals/external + i32.const 10 + i32.add + global.set $mutable-globals/external + global.get $mutable-globals/internal + i32.const 10 + i32.add + global.set $mutable-globals/internal + global.get $mutable-globals/external + i32.const 133 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $mutable-globals/internal + i32.const 134 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:mutable-globals + ) +) diff --git a/tests/compiler/features/mutable-globals.js b/tests/compiler/mutable-globals.js similarity index 75% rename from tests/compiler/features/mutable-globals.js rename to tests/compiler/mutable-globals.js index a9856f6aec..577cc96aed 100644 --- a/tests/compiler/features/mutable-globals.js +++ b/tests/compiler/mutable-globals.js @@ -1,11 +1,11 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports["mutable-globals"] = { external: new WebAssembly.Global({ value: "i32", mutable: true }, 123) }; -}; -exports.postStart = function(instance) { +} +export function postStart(instance) { // adds 10 to both const exports = instance.exports; if (exports.external.valueOf() != 133) throw Error("unexpected value"); if (exports.internal.valueOf() != 134) throw Error("unexpected value"); -}; +} diff --git a/tests/compiler/mutable-globals.json b/tests/compiler/mutable-globals.json new file mode 100644 index 0000000000..d89aa6d3b8 --- /dev/null +++ b/tests/compiler/mutable-globals.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--exportStart", "_start" + ] +} diff --git a/tests/compiler/mutable-globals.release.wat b/tests/compiler/mutable-globals.release.wat new file mode 100644 index 0000000000..5b8e61143c --- /dev/null +++ b/tests/compiler/mutable-globals.release.wat @@ -0,0 +1,75 @@ +(module + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func)) + (import "mutable-globals" "external" (global $mutable-globals/external (mut i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $mutable-globals/internal (mut i32) (i32.const 124)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00$\00\00\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s") + (export "external" (global $mutable-globals/external)) + (export "internal" (global $mutable-globals/internal)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + global.get $mutable-globals/external + i32.const 123 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $mutable-globals/internal + i32.const 124 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $mutable-globals/external + i32.const 10 + i32.add + global.set $mutable-globals/external + global.get $mutable-globals/internal + i32.const 10 + i32.add + global.set $mutable-globals/internal + global.get $mutable-globals/external + i32.const 133 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $mutable-globals/internal + i32.const 134 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/features/mutable-globals.ts b/tests/compiler/mutable-globals.ts similarity index 100% rename from tests/compiler/features/mutable-globals.ts rename to tests/compiler/mutable-globals.ts diff --git a/tests/compiler/named-export-default.debug.wat b/tests/compiler/named-export-default.debug.wat new file mode 100644 index 0000000000..0718672090 --- /dev/null +++ b/tests/compiler/named-export-default.debug.wat @@ -0,0 +1,15 @@ +(module + (type $0 (func (result i32))) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "default" (func $named-export-default/get3)) + (export "memory" (memory $0)) + (func $named-export-default/get3 (result i32) + i32.const 3 + return + ) +) diff --git a/tests/compiler/named-export-default.json b/tests/compiler/named-export-default.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/named-export-default.json +++ b/tests/compiler/named-export-default.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/named-export-default.optimized.wat b/tests/compiler/named-export-default.optimized.wat deleted file mode 100644 index 6be19a8140..0000000000 --- a/tests/compiler/named-export-default.optimized.wat +++ /dev/null @@ -1,9 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (memory $0 0) - (export "memory" (memory $0)) - (export "default" (func $named-export-default/get3)) - (func $named-export-default/get3 (result i32) - i32.const 3 - ) -) diff --git a/tests/compiler/named-export-default.release.wat b/tests/compiler/named-export-default.release.wat new file mode 100644 index 0000000000..75cbdd59bb --- /dev/null +++ b/tests/compiler/named-export-default.release.wat @@ -0,0 +1,9 @@ +(module + (type $0 (func (result i32))) + (memory $0 0) + (export "default" (func $named-export-default/get3)) + (export "memory" (memory $0)) + (func $named-export-default/get3 (result i32) + i32.const 3 + ) +) diff --git a/tests/compiler/named-export-default.untouched.wat b/tests/compiler/named-export-default.untouched.wat deleted file mode 100644 index f8c1bf48a8..0000000000 --- a/tests/compiler/named-export-default.untouched.wat +++ /dev/null @@ -1,10 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "default" (func $named-export-default/get3)) - (func $named-export-default/get3 (result i32) - i32.const 3 - ) -) diff --git a/tests/compiler/named-import-default.debug.wat b/tests/compiler/named-import-default.debug.wat new file mode 100644 index 0000000000..26fdb845dc --- /dev/null +++ b/tests/compiler/named-import-default.debug.wat @@ -0,0 +1,19 @@ +(module + (type $0 (func (result i32))) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "getValue" (func $named-import-default/getValue)) + (export "memory" (memory $0)) + (func $named-export-default/get3 (result i32) + i32.const 3 + return + ) + (func $named-import-default/getValue (result i32) + call $named-export-default/get3 + return + ) +) diff --git a/tests/compiler/named-import-default.json b/tests/compiler/named-import-default.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/named-import-default.json +++ b/tests/compiler/named-import-default.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/named-import-default.optimized.wat b/tests/compiler/named-import-default.optimized.wat deleted file mode 100644 index 53f55f6211..0000000000 --- a/tests/compiler/named-import-default.optimized.wat +++ /dev/null @@ -1,9 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (memory $0 0) - (export "memory" (memory $0)) - (export "getValue" (func $named-import-default/getValue)) - (func $named-import-default/getValue (result i32) - i32.const 3 - ) -) diff --git a/tests/compiler/named-import-default.release.wat b/tests/compiler/named-import-default.release.wat new file mode 100644 index 0000000000..dc65a2d1a7 --- /dev/null +++ b/tests/compiler/named-import-default.release.wat @@ -0,0 +1,9 @@ +(module + (type $0 (func (result i32))) + (memory $0 0) + (export "getValue" (func $named-import-default/getValue)) + (export "memory" (memory $0)) + (func $named-import-default/getValue (result i32) + i32.const 3 + ) +) diff --git a/tests/compiler/named-import-default.untouched.wat b/tests/compiler/named-import-default.untouched.wat deleted file mode 100644 index 1c33538d71..0000000000 --- a/tests/compiler/named-import-default.untouched.wat +++ /dev/null @@ -1,13 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "getValue" (func $named-import-default/getValue)) - (func $named-export-default/get3 (result i32) - i32.const 3 - ) - (func $named-import-default/getValue (result i32) - call $named-export-default/get3 - ) -) diff --git a/tests/compiler/namespace.debug.wat b/tests/compiler/namespace.debug.wat new file mode 100644 index 0000000000..854e0de5d3 --- /dev/null +++ b/tests/compiler/namespace.debug.wat @@ -0,0 +1,45 @@ +(module + (type $0 (func (result i32))) + (type $1 (func)) + (global $namespace/Outer.outerVar (mut i32) (i32.const 1)) + (global $namespace/Outer.Inner.aVar (mut i32) (i32.const 0)) + (global $namespace/Outer.Inner.anotherVar (mut i32) (i32.const 0)) + (global $namespace/Outer.Inner.evenAnotherVar (mut i32) (i32.const 0)) + (global $namespace/Outer.Inner.anEnum.ONE i32 (i32.const 1)) + (global $namespace/Outer.Inner.anEnum.TWO i32 (i32.const 2)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $namespace/Outer.Inner.aFunc (result i32) + global.get $namespace/Outer.Inner.aVar + return + ) + (func $namespace/Joined.anotherFunc (result i32) + i32.const 3 + return + ) + (func $start:namespace + global.get $namespace/Outer.Inner.aVar + global.set $namespace/Outer.Inner.anotherVar + global.get $namespace/Outer.outerVar + global.set $namespace/Outer.Inner.evenAnotherVar + global.get $namespace/Outer.Inner.aVar + drop + call $namespace/Outer.Inner.aFunc + drop + global.get $namespace/Outer.Inner.anEnum.ONE + drop + i32.const 2 + drop + call $namespace/Joined.anotherFunc + drop + ) + (func $~start + call $start:namespace + ) +) diff --git a/tests/compiler/namespace.json b/tests/compiler/namespace.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/namespace.json +++ b/tests/compiler/namespace.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/void.optimized.wat b/tests/compiler/namespace.release.wat similarity index 100% rename from tests/compiler/void.optimized.wat rename to tests/compiler/namespace.release.wat diff --git a/tests/compiler/namespace.untouched.wat b/tests/compiler/namespace.untouched.wat deleted file mode 100644 index 77b1e9c22b..0000000000 --- a/tests/compiler/namespace.untouched.wat +++ /dev/null @@ -1,39 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (memory $0 0) - (table $0 1 funcref) - (global $namespace/Outer.outerVar (mut i32) (i32.const 1)) - (global $namespace/Outer.Inner.aVar (mut i32) (i32.const 0)) - (global $namespace/Outer.Inner.anotherVar (mut i32) (i32.const 0)) - (global $namespace/Outer.Inner.evenAnotherVar (mut i32) (i32.const 0)) - (global $namespace/Outer.Inner.anEnum.ONE i32 (i32.const 1)) - (global $namespace/Outer.Inner.anEnum.TWO i32 (i32.const 2)) - (export "memory" (memory $0)) - (start $~start) - (func $namespace/Outer.Inner.aFunc (result i32) - global.get $namespace/Outer.Inner.aVar - ) - (func $namespace/Joined.anotherFunc (result i32) - i32.const 3 - ) - (func $start:namespace - global.get $namespace/Outer.Inner.aVar - global.set $namespace/Outer.Inner.anotherVar - global.get $namespace/Outer.outerVar - global.set $namespace/Outer.Inner.evenAnotherVar - global.get $namespace/Outer.Inner.aVar - drop - call $namespace/Outer.Inner.aFunc - drop - global.get $namespace/Outer.Inner.anEnum.ONE - drop - i32.const 2 - drop - call $namespace/Joined.anotherFunc - drop - ) - (func $~start - call $start:namespace - ) -) diff --git a/tests/compiler/new.debug.wat b/tests/compiler/new.debug.wat new file mode 100644 index 0000000000..f26b604fbe --- /dev/null +++ b/tests/compiler/new.debug.wat @@ -0,0 +1,2647 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $new/ref (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $new/gen (mut i32) (i32.const 0)) + (global $new/ref2 (mut i32) (i32.const 0)) + (global $new/genext (mut i32) (i32.const 0)) + (global $new/genext2 (mut i32) (i32.const 0)) + (global $new/genext3 (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 416)) + (global $~lib/memory/__data_end i32 (i32.const 452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33220)) + (global $~lib/memory/__heap_base i32 (i32.const 33220)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 416) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $new/Ref#get:ref (param $this i32) (result i32) + local.get $this + return + ) + (func $new/Gen#get:gen (param $this i32) (result i32) + local.get $this + return + ) + (func $new/ns.Ref#get:ref (param $this i32) (result i32) + local.get $this + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $new/ref + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/gen + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/ref2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $new/GenExt + block $new/ns.Ref + block $new/Gen + block $new/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $new/Ref $new/Gen $new/ns.Ref $new/GenExt $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:new + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33248 + i32.const 33296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $new/Ref#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $new/Gen#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $new/ns.Ref#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $new/GenExt#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $new/Gen#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:new + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $new/Ref#constructor + global.set $new/ref + i32.const 0 + call $new/Ref#constructor + global.set $new/ref + i32.const 0 + call $new/Ref#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $new/Ref#get:ref + global.set $new/ref + i32.const 0 + call $new/Gen#constructor + global.set $new/gen + i32.const 0 + call $new/Gen#constructor + global.set $new/gen + i32.const 0 + call $new/Gen#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $new/Gen#get:gen + global.set $new/gen + i32.const 0 + call $new/ns.Ref#constructor + global.set $new/ref2 + i32.const 0 + call $new/ns.Ref#constructor + global.set $new/ref2 + i32.const 0 + call $new/ns.Ref#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $new/ns.Ref#get:ref + global.set $new/ref2 + i32.const 0 + call $new/GenExt#constructor + global.set $new/genext + i32.const 0 + call $new/GenExt#constructor + global.set $new/genext2 + i32.const 0 + call $new/GenExt#constructor + global.set $new/genext3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/new.json b/tests/compiler/new.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/new.json +++ b/tests/compiler/new.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/new.optimized.wat b/tests/compiler/new.optimized.wat deleted file mode 100644 index dc79afe700..0000000000 --- a/tests/compiler/new.optimized.wat +++ /dev/null @@ -1,93 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (memory $0 0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - i32.const 16 - i32.add - local.tee $1 - memory.size - local.tee $3 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $3 - local.get $1 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $3 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $1 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - ) - (func $~start - i32.const 1024 - global.set $~lib/rt/stub/offset - i32.const 3 - call $~lib/rt/stub/__alloc - i32.const 3 - call $~lib/rt/stub/__alloc - i32.const 3 - call $~lib/rt/stub/__alloc - i32.const 4 - call $~lib/rt/stub/__alloc - i32.const 4 - call $~lib/rt/stub/__alloc - i32.const 5 - call $~lib/rt/stub/__alloc - i32.const 5 - call $~lib/rt/stub/__alloc - i32.const 5 - call $~lib/rt/stub/__alloc - ) -) diff --git a/tests/compiler/new.release.wat b/tests/compiler/new.release.wat new file mode 100644 index 0000000000..af7e02c097 --- /dev/null +++ b/tests/compiler/new.release.wat @@ -0,0 +1,1735 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $new/ref (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $new/gen (mut i32) (i32.const 0)) + (global $new/ref2 (mut i32) (i32.const 0)) + (global $new/genext (mut i32) (i32.const 0)) + (global $new/genext2 (mut i32) (i32.const 0)) + (global $new/genext3 (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34244)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1440) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $new/ref + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/gen + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/ref2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$116 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34244 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$116 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34256 + i32.const 0 + i32.store + i32.const 35824 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34256 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34256 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34256 + i32.const 35828 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34256 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34244 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34244 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34244 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $new/GenExt + block $new/ns.Ref + block $new/Gen + block $new/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $new/Ref $new/Gen $new/ns.Ref $new/GenExt $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34244 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $new/Ref#constructor + global.set $new/ref + call $new/Ref#constructor + global.set $new/ref + call $new/Ref#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.set $new/ref + i32.const 0 + call $new/Gen#constructor + global.set $new/gen + i32.const 0 + call $new/Gen#constructor + global.set $new/gen + i32.const 0 + call $new/Gen#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.set $new/gen + call $new/ns.Ref#constructor + global.set $new/ref2 + call $new/ns.Ref#constructor + global.set $new/ref2 + call $new/ns.Ref#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.set $new/ref2 + call $new/GenExt#constructor + global.set $new/genext + call $new/GenExt#constructor + global.set $new/genext2 + call $new/GenExt#constructor + global.set $new/genext3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $new/Ref#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $new/Gen#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $new/ns.Ref#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $new/GenExt#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $new/Gen#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/new.ts b/tests/compiler/new.ts index 87827c0da5..6950c27fb2 100644 --- a/tests/compiler/new.ts +++ b/tests/compiler/new.ts @@ -2,7 +2,7 @@ class Ref { get ref(): Ref { return this; } } -var ref: Ref; +var ref: Ref | null; ref = new Ref(); ref = new Ref; ref = new Ref().ref; @@ -11,7 +11,8 @@ class Gen { get gen(): Gen { return this; } } -var gen: Gen; +var gen: Gen | null; +gen = new Gen(); gen = new Gen(); gen = new Gen().gen; @@ -21,7 +22,14 @@ namespace ns { } } -var ref2: ns.Ref; +var ref2: ns.Ref | null; ref2 = new ns.Ref(); ref2 = new ns.Ref; ref2 = new ns.Ref().ref; + +class GenExt extends Gen { +} + +var genext = new GenExt(); +var genext2: GenExt = new GenExt(); +var genext3: Gen = new GenExt(); diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat deleted file mode 100644 index a43342cf59..0000000000 --- a/tests/compiler/new.untouched.wat +++ /dev/null @@ -1,303 +0,0 @@ -(module - (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 0) - (table $0 1 funcref) - (global $new/ref (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $new/gen (mut i32) (i32.const 0)) - (global $new/ref2 (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $new/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $new/Ref#get:ref (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - ) - (func $new/Gen#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $new/Gen#get:gen (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - ) - (func $new/ns.Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $new/ns.Ref#get:ref (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - ) - (func $start:new - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - call $new/Ref#constructor - local.set $0 - global.get $new/ref - call $~lib/rt/stub/__release - local.get $0 - global.set $new/ref - i32.const 0 - call $new/Ref#constructor - local.set $0 - global.get $new/ref - call $~lib/rt/stub/__release - local.get $0 - global.set $new/ref - i32.const 0 - call $new/Ref#constructor - local.tee $0 - call $new/Ref#get:ref - local.tee $1 - local.tee $2 - global.get $new/ref - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - global.set $new/ref - i32.const 0 - call $new/Gen#constructor - local.set $3 - global.get $new/gen - call $~lib/rt/stub/__release - local.get $3 - global.set $new/gen - i32.const 0 - call $new/Gen#constructor - local.tee $3 - call $new/Gen#get:gen - local.tee $2 - local.tee $4 - global.get $new/gen - local.tee $5 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - local.set $4 - local.get $5 - call $~lib/rt/stub/__release - end - local.get $4 - global.set $new/gen - i32.const 0 - call $new/ns.Ref#constructor - local.set $5 - global.get $new/ref2 - call $~lib/rt/stub/__release - local.get $5 - global.set $new/ref2 - i32.const 0 - call $new/ns.Ref#constructor - local.set $4 - global.get $new/ref2 - call $~lib/rt/stub/__release - local.get $4 - global.set $new/ref2 - i32.const 0 - call $new/ns.Ref#constructor - local.tee $4 - call $new/ns.Ref#get:ref - local.tee $5 - local.tee $6 - global.get $new/ref2 - local.tee $7 - i32.ne - if - local.get $6 - call $~lib/rt/stub/__retain - local.set $6 - local.get $7 - call $~lib/rt/stub/__release - end - local.get $6 - global.set $new/ref2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:new - ) -) diff --git a/tests/compiler/node_modules/README.md b/tests/compiler/node_modules/README.md new file mode 100644 index 0000000000..d0e880ec02 --- /dev/null +++ b/tests/compiler/node_modules/README.md @@ -0,0 +1 @@ +Test files for [tests/compiler/packages.ts](../packages.ts). diff --git a/tests/compiler/node_modules/_/index.ts b/tests/compiler/node_modules/_/index.ts new file mode 100644 index 0000000000..66227e4ffc --- /dev/null +++ b/tests/compiler/node_modules/_/index.ts @@ -0,0 +1,29 @@ +// node_modules/a/index.ts +import { a } from "a"; +assert(a == 1); +import { a as a2 } from "a/"; +assert(a2 == 1); +import { a as a3 } from "a/index"; +assert(a3 == 1); + +// node_modules/a/other.ts +import { a_other } from "a/other"; +assert(a_other == 11); + +// ../b/index.ts +import { b } from "b"; +assert(b == 2); +import { b as b2 } from "b/"; +assert(b2 == 2); +import { b as b3 } from "b/index"; +assert(b3 == 2); + +// ../b/other.ts +import { b_other } from "b/other"; +assert(b_other == 22); + +// ../b/other/index.ts +import { b_other_index } from "b/other/"; +assert(b_other_index == 222); +import { b_other_index as b_other_index2 } from "b/other/index"; +assert(b_other_index2 == 222); diff --git a/tests/compiler/node_modules/_/node_modules/a/index.ts b/tests/compiler/node_modules/_/node_modules/a/index.ts new file mode 100644 index 0000000000..2ee5714306 --- /dev/null +++ b/tests/compiler/node_modules/_/node_modules/a/index.ts @@ -0,0 +1,8 @@ +export const a = 1; + +// node_modules/c/index.ts +import { c } from "c"; +assert(c == 3); + +import { b } from "b"; +assert(b == 2); diff --git a/tests/compiler/node_modules/_/node_modules/a/node_modules/c/index.ts b/tests/compiler/node_modules/_/node_modules/a/node_modules/c/index.ts new file mode 100644 index 0000000000..180fd532fc --- /dev/null +++ b/tests/compiler/node_modules/_/node_modules/a/node_modules/c/index.ts @@ -0,0 +1,7 @@ +export const c = 3; + +import { a } from "a"; +assert(a == 1); + +import { b } from "b"; +assert(b == 2); diff --git a/tests/compiler/node_modules/_/node_modules/a/other.ts b/tests/compiler/node_modules/_/node_modules/a/other.ts new file mode 100644 index 0000000000..99e5c1bb7d --- /dev/null +++ b/tests/compiler/node_modules/_/node_modules/a/other.ts @@ -0,0 +1 @@ +export const a_other = 11; diff --git a/tests/compiler/node_modules/b/index.ts b/tests/compiler/node_modules/b/index.ts new file mode 100644 index 0000000000..202103085c --- /dev/null +++ b/tests/compiler/node_modules/b/index.ts @@ -0,0 +1 @@ +export const b = 2; diff --git a/tests/compiler/node_modules/b/other.ts b/tests/compiler/node_modules/b/other.ts new file mode 100644 index 0000000000..d00c40875b --- /dev/null +++ b/tests/compiler/node_modules/b/other.ts @@ -0,0 +1 @@ +export const b_other = 22; diff --git a/tests/compiler/node_modules/b/other/index.ts b/tests/compiler/node_modules/b/other/index.ts new file mode 100644 index 0000000000..20b07610a0 --- /dev/null +++ b/tests/compiler/node_modules/b/other/index.ts @@ -0,0 +1 @@ +export const b_other_index = 222; diff --git a/tests/compiler/node_modules/tsconfig.json b/tests/compiler/node_modules/tsconfig.json new file mode 100644 index 0000000000..d11208de23 --- /dev/null +++ b/tests/compiler/node_modules/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "moduleResolution": "node" + }, + "include": [ + "./**/*.ts" + ] +} \ No newline at end of file diff --git a/tests/compiler/nonnullable.json b/tests/compiler/nonnullable.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/nonnullable.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/nontrapping-f2i.debug.wat b/tests/compiler/nontrapping-f2i.debug.wat new file mode 100644 index 0000000000..77e5be8a5a --- /dev/null +++ b/tests/compiler/nontrapping-f2i.debug.wat @@ -0,0 +1,163 @@ +(module + (type $0 (func)) + (global $~lib/builtins/f32.MAX_VALUE f32 (f32.const 3402823466385288598117041e14)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) + (global $~lib/builtins/f32.NaN f32 (f32.const nan:0x400000)) + (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) + (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/builtins/u32.MIN_VALUE i32 (i32.const 0)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/builtins/u64.MIN_VALUE i64 (i64.const 0)) + (global $~lib/builtins/f64.MAX_VALUE f64 (f64.const 1797693134862315708145274e284)) + (global $~lib/builtins/f64.NaN f64 (f64.const nan:0x8000000000000)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $start:nontrapping-f2i + global.get $~lib/builtins/f32.MAX_VALUE + i32.trunc_sat_f32_s + global.get $~lib/builtins/i32.MAX_VALUE + i32.eq + drop + global.get $~lib/builtins/f32.MAX_VALUE + f32.neg + i32.trunc_sat_f32_s + global.get $~lib/builtins/i32.MIN_VALUE + i32.eq + drop + global.get $~lib/builtins/f32.NaN + i32.trunc_sat_f32_s + i32.const 0 + i32.eq + drop + global.get $~lib/builtins/f32.MAX_VALUE + i64.trunc_sat_f32_s + global.get $~lib/builtins/i64.MAX_VALUE + i64.eq + drop + global.get $~lib/builtins/f32.MAX_VALUE + f32.neg + i64.trunc_sat_f32_s + global.get $~lib/builtins/i64.MIN_VALUE + i64.eq + drop + global.get $~lib/builtins/f32.NaN + i64.trunc_sat_f32_s + i64.const 0 + i64.eq + drop + global.get $~lib/builtins/f32.MAX_VALUE + i32.trunc_sat_f32_u + global.get $~lib/builtins/u32.MAX_VALUE + i32.eq + drop + global.get $~lib/builtins/f32.MAX_VALUE + f32.neg + i32.trunc_sat_f32_u + global.get $~lib/builtins/u32.MIN_VALUE + i32.eq + drop + global.get $~lib/builtins/f32.NaN + i32.trunc_sat_f32_u + i32.const 0 + i32.eq + drop + global.get $~lib/builtins/f32.MAX_VALUE + i64.trunc_sat_f32_u + global.get $~lib/builtins/u64.MAX_VALUE + i64.eq + drop + global.get $~lib/builtins/f32.MAX_VALUE + f32.neg + i64.trunc_sat_f32_u + global.get $~lib/builtins/u64.MIN_VALUE + i64.eq + drop + global.get $~lib/builtins/f32.NaN + i64.trunc_sat_f32_u + i64.const 0 + i64.eq + drop + global.get $~lib/builtins/f64.MAX_VALUE + i32.trunc_sat_f64_s + global.get $~lib/builtins/i32.MAX_VALUE + i32.eq + drop + global.get $~lib/builtins/f64.MAX_VALUE + f64.neg + i32.trunc_sat_f64_s + global.get $~lib/builtins/i32.MIN_VALUE + i32.eq + drop + global.get $~lib/builtins/f64.NaN + i32.trunc_sat_f64_s + i32.const 0 + i32.eq + drop + global.get $~lib/builtins/f64.MAX_VALUE + i64.trunc_sat_f64_s + global.get $~lib/builtins/i64.MAX_VALUE + i64.eq + drop + global.get $~lib/builtins/f64.MAX_VALUE + f64.neg + i64.trunc_sat_f64_s + global.get $~lib/builtins/i64.MIN_VALUE + i64.eq + drop + global.get $~lib/builtins/f64.NaN + i64.trunc_sat_f64_s + i64.const 0 + i64.eq + drop + global.get $~lib/builtins/f64.MAX_VALUE + i32.trunc_sat_f64_u + global.get $~lib/builtins/u32.MAX_VALUE + i32.eq + drop + global.get $~lib/builtins/f64.MAX_VALUE + f64.neg + i32.trunc_sat_f64_u + global.get $~lib/builtins/u32.MIN_VALUE + i32.eq + drop + global.get $~lib/builtins/f64.NaN + i32.trunc_sat_f64_u + i32.const 0 + i32.eq + drop + global.get $~lib/builtins/f64.MAX_VALUE + i64.trunc_sat_f64_u + global.get $~lib/builtins/u64.MAX_VALUE + i64.eq + drop + global.get $~lib/builtins/f64.MAX_VALUE + f64.neg + i64.trunc_sat_f64_u + global.get $~lib/builtins/u64.MIN_VALUE + i64.eq + drop + global.get $~lib/builtins/f64.NaN + i64.trunc_sat_f64_u + i64.const 0 + i64.eq + drop + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:nontrapping-f2i + ) +) diff --git a/tests/compiler/nontrapping-f2i.json b/tests/compiler/nontrapping-f2i.json new file mode 100644 index 0000000000..d89aa6d3b8 --- /dev/null +++ b/tests/compiler/nontrapping-f2i.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--exportStart", "_start" + ] +} diff --git a/tests/compiler/nontrapping-f2i.release.wat b/tests/compiler/nontrapping-f2i.release.wat new file mode 100644 index 0000000000..153611c85e --- /dev/null +++ b/tests/compiler/nontrapping-f2i.release.wat @@ -0,0 +1,8 @@ +(module + (type $0 (func)) + (memory $0 0) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~start + ) +) diff --git a/tests/compiler/nontrapping-f2i.ts b/tests/compiler/nontrapping-f2i.ts new file mode 100644 index 0000000000..d6b6b496ec --- /dev/null +++ b/tests/compiler/nontrapping-f2i.ts @@ -0,0 +1,39 @@ +// f32->i32 +assert(f32.MAX_VALUE == i32.MAX_VALUE); +assert(-f32.MAX_VALUE == i32.MIN_VALUE); +assert(f32.NaN == 0); + +// f32->i64 +assert(f32.MAX_VALUE == i64.MAX_VALUE); +assert(-f32.MAX_VALUE == i64.MIN_VALUE); +assert(f32.NaN == 0); + +// f32->u32 +assert(f32.MAX_VALUE == u32.MAX_VALUE); +assert(-f32.MAX_VALUE == u32.MIN_VALUE); +assert(f32.NaN == 0); + +// f32->u64 +assert(f32.MAX_VALUE == u64.MAX_VALUE); +assert(-f32.MAX_VALUE == u64.MIN_VALUE); +assert(f32.NaN == 0); + +// f64->i32 +assert(f64.MAX_VALUE == i32.MAX_VALUE); +assert(-f64.MAX_VALUE == i32.MIN_VALUE); +assert(f64.NaN == 0); + +// f64->i64 +assert(f64.MAX_VALUE == i64.MAX_VALUE); +assert(-f64.MAX_VALUE == i64.MIN_VALUE); +assert(f64.NaN == 0); + +// f64->u32 +assert(f64.MAX_VALUE == u32.MAX_VALUE); +assert(-f64.MAX_VALUE == u32.MIN_VALUE); +assert(f64.NaN == 0); + +// f64->u64 +assert(f64.MAX_VALUE == u64.MAX_VALUE); +assert(-f64.MAX_VALUE == u64.MIN_VALUE); +assert(f64.NaN == 0); diff --git a/tests/compiler/nullable.json b/tests/compiler/nullable.json index ae5a982120..fdef0a1a3b 100644 --- a/tests/compiler/nullable.json +++ b/tests/compiler/nullable.json @@ -1,9 +1,8 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "TS2322: Type 'nullable/Example | null' is not assignable to type 'nullable/Example'.", "EOF" ] -} \ No newline at end of file +} diff --git a/tests/compiler/number-convert.debug.wat b/tests/compiler/number-convert.debug.wat new file mode 100644 index 0000000000..b555a169ff --- /dev/null +++ b/tests/compiler/number-convert.debug.wat @@ -0,0 +1,157 @@ +(module + (type $0 (func)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:number-convert + i32.const 1 + f32.convert_i32_u + f32.const 1 + f32.eq + drop + i32.const 255 + f32.convert_i32_u + f32.const 255 + f32.eq + drop + i32.const 256 + i32.const 255 + i32.and + f32.convert_i32_u + f32.const 0 + f32.eq + drop + i32.const 257 + i32.const 255 + i32.and + f32.convert_i32_u + f32.const 1 + f32.eq + drop + i32.const 1 + f32.convert_i32_s + f32.const 1 + f32.eq + drop + i32.const 255 + i32.extend8_s + f32.convert_i32_s + f32.const -1 + f32.eq + drop + i32.const 256 + i32.extend8_s + f32.convert_i32_s + f32.const 0 + f32.eq + drop + i32.const 257 + i32.extend8_s + f32.convert_i32_s + f32.const 1 + f32.eq + drop + i32.const 1 + f32.convert_i32_u + f32.const 1 + f32.eq + drop + i32.const 65535 + f32.convert_i32_u + f32.const 65535 + f32.eq + drop + i32.const 65536 + i32.const 65535 + i32.and + f32.convert_i32_u + f32.const 0 + f32.eq + drop + i32.const 65537 + i32.const 65535 + i32.and + f32.convert_i32_u + f32.const 1 + f32.eq + drop + i32.const 1 + f32.convert_i32_s + f32.const 1 + f32.eq + drop + i32.const 65535 + i32.extend16_s + f32.convert_i32_s + f32.const -1 + f32.eq + drop + i32.const 65536 + i32.extend16_s + f32.convert_i32_s + f32.const 0 + f32.eq + drop + i32.const 65537 + i32.extend16_s + f32.convert_i32_s + f32.const 1 + f32.eq + drop + i32.const 1 + f64.convert_i32_u + f64.const 1 + f64.eq + drop + i32.const 255 + f64.convert_i32_u + f64.const 255 + f64.eq + drop + i32.const 256 + i32.const 255 + i32.and + f64.convert_i32_u + f64.const 0 + f64.eq + drop + i32.const 257 + i32.const 255 + i32.and + f64.convert_i32_u + f64.const 1 + f64.eq + drop + i32.const 1 + f64.convert_i32_s + f64.const 1 + f64.eq + drop + i32.const 255 + i32.extend8_s + f64.convert_i32_s + f64.const -1 + f64.eq + drop + i32.const 256 + i32.extend8_s + f64.convert_i32_s + f64.const 0 + f64.eq + drop + i32.const 257 + i32.extend8_s + f64.convert_i32_s + f64.const 1 + f64.eq + drop + ) + (func $~start + call $start:number-convert + ) +) diff --git a/tests/compiler/number-convert.json b/tests/compiler/number-convert.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/number-convert.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/wasi/snapshot_preview1.optimized.wat b/tests/compiler/number-convert.release.wat similarity index 100% rename from tests/compiler/wasi/snapshot_preview1.optimized.wat rename to tests/compiler/number-convert.release.wat diff --git a/tests/compiler/number-convert.ts b/tests/compiler/number-convert.ts new file mode 100644 index 0000000000..5eb4bc47f1 --- /dev/null +++ b/tests/compiler/number-convert.ts @@ -0,0 +1,29 @@ +assert((1) == 1); +assert((255) == 255); +assert((256) == 0); +assert((257) == 1); + +assert((1) == 1); +assert((255) == -1); +assert((256) == 0); +assert((257) == 1); + +assert((1) == 1); +assert((65535) == 65535); +assert((65536) == 0); +assert((65537) == 1); + +assert((1) == 1); +assert((65535) == -1); +assert((65536) == 0); +assert((65537) == 1); + +assert((1) == 1); +assert((255) == 255); +assert((256) == 0); +assert((257) == 1); + +assert((1) == 1); +assert((255) == -1); +assert((256) == 0); +assert((257) == 1); diff --git a/tests/compiler/number-warn.json b/tests/compiler/number-warn.json new file mode 100644 index 0000000000..d823d836bf --- /dev/null +++ b/tests/compiler/number-warn.json @@ -0,0 +1,18 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "AS907: 'NaN' does not compare equal to any other value including itself. Use isNaN(x) instead.", + "AS907: 'NaN' does not compare equal to any other value including itself. Use isNaN(x) instead.", + "AS907: 'NaN' does not compare equal to any other value including itself. Use isNaN(x) instead.", + "AS907: 'NaN' does not compare equal to any other value including itself. Use isNaN(x) instead.", + "AS907: 'NaN' does not compare equal to any other value including itself. Use isNaN(x) instead.", + "AS907: 'NaN' does not compare equal to any other value including itself. Use isNaN(x) instead.", + "AS908: Comparison with -0.0 is sign insensitive. Use Object.is(x, -0.0) if the sign matters.", + "AS908: Comparison with -0.0 is sign insensitive. Use Object.is(x, -0.0) if the sign matters.", + "AS908: Comparison with -0.0 is sign insensitive. Use Object.is(x, -0.0) if the sign matters.", + "AS908: Comparison with -0.0 is sign insensitive. Use Object.is(x, -0.0) if the sign matters.", + "AS908: Comparison with -0.0 is sign insensitive. Use Object.is(x, -0.0) if the sign matters.", + "AS908: Comparison with -0.0 is sign insensitive. Use Object.is(x, -0.0) if the sign matters." + ] +} diff --git a/tests/compiler/number-warn.ts b/tests/compiler/number-warn.ts new file mode 100644 index 0000000000..4de4bc8205 --- /dev/null +++ b/tests/compiler/number-warn.ts @@ -0,0 +1,20 @@ + +// Should produce warnings + +// always false +(!(1.0 == NaN)); +(!(NaN == F32.NaN)); +(!(F64.NaN == 1.0)); + +// always true +(1.0 != NaN); +(NaN != F32.NaN); +(f64.NaN != 1.0); + +// always true +(+.0 == -.0); +(-.0 != -.0); +(-.0 == +.0); +(f32(+.0) == f32(-.0)); +(f32(-.0) != f32(-.0)); +(f32(-.0) == f32(+.0)); diff --git a/tests/compiler/number.debug.wat b/tests/compiler/number.debug.wat new file mode 100644 index 0000000000..a6dc854df5 --- /dev/null +++ b/tests/compiler/number.debug.wat @@ -0,0 +1,5555 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param f64) (result i32))) + (type $7 (func (param f32) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i64 i32))) + (type $12 (func (param i64 i32) (result i32))) + (type $13 (func (param i32 i64 i32 i32))) + (type $14 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $15 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $16 (func (param i32 i32 i32) (result i32))) + (type $17 (func (param i32 f64 i32) (result i32))) + (type $18 (func (param f64 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $number/a (mut i32) (i32.const 1)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/builtins/f32.NaN f32 (f32.const nan:0x400000)) + (global $~lib/number/F32.NaN f32 (f32.const nan:0x400000)) + (global $~lib/builtins/f32.MIN_SAFE_INTEGER f32 (f32.const -16777215)) + (global $~lib/builtins/f32.MAX_SAFE_INTEGER f32 (f32.const 16777215)) + (global $~lib/builtins/f32.EPSILON f32 (f32.const 1.1920928955078125e-07)) + (global $~lib/builtins/f64.NaN f64 (f64.const nan:0x8000000000000)) + (global $~lib/number/F64.NaN f64 (f64.const nan:0x8000000000000)) + (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) + (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) + (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) + (global $~lib/rt/__rtti_base i32 (i32.const 3632)) + (global $~lib/memory/__data_end i32 (i32.const 3652)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36420)) + (global $~lib/memory/__heap_base i32 (i32.const 36420)) + (memory $0 1) + (data $0 (i32.const 12) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $2 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 636) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $12 (i32.const 1036) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2092) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $14 (i32.const 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2220) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2268) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data $17 (i32.const 2300) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data $18 (i32.const 2332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2488) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2112 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2112 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/itoa32 + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) + (local $one_exp i32) + (local $one_frc i64) + (local $mask i64) + (local $wp_w_frc i64) + (local $p1 i32) + (local $p2 i64) + (local $kappa i32) + (local $len i32) + (local $d i32) + (local $16 i32) + (local $17 i32) + (local $tmp i64) + (local $buffer|19 i32) + (local $len|20 i32) + (local $delta|21 i64) + (local $rest i64) + (local $ten_kappa i64) + (local $wp_w i64) + (local $lastp i32) + (local $digit i32) + (local $d|27 i64) + (local $28 i32) + (local $buffer|29 i32) + (local $len|30 i32) + (local $delta|31 i64) + (local $rest|32 i64) + (local $ten_kappa|33 i64) + (local $wp_w|34 i64) + (local $lastp|35 i32) + (local $digit|36 i32) + i32.const 0 + local.get $mp_exp + i32.sub + local.set $one_exp + i64.const 1 + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $one_frc + local.get $one_frc + i64.const 1 + i64.sub + local.set $mask + local.get $mp_frc + local.get $w_frc + i64.sub + local.set $wp_w_frc + local.get $mp_frc + local.get $one_exp + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $p1 + local.get $mp_frc + local.get $mask + i64.and + local.set $p2 + local.get $p1 + call $~lib/util/number/decimalCount32 + local.set $kappa + local.get $sign + local.set $len + loop $while-continue|0 + local.get $kappa + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $kappa + local.set $16 + local.get $16 + i32.const 10 + i32.eq + br_if $case0|1 + local.get $16 + i32.const 9 + i32.eq + br_if $case1|1 + local.get $16 + i32.const 8 + i32.eq + br_if $case2|1 + local.get $16 + i32.const 7 + i32.eq + br_if $case3|1 + local.get $16 + i32.const 6 + i32.eq + br_if $case4|1 + local.get $16 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $16 + i32.const 4 + i32.eq + br_if $case6|1 + local.get $16 + i32.const 3 + i32.eq + br_if $case7|1 + local.get $16 + i32.const 2 + i32.eq + br_if $case8|1 + local.get $16 + i32.const 1 + i32.eq + br_if $case9|1 + br $case10|1 + end + local.get $p1 + i32.const 1000000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100 + i32.div_u + local.set $d + local.get $p1 + i32.const 100 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10 + i32.div_u + local.set $d + local.get $p1 + i32.const 10 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + local.set $d + i32.const 0 + local.set $p1 + br $break|1 + end + i32.const 0 + local.set $d + br $break|1 + end + local.get $d + local.get $len + i32.or + if + local.get $buffer + local.get $len + local.tee $17 + i32.const 1 + i32.add + local.set $len + local.get $17 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p1 + i64.extend_i32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.get $p2 + i64.add + local.set $tmp + local.get $tmp + local.get $delta + i64.le_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $buffer + local.set $buffer|19 + local.get $len + local.set $len|20 + local.get $delta + local.set $delta|21 + local.get $tmp + local.set $rest + i32.const 3360 + local.get $kappa + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $ten_kappa + local.get $wp_w_frc + local.set $wp_w + local.get $buffer|19 + local.get $len|20 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp + local.get $lastp + i32.load16_u + local.set $digit + loop $while-continue|3 + local.get $rest + local.get $wp_w + i64.lt_u + if (result i32) + local.get $delta|21 + local.get $rest + i64.sub + local.get $ten_kappa + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w + local.get $rest + i64.sub + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit + i32.const 1 + i32.sub + local.set $digit + local.get $rest + local.get $ten_kappa + i64.add + local.set $rest + br $while-continue|3 + end + end + local.get $lastp + local.get $digit + i32.store16 + local.get $len + return + end + br $while-continue|0 + end + end + loop $while-continue|4 + i32.const 1 + if + local.get $p2 + i64.const 10 + i64.mul + local.set $p2 + local.get $delta + i64.const 10 + i64.mul + local.set $delta + local.get $p2 + local.get $one_exp + i64.extend_i32_s + i64.shr_u + local.set $d|27 + local.get $d|27 + local.get $len + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $buffer + local.get $len + local.tee $28 + i32.const 1 + i32.add + local.set $len + local.get $28 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d|27 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $p2 + local.get $mask + i64.and + local.set $p2 + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p2 + local.get $delta + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $wp_w_frc + i32.const 3360 + i32.const 0 + local.get $kappa + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $wp_w_frc + local.get $buffer + local.set $buffer|29 + local.get $len + local.set $len|30 + local.get $delta + local.set $delta|31 + local.get $p2 + local.set $rest|32 + local.get $one_frc + local.set $ten_kappa|33 + local.get $wp_w_frc + local.set $wp_w|34 + local.get $buffer|29 + local.get $len|30 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp|35 + local.get $lastp|35 + i32.load16_u + local.set $digit|36 + loop $while-continue|6 + local.get $rest|32 + local.get $wp_w|34 + i64.lt_u + if (result i32) + local.get $delta|31 + local.get $rest|32 + i64.sub + local.get $ten_kappa|33 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w|34 + local.get $rest|32 + i64.sub + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit|36 + i32.const 1 + i32.sub + local.set $digit|36 + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.set $rest|32 + br $while-continue|6 + end + end + local.get $lastp|35 + local.get $digit|36 + i32.store16 + local.get $len + return + end + br $while-continue|4 + end + end + unreachable + ) + (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) + (local $kk i32) + (local $i i32) + (local $ptr i32) + (local $offset i32) + (local $i|7 i32) + (local $buffer|8 i32) + (local $k|9 i32) + (local $sign i32) + (local $decimals i32) + (local $buffer|12 i32) + (local $num i32) + (local $offset|14 i32) + (local $len i32) + (local $buffer|16 i32) + (local $k|17 i32) + (local $sign|18 i32) + (local $decimals|19 i32) + (local $buffer|20 i32) + (local $num|21 i32) + (local $offset|22 i32) + local.get $k + i32.eqz + if + local.get $buffer + local.get $length + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $length + i32.const 2 + i32.add + return + end + local.get $length + local.get $k + i32.add + local.set $kk + local.get $length + local.get $kk + i32.le_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $length + local.set $i + loop $for-loop|0 + local.get $i + local.get $kk + i32.lt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $kk + i32.const 2 + i32.add + return + else + local.get $kk + i32.const 0 + i32.gt_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $ptr + i32.const 2 + i32.add + local.get $ptr + i32.const 0 + local.get $k + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + local.get $length + i32.const 1 + i32.add + return + else + i32.const -6 + local.get $kk + i32.lt_s + if (result i32) + local.get $kk + i32.const 0 + i32.le_s + else + i32.const 0 + end + if + i32.const 2 + local.get $kk + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $buffer + local.get $length + i32.const 1 + i32.shl + memory.copy + local.get $buffer + i32.const 48 + i32.const 46 + i32.const 16 + i32.shl + i32.or + i32.store + i32.const 2 + local.set $i|7 + loop $for-loop|1 + local.get $i|7 + local.get $offset + i32.lt_s + if + local.get $buffer + local.get $i|7 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i|7 + i32.const 1 + i32.add + local.set $i|7 + br $for-loop|1 + end + end + local.get $length + local.get $offset + i32.add + return + else + local.get $length + i32.const 1 + i32.eq + if + local.get $buffer + i32.const 101 + i32.store16 offset=2 + block $~lib/util/number/genExponent|inlined.0 (result i32) + local.get $buffer + i32.const 4 + i32.add + local.set $buffer|8 + local.get $kk + i32.const 1 + i32.sub + local.set $k|9 + local.get $k|9 + i32.const 0 + i32.lt_s + local.set $sign + local.get $sign + if + i32.const 0 + local.get $k|9 + i32.sub + local.set $k|9 + end + local.get $k|9 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals + local.get $buffer|8 + local.set $buffer|12 + local.get $k|9 + local.set $num + local.get $decimals + local.set $offset|14 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|12 + local.get $num + local.get $offset|14 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|8 + i32.const 45 + i32.const 43 + local.get $sign + select + i32.store16 + local.get $decimals + br $~lib/util/number/genExponent|inlined.0 + end + local.set $length + local.get $length + i32.const 2 + i32.add + return + else + local.get $length + i32.const 1 + i32.shl + local.set $len + local.get $buffer + i32.const 4 + i32.add + local.get $buffer + i32.const 2 + i32.add + local.get $len + i32.const 2 + i32.sub + memory.copy + local.get $buffer + i32.const 46 + i32.store16 offset=2 + local.get $buffer + local.get $len + i32.add + i32.const 101 + i32.store16 offset=2 + local.get $length + block $~lib/util/number/genExponent|inlined.1 (result i32) + local.get $buffer + local.get $len + i32.add + i32.const 4 + i32.add + local.set $buffer|16 + local.get $kk + i32.const 1 + i32.sub + local.set $k|17 + local.get $k|17 + i32.const 0 + i32.lt_s + local.set $sign|18 + local.get $sign|18 + if + i32.const 0 + local.get $k|17 + i32.sub + local.set $k|17 + end + local.get $k|17 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals|19 + local.get $buffer|16 + local.set $buffer|20 + local.get $k|17 + local.set $num|21 + local.get $decimals|19 + local.set $offset|22 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|20 + local.get $num|21 + local.get $offset|22 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|16 + i32.const 45 + i32.const 43 + local.get $sign|18 + select + i32.store16 + local.get $decimals|19 + br $~lib/util/number/genExponent|inlined.1 + end + i32.add + local.set $length + local.get $length + i32.const 2 + i32.add + return + end + unreachable + end + unreachable + end + unreachable + end + unreachable + ) + (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) + (local $sign i32) + (local $value|4 f64) + (local $buffer|5 i32) + (local $sign|6 i32) + (local $isSingle|7 i32) + (local $frc i64) + (local $exp i32) + (local $uv i32) + (local $sid i32) + (local $uv|12 i64) + (local $sid|13 i64) + (local $f i64) + (local $e i32) + (local $isSingle|16 i32) + (local $frc|17 i64) + (local $exp|18 i32) + (local $off i32) + (local $m i32) + (local $minExp i32) + (local $dk f64) + (local $k i32) + (local $index i32) + (local $off|25 i32) + (local $frc_pow i64) + (local $exp_pow i32) + (local $u i64) + (local $v i64) + (local $u0 i64) + (local $v0 i64) + (local $u1 i64) + (local $v1 i64) + (local $l i64) + (local $t i64) + (local $w i64) + (local $w_frc i64) + (local $e1 i32) + (local $e2 i32) + (local $w_exp i32) + (local $u|41 i64) + (local $v|42 i64) + (local $u0|43 i64) + (local $v0|44 i64) + (local $u1|45 i64) + (local $v1|46 i64) + (local $l|47 i64) + (local $t|48 i64) + (local $w|49 i64) + (local $wp_frc i64) + (local $e1|51 i32) + (local $e2|52 i32) + (local $wp_exp i32) + (local $u|54 i64) + (local $v|55 i64) + (local $u0|56 i64) + (local $v0|57 i64) + (local $u1|58 i64) + (local $v1|59 i64) + (local $l|60 i64) + (local $t|61 i64) + (local $w|62 i64) + (local $wm_frc i64) + (local $delta i64) + (local $len i32) + local.get $value + f64.const 0 + f64.lt + local.set $sign + local.get $sign + if + local.get $value + f64.neg + local.set $value + local.get $buffer + i32.const 45 + i32.store16 + end + block $~lib/util/number/grisu2|inlined.0 (result i32) + local.get $value + local.set $value|4 + local.get $buffer + local.set $buffer|5 + local.get $sign + local.set $sign|6 + local.get $isSingle + local.set $isSingle|7 + local.get $isSingle|7 + if + local.get $value|4 + f32.demote_f64 + i32.reinterpret_f32 + local.set $uv + local.get $uv + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.set $exp + local.get $uv + i32.const 8388607 + i32.and + local.set $sid + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + local.get $sid + i64.extend_i32_u + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 127 + i32.const 23 + i32.add + i32.sub + local.set $exp + else + local.get $value|4 + i64.reinterpret_f64 + local.set $uv|12 + local.get $uv|12 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $exp + local.get $uv|12 + i64.const 4503599627370495 + i64.and + local.set $sid|13 + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $sid|13 + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 1023 + i32.const 52 + i32.add + i32.sub + local.set $exp + end + local.get $frc + local.set $f + local.get $exp + local.set $e + local.get $isSingle|7 + local.set $isSingle|16 + local.get $f + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.set $frc|17 + local.get $e + i32.const 1 + i32.sub + local.set $exp|18 + local.get $frc|17 + i64.clz + i32.wrap_i64 + local.set $off + local.get $frc|17 + local.get $off + i64.extend_i32_s + i64.shl + local.set $frc|17 + local.get $exp|18 + local.get $off + i32.sub + local.set $exp|18 + i32.const 1 + local.get $f + local.get $isSingle|16 + if (result i64) + i64.const 8388608 + else + i64.const 4503599627370496 + end + i64.eq + i32.add + local.set $m + local.get $frc|17 + global.set $~lib/util/number/_frc_plus + local.get $f + local.get $m + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $e + local.get $m + i32.sub + local.get $exp|18 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $exp|18 + global.set $~lib/util/number/_exp + global.get $~lib/util/number/_exp + local.set $minExp + i32.const -61 + local.get $minExp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.set $dk + local.get $dk + i32.trunc_sat_f64_s + local.set $k + local.get $k + local.get $k + f64.convert_i32_s + local.get $dk + f64.ne + i32.add + local.set $k + local.get $k + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.set $index + i32.const 348 + local.get $index + i32.const 3 + i32.shl + i32.sub + global.set $~lib/util/number/_K + i32.const 2488 + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 3184 + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $frc + i64.clz + i32.wrap_i64 + local.set $off|25 + local.get $frc + local.get $off|25 + i64.extend_i32_s + i64.shl + local.set $frc + local.get $exp + local.get $off|25 + i32.sub + local.set $exp + global.get $~lib/util/number/_frc_pow + local.set $frc_pow + global.get $~lib/util/number/_exp_pow + local.set $exp_pow + block $~lib/util/number/umul64f|inlined.0 (result i64) + local.get $frc + local.set $u + local.get $frc_pow + local.set $v + local.get $u + i64.const 4294967295 + i64.and + local.set $u0 + local.get $v + i64.const 4294967295 + i64.and + local.set $v0 + local.get $u + i64.const 32 + i64.shr_u + local.set $u1 + local.get $v + i64.const 32 + i64.shr_u + local.set $v1 + local.get $u0 + local.get $v0 + i64.mul + local.set $l + local.get $u1 + local.get $v0 + i64.mul + local.get $l + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $u0 + local.get $v1 + i64.mul + local.get $t + i64.const 4294967295 + i64.and + i64.add + local.set $w + local.get $w + i64.const 2147483647 + i64.add + local.set $w + local.get $t + i64.const 32 + i64.shr_u + local.set $t + local.get $w + i64.const 32 + i64.shr_u + local.set $w + local.get $u1 + local.get $v1 + i64.mul + local.get $t + i64.add + local.get $w + i64.add + br $~lib/util/number/umul64f|inlined.0 + end + local.set $w_frc + block $~lib/util/number/umul64e|inlined.0 (result i32) + local.get $exp + local.set $e1 + local.get $exp_pow + local.set $e2 + local.get $e1 + local.get $e2 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.0 + end + local.set $w_exp + block $~lib/util/number/umul64f|inlined.1 (result i64) + global.get $~lib/util/number/_frc_plus + local.set $u|41 + local.get $frc_pow + local.set $v|42 + local.get $u|41 + i64.const 4294967295 + i64.and + local.set $u0|43 + local.get $v|42 + i64.const 4294967295 + i64.and + local.set $v0|44 + local.get $u|41 + i64.const 32 + i64.shr_u + local.set $u1|45 + local.get $v|42 + i64.const 32 + i64.shr_u + local.set $v1|46 + local.get $u0|43 + local.get $v0|44 + i64.mul + local.set $l|47 + local.get $u1|45 + local.get $v0|44 + i64.mul + local.get $l|47 + i64.const 32 + i64.shr_u + i64.add + local.set $t|48 + local.get $u0|43 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.const 4294967295 + i64.and + i64.add + local.set $w|49 + local.get $w|49 + i64.const 2147483647 + i64.add + local.set $w|49 + local.get $t|48 + i64.const 32 + i64.shr_u + local.set $t|48 + local.get $w|49 + i64.const 32 + i64.shr_u + local.set $w|49 + local.get $u1|45 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.add + local.get $w|49 + i64.add + br $~lib/util/number/umul64f|inlined.1 + end + i64.const 1 + i64.sub + local.set $wp_frc + block $~lib/util/number/umul64e|inlined.1 (result i32) + global.get $~lib/util/number/_exp + local.set $e1|51 + local.get $exp_pow + local.set $e2|52 + local.get $e1|51 + local.get $e2|52 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.1 + end + local.set $wp_exp + block $~lib/util/number/umul64f|inlined.2 (result i64) + global.get $~lib/util/number/_frc_minus + local.set $u|54 + local.get $frc_pow + local.set $v|55 + local.get $u|54 + i64.const 4294967295 + i64.and + local.set $u0|56 + local.get $v|55 + i64.const 4294967295 + i64.and + local.set $v0|57 + local.get $u|54 + i64.const 32 + i64.shr_u + local.set $u1|58 + local.get $v|55 + i64.const 32 + i64.shr_u + local.set $v1|59 + local.get $u0|56 + local.get $v0|57 + i64.mul + local.set $l|60 + local.get $u1|58 + local.get $v0|57 + i64.mul + local.get $l|60 + i64.const 32 + i64.shr_u + i64.add + local.set $t|61 + local.get $u0|56 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.const 4294967295 + i64.and + i64.add + local.set $w|62 + local.get $w|62 + i64.const 2147483647 + i64.add + local.set $w|62 + local.get $t|61 + i64.const 32 + i64.shr_u + local.set $t|61 + local.get $w|62 + i64.const 32 + i64.shr_u + local.set $w|62 + local.get $u1|58 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.add + local.get $w|62 + i64.add + br $~lib/util/number/umul64f|inlined.2 + end + i64.const 1 + i64.add + local.set $wm_frc + local.get $wp_frc + local.get $wm_frc + i64.sub + local.set $delta + local.get $buffer|5 + local.get $w_frc + local.get $w_exp + local.get $wp_frc + local.get $wp_exp + local.get $delta + local.get $sign|6 + call $~lib/util/number/genDigits + br $~lib/util/number/grisu2|inlined.0 + end + local.set $len + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.get $len + local.get $sign + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.set $len + local.get $len + local.get $sign + i32.add + return + ) + (func $~lib/number/F64#toString (param $this f64) (param $radix i32) (result i32) + local.get $this + call $~lib/util/number/dtoa + return + ) + (func $~lib/number/Bool#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + if (result i32) + i32.const 3584 + else + i32.const 3616 + end + return + ) + (func $~lib/number/F32.isSafeInteger (param $value f32) (result i32) + local.get $value + f32.abs + global.get $~lib/builtins/f32.MAX_SAFE_INTEGER + f32.le + if (result i32) + local.get $value + f32.trunc + local.get $value + f32.eq + else + i32.const 0 + end + return + ) + (func $~lib/number/F32.isInteger (param $value f32) (result i32) + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $value + f32.trunc + local.get $value + f32.eq + else + i32.const 0 + end + return + ) + (func $~lib/number/F64.isSafeInteger (param $value f64) (result i32) + local.get $value + f64.abs + global.get $~lib/builtins/f64.MAX_SAFE_INTEGER + f64.le + if (result i32) + local.get $value + f64.trunc + local.get $value + f64.eq + else + i32.const 0 + end + return + ) + (func $~lib/number/F64.isInteger (param $value f64) (result i32) + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $value + f64.trunc + local.get $value + f64.eq + else + i32.const 0 + end + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 448 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1056 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2112 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) + (func $~start + call $start:number + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 36448 + i32.const 36496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:number + (local $0 i32) + (local $1 i32) + (local $2 f32) + (local $3 f64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $number/a + i32.const 10 + call $~lib/number/I32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + i32.const 0 + call $~lib/number/F64#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 10 + call $~lib/number/I32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -5 + i32.const 10 + call $~lib/number/I32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 10 + call $~lib/number/I32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $number/a + i32.const 1 + i32.add + global.set $number/a + global.get $number/a + i32.const 10 + call $~lib/number/I32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $number/a + i32.const 1 + i32.sub + global.set $number/a + global.get $number/a + i32.const 10 + call $~lib/number/I32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.eqz + i32.const 0 + call $~lib/number/Bool#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.eqz + i32.const 0 + call $~lib/number/Bool#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $number/a + local.tee $0 + i32.const 1 + i32.add + global.set $number/a + local.get $0 + i32.const 10 + call $~lib/number/I32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $number/a + local.tee $1 + i32.const 1 + i32.sub + global.set $number/a + local.get $1 + i32.const 10 + call $~lib/number/I32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/number/F32.NaN + local.tee $2 + local.get $2 + f32.ne + drop + global.get $~lib/builtins/f32.MIN_SAFE_INTEGER + f32.const 1 + f32.sub + call $~lib/number/F32.isSafeInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MIN_SAFE_INTEGER + call $~lib/number/F32.isSafeInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/number/F32.isSafeInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + call $~lib/number/F32.isSafeInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + call $~lib/number/F32.isSafeInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + call $~lib/number/F32.isSafeInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MAX_SAFE_INTEGER + call $~lib/number/F32.isSafeInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MAX_SAFE_INTEGER + f32.const 1 + f32.add + call $~lib/number/F32.isSafeInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + call $~lib/number/F32.isSafeInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/number/F32.isInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + call $~lib/number/F32.isInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + call $~lib/number/F32.isInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + call $~lib/number/F32.isInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.EPSILON + call $~lib/number/F32.isInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + call $~lib/number/F32.isInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + call $~lib/number/F32.isInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MIN_SAFE_INTEGER + call $~lib/number/F32.isInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MAX_SAFE_INTEGER + call $~lib/number/F32.isInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + call $~lib/number/F32.isInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + call $~lib/number/F32.isInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/number/F64.NaN + local.tee $3 + local.get $3 + f64.ne + drop + global.get $~lib/builtins/f64.MIN_SAFE_INTEGER + f64.const 1 + f64.sub + call $~lib/number/F64.isSafeInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MIN_SAFE_INTEGER + call $~lib/number/F64.isSafeInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 49 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/number/F64.isSafeInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/number/F64.isSafeInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/number/F64.isSafeInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 52 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/number/F64.isSafeInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_SAFE_INTEGER + call $~lib/number/F64.isSafeInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_SAFE_INTEGER + f64.const 1 + f64.add + call $~lib/number/F64.isSafeInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 55 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + call $~lib/number/F64.isSafeInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/number/F64.isInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 57 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/number/F64.isInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 58 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/number/F64.isInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/number/F64.isInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.EPSILON + call $~lib/number/F64.isInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/number/F64.isInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/number/F64.isInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MIN_SAFE_INTEGER + call $~lib/number/F64.isInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_SAFE_INTEGER + call $~lib/number/F64.isInteger + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 65 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + call $~lib/number/F64.isInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + call $~lib/number/F64.isInteger + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const nan:0x8000000000000 + f64.eq + i32.eqz + drop + f64.const nan:0x8000000000000 + global.get $~lib/number/F32.NaN + f64.promote_f32 + f64.eq + i32.eqz + drop + global.get $~lib/number/F64.NaN + f64.const 1 + f64.eq + i32.eqz + drop + f64.const 1 + f64.const nan:0x8000000000000 + f64.ne + drop + f64.const nan:0x8000000000000 + global.get $~lib/number/F32.NaN + f64.promote_f32 + f64.ne + drop + global.get $~lib/builtins/f64.NaN + f64.const 1 + f64.ne + drop + f64.const 0 + f64.const -0 + f64.eq + drop + f64.const -0 + f64.const -0 + f64.eq + drop + f64.const -0 + f64.const 0 + f64.eq + drop + f32.const 0 + f32.const -0 + f32.eq + drop + f32.const -0 + f32.const -0 + f32.eq + drop + f32.const -0 + f32.const 0 + f32.eq + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i32) + (local $offset|11 i32) + (local $val32 i32) + (local $decimals|13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 32 + i32.const 160 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 224 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + local.get $value + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + i64.extend_i32_u + local.get $offset|11 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.set $val32 + local.get $val32 + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $val32 + i64.extend_i32_u + local.get $decimals|13 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/util/number/dtoa (param $value f64) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + local.get $value + local.set $value|1 + i32.const 0 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 2288 + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 2320 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 2352 + i32.const 2400 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 2432 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 2432 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) +) diff --git a/tests/compiler/number.json b/tests/compiler/number.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/number.json +++ b/tests/compiler/number.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat deleted file mode 100644 index 91bd1ef485..0000000000 --- a/tests/compiler/number.optimized.wat +++ /dev/null @@ -1,2059 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 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_=>_i32 (func (param f32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_i64_i32_i64_=>_i32 (func (param i32 i64 i32 i64 i32 i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1152) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1216) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1248) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1344) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1376) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1424) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1456) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1488) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1536) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1568) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $do-continue|0 - local.get $1 - i32.const 10 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 - local.get $1 - br_if $do-continue|0 - end - ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 31 - i32.shr_u - local.tee $1 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - call $~lib/rt/stub/__alloc - local.tee $2 - local.get $0 - local.get $3 - call $~lib/util/number/utoa_dec_simple - local.get $1 - if - local.get $2 - i32.const 45 - i32.store16 - end - local.get $2 - else - i32.const 1232 - end - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - local.get $0 - i32.load16_u - local.tee $3 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $3 - local.get $4 - i32.sub - return - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - return - end - i32.const 0 - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - local.get $3 - local.get $1 - i64.sub - local.set $9 - local.get $3 - i64.const 1 - i32.const 0 - local.get $4 - i32.sub - local.tee $10 - i64.extend_i32_s - i64.shl - local.tee $11 - i64.const 1 - i64.sub - local.tee $12 - i64.and - local.set $7 - local.get $3 - local.get $10 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $8 - loop $while-continue|0 - local.get $8 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $8 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $2 - i32.const 1000000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100 - i32.div_u - local.set $4 - local.get $2 - i32.const 100 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10 - i32.div_u - local.set $4 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - local.set $4 - i32.const 0 - local.set $2 - br $break|1 - end - i32.const 0 - local.set $4 - end - local.get $4 - local.get $6 - i32.or - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $7 - local.get $2 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - i64.shl - i64.add - local.tee $1 - local.get $5 - i64.le_u - if - local.get $8 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 2 - i32.shl - i32.const 2440 - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|3 - i32.const 1 - local.get $9 - local.get $1 - i64.sub - local.get $1 - local.get $3 - i64.add - local.tee $7 - local.get $9 - i64.sub - i64.gt_u - local.get $7 - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $3 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - return - end - br $while-continue|0 - end - end - local.get $10 - i64.extend_i32_s - local.set $1 - loop $while-continue|4 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $7 - i64.const 10 - i64.mul - local.tee $3 - local.get $1 - i64.shr_u - local.tee $7 - local.get $6 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $3 - local.get $12 - i64.and - local.tee $7 - local.get $5 - i64.ge_u - br_if $while-continue|4 - end - local.get $8 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - local.get $9 - i32.const 0 - local.get $8 - i32.sub - i32.const 2 - i32.shl - i32.const 2440 - i32.add - i64.load32_u - i64.mul - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|6 - i32.const 1 - local.get $3 - local.get $1 - i64.sub - local.get $1 - local.get $11 - i64.add - local.tee $7 - local.get $3 - i64.sub - i64.gt_u - local.get $7 - local.get $3 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $11 - i64.ge_u - i32.const 0 - local.get $1 - local.get $3 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $11 - i64.add - local.set $1 - br $while-continue|6 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 - i32.const -6 - local.get $3 - i32.lt_s - select - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.add - end - end - end - end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 f64) - (local $5 i64) - i32.const -4 - global.set $~lib/util/number/_K - i32.const 1920 - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 2352 - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $2 - i64.const 32 - i64.shr_u - local.set $3 - local.get $2 - i64.const 4294967295 - i64.and - local.tee $2 - i64.const 31 - i64.shl - local.get $2 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.set $1 - local.get $0 - local.get $0 - local.get $3 - i64.const 31 - i64.shl - local.get $2 - i64.const 31 - i64.shl - i64.const 0 - i64.add - local.tee $5 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - i64.const 4294967295 - i64.and - i64.const 0 - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $0 - i32.const 2 - i32.add - local.get $3 - i64.const 31 - i64.shl - local.get $1 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - i64.const 4294967295 - i64.and - local.get $3 - i64.const 10 - i64.shl - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $1 - local.get $0 - i32.const 2 - i32.add - local.get $1 - local.get $3 - i64.const 2147483647 - i64.mul - local.get $2 - i64.const 2147483647 - i64.mul - local.get $2 - i64.const 4294966784 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $1 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 4294966784 - i64.mul - local.get $1 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - call $~lib/util/number/genDigits - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.get $0 - call $~lib/string/String#get:length - local.tee $4 - i32.lt_s - local.set $2 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $3 - local.get $4 - i32.lt_s - local.set $1 - i32.const 0 - local.get $4 - local.get $2 - select - local.tee $2 - local.get $3 - local.get $4 - local.get $1 - select - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $2 - i32.sub - local.tee $3 - i32.eqz - if - i32.const 2496 - return - end - i32.const 0 - local.get $1 - local.get $4 - i32.const 1 - i32.shl - i32.eq - local.get $2 - select - if - local.get $0 - return - end - local.get $3 - call $~lib/rt/stub/__alloc - local.tee $1 - local.get $0 - local.get $2 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $1 - ) - (func $~lib/number/F32.isSafeInteger (param $0 f32) (result i32) - local.get $0 - f32.trunc - local.get $0 - f32.eq - i32.const 0 - local.get $0 - f32.abs - f32.const 16777215 - f32.le - select - ) - (func $~lib/number/F32.isInteger (param $0 f32) (result i32) - local.get $0 - f32.trunc - local.get $0 - f32.eq - i32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.eq - select - ) - (func $~lib/number/F64.isSafeInteger (param $0 f64) (result i32) - local.get $0 - f64.trunc - local.get $0 - f64.eq - i32.const 0 - local.get $0 - f64.abs - f64.const 9007199254740991 - f64.le - select - ) - (func $~lib/number/F64.isInteger (param $0 f64) (result i32) - local.get $0 - f64.trunc - local.get $0 - f64.eq - i32.const 0 - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.eq - select - ) - (func $start:number - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 2768 - global.set $~lib/rt/stub/offset - global.get $number/a - call $~lib/number/I32#toString - i32.const 1360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 56 - call $~lib/rt/stub/__alloc - local.tee $0 - call $~lib/util/number/dtoa_core - local.tee $1 - i32.const 28 - i32.ne - if (result i32) - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 2512 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.tee $2 - i32.load offset=4 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 2512 - i32.const 70 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $2 - i32.load - i32.add - i32.eq - if - local.get $2 - global.set $~lib/rt/stub/offset - end - else - local.get $0 - end - i32.const 2560 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $~lib/number/I32#toString - i32.const 2592 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -5 - call $~lib/number/I32#toString - i32.const 2624 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $~lib/number/I32#toString - i32.const 2656 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $number/a - i32.const 1 - i32.add - global.set $number/a - global.get $number/a - call $~lib/number/I32#toString - i32.const 2688 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $number/a - i32.const 1 - i32.sub - global.set $number/a - global.get $number/a - call $~lib/number/I32#toString - i32.const 1360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2720 - i32.const 2720 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2752 - i32.const 2752 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $number/a - local.tee $0 - i32.const 1 - i32.add - global.set $number/a - local.get $0 - call $~lib/number/I32#toString - i32.const 1360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $number/a - local.tee $0 - i32.const 1 - i32.sub - global.set $number/a - local.get $0 - call $~lib/number/I32#toString - i32.const 2688 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -16777216 - call $~lib/number/F32.isSafeInteger - if - i32.const 0 - i32.const 1392 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -16777215 - call $~lib/number/F32.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - call $~lib/number/F32.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - call $~lib/number/F32.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - call $~lib/number/F32.isSafeInteger - if - i32.const 0 - i32.const 1392 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - call $~lib/number/F32.isSafeInteger - if - i32.const 0 - i32.const 1392 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 16777215 - call $~lib/number/F32.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 16777216 - call $~lib/number/F32.isSafeInteger - if - i32.const 0 - i32.const 1392 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - call $~lib/number/F32.isSafeInteger - if - i32.const 0 - i32.const 1392 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - call $~lib/number/F32.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - call $~lib/number/F32.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - call $~lib/number/F32.isInteger - if - i32.const 0 - i32.const 1392 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - call $~lib/number/F32.isInteger - if - i32.const 0 - i32.const 1392 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1920928955078125e-07 - call $~lib/number/F32.isInteger - if - i32.const 0 - i32.const 1392 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - call $~lib/number/F32.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - call $~lib/number/F32.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -16777215 - call $~lib/number/F32.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 16777215 - call $~lib/number/F32.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - call $~lib/number/F32.isInteger - if - i32.const 0 - i32.const 1392 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - call $~lib/number/F32.isInteger - if - i32.const 0 - i32.const 1392 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9007199254740992 - call $~lib/number/F64.isSafeInteger - if - i32.const 0 - i32.const 1392 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9007199254740991 - call $~lib/number/F64.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 49 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - call $~lib/number/F64.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - call $~lib/number/F64.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - call $~lib/number/F64.isSafeInteger - if - i32.const 0 - i32.const 1392 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - call $~lib/number/F64.isSafeInteger - if - i32.const 0 - i32.const 1392 - i32.const 53 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9007199254740991 - call $~lib/number/F64.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 54 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9007199254740992 - call $~lib/number/F64.isSafeInteger - if - i32.const 0 - i32.const 1392 - i32.const 55 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - call $~lib/number/F64.isSafeInteger - if - i32.const 0 - i32.const 1392 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - call $~lib/number/F64.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 57 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - call $~lib/number/F64.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - call $~lib/number/F64.isInteger - if - i32.const 0 - i32.const 1392 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - call $~lib/number/F64.isInteger - if - i32.const 0 - i32.const 1392 - i32.const 60 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.220446049250313e-16 - call $~lib/number/F64.isInteger - if - i32.const 0 - i32.const 1392 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - call $~lib/number/F64.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - call $~lib/number/F64.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9007199254740991 - call $~lib/number/F64.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9007199254740991 - call $~lib/number/F64.isInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 65 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - call $~lib/number/F64.isInteger - if - i32.const 0 - i32.const 1392 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - call $~lib/number/F64.isInteger - if - i32.const 0 - i32.const 1392 - i32.const 67 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:number - ) -) diff --git a/tests/compiler/number.release.wat b/tests/compiler/number.release.wat new file mode 100644 index 0000000000..5fbdeb3b8b --- /dev/null +++ b/tests/compiler/number.release.wat @@ -0,0 +1,3128 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i32))) + (type $9 (func (param i64 i64 i32 i64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $number/a (mut i32) (i32.const 1)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37444)) + (memory $0 1) + (data $0 (i32.const 1036) "|") + (data $0.1 (i32.const 1048) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $1 (i32.const 1164) "<") + (data $1.1 (i32.const 1176) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $2 (i32.const 1228) "\1c") + (data $2.1 (i32.const 1240) "\02\00\00\00\02\00\00\000") + (data $3 (i32.const 1260) "<") + (data $3.1 (i32.const 1272) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1324) "<") + (data $4.1 (i32.const 1336) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1452) "<") + (data $7.1 (i32.const 1464) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1516) ",") + (data $8.1 (i32.const 1528) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1596) "<") + (data $10.1 (i32.const 1608) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1660) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $12 (i32.const 2060) "\1c\04") + (data $12.1 (i32.const 2072) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $13 (i32.const 3116) "\\") + (data $13.1 (i32.const 3128) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $14 (i32.const 3212) "\1c") + (data $14.1 (i32.const 3224) "\02\00\00\00\02\00\00\001") + (data $15 (i32.const 3244) ",") + (data $15.1 (i32.const 3256) "\02\00\00\00\12\00\00\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $16 (i32.const 3292) "\1c") + (data $16.1 (i32.const 3304) "\02\00\00\00\06\00\00\000\00.\000") + (data $17 (i32.const 3324) "\1c") + (data $17.1 (i32.const 3336) "\02\00\00\00\06\00\00\00N\00a\00N") + (data $18 (i32.const 3356) ",") + (data $18.1 (i32.const 3368) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $19 (i32.const 3404) ",") + (data $19.1 (i32.const 3416) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data $21 (i32.const 3512) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $f32_=>_i32 (func (param f32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 144) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 208) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 228) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 640) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1680) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00") - (data (i32.const 1776) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 1808) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 1856) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 1888) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 1920) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 1968) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 2000) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8_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_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (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_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d") - (data (i32.const 1072) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1120) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1184) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1232) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") - (data (i32.const 1300) "\01\00\00\00\01") - (data (i32.const 1312) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00h\00e\00l\00l\00o") - (data (i32.const 1344) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t") - (data (i32.const 1376) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00r") - (data (i32.const 1408) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00z") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1088 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1088 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1440 - local.set $1 - i32.const 1440 - i32.const 0 - i32.store - i32.const 3008 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1440 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1440 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1440 - i32.const 3024 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1440 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1088 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1088 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1073741808 - i32.ge_u - if - i32.const 1136 - i32.const 1088 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1088 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - call $~lib/rt/rtrace/onalloc - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1432 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1200 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1432 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - if - local.get $3 - i32.load16_u - local.tee $0 - local.get $1 - i32.load16_u - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - local.get $6 - i32.sub - return - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $object-literal/testUnmanaged (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load - i32.const 123 - i32.ne - if - i32.const 0 - i32.const 1248 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 1328 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 28 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - call $~lib/rt/pure/__release - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/freeBlock - ) - (func $object-literal/testOmittedTypes (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load - if - i32.const 0 - i32.const 1248 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - if - i32.const 0 - i32.const 1248 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.load offset=8 - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.load offset=16 - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.load offset=24 - f32.const 0 - f32.ne - if - i32.const 0 - i32.const 1248 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.load offset=32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1248 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_s offset=40 - if - i32.const 0 - i32.const 1248 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=41 - if - i32.const 0 - i32.const 1248 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load16_s offset=42 - if - i32.const 0 - i32.const 1248 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load16_u offset=44 - if - i32.const 0 - i32.const 1248 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=48 - if - i32.const 0 - i32.const 1248 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=52 - if - i32.const 0 - i32.const 1248 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.load offset=56 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1248 - i32.const 70 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=64 - if - i32.const 0 - i32.const 1248 - i32.const 71 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $object-literal/testOmittedFoo (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load - i32.const 1392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 1424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 111 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=16 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 112 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=20 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 113 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=24 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=28 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 115 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=32 - if - i32.const 0 - i32.const 1248 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=36 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1248 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $start:object-literal - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 8 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $1 - i32.const 123 - i32.store - local.get $0 - i32.const 1040 - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load - i32.const 123 - i32.ne - if - i32.const 0 - i32.const 1248 - i32.const 9 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - i32.const 8 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 123 - i32.store - local.get $0 - block $__inlined_func$~lib/string/String#substring (result i32) - i32.const 1312 - i32.const 0 - i32.const 1040 - call $~lib/string/String#get:length - local.tee $5 - i32.const 0 - local.get $5 - i32.lt_s - select - local.tee $4 - i32.const 5 - local.get $5 - i32.const 5 - local.get $5 - i32.lt_s - select - local.tee $2 - local.get $4 - local.get $2 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $3 - local.get $4 - local.get $2 - local.get $4 - local.get $2 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $4 - i32.sub - local.tee $2 - i32.eqz - br_if $__inlined_func$~lib/string/String#substring - drop - i32.const 1040 - i32.const 0 - local.get $3 - local.get $5 - i32.const 1 - i32.shl - i32.eq - local.get $4 - select - br_if $__inlined_func$~lib/string/String#substring - drop - local.get $2 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $4 - i32.const 1040 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $3 - call $~lib/rt/pure/__retain - end - i32.store offset=4 - local.get $0 - call $object-literal/testUnmanaged - i32.const 65 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - f32.const 0 - f32.store offset=24 - local.get $0 - f64.const 0 - f64.store offset=32 - local.get $0 - i32.const 0 - i32.store8 offset=40 - local.get $0 - i32.const 0 - i32.store8 offset=41 - local.get $0 - i32.const 0 - i32.store16 offset=42 - local.get $0 - i32.const 0 - i32.store16 offset=44 - local.get $0 - i32.const 0 - i32.store offset=48 - local.get $0 - i32.const 0 - i32.store offset=52 - local.get $0 - f64.const 0 - f64.store offset=56 - local.get $0 - i32.const 0 - i32.store8 offset=64 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - f32.const 0 - f32.store offset=24 - local.get $0 - f64.const 0 - f64.store offset=32 - local.get $0 - i32.const 0 - i32.store8 offset=40 - local.get $0 - i32.const 0 - i32.store8 offset=41 - local.get $0 - i32.const 0 - i32.store16 offset=42 - local.get $0 - i32.const 0 - i32.store16 offset=44 - local.get $0 - i32.const 0 - i32.store offset=48 - local.get $0 - i32.const 0 - i32.store offset=52 - local.get $0 - f64.const 0 - f64.store offset=56 - local.get $0 - i32.const 0 - i32.store8 offset=64 - local.get $0 - call $object-literal/testOmittedTypes - i32.const 16 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - f64.const 0 - f64.store offset=8 - local.get $3 - i32.const 0 - i32.store - local.get $3 - i32.const 1360 - i32.store offset=4 - local.get $3 - f64.const 0 - f64.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load - if - i32.const 0 - i32.const 1248 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=4 - i32.const 1360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f64.load offset=8 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1248 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - i32.const 40 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 1392 - i32.store - local.get $2 - i32.const 1424 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 0 - i32.store offset=20 - local.get $2 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 0 - i32.store offset=28 - local.get $2 - i32.const 0 - i32.store offset=32 - local.get $2 - i32.const -1 - i32.store offset=36 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 0 - i32.store offset=20 - local.get $2 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 0 - i32.store offset=28 - local.get $2 - i32.const 0 - i32.store offset=32 - local.get $2 - call $object-literal/testOmittedFoo - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:object-literal - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1200 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/__visit_members - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1200 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1200 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 1432 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - block $switch$1$default - block $switch$1$case$8 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$2 $switch$1$case$5 $switch$1$case$8 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - i32.load offset=4 - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - i32.load - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=4 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=8 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=12 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=20 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=24 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=28 - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/object-literal.release.wat b/tests/compiler/object-literal.release.wat new file mode 100644 index 0000000000..e1bb4a66e6 --- /dev/null +++ b/tests/compiler/object-literal.release.wat @@ -0,0 +1,3115 @@ +(module + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34516)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d") + (data $1 (i32.const 1084) "<") + (data $1.1 (i32.const 1096) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $3 (i32.const 1180) "<") + (data $3.1 (i32.const 1192) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $4 (i32.const 1244) ",") + (data $4.1 (i32.const 1256) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $5 (i32.const 1292) "<") + (data $5.1 (i32.const 1304) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $8 (i32.const 1420) "<") + (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1484) "<") + (data $9.1 (i32.const 1496) "\02\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (data $10 (i32.const 1548) "\1c") + (data $10.1 (i32.const 1560) "\02") + (data $11 (i32.const 1580) "\1c") + (data $11.1 (i32.const 1592) "\02\00\00\00\n\00\00\00h\00e\00l\00l\00o") + (data $12 (i32.const 1612) "\1c") + (data $12.1 (i32.const 1624) "\02\00\00\00\08\00\00\00t\00e\00s\00t") + (data $13 (i32.const 1644) "\1c") + (data $13.1 (i32.const 1656) "\02\00\00\00\06\00\00\00b\00a\00r") + (data $14 (i32.const 1676) "\1c") + (data $14.1 (i32.const 1688) "\02\00\00\00\06\00\00\00b\00a\00z") + (data $15 (i32.const 1712) "\08\00\00\00 \00\00\00 \00\00\00 ") + (data $15.1 (i32.const 1736) " ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$205 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34516 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$205 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1712 + i32.load + i32.gt_u + if + i32.const 1200 + i32.const 1264 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1716 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1200 + call $~lib/rt/itcms/__visit + i32.const 1312 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1104 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34528 + i32.const 0 + i32.store + i32.const 36096 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34528 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34528 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34528 + i32.const 36100 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34528 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 34516 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34516 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1104 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34516 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1312 + i32.const 1440 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1440 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1312 + i32.const 1104 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $object-literal/OmittedFoo + block $object-literal/MixedOmitted + block $object-literal/OmittedTypes + block $object-literal/Managed + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $object-literal/Managed $object-literal/OmittedTypes $object-literal/MixedOmitted $object-literal/OmittedFoo $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=12 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=16 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=20 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=24 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=28 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + call $start:object-literal + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$83 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$83 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $object-literal/testOmittedTypes (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + if + i32.const 0 + i32.const 1504 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + if + i32.const 0 + i32.const 1504 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=8 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1504 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1504 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + f32.load offset=24 + f32.const 0 + f32.ne + if + i32.const 0 + i32.const 1504 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + f64.load offset=32 + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1504 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load8_u offset=40 + if + i32.const 0 + i32.const 1504 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load8_u offset=41 + if + i32.const 0 + i32.const 1504 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load16_u offset=42 + if + i32.const 0 + i32.const 1504 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load16_u offset=44 + if + i32.const 0 + i32.const 1504 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=48 + if + i32.const 0 + i32.const 1504 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=52 + if + i32.const 0 + i32.const 1504 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + f64.load offset=56 + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1504 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load8_u offset=64 + if + i32.const 0 + i32.const 1504 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $object-literal/testOmittedFoo (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.const 1664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 107 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.const 1696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=12 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 110 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=20 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 112 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=24 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=28 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=32 + if + i32.const 0 + i32.const 1504 + i32.const 115 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=36 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:object-literal + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 1156 + i32.const 1152 + i32.store + i32.const 1160 + i32.const 1152 + i32.store + i32.const 1152 + global.set $~lib/rt/itcms/toSpace + memory.size + i32.const 16 + i32.shl + i32.const 34516 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1364 + i32.const 1360 + i32.store + i32.const 1368 + i32.const 1360 + i32.store + i32.const 1360 + global.set $~lib/rt/itcms/pinSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 123 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1056 + i32.store offset=4 + local.get $1 + i32.const 1056 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.const 123 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 123 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 5 + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + local.get $0 + i32.const 5 + i32.gt_u + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.le_s + select + i32.const 1 + i32.shl + local.set $3 + block $__inlined_func$~lib/string/String#substring$210 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.ge_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + i32.sub + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1568 + local.set $0 + br $__inlined_func$~lib/string/String#substring$210 + end + local.get $3 + i32.eqz + local.get $4 + local.get $0 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + local.set $0 + br $__inlined_func$~lib/string/String#substring$210 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 1056 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.load + i32.const 123 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.const 1600 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 65 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 0 + i64.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 0 + f32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 0 + f64.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=41 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store16 offset=42 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store16 offset=44 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 0 + f64.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i64.const 0 + i64.store offset=16 + local.get $0 + f32.const 0 + f32.store offset=24 + local.get $0 + f64.const 0 + f64.store offset=32 + local.get $0 + i32.const 0 + i32.store8 offset=40 + local.get $0 + i32.const 0 + i32.store8 offset=41 + local.get $0 + i32.const 0 + i32.store16 offset=42 + local.get $0 + i32.const 0 + i32.store16 offset=44 + local.get $0 + i32.const 0 + i32.store offset=48 + local.get $0 + i32.const 0 + i32.store offset=52 + local.get $0 + f64.const 0 + f64.store offset=56 + local.get $0 + i32.const 0 + i32.store8 offset=64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $object-literal/testOmittedTypes + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + f64.const 0 + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1632 + i32.store offset=4 + local.get $1 + i32.const 1632 + call $~lib/rt/itcms/__link + local.get $1 + f64.const 0 + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + if + i32.const 0 + i32.const 1504 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.const 1632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + f64.load offset=8 + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1504 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1664 + i32.store + local.get $0 + i32.const 1664 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1696 + i32.store offset=4 + local.get $0 + i32.const 1696 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=24 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=28 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + i32.const 0 + i32.store offset=24 + local.get $0 + i32.const 0 + i32.store offset=28 + local.get $0 + i32.const 0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $object-literal/testOmittedFoo + i32.const 34516 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/object-literal.ts b/tests/compiler/object-literal.ts index a4c42aeb72..33508126af 100644 --- a/tests/compiler/object-literal.ts +++ b/tests/compiler/object-literal.ts @@ -26,7 +26,6 @@ class Unmanaged { function testUnmanaged(unmanaged: Unmanaged): void { assert(unmanaged.bar == 123); assert(unmanaged.baz == "hello"); - __release(changetype(unmanaged.baz)); __free(changetype(unmanaged)); } @@ -118,3 +117,6 @@ function testOmittedFoo(foo: OmittedFoo): void { } testOmittedFoo({}); + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat deleted file mode 100644 index 770147500f..0000000000 --- a/tests/compiler/object-literal.untouched.wat +++ /dev/null @@ -1,4140 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 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_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00") - (data (i32.const 64) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 112) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 176) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 224) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") - (data (i32.const 288) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 304) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00h\00e\00l\00l\00o\00") - (data (i32.const 336) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t\00") - (data (i32.const 368) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00r\00") - (data (i32.const 400) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00b\00a\00z\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 424)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 128 - i32.const 80 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $object-literal/Managed#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $object-literal/testManaged (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.load - i32.const 123 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 9 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 32 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/string/String#substring (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.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $6 - local.get $2 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $7 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $8 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $8 - i32.sub - local.set $10 - local.get $10 - i32.eqz - if - i32.const 304 - call $~lib/rt/pure/__retain - return - end - local.get $8 - i32.eqz - if (result i32) - local.get $9 - local.get $3 - i32.const 1 - i32.shl - i32.eq - else - i32.const 0 - end - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $10 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $11 - local.get $11 - local.get $0 - local.get $8 - i32.add - local.get $10 - call $~lib/memory/memory.copy - local.get $11 - call $~lib/rt/pure/__retain - ) - (func $object-literal/Unmanaged#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $object-literal/testUnmanaged (param $0 i32) - local.get $0 - i32.load - i32.const 123 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 28 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/tlsf/__free - ) - (func $object-literal/OmittedTypes#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 65 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - f32.const 0 - f32.store offset=24 - local.get $0 - f64.const 0 - f64.store offset=32 - local.get $0 - i32.const 0 - i32.store8 offset=40 - local.get $0 - i32.const 0 - i32.store8 offset=41 - local.get $0 - i32.const 0 - i32.store16 offset=42 - local.get $0 - i32.const 0 - i32.store16 offset=44 - local.get $0 - i32.const 0 - i32.store offset=48 - local.get $0 - i32.const 0 - i32.store offset=52 - local.get $0 - f64.const 0 - f64.store offset=56 - local.get $0 - i32.const 0 - i32.store8 offset=64 - local.get $0 - ) - (func $object-literal/testOmittedTypes (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.load - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.load offset=8 - i64.const 0 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.load offset=16 - i64.const 0 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.load offset=24 - f32.const 0 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.load offset=32 - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_s offset=40 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=41 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load16_s offset=42 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load16_u offset=44 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=48 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=52 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.load offset=56 - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 70 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=64 - i32.const 0 - i32.ne - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 71 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $object-literal/MixedOmitted#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - f64.const 0 - f64.store offset=8 - local.get $0 - ) - (func $object-literal/testMixedOmitted (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.load - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 352 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.load offset=8 - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $object-literal/OmittedFoo#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 40 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 384 - i32.store - local.get $0 - i32.const 416 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $0 - i32.const 0 - i32.store offset=28 - local.get $0 - i32.const 0 - i32.store offset=32 - local.get $0 - i32.const -1 - i32.store offset=36 - local.get $0 - ) - (func $object-literal/testOmittedFoo (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.load - i32.const 384 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 111 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=16 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 112 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=20 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 113 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=24 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=28 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 115 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=32 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=36 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $start:object-literal - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - call $object-literal/Managed#constructor - local.set $0 - local.get $0 - i32.const 123 - i32.store - local.get $0 - i32.const 32 - i32.store offset=4 - local.get $0 - call $object-literal/testManaged - i32.const 0 - call $object-literal/Unmanaged#constructor - local.set $1 - local.get $1 - i32.const 123 - i32.store - local.get $1 - i32.const 32 - i32.const 0 - i32.const 5 - call $~lib/string/String#substring - i32.store offset=4 - local.get $1 - call $object-literal/testUnmanaged - i32.const 0 - call $object-literal/OmittedTypes#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - f32.const 0 - f32.store offset=24 - local.get $1 - f64.const 0 - f64.store offset=32 - local.get $1 - i32.const 0 - i32.store8 offset=40 - local.get $1 - i32.const 0 - i32.store8 offset=41 - local.get $1 - i32.const 0 - i32.store16 offset=42 - local.get $1 - i32.const 0 - i32.store16 offset=44 - local.get $1 - i32.const 0 - i32.store offset=48 - local.get $1 - i32.const 0 - i32.store offset=52 - local.get $1 - f64.const 0 - f64.store offset=56 - local.get $1 - i32.const 0 - i32.store8 offset=64 - local.get $1 - call $object-literal/testOmittedTypes - i32.const 0 - call $object-literal/MixedOmitted#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 352 - i32.store offset=4 - local.get $2 - f64.const 0 - f64.store offset=8 - local.get $2 - call $object-literal/testMixedOmitted - i32.const 0 - call $object-literal/OmittedFoo#constructor - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 - local.get $3 - i32.const 0 - i32.store offset=16 - local.get $3 - i32.const 0 - i32.store offset=20 - local.get $3 - i32.const 0 - i32.store offset=24 - local.get $3 - i32.const 0 - i32.store offset=28 - local.get $3 - i32.const 0 - i32.store offset=32 - local.get $3 - call $object-literal/testOmittedFoo - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:object-literal - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$8 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$2 $switch$1$case$5 $switch$1$case$8 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - i32.load offset=4 - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=4 - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=8 - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=12 - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=16 - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=20 - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=24 - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=28 - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/operator-overload-ambiguity.json b/tests/compiler/operator-overload-ambiguity.json new file mode 100644 index 0000000000..1b66bc25e7 --- /dev/null +++ b/tests/compiler/operator-overload-ambiguity.json @@ -0,0 +1,14 @@ +{ + "asc_flags": [], + "stderr": [ + "AS240: Ambiguous operator overload '==' (conflicting overloads 'operator-overload-ambiguity/A#__eq' and 'operator-overload-ambiguity/B#__eq').", + "compare_nonnull_a == compare_nonnull_b;", + "AS240: Ambiguous operator overload '==' (conflicting overloads 'operator-overload-ambiguity/B#__eq' and 'operator-overload-ambiguity/A#__eq').", + "compare_nonnull_b == compare_nonnull_a;", + "AS240: Ambiguous operator overload '==' (conflicting overloads 'operator-overload-ambiguity/C.__eq' and 'operator-overload-ambiguity/D#__eq').", + "compare_nonnull_c == compare_nonnull_d;", + "AS240: Ambiguous operator overload '==' (conflicting overloads 'operator-overload-ambiguity/A#__eq' and 'operator-overload-ambiguity/B#__eq').", + "compare_extend_1 == compare_extend_2;", + "EOF" + ] +} diff --git a/tests/compiler/operator-overload-ambiguity.ts b/tests/compiler/operator-overload-ambiguity.ts new file mode 100644 index 0000000000..b7826adc4b --- /dev/null +++ b/tests/compiler/operator-overload-ambiguity.ts @@ -0,0 +1,38 @@ +class A { + @operator("==") __eq(other: B): bool { + return true; + } +} +class B { + @operator("==") __eq(other: A): bool { + return true; + } +} +export function compare_nonnull(compare_nonnull_a: A, compare_nonnull_b: B): void { + compare_nonnull_a == compare_nonnull_b; + compare_nonnull_b == compare_nonnull_a; +} + +class C { + @operator("==") static __eq(self: C | null, other: D | null): bool { + return true; + } +} +class D { + @operator("==") __eq(other: i32): bool { + return true; + } +} +export function compare_null(compare_nonnull_c: C | null, compare_nonnull_d: D | null): void { + compare_nonnull_c == compare_nonnull_d; +} + +class PA extends A {} +class PB extends B {} +export function compare_extend(compare_extend_1: PA, compare_extend_2: PB): void { + compare_extend_1 == compare_extend_2; +} + +export function end(): void { + ERROR("EOF"); +} diff --git a/tests/compiler/operator-overload-non-ambiguity.debug.wat b/tests/compiler/operator-overload-non-ambiguity.debug.wat new file mode 100644 index 0000000000..af1c4b6144 --- /dev/null +++ b/tests/compiler/operator-overload-non-ambiguity.debug.wat @@ -0,0 +1,2614 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 512)) + (global $~lib/memory/__data_end i32 (i32.const 548)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33316)) + (global $~lib/memory/__heap_base i32 (i32.const 33316)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00-\00n\00o\00n\00-\00a\00m\00b\00i\00g\00u\00i\00t\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 512) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $operator-overload-non-ambiguity/Base#__eq (param $this i32) (param $other i32) (result i32) + i32.const 1 + return + ) + (func $operator-overload-non-ambiguity/T1#__eq (param $this i32) (param $other i32) (result i32) + local.get $other + i32.const 123 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $operator-overload-non-ambiguity/T1 + block $operator-overload-non-ambiguity/P2 + block $operator-overload-non-ambiguity/Base + block $operator-overload-non-ambiguity/P1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $operator-overload-non-ambiguity/P1 $operator-overload-non-ambiguity/Base $operator-overload-non-ambiguity/P2 $operator-overload-non-ambiguity/T1 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:operator-overload-non-ambiguity + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33344 + i32.const 33392 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $operator-overload-non-ambiguity/Base#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $operator-overload-non-ambiguity/P1#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $operator-overload-non-ambiguity/Base#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $operator-overload-non-ambiguity/P2#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $operator-overload-non-ambiguity/Base#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $operator-overload-non-ambiguity/T1#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:operator-overload-non-ambiguity + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $operator-overload-non-ambiguity/P1#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + call $operator-overload-non-ambiguity/P2#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $operator-overload-non-ambiguity/Base#__eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $operator-overload-non-ambiguity/T1#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 123 + call $operator-overload-non-ambiguity/T1#__eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $operator-overload-non-ambiguity/T1#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 123 + call $operator-overload-non-ambiguity/T1#__eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/operator-overload-non-ambiguity.json b/tests/compiler/operator-overload-non-ambiguity.json new file mode 100644 index 0000000000..ea57a955e1 --- /dev/null +++ b/tests/compiler/operator-overload-non-ambiguity.json @@ -0,0 +1,3 @@ +{ + "asc_flags": [] +} diff --git a/tests/compiler/operator-overload-non-ambiguity.release.wat b/tests/compiler/operator-overload-non-ambiguity.release.wat new file mode 100644 index 0000000000..177a9d0d5c --- /dev/null +++ b/tests/compiler/operator-overload-non-ambiguity.release.wat @@ -0,0 +1,1649 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34340)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "\\") + (data $8.1 (i32.const 1448) "\02\00\00\00D\00\00\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00-\00n\00o\00n\00-\00a\00m\00b\00i\00g\00u\00i\00t\00y\00.\00t\00s") + (data $9 (i32.const 1536) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$116 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34340 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$116 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34352 + i32.const 0 + i32.store + i32.const 35920 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34352 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34352 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34352 + i32.const 35924 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34352 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34340 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34340 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34340 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $operator-overload-non-ambiguity/T1 + block $operator-overload-non-ambiguity/P2 + block $operator-overload-non-ambiguity/Base + block $operator-overload-non-ambiguity/P1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $operator-overload-non-ambiguity/P1 $operator-overload-non-ambiguity/Base $operator-overload-non-ambiguity/P2 $operator-overload-non-ambiguity/T1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 34340 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $operator-overload-non-ambiguity/Base#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $operator-overload-non-ambiguity/Base#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + call $operator-overload-non-ambiguity/T1#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + call $operator-overload-non-ambiguity/T1#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $operator-overload-non-ambiguity/Base#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $operator-overload-non-ambiguity/T1#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/operator-overload-non-ambiguity.ts b/tests/compiler/operator-overload-non-ambiguity.ts new file mode 100644 index 0000000000..cf8c4be9ee --- /dev/null +++ b/tests/compiler/operator-overload-non-ambiguity.ts @@ -0,0 +1,19 @@ +class Base { + @operator("==") __eq(other: Base): bool { + return true; + } +} + +class P1 extends Base {} +class P2 extends Base {} + +assert(new P1() == new P2()); + +class T1 { + @operator("==") __eq(other: i32): bool { + assert(other == 123); + return true; + } +} +assert(new T1() == 123); +assert(123 == new T1()); diff --git a/tests/compiler/optional-typeparameters.debug.wat b/tests/compiler/optional-typeparameters.debug.wat new file mode 100644 index 0000000000..f0ccf39b01 --- /dev/null +++ b/tests/compiler/optional-typeparameters.debug.wat @@ -0,0 +1,2769 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32) (result i32))) + (type $10 (func (param i32 f64 f64) (result f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $optional-typeparameters/tConcrete (mut i32) (i32.const 0)) + (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) + (global $optional-typeparameters/tMethodDerived (mut i32) (i32.const 0)) + (global $optional-typeparameters/tMethodDerived2 (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 416)) + (global $~lib/memory/__data_end i32 (i32.const 456)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33224)) + (global $~lib/memory/__heap_base i32 (i32.const 33224)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 416) "\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\02A\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $"optional-typeparameters/testConcrete" (param $a i32) (result i32) + local.get $a + return + ) + (func $"optional-typeparameters/testDerived" (param $a i32) (result i32) + local.get $a + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $"optional-typeparameters/TestConcrete#test" (param $this i32) (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $"optional-typeparameters/TestDerived#test" (param $this i32) (param $a f64) (param $b f64) (result f64) + local.get $a + local.get $b + f64.add + return + ) + (func $optional-typeparameters/TestMethodDerived<~lib/string/String>#test<~lib/array/Array<~lib/string/String>> (param $this i32) + i32.const 7 + i32.const 7 + i32.eq + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $optional-typeparameters/tConcrete + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tDerived + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tMethodDerived + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tMethodDerived2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $optional-typeparameters/TestMethodDerived2 + block $~lib/array/Array<~lib/string/String> + block $optional-typeparameters/TestMethodDerived<~lib/string/String> + block $"optional-typeparameters/TestDerived" + block $"optional-typeparameters/TestConcrete" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"optional-typeparameters/TestConcrete" $"optional-typeparameters/TestDerived" $optional-typeparameters/TestMethodDerived<~lib/string/String> $~lib/array/Array<~lib/string/String> $optional-typeparameters/TestMethodDerived2 $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:optional-typeparameters + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33248 + i32.const 33296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $"optional-typeparameters/TestConcrete#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"optional-typeparameters/TestDerived#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $optional-typeparameters/TestMethodDerived<~lib/string/String>#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $optional-typeparameters/TestMethodDerived2#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $optional-typeparameters/TestMethodDerived2#foo (param $this i32) (param $v i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $v + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $optional-typeparameters/TestMethodDerived<~lib/string/String>#test<~lib/array/Array<~lib/string/String>> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:optional-typeparameters + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1 + call $"optional-typeparameters/testConcrete" + drop + i32.const 2 + call $"optional-typeparameters/testDerived" + drop + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $"optional-typeparameters/TestConcrete#constructor" + global.set $optional-typeparameters/tConcrete + global.get $optional-typeparameters/tConcrete + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + i32.const 2 + call $"optional-typeparameters/TestConcrete#test" + drop + i32.const 0 + call $"optional-typeparameters/TestDerived#constructor" + global.set $optional-typeparameters/tDerived + global.get $optional-typeparameters/tDerived + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + f64.const 1 + f64.const 2 + call $"optional-typeparameters/TestDerived#test" + drop + i32.const 0 + call $optional-typeparameters/TestMethodDerived<~lib/string/String>#constructor + global.set $optional-typeparameters/tMethodDerived + global.get $optional-typeparameters/tMethodDerived + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $optional-typeparameters/TestMethodDerived<~lib/string/String>#test<~lib/array/Array<~lib/string/String>> + i32.const 0 + call $optional-typeparameters/TestMethodDerived2#constructor + global.set $optional-typeparameters/tMethodDerived2 + global.get $optional-typeparameters/tMethodDerived2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.get $optional-typeparameters/tMethodDerived + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $optional-typeparameters/TestMethodDerived2#foo + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/optional-typeparameters.json b/tests/compiler/optional-typeparameters.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/optional-typeparameters.json +++ b/tests/compiler/optional-typeparameters.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat deleted file mode 100644 index 560fcc8178..0000000000 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ /dev/null @@ -1,81 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (memory $0 0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - i32.const 16 - i32.add - local.tee $1 - memory.size - local.tee $3 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $3 - local.get $1 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $3 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $1 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - ) - (func $~start - i32.const 1024 - global.set $~lib/rt/stub/offset - i32.const 3 - call $~lib/rt/stub/__alloc - i32.const 4 - call $~lib/rt/stub/__alloc - ) -) diff --git a/tests/compiler/optional-typeparameters.release.wat b/tests/compiler/optional-typeparameters.release.wat new file mode 100644 index 0000000000..86224fcc4c --- /dev/null +++ b/tests/compiler/optional-typeparameters.release.wat @@ -0,0 +1,1745 @@ +(module + (type $0 (func)) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $optional-typeparameters/tConcrete (mut i32) (i32.const 0)) + (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) + (global $optional-typeparameters/tMethodDerived (mut i32) (i32.const 0)) + (global $optional-typeparameters/tMethodDerived2 (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34248)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1440) "\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\02A\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $optional-typeparameters/tConcrete + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tDerived + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tMethodDerived + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tMethodDerived2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$131 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34248 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$131 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34256 + i32.const 0 + i32.store + i32.const 35824 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34256 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34256 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34256 + i32.const 35828 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34256 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34248 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34248 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34248 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $invalid + block $optional-typeparameters/TestMethodDerived2 + block $~lib/array/Array<~lib/string/String> + block $optional-typeparameters/TestMethodDerived<~lib/string/String> + block $"optional-typeparameters/TestDerived" + block $"optional-typeparameters/TestConcrete" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"optional-typeparameters/TestConcrete" $"optional-typeparameters/TestDerived" $optional-typeparameters/TestMethodDerived<~lib/string/String> $~lib/array/Array<~lib/string/String> $optional-typeparameters/TestMethodDerived2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 34248 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $optional-typeparameters/tConcrete + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tConcrete + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $optional-typeparameters/tDerived + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tDerived + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $optional-typeparameters/tMethodDerived + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tMethodDerived + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $optional-typeparameters/tMethodDerived2 + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tMethodDerived2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tMethodDerived + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/optional-typeparameters.ts b/tests/compiler/optional-typeparameters.ts index a726b28f4a..7ba1699c0e 100644 --- a/tests/compiler/optional-typeparameters.ts +++ b/tests/compiler/optional-typeparameters.ts @@ -1,21 +1,21 @@ -function testConcrete(a: T): U { +function testConcrete(a: T): U { return a; } -function testDerived(a: T): U { +function testDerived(a: T): U { return a; } testConcrete(1); testDerived(2); -class TestConcrete { +class TestConcrete { test(a: T, b: U): V { return a + b; } } -class TestDerived { +class TestDerived { test(a: T, b: U): V { return a + b; } @@ -25,3 +25,19 @@ var tConcrete = new TestConcrete(); tConcrete.test(1, 2); var tDerived = new TestDerived(); tDerived.test(1, 2); + +class TestMethodDerived { + test(): void { + assert(idof() == idof()); + } +} +class TestMethodDerived2 { + foo(v: TestMethodDerived): void { + v.test(); + } +} + +var tMethodDerived = new TestMethodDerived(); +tMethodDerived.test(); +var tMethodDerived2 = new TestMethodDerived2(); +tMethodDerived2.foo(tMethodDerived); diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat deleted file mode 100644 index 0e4f058695..0000000000 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ /dev/null @@ -1,206 +0,0 @@ -(module - (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_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_f64_f64_=>_f64 (func (param i32 f64 f64) (result f64))) - (memory $0 0) - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $optional-typeparameters/tConcrete (mut i32) (i32.const 0)) - (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) - (export "memory" (memory $0)) - (start $~start) - (func $optional-typeparameters/testConcrete (param $0 i32) (result i32) - local.get $0 - ) - (func $optional-typeparameters/testDerived (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $optional-typeparameters/TestConcrete#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $optional-typeparameters/TestConcrete#test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 - local.get $2 - i32.add - ) - (func $optional-typeparameters/TestDerived#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $optional-typeparameters/TestDerived#test (param $0 i32) (param $1 f64) (param $2 f64) (result f64) - local.get $1 - local.get $2 - f64.add - ) - (func $start:optional-typeparameters - i32.const 1 - call $optional-typeparameters/testConcrete - drop - i32.const 2 - call $optional-typeparameters/testDerived - drop - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - call $optional-typeparameters/TestConcrete#constructor - global.set $optional-typeparameters/tConcrete - global.get $optional-typeparameters/tConcrete - i32.const 1 - i32.const 2 - call $optional-typeparameters/TestConcrete#test - drop - i32.const 0 - call $optional-typeparameters/TestDerived#constructor - global.set $optional-typeparameters/tDerived - global.get $optional-typeparameters/tDerived - f64.const 1 - f64.const 2 - call $optional-typeparameters/TestDerived#test - drop - ) - (func $~start - call $start:optional-typeparameters - ) -) diff --git a/tests/compiler/overflow.debug.wat b/tests/compiler/overflow.debug.wat new file mode 100644 index 0000000000..66d363d737 --- /dev/null +++ b/tests/compiler/overflow.debug.wat @@ -0,0 +1,785 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:overflow + (local $val i32) + (local $ctx i32) + (local $2 i32) + (local $3 i32) + (local $val|4 i32) + (local $ctx|5 i32) + (local $6 i32) + (local $7 i32) + (local $val|8 i32) + (local $ctx|9 i32) + (local $10 i32) + (local $11 i32) + (local $val|12 i32) + (local $ctx|13 i32) + (local $14 i32) + (local $15 i32) + (local $b4 i32) + (local $b5 i32) + (local $b6 i32) + (local $c i32) + i32.const 127 + local.set $val + local.get $val + i32.const 1 + i32.add + local.set $val + local.get $val + i32.extend8_s + i32.const -128 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val + i32.const 1 + i32.sub + local.set $val + local.get $val + i32.extend8_s + i32.const 127 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val + local.tee $2 + i32.const 1 + i32.add + local.set $val + local.get $2 + local.set $ctx + local.get $val + i32.extend8_s + i32.const -128 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val + local.tee $3 + i32.const 1 + i32.sub + local.set $val + local.get $3 + local.set $ctx + local.get $val + i32.extend8_s + i32.const 127 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val + i32.const 1 + i32.add + local.set $val + local.get $val + i32.extend8_s + i32.const -128 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val + i32.const 1 + i32.sub + local.set $val + local.get $val + i32.extend8_s + i32.const 127 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val + i32.const 1 + i32.add + local.tee $val + local.set $ctx + local.get $val + i32.extend8_s + i32.const -128 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val + i32.const 1 + i32.sub + local.tee $val + local.set $ctx + local.get $val + i32.extend8_s + i32.const 127 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val + i32.const 1 + i32.add + i32.extend8_s + i32.const -128 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 32767 + local.set $val|4 + local.get $val|4 + i32.const 1 + i32.add + local.set $val|4 + local.get $val|4 + i32.extend16_s + i32.const -32768 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|4 + i32.const 1 + i32.sub + local.set $val|4 + local.get $val|4 + i32.extend16_s + i32.const 32767 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|4 + local.tee $6 + i32.const 1 + i32.add + local.set $val|4 + local.get $6 + local.set $ctx|5 + local.get $val|4 + i32.extend16_s + i32.const -32768 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|4 + local.tee $7 + i32.const 1 + i32.sub + local.set $val|4 + local.get $7 + local.set $ctx|5 + local.get $val|4 + i32.extend16_s + i32.const 32767 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 51 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|4 + i32.const 1 + i32.add + local.set $val|4 + local.get $val|4 + i32.extend16_s + i32.const -32768 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 54 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|4 + i32.const 1 + i32.sub + local.set $val|4 + local.get $val|4 + i32.extend16_s + i32.const 32767 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|4 + i32.const 1 + i32.add + local.tee $val|4 + local.set $ctx|5 + local.get $val|4 + i32.extend16_s + i32.const -32768 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|4 + i32.const 1 + i32.sub + local.tee $val|4 + local.set $ctx|5 + local.get $val|4 + i32.extend16_s + i32.const 32767 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|4 + i32.const 1 + i32.add + i32.extend16_s + i32.const -32768 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $val|8 + local.get $val|8 + i32.const 1 + i32.sub + local.set $val|8 + local.get $val|8 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|8 + i32.const 1 + i32.add + local.set $val|8 + local.get $val|8 + i32.const 255 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 77 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|8 + local.tee $10 + i32.const 1 + i32.sub + local.set $val|8 + local.get $10 + local.set $ctx|9 + local.get $val|8 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|8 + local.tee $11 + i32.const 1 + i32.add + local.set $val|8 + local.get $11 + local.set $ctx|9 + local.get $val|8 + i32.const 255 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|8 + i32.const 1 + i32.sub + local.set $val|8 + local.get $val|8 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 86 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|8 + i32.const 1 + i32.add + local.set $val|8 + local.get $val|8 + i32.const 255 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|8 + i32.const 1 + i32.sub + local.tee $val|8 + local.set $ctx|9 + local.get $val|8 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|8 + i32.const 1 + i32.add + local.tee $val|8 + local.set $ctx|9 + local.get $val|8 + i32.const 255 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|8 + i32.const 1 + i32.sub + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $val|12 + local.get $val|12 + i32.const 1 + i32.sub + local.set $val|12 + local.get $val|12 + i32.const 65535 + i32.and + i32.const 65535 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|12 + i32.const 1 + i32.add + local.set $val|12 + local.get $val|12 + i32.const 65535 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|12 + local.tee $14 + i32.const 1 + i32.sub + local.set $val|12 + local.get $14 + local.set $ctx|13 + local.get $val|12 + i32.const 65535 + i32.and + i32.const 65535 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 112 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|12 + local.tee $15 + i32.const 1 + i32.add + local.set $val|12 + local.get $15 + local.set $ctx|13 + local.get $val|12 + i32.const 65535 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 115 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|12 + i32.const 1 + i32.sub + local.set $val|12 + local.get $val|12 + i32.const 65535 + i32.and + i32.const 65535 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 118 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|12 + i32.const 1 + i32.add + local.set $val|12 + local.get $val|12 + i32.const 65535 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 121 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|12 + i32.const 1 + i32.sub + local.tee $val|12 + local.set $ctx|13 + local.get $val|12 + i32.const 65535 + i32.and + i32.const 65535 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|12 + i32.const 1 + i32.add + local.tee $val|12 + local.set $ctx|13 + local.get $val|12 + i32.const 65535 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 127 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $val|12 + i32.const 1 + i32.sub + i32.const 65535 + i32.and + i32.const 65535 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + drop + i32.const 1 + i32.const 1 + i32.eq + drop + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 2 + local.set $b4 + local.get $b4 + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 144 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $b5 + local.get $b5 + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $b6 + local.get $b6 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 65 + i32.const 63457 + i32.const 504 + i32.and + i32.const 3 + i32.const 15 + i32.and + i32.shr_u + i32.const 64 + i32.sub + i32.const 65535 + i32.and + i32.add + local.set $c + local.get $c + i32.const 65597 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 159 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:overflow + ) +) diff --git a/tests/compiler/overflow.json b/tests/compiler/overflow.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/overflow.json +++ b/tests/compiler/overflow.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/overflow.optimized.wat b/tests/compiler/overflow.optimized.wat deleted file mode 100644 index 2f847eda83..0000000000 --- a/tests/compiler/overflow.optimized.wat +++ /dev/null @@ -1,5 +0,0 @@ -(module - (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s") - (export "memory" (memory $0)) -) diff --git a/tests/compiler/overflow.release.wat b/tests/compiler/overflow.release.wat new file mode 100644 index 0000000000..c01f5ed58b --- /dev/null +++ b/tests/compiler/overflow.release.wat @@ -0,0 +1,6 @@ +(module + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s") + (export "memory" (memory $0)) +) diff --git a/tests/compiler/overflow.ts b/tests/compiler/overflow.ts index bb05caa01b..6cd77e35c7 100644 --- a/tests/compiler/overflow.ts +++ b/tests/compiler/overflow.ts @@ -128,3 +128,33 @@ assert(val - 1 == 0xffff); } + +// special cases +{ + const b1 = 2; + assert(b1 == true); + + const b2 = -1; + assert(b2 == true); + + const b3 = 0; + assert(b3 == false); + + let b4 = 2; + assert(b4 == true); + + let b5 = -1; + assert(b5 == true); + + let b6 = 0; + assert(b6 == false); +} + +{ + // regression #2131 + const a: u32 = 65; + const b: u16 = 63457; + let c = a + (((b & 0x1f8) >> 3) - (b & 0x200 ? 0x40 : 0)); + // trace(">>>> c", 1, c); + assert(c == 65597); +} diff --git a/tests/compiler/overflow.untouched.wat b/tests/compiler/overflow.untouched.wat deleted file mode 100644 index 4b9a74b4cb..0000000000 --- a/tests/compiler/overflow.untouched.wat +++ /dev/null @@ -1,734 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00") - (table $0 1 funcref) - (export "memory" (memory $0)) - (start $~start) - (func $start:overflow - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 127 - local.set $0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 127 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 13 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.set $1 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - local.set $1 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 127 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 127 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.set $1 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 28 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - local.set $1 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 127 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 31 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 32767 - local.set $1 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 32767 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.set $0 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $2 - i32.const 1 - i32.sub - local.set $1 - local.get $2 - local.set $0 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 32767 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 51 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 54 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 32767 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 57 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.tee $1 - local.set $0 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - local.set $0 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 32767 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $0 - i32.const 255 - i32.and - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 74 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 77 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - local.set $1 - local.get $0 - i32.const 255 - i32.and - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.set $1 - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $0 - i32.const 255 - i32.and - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 86 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 89 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - local.set $1 - local.get $0 - i32.const 255 - i32.and - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 92 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.set $1 - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.sub - i32.const 255 - i32.and - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $1 - i32.const 65535 - i32.and - i32.const 65535 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 106 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.and - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $2 - i32.const 1 - i32.sub - local.set $1 - local.get $2 - local.set $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 65535 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 112 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.set $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 115 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $1 - i32.const 65535 - i32.and - i32.const 65535 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 118 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.and - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - local.set $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 65535 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.tee $1 - local.set $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 127 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - i32.const 65535 - i32.and - i32.const 65535 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 129 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:overflow - ) -) diff --git a/tests/compiler/override-error.json b/tests/compiler/override-error.json new file mode 100644 index 0000000000..90d85c530a --- /dev/null +++ b/tests/compiler/override-error.json @@ -0,0 +1,6 @@ +{ + "asc_flags": [], + "stderr": [ + "TS4117: This member cannot have an 'override' modifier because it is not declared in the base class 'A'." + ] +} diff --git a/tests/compiler/override-error.ts b/tests/compiler/override-error.ts new file mode 100644 index 0000000000..7ee822ec83 --- /dev/null +++ b/tests/compiler/override-error.ts @@ -0,0 +1,14 @@ +class A { + method(): void {} +} + +class B extends A { + override method(): void {} + // TS4117: This member cannot have an 'override' modifier because it is not declared in the base class 'A'. + override method_error(): void {} +} + +export function test(): void { + new A(); + new B(); +} diff --git a/tests/compiler/packages.debug.wat b/tests/compiler/packages.debug.wat new file mode 100644 index 0000000000..1427d6bbee --- /dev/null +++ b/tests/compiler/packages.debug.wat @@ -0,0 +1,87 @@ +(module + (type $0 (func)) + (global $~lib/a/index/a i32 (i32.const 1)) + (global $~lib/c/index/c i32 (i32.const 3)) + (global $~lib/b/index/b i32 (i32.const 2)) + (global $~lib/a/other/a_other i32 (i32.const 11)) + (global $~lib/b/other/b_other i32 (i32.const 22)) + (global $~lib/b/other/index/b_other_index i32 (i32.const 222)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:~lib/c/index + global.get $~lib/a/index/a + i32.const 1 + i32.eq + drop + global.get $~lib/b/index/b + i32.const 2 + i32.eq + drop + ) + (func $start:~lib/a/index + call $start:~lib/c/index + global.get $~lib/c/index/c + i32.const 3 + i32.eq + drop + global.get $~lib/b/index/b + i32.const 2 + i32.eq + drop + ) + (func $start:~lib/_/index + call $start:~lib/a/index + global.get $~lib/a/index/a + i32.const 1 + i32.eq + drop + global.get $~lib/a/index/a + i32.const 1 + i32.eq + drop + global.get $~lib/a/index/a + i32.const 1 + i32.eq + drop + global.get $~lib/a/other/a_other + i32.const 11 + i32.eq + drop + global.get $~lib/b/index/b + i32.const 2 + i32.eq + drop + global.get $~lib/b/index/b + i32.const 2 + i32.eq + drop + global.get $~lib/b/index/b + i32.const 2 + i32.eq + drop + global.get $~lib/b/other/b_other + i32.const 22 + i32.eq + drop + global.get $~lib/b/other/index/b_other_index + i32.const 222 + i32.eq + drop + global.get $~lib/b/other/index/b_other_index + i32.const 222 + i32.eq + drop + ) + (func $start:packages + call $start:~lib/_/index + ) + (func $~start + call $start:packages + ) +) diff --git a/tests/compiler/packages.json b/tests/compiler/packages.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/packages.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/packages.release.wat b/tests/compiler/packages.release.wat new file mode 100644 index 0000000000..23da3862e2 --- /dev/null +++ b/tests/compiler/packages.release.wat @@ -0,0 +1,4 @@ +(module + (memory $0 0) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/packages.ts b/tests/compiler/packages.ts new file mode 100644 index 0000000000..23bdbfb28b --- /dev/null +++ b/tests/compiler/packages.ts @@ -0,0 +1,2 @@ +// node_modules/_/index.ts +import "_"; diff --git a/tests/compiler/polyfills.debug.wat b/tests/compiler/polyfills.debug.wat new file mode 100644 index 0000000000..38b080c31a --- /dev/null +++ b/tests/compiler/polyfills.debug.wat @@ -0,0 +1,511 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i64) (result i64))) + (type $2 (func)) + (type $3 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/polyfills/bswap (param $value i32) (result i32) + i32.const 1 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $value + return + ) + (func $~lib/polyfills/bswap (param $value i32) (result i32) + i32.const 1 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $value + return + ) + (func $~lib/polyfills/bswap (param $value i32) (result i32) + i32.const 1 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $value + i32.const 8 + i32.const 15 + i32.and + i32.shl + local.get $value + i32.const 65535 + i32.and + i32.const 8 + i32.const 15 + i32.and + i32.shr_u + i32.or + return + ) + (func $~lib/polyfills/bswap (param $value i32) (result i32) + i32.const 1 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $value + i32.const 8 + i32.const 15 + i32.and + i32.shl + local.get $value + i32.const 65535 + i32.and + i32.const 8 + i32.const 15 + i32.and + i32.shr_u + i32.or + return + ) + (func $~lib/polyfills/bswap (param $value i32) (result i32) + i32.const 1 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $value + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $value + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or + return + ) + (func $~lib/polyfills/bswap (param $value i32) (result i32) + i32.const 1 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $value + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $value + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or + return + ) + (func $~lib/polyfills/bswap (param $value i64) (result i64) + (local $a i64) + (local $b i64) + (local $v i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $value + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $a + local.get $value + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + local.set $v + local.get $v + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $a + local.get $v + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/polyfills/bswap (param $value i64) (result i64) + (local $a i64) + (local $b i64) + (local $v i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $value + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $a + local.get $value + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + local.set $v + local.get $v + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $a + local.get $v + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/polyfills/bswap (param $value i32) (result i32) + i32.const 1 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $value + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $value + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or + return + ) + (func $~lib/polyfills/bswap (param $value i32) (result i32) + i32.const 1 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $value + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $value + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or + return + ) + (func $start:polyfills + i32.const 170 + call $~lib/polyfills/bswap + i32.const 255 + i32.and + i32.const 170 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 170 + call $~lib/polyfills/bswap + i32.extend8_s + i32.const 170 + i32.extend8_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 43707 + call $~lib/polyfills/bswap + i32.const 65535 + i32.and + i32.const 48042 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 43707 + call $~lib/polyfills/bswap + i32.extend16_s + i32.const 48042 + i32.extend16_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 43707 + call $~lib/polyfills/bswap + i32.extend16_s + i32.const 48042 + i32.extend16_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1430532899 + call $~lib/polyfills/bswap + i32.const -573785174 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1430532899 + call $~lib/polyfills/bswap + i32.const -573785174 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1430532899 + call $~lib/polyfills/bswap + i32.const -573785174 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4822679907192029 + call $~lib/polyfills/bswap + i64.const -2464388556401798912 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4822679907192029 + call $~lib/polyfills/bswap + i64.const -2464388556401798912 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4822679907192029 + call $~lib/polyfills/bswap + i64.const -2464388556401798912 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1430532899 + call $~lib/polyfills/bswap + i32.const -573785174 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1430532899 + call $~lib/polyfills/bswap + i32.const -573785174 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1430532899 + call $~lib/polyfills/bswap + i32.const -573785174 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:polyfills + ) +) diff --git a/tests/compiler/polyfills.json b/tests/compiler/polyfills.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/polyfills.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/polyfills.release.wat b/tests/compiler/polyfills.release.wat new file mode 100644 index 0000000000..b46680aba3 --- /dev/null +++ b/tests/compiler/polyfills.release.wat @@ -0,0 +1,6 @@ +(module + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\18\00\00\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s") + (export "memory" (memory $0)) +) diff --git a/tests/compiler/polyfills.ts b/tests/compiler/polyfills.ts new file mode 100644 index 0000000000..02a6419106 --- /dev/null +++ b/tests/compiler/polyfills.ts @@ -0,0 +1,23 @@ +// check bswap for i8/u8 +assert(bswap(0xaa) == 0xaa); +assert(bswap(0xaa) == 0xaa); + +// check bswap for i16/u16 +assert(bswap(0xaabb) == 0xbbaa); +assert(bswap(0xaabb) == 0xbbaa); +assert(bswap(0xaabb) == 0xbbaa); + +// check bswap for i32/u32 +assert(bswap(0xaabbccdd) == 0xddccbbaa); +assert(bswap(0xaabbccdd) == 0xddccbbaa); +assert(bswap(0xaabbccdd) == 0xddccbbaa); + +// check bswap for i64/u64 +assert(bswap(0x00112233aabbccdd) == 0xddccbbaa33221100); +assert(bswap(0x00112233aabbccdd) == 0xddccbbaa33221100); +assert(bswap(0x00112233aabbccdd) == 0xddccbbaa33221100); + +// check bswap for isize/usize +assert(bswap(0xaabbccdd) == 0xddccbbaa); +assert(bswap(0xaabbccdd) == 0xddccbbaa); +assert(bswap(0xaabbccdd) == 0xddccbbaa); diff --git a/tests/compiler/portable-conversions.debug.wat b/tests/compiler/portable-conversions.debug.wat new file mode 100644 index 0000000000..b166b9278f --- /dev/null +++ b/tests/compiler/portable-conversions.debug.wat @@ -0,0 +1,629 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $portable-conversions/i (mut i32) (i32.const 1)) + (global $portable-conversions/I (mut i64) (i64.const 1)) + (global $portable-conversions/f (mut f32) (f32.const 1)) + (global $portable-conversions/F (mut f64) (f64.const 1)) + (global $~lib/memory/__data_end i32 (i32.const 92)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32860)) + (global $~lib/memory/__heap_base i32 (i32.const 32860)) + (memory $0 1) + (data $0 (i32.const 12) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:portable-conversions + global.get $portable-conversions/i + i32.extend8_s + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/I + i32.wrap_i64 + i32.extend8_s + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/f + i32.trunc_sat_f32_s + i32.extend8_s + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/F + i32.trunc_sat_f64_s + i32.extend8_s + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/i + i32.extend16_s + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/I + i32.wrap_i64 + i32.extend16_s + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/f + i32.trunc_sat_f32_s + i32.extend16_s + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/F + i32.trunc_sat_f64_s + i32.extend16_s + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/i + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/I + i32.wrap_i64 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/f + i32.trunc_sat_f32_s + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/F + i32.trunc_sat_f64_s + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/i + i64.extend_i32_s + i64.eqz + if + i32.const 0 + i32.const 32 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/I + i64.eqz + if + i32.const 0 + i32.const 32 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/f + i64.trunc_sat_f32_s + i64.eqz + if + i32.const 0 + i32.const 32 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/F + i64.trunc_sat_f64_s + i64.eqz + if + i32.const 0 + i32.const 32 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/i + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/I + i32.wrap_i64 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/f + i32.trunc_sat_f32_s + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/F + i32.trunc_sat_f64_s + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/i + i32.const 255 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/I + i32.wrap_i64 + i32.const 255 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/f + i32.trunc_sat_f32_u + i32.const 255 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/F + i32.trunc_sat_f64_u + i32.const 255 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/i + i32.const 65535 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/I + i32.wrap_i64 + i32.const 65535 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/f + i32.trunc_sat_f32_u + i32.const 65535 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/F + i32.trunc_sat_f64_u + i32.const 65535 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/i + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/I + i32.wrap_i64 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/f + i32.trunc_sat_f32_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/F + i32.trunc_sat_f64_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/i + i64.extend_i32_s + i64.eqz + if + i32.const 0 + i32.const 32 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/I + i64.eqz + if + i32.const 0 + i32.const 32 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/f + i64.trunc_sat_f32_u + i64.eqz + if + i32.const 0 + i32.const 32 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/F + i64.trunc_sat_f64_u + i64.eqz + if + i32.const 0 + i32.const 32 + i32.const 49 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/i + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/I + i32.wrap_i64 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 52 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/f + i32.trunc_sat_f32_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/F + i32.trunc_sat_f64_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/i + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/I + i64.const 0 + i64.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 57 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/f + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 58 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/F + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/i + f32.convert_i32_s + f32.const 0 + f32.eq + if + i32.const 0 + i32.const 32 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/I + f32.convert_i64_s + f32.const 0 + f32.eq + if + i32.const 0 + i32.const 32 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/f + f32.const 0 + f32.eq + if + i32.const 0 + i32.const 32 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/F + f32.demote_f64 + f32.const 0 + f32.eq + if + i32.const 0 + i32.const 32 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/i + f64.convert_i32_s + f64.const 0 + f64.eq + if + i32.const 0 + i32.const 32 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/I + f64.convert_i64_s + f64.const 0 + f64.eq + if + i32.const 0 + i32.const 32 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/f + f64.promote_f32 + f64.const 0 + f64.eq + if + i32.const 0 + i32.const 32 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $portable-conversions/F + f64.const 0 + f64.eq + if + i32.const 0 + i32.const 32 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:portable-conversions + ) +) diff --git a/tests/compiler/portable-conversions.json b/tests/compiler/portable-conversions.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/portable-conversions.json +++ b/tests/compiler/portable-conversions.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/portable-conversions.optimized.wat b/tests/compiler/portable-conversions.optimized.wat deleted file mode 100644 index 1f33d2e28b..0000000000 --- a/tests/compiler/portable-conversions.optimized.wat +++ /dev/null @@ -1,5 +0,0 @@ -(module - (memory $0 1) - (data (i32.const 1024) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s") - (export "memory" (memory $0)) -) diff --git a/tests/compiler/portable-conversions.release.wat b/tests/compiler/portable-conversions.release.wat new file mode 100644 index 0000000000..671881b0f2 --- /dev/null +++ b/tests/compiler/portable-conversions.release.wat @@ -0,0 +1,6 @@ +(module + (memory $0 1) + (data $0 (i32.const 1036) "L") + (data $0.1 (i32.const 1048) "\02\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s") + (export "memory" (memory $0)) +) diff --git a/tests/compiler/portable-conversions.untouched.wat b/tests/compiler/portable-conversions.untouched.wat deleted file mode 100644 index 6d00acc97a..0000000000 --- a/tests/compiler/portable-conversions.untouched.wat +++ /dev/null @@ -1,649 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s\00") - (table $0 1 funcref) - (global $portable-conversions/i (mut i32) (i32.const 1)) - (global $portable-conversions/I (mut i64) (i64.const 1)) - (global $portable-conversions/f (mut f32) (f32.const 1)) - (global $portable-conversions/F (mut f64) (f64.const 1)) - (export "memory" (memory $0)) - (start $~start) - (func $start:portable-conversions - global.get $portable-conversions/i - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/I - i32.wrap_i64 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/f - i32.trunc_f32_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/F - i32.trunc_f64_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/i - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/I - i32.wrap_i64 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/f - i32.trunc_f32_s - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/F - i32.trunc_f64_s - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/i - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/I - i32.wrap_i64 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/f - i32.trunc_f32_s - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/F - i32.trunc_f64_s - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/i - i64.extend_i32_s - i64.eqz - if - i32.const 0 - i32.const 32 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/I - i64.eqz - if - i32.const 0 - i32.const 32 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/f - i64.trunc_f32_s - i64.eqz - if - i32.const 0 - i32.const 32 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/F - i64.trunc_f64_s - i64.eqz - if - i32.const 0 - i32.const 32 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/i - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/I - i32.wrap_i64 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/f - i32.trunc_f32_s - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/F - i32.trunc_f64_s - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/i - i32.const 255 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/I - i32.wrap_i64 - i32.const 255 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/f - i32.trunc_f32_u - i32.const 255 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/F - i32.trunc_f64_u - i32.const 255 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/i - i32.const 65535 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/I - i32.wrap_i64 - i32.const 65535 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/f - i32.trunc_f32_u - i32.const 65535 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/F - i32.trunc_f64_u - i32.const 65535 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/i - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/I - i32.wrap_i64 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/f - i32.trunc_f32_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/F - i32.trunc_f64_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/i - i64.extend_i32_s - i64.eqz - if - i32.const 0 - i32.const 32 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/I - i64.eqz - if - i32.const 0 - i32.const 32 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/f - i64.trunc_f32_u - i64.eqz - if - i32.const 0 - i32.const 32 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/F - i64.trunc_f64_u - i64.eqz - if - i32.const 0 - i32.const 32 - i32.const 49 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/i - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/I - i32.wrap_i64 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/f - i32.trunc_f32_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 53 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/F - i32.trunc_f64_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 54 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/i - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/I - i64.const 0 - i64.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 57 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/f - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/F - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/i - f32.convert_i32_s - f32.const 0 - f32.eq - if - i32.const 0 - i32.const 32 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/I - f32.convert_i64_s - f32.const 0 - f32.eq - if - i32.const 0 - i32.const 32 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/f - f32.const 0 - f32.eq - if - i32.const 0 - i32.const 32 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/F - f32.demote_f64 - f32.const 0 - f32.eq - if - i32.const 0 - i32.const 32 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/i - f64.convert_i32_s - f64.const 0 - f64.eq - if - i32.const 0 - i32.const 32 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/I - f64.convert_i64_s - f64.const 0 - f64.eq - if - i32.const 0 - i32.const 32 - i32.const 67 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/f - f64.promote_f32 - f64.const 0 - f64.eq - if - i32.const 0 - i32.const 32 - i32.const 68 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $portable-conversions/F - f64.const 0 - f64.eq - if - i32.const 0 - i32.const 32 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:portable-conversions - ) -) diff --git a/tests/compiler/possibly-null.debug.wat b/tests/compiler/possibly-null.debug.wat new file mode 100644 index 0000000000..f528abfabe --- /dev/null +++ b/tests/compiler/possibly-null.debug.wat @@ -0,0 +1,652 @@ +(module + (type $0 (func (param i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32 i32 i32 i32))) + (type $4 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "testTrue" (func $export:possibly-null/testTrue)) + (export "testFalseElse" (func $export:possibly-null/testFalseElse)) + (export "testFalseContinuation" (func $export:possibly-null/testFalseContinuation)) + (export "testNeNull" (func $export:possibly-null/testNeNull)) + (export "testEqNullElse" (func $export:possibly-null/testEqNullElse)) + (export "testEqNullContinuation" (func $export:possibly-null/testEqNullContinuation)) + (export "testNotEqNull" (func $export:possibly-null/testNotEqNull)) + (export "testNotNeNullElse" (func $export:possibly-null/testNotNeNullElse)) + (export "testNotNeNullContinuation" (func $export:possibly-null/testNotNeNullContinuation)) + (export "testWhile" (func $export:possibly-null/testWhile)) + (export "testWhile2" (func $export:possibly-null/testWhile2)) + (export "testWhile3" (func $export:possibly-null/testWhile3)) + (export "testLogicalAnd" (func $export:possibly-null/testLogicalAnd)) + (export "testLogicalOr" (func $export:possibly-null/testLogicalOr)) + (export "testLogicalAndMulti" (func $export:possibly-null/testLogicalAndMulti)) + (export "testLogicalOrMulti" (func $export:possibly-null/testLogicalOrMulti)) + (export "testAssign" (func $export:possibly-null/testAssign)) + (export "testNeverNull" (func $export:possibly-null/testNeverNull)) + (func $possibly-null/testTrue (param $a i32) + local.get $a + if + i32.const 0 + drop + end + ) + (func $possibly-null/testFalseElse (param $a i32) + local.get $a + i32.eqz + if + return + else + i32.const 0 + drop + end + ) + (func $possibly-null/testFalseContinuation (param $a i32) + local.get $a + i32.eqz + if + return + end + i32.const 0 + drop + ) + (func $possibly-null/testNeNull (param $a i32) + local.get $a + i32.const 0 + i32.ne + if + i32.const 0 + drop + end + ) + (func $possibly-null/testEqNullElse (param $a i32) + local.get $a + i32.const 0 + i32.eq + if + return + else + i32.const 0 + drop + end + ) + (func $possibly-null/testEqNullContinuation (param $a i32) + local.get $a + i32.const 0 + i32.eq + if + return + end + i32.const 0 + drop + ) + (func $possibly-null/testNotEqNull (param $a i32) + local.get $a + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + drop + end + ) + (func $possibly-null/testNotNeNullElse (param $a i32) + local.get $a + i32.const 0 + i32.ne + i32.eqz + if + return + else + i32.const 0 + drop + end + ) + (func $possibly-null/testNotNeNullContinuation (param $a i32) + local.get $a + i32.const 0 + i32.ne + i32.eqz + if + return + end + i32.const 0 + drop + ) + (func $possibly-null/testWhile (param $a i32) + loop $while-continue|0 + local.get $a + if + i32.const 0 + drop + i32.const 0 + local.set $a + i32.const 1 + i32.eqz + drop + br $while-continue|0 + end + end + ) + (func $possibly-null/testWhile2 (param $a i32) (param $b i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + loop $while-continue|0 + local.get $a + if + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $a + i32.store + i32.const 1 + i32.eqz + drop + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $possibly-null/testWhile3 (param $a i32) (param $b i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + loop $while-continue|0 + local.get $a + if + i32.const 0 + drop + local.get $b + if + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $a + i32.store + i32.const 0 + drop + end + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $possibly-null/requireNonNull (param $a i32) (result i32) + local.get $a + return + ) + (func $possibly-null/testLogicalAndMulti (param $a i32) (param $b i32) + local.get $a + if (result i32) + local.get $b + else + i32.const 0 + end + if + i32.const 0 + drop + i32.const 0 + drop + else + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.eqz + drop + end + ) + (func $possibly-null/testLogicalOrMulti (param $a i32) (param $b i32) + local.get $a + i32.eqz + if (result i32) + i32.const 1 + else + local.get $b + i32.eqz + end + if + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.eqz + drop + else + i32.const 0 + drop + i32.const 0 + drop + end + ) + (func $possibly-null/testAssign (param $a i32) (param $b i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $a + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $possibly-null/testNeverNull (param $a i32) + local.get $a + if + local.get $a + drop + end + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 32800 + i32.const 32848 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $possibly-null/testLogicalAnd (param $a i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + if (result i32) + local.get $a + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $possibly-null/requireNonNull + else + i32.const 0 + end + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $possibly-null/testLogicalOr (param $a i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + i32.eqz + if (result i32) + i32.const 1 + else + local.get $a + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $possibly-null/requireNonNull + i32.const 0 + i32.ne + end + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testTrue (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testTrue + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testFalseElse (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testFalseElse + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testFalseContinuation (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testFalseContinuation + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testNeNull (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testNeNull + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testEqNullElse (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testEqNullElse + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testEqNullContinuation (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testEqNullContinuation + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testNotEqNull (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testNotEqNull + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testNotNeNullElse (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testNotNeNullElse + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testNotNeNullContinuation (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testNotNeNullContinuation + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testWhile (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testWhile + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testWhile2 (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $possibly-null/testWhile2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testWhile3 (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $possibly-null/testWhile3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testLogicalAnd (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testLogicalAnd + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testLogicalOr (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testLogicalOr + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testLogicalAndMulti (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $possibly-null/testLogicalAndMulti + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testLogicalOrMulti (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $possibly-null/testLogicalOrMulti + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testAssign (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $possibly-null/testAssign + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testNeverNull (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testNeverNull + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/possibly-null.json b/tests/compiler/possibly-null.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/possibly-null.json +++ b/tests/compiler/possibly-null.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/possibly-null.optimized.wat b/tests/compiler/possibly-null.optimized.wat deleted file mode 100644 index cb9bd243f8..0000000000 --- a/tests/compiler/possibly-null.optimized.wat +++ /dev/null @@ -1,63 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) - (memory $0 0) - (export "memory" (memory $0)) - (export "testTrue" (func $possibly-null/testTrue)) - (export "testFalseElse" (func $possibly-null/testTrue)) - (export "testFalseContinuation" (func $possibly-null/testTrue)) - (export "testNeNull" (func $possibly-null/testTrue)) - (export "testEqNullElse" (func $possibly-null/testTrue)) - (export "testEqNullContinuation" (func $possibly-null/testTrue)) - (export "testNotEqNull" (func $possibly-null/testTrue)) - (export "testNotNeNullElse" (func $possibly-null/testTrue)) - (export "testNotNeNullContinuation" (func $possibly-null/testTrue)) - (export "testWhile" (func $possibly-null/testWhile)) - (export "testWhile2" (func $possibly-null/testWhile2)) - (export "testWhile3" (func $possibly-null/testWhile3)) - (export "testLogicalAnd" (func $possibly-null/testTrue)) - (export "testLogicalOr" (func $possibly-null/testTrue)) - (export "testLogicalAndMulti" (func $possibly-null/testLogicalAndMulti)) - (export "testLogicalOrMulti" (func $possibly-null/testLogicalAndMulti)) - (export "testAssign" (func $possibly-null/testLogicalAndMulti)) - (export "testNeverNull" (func $possibly-null/testTrue)) - (func $possibly-null/testTrue (param $0 i32) - nop - ) - (func $possibly-null/testWhile (param $0 i32) - loop $while-continue|0 - local.get $0 - if - i32.const 0 - local.set $0 - br $while-continue|0 - end - end - ) - (func $possibly-null/testWhile2 (param $0 i32) (param $1 i32) - loop $while-continue|0 - local.get $0 - if - local.get $1 - local.set $0 - br $while-continue|0 - end - end - ) - (func $possibly-null/testWhile3 (param $0 i32) (param $1 i32) - loop $while-continue|0 - local.get $0 - if - local.get $1 - local.get $0 - local.get $1 - select - local.set $0 - br $while-continue|0 - end - end - ) - (func $possibly-null/testLogicalAndMulti (param $0 i32) (param $1 i32) - nop - ) -) diff --git a/tests/compiler/possibly-null.release.wat b/tests/compiler/possibly-null.release.wat new file mode 100644 index 0000000000..b681c5b383 --- /dev/null +++ b/tests/compiler/possibly-null.release.wat @@ -0,0 +1,345 @@ +(module + (type $0 (func (param i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33792)) + (memory $0 0) + (export "memory" (memory $0)) + (export "testTrue" (func $export:possibly-null/testTrue)) + (export "testFalseElse" (func $export:possibly-null/testTrue)) + (export "testFalseContinuation" (func $export:possibly-null/testFalseContinuation)) + (export "testNeNull" (func $export:possibly-null/testTrue)) + (export "testEqNullElse" (func $export:possibly-null/testTrue)) + (export "testEqNullContinuation" (func $export:possibly-null/testFalseContinuation)) + (export "testNotEqNull" (func $export:possibly-null/testTrue)) + (export "testNotNeNullElse" (func $export:possibly-null/testTrue)) + (export "testNotNeNullContinuation" (func $export:possibly-null/testFalseContinuation)) + (export "testWhile" (func $export:possibly-null/testWhile)) + (export "testWhile2" (func $export:possibly-null/testWhile2)) + (export "testWhile3" (func $export:possibly-null/testWhile3)) + (export "testLogicalAnd" (func $export:possibly-null/testLogicalAnd)) + (export "testLogicalOr" (func $export:possibly-null/testLogicalAnd)) + (export "testLogicalAndMulti" (func $export:possibly-null/testLogicalAndMulti)) + (export "testLogicalOrMulti" (func $export:possibly-null/testLogicalAndMulti)) + (export "testAssign" (func $export:possibly-null/testAssign)) + (export "testNeverNull" (func $export:possibly-null/testTrue)) + (func $export:possibly-null/testTrue (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testFalseContinuation (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$possibly-null/testFalseContinuation$12 + local.get $0 + i32.eqz + br_if $__inlined_func$possibly-null/testFalseContinuation$12 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testWhile (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + loop $while-continue|0 + local.get $0 + if + i32.const 0 + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testWhile2 (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + loop $while-continue|0 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $0 + i32.store + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:possibly-null/testWhile3 (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + loop $while-continue|0 + local.get $0 + if + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.set $0 + end + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:possibly-null/testLogicalAnd (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:possibly-null/testLogicalAndMulti (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testAssign (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/possibly-null.untouched.wat b/tests/compiler/possibly-null.untouched.wat deleted file mode 100644 index 1a3b0079da..0000000000 --- a/tests/compiler/possibly-null.untouched.wat +++ /dev/null @@ -1,460 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "testTrue" (func $possibly-null/testTrue)) - (export "testFalseElse" (func $possibly-null/testFalseElse)) - (export "testFalseContinuation" (func $possibly-null/testFalseContinuation)) - (export "testNeNull" (func $possibly-null/testNeNull)) - (export "testEqNullElse" (func $possibly-null/testEqNullElse)) - (export "testEqNullContinuation" (func $possibly-null/testEqNullContinuation)) - (export "testNotEqNull" (func $possibly-null/testNotEqNull)) - (export "testNotNeNullElse" (func $possibly-null/testNotNeNullElse)) - (export "testNotNeNullContinuation" (func $possibly-null/testNotNeNullContinuation)) - (export "testWhile" (func $possibly-null/testWhile)) - (export "testWhile2" (func $possibly-null/testWhile2)) - (export "testWhile3" (func $possibly-null/testWhile3)) - (export "testLogicalAnd" (func $possibly-null/testLogicalAnd)) - (export "testLogicalOr" (func $possibly-null/testLogicalOr)) - (export "testLogicalAndMulti" (func $possibly-null/testLogicalAndMulti)) - (export "testLogicalOrMulti" (func $possibly-null/testLogicalOrMulti)) - (export "testAssign" (func $possibly-null/testAssign)) - (export "testNeverNull" (func $possibly-null/testNeverNull)) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $possibly-null/testTrue (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - if - i32.const 0 - drop - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testFalseElse (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.eqz - if - local.get $0 - call $~lib/rt/stub/__release - return - else - i32.const 0 - drop - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testFalseContinuation (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.eqz - if - local.get $0 - call $~lib/rt/stub/__release - return - end - i32.const 0 - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testNeNull (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - i32.ne - if - i32.const 0 - drop - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testEqNullElse (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - i32.eq - if - local.get $0 - call $~lib/rt/stub/__release - return - else - i32.const 0 - drop - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testEqNullContinuation (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - i32.eq - if - local.get $0 - call $~lib/rt/stub/__release - return - end - i32.const 0 - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testNotEqNull (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - drop - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testNotNeNullElse (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - local.get $0 - call $~lib/rt/stub/__release - return - else - i32.const 0 - drop - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testNotNeNullContinuation (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - local.get $0 - call $~lib/rt/stub/__release - return - end - i32.const 0 - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testWhile (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - i32.const 0 - drop - i32.const 0 - local.tee $2 - local.get $0 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $0 - i32.const 1 - i32.eqz - drop - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testWhile2 (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - loop $while-continue|0 - local.get $0 - local.set $2 - local.get $2 - if - i32.const 0 - drop - local.get $1 - local.tee $3 - local.get $0 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - end - local.get $3 - local.set $0 - i32.const 1 - i32.eqz - drop - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testWhile3 (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - loop $while-continue|0 - local.get $0 - local.set $2 - local.get $2 - if - i32.const 0 - drop - local.get $1 - if - local.get $1 - local.tee $3 - local.get $0 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - end - local.get $3 - local.set $0 - i32.const 0 - drop - end - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $possibly-null/requireNonNull (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - ) - (func $possibly-null/testLogicalAnd (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - if (result i32) - local.get $0 - call $possibly-null/requireNonNull - local.tee $1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - else - i32.const 0 - end - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testLogicalOr (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $possibly-null/requireNonNull - local.tee $1 - i32.const 0 - i32.ne - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - end - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testLogicalAndMulti (param $0 i32) (param $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - if (result i32) - local.get $1 - else - i32.const 0 - end - if - i32.const 0 - drop - i32.const 0 - drop - else - i32.const 1 - i32.eqz - drop - i32.const 1 - i32.eqz - drop - end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testLogicalOrMulti (param $0 i32) (param $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $1 - i32.eqz - end - if - i32.const 1 - i32.eqz - drop - i32.const 1 - i32.eqz - drop - else - i32.const 0 - drop - i32.const 0 - drop - end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testAssign (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - local.tee $2 - local.get $0 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $0 - i32.const 0 - drop - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testNeverNull (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - if - local.get $0 - drop - end - local.get $0 - call $~lib/rt/stub/__release - ) -) diff --git a/tests/compiler/rc/global-init.json b/tests/compiler/rc/global-init.json deleted file mode 100644 index 9f7878d475..0000000000 --- a/tests/compiler/rc/global-init.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file diff --git a/tests/compiler/rc/global-init.optimized.wat b/tests/compiler/rc/global-init.optimized.wat deleted file mode 100644 index 513d88c4a4..0000000000 --- a/tests/compiler/rc/global-init.optimized.wat +++ /dev/null @@ -1,7 +0,0 @@ -(module - (memory $0 1) - (data (i32.const 1028) "\01\00\00\00\01") - (data (i32.const 1040) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1088) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (export "memory" (memory $0)) -) diff --git a/tests/compiler/rc/global-init.ts b/tests/compiler/rc/global-init.ts deleted file mode 100644 index 54d5402294..0000000000 --- a/tests/compiler/rc/global-init.ts +++ /dev/null @@ -1,14 +0,0 @@ -function getRef(): string { - return ""; -} - -// Assignment of a return value picks up its delayed release state and skips -// one set of retain/release. - -var a: string = getRef(); -var b = getRef(); // same, but inferred - -// Unleak - -a = /* __retainRelease( */ changetype(0) /* , a) */; -b = /* __retainRelease( */ changetype(0) /* , a) */; diff --git a/tests/compiler/rc/global-init.untouched.wat b/tests/compiler/rc/global-init.untouched.wat deleted file mode 100644 index bcb9c93bde..0000000000 --- a/tests/compiler/rc/global-init.untouched.wat +++ /dev/null @@ -1,885 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (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))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 32) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 80) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (table $0 1 funcref) - (global $rc/global-init/a (mut i32) (i32.const 0)) - (global $rc/global-init/b (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 128)) - (export "memory" (memory $0)) - (start $~start) - (func $rc/global-init/getRef (result i32) - i32.const 32 - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $start:rc/global-init - (local $0 i32) - (local $1 i32) - call $rc/global-init/getRef - global.set $rc/global-init/a - call $rc/global-init/getRef - global.set $rc/global-init/b - i32.const 0 - local.tee $0 - global.get $rc/global-init/a - local.tee $1 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $0 - global.set $rc/global-init/a - i32.const 0 - local.tee $1 - global.get $rc/global-init/b - local.tee $0 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - end - local.get $1 - global.set $rc/global-init/b - ) - (func $~start - call $start:rc/global-init - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/rc/local-init.json b/tests/compiler/rc/local-init.json deleted file mode 100644 index 9f7878d475..0000000000 --- a/tests/compiler/rc/local-init.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file diff --git a/tests/compiler/rc/local-init.optimized.wat b/tests/compiler/rc/local-init.optimized.wat deleted file mode 100644 index a3e22c6a0e..0000000000 --- a/tests/compiler/rc/local-init.optimized.wat +++ /dev/null @@ -1,1056 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1028) "\01\00\00\00\01") - (data (i32.const 1040) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1088) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1152) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1056 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1056 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1200 - local.set $1 - i32.const 1200 - i32.const 0 - i32.store - i32.const 2768 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1200 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1200 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1200 - i32.const 2784 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1200 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1056 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.lt_u - if - i32.const 0 - i32.const 1056 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.tee $3 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - i32.const 16 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - call $~lib/rt/rtrace/onalloc - local.get $1 - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - local.tee $0 - i32.const 1200 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1168 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.const 1200 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1168 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1200 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1168 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1168 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/rc/local-init.ts b/tests/compiler/rc/local-init.ts deleted file mode 100644 index d15be6586a..0000000000 --- a/tests/compiler/rc/local-init.ts +++ /dev/null @@ -1,26 +0,0 @@ -{ - // Normal assignment will retain and release. - - let a = /* __retain( */ "" /* ) */; - // __release(a) -} - -function getRef(): string { - return /* __retain( */ "" /* ) */; -} - -{ - // Assignment of a return value picks up its skipped autorelease - - let b = getRef(); - // __release(b); -} - -class Ref {} - -{ - // Assignment of an instantiation picks up its skipped autorelease - - let c = new Ref(); - // __release(c); -} diff --git a/tests/compiler/rc/local-init.untouched.wat b/tests/compiler/rc/local-init.untouched.wat deleted file mode 100644 index 05fbb2d944..0000000000 --- a/tests/compiler/rc/local-init.untouched.wat +++ /dev/null @@ -1,1738 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (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))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 32) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 80) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 144) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/heap/__heap_base i32 (i32.const 192)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $rc/local-init/getRef (result i32) - i32.const 32 - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 96 - i32.const 48 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $rc/local-init/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $start:rc/local-init - (local $0 i32) - i32.const 32 - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - call $rc/local-init/getRef - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - call $rc/local-init/Ref#constructor - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~start - call $start:rc/local-init - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/rc/logical-and-mismatch.json b/tests/compiler/rc/logical-and-mismatch.json deleted file mode 100644 index 9f7878d475..0000000000 --- a/tests/compiler/rc/logical-and-mismatch.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file diff --git a/tests/compiler/rc/logical-and-mismatch.optimized.wat b/tests/compiler/rc/logical-and-mismatch.optimized.wat deleted file mode 100644 index ed8cf871e1..0000000000 --- a/tests/compiler/rc/logical-and-mismatch.optimized.wat +++ /dev/null @@ -1,1098 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $rc/logical-and-mismatch/gloRef (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1184 - local.set $1 - i32.const 1184 - i32.const 0 - i32.store - i32.const 2752 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1184 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1184 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1184 - i32.const 2768 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1184 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.tee $3 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - i32.const 16 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - call $~lib/rt/rtrace/onalloc - local.get $1 - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1184 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $rc/logical-and-mismatch/Ref#constructor (result i32) - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1184 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~start - (local $0 i32) - call $rc/logical-and-mismatch/Ref#constructor - global.set $rc/logical-and-mismatch/gloRef - call $rc/logical-and-mismatch/Ref#constructor - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-and-mismatch/gloRef - call $~lib/rt/pure/__retain - else - local.get $0 - end - call $~lib/rt/pure/__release - global.get $rc/logical-and-mismatch/gloRef - local.tee $0 - if (result i32) - call $rc/logical-and-mismatch/Ref#constructor - else - local.get $0 - call $~lib/rt/pure/__retain - end - call $~lib/rt/pure/__release - call $rc/logical-and-mismatch/Ref#constructor - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__release - call $rc/logical-and-mismatch/Ref#constructor - else - local.get $0 - end - call $~lib/rt/pure/__release - global.get $rc/logical-and-mismatch/gloRef - call $~lib/rt/pure/__release - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1184 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/rc/logical-and-mismatch.ts b/tests/compiler/rc/logical-and-mismatch.ts deleted file mode 100644 index 966c8b7cc9..0000000000 --- a/tests/compiler/rc/logical-and-mismatch.ts +++ /dev/null @@ -1,29 +0,0 @@ -class Ref {} - -function getRef(): Ref { - return new Ref(); -} - -var gloRef = new Ref(); - -{ - // Left skips autorelease, right doesn't - let a = /* t = */ getRef() && /* __release(t), */ gloRef; - // __release(a) -} -{ - // Right skips autorelease, left doesn't - let b = gloRef && getRef(); -} -{ - // Both skip autorelease, for completeness - let c = getRef() && getRef(); -} -{ - // Both don't - let d = gloRef && gloRef; -} - -// Unleak - -__release(changetype(gloRef)); diff --git a/tests/compiler/rc/logical-and-mismatch.untouched.wat b/tests/compiler/rc/logical-and-mismatch.untouched.wat deleted file mode 100644 index 8bc73c87c9..0000000000 --- a/tests/compiler/rc/logical-and-mismatch.untouched.wat +++ /dev/null @@ -1,1778 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (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))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $rc/logical-and-mismatch/gloRef (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 176)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 80 - i32.const 32 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $rc/logical-and-mismatch/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $rc/logical-and-mismatch/getRef (result i32) - i32.const 0 - call $rc/logical-and-mismatch/Ref#constructor - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $start:rc/logical-and-mismatch - (local $0 i32) - i32.const 0 - call $rc/logical-and-mismatch/Ref#constructor - global.set $rc/logical-and-mismatch/gloRef - call $rc/logical-and-mismatch/getRef - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-and-mismatch/gloRef - call $~lib/rt/pure/__retain - else - local.get $0 - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-and-mismatch/gloRef - local.tee $0 - if (result i32) - call $rc/logical-and-mismatch/getRef - else - local.get $0 - call $~lib/rt/pure/__retain - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - call $rc/logical-and-mismatch/getRef - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__release - call $rc/logical-and-mismatch/getRef - else - local.get $0 - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-and-mismatch/gloRef - local.tee $0 - if (result i32) - global.get $rc/logical-and-mismatch/gloRef - else - local.get $0 - end - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-and-mismatch/gloRef - call $~lib/rt/pure/__release - ) - (func $~start - call $start:rc/logical-and-mismatch - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/rc/logical-or-mismatch.json b/tests/compiler/rc/logical-or-mismatch.json deleted file mode 100644 index 9f7878d475..0000000000 --- a/tests/compiler/rc/logical-or-mismatch.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file diff --git a/tests/compiler/rc/logical-or-mismatch.optimized.wat b/tests/compiler/rc/logical-or-mismatch.optimized.wat deleted file mode 100644 index 28dd6e3978..0000000000 --- a/tests/compiler/rc/logical-or-mismatch.optimized.wat +++ /dev/null @@ -1,1098 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $rc/logical-or-mismatch/gloRef (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1184 - local.set $1 - i32.const 1184 - i32.const 0 - i32.store - i32.const 2752 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1184 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1184 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1184 - i32.const 2768 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1184 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.tee $3 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - i32.const 16 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - call $~lib/rt/rtrace/onalloc - local.get $1 - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1184 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $rc/logical-or-mismatch/Ref#constructor (result i32) - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1184 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~start - (local $0 i32) - call $rc/logical-or-mismatch/Ref#constructor - global.set $rc/logical-or-mismatch/gloRef - call $rc/logical-or-mismatch/Ref#constructor - local.tee $0 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-or-mismatch/gloRef - call $~lib/rt/pure/__retain - end - call $~lib/rt/pure/__release - global.get $rc/logical-or-mismatch/gloRef - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - call $rc/logical-or-mismatch/Ref#constructor - end - call $~lib/rt/pure/__release - call $rc/logical-or-mismatch/Ref#constructor - local.tee $0 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/rt/pure/__release - call $rc/logical-or-mismatch/Ref#constructor - end - call $~lib/rt/pure/__release - global.get $rc/logical-or-mismatch/gloRef - call $~lib/rt/pure/__release - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1184 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/rc/logical-or-mismatch.ts b/tests/compiler/rc/logical-or-mismatch.ts deleted file mode 100644 index ef5ae700f1..0000000000 --- a/tests/compiler/rc/logical-or-mismatch.ts +++ /dev/null @@ -1,29 +0,0 @@ -class Ref {} - -function getRef(): Ref { - return new Ref(); -} - -var gloRef = new Ref(); - -{ - // Left skips autorelease, right doesn't - let a = /* t = */ getRef() || /* __release(t), */ gloRef; - // __release(a) -} -{ - // Right skips autorelease, left doesn't - let b = gloRef || getRef(); -} -{ - // Both skip autorelease, for completeness - let c = getRef() || getRef(); -} -{ - // Both don't - let d = gloRef || gloRef; -} - -// Unleak - -__release(changetype(gloRef)); diff --git a/tests/compiler/rc/logical-or-mismatch.untouched.wat b/tests/compiler/rc/logical-or-mismatch.untouched.wat deleted file mode 100644 index 16b203f1d7..0000000000 --- a/tests/compiler/rc/logical-or-mismatch.untouched.wat +++ /dev/null @@ -1,1778 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (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))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $rc/logical-or-mismatch/gloRef (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 176)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 80 - i32.const 32 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $rc/logical-or-mismatch/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $rc/logical-or-mismatch/getRef (result i32) - i32.const 0 - call $rc/logical-or-mismatch/Ref#constructor - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $start:rc/logical-or-mismatch - (local $0 i32) - i32.const 0 - call $rc/logical-or-mismatch/Ref#constructor - global.set $rc/logical-or-mismatch/gloRef - call $rc/logical-or-mismatch/getRef - local.tee $0 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-or-mismatch/gloRef - call $~lib/rt/pure/__retain - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-or-mismatch/gloRef - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - call $rc/logical-or-mismatch/getRef - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - call $rc/logical-or-mismatch/getRef - local.tee $0 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/rt/pure/__release - call $rc/logical-or-mismatch/getRef - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-or-mismatch/gloRef - local.tee $0 - if (result i32) - local.get $0 - else - global.get $rc/logical-or-mismatch/gloRef - end - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-or-mismatch/gloRef - call $~lib/rt/pure/__release - ) - (func $~start - call $start:rc/logical-or-mismatch - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/rc/optimize.json b/tests/compiler/rc/optimize.json deleted file mode 100644 index 8ee35e6e7f..0000000000 --- a/tests/compiler/rc/optimize.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} diff --git a/tests/compiler/rc/optimize.optimized.wat b/tests/compiler/rc/optimize.optimized.wat deleted file mode 100644 index 995319d8fa..0000000000 --- a/tests/compiler/rc/optimize.optimized.wat +++ /dev/null @@ -1,1240 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1072) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1120) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1184) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "eliminated_v" (func $rc/optimize/eliminated_v)) - (export "eliminated_vi" (func $rc/optimize/eliminated_vi)) - (export "eliminated_vii" (func $rc/optimize/eliminated_vii)) - (export "eliminated_viii" (func $rc/optimize/eliminated_viii)) - (export "eliminated_rr" (func $rc/optimize/eliminated_rr)) - (export "getRef" (func $rc/optimize/getRef)) - (export "OptimizeARC.eliminates.linearArgument" (func $rc/optimize/eliminated_vi)) - (export "OptimizeARC.eliminates.linearLocal" (func $rc/optimize/eliminated_vi)) - (export "OptimizeARC.eliminates.linearChain" (func $rc/optimize/OptimizeARC.eliminates.linearChain)) - (export "OptimizeARC.eliminates.balancedReleases" (func $rc/optimize/eliminated_vii)) - (export "OptimizeARC.eliminates.partialReleases" (func $rc/optimize/OptimizeARC.eliminates.partialReleases)) - (export "OptimizeARC.eliminates.balancedRetains" (func $rc/optimize/eliminated_viii)) - (export "OptimizeARC.eliminates.balancedInsideLoop" (func $rc/optimize/OptimizeARC.eliminates.balancedInsideLoop)) - (export "OptimizeARC.eliminates.balancedOutsideLoop" (func $rc/optimize/eliminated_vii)) - (export "OptimizeARC.eliminates.balancedInsideOutsideLoop" (func $rc/optimize/OptimizeARC.eliminates.balancedInsideOutsideLoop)) - (export "OptimizeARC.eliminates.balancedInsideOutsideLoopWithBranch" (func $rc/optimize/OptimizeARC.eliminates.balancedInsideOutsideLoopWithBranch)) - (export "OptimizeARC.eliminates.replace" (func $rc/optimize/OptimizeARC.eliminates.replace)) - (export "OptimizeARC.eliminates.replaceAlreadyRetained" (func $rc/optimize/eliminated_rr)) - (export "OptimizeARC.keeps.partialRetains" (func $rc/optimize/OptimizeARC.keeps.partialRetains)) - (export "OptimizeARC.keeps.reachesReturn" (func $rc/optimize/OptimizeARC.keeps.reachesReturn)) - (export "FinalizeARC.eliminates.unnecessaryAllocation" (func $rc/optimize/eliminated_v)) - (export "FinalizeARC.eliminates.unnecessaryPair" (func $rc/optimize/eliminated_vi)) - (export "FinalizeARC.eliminates.unnecessaryStaticPair" (func $rc/optimize/eliminated_v)) - (export "FinalizeARC.eliminates.unnecessaryStaticRetain" (func $rc/optimize/eliminated_v)) - (export "FinalizeARC.eliminates.unnecessaryStaticRelease" (func $rc/optimize/eliminated_v)) - (export "FinalizeARC.keeps.dynamicRetain" (func $rc/optimize/FinalizeARC.keeps.dynamicRetain)) - (export "FinalizeARC.keeps.dynamicRelease" (func $rc/optimize/FinalizeARC.keeps.dynamicRelease)) - (func $rc/optimize/eliminated_v - nop - ) - (func $rc/optimize/eliminated_vi (param $0 i32) - nop - ) - (func $rc/optimize/eliminated_vii (param $0 i32) (param $1 i32) - nop - ) - (func $rc/optimize/eliminated_viii (param $0 i32) (param $1 i32) (param $2 i32) - nop - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1204 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1040 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1088 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1088 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1216 - local.set $1 - i32.const 1216 - i32.const 0 - i32.store - i32.const 2784 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1216 - i32.const 2800 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1216 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1088 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.lt_u - if - i32.const 0 - i32.const 1088 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.tee $3 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - i32.const 16 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - call $~lib/rt/rtrace/onalloc - local.get $1 - ) - (func $rc/optimize/getRef (result i32) - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1204 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $rc/optimize/eliminated_rr (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - call $~lib/rt/pure/__retain - local.set $1 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $rc/optimize/OptimizeARC.eliminates.linearChain (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/rt/pure/__retain - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.eliminates.partialReleases (param $0 i32) (param $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - if - local.get $0 - call $~lib/rt/pure/__release - end - ) - (func $rc/optimize/OptimizeARC.eliminates.balancedInsideLoop (param $0 i32) (param $1 i32) - loop $while-continue|0 - local.get $1 - if - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/rt/pure/__release - br $while-continue|0 - end - end - ) - (func $rc/optimize/OptimizeARC.eliminates.balancedInsideOutsideLoop (param $0 i32) (param $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - loop $while-continue|0 - local.get $1 - if - local.get $0 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.eliminates.balancedInsideOutsideLoopWithBranch (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - loop $while-continue|0 - local.get $1 - if - local.get $2 - if - local.get $0 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.eliminates.replace (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $2 - local.tee $1 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.keeps.partialRetains (param $0 i32) (param $1 i32) - local.get $1 - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - local.get $0 - end - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.keeps.reachesReturn (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - if - local.get $0 - return - end - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $rc/optimize/FinalizeARC.keeps.dynamicRetain (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - drop - ) - (func $rc/optimize/FinalizeARC.keeps.dynamicRelease (param $0 i32) - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1040 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1204 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1040 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1040 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/rc/optimize.ts b/tests/compiler/rc/optimize.ts deleted file mode 100644 index e041871c8a..0000000000 --- a/tests/compiler/rc/optimize.ts +++ /dev/null @@ -1,177 +0,0 @@ -// see: Binaryen/src/passses/PostAssemblyscript.cpp - -export function eliminated_v(): void {} -export function eliminated_vi(a: i32): void {} -export function eliminated_vii(a: i32, b: i32): void {} -export function eliminated_viii(a: i32, b: i32, c: i32): void {} -export function eliminated_rr(a: Ref): Ref { return getRef(); } - -class Ref {} - -export function getRef(): Ref { // don't inline - return new Ref(); -} - -export namespace OptimizeARC { - - // Patterns the OptimizeARC pass eliminates - export namespace eliminates { - - export function linearArgument(a: usize): void { - a = __retain(a); - __release(a); - } - - export function linearLocal(a: usize): void { - var b = __retain(a); - __release(b); - } - - export function linearChain(a: usize): void { - var b = __retain(a); - var c = __retain(b); - var d = __retain(c); - __release(d); - __release(c); - __release(b); - } - - export function balancedReleases(a: usize, cond: bool): void { - var b = __retain(a); - if (cond) { - __release(b); - } else { - __release(b); - } - } - - export function partialReleases(a: usize, cond: bool): void { - // technically invalid and assumed to be never emitted - var b = __retain(a); - if (cond) { - __release(b); - } - } - - export function balancedRetains(a: usize, cond1: bool, cond2: bool): void { - var b: usize; - if (cond1) { - if (cond2) { - b = __retain(a); - } else { - b = __retain(a); - } - } else { - b = __retain(a); - } - __release(b); - } - - export function balancedInsideLoop(a: usize, cond: bool): void { - while (cond) { - a = __retain(a); - __release(a); - } - } - - export function balancedOutsideLoop(a: usize, cond: bool): void { - a = __retain(a); - while (cond) { - } - __release(a); - } - - export function balancedInsideOutsideLoop(a: usize, cond: bool): void { - a = __retain(a); - while (cond) { - __release(a); - a = __retain(a); - } - __release(a); - } - - export function balancedInsideOutsideLoopWithBranch(a: usize, cond1: bool, cond2: bool): void { - a = __retain(a); - while (cond1) { - if (cond2) { - __release(a); - return; - } - __release(a); - a = __retain(a); - } - __release(a); - } - - export function replace(a: Ref, b: Ref): void { - a = b; - } - - export function replaceAlreadyRetained(a: Ref): Ref { - a = getRef(); - return a; - } - } - - // Patterns the OptimizeARC pass keeps - export namespace keeps { - - export function partialRetains(a: usize, cond: bool): void { - // unbalanced - if (cond) { - a = __retain(a); - } - __release(a); // reaches retain and argument - } - - export function reachesReturn(a: usize, cond: bool): usize { - // reaches return - a = __retain(a); - if (cond) { - return a; - } - __release(a); - return 0; - } - - } -} - -export namespace FinalizeARC { - - // Patterns the FinalizeARC pass eliminates - export namespace eliminates { - - export function unnecessaryAllocation(): void { - __release(__retain(__alloc(1, 0))); - } - - export function unnecessaryPair(a: usize): void { - __release(__retain(a)); - } - - export function unnecessaryStaticPair(): void { - __release(__retain(changetype("a"))); - } - - export function unnecessaryStaticRetain(): void { - __retain(changetype("a")); - } - - export function unnecessaryStaticRelease(): void { - __release(changetype("a")); - } - } - - // Patterns the FinalizeARC pass keeps - export namespace keeps { - - export function dynamicRetain(a: usize): void { - a = __retain(a); - } - - export function dynamicRelease(a: usize): void { - __release(a); - } - } -} diff --git a/tests/compiler/rc/optimize.untouched.wat b/tests/compiler/rc/optimize.untouched.wat deleted file mode 100644 index a7367ce91f..0000000000 --- a/tests/compiler/rc/optimize.untouched.wat +++ /dev/null @@ -1,2030 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 64) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 112) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 176) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/heap/__heap_base i32 (i32.const 196)) - (export "memory" (memory $0)) - (export "eliminated_v" (func $rc/optimize/eliminated_v)) - (export "eliminated_vi" (func $rc/optimize/eliminated_vi)) - (export "eliminated_vii" (func $rc/optimize/eliminated_vii)) - (export "eliminated_viii" (func $rc/optimize/eliminated_viii)) - (export "eliminated_rr" (func $rc/optimize/eliminated_rr)) - (export "getRef" (func $rc/optimize/getRef)) - (export "OptimizeARC.eliminates.linearArgument" (func $rc/optimize/OptimizeARC.eliminates.linearArgument)) - (export "OptimizeARC.eliminates.linearLocal" (func $rc/optimize/OptimizeARC.eliminates.linearLocal)) - (export "OptimizeARC.eliminates.linearChain" (func $rc/optimize/OptimizeARC.eliminates.linearChain)) - (export "OptimizeARC.eliminates.balancedReleases" (func $rc/optimize/OptimizeARC.eliminates.balancedReleases)) - (export "OptimizeARC.eliminates.partialReleases" (func $rc/optimize/OptimizeARC.eliminates.partialReleases)) - (export "OptimizeARC.eliminates.balancedRetains" (func $rc/optimize/OptimizeARC.eliminates.balancedRetains)) - (export "OptimizeARC.eliminates.balancedInsideLoop" (func $rc/optimize/OptimizeARC.eliminates.balancedInsideLoop)) - (export "OptimizeARC.eliminates.balancedOutsideLoop" (func $rc/optimize/OptimizeARC.eliminates.balancedOutsideLoop)) - (export "OptimizeARC.eliminates.balancedInsideOutsideLoop" (func $rc/optimize/OptimizeARC.eliminates.balancedInsideOutsideLoop)) - (export "OptimizeARC.eliminates.balancedInsideOutsideLoopWithBranch" (func $rc/optimize/OptimizeARC.eliminates.balancedInsideOutsideLoopWithBranch)) - (export "OptimizeARC.eliminates.replace" (func $rc/optimize/OptimizeARC.eliminates.replace)) - (export "OptimizeARC.eliminates.replaceAlreadyRetained" (func $rc/optimize/OptimizeARC.eliminates.replaceAlreadyRetained)) - (export "OptimizeARC.keeps.partialRetains" (func $rc/optimize/OptimizeARC.keeps.partialRetains)) - (export "OptimizeARC.keeps.reachesReturn" (func $rc/optimize/OptimizeARC.keeps.reachesReturn)) - (export "FinalizeARC.eliminates.unnecessaryAllocation" (func $rc/optimize/FinalizeARC.eliminates.unnecessaryAllocation)) - (export "FinalizeARC.eliminates.unnecessaryPair" (func $rc/optimize/FinalizeARC.eliminates.unnecessaryPair)) - (export "FinalizeARC.eliminates.unnecessaryStaticPair" (func $rc/optimize/FinalizeARC.eliminates.unnecessaryStaticPair)) - (export "FinalizeARC.eliminates.unnecessaryStaticRetain" (func $rc/optimize/FinalizeARC.eliminates.unnecessaryStaticRetain)) - (export "FinalizeARC.eliminates.unnecessaryStaticRelease" (func $rc/optimize/FinalizeARC.eliminates.unnecessaryStaticRelease)) - (export "FinalizeARC.keeps.dynamicRetain" (func $rc/optimize/FinalizeARC.keeps.dynamicRetain)) - (export "FinalizeARC.keeps.dynamicRelease" (func $rc/optimize/FinalizeARC.keeps.dynamicRelease)) - (func $rc/optimize/eliminated_v - nop - ) - (func $rc/optimize/eliminated_vi (param $0 i32) - nop - ) - (func $rc/optimize/eliminated_vii (param $0 i32) (param $1 i32) - nop - ) - (func $rc/optimize/eliminated_viii (param $0 i32) (param $1 i32) (param $2 i32) - nop - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 128 - i32.const 80 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $rc/optimize/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $rc/optimize/getRef (result i32) - i32.const 0 - call $rc/optimize/Ref#constructor - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $rc/optimize/eliminated_rr (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - call $rc/optimize/getRef - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $rc/optimize/OptimizeARC.eliminates.linearArgument (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.eliminates.linearLocal (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.eliminates.linearChain (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.eliminates.balancedReleases (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - if - local.get $2 - call $~lib/rt/pure/__release - else - local.get $2 - call $~lib/rt/pure/__release - end - ) - (func $rc/optimize/OptimizeARC.eliminates.partialReleases (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - if - local.get $2 - call $~lib/rt/pure/__release - end - ) - (func $rc/optimize/OptimizeARC.eliminates.balancedRetains (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - if - local.get $2 - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - else - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - end - else - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.eliminates.balancedInsideLoop (param $0 i32) (param $1 i32) - (local $2 i32) - loop $while-continue|0 - local.get $1 - local.set $2 - local.get $2 - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - br $while-continue|0 - end - end - ) - (func $rc/optimize/OptimizeARC.eliminates.balancedOutsideLoop (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - loop $while-continue|0 - local.get $1 - local.set $2 - local.get $2 - if - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.eliminates.balancedInsideOutsideLoop (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - loop $while-continue|0 - local.get $1 - local.set $2 - local.get $2 - if - local.get $0 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.eliminates.balancedInsideOutsideLoopWithBranch (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - loop $while-continue|0 - local.get $1 - local.set $3 - local.get $3 - if - local.get $2 - if - local.get $0 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.eliminates.replace (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - local.tee $2 - local.get $0 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.eliminates.replaceAlreadyRetained (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - call $rc/optimize/getRef - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - local.set $0 - local.get $0 - ) - (func $rc/optimize/OptimizeARC.keeps.partialRetains (param $0 i32) (param $1 i32) - local.get $1 - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/OptimizeARC.keeps.reachesReturn (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - if - local.get $0 - return - end - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $rc/optimize/FinalizeARC.eliminates.unnecessaryAllocation - i32.const 1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - call $~lib/rt/pure/__release - ) - (func $rc/optimize/FinalizeARC.eliminates.unnecessaryPair (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - call $~lib/rt/pure/__release - ) - (func $rc/optimize/FinalizeARC.eliminates.unnecessaryStaticPair - i32.const 192 - call $~lib/rt/pure/__retain - call $~lib/rt/pure/__release - ) - (func $rc/optimize/FinalizeARC.eliminates.unnecessaryStaticRetain - i32.const 192 - call $~lib/rt/pure/__retain - drop - ) - (func $rc/optimize/FinalizeARC.eliminates.unnecessaryStaticRelease - i32.const 192 - call $~lib/rt/pure/__release - ) - (func $rc/optimize/FinalizeARC.keeps.dynamicRetain (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - ) - (func $rc/optimize/FinalizeARC.keeps.dynamicRelease (param $0 i32) - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/rc/rereturn.optimized.wat b/tests/compiler/rc/rereturn.optimized.wat deleted file mode 100644 index 1082f8c402..0000000000 --- a/tests/compiler/rc/rereturn.optimized.wat +++ /dev/null @@ -1,1195 +0,0 @@ -(module - (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_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (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 $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1184)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~start)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1232 - local.set $1 - i32.const 1232 - i32.const 0 - i32.store - i32.const 2800 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1232 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1232 - i32.const 2816 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1232 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1040 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1073741808 - i32.ge_u - if - i32.const 1088 - i32.const 1040 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1220 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1220 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~start - nop - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1220 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/rc/rereturn.ts b/tests/compiler/rc/rereturn.ts deleted file mode 100644 index bbf060bbad..0000000000 --- a/tests/compiler/rc/rereturn.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Validates that skipped autorelease state is preserved accross calls and returns. - -class Ref {} - -function getRef(): Ref { - return new Ref(); -} - -function rereturnRef(): Ref { - return getRef(); -} - -/* __release( */ rereturnRef() /* ) */; diff --git a/tests/compiler/rc/rereturn.untouched.wat b/tests/compiler/rc/rereturn.untouched.wat deleted file mode 100644 index 46ec808478..0000000000 --- a/tests/compiler/rc/rereturn.untouched.wat +++ /dev/null @@ -1,1724 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param 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))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/rt/__rtti_base i32 (i32.const 176)) - (global $~lib/heap/__heap_base i32 (i32.const 212)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 80 - i32.const 32 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $rc/rereturn/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $rc/rereturn/getRef (result i32) - i32.const 0 - call $rc/rereturn/Ref#constructor - ) - (func $rc/rereturn/rereturnRef (result i32) - call $rc/rereturn/getRef - ) - (func $start:rc/rereturn - call $rc/rereturn/rereturnRef - call $~lib/rt/pure/__release - ) - (func $~start - call $start:rc/rereturn - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 0 - drop - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/rc/ternary-mismatch.json b/tests/compiler/rc/ternary-mismatch.json deleted file mode 100644 index 9f7878d475..0000000000 --- a/tests/compiler/rc/ternary-mismatch.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file diff --git a/tests/compiler/rc/ternary-mismatch.optimized.wat b/tests/compiler/rc/ternary-mismatch.optimized.wat deleted file mode 100644 index e2dcc99097..0000000000 --- a/tests/compiler/rc/ternary-mismatch.optimized.wat +++ /dev/null @@ -1,1099 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $rc/ternary-mismatch/gloRef (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "test1" (func $rc/ternary-mismatch/test1)) - (export "test2" (func $rc/ternary-mismatch/test2)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1184 - local.set $1 - i32.const 1184 - i32.const 0 - i32.store - i32.const 2752 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1184 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1184 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1184 - i32.const 2768 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1184 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.tee $3 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - i32.const 16 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - call $~lib/rt/rtrace/onalloc - local.get $1 - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1184 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $rc/ternary-mismatch/Ref#constructor (result i32) - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - call $~lib/rt/pure/__retain - ) - (func $rc/ternary-mismatch/test1 (param $0 i32) (result i32) - local.get $0 - if (result i32) - call $rc/ternary-mismatch/Ref#constructor - else - global.get $rc/ternary-mismatch/gloRef - call $~lib/rt/pure/__retain - end - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1184 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $rc/ternary-mismatch/test2 (param $0 i32) (result i32) - local.get $0 - if (result i32) - global.get $rc/ternary-mismatch/gloRef - call $~lib/rt/pure/__retain - else - call $rc/ternary-mismatch/Ref#constructor - end - ) - (func $~start - call $rc/ternary-mismatch/Ref#constructor - global.set $rc/ternary-mismatch/gloRef - i32.const 1 - call $rc/ternary-mismatch/test1 - call $~lib/rt/pure/__release - i32.const 0 - call $rc/ternary-mismatch/test1 - call $~lib/rt/pure/__release - i32.const 1 - call $rc/ternary-mismatch/test2 - call $~lib/rt/pure/__release - i32.const 0 - call $rc/ternary-mismatch/test2 - call $~lib/rt/pure/__release - global.get $rc/ternary-mismatch/gloRef - call $~lib/rt/pure/__release - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1184 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/rc/ternary-mismatch.ts b/tests/compiler/rc/ternary-mismatch.ts deleted file mode 100644 index efc51fe182..0000000000 --- a/tests/compiler/rc/ternary-mismatch.ts +++ /dev/null @@ -1,30 +0,0 @@ -// Validates that an autorelease mismatch in the arms of a ternary expression -// is correctly resolved by lifting the respective other. - -class Ref {} - -function getRef(): Ref { - return new Ref(); -} - -var gloRef = new Ref(); - -export function test1(b: bool): Ref | null { - // ifThen skips autorelease, ifElse doesn't - return b ? getRef() : /* __retain( */ gloRef /* ) */; -} - -/* __release( */ test1(true) /* ) */; -/* __release( */ test1(false) /* ) */; - -export function test2(b: bool): Ref | null { - // ifElse skips autorelease, ifThen doesn't - return b ? /* __retain( */ gloRef /* ) */ : getRef(); -} - -/* __release( */ test2(true) /* ) */; -/* __release( */ test2(false) /* ) */; - -// Unleak - -__release(changetype(gloRef)); diff --git a/tests/compiler/rc/ternary-mismatch.untouched.wat b/tests/compiler/rc/ternary-mismatch.untouched.wat deleted file mode 100644 index 6dffb7d72d..0000000000 --- a/tests/compiler/rc/ternary-mismatch.untouched.wat +++ /dev/null @@ -1,1762 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param 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))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $rc/ternary-mismatch/gloRef (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 176)) - (export "memory" (memory $0)) - (export "test1" (func $rc/ternary-mismatch/test1)) - (export "test2" (func $rc/ternary-mismatch/test2)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 80 - i32.const 32 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $rc/ternary-mismatch/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $rc/ternary-mismatch/getRef (result i32) - i32.const 0 - call $rc/ternary-mismatch/Ref#constructor - ) - (func $rc/ternary-mismatch/test1 (param $0 i32) (result i32) - local.get $0 - if (result i32) - call $rc/ternary-mismatch/getRef - else - global.get $rc/ternary-mismatch/gloRef - call $~lib/rt/pure/__retain - end - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $rc/ternary-mismatch/test2 (param $0 i32) (result i32) - local.get $0 - if (result i32) - global.get $rc/ternary-mismatch/gloRef - call $~lib/rt/pure/__retain - else - call $rc/ternary-mismatch/getRef - end - ) - (func $start:rc/ternary-mismatch - i32.const 0 - call $rc/ternary-mismatch/Ref#constructor - global.set $rc/ternary-mismatch/gloRef - i32.const 1 - call $rc/ternary-mismatch/test1 - call $~lib/rt/pure/__release - i32.const 0 - call $rc/ternary-mismatch/test1 - call $~lib/rt/pure/__release - i32.const 1 - call $rc/ternary-mismatch/test2 - call $~lib/rt/pure/__release - i32.const 0 - call $rc/ternary-mismatch/test2 - call $~lib/rt/pure/__release - global.get $rc/ternary-mismatch/gloRef - call $~lib/rt/pure/__release - ) - (func $~start - call $start:rc/ternary-mismatch - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/recursive.debug.wat b/tests/compiler/recursive.debug.wat new file mode 100644 index 0000000000..4e54987682 --- /dev/null +++ b/tests/compiler/recursive.debug.wat @@ -0,0 +1,30 @@ +(module + (type $0 (func (param i32) (result i32))) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "fib" (func $recursive/fib)) + (export "memory" (memory $0)) + (func $recursive/fib (param $n i32) (result i32) + local.get $n + i32.const 1 + i32.le_s + if + i32.const 1 + return + end + local.get $n + i32.const 1 + i32.sub + call $recursive/fib + local.get $n + i32.const 2 + i32.sub + call $recursive/fib + i32.add + return + ) +) diff --git a/tests/compiler/recursive.json b/tests/compiler/recursive.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/recursive.json +++ b/tests/compiler/recursive.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/recursive.optimized.wat b/tests/compiler/recursive.optimized.wat deleted file mode 100644 index 35e55fcd28..0000000000 --- a/tests/compiler/recursive.optimized.wat +++ /dev/null @@ -1,24 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (memory $0 0) - (export "memory" (memory $0)) - (export "fib" (func $recursive/fib)) - (func $recursive/fib (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.le_s - if - i32.const 1 - return - end - local.get $0 - i32.const 1 - i32.sub - call $recursive/fib - local.get $0 - i32.const 2 - i32.sub - call $recursive/fib - i32.add - ) -) diff --git a/tests/compiler/recursive.release.wat b/tests/compiler/recursive.release.wat new file mode 100644 index 0000000000..ea69ed2fe6 --- /dev/null +++ b/tests/compiler/recursive.release.wat @@ -0,0 +1,24 @@ +(module + (type $0 (func (param i32) (result i32))) + (memory $0 0) + (export "fib" (func $recursive/fib)) + (export "memory" (memory $0)) + (func $recursive/fib (param $0 i32) (result i32) + local.get $0 + i32.const 1 + i32.le_s + if + i32.const 1 + return + end + local.get $0 + i32.const 1 + i32.sub + call $recursive/fib + local.get $0 + i32.const 2 + i32.sub + call $recursive/fib + i32.add + ) +) diff --git a/tests/compiler/recursive.untouched.wat b/tests/compiler/recursive.untouched.wat deleted file mode 100644 index 373e935e39..0000000000 --- a/tests/compiler/recursive.untouched.wat +++ /dev/null @@ -1,25 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "fib" (func $recursive/fib)) - (func $recursive/fib (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.le_s - if - i32.const 1 - return - end - local.get $0 - i32.const 1 - i32.sub - call $recursive/fib - local.get $0 - i32.const 2 - i32.sub - call $recursive/fib - i32.add - ) -) diff --git a/tests/compiler/reexport.debug.wat b/tests/compiler/reexport.debug.wat new file mode 100644 index 0000000000..9e784a9395 --- /dev/null +++ b/tests/compiler/reexport.debug.wat @@ -0,0 +1,2537 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $export/c i32 (i32.const 3)) + (global $exports/Animal.CAT i32 (i32.const 0)) + (global $exports/Animal.DOG i32 (i32.const 1)) + (global $exports/animals.Animal.CAT i32 (i32.const 0)) + (global $exports/animals.Animal.DOG i32 (i32.const 1)) + (global $exports/Car.TIRES i32 (i32.const 4)) + (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) + (global $exports/outer.inner.a i32 (i32.const 42)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $reexport/car (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 464)) + (global $~lib/memory/__data_end i32 (i32.const 488)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33256)) + (global $~lib/memory/__heap_base i32 (i32.const 33256)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00\00\00\00\00") + (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 464) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "add" (func $export/add)) + (export "renamed_sub" (func $export/sub)) + (export "renamed_mul" (func $export/mul)) + (export "rerenamed_mul" (func $export/mul)) + (export "a" (global $export/a)) + (export "renamed_b" (global $export/b)) + (export "renamed_c" (global $export/c)) + (export "rerenamed_c" (global $export/c)) + (export "renamed_add" (func $export/add)) + (export "rerenamed_sub" (func $export/mul)) + (export "default" (func $export-default/theDefault)) + (export "renamed_default" (func $export-default/theDefault)) + (export "memory" (memory $0)) + (start $~start) + (func $export/add (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $export/mul (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.mul + return + ) + (func $exports/add (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $exports/Car#set:doors (param $this i32) (param $doors i32) + local.get $this + local.get $doors + i32.store + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 272 + i32.const 336 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 144 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 80 + i32.const 416 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 80 + i32.const 144 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $exports/Car#get:doors (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $export/sub (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.sub + return + ) + (func $export-default/theDefault + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $reexport/car + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 272 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 80 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:reexport + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33280 + i32.const 33328 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $exports/Car#constructor (param $this i32) (param $doors i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $doors + call $exports/Car#set:doors + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $doors + call $exports/Car#set:doors + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $exports/Car#get:numDoors (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $exports/Car#get:doors + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $start:reexport + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + i32.const 2 + call $export/add + i32.const 3 + i32.const 4 + call $export/mul + i32.add + drop + i32.const 2 + i32.const 2 + call $exports/add + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $export/mul + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 192 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 2 + call $exports/Car#constructor + global.set $reexport/car + global.get $reexport/car + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/reexport.json b/tests/compiler/reexport.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/reexport.json +++ b/tests/compiler/reexport.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat deleted file mode 100644 index 502c3cd9f8..0000000000 --- a/tests/compiler/reexport.optimized.wat +++ /dev/null @@ -1,287 +0,0 @@ -(module - (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))) - (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))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (global $exports/Animal.CAT i32 (i32.const 0)) - (global $exports/Animal.DOG i32 (i32.const 1)) - (global $exports/animals.Animal.CAT i32 (i32.const 0)) - (global $exports/animals.Animal.DOG i32 (i32.const 1)) - (global $exports/Car.TIRES i32 (i32.const 4)) - (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) - (global $exports/outer.inner.a i32 (i32.const 42)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $reexport/car (mut i32) (i32.const 0)) - (global $exports/Car i32 (i32.const 3)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $exports/vehicles.Car i32 (i32.const 4)) - (export "memory" (memory $0)) - (export "add" (func $export/add)) - (export "renamed_sub" (func $export/sub)) - (export "renamed_mul" (func $export/mul)) - (export "rerenamed_mul" (func $export/mul)) - (export "a" (global $export/a)) - (export "renamed_b" (global $export/b)) - (export "renamed_c" (global $export/c)) - (export "rerenamed_c" (global $export/c)) - (export "Car" (global $exports/Car)) - (export "Car#get:doors" (func $exports/Car#get:numDoors)) - (export "Car#set:doors" (func $exports/Car#set:doors)) - (export "Car#constructor" (func $exports/Car#constructor@varargs)) - (export "Car#get:numDoors" (func $exports/Car#get:numDoors)) - (export "Car#set:numDoors" (func $exports/Car#set:doors)) - (export "Car#openDoors" (func $exports/Car#openDoors)) - (export "Car.TIRES" (global $exports/Car.TIRES)) - (export "Car.getNumTires" (func $exports/Car.getNumTires)) - (export "renamed_add" (func $export/add)) - (export "rerenamed_sub" (func $export/mul)) - (export "renamed_ns.two" (func $export/ns.one)) - (export "exportstar.add" (func $export/add)) - (export "exportstar.sub" (func $export/sub)) - (export "exportstar.renamed_mul" (func $export/mul)) - (export "exportstar.a" (global $export/a)) - (export "exportstar.b" (global $export/b)) - (export "exportstar.renamed_c" (global $export/c)) - (export "exportstar.ns.two" (func $export/ns.one)) - (export "exportstar.default.two" (func $export/ns.one)) - (export "ExportsNamespace.add" (func $export/add)) - (export "ExportsNamespace.subOpt" (func $exports/subOpt@varargs)) - (export "ExportsNamespace.math.sub" (func $export/sub)) - (export "ExportsNamespace.Animal.CAT" (global $exports/Animal.CAT)) - (export "ExportsNamespace.Animal.DOG" (global $exports/Animal.DOG)) - (export "ExportsNamespace.animals.Animal.CAT" (global $exports/animals.Animal.CAT)) - (export "ExportsNamespace.animals.Animal.DOG" (global $exports/animals.Animal.DOG)) - (export "ExportsNamespace.Car" (global $exports/Car)) - (export "ExportsNamespace.Car#get:doors" (func $exports/Car#get:numDoors)) - (export "ExportsNamespace.Car#set:doors" (func $exports/Car#set:doors)) - (export "ExportsNamespace.Car#constructor" (func $exports/Car#constructor@varargs)) - (export "ExportsNamespace.Car#get:numDoors" (func $exports/Car#get:numDoors)) - (export "ExportsNamespace.Car#set:numDoors" (func $exports/Car#set:doors)) - (export "ExportsNamespace.Car#openDoors" (func $exports/Car#openDoors)) - (export "ExportsNamespace.Car.TIRES" (global $exports/Car.TIRES)) - (export "ExportsNamespace.Car.getNumTires" (func $exports/Car.getNumTires)) - (export "ExportsNamespace.vehicles.Car" (global $exports/vehicles.Car)) - (export "ExportsNamespace.vehicles.Car#get:doors" (func $exports/Car#get:numDoors)) - (export "ExportsNamespace.vehicles.Car#set:doors" (func $exports/Car#set:doors)) - (export "ExportsNamespace.vehicles.Car#constructor" (func $exports/vehicles.Car#constructor@varargs)) - (export "ExportsNamespace.vehicles.Car#get:numDoors" (func $exports/Car#get:numDoors)) - (export "ExportsNamespace.vehicles.Car#set:numDoors" (func $exports/Car#set:doors)) - (export "ExportsNamespace.vehicles.Car#openDoors" (func $exports/Car#openDoors)) - (export "ExportsNamespace.vehicles.Car.TIRES" (global $exports/vehicles.Car.TIRES)) - (export "ExportsNamespace.vehicles.Car.getNumTires" (func $exports/Car.getNumTires)) - (export "ExportsNamespace.outer.inner.a" (global $exports/outer.inner.a)) - (export "ExportsNamespace.renamed_mul" (func $export/mul)) - (export "default" (func $export/ns.one)) - (export "renamed_default" (func $export/ns.one)) - (export "__setArgumentsLength" (func $~setArgumentsLength)) - (start $~start) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - i32.const 16 - i32.add - local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $4 - local.get $1 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $4 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $1 - global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 - i32.sub - local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $3 - ) - (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 3 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $exports/Car#get:numDoors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/Car.getNumTires (result i32) - i32.const 4 - ) - (func $exports/Car#set:doors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $exports/Car#openDoors (param $0 i32) - nop - ) - (func $export/ns.one - nop - ) - (func $~start - i32.const 1072 - global.set $~lib/rt/stub/offset - i32.const 0 - i32.const 2 - call $exports/Car#constructor - global.set $reexport/car - global.get $reexport/car - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/Car#constructor - ) - (func $exports/subOpt@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - local.get $0 - i32.eqz - if - i32.const 4 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) -) diff --git a/tests/compiler/reexport.release.wat b/tests/compiler/reexport.release.wat new file mode 100644 index 0000000000..a96b58bb2b --- /dev/null +++ b/tests/compiler/reexport.release.wat @@ -0,0 +1,1559 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $export/c i32 (i32.const 3)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $reexport/car (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34280)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data $1 (i32.const 1084) "<") + (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1148) "<") + (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1276) "<") + (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1340) ",") + (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1420) "<") + (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1488) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (export "add" (func $export/add)) + (export "renamed_sub" (func $export/sub)) + (export "renamed_mul" (func $export/mul)) + (export "rerenamed_mul" (func $export/mul)) + (export "a" (global $export/a)) + (export "renamed_b" (global $export/b)) + (export "renamed_c" (global $export/c)) + (export "rerenamed_c" (global $export/c)) + (export "renamed_add" (func $export/add)) + (export "rerenamed_sub" (func $export/mul)) + (export "default" (func $export-default/theDefault)) + (export "renamed_default" (func $export-default/theDefault)) + (export "memory" (memory $0)) + (start $~start) + (func $export/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.mul + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $reexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34280 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34288 + i32.const 0 + i32.store + i32.const 35856 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34288 + i32.const 35860 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34288 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34280 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $1 + i32.load offset=1568 + local.get $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $0 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $1 + local.get $0 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $2 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $2 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $1 + local.get $2 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $2 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store align=1 + local.get $0 + ) + (func $export/sub (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $export-default/theDefault + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34280 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat deleted file mode 100644 index 5c277543ef..0000000000 --- a/tests/compiler/reexport.untouched.wat +++ /dev/null @@ -1,447 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") - (table $0 1 funcref) - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (global $exports/Animal.CAT i32 (i32.const 0)) - (global $exports/Animal.DOG i32 (i32.const 1)) - (global $exports/animals.Animal.CAT i32 (i32.const 0)) - (global $exports/animals.Animal.DOG i32 (i32.const 1)) - (global $exports/Car.TIRES i32 (i32.const 4)) - (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) - (global $exports/outer.inner.a i32 (i32.const 42)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $reexport/car (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 56)) - (global $exports/Car i32 (i32.const 3)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $exports/vehicles.Car i32 (i32.const 4)) - (export "memory" (memory $0)) - (export "add" (func $export/add)) - (export "renamed_sub" (func $export/sub)) - (export "renamed_mul" (func $export/mul)) - (export "rerenamed_mul" (func $export/mul)) - (export "a" (global $export/a)) - (export "renamed_b" (global $export/b)) - (export "renamed_c" (global $export/c)) - (export "rerenamed_c" (global $export/c)) - (export "Car" (global $exports/Car)) - (export "Car#get:doors" (func $exports/Car#get:doors)) - (export "Car#set:doors" (func $exports/Car#set:doors)) - (export "Car#constructor" (func $exports/Car#constructor@varargs)) - (export "Car#get:numDoors" (func $exports/Car#get:numDoors)) - (export "Car#set:numDoors" (func $exports/Car#set:numDoors)) - (export "Car#openDoors" (func $exports/Car#openDoors)) - (export "Car.TIRES" (global $exports/Car.TIRES)) - (export "Car.getNumTires" (func $exports/Car.getNumTires)) - (export "renamed_add" (func $export/add)) - (export "rerenamed_sub" (func $export/mul)) - (export "renamed_ns.two" (func $export/ns.two)) - (export "exportstar.add" (func $export/add)) - (export "exportstar.sub" (func $export/sub)) - (export "exportstar.renamed_mul" (func $export/mul)) - (export "exportstar.a" (global $export/a)) - (export "exportstar.b" (global $export/b)) - (export "exportstar.renamed_c" (global $export/c)) - (export "exportstar.ns.two" (func $export/ns.two)) - (export "exportstar.default.two" (func $export/ns.two)) - (export "ExportsNamespace.add" (func $exports/add)) - (export "ExportsNamespace.subOpt" (func $exports/subOpt@varargs)) - (export "ExportsNamespace.math.sub" (func $exports/math.sub)) - (export "ExportsNamespace.Animal.CAT" (global $exports/Animal.CAT)) - (export "ExportsNamespace.Animal.DOG" (global $exports/Animal.DOG)) - (export "ExportsNamespace.animals.Animal.CAT" (global $exports/animals.Animal.CAT)) - (export "ExportsNamespace.animals.Animal.DOG" (global $exports/animals.Animal.DOG)) - (export "ExportsNamespace.Car" (global $exports/Car)) - (export "ExportsNamespace.Car#get:doors" (func $exports/Car#get:doors)) - (export "ExportsNamespace.Car#set:doors" (func $exports/Car#set:doors)) - (export "ExportsNamespace.Car#constructor" (func $exports/Car#constructor@varargs)) - (export "ExportsNamespace.Car#get:numDoors" (func $exports/Car#get:numDoors)) - (export "ExportsNamespace.Car#set:numDoors" (func $exports/Car#set:numDoors)) - (export "ExportsNamespace.Car#openDoors" (func $exports/Car#openDoors)) - (export "ExportsNamespace.Car.TIRES" (global $exports/Car.TIRES)) - (export "ExportsNamespace.Car.getNumTires" (func $exports/Car.getNumTires)) - (export "ExportsNamespace.vehicles.Car" (global $exports/vehicles.Car)) - (export "ExportsNamespace.vehicles.Car#get:doors" (func $exports/vehicles.Car#get:doors)) - (export "ExportsNamespace.vehicles.Car#set:doors" (func $exports/vehicles.Car#set:doors)) - (export "ExportsNamespace.vehicles.Car#constructor" (func $exports/vehicles.Car#constructor@varargs)) - (export "ExportsNamespace.vehicles.Car#get:numDoors" (func $exports/vehicles.Car#get:numDoors)) - (export "ExportsNamespace.vehicles.Car#set:numDoors" (func $exports/vehicles.Car#set:numDoors)) - (export "ExportsNamespace.vehicles.Car#openDoors" (func $exports/vehicles.Car#openDoors)) - (export "ExportsNamespace.vehicles.Car.TIRES" (global $exports/vehicles.Car.TIRES)) - (export "ExportsNamespace.vehicles.Car.getNumTires" (func $exports/vehicles.Car.getNumTires)) - (export "ExportsNamespace.outer.inner.a" (global $exports/outer.inner.a)) - (export "ExportsNamespace.renamed_mul" (func $export/mul)) - (export "default" (func $export-default/theDefault)) - (export "renamed_default" (func $export-default/theDefault)) - (export "__setArgumentsLength" (func $~setArgumentsLength)) - (start $~start) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $exports/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $exports/Car#get:numDoors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $start:reexport - i32.const 1 - i32.const 2 - call $export/add - i32.const 3 - i32.const 4 - call $export/mul - i32.add - drop - i32.const 2 - i32.const 2 - call $exports/add - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - call $export/mul - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - i32.const 2 - call $exports/Car#constructor - global.set $reexport/car - global.get $reexport/car - call $exports/Car#get:numDoors - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/Car.getNumTires (result i32) - global.get $exports/Car.TIRES - ) - (func $exports/Car#get:doors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/Car#set:doors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $exports/Car#set:numDoors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $exports/Car#openDoors (param $0 i32) - nop - ) - (func $export/ns.one - nop - ) - (func $export/ns.two - nop - ) - (func $exports/subOpt (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/math.sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $exports/vehicles.Car.getNumTires (result i32) - global.get $exports/vehicles.Car.TIRES - ) - (func $exports/vehicles.Car#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $exports/vehicles.Car#get:doors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/vehicles.Car#set:doors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $exports/vehicles.Car#get:numDoors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $exports/vehicles.Car#set:numDoors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $exports/vehicles.Car#openDoors (param $0 i32) - nop - ) - (func $export-default/theDefault - nop - ) - (func $~start - call $start:reexport - ) - (func $exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/Car#constructor - ) - (func $exports/subOpt@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/subOpt - ) - (func $exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2 - local.set $1 - end - local.get $0 - local.get $1 - call $exports/vehicles.Car#constructor - ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) -) diff --git a/tests/compiler/rereexport.debug.wat b/tests/compiler/rereexport.debug.wat new file mode 100644 index 0000000000..069f46a726 --- /dev/null +++ b/tests/compiler/rereexport.debug.wat @@ -0,0 +1,2654 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $export/c i32 (i32.const 3)) + (global $exports/Car.TIRES i32 (i32.const 4)) + (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) + (global $exports/outer.inner.a i32 (i32.const 42)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $reexport/car (mut i32) (i32.const 0)) + (global $rereexport/car (mut i32) (i32.const 0)) + (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 512)) + (global $~lib/memory/__data_end i32 (i32.const 536)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33304)) + (global $~lib/memory/__heap_base i32 (i32.const 33304)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00\00\00\00\00") + (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00") + (data $10 (i32.const 512) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "a" (global $export/a)) + (export "renamed_a" (global $export/a)) + (export "renamed_b" (global $export/b)) + (export "renamed_renamed_b" (global $export/b)) + (export "default" (func $export-default/theDefault)) + (export "renamed_default" (func $export-default/theDefault)) + (export "memory" (memory $0)) + (start $~start) + (func $export/add (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $export/mul (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.mul + return + ) + (func $exports/add (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.add + return + ) + (func $exports/Car#set:doors (param $this i32) (param $doors i32) + local.get $this + local.get $doors + i32.store + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 272 + i32.const 336 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 144 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 80 + i32.const 416 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 80 + i32.const 144 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $exports/Car#get:doors (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $export-default/theDefault + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $rereexport/car + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rereexport/exportsNamespaceCar + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 272 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 80 + local.get $0 + call $~lib/rt/itcms/__visit + global.get $reexport/car + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:rereexport + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33328 + i32.const 33376 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $exports/Car#constructor (param $this i32) (param $doors i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $doors + call $exports/Car#set:doors + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $doors + call $exports/Car#set:doors + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $exports/Car#get:numDoors (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $exports/Car#get:doors + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $start:reexport + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + i32.const 2 + call $export/add + i32.const 3 + i32.const 4 + call $export/mul + i32.add + drop + i32.const 2 + i32.const 2 + call $exports/add + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $export/mul + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 192 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 2 + call $exports/Car#constructor + global.set $reexport/car + global.get $reexport/car + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:rereexport + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + call $start:reexport + i32.const 2 + i32.const 2 + call $export/add + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $export/mul + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + call $exports/Car#constructor + global.set $rereexport/car + global.get $rereexport/car + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $exports/add + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $export/mul + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + call $exports/Car#constructor + global.set $rereexport/exportsNamespaceCar + global.get $rereexport/exportsNamespaceCar + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/rereexport.json b/tests/compiler/rereexport.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/rereexport.json +++ b/tests/compiler/rereexport.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.optimized.wat deleted file mode 100644 index 606338749d..0000000000 --- a/tests/compiler/rereexport.optimized.wat +++ /dev/null @@ -1,169 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $reexport/car (mut i32) (i32.const 0)) - (global $rereexport/car (mut i32) (i32.const 0)) - (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "a" (global $export/a)) - (export "renamed_a" (global $export/a)) - (export "renamed_b" (global $export/b)) - (export "renamed_renamed_b" (global $export/b)) - (export "default" (func $export-default/theDefault)) - (export "renamed_default" (func $export-default/theDefault)) - (export "exportstar.add" (func $export/add)) - (export "exportstar.sub" (func $export/sub)) - (export "exportstar.renamed_mul" (func $export/mul)) - (export "exportstar.a" (global $export/a)) - (export "exportstar.b" (global $export/b)) - (export "exportstar.renamed_c" (global $export/c)) - (export "exportstar.ns.two" (func $export-default/theDefault)) - (export "exportstar.default.two" (func $export-default/theDefault)) - (start $~start) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $exports/Car#constructor (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $1 - i32.const 16 - i32.add - local.tee $0 - memory.size - local.tee $3 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $3 - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $3 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - local.get $1 - i32.const 16 - i32.sub - local.tee $0 - i32.const 16 - i32.store - local.get $0 - i32.const 1 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 2 - i32.store - local.get $1 - i32.const 2 - i32.store - local.get $1 - ) - (func $export-default/theDefault - nop - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $~start - i32.const 1120 - global.set $~lib/rt/stub/offset - call $exports/Car#constructor - global.set $reexport/car - global.get $reexport/car - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $exports/Car#constructor - global.set $rereexport/car - global.get $rereexport/car - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $exports/Car#constructor - global.set $rereexport/exportsNamespaceCar - global.get $rereexport/exportsNamespaceCar - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/rereexport.release.wat b/tests/compiler/rereexport.release.wat new file mode 100644 index 0000000000..f61fba72ac --- /dev/null +++ b/tests/compiler/rereexport.release.wat @@ -0,0 +1,1625 @@ +(module + (type $0 (func)) + (type $1 (func (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $export/a i32 (i32.const 1)) + (global $export/b i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $reexport/car (mut i32) (i32.const 0)) + (global $rereexport/car (mut i32) (i32.const 0)) + (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34328)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data $1 (i32.const 1084) "<") + (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1148) "<") + (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1276) "<") + (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1340) ",") + (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1420) "<") + (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1484) ",") + (data $9.1 (i32.const 1496) "\02\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data $10 (i32.const 1536) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (export "a" (global $export/a)) + (export "renamed_a" (global $export/a)) + (export "renamed_b" (global $export/b)) + (export "renamed_renamed_b" (global $export/b)) + (export "default" (func $export-default/theDefault)) + (export "renamed_default" (func $export-default/theDefault)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $rereexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rereexport/exportsNamespaceCar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $reexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$120 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34328 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$120 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34336 + i32.const 35908 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34336 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34328 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34328 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34328 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $1 + i32.load offset=1568 + local.get $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $0 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $1 + local.get $0 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $2 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $2 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $1 + local.get $2 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $2 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store align=1 + local.get $0 + ) + (func $export-default/theDefault + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34328 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + call $exports/Car#constructor + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $exports/Car#constructor + global.set $rereexport/car + global.get $~lib/memory/__stack_pointer + global.get $rereexport/car + local.tee $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exports/Car#constructor + global.set $rereexport/exportsNamespaceCar + global.get $~lib/memory/__stack_pointer + global.get $rereexport/exportsNamespaceCar + local.tee $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $exports/Car#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $exports/Car#get:numDoors (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/rereexport.ts b/tests/compiler/rereexport.ts index b8a00c451c..9e68f1fa29 100644 --- a/tests/compiler/rereexport.ts +++ b/tests/compiler/rereexport.ts @@ -11,13 +11,13 @@ import { exportstar } from "./reexport"; export { exportstar }; import * as ReexportsNamespace from "./reexport"; -// Test our import * as namespace works with different types +// Test our import * as namespace works with different types. assert(ReexportsNamespace.add(2, 2) == 4); assert(ReexportsNamespace.rerenamed_mul(2, 2) == 4); let car: ReexportsNamespace.Car = new ReexportsNamespace.Car(); assert(car.numDoors == 2); -// Test our imported namespace with the exported import * as namespace +// Test our imported namespace with the exported import * as namespace. assert(ReexportsNamespace.ExportsNamespace.add(2, 2) == 4); assert(ReexportsNamespace.ExportsNamespace.renamed_mul(2, 2) == 4); let exportsNamespaceCar: ReexportsNamespace.Car = new ReexportsNamespace.ExportsNamespace.Car(); diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.untouched.wat deleted file mode 100644 index 97762fb368..0000000000 --- a/tests/compiler/rereexport.untouched.wat +++ /dev/null @@ -1,364 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00") - (table $0 1 funcref) - (global $export/a i32 (i32.const 1)) - (global $export/b i32 (i32.const 2)) - (global $export/c i32 (i32.const 3)) - (global $exports/Car.TIRES i32 (i32.const 4)) - (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) - (global $exports/outer.inner.a i32 (i32.const 42)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $reexport/car (mut i32) (i32.const 0)) - (global $rereexport/car (mut i32) (i32.const 0)) - (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 108)) - (export "memory" (memory $0)) - (export "a" (global $export/a)) - (export "renamed_a" (global $export/a)) - (export "renamed_b" (global $export/b)) - (export "renamed_renamed_b" (global $export/b)) - (export "default" (func $export-default/theDefault)) - (export "renamed_default" (func $export-default/theDefault)) - (export "exportstar.add" (func $export/add)) - (export "exportstar.sub" (func $export/sub)) - (export "exportstar.renamed_mul" (func $export/mul)) - (export "exportstar.a" (global $export/a)) - (export "exportstar.b" (global $export/b)) - (export "exportstar.renamed_c" (global $export/c)) - (export "exportstar.ns.two" (func $export/ns.two)) - (export "exportstar.default.two" (func $export/ns.two)) - (start $~start) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $exports/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $exports/Car#get:numDoors (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $start:reexport - i32.const 1 - i32.const 2 - call $export/add - i32.const 3 - i32.const 4 - call $export/mul - i32.add - drop - i32.const 2 - i32.const 2 - call $exports/add - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - call $export/mul - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - i32.const 2 - call $exports/Car#constructor - global.set $reexport/car - global.get $reexport/car - call $exports/Car#get:numDoors - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:rereexport - call $start:reexport - i32.const 2 - i32.const 2 - call $export/add - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - call $export/mul - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - call $exports/Car#constructor - global.set $rereexport/car - global.get $rereexport/car - call $exports/Car#get:numDoors - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - call $exports/add - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - call $export/mul - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - call $exports/Car#constructor - global.set $rereexport/exportsNamespaceCar - global.get $rereexport/exportsNamespaceCar - call $exports/Car#get:numDoors - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $export-default/theDefault - nop - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $export/ns.one - nop - ) - (func $export/ns.two - nop - ) - (func $~start - call $start:rereexport - ) -) diff --git a/tests/compiler/resolve-access.debug.wat b/tests/compiler/resolve-access.debug.wat new file mode 100644 index 0000000000..a2176400d2 --- /dev/null +++ b/tests/compiler/resolve-access.debug.wat @@ -0,0 +1,3806 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func)) + (type $6 (func (result i32))) + (type $7 (func (param i64 i32) (result i32))) + (type $8 (func (param i32 i64 i32))) + (type $9 (func (param i32 i32 i32 i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (param i32 i32 i32) (result i32))) + (type $12 (func (param i64) (result i32))) + (type $13 (func (param i32 i64 i32 i32))) + (type $14 (func (param i32 i64))) + (type $15 (func (param i32) (result i64))) + (type $16 (func (param i32 i32) (result i64))) + (type $17 (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2272)) + (global $~lib/memory/__data_end i32 (i32.const 2304)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35072)) + (global $~lib/memory/__heap_base i32 (i32.const 35072)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $10 (i32.const 492) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $12 (i32.const 684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 716) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $14 (i32.const 1116) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2172) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $16 (i32.const 2272) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\02\00\00\02\t\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "arrayAccess" (func $resolve-access/arrayAccess)) + (export "fieldAccess" (func $resolve-access/fieldAccess)) + (export "propertyAccess" (func $resolve-access/propertyAccess)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 256 + i32.const 320 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 128 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 64 + i32.const 400 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 64 + i32.const 128 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 716 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 716 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 716 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 716 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/decimalCount64High (param $value i64) (result i32) + local.get $value + i64.const 1000000000000000 + i64.lt_u + if + local.get $value + i64.const 1000000000000 + i64.lt_u + if + i32.const 10 + local.get $value + i64.const 100000000000 + i64.ge_u + i32.add + local.get $value + i64.const 10000000000 + i64.ge_u + i32.add + return + else + i32.const 13 + local.get $value + i64.const 100000000000000 + i64.ge_u + i32.add + local.get $value + i64.const 10000000000000 + i64.ge_u + i32.add + return + end + unreachable + else + local.get $value + i64.const 100000000000000000 + i64.lt_u + if + i32.const 16 + local.get $value + i64.const 10000000000000000 + i64.ge_u + i32.add + return + else + i32.const 18 + local.get $value + i64.const -8446744073709551616 + i64.ge_u + i32.add + local.get $value + i64.const 1000000000000000000 + i64.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa64_dec_lut (param $buffer i32) (param $num i64) (param $offset i32) + (local $t i64) + (local $r i32) + (local $b i32) + (local $c i32) + (local $b1 i32) + (local $b2 i32) + (local $c1 i32) + (local $c2 i32) + (local $digits1 i64) + (local $digits2 i64) + loop $while-continue|0 + local.get $num + i64.const 100000000 + i64.ge_u + if + local.get $num + i64.const 100000000 + i64.div_u + local.set $t + local.get $num + local.get $t + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 10000 + i32.div_u + local.set $b + local.get $r + i32.const 10000 + i32.rem_u + local.set $c + local.get $b + i32.const 100 + i32.div_u + local.set $b1 + local.get $b + i32.const 100 + i32.rem_u + local.set $b2 + local.get $c + i32.const 100 + i32.div_u + local.set $c1 + local.get $c + i32.const 100 + i32.rem_u + local.set $c2 + i32.const 716 + local.get $c1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 716 + local.get $c2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + i32.const 716 + local.get $b1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 716 + local.get $b2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $buffer + local.get $num + i32.wrap_i64 + local.get $offset + call $~lib/util/number/utoa32_dec_lut + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1136 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1136 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2192 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2192 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U64#toString (param $this i64) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa64 + return + ) + (func $resolve-access/Container#set:foo (param $this i32) (param $foo i64) + local.get $this + local.get $foo + i64.store + ) + (func $resolve-access/Container#get:foo (param $this i32) (result i64) + local.get $this + i64.load + ) + (func $~lib/number/U32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1136 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $resolve-access/Container + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35104 + i32.const 35152 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i64) + (local $value i64) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 256 + i32.const 464 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $resolve-access/arrayAccess (result i32) + (local $0 i32) + (local $arr i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 3 + i32.const 4 + i32.const 32 + call $~lib/rt/__newArray + local.tee $arr + i32.store + local.get $arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 10 + call $~lib/number/U64#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $resolve-access/Container#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i64.const 0 + call $resolve-access/Container#set:foo + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $resolve-access/fieldAccess (result i32) + (local $container i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $resolve-access/Container#constructor + local.tee $container + i32.store + local.get $container + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i64.const 1 + call $resolve-access/Container#set:foo + local.get $container + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $resolve-access/Container#get:foo + i32.const 10 + call $~lib/number/U64#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $resolve-access/Container#toU32 (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $resolve-access/Container#get:foo + i32.wrap_i64 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $resolve-access/propertyAccess (result i32) + (local $container i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $resolve-access/Container#constructor + local.tee $container + i32.store + local.get $container + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i64.const 1 + call $resolve-access/Container#set:foo + local.get $container + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $resolve-access/Container#toU32 + i32.const 10 + call $~lib/number/U32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/util/number/utoa64 (param $value i64) (param $radix i32) (result i32) + (local $out i32) + (local $val32 i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i64) + (local $offset|11 i32) + (local $decimals|12 i32) + (local $buffer|13 i32) + (local $num|14 i64) + (local $offset|15 i32) + (local $decimals|16 i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 512 + i32.const 640 + i32.const 401 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i64.const 0 + i64.ne + i32.eqz + if + i32.const 704 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + call $~lib/util/number/decimalCount64High + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + local.get $offset|11 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 63 + local.get $value + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|12 + global.get $~lib/memory/__stack_pointer + local.get $decimals|12 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|13 + local.get $value + local.set $num|14 + local.get $decimals|12 + local.set $offset|15 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|13 + local.get $num|14 + local.get $offset|15 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|16 + global.get $~lib/memory/__stack_pointer + local.get $decimals|16 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + local.get $decimals|16 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 512 + i32.const 640 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 704 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) +) diff --git a/tests/compiler/resolve-access.json b/tests/compiler/resolve-access.json index 453cb07770..1bdd02b1be 100644 --- a/tests/compiler/resolve-access.json +++ b/tests/compiler/resolve-access.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat deleted file mode 100644 index 49a4bab338..0000000000 --- a/tests/compiler/resolve-access.optimized.wat +++ /dev/null @@ -1,554 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01") - (data (i32.const 1056) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1120) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1168) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1296) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1360) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1392) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "arrayAccess" (func $resolve-access/arrayAccess)) - (export "fieldAccess" (func $resolve-access/fieldAccess)) - (export "propertyAccess" (func $resolve-access/propertyAccess)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $5 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~lib/memory/memory.copy (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1040 - local.set $3 - i32.const 8 - local.set $4 - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - i32.const 1040 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - i32.const 1040 - i32.lt_u - if - local.get $0 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $3 - local.tee $1 - i32.const 1 - i32.add - local.set $3 - local.get $2 - local.get $1 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $3 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $3 - local.tee $1 - i32.const 1 - i32.add - local.set $3 - local.get $2 - local.get $1 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $0 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.get $4 - i32.const 1040 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - i32.add - local.get $4 - i32.const 1040 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.get $4 - i32.const 1040 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $do-continue|0 - local.get $1 - i32.const 10 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 - local.get $1 - br_if $do-continue|0 - end - ) - (func $~lib/util/number/utoa64 (param $0 i64) (result i32) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i64.eqz - if - i32.const 1376 - return - end - local.get $0 - i64.const 4294967295 - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.tee $4 - local.get $2 - local.get $3 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 - i64.const 1000000000000000 - i64.lt_u - select - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.tee $4 - local.set $3 - loop $do-continue|0 - local.get $0 - i64.const 10 - i64.div_u - local.get $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - i64.const 10 - i64.rem_u - i32.wrap_i64 - i32.const 48 - i32.add - i32.store16 - local.tee $0 - i64.const 0 - i64.ne - br_if $do-continue|0 - end - end - local.get $4 - ) - (func $resolve-access/arrayAccess (result i32) - (local $0 i32) - (local $1 i32) - i32.const 16 - i32.const 3 - call $~lib/rt/stub/__alloc - local.set $0 - i32.const 8 - i32.const 0 - call $~lib/rt/stub/__alloc - local.tee $1 - call $~lib/memory/memory.copy - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 8 - i32.store offset=8 - local.get $0 - i32.const 1 - i32.store offset=12 - i32.const 0 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1072 - i32.const 1136 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i64.load - call $~lib/util/number/utoa64 - ) - (func $resolve-access/Container#constructor (result i32) - (local $0 i32) - i32.const 8 - i32.const 5 - call $~lib/rt/stub/__alloc - local.tee $0 - i64.const 0 - i64.store - local.get $0 - ) - (func $resolve-access/fieldAccess (result i32) - (local $0 i32) - call $resolve-access/Container#constructor - local.tee $0 - i64.const 1 - i64.store - local.get $0 - i64.load - call $~lib/util/number/utoa64 - ) - (func $resolve-access/propertyAccess (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - call $resolve-access/Container#constructor - local.tee $0 - i64.const 1 - i64.store - block $__inlined_func$~lib/util/number/utoa32 - local.get $0 - i64.load - i32.wrap_i64 - local.tee $1 - i32.eqz - if - i32.const 1376 - local.set $0 - br $__inlined_func$~lib/util/number/utoa32 - end - local.get $1 - call $~lib/util/number/decimalCount32 - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.tee $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa_dec_simple - end - local.get $0 - ) - (func $~start - i32.const 1488 - global.set $~lib/rt/stub/offset - ) -) diff --git a/tests/compiler/resolve-access.release.wat b/tests/compiler/resolve-access.release.wat new file mode 100644 index 0000000000..bc5cd261d7 --- /dev/null +++ b/tests/compiler/resolve-access.release.wat @@ -0,0 +1,2431 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32))) + (type $2 (func)) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (param i64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36096)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\01\00\00\00\08\00\00\00\01") + (data $1 (i32.const 1068) "<") + (data $1.1 (i32.const 1080) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1132) "<") + (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1260) "<") + (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1324) ",") + (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1404) "<") + (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1468) ",") + (data $9.1 (i32.const 1480) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $10 (i32.const 1516) "|") + (data $10.1 (i32.const 1528) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $11 (i32.const 1644) "<") + (data $11.1 (i32.const 1656) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $12 (i32.const 1708) "\1c") + (data $12.1 (i32.const 1720) "\02\00\00\00\02\00\00\000") + (data $13 (i32.const 1740) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $14 (i32.const 2140) "\1c\04") + (data $14.1 (i32.const 2152) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $15 (i32.const 3196) "\\") + (data $15.1 (i32.const 3208) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $16 (i32.const 3296) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\02\00\00\02\t\00\00 ") + (export "arrayAccess" (func $resolve-access/arrayAccess)) + (export "fieldAccess" (func $resolve-access/fieldAccess)) + (export "propertyAccess" (func $resolve-access/propertyAccess)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 2160 + call $~lib/rt/itcms/__visit + i32.const 3216 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$143 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 36096 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$143 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 3296 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 3300 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36096 + i32.const 0 + i32.store + i32.const 37664 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36096 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36096 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36096 + i32.const 37668 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36096 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36096 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36096 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36096 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1088 + i32.const 1424 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1424 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/number/U64#toString (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + if + i32.const 36128 + i32.const 36176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64$73 + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1728 + local.set $2 + br $__inlined_func$~lib/util/number/utoa64$73 + end + local.get $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.wrap_i64 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $3 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + loop $while-continue|0 + local.get $0 + i64.const 100000000 + i64.ge_u + if + local.get $2 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i64.const 100000000 + i64.div_u + local.tee $0 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $2 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $2 + local.get $0 + i32.wrap_i64 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + if + i32.const 36128 + i32.const 36176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-access/Container + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 36096 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace + ) + (func $resolve-access/arrayAccess (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 1056 + i64.load align=1 + i64.store align=1 + local.get $4 + i32.store + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $4 + i32.store + local.get $4 + if + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $4 + i32.const 20 + i32.sub + local.tee $5 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $3 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $1 + i32.const 3 + i32.eq + i32.and + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $3 + local.get $4 + i32.store offset=4 + local.get $3 + i32.const 8 + i32.store offset=8 + local.get $3 + i32.const 1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $~lib/number/U64#toString + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36128 + i32.const 36176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $resolve-access/Container#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36128 + i32.const 36176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $resolve-access/fieldAccess (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + if + i32.const 36128 + i32.const 36176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $resolve-access/Container#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 1 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load + call $~lib/number/U64#toString + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $resolve-access/propertyAccess (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $resolve-access/Container#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 1 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load + i32.wrap_i64 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa32$74 + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1728 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$74 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36128 + i32.const 36176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat deleted file mode 100644 index 9de1f9f8f9..0000000000 --- a/tests/compiler/resolve-access.untouched.wat +++ /dev/null @@ -1,2450 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 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))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 48) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 112) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 160) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 288) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 352) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 372) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 784) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1824) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/heap/__heap_base i32 (i32.const 1912)) - (export "memory" (memory $0)) - (export "arrayAccess" (func $resolve-access/arrayAccess)) - (export "fieldAccess" (func $resolve-access/fieldAccess)) - (export "propertyAccess" (func $resolve-access/propertyAccess)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end - local.get $3 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 16 - local.get $2 - call $~lib/rt/stub/__alloc - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.set $5 - local.get $5 - i32.const 0 - local.get $3 - call $~lib/rt/__allocBuffer - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/stub/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 100000 - i32.lt_u - if - local.get $0 - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $0 - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $0 - i32.const 10000 - i32.ge_u - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $0 - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - i32.const 372 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - i32.const 372 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $1 - i32.const 100 - i32.div_u - local.set $3 - local.get $1 - i32.const 100 - i32.rem_u - local.set $10 - local.get $3 - local.set $1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 372 - local.get $10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 372 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - else - local.get $2 - i32.const 1 - i32.sub - local.set $2 - i32.const 48 - local.get $1 - i32.add - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if - local.get $0 - i64.const 1000000000000 - i64.lt_u - if - i32.const 10 - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - return - else - i32.const 13 - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if - i32.const 16 - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.add - return - else - i32.const 18 - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - loop $while-continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i64.const 100000000 - i64.div_u - local.set $4 - local.get $1 - local.get $4 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 - local.get $6 - i32.const 100 - i32.div_u - local.set $8 - local.get $6 - i32.const 100 - i32.rem_u - local.set $9 - local.get $7 - i32.const 100 - i32.div_u - local.set $10 - local.get $7 - i32.const 100 - i32.rem_u - local.set $11 - i32.const 372 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 372 - local.get $11 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - i32.const 372 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 372 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $0 - local.get $1 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - ) - (func $~lib/util/number/utoa_hex_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $2 - i32.const 2 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 800 - local.get $1 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i64.const 8 - i64.shr_u - local.set $1 - br $while-continue|0 - end - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - i32.const 800 - local.get $1 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - local.get $1 - local.set $2 - local.get $2 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $1 - i64.extend_i32_s - local.set $3 - local.get $3 - local.set $4 - i32.const 1 - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $4 - i64.div_u - local.set $0 - local.get $4 - local.get $4 - i64.mul - local.set $4 - local.get $5 - i32.const 1 - i32.shl - local.set $5 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $0 - i64.const 1 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $3 - i64.div_u - local.set $0 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $while-continue|1 - end - end - local.get $5 - i32.const 1 - i32.sub - ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i32) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $5 - local.get $4 - i64.const 1 - i64.sub - local.set $6 - loop $do-continue|0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 1840 - local.get $1 - local.get $6 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $5 - i64.shr_u - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|0 - end - else - loop $do-continue|1 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $4 - i64.div_u - local.set $6 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 1840 - local.get $1 - local.get $6 - local.get $4 - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $6 - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|1 - end - end - ) - (func $~lib/util/number/utoa64 (param $0 i64) (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 i64) - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 176 - i32.const 304 - i32.const 401 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 0 - i64.ne - i32.eqz - if - i32.const 368 - return - end - i32.const 0 - local.set $2 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.set $3 - local.get $3 - call $~lib/util/number/decimalCount32 - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - local.set $7 - local.get $3 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $8 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - local.set $3 - local.get $0 - local.set $8 - local.get $4 - local.set $7 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $3 - local.get $8 - local.get $7 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - local.get $0 - local.get $4 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - call $~lib/rt/stub/__retain - ) - (func $~lib/number/U64#toString (param $0 i64) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/util/number/utoa64 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $resolve-access/arrayAccess (result i32) - (local $0 i32) - (local $1 i32) - i32.const 1 - i32.const 3 - i32.const 3 - i32.const 32 - call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - i32.const 0 - call $~lib/array/Array#__get - i32.const 10 - call $~lib/number/U64#toString - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $resolve-access/Container#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i64.const 0 - i64.store - local.get $0 - ) - (func $resolve-access/fieldAccess (result i32) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $resolve-access/Container#constructor - local.set $0 - local.get $0 - i64.const 1 - i64.store - local.get $0 - i64.load - i32.const 10 - call $~lib/number/U64#toString - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $resolve-access/Container#toU32 (param $0 i32) (result i32) - local.get $0 - i64.load - i32.wrap_i64 - ) - (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 176 - i32.const 304 - i32.const 350 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 368 - return - end - i32.const 0 - local.set $2 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - i64.extend_i32_u - local.get $4 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - local.get $0 - i64.extend_i32_u - local.get $3 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - call $~lib/rt/stub/__retain - ) - (func $~lib/number/U32#toString (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/util/number/utoa32 - ) - (func $resolve-access/propertyAccess (result i32) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $resolve-access/Container#constructor - local.set $0 - local.get $0 - i64.const 1 - i64.store - local.get $0 - call $resolve-access/Container#toU32 - i32.const 10 - call $~lib/number/U32#toString - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $~start - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) -) diff --git a/tests/compiler/resolve-binary.debug.wat b/tests/compiler/resolve-binary.debug.wat new file mode 100644 index 0000000000..d10576390f --- /dev/null +++ b/tests/compiler/resolve-binary.debug.wat @@ -0,0 +1,7548 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i64 i32))) + (type $11 (func (param i64 i32) (result i32))) + (type $12 (func (param i32 i64 i32 i32))) + (type $13 (func (param f64 f64) (result f64))) + (type $14 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $15 (func (param i32 i32 i32) (result i32))) + (type $16 (func (param i32 f64 i32) (result i32))) + (type $17 (func (param f64 i32) (result i32))) + (type $18 (func (param f64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $resolve-binary/a (mut i32) (i32.const 0)) + (global $resolve-binary/f (mut f64) (f64.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/util/math/log_tail (mut f64) (f64.const 0)) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $resolve-binary/foo (mut i32) (i32.const 0)) + (global $resolve-binary/bar (mut i32) (i32.const 0)) + (global $resolve-binary/bar2 (mut i32) (i32.const 0)) + (global $resolve-binary/baz (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 10192)) + (global $~lib/memory/__data_end i32 (i32.const 10224)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 42992)) + (global $~lib/memory/__heap_base i32 (i32.const 42992)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") + (data $2 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00b\00i\00n\00a\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 140) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 268) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $5 (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $7 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 496) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 528) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 556) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 672) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 764) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $15 (i32.const 1164) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2220) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $17 (i32.const 2316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2384) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data $21 (i32.const 8540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data $22 (i32.const 8572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data $23 (i32.const 8604) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 8652) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 8704) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 8760) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2240 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/itoa32 + return + ) + (func $~lib/math/NativeMath.pow (param $x f64) (param $y f64) (result f64) + (local $x|2 f64) + (local $y|3 f64) + (local $sign_bias i32) + (local $ix i64) + (local $iy i64) + (local $topx i64) + (local $topy i64) + (local $u i64) + (local $u|10 i64) + (local $x2 f64) + (local $iy|12 i64) + (local $e i64) + (local $iy|14 i64) + (local $e|15 i64) + (local $yint i32) + (local $ix|17 i64) + (local $tmp i64) + (local $i i32) + (local $k i64) + (local $iz i64) + (local $z f64) + (local $kd f64) + (local $invc f64) + (local $logc f64) + (local $logctail f64) + (local $zhi f64) + (local $zlo f64) + (local $rhi f64) + (local $rlo f64) + (local $r f64) + (local $t1 f64) + (local $t2 f64) + (local $lo1 f64) + (local $lo2 f64) + (local $ar f64) + (local $ar2 f64) + (local $ar3 f64) + (local $arhi f64) + (local $arhi2 f64) + (local $hi f64) + (local $lo3 f64) + (local $lo4 f64) + (local $p f64) + (local $lo f64) + (local $y|46 f64) + (local $hi|47 f64) + (local $lo|48 f64) + (local $ehi f64) + (local $elo f64) + (local $yhi f64) + (local $ylo f64) + (local $lhi f64) + (local $llo f64) + (local $x|55 f64) + (local $xtail f64) + (local $sign_bias|57 i32) + (local $abstop i32) + (local $ki i64) + (local $top i64) + (local $sbits i64) + (local $idx i32) + (local $kd|63 f64) + (local $z|64 f64) + (local $r|65 f64) + (local $r2 f64) + (local $scale f64) + (local $tail f64) + (local $tmp|69 f64) + (local $ux i64) + (local $sign i32) + (local $sign|72 i32) + (local $y|73 f64) + (local $sign|74 i32) + (local $sign|75 i32) + (local $y|76 f64) + (local $tmp|77 f64) + (local $sbits|78 i64) + (local $ki|79 i64) + (local $scale|80 f64) + (local $y|81 f64) + (local $one f64) + (local $lo|83 f64) + (local $hi|84 f64) + local.get $y + f64.abs + f64.const 2 + f64.le + if + local.get $y + f64.const 2 + f64.eq + if + local.get $x + local.get $x + f64.mul + return + end + local.get $y + f64.const 0.5 + f64.eq + if + local.get $x + f64.sqrt + f64.abs + f64.const inf + local.get $x + f64.const inf + f64.neg + f64.ne + select + return + end + local.get $y + f64.const -1 + f64.eq + if + f64.const 1 + local.get $x + f64.div + return + end + local.get $y + f64.const 1 + f64.eq + if + local.get $x + return + end + local.get $y + f64.const 0 + f64.eq + if + f64.const 1 + return + end + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $~lib/util/math/pow_lut|inlined.0 (result f64) + local.get $x + local.set $x|2 + local.get $y + local.set $y|3 + i32.const 0 + local.set $sign_bias + local.get $x|2 + i64.reinterpret_f64 + local.set $ix + local.get $y|3 + i64.reinterpret_f64 + local.set $iy + local.get $ix + i64.const 52 + i64.shr_u + local.set $topx + local.get $iy + i64.const 52 + i64.shr_u + local.set $topy + local.get $topx + i64.const 1 + i64.sub + i64.const 2047 + i64.const 1 + i64.sub + i64.ge_u + if (result i32) + i32.const 1 + else + local.get $topy + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 1086 + i64.const 958 + i64.sub + i64.ge_u + end + if + block $~lib/util/math/zeroinfnan|inlined.0 (result i32) + local.get $iy + local.set $u + local.get $u + i64.const 1 + i64.shl + i64.const 1 + i64.sub + i64.const -9007199254740992 + i64.const 1 + i64.sub + i64.ge_u + br $~lib/util/math/zeroinfnan|inlined.0 + end + if + local.get $iy + i64.const 1 + i64.shl + i64.const 0 + i64.eq + if + f64.const 1 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 4607182418800017408 + i64.eq + if + f64.const nan:0x8000000000000 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 1 + i64.shl + i64.const -9007199254740992 + i64.gt_u + if (result i32) + i32.const 1 + else + local.get $iy + i64.const 1 + i64.shl + i64.const -9007199254740992 + i64.gt_u + end + if + local.get $x|2 + local.get $y|3 + f64.add + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 1 + i64.shl + i64.const 9214364837600034816 + i64.eq + if + f64.const nan:0x8000000000000 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 1 + i64.shl + i64.const 9214364837600034816 + i64.lt_u + local.get $iy + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + i32.eqz + i32.eq + if + f64.const 0 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $y|3 + local.get $y|3 + f64.mul + br $~lib/util/math/pow_lut|inlined.0 + end + block $~lib/util/math/zeroinfnan|inlined.1 (result i32) + local.get $ix + local.set $u|10 + local.get $u|10 + i64.const 1 + i64.shl + i64.const 1 + i64.sub + i64.const -9007199254740992 + i64.const 1 + i64.sub + i64.ge_u + br $~lib/util/math/zeroinfnan|inlined.1 + end + if + local.get $x|2 + local.get $x|2 + f64.mul + local.set $x2 + local.get $ix + i64.const 63 + i64.shr_u + i32.wrap_i64 + if (result i32) + block $~lib/util/math/checkint|inlined.0 (result i32) + local.get $iy + local.set $iy|12 + local.get $iy|12 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $e + local.get $e + i64.const 1023 + i64.lt_u + if + i32.const 0 + br $~lib/util/math/checkint|inlined.0 + end + local.get $e + i64.const 1023 + i64.const 52 + i64.add + i64.gt_u + if + i32.const 2 + br $~lib/util/math/checkint|inlined.0 + end + i64.const 1 + i64.const 1023 + i64.const 52 + i64.add + local.get $e + i64.sub + i64.shl + local.set $e + local.get $iy|12 + local.get $e + i64.const 1 + i64.sub + i64.and + i64.const 0 + i64.ne + if + i32.const 0 + br $~lib/util/math/checkint|inlined.0 + end + local.get $iy|12 + local.get $e + i64.and + i64.const 0 + i64.ne + if + i32.const 1 + br $~lib/util/math/checkint|inlined.0 + end + i32.const 2 + br $~lib/util/math/checkint|inlined.0 + end + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $x2 + f64.neg + local.set $x2 + end + local.get $iy + i64.const 0 + i64.lt_s + if (result f64) + f64.const 1 + local.get $x2 + f64.div + else + local.get $x2 + end + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 0 + i64.lt_s + if + block $~lib/util/math/checkint|inlined.1 (result i32) + local.get $iy + local.set $iy|14 + local.get $iy|14 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $e|15 + local.get $e|15 + i64.const 1023 + i64.lt_u + if + i32.const 0 + br $~lib/util/math/checkint|inlined.1 + end + local.get $e|15 + i64.const 1023 + i64.const 52 + i64.add + i64.gt_u + if + i32.const 2 + br $~lib/util/math/checkint|inlined.1 + end + i64.const 1 + i64.const 1023 + i64.const 52 + i64.add + local.get $e|15 + i64.sub + i64.shl + local.set $e|15 + local.get $iy|14 + local.get $e|15 + i64.const 1 + i64.sub + i64.and + i64.const 0 + i64.ne + if + i32.const 0 + br $~lib/util/math/checkint|inlined.1 + end + local.get $iy|14 + local.get $e|15 + i64.and + i64.const 0 + i64.ne + if + i32.const 1 + br $~lib/util/math/checkint|inlined.1 + end + i32.const 2 + br $~lib/util/math/checkint|inlined.1 + end + local.set $yint + local.get $yint + i32.const 0 + i32.eq + if + local.get $x|2 + local.get $x|2 + f64.sub + local.get $x|2 + local.get $x|2 + f64.sub + f64.div + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $yint + i32.const 1 + i32.eq + if + i32.const 262144 + local.set $sign_bias + end + local.get $ix + i64.const 9223372036854775807 + i64.and + local.set $ix + local.get $topx + i64.const 2047 + i64.and + local.set $topx + end + local.get $topy + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 1086 + i64.const 958 + i64.sub + i64.ge_u + if + local.get $ix + i64.const 4607182418800017408 + i64.eq + if + f64.const 1 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $topy + i64.const 2047 + i64.and + i64.const 958 + i64.lt_u + if + f64.const 1 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 4607182418800017408 + i64.gt_u + local.get $topy + i64.const 2048 + i64.lt_u + i32.eq + if (result f64) + f64.const inf + else + f64.const 0 + end + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $topx + i64.const 0 + i64.eq + if + local.get $x|2 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + local.set $ix + local.get $ix + i64.const 9223372036854775807 + i64.and + local.set $ix + local.get $ix + i64.const 52 + i64.const 52 + i64.shl + i64.sub + local.set $ix + end + end + block $~lib/util/math/log_inline|inlined.0 (result f64) + local.get $ix + local.set $ix|17 + local.get $ix|17 + i64.const 4604531861337669632 + i64.sub + local.set $tmp + local.get $tmp + i64.const 52 + i32.const 7 + i64.extend_i32_s + i64.sub + i64.shr_u + i32.const 127 + i64.extend_i32_s + i64.and + i32.wrap_i64 + local.set $i + local.get $tmp + i64.const 52 + i64.shr_s + local.set $k + local.get $ix|17 + local.get $tmp + i64.const 4095 + i64.const 52 + i64.shl + i64.and + i64.sub + local.set $iz + local.get $iz + f64.reinterpret_i64 + local.set $z + local.get $k + f64.convert_i64_s + local.set $kd + i32.const 2384 + local.get $i + i32.const 2 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load + local.set $invc + i32.const 2384 + local.get $i + i32.const 2 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=16 + local.set $logc + i32.const 2384 + local.get $i + i32.const 2 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=24 + local.set $logctail + local.get $iz + i64.const 2147483648 + i64.add + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.set $zhi + local.get $z + local.get $zhi + f64.sub + local.set $zlo + local.get $zhi + local.get $invc + f64.mul + f64.const 1 + f64.sub + local.set $rhi + local.get $zlo + local.get $invc + f64.mul + local.set $rlo + local.get $rhi + local.get $rlo + f64.add + local.set $r + local.get $kd + f64.const 0.6931471805598903 + f64.mul + local.get $logc + f64.add + local.set $t1 + local.get $t1 + local.get $r + f64.add + local.set $t2 + local.get $kd + f64.const 5.497923018708371e-14 + f64.mul + local.get $logctail + f64.add + local.set $lo1 + local.get $t1 + local.get $t2 + f64.sub + local.get $r + f64.add + local.set $lo2 + f64.const -0.5 + local.get $r + f64.mul + local.set $ar + local.get $r + local.get $ar + f64.mul + local.set $ar2 + local.get $r + local.get $ar2 + f64.mul + local.set $ar3 + f64.const -0.5 + local.get $rhi + f64.mul + local.set $arhi + local.get $rhi + local.get $arhi + f64.mul + local.set $arhi2 + local.get $t2 + local.get $arhi2 + f64.add + local.set $hi + local.get $rlo + local.get $ar + local.get $arhi + f64.add + f64.mul + local.set $lo3 + local.get $t2 + local.get $hi + f64.sub + local.get $arhi2 + f64.add + local.set $lo4 + local.get $ar3 + f64.const -0.6666666666666679 + local.get $r + f64.const 0.5000000000000007 + f64.mul + f64.add + local.get $ar2 + f64.const 0.7999999995323976 + local.get $r + f64.const -0.6666666663487739 + f64.mul + f64.add + local.get $ar2 + f64.const -1.142909628459501 + local.get $r + f64.const 1.0000415263675542 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $p + local.get $lo1 + local.get $lo2 + f64.add + local.get $lo3 + f64.add + local.get $lo4 + f64.add + local.get $p + f64.add + local.set $lo + local.get $hi + local.get $lo + f64.add + local.set $y|46 + local.get $hi + local.get $y|46 + f64.sub + local.get $lo + f64.add + global.set $~lib/util/math/log_tail + local.get $y|46 + br $~lib/util/math/log_inline|inlined.0 + end + local.set $hi|47 + global.get $~lib/util/math/log_tail + local.set $lo|48 + local.get $iy + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.set $yhi + local.get $y|3 + local.get $yhi + f64.sub + local.set $ylo + local.get $hi|47 + i64.reinterpret_f64 + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.set $lhi + local.get $hi|47 + local.get $lhi + f64.sub + local.get $lo|48 + f64.add + local.set $llo + local.get $yhi + local.get $lhi + f64.mul + local.set $ehi + local.get $ylo + local.get $lhi + f64.mul + local.get $y|3 + local.get $llo + f64.mul + f64.add + local.set $elo + block $~lib/util/math/exp_inline|inlined.0 (result f64) + local.get $ehi + local.set $x|55 + local.get $elo + local.set $xtail + local.get $sign_bias + local.set $sign_bias|57 + local.get $x|55 + i64.reinterpret_f64 + local.set $ux + local.get $ux + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.set $abstop + local.get $abstop + i32.const 969 + i32.sub + i32.const 63 + i32.ge_u + if + local.get $abstop + i32.const 969 + i32.sub + i32.const -2147483648 + i32.ge_u + if + f64.const -1 + f64.const 1 + local.get $sign_bias|57 + select + br $~lib/util/math/exp_inline|inlined.0 + end + local.get $abstop + i32.const 1033 + i32.ge_u + if + local.get $ux + i64.const 0 + i64.lt_s + if (result f64) + block $~lib/util/math/uflow|inlined.0 (result f64) + local.get $sign_bias|57 + local.set $sign + block $~lib/util/math/xflow|inlined.0 (result f64) + local.get $sign + local.set $sign|72 + i64.const 1152921504606846976 + f64.reinterpret_i64 + local.set $y|73 + local.get $y|73 + f64.neg + local.get $y|73 + local.get $sign|72 + select + local.get $y|73 + f64.mul + br $~lib/util/math/xflow|inlined.0 + end + br $~lib/util/math/uflow|inlined.0 + end + else + block $~lib/util/math/oflow|inlined.0 (result f64) + local.get $sign_bias|57 + local.set $sign|74 + block $~lib/util/math/xflow|inlined.1 (result f64) + local.get $sign|74 + local.set $sign|75 + i64.const 8070450532247928832 + f64.reinterpret_i64 + local.set $y|76 + local.get $y|76 + f64.neg + local.get $y|76 + local.get $sign|75 + select + local.get $y|76 + f64.mul + br $~lib/util/math/xflow|inlined.1 + end + br $~lib/util/math/oflow|inlined.0 + end + end + br $~lib/util/math/exp_inline|inlined.0 + end + i32.const 0 + local.set $abstop + end + f64.const 184.6649652337873 + local.get $x|55 + f64.mul + local.set $z|64 + local.get $z|64 + f64.const 6755399441055744 + f64.add + local.set $kd|63 + local.get $kd|63 + i64.reinterpret_f64 + local.set $ki + local.get $kd|63 + f64.const 6755399441055744 + f64.sub + local.set $kd|63 + local.get $x|55 + local.get $kd|63 + f64.const -0.005415212348111709 + f64.mul + f64.add + local.get $kd|63 + f64.const -1.2864023111638346e-14 + f64.mul + f64.add + local.set $r|65 + local.get $r|65 + local.get $xtail + f64.add + local.set $r|65 + local.get $ki + i32.const 127 + i64.extend_i32_s + i64.and + i64.const 1 + i64.shl + i32.wrap_i64 + local.set $idx + local.get $ki + local.get $sign_bias|57 + i64.extend_i32_u + i64.add + i64.const 52 + i32.const 7 + i64.extend_i32_s + i64.sub + i64.shl + local.set $top + i32.const 6480 + local.get $idx + i32.const 3 + i32.shl + i32.add + i64.load + f64.reinterpret_i64 + local.set $tail + i32.const 6480 + local.get $idx + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $top + i64.add + local.set $sbits + local.get $r|65 + local.get $r|65 + f64.mul + local.set $r2 + local.get $tail + local.get $r|65 + f64.add + local.get $r2 + f64.const 0.49999999999996786 + local.get $r|65 + f64.const 0.16666666666665886 + f64.mul + f64.add + f64.mul + f64.add + local.get $r2 + local.get $r2 + f64.mul + f64.const 0.0416666808410674 + local.get $r|65 + f64.const 0.008333335853059549 + f64.mul + f64.add + f64.mul + f64.add + local.set $tmp|69 + local.get $abstop + i32.const 0 + i32.eq + if + block $~lib/util/math/specialcase|inlined.0 (result f64) + local.get $tmp|69 + local.set $tmp|77 + local.get $sbits + local.set $sbits|78 + local.get $ki + local.set $ki|79 + local.get $ki|79 + i64.const 2147483648 + i64.and + i64.const 0 + i64.ne + i32.eqz + if + local.get $sbits|78 + i64.const 1009 + i64.const 52 + i64.shl + i64.sub + local.set $sbits|78 + local.get $sbits|78 + f64.reinterpret_i64 + local.set $scale|80 + f64.const 5486124068793688683255936e279 + local.get $scale|80 + local.get $scale|80 + local.get $tmp|77 + f64.mul + f64.add + f64.mul + br $~lib/util/math/specialcase|inlined.0 + end + local.get $sbits|78 + i64.const 1022 + i64.const 52 + i64.shl + i64.add + local.set $sbits|78 + local.get $sbits|78 + f64.reinterpret_i64 + local.set $scale|80 + local.get $scale|80 + local.get $scale|80 + local.get $tmp|77 + f64.mul + f64.add + local.set $y|81 + local.get $y|81 + f64.abs + f64.const 1 + f64.lt + if + f64.const 1 + local.get $y|81 + f64.copysign + local.set $one + local.get $scale|80 + local.get $y|81 + f64.sub + local.get $scale|80 + local.get $tmp|77 + f64.mul + f64.add + local.set $lo|83 + local.get $one + local.get $y|81 + f64.add + local.set $hi|84 + local.get $one + local.get $hi|84 + f64.sub + local.get $y|81 + f64.add + local.get $lo|83 + f64.add + local.set $lo|83 + local.get $hi|84 + local.get $lo|83 + f64.add + local.get $one + f64.sub + local.set $y|81 + local.get $y|81 + f64.const 0 + f64.eq + if + local.get $sbits|78 + i64.const -9223372036854775808 + i64.and + f64.reinterpret_i64 + local.set $y|81 + end + end + local.get $y|81 + f64.const 2.2250738585072014e-308 + f64.mul + br $~lib/util/math/specialcase|inlined.0 + end + br $~lib/util/math/exp_inline|inlined.0 + end + local.get $sbits + f64.reinterpret_i64 + local.set $scale + local.get $scale + local.get $scale + local.get $tmp|69 + f64.mul + f64.add + br $~lib/util/math/exp_inline|inlined.0 + end + br $~lib/util/math/pow_lut|inlined.0 + end + return + ) + (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) + (local $one_exp i32) + (local $one_frc i64) + (local $mask i64) + (local $wp_w_frc i64) + (local $p1 i32) + (local $p2 i64) + (local $kappa i32) + (local $len i32) + (local $d i32) + (local $16 i32) + (local $17 i32) + (local $tmp i64) + (local $buffer|19 i32) + (local $len|20 i32) + (local $delta|21 i64) + (local $rest i64) + (local $ten_kappa i64) + (local $wp_w i64) + (local $lastp i32) + (local $digit i32) + (local $d|27 i64) + (local $28 i32) + (local $buffer|29 i32) + (local $len|30 i32) + (local $delta|31 i64) + (local $rest|32 i64) + (local $ten_kappa|33 i64) + (local $wp_w|34 i64) + (local $lastp|35 i32) + (local $digit|36 i32) + i32.const 0 + local.get $mp_exp + i32.sub + local.set $one_exp + i64.const 1 + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $one_frc + local.get $one_frc + i64.const 1 + i64.sub + local.set $mask + local.get $mp_frc + local.get $w_frc + i64.sub + local.set $wp_w_frc + local.get $mp_frc + local.get $one_exp + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $p1 + local.get $mp_frc + local.get $mask + i64.and + local.set $p2 + local.get $p1 + call $~lib/util/number/decimalCount32 + local.set $kappa + local.get $sign + local.set $len + loop $while-continue|0 + local.get $kappa + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $kappa + local.set $16 + local.get $16 + i32.const 10 + i32.eq + br_if $case0|1 + local.get $16 + i32.const 9 + i32.eq + br_if $case1|1 + local.get $16 + i32.const 8 + i32.eq + br_if $case2|1 + local.get $16 + i32.const 7 + i32.eq + br_if $case3|1 + local.get $16 + i32.const 6 + i32.eq + br_if $case4|1 + local.get $16 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $16 + i32.const 4 + i32.eq + br_if $case6|1 + local.get $16 + i32.const 3 + i32.eq + br_if $case7|1 + local.get $16 + i32.const 2 + i32.eq + br_if $case8|1 + local.get $16 + i32.const 1 + i32.eq + br_if $case9|1 + br $case10|1 + end + local.get $p1 + i32.const 1000000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100 + i32.div_u + local.set $d + local.get $p1 + i32.const 100 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10 + i32.div_u + local.set $d + local.get $p1 + i32.const 10 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + local.set $d + i32.const 0 + local.set $p1 + br $break|1 + end + i32.const 0 + local.set $d + br $break|1 + end + local.get $d + local.get $len + i32.or + if + local.get $buffer + local.get $len + local.tee $17 + i32.const 1 + i32.add + local.set $len + local.get $17 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p1 + i64.extend_i32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.get $p2 + i64.add + local.set $tmp + local.get $tmp + local.get $delta + i64.le_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $buffer + local.set $buffer|19 + local.get $len + local.set $len|20 + local.get $delta + local.set $delta|21 + local.get $tmp + local.set $rest + i32.const 9632 + local.get $kappa + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $ten_kappa + local.get $wp_w_frc + local.set $wp_w + local.get $buffer|19 + local.get $len|20 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp + local.get $lastp + i32.load16_u + local.set $digit + loop $while-continue|3 + local.get $rest + local.get $wp_w + i64.lt_u + if (result i32) + local.get $delta|21 + local.get $rest + i64.sub + local.get $ten_kappa + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w + local.get $rest + i64.sub + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit + i32.const 1 + i32.sub + local.set $digit + local.get $rest + local.get $ten_kappa + i64.add + local.set $rest + br $while-continue|3 + end + end + local.get $lastp + local.get $digit + i32.store16 + local.get $len + return + end + br $while-continue|0 + end + end + loop $while-continue|4 + i32.const 1 + if + local.get $p2 + i64.const 10 + i64.mul + local.set $p2 + local.get $delta + i64.const 10 + i64.mul + local.set $delta + local.get $p2 + local.get $one_exp + i64.extend_i32_s + i64.shr_u + local.set $d|27 + local.get $d|27 + local.get $len + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $buffer + local.get $len + local.tee $28 + i32.const 1 + i32.add + local.set $len + local.get $28 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d|27 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $p2 + local.get $mask + i64.and + local.set $p2 + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p2 + local.get $delta + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $wp_w_frc + i32.const 9632 + i32.const 0 + local.get $kappa + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $wp_w_frc + local.get $buffer + local.set $buffer|29 + local.get $len + local.set $len|30 + local.get $delta + local.set $delta|31 + local.get $p2 + local.set $rest|32 + local.get $one_frc + local.set $ten_kappa|33 + local.get $wp_w_frc + local.set $wp_w|34 + local.get $buffer|29 + local.get $len|30 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp|35 + local.get $lastp|35 + i32.load16_u + local.set $digit|36 + loop $while-continue|6 + local.get $rest|32 + local.get $wp_w|34 + i64.lt_u + if (result i32) + local.get $delta|31 + local.get $rest|32 + i64.sub + local.get $ten_kappa|33 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w|34 + local.get $rest|32 + i64.sub + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit|36 + i32.const 1 + i32.sub + local.set $digit|36 + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.set $rest|32 + br $while-continue|6 + end + end + local.get $lastp|35 + local.get $digit|36 + i32.store16 + local.get $len + return + end + br $while-continue|4 + end + end + unreachable + ) + (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) + (local $kk i32) + (local $i i32) + (local $ptr i32) + (local $offset i32) + (local $i|7 i32) + (local $buffer|8 i32) + (local $k|9 i32) + (local $sign i32) + (local $decimals i32) + (local $buffer|12 i32) + (local $num i32) + (local $offset|14 i32) + (local $len i32) + (local $buffer|16 i32) + (local $k|17 i32) + (local $sign|18 i32) + (local $decimals|19 i32) + (local $buffer|20 i32) + (local $num|21 i32) + (local $offset|22 i32) + local.get $k + i32.eqz + if + local.get $buffer + local.get $length + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $length + i32.const 2 + i32.add + return + end + local.get $length + local.get $k + i32.add + local.set $kk + local.get $length + local.get $kk + i32.le_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $length + local.set $i + loop $for-loop|0 + local.get $i + local.get $kk + i32.lt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $kk + i32.const 2 + i32.add + return + else + local.get $kk + i32.const 0 + i32.gt_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $ptr + i32.const 2 + i32.add + local.get $ptr + i32.const 0 + local.get $k + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + local.get $length + i32.const 1 + i32.add + return + else + i32.const -6 + local.get $kk + i32.lt_s + if (result i32) + local.get $kk + i32.const 0 + i32.le_s + else + i32.const 0 + end + if + i32.const 2 + local.get $kk + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $buffer + local.get $length + i32.const 1 + i32.shl + memory.copy + local.get $buffer + i32.const 48 + i32.const 46 + i32.const 16 + i32.shl + i32.or + i32.store + i32.const 2 + local.set $i|7 + loop $for-loop|1 + local.get $i|7 + local.get $offset + i32.lt_s + if + local.get $buffer + local.get $i|7 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i|7 + i32.const 1 + i32.add + local.set $i|7 + br $for-loop|1 + end + end + local.get $length + local.get $offset + i32.add + return + else + local.get $length + i32.const 1 + i32.eq + if + local.get $buffer + i32.const 101 + i32.store16 offset=2 + block $~lib/util/number/genExponent|inlined.0 (result i32) + local.get $buffer + i32.const 4 + i32.add + local.set $buffer|8 + local.get $kk + i32.const 1 + i32.sub + local.set $k|9 + local.get $k|9 + i32.const 0 + i32.lt_s + local.set $sign + local.get $sign + if + i32.const 0 + local.get $k|9 + i32.sub + local.set $k|9 + end + local.get $k|9 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals + local.get $buffer|8 + local.set $buffer|12 + local.get $k|9 + local.set $num + local.get $decimals + local.set $offset|14 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|12 + local.get $num + local.get $offset|14 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|8 + i32.const 45 + i32.const 43 + local.get $sign + select + i32.store16 + local.get $decimals + br $~lib/util/number/genExponent|inlined.0 + end + local.set $length + local.get $length + i32.const 2 + i32.add + return + else + local.get $length + i32.const 1 + i32.shl + local.set $len + local.get $buffer + i32.const 4 + i32.add + local.get $buffer + i32.const 2 + i32.add + local.get $len + i32.const 2 + i32.sub + memory.copy + local.get $buffer + i32.const 46 + i32.store16 offset=2 + local.get $buffer + local.get $len + i32.add + i32.const 101 + i32.store16 offset=2 + local.get $length + block $~lib/util/number/genExponent|inlined.1 (result i32) + local.get $buffer + local.get $len + i32.add + i32.const 4 + i32.add + local.set $buffer|16 + local.get $kk + i32.const 1 + i32.sub + local.set $k|17 + local.get $k|17 + i32.const 0 + i32.lt_s + local.set $sign|18 + local.get $sign|18 + if + i32.const 0 + local.get $k|17 + i32.sub + local.set $k|17 + end + local.get $k|17 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals|19 + local.get $buffer|16 + local.set $buffer|20 + local.get $k|17 + local.set $num|21 + local.get $decimals|19 + local.set $offset|22 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|20 + local.get $num|21 + local.get $offset|22 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|16 + i32.const 45 + i32.const 43 + local.get $sign|18 + select + i32.store16 + local.get $decimals|19 + br $~lib/util/number/genExponent|inlined.1 + end + i32.add + local.set $length + local.get $length + i32.const 2 + i32.add + return + end + unreachable + end + unreachable + end + unreachable + end + unreachable + ) + (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) + (local $sign i32) + (local $value|4 f64) + (local $buffer|5 i32) + (local $sign|6 i32) + (local $isSingle|7 i32) + (local $frc i64) + (local $exp i32) + (local $uv i32) + (local $sid i32) + (local $uv|12 i64) + (local $sid|13 i64) + (local $f i64) + (local $e i32) + (local $isSingle|16 i32) + (local $frc|17 i64) + (local $exp|18 i32) + (local $off i32) + (local $m i32) + (local $minExp i32) + (local $dk f64) + (local $k i32) + (local $index i32) + (local $off|25 i32) + (local $frc_pow i64) + (local $exp_pow i32) + (local $u i64) + (local $v i64) + (local $u0 i64) + (local $v0 i64) + (local $u1 i64) + (local $v1 i64) + (local $l i64) + (local $t i64) + (local $w i64) + (local $w_frc i64) + (local $e1 i32) + (local $e2 i32) + (local $w_exp i32) + (local $u|41 i64) + (local $v|42 i64) + (local $u0|43 i64) + (local $v0|44 i64) + (local $u1|45 i64) + (local $v1|46 i64) + (local $l|47 i64) + (local $t|48 i64) + (local $w|49 i64) + (local $wp_frc i64) + (local $e1|51 i32) + (local $e2|52 i32) + (local $wp_exp i32) + (local $u|54 i64) + (local $v|55 i64) + (local $u0|56 i64) + (local $v0|57 i64) + (local $u1|58 i64) + (local $v1|59 i64) + (local $l|60 i64) + (local $t|61 i64) + (local $w|62 i64) + (local $wm_frc i64) + (local $delta i64) + (local $len i32) + local.get $value + f64.const 0 + f64.lt + local.set $sign + local.get $sign + if + local.get $value + f64.neg + local.set $value + local.get $buffer + i32.const 45 + i32.store16 + end + block $~lib/util/number/grisu2|inlined.0 (result i32) + local.get $value + local.set $value|4 + local.get $buffer + local.set $buffer|5 + local.get $sign + local.set $sign|6 + local.get $isSingle + local.set $isSingle|7 + local.get $isSingle|7 + if + local.get $value|4 + f32.demote_f64 + i32.reinterpret_f32 + local.set $uv + local.get $uv + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.set $exp + local.get $uv + i32.const 8388607 + i32.and + local.set $sid + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + local.get $sid + i64.extend_i32_u + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 127 + i32.const 23 + i32.add + i32.sub + local.set $exp + else + local.get $value|4 + i64.reinterpret_f64 + local.set $uv|12 + local.get $uv|12 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $exp + local.get $uv|12 + i64.const 4503599627370495 + i64.and + local.set $sid|13 + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $sid|13 + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 1023 + i32.const 52 + i32.add + i32.sub + local.set $exp + end + local.get $frc + local.set $f + local.get $exp + local.set $e + local.get $isSingle|7 + local.set $isSingle|16 + local.get $f + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.set $frc|17 + local.get $e + i32.const 1 + i32.sub + local.set $exp|18 + local.get $frc|17 + i64.clz + i32.wrap_i64 + local.set $off + local.get $frc|17 + local.get $off + i64.extend_i32_s + i64.shl + local.set $frc|17 + local.get $exp|18 + local.get $off + i32.sub + local.set $exp|18 + i32.const 1 + local.get $f + local.get $isSingle|16 + if (result i64) + i64.const 8388608 + else + i64.const 4503599627370496 + end + i64.eq + i32.add + local.set $m + local.get $frc|17 + global.set $~lib/util/number/_frc_plus + local.get $f + local.get $m + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $e + local.get $m + i32.sub + local.get $exp|18 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $exp|18 + global.set $~lib/util/number/_exp + global.get $~lib/util/number/_exp + local.set $minExp + i32.const -61 + local.get $minExp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.set $dk + local.get $dk + i32.trunc_sat_f64_s + local.set $k + local.get $k + local.get $k + f64.convert_i32_s + local.get $dk + f64.ne + i32.add + local.set $k + local.get $k + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.set $index + i32.const 348 + local.get $index + i32.const 3 + i32.shl + i32.sub + global.set $~lib/util/number/_K + i32.const 8760 + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 9456 + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $frc + i64.clz + i32.wrap_i64 + local.set $off|25 + local.get $frc + local.get $off|25 + i64.extend_i32_s + i64.shl + local.set $frc + local.get $exp + local.get $off|25 + i32.sub + local.set $exp + global.get $~lib/util/number/_frc_pow + local.set $frc_pow + global.get $~lib/util/number/_exp_pow + local.set $exp_pow + block $~lib/util/number/umul64f|inlined.0 (result i64) + local.get $frc + local.set $u + local.get $frc_pow + local.set $v + local.get $u + i64.const 4294967295 + i64.and + local.set $u0 + local.get $v + i64.const 4294967295 + i64.and + local.set $v0 + local.get $u + i64.const 32 + i64.shr_u + local.set $u1 + local.get $v + i64.const 32 + i64.shr_u + local.set $v1 + local.get $u0 + local.get $v0 + i64.mul + local.set $l + local.get $u1 + local.get $v0 + i64.mul + local.get $l + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $u0 + local.get $v1 + i64.mul + local.get $t + i64.const 4294967295 + i64.and + i64.add + local.set $w + local.get $w + i64.const 2147483647 + i64.add + local.set $w + local.get $t + i64.const 32 + i64.shr_u + local.set $t + local.get $w + i64.const 32 + i64.shr_u + local.set $w + local.get $u1 + local.get $v1 + i64.mul + local.get $t + i64.add + local.get $w + i64.add + br $~lib/util/number/umul64f|inlined.0 + end + local.set $w_frc + block $~lib/util/number/umul64e|inlined.0 (result i32) + local.get $exp + local.set $e1 + local.get $exp_pow + local.set $e2 + local.get $e1 + local.get $e2 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.0 + end + local.set $w_exp + block $~lib/util/number/umul64f|inlined.1 (result i64) + global.get $~lib/util/number/_frc_plus + local.set $u|41 + local.get $frc_pow + local.set $v|42 + local.get $u|41 + i64.const 4294967295 + i64.and + local.set $u0|43 + local.get $v|42 + i64.const 4294967295 + i64.and + local.set $v0|44 + local.get $u|41 + i64.const 32 + i64.shr_u + local.set $u1|45 + local.get $v|42 + i64.const 32 + i64.shr_u + local.set $v1|46 + local.get $u0|43 + local.get $v0|44 + i64.mul + local.set $l|47 + local.get $u1|45 + local.get $v0|44 + i64.mul + local.get $l|47 + i64.const 32 + i64.shr_u + i64.add + local.set $t|48 + local.get $u0|43 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.const 4294967295 + i64.and + i64.add + local.set $w|49 + local.get $w|49 + i64.const 2147483647 + i64.add + local.set $w|49 + local.get $t|48 + i64.const 32 + i64.shr_u + local.set $t|48 + local.get $w|49 + i64.const 32 + i64.shr_u + local.set $w|49 + local.get $u1|45 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.add + local.get $w|49 + i64.add + br $~lib/util/number/umul64f|inlined.1 + end + i64.const 1 + i64.sub + local.set $wp_frc + block $~lib/util/number/umul64e|inlined.1 (result i32) + global.get $~lib/util/number/_exp + local.set $e1|51 + local.get $exp_pow + local.set $e2|52 + local.get $e1|51 + local.get $e2|52 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.1 + end + local.set $wp_exp + block $~lib/util/number/umul64f|inlined.2 (result i64) + global.get $~lib/util/number/_frc_minus + local.set $u|54 + local.get $frc_pow + local.set $v|55 + local.get $u|54 + i64.const 4294967295 + i64.and + local.set $u0|56 + local.get $v|55 + i64.const 4294967295 + i64.and + local.set $v0|57 + local.get $u|54 + i64.const 32 + i64.shr_u + local.set $u1|58 + local.get $v|55 + i64.const 32 + i64.shr_u + local.set $v1|59 + local.get $u0|56 + local.get $v0|57 + i64.mul + local.set $l|60 + local.get $u1|58 + local.get $v0|57 + i64.mul + local.get $l|60 + i64.const 32 + i64.shr_u + i64.add + local.set $t|61 + local.get $u0|56 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.const 4294967295 + i64.and + i64.add + local.set $w|62 + local.get $w|62 + i64.const 2147483647 + i64.add + local.set $w|62 + local.get $t|61 + i64.const 32 + i64.shr_u + local.set $t|61 + local.get $w|62 + i64.const 32 + i64.shr_u + local.set $w|62 + local.get $u1|58 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.add + local.get $w|62 + i64.add + br $~lib/util/number/umul64f|inlined.2 + end + i64.const 1 + i64.add + local.set $wm_frc + local.get $wp_frc + local.get $wm_frc + i64.sub + local.set $delta + local.get $buffer|5 + local.get $w_frc + local.get $w_exp + local.get $wp_frc + local.get $wp_exp + local.get $delta + local.get $sign|6 + call $~lib/util/number/genDigits + br $~lib/util/number/grisu2|inlined.0 + end + local.set $len + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.get $len + local.get $sign + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.set $len + local.get $len + local.get $sign + i32.add + return + ) + (func $~lib/number/F64#toString (param $this f64) (param $radix i32) (result i32) + local.get $this + call $~lib/util/number/dtoa + return + ) + (func $~lib/math/ipow32 (param $x i32) (param $e i32) (result i32) + (local $out i32) + (local $log i32) + (local $4 i32) + i32.const 1 + local.set $out + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $x + i32.const 2 + i32.eq + if + i32.const 1 + local.get $e + i32.shl + i32.const 0 + local.get $e + i32.const 32 + i32.lt_u + select + return + end + local.get $e + i32.const 0 + i32.le_s + if + local.get $x + i32.const -1 + i32.eq + if + i32.const -1 + i32.const 1 + local.get $e + i32.const 1 + i32.and + select + return + end + local.get $e + i32.const 0 + i32.eq + local.get $x + i32.const 1 + i32.eq + i32.or + return + else + local.get $e + i32.const 1 + i32.eq + if + local.get $x + return + else + local.get $e + i32.const 2 + i32.eq + if + local.get $x + local.get $x + i32.mul + return + else + local.get $e + i32.const 32 + i32.lt_s + if + i32.const 32 + local.get $e + i32.clz + i32.sub + local.set $log + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $log + local.set $4 + local.get $4 + i32.const 5 + i32.eq + br_if $case0|0 + local.get $4 + i32.const 4 + i32.eq + br_if $case1|0 + local.get $4 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $4 + i32.const 2 + i32.eq + br_if $case3|0 + local.get $4 + i32.const 1 + i32.eq + br_if $case4|0 + br $break|0 + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + end + local.get $out + return + end + end + end + end + loop $while-continue|1 + local.get $e + if + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + br $while-continue|1 + end + end + local.get $out + return + ) + (func $resolve-binary/Foo#lt (param $this i32) (param $other i32) (result i32) + i32.const 9824 + return + ) + (func $~lib/string/String#toString (param $this i32) (result i32) + local.get $this + return + ) + (func $resolve-binary/Foo#gt (param $this i32) (param $other i32) (result i32) + i32.const 9856 + return + ) + (func $resolve-binary/Foo#le (param $this i32) (param $other i32) (result i32) + i32.const 9888 + return + ) + (func $resolve-binary/Foo#ge (param $this i32) (param $other i32) (result i32) + i32.const 9920 + return + ) + (func $resolve-binary/Foo#eq (param $this i32) (param $other i32) (result i32) + i32.const 9952 + return + ) + (func $resolve-binary/Foo#ne (param $this i32) (param $other i32) (result i32) + i32.const 9984 + return + ) + (func $resolve-binary/Foo#add (param $this i32) (param $other i32) (result i32) + i32.const 10016 + return + ) + (func $resolve-binary/Foo.sub (param $a i32) (param $b i32) (result i32) + i32.const 10048 + return + ) + (func $resolve-binary/Foo#mul (param $this i32) (param $other i32) (result i32) + i32.const 10080 + return + ) + (func $resolve-binary/Foo#div (param $this i32) (param $other i32) (result i32) + i32.const 10112 + return + ) + (func $resolve-binary/Foo#rem (param $this i32) (param $other i32) (result i32) + i32.const 10144 + return + ) + (func $resolve-binary/Foo#pow (param $this i32) (param $other i32) (result i32) + i32.const 10176 + return + ) + (func $resolve-binary/Bar#add (param $this i32) (param $other i32) (result i32) + local.get $other + return + ) + (func $resolve-binary/Bar#self (param $this i32) (result i32) + local.get $this + return + ) + (func $resolve-binary/Baz#add (param $this i32) (param $other i32) (result i32) + local.get $other + return + ) + (func $resolve-binary/Baz#sub (param $this i32) (param $other i32) (result i32) + local.get $this + return + ) + (func $resolve-binary/Baz.mul (param $left i32) (param $right i32) (result i32) + local.get $right + return + ) + (func $resolve-binary/Baz.div (param $left i32) (param $right i32) (result i32) + local.get $left + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $resolve-binary/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-binary/bar + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-binary/bar2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-binary/baz + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 576 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 384 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1184 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2240 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $resolve-binary/Baz + block $resolve-binary/Bar + block $resolve-binary/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-binary/Foo $resolve-binary/Bar $resolve-binary/Baz $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:resolve-binary + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 43024 + i32.const 43072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $resolve-binary/Foo#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $resolve-binary/Bar#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $resolve-binary/Baz#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:resolve-binary + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 1 + i32.const 2 + i32.lt_s + i32.const 0 + call $~lib/number/Bool#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.gt_s + i32.const 0 + call $~lib/number/Bool#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 64 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.le_s + i32.const 0 + call $~lib/number/Bool#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.ge_s + i32.const 0 + call $~lib/number/Bool#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 64 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.eq + i32.const 0 + call $~lib/number/Bool#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 64 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.ne + i32.const 0 + call $~lib/number/Bool#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 496 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 528 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 672 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 1 + global.set $resolve-binary/a + global.get $resolve-binary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 1 + i32.add + global.set $resolve-binary/a + global.get $resolve-binary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 1 + i32.sub + global.set $resolve-binary/a + global.get $resolve-binary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 2 + i32.mul + global.set $resolve-binary/a + global.get $resolve-binary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + global.set $resolve-binary/f + global.get $resolve-binary/f + f64.const 2 + call $~lib/math/NativeMath.pow + global.set $resolve-binary/f + global.get $resolve-binary/f + i32.const 0 + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 57 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + global.set $resolve-binary/a + global.get $resolve-binary/a + i32.const 2 + i32.div_s + global.set $resolve-binary/a + global.get $resolve-binary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 3 + i32.rem_s + global.set $resolve-binary/a + global.get $resolve-binary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 1 + i32.shl + global.set $resolve-binary/a + global.get $resolve-binary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9728 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 1 + i32.shr_s + global.set $resolve-binary/a + global.get $resolve-binary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 1 + i32.shr_u + global.set $resolve-binary/a + global.get $resolve-binary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 3 + i32.and + global.set $resolve-binary/a + global.get $resolve-binary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 88 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 3 + i32.or + global.set $resolve-binary/a + global.get $resolve-binary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/a + i32.const 2 + i32.xor + global.set $resolve-binary/a + global.get $resolve-binary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 98 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.add + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.sub + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.mul + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 2 + i32.div_s + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.rem_s + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $~lib/math/ipow32 + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9728 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const 2 + call $~lib/math/NativeMath.pow + i32.const 0 + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 139 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const 2 + call $~lib/math/NativeMath.pow + i32.const 0 + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 146 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 1 + i32.shl + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9728 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 1 + i32.shr_s + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 30 + i32.shr_u + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 1 + i32.and + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 170 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.or + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 3 + i32.xor + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 180 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 192 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 197 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 202 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $resolve-binary/Foo#constructor + global.set $resolve-binary/foo + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $resolve-binary/Foo#lt + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9824 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 263 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $resolve-binary/Foo#gt + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 268 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $resolve-binary/Foo#le + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 273 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $resolve-binary/Foo#ge + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 278 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $resolve-binary/Foo#eq + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9952 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 283 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $resolve-binary/Foo#ne + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 9984 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $resolve-binary/Foo#add + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 10016 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 293 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $resolve-binary/Foo.sub + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 10048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 298 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $resolve-binary/Foo#mul + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 10080 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 303 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $resolve-binary/Foo#div + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 10112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 308 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $resolve-binary/Foo#rem + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 10144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 313 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + global.get $resolve-binary/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $resolve-binary/Foo#pow + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 10176 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 318 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $resolve-binary/Bar#constructor + global.set $resolve-binary/bar + i32.const 0 + call $resolve-binary/Bar#constructor + global.set $resolve-binary/bar2 + global.get $resolve-binary/bar + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + global.get $resolve-binary/bar2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $resolve-binary/Bar#add + global.set $resolve-binary/bar + global.get $resolve-binary/bar + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $resolve-binary/Bar#self + global.get $resolve-binary/bar2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 336 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/bar + global.get $resolve-binary/bar2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 341 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $resolve-binary/Baz#constructor + global.set $resolve-binary/baz + global.get $resolve-binary/baz + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 42 + call $resolve-binary/Baz#add + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 363 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/baz + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 42 + call $resolve-binary/Baz#sub + global.get $resolve-binary/baz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 366 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/baz + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 42 + call $resolve-binary/Baz.mul + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-binary/baz + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 42 + call $resolve-binary/Baz.div + global.get $resolve-binary/baz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 372 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i32) + (local $offset|11 i32) + (local $val32 i32) + (local $decimals|13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 160 + i32.const 288 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 352 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + local.get $value + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + i64.extend_i32_u + local.get $offset|11 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.set $val32 + local.get $val32 + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $val32 + i64.extend_i32_u + local.get $decimals|13 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/util/number/dtoa (param $value f64) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + local.get $value + local.set $value|1 + i32.const 0 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 8560 + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 8592 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 8624 + i32.const 8672 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 8704 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 8704 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/resolve-binary.json b/tests/compiler/resolve-binary.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/resolve-binary.json +++ b/tests/compiler/resolve-binary.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat deleted file mode 100644 index 81ca43caa9..0000000000 --- a/tests/compiler/resolve-binary.optimized.wat +++ /dev/null @@ -1,2184 +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)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i64_i32_i64_i32_i64_=>_i32 (func (param i32 i64 i32 i64 i32 i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 1056) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 1088) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00b\00i\00n\00a\00r\00y\00.\00t\00s") - (data (i32.const 1152) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1184) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1312) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1408) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1504) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1536) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 1568) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1600) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1632) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1680) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1712) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $do-continue|0 - local.get $1 - i32.const 10 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 - local.get $1 - br_if $do-continue|0 - end - ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 31 - i32.shr_u - local.tee $1 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.tee $2 - local.get $0 - local.get $3 - call $~lib/util/number/utoa_dec_simple - local.get $1 - if - local.get $2 - i32.const 45 - i32.store16 - end - local.get $2 - else - i32.const 1392 - end - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - local.get $3 - local.get $1 - i64.sub - local.set $9 - local.get $3 - i64.const 1 - i32.const 0 - local.get $4 - i32.sub - local.tee $10 - i64.extend_i32_s - i64.shl - local.tee $11 - i64.const 1 - i64.sub - local.tee $12 - i64.and - local.set $7 - local.get $3 - local.get $10 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $8 - loop $while-continue|0 - local.get $8 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $8 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $2 - i32.const 1000000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100 - i32.div_u - local.set $4 - local.get $2 - i32.const 100 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10 - i32.div_u - local.set $4 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - local.set $4 - i32.const 0 - local.set $2 - br $break|1 - end - i32.const 0 - local.set $4 - end - local.get $4 - local.get $6 - i32.or - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $7 - local.get $2 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - i64.shl - i64.add - local.tee $1 - local.get $5 - i64.le_u - if - local.get $8 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 2 - i32.shl - i32.const 2584 - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|3 - i32.const 1 - local.get $9 - local.get $1 - i64.sub - local.get $1 - local.get $3 - i64.add - local.tee $7 - local.get $9 - i64.sub - i64.gt_u - local.get $7 - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $3 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - return - end - br $while-continue|0 - end - end - local.get $10 - i64.extend_i32_s - local.set $1 - loop $while-continue|4 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $7 - i64.const 10 - i64.mul - local.tee $3 - local.get $1 - i64.shr_u - local.tee $7 - local.get $6 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $3 - local.get $12 - i64.and - local.tee $7 - local.get $5 - i64.ge_u - br_if $while-continue|4 - end - local.get $8 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - local.get $9 - i32.const 0 - local.get $8 - i32.sub - i32.const 2 - i32.shl - i32.const 2584 - i32.add - i64.load32_u - i64.mul - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|6 - i32.const 1 - local.get $3 - local.get $1 - i64.sub - local.get $1 - local.get $11 - i64.add - local.tee $7 - local.get $3 - i64.sub - i64.gt_u - local.get $7 - local.get $3 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $11 - i64.ge_u - i32.const 0 - local.get $1 - local.get $3 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $11 - i64.add - local.set $1 - br $while-continue|6 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 - i32.const -6 - local.get $3 - i32.lt_s - select - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.add - end - end - end - end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - i32.const -4 - global.set $~lib/util/number/_K - i32.const 2064 - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 2496 - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $1 - i64.const 32 - i64.shr_u - local.set $3 - local.get $1 - i64.const 4294967295 - i64.and - local.tee $1 - i64.const 31 - i64.shl - local.get $1 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.set $2 - local.get $0 - local.get $0 - local.get $3 - i64.const 31 - i64.shl - local.get $1 - i64.const 31 - i64.shl - i64.const 0 - i64.add - local.tee $4 - i64.const 32 - i64.shr_u - i64.add - local.get $4 - i64.const 4294967295 - i64.and - i64.const 0 - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $0 - i32.const 3 - i32.add - local.get $3 - i64.const 31 - i64.shl - local.get $2 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - i64.const 4294967295 - i64.and - local.get $3 - i64.const 10 - i64.shl - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $2 - local.get $0 - i32.const 3 - i32.add - local.get $2 - local.get $3 - i64.const 2147483647 - i64.mul - local.get $1 - i64.const 2147483647 - i64.mul - local.get $1 - i64.const 4294966784 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $2 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 4294966784 - i64.mul - local.get $2 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - call $~lib/util/number/genDigits - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.get $0 - call $~lib/string/String#get:length - local.tee $4 - i32.lt_s - local.set $2 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $3 - local.get $4 - i32.lt_s - local.set $1 - i32.const 0 - local.get $4 - local.get $2 - select - local.tee $2 - local.get $3 - local.get $4 - local.get $1 - select - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $2 - i32.sub - local.tee $3 - i32.eqz - if - i32.const 2640 - return - end - i32.const 0 - local.get $1 - local.get $4 - i32.const 1 - i32.shl - i32.eq - local.get $2 - select - if - local.get $0 - return - end - local.get $3 - i32.const 1 - call $~lib/rt/stub/__alloc - local.tee $1 - local.get $0 - local.get $2 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $1 - ) - (func $~lib/number/F64#toString (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 56 - i32.const 1 - call $~lib/rt/stub/__alloc - local.tee $0 - call $~lib/util/number/dtoa_core - local.tee $1 - i32.const 28 - i32.ne - if (result i32) - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 2656 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.tee $2 - i32.load offset=4 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 2656 - i32.const 70 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $2 - i32.load - i32.add - i32.eq - if - local.get $2 - global.set $~lib/rt/stub/offset - end - else - local.get $0 - end - ) - (func $start:resolve-binary - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 1040 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 2 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3200 - global.set $~lib/rt/stub/offset - i32.const 1 - global.set $resolve-binary/a - i32.const 1 - call $~lib/number/I32#toString - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 1 - i32.add - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 53 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 1 - i32.sub - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 1 - i32.shl - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/number/F64#toString - i32.const 2704 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - global.set $resolve-binary/a - i32.const 2 - global.set $resolve-binary/a - i32.const 2 - call $~lib/number/I32#toString - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 75 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 3 - i32.rem_s - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 80 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 1 - i32.shl - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - i32.const 2736 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 85 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 1 - i32.shr_s - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 90 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 1 - i32.shr_u - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 3 - i32.and - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 3 - i32.or - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - i32.const 2768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/a - i32.const 2 - i32.xor - global.set $resolve-binary/a - global.get $resolve-binary/a - call $~lib/number/I32#toString - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $~lib/number/I32#toString - i32.const 2768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - call $~lib/number/I32#toString - i32.const 2800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 122 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/number/I32#toString - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 127 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/number/I32#toString - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 132 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/number/I32#toString - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - local.set $0 - i32.const 2 - local.set $1 - i32.const 1 - local.set $2 - loop $while-continue|0 - local.get $1 - if - local.get $0 - local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 - i32.and - select - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - br $while-continue|0 - end - end - local.get $2 - call $~lib/number/I32#toString - i32.const 2736 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 144 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/number/F64#toString - i32.const 2704 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/number/F64#toString - i32.const 2704 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 158 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $~lib/number/I32#toString - i32.const 2736 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 165 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/number/I32#toString - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 170 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $~lib/number/I32#toString - i32.const 2768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 175 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/number/I32#toString - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 182 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $~lib/number/I32#toString - i32.const 2768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 187 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/number/I32#toString - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 192 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/number/I32#toString - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/number/I32#toString - i32.const 1392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 204 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/number/I32#toString - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/number/I32#toString - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 214 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - drop - i32.const 2832 - i32.const 2832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 275 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2864 - i32.const 2864 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 280 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2896 - i32.const 2896 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 285 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2928 - i32.const 2928 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 290 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2960 - i32.const 2960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 295 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2992 - i32.const 2992 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 300 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3024 - i32.const 3024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 305 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3056 - i32.const 3056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 310 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3088 - i32.const 3088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 315 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3120 - i32.const 3120 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 320 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3152 - i32.const 3152 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 325 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3184 - i32.const 3184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 330 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__alloc - global.set $resolve-binary/bar - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__alloc - global.set $resolve-binary/bar2 - global.get $resolve-binary/bar2 - global.set $resolve-binary/bar - global.get $resolve-binary/bar - global.get $resolve-binary/bar2 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 348 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-binary/bar - global.get $resolve-binary/bar2 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 353 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:resolve-binary - ) -) diff --git a/tests/compiler/resolve-binary.release.wat b/tests/compiler/resolve-binary.release.wat new file mode 100644 index 0000000000..d7685c983c --- /dev/null +++ b/tests/compiler/resolve-binary.release.wat @@ -0,0 +1,4322 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (param i32 i32 i32))) + (type $9 (func (param i64 i64 i32 i64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $resolve-binary/a (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $resolve-binary/foo (mut i32) (i32.const 0)) + (global $resolve-binary/bar (mut i32) (i32.const 0)) + (global $resolve-binary/bar2 (mut i32) (i32.const 0)) + (global $resolve-binary/baz (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 44016)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\08\00\00\00t\00r\00u\00e") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data $2 (i32.const 1100) "<") + (data $2.1 (i32.const 1112) "\02\00\00\00\"\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00b\00i\00n\00a\00r\00y\00.\00t\00s") + (data $3 (i32.const 1164) "|") + (data $3.1 (i32.const 1176) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $4 (i32.const 1292) "<") + (data $4.1 (i32.const 1304) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $5 (i32.const 1356) "\1c") + (data $5.1 (i32.const 1368) "\02\00\00\00\02\00\00\000") + (data $6 (i32.const 1388) "<") + (data $6.1 (i32.const 1400) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $7 (i32.const 1452) "<") + (data $7.1 (i32.const 1464) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $10 (i32.const 1580) "<") + (data $10.1 (i32.const 1592) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $11 (i32.const 1644) ",") + (data $11.1 (i32.const 1656) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $13 (i32.const 1724) "<") + (data $13.1 (i32.const 1736) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $14 (i32.const 1788) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $15 (i32.const 2188) "\1c\04") + (data $15.1 (i32.const 2200) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $16 (i32.const 3244) "\\") + (data $16.1 (i32.const 3256) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $17 (i32.const 3340) "\1c") + (data $17.1 (i32.const 3352) "\02\00\00\00\02\00\00\001") + (data $18 (i32.const 3372) "\1c") + (data $18.1 (i32.const 3384) "\02\00\00\00\02\00\00\002") + (data $19 (i32.const 3413) "\a0\f6?") + (data $19.1 (i32.const 3425) "\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?") + (data $19.2 (i32.const 3457) "\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?") + (data $19.3 (i32.const 3489) "XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?") + (data $19.4 (i32.const 3521) "\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?") + (data $19.5 (i32.const 3553) "xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?") + (data $19.6 (i32.const 3585) "`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?") + (data $19.7 (i32.const 3617) "\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?") + (data $19.8 (i32.const 3649) "HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?") + (data $19.9 (i32.const 3681) "\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?") + (data $19.10 (i32.const 3713) " \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?") + (data $19.11 (i32.const 3745) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?") + (data $19.12 (i32.const 3777) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?") + (data $19.13 (i32.const 3809) "x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?") + (data $19.14 (i32.const 3841) "\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?") + (data $19.15 (i32.const 3873) "\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?") + (data $19.16 (i32.const 3905) "H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?") + (data $19.17 (i32.const 3937) "\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?") + (data $19.18 (i32.const 3969) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?") + (data $19.19 (i32.const 4001) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?") + (data $19.20 (i32.const 4033) "@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?") + (data $19.21 (i32.const 4065) "`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?") + (data $19.22 (i32.const 4097) "\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?") + (data $19.23 (i32.const 4129) "\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?") + (data $19.24 (i32.const 4161) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?") + (data $19.25 (i32.const 4193) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?") + (data $19.26 (i32.const 4225) "\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?") + (data $19.27 (i32.const 4257) "\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?") + (data $19.28 (i32.const 4289) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?") + (data $19.29 (i32.const 4321) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?") + (data $19.30 (i32.const 4353) "P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?") + (data $19.31 (i32.const 4385) "\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?") + (data $19.32 (i32.const 4417) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?") + (data $19.33 (i32.const 4449) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?") + (data $19.34 (i32.const 4481) "\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?") + (data $19.35 (i32.const 4513) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?") + (data $19.36 (i32.const 4545) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?") + (data $19.37 (i32.const 4577) "\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?") + (data $19.38 (i32.const 4609) "\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?") + (data $19.85 (i32.const 6113) "`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?") + (data $19.86 (i32.const 6145) "\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?") + (data $19.87 (i32.const 6177) "\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?") + (data $19.88 (i32.const 6209) "\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?") + (data $19.89 (i32.const 6241) "@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?") + (data $19.90 (i32.const 6273) "`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?") + (data $19.91 (i32.const 6305) "@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?") + (data $19.92 (i32.const 6337) " \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?") + (data $19.93 (i32.const 6369) "\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?") + (data $19.94 (i32.const 6401) "\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?") + (data $19.95 (i32.const 6433) "\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?") + (data $19.96 (i32.const 6465) "\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?") + (data $19.97 (i32.const 6497) "\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?") + (data $19.98 (i32.const 6529) "\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?") + (data $19.99 (i32.const 6561) "\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?") + (data $19.100 (i32.const 6593) "\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?") + (data $19.101 (i32.const 6625) "pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?") + (data $19.102 (i32.const 6657) "PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?") + (data $19.103 (i32.const 6690) "9\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?") + (data $19.104 (i32.const 6722) "\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?") + (data $19.105 (i32.const 6753) "\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?") + (data $19.106 (i32.const 6785) "\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?") + (data $19.107 (i32.const 6817) "\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?") + (data $19.108 (i32.const 6849) "\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?") + (data $19.109 (i32.const 6881) "\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?") + (data $19.110 (i32.const 6913) "\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?") + (data $19.111 (i32.const 6946) "\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?") + (data $19.112 (i32.const 6977) "\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?") + (data $19.113 (i32.const 7009) "XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?") + (data $19.114 (i32.const 7041) "`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?") + (data $19.115 (i32.const 7073) "\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?") + (data $19.116 (i32.const 7105) "\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?") + (data $19.117 (i32.const 7137) "hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?") + (data $19.118 (i32.const 7169) "\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?") + (data $19.119 (i32.const 7201) "\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?") + (data $19.120 (i32.const 7233) "`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data $21 (i32.const 9564) "\1c") + (data $21.1 (i32.const 9576) "\02\00\00\00\06\00\00\000\00.\000") + (data $22 (i32.const 9596) "\1c") + (data $22.1 (i32.const 9608) "\02\00\00\00\06\00\00\00N\00a\00N") + (data $23 (i32.const 9628) ",") + (data $23.1 (i32.const 9640) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $24 (i32.const 9676) ",") + (data $24.1 (i32.const 9688) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data $26 (i32.const 9784) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") - (data (i32.const 48) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") - (data (i32.const 80) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00b\00i\00n\00a\00r\00y\00.\00t\00s\00") - (data (i32.const 144) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 176) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 304) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 368) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 800) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1840) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00") - (data (i32.const 1936) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 1968) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00") - (data (i32.const 1992) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\0d=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data (i32.const 8144) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 8176) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 8208) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 8256) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 8288) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2544 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 2544 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 3600 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 3600 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/U8#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + i32.const 255 + i32.and + local.get $radix + call $~lib/util/number/utoa32 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $resolve-elementaccess/arr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-elementaccess/buf + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 336 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 144 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2544 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3600 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $resolve-elementaccess/Buffer~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/typedarray/Uint8Array + block $resolve-elementaccess/Buffer + block $~lib/typedarray/Float32Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Float32Array $resolve-elementaccess/Buffer $~lib/typedarray/Uint8Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float32Array~visit + return + end + local.get $0 + local.get $1 + call $resolve-elementaccess/Buffer~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + unreachable + ) + (func $~start + call $start:resolve-elementaccess + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 36608 + i32.const 36656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) + (local $buffer i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $length + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + local.get $alignLog2 + i32.shl + local.tee $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $length + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Float32Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Float32Array#__set (param $this i32) (param $index i32) (param $value f32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 544 + i32.const 1315 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#__get (param $this i32) (param $index i32) (result f32) + (local $2 i32) + (local $3 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 544 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/typedarray/Uint8Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $resolve-elementaccess/Buffer#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + call $~lib/typedarray/Uint8Array#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint8Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.ge_u + if + i32.const 336 + i32.const 544 + i32.const 178 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + local.get $value + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#__get (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.ge_u + if + i32.const 336 + i32.const 544 + i32.const 167 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + i32.load8_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $start:resolve-elementaccess + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 2 + call $~lib/typedarray/Float32Array#constructor + global.set $resolve-elementaccess/arr + global.get $resolve-elementaccess/arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $resolve-elementaccess/arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $resolve-elementaccess/arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + i32.const 0 + call $~lib/number/F32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2176 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-elementaccess/arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + i32.const 0 + call $~lib/number/F32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2256 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2176 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-elementaccess/arr + local.tee $0 + i32.store offset=8 + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + local.tee $1 + global.get $resolve-elementaccess/arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 10 + f32.add + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $1 + call $~lib/typedarray/Float32Array#__get + i32.const 0 + call $~lib/number/F32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2288 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2176 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-elementaccess/arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + global.get $resolve-elementaccess/arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 10 + f32.add + call $~lib/typedarray/Float32Array#__set + global.get $resolve-elementaccess/arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 21 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 2176 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + call $resolve-elementaccess/Buffer#constructor + global.set $resolve-elementaccess/buf + global.get $resolve-elementaccess/buf + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $resolve-elementaccess/buf + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $resolve-elementaccess/buf + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 10 + call $~lib/number/U8#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2176 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-elementaccess/buf + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 10 + call $~lib/number/U8#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3728 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2176 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-elementaccess/buf + local.tee $2 + i32.store offset=16 + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + local.tee $3 + global.get $resolve-elementaccess/buf + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 10 + i32.add + call $~lib/typedarray/Uint8Array#__set + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $3 + call $~lib/typedarray/Uint8Array#__get + i32.const 10 + call $~lib/number/U8#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2176 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-elementaccess/buf + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + global.get $resolve-elementaccess/buf + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 10 + i32.add + call $~lib/typedarray/Uint8Array#__set + global.get $resolve-elementaccess/buf + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 21 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2176 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/dtoa (param $value f32) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + local.get $value + f64.promote_f32 + local.set $value|1 + i32.const 1 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 608 + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 640 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 672 + i32.const 720 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 752 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 752 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 2320 + i32.const 2448 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 2512 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) +) diff --git a/tests/compiler/resolve-elementaccess.json b/tests/compiler/resolve-elementaccess.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/resolve-elementaccess.json +++ b/tests/compiler/resolve-elementaccess.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat deleted file mode 100644 index 7b40aaa0fe..0000000000 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ /dev/null @@ -1,2095 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $f32_=>_i32 (func (param f32) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1136) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1200) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1264) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1296) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1328) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1376) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1408) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $do-continue|0 - local.get $1 - i32.const 10 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 - local.get $1 - br_if $do-continue|0 - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 - i32.const -6 - local.get $3 - i32.lt_s - select - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.add - end - end - end - end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - f64.const 0 - f64.lt - local.tee $9 - if (result f64) - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - else - local.get $1 - end - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $2 - i64.const 4503599627370495 - i64.and - i64.add - local.tee $3 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $4 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.tee $8 - i32.const 1 - i32.sub - local.get $4 - i32.sub - local.set $4 - local.get $3 - local.get $3 - i64.const 4503599627370496 - i64.eq - i32.const 1 - i32.add - local.tee $10 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $8 - local.get $10 - i32.sub - local.get $4 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $4 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_f64_s - local.tee $4 - local.get $4 - f64.convert_i32_s - local.get $1 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - local.tee $10 - i32.sub - global.set $~lib/util/number/_K - local.get $10 - i32.const 1408 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $4 - i32.const 1 - i32.shl - i32.const 2104 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $6 - i64.const 4294967295 - i64.and - local.set $2 - local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_plus - local.tee $5 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $5 - i64.const 4294967295 - i64.and - local.tee $5 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $5 - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - local.get $3 - local.get $3 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $8 - local.get $0 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $4 - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $6 - global.get $~lib/util/number/_frc_minus - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $5 - i64.mul - local.get $2 - local.get $5 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $2 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $3 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul - local.get $3 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $9 - call $~lib/util/number/genDigits - local.get $9 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $9 - i32.add - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.get $0 - call $~lib/string/String#get:length - local.tee $4 - i32.lt_s - local.set $2 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $3 - local.get $4 - i32.lt_s - local.set $1 - i32.const 0 - local.get $4 - local.get $2 - select - local.tee $2 - local.get $3 - local.get $4 - local.get $1 - select - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $2 - i32.sub - local.tee $3 - i32.eqz - if - i32.const 2336 - return - end - i32.const 0 - local.get $1 - local.get $4 - i32.const 1 - i32.shl - i32.eq - local.get $2 - select - if - local.get $0 - return - end - local.get $3 - i32.const 1 - call $~lib/rt/stub/__alloc - local.tee $1 - local.get $0 - local.get $2 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $1 - ) - (func $~lib/number/F32#toString (param $0 f32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - block $__inlined_func$~lib/util/number/dtoa - local.get $0 - f64.promote_f32 - local.tee $3 - f64.const 0 - f64.eq - if - i32.const 1280 - local.set $1 - br $__inlined_func$~lib/util/number/dtoa - end - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.ne - if - local.get $3 - local.get $3 - f64.ne - if - i32.const 1312 - local.set $1 - br $__inlined_func$~lib/util/number/dtoa - end - i32.const 1344 - i32.const 1392 - local.get $3 - f64.const 0 - f64.lt - select - local.set $1 - br $__inlined_func$~lib/util/number/dtoa - end - i32.const 56 - i32.const 1 - call $~lib/rt/stub/__alloc - local.tee $1 - local.get $3 - call $~lib/util/number/dtoa_core - local.tee $2 - i32.const 28 - i32.eq - br_if $__inlined_func$~lib/util/number/dtoa - local.get $1 - local.get $2 - call $~lib/string/String#substring - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - select - i32.eqz - if - i32.const 0 - i32.const 2352 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.tee $4 - i32.load offset=4 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 2352 - i32.const 70 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $1 - local.get $4 - i32.load - i32.add - i32.eq - if - local.get $4 - global.set $~lib/rt/stub/offset - end - local.set $1 - end - local.get $1 - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - local.get $0 - i32.load16_u - local.tee $3 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $3 - local.get $4 - i32.sub - return - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - return - end - i32.const 0 - ) - (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1152 - i32.const 1216 - i32.const 163 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1152 - i32.const 1216 - i32.const 152 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - ) - (func $~lib/number/U8#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - block $__inlined_func$~lib/util/number/utoa32 - local.get $0 - i32.const 255 - i32.and - local.tee $1 - i32.eqz - if - i32.const 2752 - local.set $0 - br $__inlined_func$~lib/util/number/utoa32 - end - local.get $1 - call $~lib/util/number/decimalCount32 - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.tee $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa_dec_simple - end - local.get $0 - ) - (func $start:resolve-elementaccess - (local $0 i32) - i32.const 2960 - global.set $~lib/rt/stub/offset - i32.const 12 - i32.const 3 - call $~lib/rt/stub/__alloc - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - global.set $resolve-elementaccess/arr - global.get $resolve-elementaccess/arr - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - global.get $resolve-elementaccess/arr - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - global.get $resolve-elementaccess/arr - i32.const 0 - call $~lib/typedarray/Float32Array#__get - call $~lib/number/F32#toString - i32.const 2400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 2432 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-elementaccess/arr - i32.const 1 - call $~lib/typedarray/Float32Array#__get - call $~lib/number/F32#toString - i32.const 2496 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 2432 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-elementaccess/arr - local.tee $0 - i32.const 0 - global.get $resolve-elementaccess/arr - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 10 - f32.add - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - call $~lib/number/F32#toString - i32.const 2528 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 2432 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-elementaccess/arr - i32.const 0 - global.get $resolve-elementaccess/arr - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 10 - f32.add - call $~lib/typedarray/Float32Array#__set - global.get $resolve-elementaccess/arr - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 21 - f32.ne - if - i32.const 0 - i32.const 2432 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 4 - call $~lib/rt/stub/__alloc - local.tee $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 5 - call $~lib/rt/stub/__alloc - end - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - global.set $resolve-elementaccess/buf - global.get $resolve-elementaccess/buf - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - global.get $resolve-elementaccess/buf - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - global.get $resolve-elementaccess/buf - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - call $~lib/number/U8#toString - i32.const 2880 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 2432 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-elementaccess/buf - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - call $~lib/number/U8#toString - i32.const 2912 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 2432 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-elementaccess/buf - local.tee $0 - i32.const 0 - global.get $resolve-elementaccess/buf - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 10 - i32.add - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - call $~lib/number/U8#toString - i32.const 2944 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 2432 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-elementaccess/buf - i32.const 0 - global.get $resolve-elementaccess/buf - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 10 - i32.add - call $~lib/typedarray/Uint8Array#__set - global.get $resolve-elementaccess/buf - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 21 - i32.ne - if - i32.const 0 - i32.const 2432 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:resolve-elementaccess - ) -) diff --git a/tests/compiler/resolve-elementaccess.release.wat b/tests/compiler/resolve-elementaccess.release.wat new file mode 100644 index 0000000000..bc80e8c9b3 --- /dev/null +++ b/tests/compiler/resolve-elementaccess.release.wat @@ -0,0 +1,3849 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i64 i64 i32 i64 i32) (result i32))) + (type $9 (func (param i32 i32 i32) (result i32))) + (type $10 (func (param f64) (result i32))) + (type $11 (func (param f32) (result i32))) + (type $12 (func (param i32) (result i32))) + (type $13 (func (param i32 i32 f32))) + (type $14 (func (param i32 i32) (result f32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $resolve-elementaccess/arr (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $resolve-elementaccess/buf (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37600)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $1 (i32.const 1084) "<") + (data $1.1 (i32.const 1096) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $2 (i32.const 1148) "<") + (data $2.1 (i32.const 1160) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $3 (i32.const 1212) "<") + (data $3.1 (i32.const 1224) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $6 (i32.const 1340) "<") + (data $6.1 (i32.const 1352) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $7 (i32.const 1404) ",") + (data $7.1 (i32.const 1416) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $9 (i32.const 1484) "<") + (data $9.1 (i32.const 1496) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 1548) "<") + (data $10.1 (i32.const 1560) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data $11 (i32.const 1612) "\1c") + (data $11.1 (i32.const 1624) "\02\00\00\00\06\00\00\000\00.\000") + (data $12 (i32.const 1644) "\1c") + (data $12.1 (i32.const 1656) "\02\00\00\00\06\00\00\00N\00a\00N") + (data $13 (i32.const 1676) ",") + (data $13.1 (i32.const 1688) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $14 (i32.const 1724) ",") + (data $14.1 (i32.const 1736) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data $16 (i32.const 1832) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $f32_i32_=>_i32 (func (param f32 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 128) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 192) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 256) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 288) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 320) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 368) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 400) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2288 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2288 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/itoa32 + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 624 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 432 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1232 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2288 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + unreachable + ) + (func $~start + call $start:resolve-function-expression + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35216 + i32.const 35264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:resolve-function-expression + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 2 + i32.const 1 + global.set $~argumentsLength + i32.const 32 + i32.load + call_indirect (type $0) + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + global.set $~argumentsLength + i32.const 144 + i32.load + call_indirect (type $0) + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 576 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 720 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 176 + i32.load + call_indirect (type $0) + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2384 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i32) + (local $offset|11 i32) + (local $val32 i32) + (local $decimals|13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 208 + i32.const 336 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 400 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + local.get $value + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + i64.extend_i32_u + local.get $offset|11 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.set $val32 + local.get $val32 + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $val32 + i64.extend_i32_u + local.get $decimals|13 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) +) diff --git a/tests/compiler/resolve-function-expression.json b/tests/compiler/resolve-function-expression.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/resolve-function-expression.json +++ b/tests/compiler/resolve-function-expression.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat deleted file mode 100644 index ee3dd5a1bf..0000000000 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ /dev/null @@ -1,382 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1056) "<\00\00\00\01\00\00\00\01\00\00\00<\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") - (data (i32.const 1136) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\02") - (data (i32.const 1168) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\03") - (data (i32.const 1200) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1328) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1392) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1424) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1520) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\002") - (table $0 4 funcref) - (elem (i32.const 1) $start:resolve-function-expression~anonymous|0 $start:resolve-function-expression~anonymous|1 $start:resolve-function-expression~anonymous|2) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $start:resolve-function-expression~anonymous|0 (param $0 i32) (result i32) - local.get $0 - i32.const 40 - i32.add - ) - (func $start:resolve-function-expression~anonymous|1 (param $0 i32) (result i32) - local.get $0 - i32.const 41 - i32.add - ) - (func $start:resolve-function-expression~anonymous|2 (param $0 i32) (result i32) - local.get $0 - i32.const 42 - i32.add - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $1 - i32.const 16 - local.get $1 - i32.const 16 - i32.gt_u - select - local.tee $5 - i32.add - local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $4 - local.get $1 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $4 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $1 - global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 - i32.sub - local.tee $1 - local.get $5 - i32.store - local.get $1 - i32.const 1 - i32.store offset=4 - local.get $1 - i32.const 1 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - local.get $3 - ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.eqz - if - i32.const 1408 - return - end - local.get $0 - i32.const 31 - i32.shr_u - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - local.get $2 - i32.add - local.tee $3 - i32.const 1 - i32.shl - call $~lib/rt/stub/__alloc - local.tee $4 - local.set $5 - loop $do-continue|0 - local.get $0 - i32.const 10 - i32.div_u - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.tee $0 - br_if $do-continue|0 - end - local.get $2 - if - local.get $4 - i32.const 45 - i32.store16 - end - local.get $4 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1536 - local.set $3 - local.get $0 - i32.const 7 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $0 - i64.load - local.get $3 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $1 - local.tee $2 - i32.const 1 - i32.sub - local.set $1 - local.get $2 - if - local.get $0 - i32.load16_u - local.tee $2 - local.get $3 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $2 - local.get $4 - i32.sub - return - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $start:resolve-function-expression - (local $0 i32) - (local $1 i32) - i32.const 2 - i32.const 1040 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1152 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1552 - global.set $~lib/rt/stub/offset - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 0 - i32.const 1184 - i32.load - call_indirect (type $i32_=>_i32) - call $~lib/util/number/itoa32 - local.tee $0 - local.set $1 - i32.const 1 - local.get $0 - i32.const 1536 - i32.eq - br_if $__inlined_func$~lib/string/String.__eq - drop - block $folding-inner0 - local.get $1 - i32.eqz - br_if $folding-inner0 - local.get $1 - call $~lib/string/String#get:length - local.tee $0 - i32.const 1536 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $1 - local.get $0 - call $~lib/util/string/compareImpl - i32.eqz - br $__inlined_func$~lib/string/String.__eq - end - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:resolve-function-expression - ) -) diff --git a/tests/compiler/resolve-function-expression.release.wat b/tests/compiler/resolve-function-expression.release.wat new file mode 100644 index 0000000000..82fe5bde30 --- /dev/null +++ b/tests/compiler/resolve-function-expression.release.wat @@ -0,0 +1,2082 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36216)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") + (data $1 (i32.const 1068) "L") + (data $1.1 (i32.const 1080) "\02\00\00\00<\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") + (data $2 (i32.const 1148) "\1c") + (data $2.1 (i32.const 1160) "\04\00\00\00\08\00\00\00\02") + (data $3 (i32.const 1180) "\1c") + (data $3.1 (i32.const 1192) "\04\00\00\00\08\00\00\00\03") + (data $4 (i32.const 1212) "|") + (data $4.1 (i32.const 1224) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $5 (i32.const 1340) "<") + (data $5.1 (i32.const 1352) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $6 (i32.const 1404) "\1c") + (data $6.1 (i32.const 1416) "\02\00\00\00\02\00\00\000") + (data $7 (i32.const 1436) "<") + (data $7.1 (i32.const 1448) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $8 (i32.const 1500) "<") + (data $8.1 (i32.const 1512) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $11 (i32.const 1628) "<") + (data $11.1 (i32.const 1640) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $12 (i32.const 1692) ",") + (data $12.1 (i32.const 1704) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $14 (i32.const 1772) "<") + (data $14.1 (i32.const 1784) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $15 (i32.const 1836) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $16 (i32.const 2236) "\1c\04") + (data $16.1 (i32.const 2248) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $17 (i32.const 3292) "\\") + (data $17.1 (i32.const 3304) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $18 (i32.const 3388) "\1c") + (data $18.1 (i32.const 3400) "\02\00\00\00\04\00\00\004\002") + (data $19 (i32.const 3424) "\05\00\00\00 \00\00\00 \00\00\00 ") + (table $0 4 4 funcref) + (elem $0 (i32.const 1) $start:resolve-function-expression~anonymous|0 $start:resolve-function-expression~anonymous|1 $start:resolve-function-expression~anonymous|2) + (export "memory" (memory $0)) + (start $~start) + (func $start:resolve-function-expression~anonymous|0 (param $0 i32) (result i32) + local.get $0 + i32.const 40 + i32.add + ) + (func $start:resolve-function-expression~anonymous|1 (param $0 i32) (result i32) + local.get $0 + i32.const 41 + i32.add + ) + (func $start:resolve-function-expression~anonymous|2 (param $0 i32) (result i32) + local.get $0 + i32.const 42 + i32.add + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1648 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 2256 + call $~lib/rt/itcms/__visit + i32.const 3312 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$124 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36216 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$124 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3424 + i32.load + i32.gt_u + if + i32.const 1648 + i32.const 1712 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3428 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1792 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1792 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1792 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1792 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1792 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1792 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36224 + i32.const 0 + i32.store + i32.const 37792 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36224 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36224 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36224 + i32.const 37796 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36224 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36216 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36216 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36216 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1792 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/number/I32#toString (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + if + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$73 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1424 + local.set $2 + br $__inlined_func$~lib/util/number/itoa32$73 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + select + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $3 + i32.add + local.tee $6 + i32.const 1073741804 + i32.ge_u + if + i32.const 1456 + i32.const 1520 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $7 + local.get $6 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1792 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $8 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $8 + i32.const 256 + i32.ge_u + if (result i32) + local.get $8 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $8 + i32.const 1 + i32.const 27 + local.get $8 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $8 + end + else + local.get $8 + end + i32.const 4 + local.get $7 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $4 + local.get $2 + local.get $4 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $7 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $7 + local.get $8 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $8 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1792 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $9 + local.get $8 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1792 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const -4 + i32.and + local.get $8 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $8 + local.get $9 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $8 + i32.add + local.tee $8 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $7 + local.get $8 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $9 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + local.get $4 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + i32.const 2 + i32.store offset=12 + local.get $2 + local.get $6 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $4 + i32.load offset=8 + local.set $7 + local.get $2 + local.get $4 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $7 + i32.store offset=8 + local.get $7 + local.get $2 + local.get $7 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $4 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $2 + i32.const 0 + local.get $6 + memory.fill + local.get $2 + i32.store + local.get $2 + local.get $3 + i32.add + local.set $4 + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $5 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $4 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i64.load32_u + local.get $5 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + i32.const 100 + i32.ge_u + if + local.get $4 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $4 + local.get $1 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i32.load + i32.store + else + local.get $4 + local.get $1 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + if + local.get $2 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + if + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 2 + i32.const 1056 + i32.load + call_indirect (type $0) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1168 + i32.load + call_indirect (type $0) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 36216 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/pinSpace + i32.const 1604 + i32.const 1600 + i32.store + i32.const 1608 + i32.const 1600 + i32.store + i32.const 1600 + global.set $~lib/rt/itcms/toSpace + i32.const 1748 + i32.const 1744 + i32.store + i32.const 1752 + i32.const 1744 + i32.store + i32.const 1744 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 1200 + i32.load + call_indirect (type $0) + call $~lib/number/I32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + block $__inlined_func$~lib/string/String.__eq$1 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $5 + i32.const 3408 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + br $__inlined_func$~lib/string/String.__eq$1 + end + block $folding-inner0 + local.get $5 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store + local.get $1 + i32.const 3404 + i32.load + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + i32.const 3408 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=4 + i32.const 1 + local.get $5 + i32.const 7 + i32.and + local.get $1 + i32.const 4 + i32.lt_u + select + i32.eqz + if + loop $do-loop|0 + local.get $5 + i64.load + local.get $3 + i64.load + i64.eq + if + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$80 + loop $while-continue|1 + local.get $1 + local.tee $0 + i32.const 1 + i32.sub + local.set $1 + local.get $0 + if + local.get $5 + i32.load16_u + local.tee $2 + local.get $3 + i32.load16_u + local.tee $0 + i32.sub + local.set $4 + local.get $0 + local.get $2 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$80 + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $while-continue|1 + end + end + i32.const 0 + local.set $4 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.eqz + br $__inlined_func$~lib/string/String.__eq$1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat deleted file mode 100644 index 7384bbdc18..0000000000 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ /dev/null @@ -1,1008 +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)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 48) "<\00\00\00\01\00\00\00\01\00\00\00<\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") - (data (i32.const 128) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 160) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 192) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 320) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 384) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 404) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 816) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1856) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00") - (data (i32.const 1952) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\002\00") - (table $0 4 funcref) - (elem (i32.const 1) $start:resolve-function-expression~anonymous|0 $start:resolve-function-expression~anonymous|1 $start:resolve-function-expression~anonymous|2) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 1972)) - (export "memory" (memory $0)) - (start $~start) - (func $start:resolve-function-expression~anonymous|0 (param $0 i32) (result i32) - local.get $0 - i32.const 40 - i32.add - ) - (func $start:resolve-function-expression~anonymous|1 (param $0 i32) (result i32) - local.get $0 - i32.const 41 - i32.add - ) - (func $start:resolve-function-expression~anonymous|2 (param $0 i32) (result i32) - local.get $0 - i32.const 42 - i32.add - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 100000 - i32.lt_u - if - local.get $0 - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $0 - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $0 - i32.const 10000 - i32.ge_u - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $0 - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - i32.const 404 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - i32.const 404 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $1 - i32.const 100 - i32.div_u - local.set $3 - local.get $1 - i32.const 100 - i32.rem_u - local.set $10 - local.get $3 - local.set $1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 404 - local.get $10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 404 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - else - local.get $2 - i32.const 1 - i32.sub - local.set $2 - i32.const 48 - local.get $1 - i32.add - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - ) - (func $~lib/util/number/utoa_hex_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $2 - i32.const 2 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 832 - local.get $1 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i64.const 8 - i64.shr_u - local.set $1 - br $while-continue|0 - end - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - i32.const 832 - local.get $1 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - local.get $1 - local.set $2 - local.get $2 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $1 - i64.extend_i32_s - local.set $3 - local.get $3 - local.set $4 - i32.const 1 - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $4 - i64.div_u - local.set $0 - local.get $4 - local.get $4 - i64.mul - local.set $4 - local.get $5 - i32.const 1 - i32.shl - local.set $5 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $0 - i64.const 1 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $3 - i64.div_u - local.set $0 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $while-continue|1 - end - end - local.get $5 - i32.const 1 - i32.sub - ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i32) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $5 - local.get $4 - i64.const 1 - i64.sub - local.set $6 - loop $do-continue|0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 1872 - local.get $1 - local.get $6 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $5 - i64.shr_u - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|0 - end - else - loop $do-continue|1 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $4 - i64.div_u - local.set $6 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 1872 - local.get $1 - local.get $6 - local.get $4 - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $6 - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|1 - end - end - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/util/number/itoa32 (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.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 208 - i32.const 336 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 400 - return - end - local.get $0 - i32.const 31 - i32.shr_u - local.set $2 - local.get $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - i64.extend_i32_u - local.get $5 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.set $4 - local.get $4 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $3 - local.get $4 - i64.extend_i32_u - local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/stub/__retain - ) - (func $~lib/number/I32#toString (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/util/number/itoa32 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $start:resolve-function-expression - (local $0 i32) - i32.const 2 - i32.const 1 - global.set $~argumentsLength - i32.const 32 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - global.set $~argumentsLength - i32.const 144 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 176 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 10 - call $~lib/number/I32#toString - local.tee $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:resolve-function-expression - ) -) diff --git a/tests/compiler/resolve-localortype.debug.wat b/tests/compiler/resolve-localortype.debug.wat new file mode 100644 index 0000000000..c070663650 --- /dev/null +++ b/tests/compiler/resolve-localortype.debug.wat @@ -0,0 +1,75 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "test" (func $export:resolve-localortype/test)) + (func $resolve-localortype/foo<~lib/string/String> (param $s i32) (result i32) + local.get $s + return + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 32800 + i32.const 32848 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $resolve-localortype/test (param $string i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $string + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $resolve-localortype/foo<~lib/string/String> + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $export:resolve-localortype/test (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $resolve-localortype/test + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/resolve-localortype.json b/tests/compiler/resolve-localortype.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/resolve-localortype.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/resolve-localortype.release.wat b/tests/compiler/resolve-localortype.release.wat new file mode 100644 index 0000000000..7fe06f9905 --- /dev/null +++ b/tests/compiler/resolve-localortype.release.wat @@ -0,0 +1,54 @@ +(module + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33792)) + (memory $0 0) + (export "memory" (memory $0)) + (export "test" (func $export:resolve-localortype/test)) + (func $export:resolve-localortype/test (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/resolve-localortype.ts b/tests/compiler/resolve-localortype.ts new file mode 100644 index 0000000000..abc2794454 --- /dev/null +++ b/tests/compiler/resolve-localortype.ts @@ -0,0 +1,6 @@ +// see: https://github.com/AssemblyScript/assemblyscript/issues/1684 + +function foo(s: T): T { return s; } +export function test(string: string): string { + return foo(string); // must not conflict +} diff --git a/tests/compiler/resolve-nested.debug.wat b/tests/compiler/resolve-nested.debug.wat new file mode 100644 index 0000000000..41ee1e9f62 --- /dev/null +++ b/tests/compiler/resolve-nested.debug.wat @@ -0,0 +1,67 @@ +(module + (type $0 (func (param i32 i32 i32))) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $resolve-nested/Outer.Inner.a (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.Inner.b (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.Inner.c (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.Inner.d (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.Inner.e (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.Inner.f (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.a (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.b (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.c (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.d (mut i32) (i32.const 0)) + (global $resolve-nested/Outer.e (mut i32) (i32.const 0)) + (global $resolve-nested/a (mut i32) (i32.const 0)) + (global $resolve-nested/b (mut i32) (i32.const 0)) + (global $resolve-nested/c (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "outer" (func $export:resolve-nested/outer)) + (func $resolve-nested/outer (param $a i32) (param $b i32) (param $c i32) + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 32800 + i32.const 32848 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $export:resolve-nested/outer (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $2 + call $resolve-nested/outer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/resolve-nested.json b/tests/compiler/resolve-nested.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/resolve-nested.json +++ b/tests/compiler/resolve-nested.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/resolve-nested.optimized.wat b/tests/compiler/resolve-nested.optimized.wat deleted file mode 100644 index e220e7e288..0000000000 --- a/tests/compiler/resolve-nested.optimized.wat +++ /dev/null @@ -1,117 +0,0 @@ -(module - (type $i32_=>_i32 (func (param 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_=>_none (func (param i32 i32 i32 i32 i32 i32))) - (memory $0 0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.InnerClass i32 (i32.const 4)) - (global $resolve-nested/Outer.Inner.EvenInnerClass i32 (i32.const 5)) - (export "memory" (memory $0)) - (export "Outer.InnerClass" (global $resolve-nested/Outer.InnerClass)) - (export "Outer.InnerClass#constructor" (func $resolve-nested/Outer.InnerClass#constructor)) - (export "Outer.Inner.EvenInnerClass" (global $resolve-nested/Outer.Inner.EvenInnerClass)) - (export "Outer.Inner.EvenInnerClass#constructor" (func $resolve-nested/Outer.Inner.EvenInnerClass#constructor)) - (export "Outer.Inner.evenInner" (func $resolve-nested/Outer.Inner.evenInner)) - (export "Outer.inner" (func $resolve-nested/Outer.inner)) - (export "outer" (func $resolve-nested/outer)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - i32.const 16 - i32.add - local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $4 - local.get $1 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $4 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $1 - global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 - i32.sub - local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $3 - ) - (func $resolve-nested/Outer.InnerClass#constructor (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 4 - call $~lib/rt/stub/__alloc - end - ) - (func $resolve-nested/Outer.Inner.EvenInnerClass#constructor (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 5 - call $~lib/rt/stub/__alloc - end - ) - (func $resolve-nested/Outer.Inner.evenInner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - nop - ) - (func $resolve-nested/Outer.inner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - nop - ) - (func $resolve-nested/outer (param $0 i32) (param $1 i32) (param $2 i32) - nop - ) - (func $~start - i32.const 1024 - global.set $~lib/rt/stub/offset - ) -) diff --git a/tests/compiler/resolve-nested.release.wat b/tests/compiler/resolve-nested.release.wat new file mode 100644 index 0000000000..76459d8f80 --- /dev/null +++ b/tests/compiler/resolve-nested.release.wat @@ -0,0 +1,39 @@ +(module + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33792)) + (memory $0 0) + (export "memory" (memory $0)) + (export "outer" (func $export:resolve-nested/outer)) + (func $export:resolve-nested/outer (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/resolve-nested.ts b/tests/compiler/resolve-nested.ts index a2fa919378..523ae141c8 100644 --- a/tests/compiler/resolve-nested.ts +++ b/tests/compiler/resolve-nested.ts @@ -1,14 +1,14 @@ class OuterClass {} -export namespace Outer { +namespace Outer { export class InnerClass {} export namespace Inner { export class EvenInnerClass {} - var a: OuterClass; - var b: InnerClass; - var c: EvenInnerClass; - var d: Outer.InnerClass; - var e: Outer.Inner.EvenInnerClass; - var f: Inner.EvenInnerClass; + var a: OuterClass | null; + var b: InnerClass | null; + var c: EvenInnerClass | null; + var d: Outer.InnerClass | null; + var e: Outer.Inner.EvenInnerClass | null; + var f: Inner.EvenInnerClass | null; export function evenInner( a: OuterClass, b: InnerClass, @@ -18,11 +18,11 @@ export namespace Outer { f: Inner.EvenInnerClass ): void {} } - var a: OuterClass; - var b: InnerClass; - var c: Inner.EvenInnerClass; - var d: Outer.InnerClass; - var e: Outer.Inner.EvenInnerClass; + var a: OuterClass | null; + var b: InnerClass | null; + var c: Inner.EvenInnerClass | null; + var d: Outer.InnerClass | null; + var e: Outer.Inner.EvenInnerClass | null; export function inner( a: OuterClass, b: InnerClass, @@ -31,9 +31,9 @@ export namespace Outer { e: Outer.Inner.EvenInnerClass ): void {} } -var a: OuterClass; -var b: Outer.InnerClass; -var c: Outer.Inner.EvenInnerClass; +var a: OuterClass | null; +var b: Outer.InnerClass | null; +var c: Outer.Inner.EvenInnerClass | null; export function outer( a: OuterClass, b: Outer.InnerClass, diff --git a/tests/compiler/resolve-nested.untouched.wat b/tests/compiler/resolve-nested.untouched.wat deleted file mode 100644 index c7af958501..0000000000 --- a/tests/compiler/resolve-nested.untouched.wat +++ /dev/null @@ -1,266 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param 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_=>_none (func (param i32 i32 i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 0) - (table $0 1 funcref) - (global $resolve-nested/Outer.Inner.a (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.Inner.b (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.Inner.c (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.Inner.d (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.Inner.e (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.Inner.f (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.a (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.b (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.c (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.d (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.e (mut i32) (i32.const 0)) - (global $resolve-nested/a (mut i32) (i32.const 0)) - (global $resolve-nested/b (mut i32) (i32.const 0)) - (global $resolve-nested/c (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) - (global $resolve-nested/Outer.InnerClass i32 (i32.const 4)) - (global $resolve-nested/Outer.Inner.EvenInnerClass i32 (i32.const 5)) - (export "memory" (memory $0)) - (export "Outer.InnerClass" (global $resolve-nested/Outer.InnerClass)) - (export "Outer.InnerClass#constructor" (func $resolve-nested/Outer.InnerClass#constructor)) - (export "Outer.Inner.EvenInnerClass" (global $resolve-nested/Outer.Inner.EvenInnerClass)) - (export "Outer.Inner.EvenInnerClass#constructor" (func $resolve-nested/Outer.Inner.EvenInnerClass#constructor)) - (export "Outer.Inner.evenInner" (func $resolve-nested/Outer.Inner.evenInner)) - (export "Outer.inner" (func $resolve-nested/Outer.inner)) - (export "outer" (func $resolve-nested/outer)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $resolve-nested/Outer.InnerClass#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $resolve-nested/Outer.Inner.EvenInnerClass#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $resolve-nested/Outer.Inner.evenInner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__retain - local.set $3 - local.get $4 - call $~lib/rt/stub/__retain - local.set $4 - local.get $5 - call $~lib/rt/stub/__retain - local.set $5 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - ) - (func $resolve-nested/Outer.inner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__retain - local.set $3 - local.get $4 - call $~lib/rt/stub/__retain - local.set $4 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - ) - (func $resolve-nested/outer (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - ) - (func $~start - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) -) diff --git a/tests/compiler/resolve-new.debug.wat b/tests/compiler/resolve-new.debug.wat new file mode 100644 index 0000000000..a1724b824f --- /dev/null +++ b/tests/compiler/resolve-new.debug.wat @@ -0,0 +1,2431 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $resolve-new/foo (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 416)) + (global $~lib/memory/__data_end i32 (i32.const 440)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33208)) + (global $~lib/memory/__heap_base i32 (i32.const 33208)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 416) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $resolve-new/Foo#bar (param $this i32) + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $resolve-new/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $resolve-new/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:resolve-new + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33232 + i32.const 33280 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $resolve-new/Foo#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:resolve-new + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $resolve-new/Foo#constructor + global.set $resolve-new/foo + i32.const 0 + call $resolve-new/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $resolve-new/Foo#bar + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/resolve-new.json b/tests/compiler/resolve-new.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/resolve-new.json +++ b/tests/compiler/resolve-new.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/resolve-new.optimized.wat b/tests/compiler/resolve-new.optimized.wat deleted file mode 100644 index b06a5f2b6d..0000000000 --- a/tests/compiler/resolve-new.optimized.wat +++ /dev/null @@ -1,78 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__alloc - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - i32.const 16 - i32.add - local.tee $0 - memory.size - local.tee $2 - i32.const 16 - i32.shl - local.tee $1 - i32.gt_u - if - local.get $2 - local.get $0 - local.get $1 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 - i32.sub - local.tee $0 - i32.const 16 - i32.store - local.get $0 - i32.const 1 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - ) - (func $~start - i32.const 1024 - global.set $~lib/rt/stub/offset - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__alloc - ) -) diff --git a/tests/compiler/resolve-new.release.wat b/tests/compiler/resolve-new.release.wat new file mode 100644 index 0000000000..2a19017969 --- /dev/null +++ b/tests/compiler/resolve-new.release.wat @@ -0,0 +1,1527 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $resolve-new/foo (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34232)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1440) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $resolve-new/foo + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$112 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34232 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$112 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34232 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34232 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34232 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-new/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1464 + i32.lt_s + if + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34232 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $resolve-new/Foo#constructor + global.set $resolve-new/foo + call $resolve-new/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $resolve-new/Foo#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1464 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1464 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat deleted file mode 100644 index 61f82a9dd5..0000000000 --- a/tests/compiler/resolve-new.untouched.wat +++ /dev/null @@ -1,169 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 0) - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $resolve-new/foo (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $resolve-new/Foo#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $resolve-new/Foo#bar (param $0 i32) - nop - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $start:resolve-new - (local $0 i32) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - call $resolve-new/Foo#constructor - global.set $resolve-new/foo - i32.const 0 - call $resolve-new/Foo#constructor - local.tee $0 - call $resolve-new/Foo#bar - local.get $0 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:resolve-new - ) -) diff --git a/tests/compiler/resolve-propertyaccess.debug.wat b/tests/compiler/resolve-propertyaccess.debug.wat new file mode 100644 index 0000000000..06b17954f1 --- /dev/null +++ b/tests/compiler/resolve-propertyaccess.debug.wat @@ -0,0 +1,3534 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $resolve-propertyaccess/Namespace.member i32 (i32.const 1)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $resolve-propertyaccess/Namespace.lazyMember i32 (i32.const 11)) + (global $resolve-propertyaccess/MergedNamespace.member i32 (i32.const 2)) + (global $resolve-propertyaccess/MergedNamespace.lazyMember i32 (i32.const 22)) + (global $resolve-propertyaccess/TypedNamespace.member i32 (i32.const 3)) + (global $resolve-propertyaccess/TypedNamespace.lazyMember i32 (i32.const 33)) + (global $resolve-propertyaccess/Enum.VALUE i32 (i32.const 4)) + (global $resolve-propertyaccess/Class.staticField (mut i32) (i32.const 5)) + (global $resolve-propertyaccess/Class.lazyStaticField (mut i32) (i32.const 55)) + (global $~lib/rt/__rtti_base i32 (i32.const 2656)) + (global $~lib/memory/__data_end i32 (i32.const 2680)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35448)) + (global $~lib/memory/__heap_base i32 (i32.const 35448)) + (memory $0 1) + (data $0 (i32.const 12) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $2 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 636) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $12 (i32.const 1036) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2092) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $14 (i32.const 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2220) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2300) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\001\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\002\002\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\003\003\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\005\005\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\007\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\006\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2656) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 448 + i32.const 512 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 320 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 256 + i32.const 592 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 256 + i32.const 320 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 636 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 636 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 636 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 636 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1056 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1056 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2112 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2112 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/itoa32 + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $resolve-propertyaccess/Class.get:staticProperty (result i32) + i32.const 7 + return + ) + (func $resolve-propertyaccess/Class#set:instanceField (param $this i32) (param $instanceField i32) + local.get $this + local.get $instanceField + i32.store + ) + (func $resolve-propertyaccess/Class#get:instanceField (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $resolve-propertyaccess/Class#get:instanceProperty (param $this i32) (result i32) + i32.const 8 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 448 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1056 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2112 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $resolve-propertyaccess/Class + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-propertyaccess/Class $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:resolve-propertyaccess + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35472 + i32.const 35520 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $resolve-propertyaccess/Class#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 6 + call $resolve-propertyaccess/Class#set:instanceField + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:resolve-propertyaccess + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $resolve-propertyaccess/Namespace.member + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-propertyaccess/Namespace.lazyMember + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-propertyaccess/MergedNamespace.member + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-propertyaccess/MergedNamespace.lazyMember + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2384 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-propertyaccess/TypedNamespace.member + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-propertyaccess/TypedNamespace.lazyMember + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2448 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-propertyaccess/Enum.VALUE + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2480 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 58 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-propertyaccess/Class.staticField + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2512 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-propertyaccess/Class.lazyStaticField + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $resolve-propertyaccess/Class.get:staticProperty + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2576 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $resolve-propertyaccess/Class#constructor + local.tee $0 + i32.store offset=4 + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $resolve-propertyaccess/Class#get:instanceField + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $resolve-propertyaccess/Class#get:instanceProperty + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i32) + (local $offset|11 i32) + (local $val32 i32) + (local $decimals|13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 32 + i32.const 160 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 224 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + local.get $value + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + i64.extend_i32_u + local.get $offset|11 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.set $val32 + local.get $val32 + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $val32 + i64.extend_i32_u + local.get $decimals|13 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/resolve-propertyaccess.json b/tests/compiler/resolve-propertyaccess.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/resolve-propertyaccess.json +++ b/tests/compiler/resolve-propertyaccess.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat deleted file mode 100644 index 07f6d62705..0000000000 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ /dev/null @@ -1,500 +0,0 @@ -(module - (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_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1152) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1216) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1248) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1344) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1376) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s") - (data (i32.const 1456) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\001") - (data (i32.const 1488) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 1520) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\002\002") - (data (i32.const 1552) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003") - (data (i32.const 1584) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\003\003") - (data (i32.const 1616) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004") - (data (i32.const 1648) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\005") - (data (i32.const 1680) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\005\005") - (data (i32.const 1712) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\007") - (data (i32.const 1744) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\006") - (data (i32.const 1776) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\008") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $5 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.eqz - if - i32.const 1232 - return - end - local.get $0 - i32.const 31 - i32.shr_u - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - local.get $2 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.tee $4 - local.set $5 - loop $do-continue|0 - local.get $0 - i32.const 10 - i32.div_u - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.tee $0 - br_if $do-continue|0 - end - local.get $2 - if - local.get $4 - i32.const 45 - i32.store16 - end - local.get $4 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - local.get $0 - i32.load16_u - local.tee $3 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $3 - local.get $4 - i32.sub - return - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - return - end - i32.const 0 - ) - (func $start:resolve-propertyaccess - (local $0 i32) - i32.const 1808 - global.set $~lib/rt/stub/offset - i32.const 1 - call $~lib/util/number/itoa32 - i32.const 1360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11 - call $~lib/util/number/itoa32 - i32.const 1472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/util/number/itoa32 - i32.const 1504 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 22 - call $~lib/util/number/itoa32 - i32.const 1536 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $~lib/util/number/itoa32 - i32.const 1568 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 33 - call $~lib/util/number/itoa32 - i32.const 1600 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $~lib/util/number/itoa32 - i32.const 1632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - call $~lib/util/number/itoa32 - i32.const 1664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 55 - call $~lib/util/number/itoa32 - i32.const 1696 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7 - call $~lib/util/number/itoa32 - i32.const 1728 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 6 - i32.store - local.get $0 - i32.load - call $~lib/util/number/itoa32 - i32.const 1760 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 92 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - call $~lib/util/number/itoa32 - i32.const 1792 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:resolve-propertyaccess - ) -) diff --git a/tests/compiler/resolve-propertyaccess.release.wat b/tests/compiler/resolve-propertyaccess.release.wat new file mode 100644 index 0000000000..9ac4eb9778 --- /dev/null +++ b/tests/compiler/resolve-propertyaccess.release.wat @@ -0,0 +1,2323 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36472)) + (memory $0 1) + (data $0 (i32.const 1036) "|") + (data $0.1 (i32.const 1048) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $1 (i32.const 1164) "<") + (data $1.1 (i32.const 1176) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $2 (i32.const 1228) "\1c") + (data $2.1 (i32.const 1240) "\02\00\00\00\02\00\00\000") + (data $3 (i32.const 1260) "<") + (data $3.1 (i32.const 1272) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1324) "<") + (data $4.1 (i32.const 1336) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1452) "<") + (data $7.1 (i32.const 1464) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1516) ",") + (data $8.1 (i32.const 1528) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1596) "<") + (data $10.1 (i32.const 1608) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1660) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $12 (i32.const 2060) "\1c\04") + (data $12.1 (i32.const 2072) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $13 (i32.const 3116) "\\") + (data $13.1 (i32.const 3128) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $14 (i32.const 3212) "\1c") + (data $14.1 (i32.const 3224) "\02\00\00\00\02\00\00\001") + (data $15 (i32.const 3244) "L") + (data $15.1 (i32.const 3256) "\02\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s") + (data $16 (i32.const 3324) "\1c") + (data $16.1 (i32.const 3336) "\02\00\00\00\04\00\00\001\001") + (data $17 (i32.const 3356) "\1c") + (data $17.1 (i32.const 3368) "\02\00\00\00\02\00\00\002") + (data $18 (i32.const 3388) "\1c") + (data $18.1 (i32.const 3400) "\02\00\00\00\04\00\00\002\002") + (data $19 (i32.const 3420) "\1c") + (data $19.1 (i32.const 3432) "\02\00\00\00\02\00\00\003") + (data $20 (i32.const 3452) "\1c") + (data $20.1 (i32.const 3464) "\02\00\00\00\04\00\00\003\003") + (data $21 (i32.const 3484) "\1c") + (data $21.1 (i32.const 3496) "\02\00\00\00\02\00\00\004") + (data $22 (i32.const 3516) "\1c") + (data $22.1 (i32.const 3528) "\02\00\00\00\02\00\00\005") + (data $23 (i32.const 3548) "\1c") + (data $23.1 (i32.const 3560) "\02\00\00\00\04\00\00\005\005") + (data $24 (i32.const 3580) "\1c") + (data $24.1 (i32.const 3592) "\02\00\00\00\02\00\00\007") + (data $25 (i32.const 3612) "\1c") + (data $25.1 (i32.const 3624) "\02\00\00\00\02\00\00\006") + (data $26 (i32.const 3644) "\1c") + (data $26.1 (i32.const 3656) "\02\00\00\00\02\00\00\008") + (data $27 (i32.const 3680) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 2080 + call $~lib/rt/itcms/__visit + i32.const 3136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$126 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36472 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$126 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3680 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3684 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1616 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36480 + i32.const 0 + i32.store + i32.const 38048 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36480 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36480 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36480 + i32.const 38052 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36480 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36472 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36472 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36472 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1280 + i32.const 1616 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3704 + i32.lt_s + if + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$73 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + local.set $2 + br $__inlined_func$~lib/util/number/itoa32$73 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + select + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $3 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $3 + i32.add + local.set $5 + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $4 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $5 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + i32.const 100 + i32.ge_u + if + local.get $5 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $5 + local.get $1 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + else + local.get $5 + local.get $1 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + if + local.get $2 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-propertyaccess/Class + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-propertyaccess/Class $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + call $start:resolve-propertyaccess + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3704 + i32.lt_s + if + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$77 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$77 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $start:resolve-propertyaccess + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3704 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + memory.size + i32.const 16 + i32.shl + i32.const 36472 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace + i32.const 1 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 22 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 33 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 58 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3536 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 55 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3600 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3704 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3704 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 3632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 8 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat deleted file mode 100644 index 857ac723a0..0000000000 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ /dev/null @@ -1,1197 +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)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 144) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 208) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 228) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 640) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1680) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00") - (data (i32.const 1776) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 1808) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s\00") - (data (i32.const 1888) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\001\00") - (data (i32.const 1920) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00") - (data (i32.const 1952) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\002\002\00") - (data (i32.const 1984) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\003\00") - (data (i32.const 2016) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\003\003\00") - (data (i32.const 2048) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004\00") - (data (i32.const 2080) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\005\00") - (data (i32.const 2112) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\005\005\00") - (data (i32.const 2144) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\007\00") - (data (i32.const 2176) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\006\00") - (data (i32.const 2208) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\008\00") - (table $0 1 funcref) - (global $resolve-propertyaccess/Namespace.member i32 (i32.const 1)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $resolve-propertyaccess/Namespace.lazyMember i32 (i32.const 11)) - (global $resolve-propertyaccess/MergedNamespace.member i32 (i32.const 2)) - (global $resolve-propertyaccess/MergedNamespace.lazyMember i32 (i32.const 22)) - (global $resolve-propertyaccess/TypedNamespace.member i32 (i32.const 3)) - (global $resolve-propertyaccess/TypedNamespace.lazyMember i32 (i32.const 33)) - (global $resolve-propertyaccess/Enum.VALUE i32 (i32.const 4)) - (global $resolve-propertyaccess/Class.staticField (mut i32) (i32.const 5)) - (global $resolve-propertyaccess/Class.lazyStaticField (mut i32) (i32.const 55)) - (global $~lib/heap/__heap_base i32 (i32.const 2228)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 100000 - i32.lt_u - if - local.get $0 - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $0 - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $0 - i32.const 10000 - i32.ge_u - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $0 - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - i32.const 228 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - i32.const 228 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $1 - i32.const 100 - i32.div_u - local.set $3 - local.get $1 - i32.const 100 - i32.rem_u - local.set $10 - local.get $3 - local.set $1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 228 - local.get $10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 228 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - else - local.get $2 - i32.const 1 - i32.sub - local.set $2 - i32.const 48 - local.get $1 - i32.add - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - ) - (func $~lib/util/number/utoa_hex_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $2 - i32.const 2 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 656 - local.get $1 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i64.const 8 - i64.shr_u - local.set $1 - br $while-continue|0 - end - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - i32.const 656 - local.get $1 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - local.get $1 - local.set $2 - local.get $2 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $1 - i64.extend_i32_s - local.set $3 - local.get $3 - local.set $4 - i32.const 1 - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $4 - i64.div_u - local.set $0 - local.get $4 - local.get $4 - i64.mul - local.set $4 - local.get $5 - i32.const 1 - i32.shl - local.set $5 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $0 - i64.const 1 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $3 - i64.div_u - local.set $0 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $while-continue|1 - end - end - local.get $5 - i32.const 1 - i32.sub - ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i32) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $5 - local.get $4 - i64.const 1 - i64.sub - local.set $6 - loop $do-continue|0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 1696 - local.get $1 - local.get $6 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $5 - i64.shr_u - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|0 - end - else - loop $do-continue|1 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $4 - i64.div_u - local.set $6 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 1696 - local.get $1 - local.get $6 - local.get $4 - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $6 - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|1 - end - end - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/util/number/itoa32 (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.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 32 - i32.const 160 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 224 - return - end - local.get $0 - i32.const 31 - i32.shr_u - local.set $2 - local.get $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - i64.extend_i32_u - local.get $5 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.set $4 - local.get $4 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $3 - local.get $4 - i64.extend_i32_u - local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/stub/__retain - ) - (func $~lib/number/I32#toString (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/util/number/itoa32 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $resolve-propertyaccess/Class.get:staticProperty (result i32) - i32.const 7 - ) - (func $resolve-propertyaccess/Class#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 6 - i32.store - local.get $0 - ) - (func $resolve-propertyaccess/Class#get:instanceProperty (param $0 i32) (result i32) - i32.const 8 - ) - (func $start:resolve-propertyaccess - (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) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - global.get $resolve-propertyaccess/Namespace.member - i32.const 10 - call $~lib/number/I32#toString - local.tee $0 - i32.const 1792 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-propertyaccess/Namespace.lazyMember - i32.const 10 - call $~lib/number/I32#toString - local.tee $1 - i32.const 1904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-propertyaccess/MergedNamespace.member - i32.const 10 - call $~lib/number/I32#toString - local.tee $2 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-propertyaccess/MergedNamespace.lazyMember - i32.const 10 - call $~lib/number/I32#toString - local.tee $3 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-propertyaccess/TypedNamespace.member - i32.const 10 - call $~lib/number/I32#toString - local.tee $4 - i32.const 2000 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-propertyaccess/TypedNamespace.lazyMember - i32.const 10 - call $~lib/number/I32#toString - local.tee $5 - i32.const 2032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-propertyaccess/Enum.VALUE - i32.const 10 - call $~lib/number/I32#toString - local.tee $6 - i32.const 2064 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-propertyaccess/Class.staticField - i32.const 10 - call $~lib/number/I32#toString - local.tee $7 - i32.const 2096 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-propertyaccess/Class.lazyStaticField - i32.const 10 - call $~lib/number/I32#toString - local.tee $8 - i32.const 2128 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $resolve-propertyaccess/Class.get:staticProperty - i32.const 10 - call $~lib/number/I32#toString - local.tee $9 - i32.const 2160 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $resolve-propertyaccess/Class#constructor - local.set $10 - local.get $10 - i32.load - i32.const 10 - call $~lib/number/I32#toString - local.tee $11 - i32.const 2192 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 92 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $10 - call $resolve-propertyaccess/Class#get:instanceProperty - i32.const 10 - call $~lib/number/I32#toString - local.tee $12 - i32.const 2224 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $10 - call $~lib/rt/stub/__release - local.get $11 - call $~lib/rt/stub/__release - local.get $12 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $9 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:resolve-propertyaccess - ) -) diff --git a/tests/compiler/resolve-ternary.debug.wat b/tests/compiler/resolve-ternary.debug.wat new file mode 100644 index 0000000000..ff33c0b57a --- /dev/null +++ b/tests/compiler/resolve-ternary.debug.wat @@ -0,0 +1,4828 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $13 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $14 (func (param i32 i32 i32) (result i32))) + (type $15 (func (param i32 f64 i32) (result i32))) + (type $16 (func (param f64 i32) (result i32))) + (type $17 (func (param f64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $resolve-ternary/b (mut i32) (i32.const 1)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $resolve-ternary/f1 i32 (i32.const 3472)) + (global $resolve-ternary/f2 i32 (i32.const 3504)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 3584)) + (global $~lib/memory/__data_end i32 (i32.const 3608)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36376)) + (global $~lib/memory/__heap_base i32 (i32.const 36376)) + (memory $0 1) + (data $0 (i32.const 12) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $2 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 636) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $12 (i32.const 1036) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2092) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $14 (i32.const 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00t\00e\00r\00n\00a\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data $17 (i32.const 2316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data $18 (i32.const 2348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 2448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2504) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2112 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2112 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/itoa32 + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) + (local $one_exp i32) + (local $one_frc i64) + (local $mask i64) + (local $wp_w_frc i64) + (local $p1 i32) + (local $p2 i64) + (local $kappa i32) + (local $len i32) + (local $d i32) + (local $16 i32) + (local $17 i32) + (local $tmp i64) + (local $buffer|19 i32) + (local $len|20 i32) + (local $delta|21 i64) + (local $rest i64) + (local $ten_kappa i64) + (local $wp_w i64) + (local $lastp i32) + (local $digit i32) + (local $d|27 i64) + (local $28 i32) + (local $buffer|29 i32) + (local $len|30 i32) + (local $delta|31 i64) + (local $rest|32 i64) + (local $ten_kappa|33 i64) + (local $wp_w|34 i64) + (local $lastp|35 i32) + (local $digit|36 i32) + i32.const 0 + local.get $mp_exp + i32.sub + local.set $one_exp + i64.const 1 + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $one_frc + local.get $one_frc + i64.const 1 + i64.sub + local.set $mask + local.get $mp_frc + local.get $w_frc + i64.sub + local.set $wp_w_frc + local.get $mp_frc + local.get $one_exp + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $p1 + local.get $mp_frc + local.get $mask + i64.and + local.set $p2 + local.get $p1 + call $~lib/util/number/decimalCount32 + local.set $kappa + local.get $sign + local.set $len + loop $while-continue|0 + local.get $kappa + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $kappa + local.set $16 + local.get $16 + i32.const 10 + i32.eq + br_if $case0|1 + local.get $16 + i32.const 9 + i32.eq + br_if $case1|1 + local.get $16 + i32.const 8 + i32.eq + br_if $case2|1 + local.get $16 + i32.const 7 + i32.eq + br_if $case3|1 + local.get $16 + i32.const 6 + i32.eq + br_if $case4|1 + local.get $16 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $16 + i32.const 4 + i32.eq + br_if $case6|1 + local.get $16 + i32.const 3 + i32.eq + br_if $case7|1 + local.get $16 + i32.const 2 + i32.eq + br_if $case8|1 + local.get $16 + i32.const 1 + i32.eq + br_if $case9|1 + br $case10|1 + end + local.get $p1 + i32.const 1000000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100 + i32.div_u + local.set $d + local.get $p1 + i32.const 100 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10 + i32.div_u + local.set $d + local.get $p1 + i32.const 10 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + local.set $d + i32.const 0 + local.set $p1 + br $break|1 + end + i32.const 0 + local.set $d + br $break|1 + end + local.get $d + local.get $len + i32.or + if + local.get $buffer + local.get $len + local.tee $17 + i32.const 1 + i32.add + local.set $len + local.get $17 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p1 + i64.extend_i32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.get $p2 + i64.add + local.set $tmp + local.get $tmp + local.get $delta + i64.le_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $buffer + local.set $buffer|19 + local.get $len + local.set $len|20 + local.get $delta + local.set $delta|21 + local.get $tmp + local.set $rest + i32.const 3376 + local.get $kappa + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $ten_kappa + local.get $wp_w_frc + local.set $wp_w + local.get $buffer|19 + local.get $len|20 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp + local.get $lastp + i32.load16_u + local.set $digit + loop $while-continue|3 + local.get $rest + local.get $wp_w + i64.lt_u + if (result i32) + local.get $delta|21 + local.get $rest + i64.sub + local.get $ten_kappa + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w + local.get $rest + i64.sub + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit + i32.const 1 + i32.sub + local.set $digit + local.get $rest + local.get $ten_kappa + i64.add + local.set $rest + br $while-continue|3 + end + end + local.get $lastp + local.get $digit + i32.store16 + local.get $len + return + end + br $while-continue|0 + end + end + loop $while-continue|4 + i32.const 1 + if + local.get $p2 + i64.const 10 + i64.mul + local.set $p2 + local.get $delta + i64.const 10 + i64.mul + local.set $delta + local.get $p2 + local.get $one_exp + i64.extend_i32_s + i64.shr_u + local.set $d|27 + local.get $d|27 + local.get $len + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $buffer + local.get $len + local.tee $28 + i32.const 1 + i32.add + local.set $len + local.get $28 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d|27 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $p2 + local.get $mask + i64.and + local.set $p2 + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p2 + local.get $delta + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $wp_w_frc + i32.const 3376 + i32.const 0 + local.get $kappa + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $wp_w_frc + local.get $buffer + local.set $buffer|29 + local.get $len + local.set $len|30 + local.get $delta + local.set $delta|31 + local.get $p2 + local.set $rest|32 + local.get $one_frc + local.set $ten_kappa|33 + local.get $wp_w_frc + local.set $wp_w|34 + local.get $buffer|29 + local.get $len|30 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp|35 + local.get $lastp|35 + i32.load16_u + local.set $digit|36 + loop $while-continue|6 + local.get $rest|32 + local.get $wp_w|34 + i64.lt_u + if (result i32) + local.get $delta|31 + local.get $rest|32 + i64.sub + local.get $ten_kappa|33 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w|34 + local.get $rest|32 + i64.sub + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit|36 + i32.const 1 + i32.sub + local.set $digit|36 + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.set $rest|32 + br $while-continue|6 + end + end + local.get $lastp|35 + local.get $digit|36 + i32.store16 + local.get $len + return + end + br $while-continue|4 + end + end + unreachable + ) + (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) + (local $kk i32) + (local $i i32) + (local $ptr i32) + (local $offset i32) + (local $i|7 i32) + (local $buffer|8 i32) + (local $k|9 i32) + (local $sign i32) + (local $decimals i32) + (local $buffer|12 i32) + (local $num i32) + (local $offset|14 i32) + (local $len i32) + (local $buffer|16 i32) + (local $k|17 i32) + (local $sign|18 i32) + (local $decimals|19 i32) + (local $buffer|20 i32) + (local $num|21 i32) + (local $offset|22 i32) + local.get $k + i32.eqz + if + local.get $buffer + local.get $length + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $length + i32.const 2 + i32.add + return + end + local.get $length + local.get $k + i32.add + local.set $kk + local.get $length + local.get $kk + i32.le_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $length + local.set $i + loop $for-loop|0 + local.get $i + local.get $kk + i32.lt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $kk + i32.const 2 + i32.add + return + else + local.get $kk + i32.const 0 + i32.gt_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $ptr + i32.const 2 + i32.add + local.get $ptr + i32.const 0 + local.get $k + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + local.get $length + i32.const 1 + i32.add + return + else + i32.const -6 + local.get $kk + i32.lt_s + if (result i32) + local.get $kk + i32.const 0 + i32.le_s + else + i32.const 0 + end + if + i32.const 2 + local.get $kk + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $buffer + local.get $length + i32.const 1 + i32.shl + memory.copy + local.get $buffer + i32.const 48 + i32.const 46 + i32.const 16 + i32.shl + i32.or + i32.store + i32.const 2 + local.set $i|7 + loop $for-loop|1 + local.get $i|7 + local.get $offset + i32.lt_s + if + local.get $buffer + local.get $i|7 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i|7 + i32.const 1 + i32.add + local.set $i|7 + br $for-loop|1 + end + end + local.get $length + local.get $offset + i32.add + return + else + local.get $length + i32.const 1 + i32.eq + if + local.get $buffer + i32.const 101 + i32.store16 offset=2 + block $~lib/util/number/genExponent|inlined.0 (result i32) + local.get $buffer + i32.const 4 + i32.add + local.set $buffer|8 + local.get $kk + i32.const 1 + i32.sub + local.set $k|9 + local.get $k|9 + i32.const 0 + i32.lt_s + local.set $sign + local.get $sign + if + i32.const 0 + local.get $k|9 + i32.sub + local.set $k|9 + end + local.get $k|9 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals + local.get $buffer|8 + local.set $buffer|12 + local.get $k|9 + local.set $num + local.get $decimals + local.set $offset|14 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|12 + local.get $num + local.get $offset|14 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|8 + i32.const 45 + i32.const 43 + local.get $sign + select + i32.store16 + local.get $decimals + br $~lib/util/number/genExponent|inlined.0 + end + local.set $length + local.get $length + i32.const 2 + i32.add + return + else + local.get $length + i32.const 1 + i32.shl + local.set $len + local.get $buffer + i32.const 4 + i32.add + local.get $buffer + i32.const 2 + i32.add + local.get $len + i32.const 2 + i32.sub + memory.copy + local.get $buffer + i32.const 46 + i32.store16 offset=2 + local.get $buffer + local.get $len + i32.add + i32.const 101 + i32.store16 offset=2 + local.get $length + block $~lib/util/number/genExponent|inlined.1 (result i32) + local.get $buffer + local.get $len + i32.add + i32.const 4 + i32.add + local.set $buffer|16 + local.get $kk + i32.const 1 + i32.sub + local.set $k|17 + local.get $k|17 + i32.const 0 + i32.lt_s + local.set $sign|18 + local.get $sign|18 + if + i32.const 0 + local.get $k|17 + i32.sub + local.set $k|17 + end + local.get $k|17 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals|19 + local.get $buffer|16 + local.set $buffer|20 + local.get $k|17 + local.set $num|21 + local.get $decimals|19 + local.set $offset|22 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|20 + local.get $num|21 + local.get $offset|22 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|16 + i32.const 45 + i32.const 43 + local.get $sign|18 + select + i32.store16 + local.get $decimals|19 + br $~lib/util/number/genExponent|inlined.1 + end + i32.add + local.set $length + local.get $length + i32.const 2 + i32.add + return + end + unreachable + end + unreachable + end + unreachable + end + unreachable + ) + (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) + (local $sign i32) + (local $value|4 f64) + (local $buffer|5 i32) + (local $sign|6 i32) + (local $isSingle|7 i32) + (local $frc i64) + (local $exp i32) + (local $uv i32) + (local $sid i32) + (local $uv|12 i64) + (local $sid|13 i64) + (local $f i64) + (local $e i32) + (local $isSingle|16 i32) + (local $frc|17 i64) + (local $exp|18 i32) + (local $off i32) + (local $m i32) + (local $minExp i32) + (local $dk f64) + (local $k i32) + (local $index i32) + (local $off|25 i32) + (local $frc_pow i64) + (local $exp_pow i32) + (local $u i64) + (local $v i64) + (local $u0 i64) + (local $v0 i64) + (local $u1 i64) + (local $v1 i64) + (local $l i64) + (local $t i64) + (local $w i64) + (local $w_frc i64) + (local $e1 i32) + (local $e2 i32) + (local $w_exp i32) + (local $u|41 i64) + (local $v|42 i64) + (local $u0|43 i64) + (local $v0|44 i64) + (local $u1|45 i64) + (local $v1|46 i64) + (local $l|47 i64) + (local $t|48 i64) + (local $w|49 i64) + (local $wp_frc i64) + (local $e1|51 i32) + (local $e2|52 i32) + (local $wp_exp i32) + (local $u|54 i64) + (local $v|55 i64) + (local $u0|56 i64) + (local $v0|57 i64) + (local $u1|58 i64) + (local $v1|59 i64) + (local $l|60 i64) + (local $t|61 i64) + (local $w|62 i64) + (local $wm_frc i64) + (local $delta i64) + (local $len i32) + local.get $value + f64.const 0 + f64.lt + local.set $sign + local.get $sign + if + local.get $value + f64.neg + local.set $value + local.get $buffer + i32.const 45 + i32.store16 + end + block $~lib/util/number/grisu2|inlined.0 (result i32) + local.get $value + local.set $value|4 + local.get $buffer + local.set $buffer|5 + local.get $sign + local.set $sign|6 + local.get $isSingle + local.set $isSingle|7 + local.get $isSingle|7 + if + local.get $value|4 + f32.demote_f64 + i32.reinterpret_f32 + local.set $uv + local.get $uv + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.set $exp + local.get $uv + i32.const 8388607 + i32.and + local.set $sid + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + local.get $sid + i64.extend_i32_u + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 127 + i32.const 23 + i32.add + i32.sub + local.set $exp + else + local.get $value|4 + i64.reinterpret_f64 + local.set $uv|12 + local.get $uv|12 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $exp + local.get $uv|12 + i64.const 4503599627370495 + i64.and + local.set $sid|13 + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $sid|13 + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 1023 + i32.const 52 + i32.add + i32.sub + local.set $exp + end + local.get $frc + local.set $f + local.get $exp + local.set $e + local.get $isSingle|7 + local.set $isSingle|16 + local.get $f + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.set $frc|17 + local.get $e + i32.const 1 + i32.sub + local.set $exp|18 + local.get $frc|17 + i64.clz + i32.wrap_i64 + local.set $off + local.get $frc|17 + local.get $off + i64.extend_i32_s + i64.shl + local.set $frc|17 + local.get $exp|18 + local.get $off + i32.sub + local.set $exp|18 + i32.const 1 + local.get $f + local.get $isSingle|16 + if (result i64) + i64.const 8388608 + else + i64.const 4503599627370496 + end + i64.eq + i32.add + local.set $m + local.get $frc|17 + global.set $~lib/util/number/_frc_plus + local.get $f + local.get $m + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $e + local.get $m + i32.sub + local.get $exp|18 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $exp|18 + global.set $~lib/util/number/_exp + global.get $~lib/util/number/_exp + local.set $minExp + i32.const -61 + local.get $minExp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.set $dk + local.get $dk + i32.trunc_sat_f64_s + local.set $k + local.get $k + local.get $k + f64.convert_i32_s + local.get $dk + f64.ne + i32.add + local.set $k + local.get $k + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.set $index + i32.const 348 + local.get $index + i32.const 3 + i32.shl + i32.sub + global.set $~lib/util/number/_K + i32.const 2504 + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 3200 + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $frc + i64.clz + i32.wrap_i64 + local.set $off|25 + local.get $frc + local.get $off|25 + i64.extend_i32_s + i64.shl + local.set $frc + local.get $exp + local.get $off|25 + i32.sub + local.set $exp + global.get $~lib/util/number/_frc_pow + local.set $frc_pow + global.get $~lib/util/number/_exp_pow + local.set $exp_pow + block $~lib/util/number/umul64f|inlined.0 (result i64) + local.get $frc + local.set $u + local.get $frc_pow + local.set $v + local.get $u + i64.const 4294967295 + i64.and + local.set $u0 + local.get $v + i64.const 4294967295 + i64.and + local.set $v0 + local.get $u + i64.const 32 + i64.shr_u + local.set $u1 + local.get $v + i64.const 32 + i64.shr_u + local.set $v1 + local.get $u0 + local.get $v0 + i64.mul + local.set $l + local.get $u1 + local.get $v0 + i64.mul + local.get $l + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $u0 + local.get $v1 + i64.mul + local.get $t + i64.const 4294967295 + i64.and + i64.add + local.set $w + local.get $w + i64.const 2147483647 + i64.add + local.set $w + local.get $t + i64.const 32 + i64.shr_u + local.set $t + local.get $w + i64.const 32 + i64.shr_u + local.set $w + local.get $u1 + local.get $v1 + i64.mul + local.get $t + i64.add + local.get $w + i64.add + br $~lib/util/number/umul64f|inlined.0 + end + local.set $w_frc + block $~lib/util/number/umul64e|inlined.0 (result i32) + local.get $exp + local.set $e1 + local.get $exp_pow + local.set $e2 + local.get $e1 + local.get $e2 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.0 + end + local.set $w_exp + block $~lib/util/number/umul64f|inlined.1 (result i64) + global.get $~lib/util/number/_frc_plus + local.set $u|41 + local.get $frc_pow + local.set $v|42 + local.get $u|41 + i64.const 4294967295 + i64.and + local.set $u0|43 + local.get $v|42 + i64.const 4294967295 + i64.and + local.set $v0|44 + local.get $u|41 + i64.const 32 + i64.shr_u + local.set $u1|45 + local.get $v|42 + i64.const 32 + i64.shr_u + local.set $v1|46 + local.get $u0|43 + local.get $v0|44 + i64.mul + local.set $l|47 + local.get $u1|45 + local.get $v0|44 + i64.mul + local.get $l|47 + i64.const 32 + i64.shr_u + i64.add + local.set $t|48 + local.get $u0|43 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.const 4294967295 + i64.and + i64.add + local.set $w|49 + local.get $w|49 + i64.const 2147483647 + i64.add + local.set $w|49 + local.get $t|48 + i64.const 32 + i64.shr_u + local.set $t|48 + local.get $w|49 + i64.const 32 + i64.shr_u + local.set $w|49 + local.get $u1|45 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.add + local.get $w|49 + i64.add + br $~lib/util/number/umul64f|inlined.1 + end + i64.const 1 + i64.sub + local.set $wp_frc + block $~lib/util/number/umul64e|inlined.1 (result i32) + global.get $~lib/util/number/_exp + local.set $e1|51 + local.get $exp_pow + local.set $e2|52 + local.get $e1|51 + local.get $e2|52 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.1 + end + local.set $wp_exp + block $~lib/util/number/umul64f|inlined.2 (result i64) + global.get $~lib/util/number/_frc_minus + local.set $u|54 + local.get $frc_pow + local.set $v|55 + local.get $u|54 + i64.const 4294967295 + i64.and + local.set $u0|56 + local.get $v|55 + i64.const 4294967295 + i64.and + local.set $v0|57 + local.get $u|54 + i64.const 32 + i64.shr_u + local.set $u1|58 + local.get $v|55 + i64.const 32 + i64.shr_u + local.set $v1|59 + local.get $u0|56 + local.get $v0|57 + i64.mul + local.set $l|60 + local.get $u1|58 + local.get $v0|57 + i64.mul + local.get $l|60 + i64.const 32 + i64.shr_u + i64.add + local.set $t|61 + local.get $u0|56 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.const 4294967295 + i64.and + i64.add + local.set $w|62 + local.get $w|62 + i64.const 2147483647 + i64.add + local.set $w|62 + local.get $t|61 + i64.const 32 + i64.shr_u + local.set $t|61 + local.get $w|62 + i64.const 32 + i64.shr_u + local.set $w|62 + local.get $u1|58 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.add + local.get $w|62 + i64.add + br $~lib/util/number/umul64f|inlined.2 + end + i64.const 1 + i64.add + local.set $wm_frc + local.get $wp_frc + local.get $wm_frc + i64.sub + local.set $delta + local.get $buffer|5 + local.get $w_frc + local.get $w_exp + local.get $wp_frc + local.get $wp_exp + local.get $delta + local.get $sign|6 + call $~lib/util/number/genDigits + br $~lib/util/number/grisu2|inlined.0 + end + local.set $len + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.get $len + local.get $sign + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.set $len + local.get $len + local.get $sign + i32.add + return + ) + (func $~lib/number/F64#toString (param $this f64) (param $radix i32) (result i32) + local.get $this + call $~lib/util/number/dtoa + return + ) + (func $start:resolve-ternary~anonymous|0 (param $x i32) (result i32) + local.get $x + i32.const 1 + i32.add + ) + (func $start:resolve-ternary~anonymous|1 (param $x i32) (result i32) + local.get $x + i32.const 2 + i32.add + ) + (func $resolve-ternary/g1 (param $x i32) (result i32) + local.get $x + i32.const 3 + i32.add + return + ) + (func $resolve-ternary/g2 (param $x i32) (result i32) + local.get $x + i32.const 4 + i32.add + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 448 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1056 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2112 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + unreachable + ) + (func $~start + call $start:resolve-ternary + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 36400 + i32.const 36448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:resolve-ternary + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $resolve-ternary/b + if (result i32) + i32.const 1 + else + i32.const 2 + end + i32.const 10 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-ternary/b + if (result f64) + f64.const 1 + else + f64.const 2 + end + i32.const 0 + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + global.set $~argumentsLength + global.get $resolve-ternary/b + if (result i32) + global.get $resolve-ternary/f1 + else + global.get $resolve-ternary/f2 + end + i32.load + call_indirect (type $0) + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + global.set $~argumentsLength + global.get $resolve-ternary/b + if (result i32) + i32.const 3536 + else + i32.const 3568 + end + i32.load + call_indirect (type $0) + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + global.set $~argumentsLength + global.get $resolve-ternary/b + if (result i32) + global.get $resolve-ternary/f2 + else + i32.const 3568 + end + i32.load + call_indirect (type $0) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i32) + (local $offset|11 i32) + (local $val32 i32) + (local $decimals|13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 32 + i32.const 160 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 224 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + local.get $value + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + i64.extend_i32_u + local.get $offset|11 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.set $val32 + local.get $val32 + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $val32 + i64.extend_i32_u + local.get $decimals|13 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/util/number/dtoa (param $value f64) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + local.get $value + local.set $value|1 + i32.const 0 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 2304 + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 2336 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 2368 + i32.const 2416 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 2448 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 2448 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) +) diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat deleted file mode 100644 index 86bb1d91ff..0000000000 --- a/tests/compiler/resolve-ternary.optimized.wat +++ /dev/null @@ -1,2630 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (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 $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i64_i32_i64_i32_i64_=>_i32 (func (param i32 i64 i32 i64 i32 i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1312) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1408) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1504) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1536) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00t\00e\00r\00n\00a\00r\00y\00.\00t\00s") - (data (i32.const 1600) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1632) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1664) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1712) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 1744) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $do-continue|0 - local.get $1 - i32.const 10 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 - local.get $1 - br_if $do-continue|0 - end - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - if - local.get $3 - i32.load16_u - local.tee $0 - local.get $1 - i32.load16_u - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - local.get $6 - i32.sub - return - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - local.get $3 - local.get $1 - i64.sub - local.set $9 - local.get $3 - i64.const 1 - i32.const 0 - local.get $4 - i32.sub - local.tee $10 - i64.extend_i32_s - i64.shl - local.tee $11 - i64.const 1 - i64.sub - local.tee $12 - i64.and - local.set $7 - local.get $3 - local.get $10 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $8 - loop $while-continue|0 - local.get $8 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $8 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $2 - i32.const 1000000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100 - i32.div_u - local.set $4 - local.get $2 - i32.const 100 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10 - i32.div_u - local.set $4 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - local.set $4 - i32.const 0 - local.set $2 - br $break|1 - end - i32.const 0 - local.set $4 - end - local.get $4 - local.get $6 - i32.or - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $7 - local.get $2 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - i64.shl - i64.add - local.tee $1 - local.get $5 - i64.le_u - if - local.get $8 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 2 - i32.shl - i32.const 2616 - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|3 - i32.const 1 - local.get $9 - local.get $1 - i64.sub - local.get $1 - local.get $3 - i64.add - local.tee $7 - local.get $9 - i64.sub - i64.gt_u - local.get $7 - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $3 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - return - end - br $while-continue|0 - end - end - local.get $10 - i64.extend_i32_s - local.set $1 - loop $while-continue|4 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $7 - i64.const 10 - i64.mul - local.tee $3 - local.get $1 - i64.shr_u - local.tee $7 - local.get $6 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $3 - local.get $12 - i64.and - local.tee $7 - local.get $5 - i64.ge_u - br_if $while-continue|4 - end - local.get $8 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - local.get $9 - i32.const 0 - local.get $8 - i32.sub - i32.const 2 - i32.shl - i32.const 2616 - i32.add - i64.load32_u - i64.mul - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|6 - i32.const 1 - local.get $3 - local.get $1 - i64.sub - local.get $1 - local.get $11 - i64.add - local.tee $7 - local.get $3 - i64.sub - i64.gt_u - local.get $7 - local.get $3 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $11 - i64.ge_u - i32.const 0 - local.get $1 - local.get $3 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $11 - i64.add - local.set $1 - br $while-continue|6 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 - i32.const -6 - local.get $3 - i32.lt_s - select - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.add - end - end - end - end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 f64) - (local $5 i64) - i32.const -4 - global.set $~lib/util/number/_K - i32.const 2096 - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 2528 - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $2 - i64.const 32 - i64.shr_u - local.set $3 - local.get $2 - i64.const 4294967295 - i64.and - local.tee $2 - i64.const 31 - i64.shl - local.get $2 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.set $1 - local.get $0 - local.get $0 - local.get $3 - i64.const 31 - i64.shl - local.get $2 - i64.const 31 - i64.shl - i64.const 0 - i64.add - local.tee $5 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - i64.const 4294967295 - i64.and - i64.const 0 - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $0 - i32.const 1 - i32.add - local.get $3 - i64.const 31 - i64.shl - local.get $1 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - i64.const 4294967295 - i64.and - local.get $3 - i64.const 10 - i64.shl - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $1 - local.get $0 - i32.const 1 - i32.add - local.get $1 - local.get $3 - i64.const 2147483647 - i64.mul - local.get $2 - i64.const 2147483647 - i64.mul - local.get $2 - i64.const 4294966784 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $1 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 4294966784 - i64.mul - local.get $1 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - call $~lib/util/number/genDigits - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - i32.const 0 - local.get $2 - i32.lt_s - select - local.tee $3 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - local.tee $1 - local.get $3 - local.get $1 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - local.get $1 - local.get $3 - local.get $1 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $1 - i32.sub - local.tee $3 - i32.eqz - if - i32.const 2672 - return - end - i32.const 0 - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.eq - local.get $1 - select - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $3 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $start:resolve-ternary~anonymous|0 (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.add - ) - (func $start:resolve-ternary~anonymous|1 (param $0 i32) (result i32) - local.get $0 - i32.const 2 - i32.add - ) - (func $resolve-ternary/g1 (param $0 i32) (result i32) - local.get $0 - i32.const 3 - i32.add - ) - (func $resolve-ternary/g2 (param $0 i32) (result i32) - local.get $0 - i32.const 4 - i32.add - ) - (func $start:resolve-ternary - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - call $~lib/util/number/decimalCount32 - local.tee $0 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 - i32.const 1 - local.get $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $__inlined_func$~lib/util/number/dtoa - i32.const 56 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 - call $~lib/util/number/dtoa_core - local.tee $0 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - br $__inlined_func$~lib/util/number/dtoa - end - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - call $~lib/rt/tlsf/maybeInitialize - local.get $1 - i32.const 16 - i32.sub - local.set $2 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - select - if (result i32) - local.get $2 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/tlsf/freeBlock - end - local.get $0 - i32.const 2688 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2720 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2784 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2752 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 2720 - call $~lib/rt/pure/__release - i32.const 2784 - call $~lib/rt/pure/__release - i32.const 2752 - call $~lib/rt/pure/__release - ) - (func $~start - call $start:resolve-ternary - ) - (func $~lib/rt/pure/__collect - nop - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$5 - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$5 $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=20 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 2868 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) -) diff --git a/tests/compiler/resolve-ternary.release.wat b/tests/compiler/resolve-ternary.release.wat new file mode 100644 index 0000000000..91b5b3d064 --- /dev/null +++ b/tests/compiler/resolve-ternary.release.wat @@ -0,0 +1,2935 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i32))) + (type $9 (func (param i64 i64 i32 i64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37400)) + (memory $0 1) + (data $0 (i32.const 1036) "|") + (data $0.1 (i32.const 1048) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $1 (i32.const 1164) "<") + (data $1.1 (i32.const 1176) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $2 (i32.const 1228) "\1c") + (data $2.1 (i32.const 1240) "\02\00\00\00\02\00\00\000") + (data $3 (i32.const 1260) "<") + (data $3.1 (i32.const 1272) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1324) "<") + (data $4.1 (i32.const 1336) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1452) "<") + (data $7.1 (i32.const 1464) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1516) ",") + (data $8.1 (i32.const 1528) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1596) "<") + (data $10.1 (i32.const 1608) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1660) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $12 (i32.const 2060) "\1c\04") + (data $12.1 (i32.const 2072) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $13 (i32.const 3116) "\\") + (data $13.1 (i32.const 3128) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $14 (i32.const 3212) "\1c") + (data $14.1 (i32.const 3224) "\02\00\00\00\02\00\00\001") + (data $15 (i32.const 3244) "<") + (data $15.1 (i32.const 3256) "\02\00\00\00$\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00t\00e\00r\00n\00a\00r\00y\00.\00t\00s") + (data $16 (i32.const 3308) "\1c") + (data $16.1 (i32.const 3320) "\02\00\00\00\06\00\00\000\00.\000") + (data $17 (i32.const 3340) "\1c") + (data $17.1 (i32.const 3352) "\02\00\00\00\06\00\00\00N\00a\00N") + (data $18 (i32.const 3372) ",") + (data $18.1 (i32.const 3384) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $19 (i32.const 3420) ",") + (data $19.1 (i32.const 3432) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data $21 (i32.const 3528) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4632 + i32.lt_s + if + i32.const 37424 + i32.const 37472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i64) + (local $2 f64) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 4632 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 37400 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4632 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 1 + i32.const 1 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4632 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const -4 + global.set $~lib/util/number/_K + i32.const 3880 + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 4312 + i32.load16_s + global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $3 + i64.const 4294967295 + i64.and + local.tee $4 + i64.const 31 + i64.shl + local.get $4 + i64.const 10 + i64.shl + i64.const 32 + i64.shr_u + i64.add + local.set $1 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $3 + i64.const 31 + i64.shl + local.get $4 + i64.const 31 + i64.shl + local.tee $5 + i64.const 32 + i64.shr_u + i64.add + local.get $5 + i64.const 4294967295 + i64.and + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $3 + i64.const 31 + i64.shl + local.get $1 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + i64.const 4294967295 + i64.and + local.get $3 + i64.const 10 + i64.shl + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.tee $1 + global.get $~lib/util/number/_exp_pow + i32.const 1 + i32.add + local.get $1 + local.get $3 + i64.const 2147483647 + i64.mul + local.get $4 + i64.const 2147483647 + i64.mul + local.get $4 + i64.const 4294966784 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $1 + i64.const 32 + i64.shr_u + i64.add + local.get $3 + i64.const 4294966784 + i64.mul + local.get $1 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + call $~lib/util/number/genDigits + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 3472 + local.get $6 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4496 + i32.load + call_indirect (type $0) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4560 + i32.load + call_indirect (type $0) + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4528 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 37424 + i32.const 37472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4632 + i32.lt_s + if + i32.const 37424 + i32.const 37472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$84 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$84 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) +) diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat deleted file mode 100644 index 6ad2258385..0000000000 --- a/tests/compiler/resolve-ternary.untouched.wat +++ /dev/null @@ -1,5420 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 304) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 368) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 388) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 800) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1840) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00") - (data (i32.const 1936) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 1968) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00t\00e\00r\00n\00a\00r\00y\00.\00t\00s\00") - (data (i32.const 2032) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 2064) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 2096) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 2144) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 2176) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8_i32) - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 1984 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - global.set $~argumentsLength - global.get $resolve-ternary/b - if (result i32) - i32.const 3216 - call $~lib/rt/pure/__retain - local.tee $4 - else - i32.const 3248 - call $~lib/rt/pure/__retain - local.tee $5 - end - i32.load - call_indirect (type $i32_=>_i32) - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 1984 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - global.set $~argumentsLength - global.get $resolve-ternary/b - if (result i32) - global.get $resolve-ternary/f2 - call $~lib/rt/pure/__retain - local.tee $6 - else - i32.const 3248 - call $~lib/rt/pure/__retain - local.tee $7 - end - i32.load - call_indirect (type $i32_=>_i32) - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 1984 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~start - call $start:resolve-ternary - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/function/Function<%28i32%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%29=>i32>#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/resolve-unary.debug.wat b/tests/compiler/resolve-unary.debug.wat new file mode 100644 index 0000000000..46d35d9426 --- /dev/null +++ b/tests/compiler/resolve-unary.debug.wat @@ -0,0 +1,3986 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i64 i32))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i64 i32 i32))) + (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $resolve-unary/a (mut i32) (i32.const 1)) + (global $resolve-unary/b (mut i32) (i32.const 1)) + (global $resolve-unary/foo (mut i32) (i32.const 0)) + (global $resolve-unary/bar (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 2816)) + (global $~lib/memory/__data_end i32 (i32.const 2848)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35616)) + (global $~lib/memory/__heap_base i32 (i32.const 35616)) + (memory $0 1) + (data $0 (i32.const 12) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $2 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 636) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $12 (i32.const 1036) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 2092) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $14 (i32.const 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00-\001\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 2220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 2284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 2316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") + (data $19 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") + (data $20 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00-\002\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00~\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00+\00+\00i\00\00\00\00\00\00\00") + (data $26 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00-\00-\00i\00\00\00\00\00\00\00") + (data $27 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\00+\00+\00\00\00\00\00\00\00") + (data $28 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\00-\00-\00\00\00\00\00\00\00") + (data $29 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r\00") + (data $30 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2764) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2816) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $start:resolve-unary~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 448 + i32.const 512 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 320 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 320 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 256 + i32.const 592 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 256 + i32.const 320 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 636 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 636 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 636 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 636 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1056 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1056 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2112 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2112 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/itoa32 + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/number/Bool#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + if (result i32) + i32.const 2368 + else + i32.const 2400 + end + return + ) + (func $resolve-unary/Foo#plus (param $this i32) (result i32) + i32.const 2464 + return + ) + (func $~lib/string/String#toString (param $this i32) (result i32) + local.get $this + return + ) + (func $resolve-unary/Foo#minus (param $this i32) (result i32) + i32.const 2496 + return + ) + (func $resolve-unary/Foo#prefix_inc (param $this i32) (result i32) + local.get $this + return + ) + (func $resolve-unary/Foo#self (param $this i32) (result i32) + local.get $this + return + ) + (func $resolve-unary/Foo#prefix_dec (param $this i32) (result i32) + local.get $this + return + ) + (func $resolve-unary/Foo#not (param $this i32) (result i32) + i32.const 2528 + return + ) + (func $resolve-unary/Foo#bitwise_not (param $this i32) (result i32) + i32.const 2560 + return + ) + (func $resolve-unary/Foo#postfix_inc (param $this i32) (result i32) + local.get $this + return + ) + (func $resolve-unary/Foo#postfix_dec (param $this i32) (result i32) + local.get $this + return + ) + (func $resolve-unary/Bar.prefix_inc (param $a i32) (result i32) + i32.const 2592 + return + ) + (func $resolve-unary/Bar.prefix_dec (param $a i32) (result i32) + i32.const 2624 + return + ) + (func $resolve-unary/Bar.postfix_inc (param $a i32) (result i32) + i32.const 2656 + return + ) + (func $resolve-unary/Bar.postfix_dec (param $a i32) (result i32) + i32.const 2688 + return + ) + (func $start:resolve-unary~anonymous|0 + ) + (func $resolve-unary/generic<~lib/string/String> (param $v i32) + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $resolve-unary/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-unary/bar + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 448 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1056 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2112 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28%29=>void> + block $resolve-unary/Bar + block $resolve-unary/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $~lib/function/Function<%28%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + unreachable + ) + (func $~start + call $start:resolve-unary + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35648 + i32.const 35696 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $resolve-unary/Foo#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $resolve-unary/Bar#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:resolve-unary + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const -1 + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2304 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/a + i32.const 1 + i32.add + global.set $resolve-unary/a + global.get $resolve-unary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/a + i32.const 1 + i32.sub + global.set $resolve-unary/a + global.get $resolve-unary/a + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2304 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/a + i32.eqz + i32.const 0 + call $~lib/number/Bool#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/a + i32.eqz + i32.eqz + i32.const 0 + call $~lib/number/Bool#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/a + i32.const -1 + i32.xor + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/b + local.tee $0 + i32.const 1 + i32.add + global.set $resolve-unary/b + local.get $0 + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2304 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/b + local.tee $1 + i32.const 1 + i32.sub + global.set $resolve-unary/b + local.get $1 + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $resolve-unary/Foo#constructor + global.set $resolve-unary/foo + global.get $resolve-unary/foo + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $resolve-unary/Foo#plus + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 91 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/foo + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $resolve-unary/Foo#minus + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/foo + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $resolve-unary/Foo#prefix_inc + global.set $resolve-unary/foo + global.get $resolve-unary/foo + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $resolve-unary/Foo#self + global.get $resolve-unary/foo + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/foo + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $resolve-unary/Foo#prefix_dec + global.set $resolve-unary/foo + global.get $resolve-unary/foo + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $resolve-unary/Foo#self + global.get $resolve-unary/foo + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/foo + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $resolve-unary/Foo#not + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/foo + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $resolve-unary/Foo#bitwise_not + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $resolve-unary/Foo#postfix_inc + global.set $resolve-unary/foo + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $resolve-unary/Foo#self + global.get $resolve-unary/foo + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $resolve-unary/Foo#postfix_dec + global.set $resolve-unary/foo + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $resolve-unary/Foo#self + global.get $resolve-unary/foo + i32.eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $resolve-unary/Bar#constructor + global.set $resolve-unary/bar + global.get $resolve-unary/bar + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $resolve-unary/Bar.prefix_inc + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/bar + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $resolve-unary/Bar.prefix_dec + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/bar + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $resolve-unary/Bar.postfix_inc + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/bar + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $resolve-unary/Bar.postfix_dec + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 2240 + i32.const 166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + i32.const 2720 + call $~lib/string/String#get:length + drop + i32.const 2752 + drop + i32.const 2784 + call $resolve-unary/generic<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i32) + (local $offset|11 i32) + (local $val32 i32) + (local $decimals|13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 32 + i32.const 160 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 224 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + local.get $value + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + i64.extend_i32_u + local.get $offset|11 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.set $val32 + local.get $val32 + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $val32 + i64.extend_i32_u + local.get $decimals|13 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/resolve-unary.json b/tests/compiler/resolve-unary.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/resolve-unary.json +++ b/tests/compiler/resolve-unary.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat deleted file mode 100644 index 1a6b1e62cd..0000000000 --- a/tests/compiler/resolve-unary.optimized.wat +++ /dev/null @@ -1,615 +0,0 @@ -(module - (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_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 1152) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1216) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1248) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 1344) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\001") - (data (i32.const 1376) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s") - (data (i32.const 1424) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1456) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 1488) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 1520) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 1552) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\002") - (data (i32.const 1584) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00+") - (data (i32.const 1616) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-") - (data (i32.const 1648) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00!") - (data (i32.const 1680) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00~") - (data (i32.const 1712) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00+\00+\00i") - (data (i32.const 1744) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00-\00-\00i") - (data (i32.const 1776) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\00+\00+") - (data (i32.const 1808) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\00-\00-") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $resolve-unary/a (mut i32) (i32.const 1)) - (global $resolve-unary/b (mut i32) (i32.const 1)) - (global $resolve-unary/foo (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $5 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.eqz - if - i32.const 1232 - return - end - local.get $0 - i32.const 31 - i32.shr_u - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - local.get $2 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.tee $4 - local.set $5 - loop $do-continue|0 - local.get $0 - i32.const 10 - i32.div_u - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.tee $0 - br_if $do-continue|0 - end - local.get $2 - if - local.get $4 - i32.const 45 - i32.store16 - end - local.get $4 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - local.get $0 - i32.load16_u - local.tee $3 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $3 - local.get $4 - i32.sub - return - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - return - end - i32.const 0 - ) - (func $start:resolve-unary - (local $0 i32) - i32.const 1840 - global.set $~lib/rt/stub/offset - i32.const -1 - call $~lib/util/number/itoa32 - i32.const 1360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 2 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/util/number/itoa32 - i32.const 1440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/a - i32.const 1 - i32.add - global.set $resolve-unary/a - global.get $resolve-unary/a - call $~lib/util/number/itoa32 - i32.const 1472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/a - i32.const 1 - i32.sub - global.set $resolve-unary/a - global.get $resolve-unary/a - call $~lib/util/number/itoa32 - i32.const 1440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1536 - i32.const 1504 - global.get $resolve-unary/a - select - i32.const 1536 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1504 - i32.const 1536 - global.get $resolve-unary/a - select - i32.const 1504 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/a - i32.const -1 - i32.xor - call $~lib/util/number/itoa32 - i32.const 1568 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/b - local.tee $0 - i32.const 1 - i32.add - global.set $resolve-unary/b - local.get $0 - call $~lib/util/number/itoa32 - i32.const 1440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/b - local.tee $0 - i32.const 1 - i32.sub - global.set $resolve-unary/b - local.get $0 - call $~lib/util/number/itoa32 - i32.const 1472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - global.set $resolve-unary/foo - i32.const 1600 - i32.const 1600 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 91 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1632 - i32.const 1632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 96 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1664 - i32.const 1664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1696 - i32.const 1696 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/foo - local.tee $0 - global.set $resolve-unary/foo - local.get $0 - global.get $resolve-unary/foo - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/foo - local.tee $0 - global.set $resolve-unary/foo - local.get $0 - global.get $resolve-unary/foo - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 126 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__alloc - drop - i32.const 1728 - i32.const 1728 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1760 - i32.const 1760 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1792 - i32.const 1792 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 161 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1824 - i32.const 1824 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 166 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:resolve-unary - ) -) diff --git a/tests/compiler/resolve-unary.release.wat b/tests/compiler/resolve-unary.release.wat new file mode 100644 index 0000000000..b2115a2271 --- /dev/null +++ b/tests/compiler/resolve-unary.release.wat @@ -0,0 +1,2635 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $resolve-unary/a (mut i32) (i32.const 1)) + (global $resolve-unary/b (mut i32) (i32.const 1)) + (global $resolve-unary/foo (mut i32) (i32.const 0)) + (global $resolve-unary/bar (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36640)) + (memory $0 1) + (data $0 (i32.const 1036) "|") + (data $0.1 (i32.const 1048) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $1 (i32.const 1164) "<") + (data $1.1 (i32.const 1176) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $2 (i32.const 1228) "\1c") + (data $2.1 (i32.const 1240) "\02\00\00\00\02\00\00\000") + (data $3 (i32.const 1260) "<") + (data $3.1 (i32.const 1272) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1324) "<") + (data $4.1 (i32.const 1336) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1452) "<") + (data $7.1 (i32.const 1464) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1516) ",") + (data $8.1 (i32.const 1528) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1596) "<") + (data $10.1 (i32.const 1608) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1660) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $12 (i32.const 2060) "\1c\04") + (data $12.1 (i32.const 2072) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $13 (i32.const 3116) "\\") + (data $13.1 (i32.const 3128) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $14 (i32.const 3212) "\1c") + (data $14.1 (i32.const 3224) "\02\00\00\00\04\00\00\00-\001") + (data $15 (i32.const 3244) "<") + (data $15.1 (i32.const 3256) "\02\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s") + (data $16 (i32.const 3308) "\1c") + (data $16.1 (i32.const 3320) "\02\00\00\00\02\00\00\001") + (data $17 (i32.const 3340) "\1c") + (data $17.1 (i32.const 3352) "\02\00\00\00\02\00\00\002") + (data $18 (i32.const 3372) "\1c") + (data $18.1 (i32.const 3384) "\02\00\00\00\08\00\00\00t\00r\00u\00e") + (data $19 (i32.const 3404) "\1c") + (data $19.1 (i32.const 3416) "\02\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data $20 (i32.const 3436) "\1c") + (data $20.1 (i32.const 3448) "\02\00\00\00\04\00\00\00-\002") + (data $21 (i32.const 3468) "\1c") + (data $21.1 (i32.const 3480) "\02\00\00\00\02\00\00\00+") + (data $22 (i32.const 3500) "\1c") + (data $22.1 (i32.const 3512) "\02\00\00\00\02\00\00\00-") + (data $23 (i32.const 3532) "\1c") + (data $23.1 (i32.const 3544) "\02\00\00\00\02\00\00\00!") + (data $24 (i32.const 3564) "\1c") + (data $24.1 (i32.const 3576) "\02\00\00\00\02\00\00\00~") + (data $25 (i32.const 3596) "\1c") + (data $25.1 (i32.const 3608) "\02\00\00\00\06\00\00\00+\00+\00i") + (data $26 (i32.const 3628) "\1c") + (data $26.1 (i32.const 3640) "\02\00\00\00\06\00\00\00-\00-\00i") + (data $27 (i32.const 3660) "\1c") + (data $27.1 (i32.const 3672) "\02\00\00\00\06\00\00\00i\00+\00+") + (data $28 (i32.const 3692) "\1c") + (data $28.1 (i32.const 3704) "\02\00\00\00\06\00\00\00i\00-\00-") + (data $29 (i32.const 3724) "\1c") + (data $29.1 (i32.const 3736) "\02\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r") + (data $30 (i32.const 3756) "\1c") + (data $30.1 (i32.const 3768) "\06\00\00\00\08\00\00\00\01") + (data $31 (i32.const 3788) ",") + (data $31.1 (i32.const 3800) "\02\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") + (data $32 (i32.const 3840) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $resolve-unary/foo + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-unary/bar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 2080 + call $~lib/rt/itcms/__visit + i32.const 3136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$156 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36640 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$156 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3840 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3844 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1616 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36640 + i32.const 0 + i32.store + i32.const 38208 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36640 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36640 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36640 + i32.const 38212 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36640 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36640 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36640 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36640 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1280 + i32.const 1616 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.lt_s + if + i32.const 36672 + i32.const 36720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$73 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + local.set $2 + br $__inlined_func$~lib/util/number/itoa32$73 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + select + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $3 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $3 + i32.add + local.set $5 + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $4 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $5 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + i32.const 100 + i32.ge_u + if + local.get $5 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $5 + local.get $1 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + else + local.get $5 + local.get $1 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + if + local.get $2 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28%29=>void> + block $resolve-unary/Bar + block $resolve-unary/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $~lib/function/Function<%28%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.lt_s + if + i32.const 36672 + i32.const 36720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~start + call $start:resolve-unary + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.lt_s + if + i32.const 36672 + i32.const 36720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$79 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$79 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $start:resolve-unary + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 36640 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace + i32.const -1 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3328 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/a + i32.const 1 + i32.add + global.set $resolve-unary/a + global.get $resolve-unary/a + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/a + i32.const 1 + i32.sub + global.set $resolve-unary/a + global.get $resolve-unary/a + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3328 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3424 + i32.const 3392 + global.get $resolve-unary/a + select + local.tee $0 + i32.store + local.get $0 + i32.const 3424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3392 + i32.const 3424 + global.get $resolve-unary/a + select + local.tee $0 + i32.store + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/a + i32.const -1 + i32.xor + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/b + local.tee $0 + i32.const 1 + i32.add + global.set $resolve-unary/b + local.get $0 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3328 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $resolve-unary/b + local.tee $0 + i32.const 1 + i32.sub + global.set $resolve-unary/b + local.get $0 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $resolve-unary/foo + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3488 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3488 + i32.store + i32.const 3488 + i32.const 3488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 91 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3520 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3520 + i32.store + i32.const 3520 + i32.const 3520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + local.tee $0 + i32.store offset=4 + local.get $0 + global.set $resolve-unary/foo + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + local.tee $0 + i32.store + global.get $resolve-unary/foo + local.get $0 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + local.tee $0 + i32.store offset=4 + local.get $0 + global.set $resolve-unary/foo + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + local.tee $0 + i32.store + global.get $resolve-unary/foo + local.get $0 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3552 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3552 + i32.store + i32.const 3552 + i32.const 3552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3584 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3584 + i32.store + i32.const 3584 + i32.const 3584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + global.set $resolve-unary/foo + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $resolve-unary/foo + local.get $0 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + global.set $resolve-unary/foo + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $resolve-unary/foo + local.get $0 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $resolve-unary/bar + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/bar + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + i32.const 3616 + i32.const 3616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/bar + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3648 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3648 + i32.store + i32.const 3648 + i32.const 3648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/bar + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3680 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3680 + i32.store + i32.const 3680 + i32.const 3680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/bar + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3712 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3712 + i32.store + i32.const 3712 + i32.const 3712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3740 + i32.load + drop + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36672 + i32.const 36720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.lt_s + if + i32.const 36672 + i32.const 36720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/resolve-unary.ts b/tests/compiler/resolve-unary.ts index ff598b7f60..20a3196b72 100644 --- a/tests/compiler/resolve-unary.ts +++ b/tests/compiler/resolve-unary.ts @@ -168,3 +168,7 @@ assert( == "i--" ); + +(typeof 1).length; +function generic(v: T): void {} +generic(typeof ((): void => {})); diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat deleted file mode 100644 index 43466944f9..0000000000 --- a/tests/compiler/resolve-unary.untouched.wat +++ /dev/null @@ -1,1573 +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)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 144) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 208) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 228) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 640) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 1680) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00") - (data (i32.const 1776) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\001\00") - (data (i32.const 1808) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s\00") - (data (i32.const 1856) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 1888) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00") - (data (i32.const 1920) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") - (data (i32.const 1952) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") - (data (i32.const 1984) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\002\00") - (data (i32.const 2016) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00+\00") - (data (i32.const 2048) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") - (data (i32.const 2080) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00!\00") - (data (i32.const 2112) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00~\00") - (data (i32.const 2144) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00+\00+\00i\00") - (data (i32.const 2176) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00-\00-\00i\00") - (data (i32.const 2208) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\00+\00+\00") - (data (i32.const 2240) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00i\00-\00-\00") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $resolve-unary/a (mut i32) (i32.const 1)) - (global $resolve-unary/b (mut i32) (i32.const 1)) - (global $resolve-unary/foo (mut i32) (i32.const 0)) - (global $resolve-unary/bar (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 2264)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 100000 - i32.lt_u - if - local.get $0 - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $0 - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $0 - i32.const 10000 - i32.ge_u - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $0 - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - i32.const 228 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - i32.const 228 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $1 - i32.const 100 - i32.div_u - local.set $3 - local.get $1 - i32.const 100 - i32.rem_u - local.set $10 - local.get $3 - local.set $1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 228 - local.get $10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 228 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - else - local.get $2 - i32.const 1 - i32.sub - local.set $2 - i32.const 48 - local.get $1 - i32.add - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - ) - (func $~lib/util/number/utoa_hex_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $2 - i32.const 2 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 656 - local.get $1 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i64.const 8 - i64.shr_u - local.set $1 - br $while-continue|0 - end - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - i32.const 656 - local.get $1 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - local.get $1 - local.set $2 - local.get $2 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $1 - i64.extend_i32_s - local.set $3 - local.get $3 - local.set $4 - i32.const 1 - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $4 - i64.div_u - local.set $0 - local.get $4 - local.get $4 - i64.mul - local.set $4 - local.get $5 - i32.const 1 - i32.shl - local.set $5 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $0 - i64.const 1 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $3 - i64.div_u - local.set $0 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $while-continue|1 - end - end - local.get $5 - i32.const 1 - i32.sub - ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i32) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $5 - local.get $4 - i64.const 1 - i64.sub - local.set $6 - loop $do-continue|0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 1696 - local.get $1 - local.get $6 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $5 - i64.shr_u - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|0 - end - else - loop $do-continue|1 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $4 - i64.div_u - local.set $6 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 1696 - local.get $1 - local.get $6 - local.get $4 - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $6 - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|1 - end - end - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/util/number/itoa32 (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.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 32 - i32.const 160 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 224 - return - end - local.get $0 - i32.const 31 - i32.shr_u - local.set $2 - local.get $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - i64.extend_i32_u - local.get $5 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.set $4 - local.get $4 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__alloc - local.set $3 - local.get $3 - local.get $4 - i64.extend_i32_u - local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/stub/__retain - ) - (func $~lib/number/I32#toString (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/util/number/itoa32 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/number/Bool#toString (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - i32.const 1936 - else - i32.const 1968 - end - ) - (func $resolve-unary/Foo#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $resolve-unary/Foo#plus (param $0 i32) (result i32) - i32.const 2032 - ) - (func $~lib/string/String#toString (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - ) - (func $resolve-unary/Foo#minus (param $0 i32) (result i32) - i32.const 2064 - ) - (func $resolve-unary/Foo#prefix_inc (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - ) - (func $resolve-unary/Foo#self (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - ) - (func $resolve-unary/Foo#prefix_dec (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - ) - (func $resolve-unary/Foo#not (param $0 i32) (result i32) - i32.const 2096 - ) - (func $resolve-unary/Foo#bitwise_not (param $0 i32) (result i32) - i32.const 2128 - ) - (func $resolve-unary/Foo#postfix_inc (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - ) - (func $resolve-unary/Foo#postfix_dec (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - ) - (func $resolve-unary/Bar#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $resolve-unary/Bar.prefix_inc (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 2160 - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $resolve-unary/Bar.prefix_dec (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 2192 - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $resolve-unary/Bar.postfix_inc (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 2224 - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $resolve-unary/Bar.postfix_dec (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 2256 - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $start:resolve-unary - (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) - (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) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const -1 - i32.const 10 - call $~lib/number/I32#toString - local.tee $0 - i32.const 1792 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 2 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 10 - call $~lib/number/I32#toString - local.tee $1 - i32.const 1872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/a - i32.const 1 - i32.add - global.set $resolve-unary/a - global.get $resolve-unary/a - i32.const 10 - call $~lib/number/I32#toString - local.tee $2 - i32.const 1904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/a - i32.const 1 - i32.sub - global.set $resolve-unary/a - global.get $resolve-unary/a - i32.const 10 - call $~lib/number/I32#toString - local.tee $3 - i32.const 1872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/a - i32.eqz - i32.const 0 - call $~lib/number/Bool#toString - local.tee $4 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/a - i32.eqz - i32.eqz - i32.const 0 - call $~lib/number/Bool#toString - local.tee $5 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/a - i32.const -1 - i32.xor - i32.const 10 - call $~lib/number/I32#toString - local.tee $6 - i32.const 2000 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/b - local.tee $7 - i32.const 1 - i32.add - global.set $resolve-unary/b - local.get $7 - i32.const 10 - call $~lib/number/I32#toString - local.tee $7 - i32.const 1872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/b - local.tee $8 - i32.const 1 - i32.sub - global.set $resolve-unary/b - local.get $8 - i32.const 10 - call $~lib/number/I32#toString - local.tee $8 - i32.const 1904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $resolve-unary/Foo#constructor - global.set $resolve-unary/foo - global.get $resolve-unary/foo - call $resolve-unary/Foo#plus - local.tee $9 - call $~lib/string/String#toString - local.tee $10 - i32.const 2032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 91 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/foo - call $resolve-unary/Foo#minus - local.tee $11 - call $~lib/string/String#toString - local.tee $12 - i32.const 2064 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 96 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/foo - call $resolve-unary/Foo#prefix_inc - local.tee $13 - local.tee $14 - global.get $resolve-unary/foo - local.tee $15 - i32.ne - if - local.get $14 - call $~lib/rt/stub/__retain - local.set $14 - local.get $15 - call $~lib/rt/stub/__release - end - local.get $14 - global.set $resolve-unary/foo - global.get $resolve-unary/foo - call $resolve-unary/Foo#self - local.tee $14 - global.get $resolve-unary/foo - i32.eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/foo - call $resolve-unary/Foo#prefix_dec - local.tee $15 - local.tee $16 - global.get $resolve-unary/foo - local.tee $17 - i32.ne - if - local.get $16 - call $~lib/rt/stub/__retain - local.set $16 - local.get $17 - call $~lib/rt/stub/__release - end - local.get $16 - global.set $resolve-unary/foo - global.get $resolve-unary/foo - call $resolve-unary/Foo#self - local.tee $16 - global.get $resolve-unary/foo - i32.eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/foo - call $resolve-unary/Foo#not - local.tee $17 - call $~lib/string/String#toString - local.tee $18 - i32.const 2096 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/foo - call $resolve-unary/Foo#bitwise_not - local.tee $19 - call $~lib/string/String#toString - local.tee $20 - i32.const 2128 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/foo - local.tee $21 - call $resolve-unary/Foo#postfix_inc - local.tee $22 - local.tee $23 - global.get $resolve-unary/foo - local.tee $24 - i32.ne - if - local.get $23 - call $~lib/rt/stub/__retain - local.set $23 - local.get $24 - call $~lib/rt/stub/__release - end - local.get $23 - global.set $resolve-unary/foo - local.get $21 - call $resolve-unary/Foo#self - local.tee $21 - global.get $resolve-unary/foo - i32.eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/foo - local.tee $23 - call $resolve-unary/Foo#postfix_dec - local.tee $24 - local.tee $25 - global.get $resolve-unary/foo - local.tee $26 - i32.ne - if - local.get $25 - call $~lib/rt/stub/__retain - local.set $25 - local.get $26 - call $~lib/rt/stub/__release - end - local.get $25 - global.set $resolve-unary/foo - local.get $23 - call $resolve-unary/Foo#self - local.tee $23 - global.get $resolve-unary/foo - i32.eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 126 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $resolve-unary/Bar#constructor - global.set $resolve-unary/bar - global.get $resolve-unary/bar - call $resolve-unary/Bar.prefix_inc - local.tee $25 - call $~lib/string/String#toString - local.tee $26 - i32.const 2160 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/bar - call $resolve-unary/Bar.prefix_dec - local.tee $27 - call $~lib/string/String#toString - local.tee $28 - i32.const 2192 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/bar - call $resolve-unary/Bar.postfix_inc - local.tee $29 - call $~lib/string/String#toString - local.tee $30 - i32.const 2224 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 161 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $resolve-unary/bar - call $resolve-unary/Bar.postfix_dec - local.tee $31 - call $~lib/string/String#toString - local.tee $32 - i32.const 2256 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1824 - i32.const 166 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $9 - call $~lib/rt/stub/__release - local.get $10 - call $~lib/rt/stub/__release - local.get $11 - call $~lib/rt/stub/__release - local.get $12 - call $~lib/rt/stub/__release - local.get $13 - call $~lib/rt/stub/__release - local.get $14 - call $~lib/rt/stub/__release - local.get $15 - call $~lib/rt/stub/__release - local.get $16 - call $~lib/rt/stub/__release - local.get $17 - call $~lib/rt/stub/__release - local.get $18 - call $~lib/rt/stub/__release - local.get $19 - call $~lib/rt/stub/__release - local.get $20 - call $~lib/rt/stub/__release - local.get $21 - call $~lib/rt/stub/__release - local.get $22 - call $~lib/rt/stub/__release - local.get $23 - call $~lib/rt/stub/__release - local.get $24 - call $~lib/rt/stub/__release - local.get $25 - call $~lib/rt/stub/__release - local.get $26 - call $~lib/rt/stub/__release - local.get $27 - call $~lib/rt/stub/__release - local.get $28 - call $~lib/rt/stub/__release - local.get $29 - call $~lib/rt/stub/__release - local.get $30 - call $~lib/rt/stub/__release - local.get $31 - call $~lib/rt/stub/__release - local.get $32 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:resolve-unary - ) -) diff --git a/tests/compiler/retain-i32.debug.wat b/tests/compiler/retain-i32.debug.wat new file mode 100644 index 0000000000..29864f2efa --- /dev/null +++ b/tests/compiler/retain-i32.debug.wat @@ -0,0 +1,753 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) + (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) + (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) + (global $~lib/builtins/i16.MIN_VALUE i32 (i32.const -32768)) + (global $~lib/builtins/i16.MAX_VALUE i32 (i32.const 32767)) + (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $retain-i32/si (mut i32) (i32.const 0)) + (global $retain-i32/ui (mut i32) (i32.const 0)) + (global $retain-i32/ri (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $retain-i32/test (param $a i32) (param $b i32) + local.get $a + local.get $b + i32.add + i32.extend8_s + local.get $a + local.get $b + i32.add + i32.extend8_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32.sub + i32.extend8_s + local.get $a + local.get $b + i32.sub + i32.extend8_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 5 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32.mul + i32.extend8_s + local.get $a + local.get $b + i32.mul + i32.extend8_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32.and + i32.extend8_s + local.get $a + local.get $b + i32.and + i32.extend8_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 7 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32.or + i32.extend8_s + local.get $a + local.get $b + i32.or + i32.extend8_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32.xor + i32.extend8_s + local.get $a + local.get $b + i32.xor + i32.extend8_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32.const 7 + i32.and + i32.shl + i32.extend8_s + local.get $a + local.get $b + i32.const 7 + i32.and + i32.shl + i32.extend8_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32.add + i32.const 255 + i32.and + local.get $a + local.get $b + i32.add + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32.sub + i32.const 255 + i32.and + local.get $a + local.get $b + i32.sub + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 14 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32.mul + i32.const 255 + i32.and + local.get $a + local.get $b + i32.mul + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32.and + i32.const 255 + i32.and + local.get $a + local.get $b + i32.and + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32.or + i32.const 255 + i32.and + local.get $a + local.get $b + i32.or + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 17 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32.xor + i32.const 255 + i32.and + local.get $a + local.get $b + i32.xor + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32.const 7 + i32.and + i32.shl + i32.const 255 + i32.and + local.get $a + local.get $b + i32.const 7 + i32.and + i32.shl + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $retain-i32/testLocalRetain + (local $ri i32) + i32.const 0 + i32.load8_s + local.set $ri + i32.const 1 + drop + ) + (func $start:retain-i32 + (local $i i32) + i32.const 0 + global.get $~lib/builtins/i8.MAX_VALUE + call $retain-i32/test + global.get $~lib/builtins/i8.MAX_VALUE + i32.const 0 + call $retain-i32/test + i32.const 1 + global.get $~lib/builtins/i8.MAX_VALUE + call $retain-i32/test + global.get $~lib/builtins/i8.MAX_VALUE + i32.const 1 + call $retain-i32/test + i32.const -1 + global.get $~lib/builtins/i8.MAX_VALUE + call $retain-i32/test + global.get $~lib/builtins/i8.MAX_VALUE + i32.const -1 + call $retain-i32/test + i32.const 0 + global.get $~lib/builtins/i8.MIN_VALUE + call $retain-i32/test + global.get $~lib/builtins/i8.MIN_VALUE + i32.const 0 + call $retain-i32/test + i32.const 1 + global.get $~lib/builtins/i8.MIN_VALUE + call $retain-i32/test + global.get $~lib/builtins/i8.MIN_VALUE + i32.const 1 + call $retain-i32/test + i32.const -1 + global.get $~lib/builtins/i8.MIN_VALUE + call $retain-i32/test + global.get $~lib/builtins/i8.MIN_VALUE + i32.const -1 + call $retain-i32/test + global.get $~lib/builtins/i8.MAX_VALUE + global.get $~lib/builtins/i8.MAX_VALUE + call $retain-i32/test + global.get $~lib/builtins/i8.MIN_VALUE + global.get $~lib/builtins/i8.MIN_VALUE + call $retain-i32/test + global.get $~lib/builtins/i8.MAX_VALUE + global.get $~lib/builtins/i8.MIN_VALUE + call $retain-i32/test + global.get $~lib/builtins/i8.MIN_VALUE + global.get $~lib/builtins/i8.MAX_VALUE + call $retain-i32/test + i32.const 0 + global.get $~lib/builtins/u8.MAX_VALUE + call $retain-i32/test + global.get $~lib/builtins/u8.MAX_VALUE + i32.const 0 + call $retain-i32/test + i32.const 1 + global.get $~lib/builtins/u8.MAX_VALUE + call $retain-i32/test + global.get $~lib/builtins/u8.MAX_VALUE + i32.const 1 + call $retain-i32/test + i32.const -1 + global.get $~lib/builtins/u8.MAX_VALUE + call $retain-i32/test + global.get $~lib/builtins/u8.MAX_VALUE + i32.const -1 + call $retain-i32/test + global.get $~lib/builtins/u8.MAX_VALUE + global.get $~lib/builtins/u8.MAX_VALUE + call $retain-i32/test + global.get $~lib/builtins/i8.MIN_VALUE + local.set $i + loop $for-loop|0 + local.get $i + global.get $~lib/builtins/u8.MAX_VALUE + i32.le_s + if + i32.const 0 + local.get $i + call $retain-i32/test + i32.const 1 + local.get $i + call $retain-i32/test + i32.const -1 + local.get $i + call $retain-i32/test + global.get $~lib/builtins/i8.MIN_VALUE + local.get $i + call $retain-i32/test + global.get $~lib/builtins/i8.MAX_VALUE + local.get $i + call $retain-i32/test + global.get $~lib/builtins/u8.MAX_VALUE + local.get $i + call $retain-i32/test + global.get $~lib/builtins/i16.MIN_VALUE + local.get $i + call $retain-i32/test + global.get $~lib/builtins/i16.MAX_VALUE + local.get $i + call $retain-i32/test + global.get $~lib/builtins/u16.MAX_VALUE + local.get $i + call $retain-i32/test + global.get $~lib/builtins/i32.MAX_VALUE + local.get $i + call $retain-i32/test + global.get $~lib/builtins/i32.MIN_VALUE + local.get $i + call $retain-i32/test + global.get $~lib/builtins/u32.MAX_VALUE + local.get $i + call $retain-i32/test + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 127 + i32.const 127 + i32.add + i32.const 1 + i32.add + i32.extend8_s + global.set $retain-i32/si + global.get $retain-i32/si + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 127 + i32.const 1 + i32.sub + i32.const 127 + i32.sub + i32.extend8_s + global.set $retain-i32/si + global.get $retain-i32/si + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 81 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 127 + i32.const 2 + i32.mul + i32.extend8_s + global.set $retain-i32/si + global.get $retain-i32/si + i32.const -2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const -128 + i32.sub + i32.extend8_s + global.set $retain-i32/si + global.get $retain-i32/si + i32.const -128 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -128 + i32.const -1 + i32.mul + i32.extend8_s + global.set $retain-i32/si + global.get $retain-i32/si + i32.const -128 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 127 + i32.const -1 + i32.div_s + i32.extend8_s + global.set $retain-i32/si + global.get $retain-i32/si + i32.const -127 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -128 + i32.const -1 + i32.div_s + i32.extend8_s + global.set $retain-i32/si + global.get $retain-i32/si + i32.const -128 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 127 + i32.const 2 + i32.rem_s + global.set $retain-i32/si + global.get $retain-i32/si + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 99 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 127 + i32.rem_s + global.set $retain-i32/si + global.get $retain-i32/si + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -128 + i32.const 2 + i32.rem_s + global.set $retain-i32/si + global.get $retain-i32/si + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const -128 + i32.rem_s + global.set $retain-i32/si + global.get $retain-i32/si + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 255 + i32.const 255 + i32.add + i32.const 1 + i32.add + i32.const 255 + i32.and + global.set $retain-i32/ui + global.get $retain-i32/ui + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 255 + i32.const 1 + i32.sub + i32.const 255 + i32.sub + i32.const 255 + i32.and + global.set $retain-i32/ui + global.get $retain-i32/ui + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 255 + i32.const 2 + i32.mul + i32.const 255 + i32.and + global.set $retain-i32/ui + global.get $retain-i32/ui + i32.const 254 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 255 + i32.const 255 + i32.mul + i32.const 255 + i32.and + global.set $retain-i32/ui + global.get $retain-i32/ui + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 122 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 255 + i32.const 255 + i32.div_u + global.set $retain-i32/ui + global.get $retain-i32/ui + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 255 + i32.const 2 + i32.rem_u + global.set $retain-i32/ui + global.get $retain-i32/ui + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 255 + i32.const 255 + i32.rem_u + global.set $retain-i32/ui + global.get $retain-i32/ui + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.load8_s + global.set $retain-i32/ri + i32.const 1 + drop + call $retain-i32/testLocalRetain + ) + (func $~start + call $start:retain-i32 + ) +) diff --git a/tests/compiler/retain-i32.json b/tests/compiler/retain-i32.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/retain-i32.json +++ b/tests/compiler/retain-i32.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/retain-i32.optimized.wat b/tests/compiler/retain-i32.optimized.wat deleted file mode 100644 index 99faa43113..0000000000 --- a/tests/compiler/retain-i32.optimized.wat +++ /dev/null @@ -1,30 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 1) - (data (i32.const 1024) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s") - (export "memory" (memory $0)) - (start $~start) - (func $~start - (local $0 i32) - i32.const -128 - local.set $0 - loop $for-loop|0 - local.get $0 - i32.const 255 - i32.le_s - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 0 - i32.load8_s - drop - i32.const 0 - i32.load8_s - drop - ) -) diff --git a/tests/compiler/retain-i32.release.wat b/tests/compiler/retain-i32.release.wat new file mode 100644 index 0000000000..66ffaef6f3 --- /dev/null +++ b/tests/compiler/retain-i32.release.wat @@ -0,0 +1,28 @@ +(module + (type $0 (func)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s") + (export "memory" (memory $0)) + (start $~start) + (func $~start + (local $0 i32) + i32.const -128 + local.set $0 + loop $for-loop|0 + local.get $0 + i32.const 255 + i32.le_s + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 0 + i32.load8_s + drop + ) +) diff --git a/tests/compiler/retain-i32.ts b/tests/compiler/retain-i32.ts index 5484c06c1b..4065eb74da 100644 --- a/tests/compiler/retain-i32.ts +++ b/tests/compiler/retain-i32.ts @@ -7,7 +7,7 @@ function test(a: u32, b: u32): void { assert((a & b) == (a & b)); assert((a | b) == (a | b)); assert((a ^ b) == (a ^ b)); - assert((a << b) == (a << b)); + assert((a << (b & 7)) == (a << b)); // unsigned assert((a + b) == (a + b)); @@ -16,7 +16,7 @@ function test(a: u32, b: u32): void { assert((a & b) == (a & b)); assert((a | b) == (a | b)); assert((a ^ b) == (a ^ b)); - assert((a << b) == (a << b)); + assert((a << (b & 7)) == (a << b)); } // signed diff --git a/tests/compiler/retain-i32.untouched.wat b/tests/compiler/retain-i32.untouched.wat deleted file mode 100644 index a096fb55d4..0000000000 --- a/tests/compiler/retain-i32.untouched.wat +++ /dev/null @@ -1,807 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) - (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) - (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) - (global $~lib/builtins/i16.MIN_VALUE i32 (i32.const -32768)) - (global $~lib/builtins/i16.MAX_VALUE i32 (i32.const 32767)) - (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) - (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $retain-i32/si (mut i32) (i32.const 0)) - (global $retain-i32/ui (mut i32) (i32.const 0)) - (global $retain-i32/ri (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $retain-i32/test (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.get $0 - local.get $1 - i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.get $0 - local.get $1 - i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 5 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.mul - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.get $0 - local.get $1 - i32.mul - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.and - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.get $0 - local.get $1 - i32.and - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 7 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.or - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.get $0 - local.get $1 - i32.or - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.xor - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.get $0 - local.get $1 - i32.xor - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 9 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.shl - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.get $0 - local.get $1 - i32.shl - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.add - i32.const 255 - i32.and - local.get $0 - local.get $1 - i32.add - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 13 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.sub - i32.const 255 - i32.and - local.get $0 - local.get $1 - i32.sub - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 14 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.mul - i32.const 255 - i32.and - local.get $0 - local.get $1 - i32.mul - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.and - i32.const 255 - i32.and - local.get $0 - local.get $1 - i32.and - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.or - i32.const 255 - i32.and - local.get $0 - local.get $1 - i32.or - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.xor - i32.const 255 - i32.and - local.get $0 - local.get $1 - i32.xor - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.shl - i32.const 255 - i32.and - local.get $0 - local.get $1 - i32.shl - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $retain-i32/testLocalRetain - (local $0 i32) - i32.const 0 - i32.load8_s - local.set $0 - i32.const 1 - drop - ) - (func $start:retain-i32 - (local $0 i32) - (local $1 i32) - i32.const 0 - global.get $~lib/builtins/i8.MAX_VALUE - call $retain-i32/test - global.get $~lib/builtins/i8.MAX_VALUE - i32.const 0 - call $retain-i32/test - i32.const 1 - global.get $~lib/builtins/i8.MAX_VALUE - call $retain-i32/test - global.get $~lib/builtins/i8.MAX_VALUE - i32.const 1 - call $retain-i32/test - i32.const -1 - global.get $~lib/builtins/i8.MAX_VALUE - call $retain-i32/test - global.get $~lib/builtins/i8.MAX_VALUE - i32.const -1 - call $retain-i32/test - i32.const 0 - global.get $~lib/builtins/i8.MIN_VALUE - call $retain-i32/test - global.get $~lib/builtins/i8.MIN_VALUE - i32.const 0 - call $retain-i32/test - i32.const 1 - global.get $~lib/builtins/i8.MIN_VALUE - call $retain-i32/test - global.get $~lib/builtins/i8.MIN_VALUE - i32.const 1 - call $retain-i32/test - i32.const -1 - global.get $~lib/builtins/i8.MIN_VALUE - call $retain-i32/test - global.get $~lib/builtins/i8.MIN_VALUE - i32.const -1 - call $retain-i32/test - global.get $~lib/builtins/i8.MAX_VALUE - global.get $~lib/builtins/i8.MAX_VALUE - call $retain-i32/test - global.get $~lib/builtins/i8.MIN_VALUE - global.get $~lib/builtins/i8.MIN_VALUE - call $retain-i32/test - global.get $~lib/builtins/i8.MAX_VALUE - global.get $~lib/builtins/i8.MIN_VALUE - call $retain-i32/test - global.get $~lib/builtins/i8.MIN_VALUE - global.get $~lib/builtins/i8.MAX_VALUE - call $retain-i32/test - i32.const 0 - global.get $~lib/builtins/u8.MAX_VALUE - call $retain-i32/test - global.get $~lib/builtins/u8.MAX_VALUE - i32.const 0 - call $retain-i32/test - i32.const 1 - global.get $~lib/builtins/u8.MAX_VALUE - call $retain-i32/test - global.get $~lib/builtins/u8.MAX_VALUE - i32.const 1 - call $retain-i32/test - i32.const -1 - global.get $~lib/builtins/u8.MAX_VALUE - call $retain-i32/test - global.get $~lib/builtins/u8.MAX_VALUE - i32.const -1 - call $retain-i32/test - global.get $~lib/builtins/u8.MAX_VALUE - global.get $~lib/builtins/u8.MAX_VALUE - call $retain-i32/test - global.get $~lib/builtins/i8.MIN_VALUE - local.set $0 - loop $for-loop|0 - local.get $0 - global.get $~lib/builtins/u8.MAX_VALUE - i32.le_s - local.set $1 - local.get $1 - if - i32.const 0 - local.get $0 - call $retain-i32/test - i32.const 1 - local.get $0 - call $retain-i32/test - i32.const -1 - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/i8.MIN_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/i8.MAX_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/u8.MAX_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/i16.MIN_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/i16.MAX_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/u16.MAX_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/i32.MAX_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/i32.MIN_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/u32.MAX_VALUE - local.get $0 - call $retain-i32/test - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 127 - i32.const 127 - i32.add - i32.const 1 - i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - global.set $retain-i32/si - global.get $retain-i32/si - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 127 - i32.const 1 - i32.sub - i32.const 127 - i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - global.set $retain-i32/si - global.get $retain-i32/si - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 81 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 127 - i32.const 2 - i32.mul - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - global.set $retain-i32/si - global.get $retain-i32/si - i32.const -2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const -128 - i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - global.set $retain-i32/si - global.get $retain-i32/si - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -128 - i32.const -1 - i32.mul - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - global.set $retain-i32/si - global.get $retain-i32/si - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 90 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 127 - i32.const -1 - i32.div_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - global.set $retain-i32/si - global.get $retain-i32/si - i32.const -127 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 93 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -128 - i32.const -1 - i32.div_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - global.set $retain-i32/si - global.get $retain-i32/si - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 96 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 127 - i32.const 2 - i32.rem_s - global.set $retain-i32/si - global.get $retain-i32/si - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 99 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 127 - i32.rem_s - global.set $retain-i32/si - global.get $retain-i32/si - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -128 - i32.const 2 - i32.rem_s - global.set $retain-i32/si - global.get $retain-i32/si - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const -128 - i32.rem_s - global.set $retain-i32/si - global.get $retain-i32/si - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 255 - i32.const 255 - i32.add - i32.const 1 - i32.add - i32.const 255 - i32.and - global.set $retain-i32/ui - global.get $retain-i32/ui - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 255 - i32.const 1 - i32.sub - i32.const 255 - i32.sub - i32.const 255 - i32.and - global.set $retain-i32/ui - global.get $retain-i32/ui - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 255 - i32.const 2 - i32.mul - i32.const 255 - i32.and - global.set $retain-i32/ui - global.get $retain-i32/ui - i32.const 254 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 255 - i32.const 255 - i32.mul - i32.const 255 - i32.and - global.set $retain-i32/ui - global.get $retain-i32/ui - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 122 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 255 - i32.const 255 - i32.div_u - global.set $retain-i32/ui - global.get $retain-i32/ui - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 125 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 255 - i32.const 2 - i32.rem_u - global.set $retain-i32/ui - global.get $retain-i32/ui - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 128 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 255 - i32.const 255 - i32.rem_u - global.set $retain-i32/ui - global.get $retain-i32/ui - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 131 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.load8_s - global.set $retain-i32/ri - i32.const 1 - drop - call $retain-i32/testLocalRetain - ) - (func $~start - call $start:retain-i32 - ) -) diff --git a/tests/compiler/retain-release-sanity.json b/tests/compiler/retain-release-sanity.json deleted file mode 100644 index 9f7878d475..0000000000 --- a/tests/compiler/retain-release-sanity.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat deleted file mode 100644 index 686f1bd9d3..0000000000 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ /dev/null @@ -1,2713 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 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_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1120) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1168) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1232) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1280) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") - (data (i32.const 1332) "\01\00\00\00\01") - (data (i32.const 1344) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 1408) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 1440) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d") - (data (i32.const 1472) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1536) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1584) "\08\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\"\t\00\00\00\00\00\00\"A\00\00\00\00\00\00\"A") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1652 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1136 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1136 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1136 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1664 - local.set $1 - i32.const 1664 - i32.const 0 - i32.store - i32.const 3232 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1664 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1664 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1664 - i32.const 3248 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1664 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 1184 - i32.const 1136 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1136 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1136 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1136 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - call $~lib/rt/rtrace/onalloc - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 28 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1652 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1248 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1248 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - local.get $1 - i32.load - local.tee $5 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $4 - i32.const 1 - i32.and - if - local.get $5 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 1652 - i32.ge_u - if - local.get $1 - local.get $3 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 268435452 - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $3 - local.get $2 - call $~lib/rt/tlsf/maybeInitialize - local.get $3 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - i32.const 2 - i32.shl - local.tee $4 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - local.tee $1 - i32.add - local.get $4 - local.get $2 - i32.sub - call $~lib/memory/memory.fill - local.get $1 - local.get $3 - i32.ne - if - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $4 - i32.store offset=8 - end - ) - (func $~lib/array/Array#push (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.add - local.tee $2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.const 123 - i32.store - local.get $0 - local.get $2 - i32.store offset=12 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $__inlined_func$~lib/string/String#concat (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 1424 - local.get $2 - select - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - i32.eqz - if - local.get $0 - i32.const 1424 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 1424 - local.set $0 - end - local.get $3 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.tee $4 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.tee $6 - i32.add - local.tee $1 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - i32.const 1344 - br $__inlined_func$~lib/string/String#concat - end - local.get $1 - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - local.get $3 - local.get $4 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.add - local.get $0 - local.get $6 - call $~lib/memory/memory.copy - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - end - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $start:retain-release-sanity - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - i32.const 12 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $1 - i32.const 12 - call $~lib/memory/memory.fill - local.get $1 - local.set $0 - local.get $1 - local.get $2 - i32.load - local.tee $4 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - i32.const 12 - i32.store offset=8 - local.get $2 - i32.const 3 - i32.store offset=12 - local.get $2 - call $~lib/array/Array#push - local.get $2 - call $~lib/array/Array#push - local.get $2 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s - if - i32.const 1296 - i32.const 1088 - i32.const 300 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - drop - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - call $~lib/rt/pure/__release - i32.const 16 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - i32.const 0 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $1 - i32.const 0 - call $~lib/memory/memory.fill - local.get $1 - local.set $0 - local.get $1 - local.get $2 - i32.load - local.tee $4 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $2 - loop $for-loop|0 - local.get $3 - i32.const 10 - i32.lt_s - if - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - i32.const 0 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $1 - i32.const 0 - call $~lib/memory/memory.fill - local.get $1 - local.set $0 - local.get $1 - local.get $2 - i32.load - local.tee $5 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $2 - local.get $2 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.add - local.tee $5 - call $~lib/array/ensureSize - local.get $2 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.const 1344 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $5 - i32.store offset=12 - i32.const 1344 - call $~lib/rt/pure/__release - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - call $~lib/rt/pure/__release - i32.const 1360 - i32.const 1392 - call $~lib/string/String.__concat - local.tee $3 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 1456 - call $~lib/string/String.__concat - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - i32.const 4 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.store - i32.const 4 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - i32.store - local.get $2 - local.set $0 - local.get $2 - local.get $1 - i32.load - local.tee $3 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $1 - local.get $0 - i32.store - local.get $1 - local.set $0 - local.get $2 - local.tee $3 - local.get $1 - i32.load - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.set $3 - local.get $1 - local.get $2 - i32.load - local.tee $0 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $3 - i32.store - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $0 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $3 - i32.store - local.get $2 - local.set $0 - local.get $2 - local.get $1 - i32.load - local.tee $3 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $1 - local.get $0 - i32.store - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $0 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $3 - i32.store - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__collect - ) - (func $~start - call $start:retain-release-sanity - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1248 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $2 - i32.const -2147483648 - i32.and - if - local.get $0 - i32.const -2147483648 - i32.store offset=4 - else - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1248 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 1584 - i32.load - i32.gt_u - if - i32.const 1488 - i32.const 1552 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.shl - i32.const 1588 - i32.add - i32.load - i32.const 32 - i32.and - if - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - else - local.get $0 - local.get $1 - i32.const 1 - i32.sub - i32.const -1342177280 - i32.or - i32.store offset=4 - local.get $2 - i32.const -2147483648 - i32.and - i32.eqz - if - global.get $~lib/rt/pure/CUR - local.tee $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - global.get $~lib/rt/pure/CUR - global.get $~lib/rt/pure/ROOTS - local.tee $1 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - local.tee $2 - i32.const 256 - local.get $2 - i32.const 256 - i32.gt_u - select - local.tee $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $2 - i32.const 16 - i32.sub - call $~lib/rt/rtrace/onfree - local.get $2 - local.get $1 - local.get $3 - call $~lib/memory/memory.copy - local.get $1 - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/rtrace/onalloc - call $~lib/rt/tlsf/maybeInitialize - local.get $1 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - end - local.get $2 - global.set $~lib/rt/pure/ROOTS - local.get $2 - local.get $3 - i32.add - global.set $~lib/rt/pure/CUR - local.get $2 - local.get $4 - i32.add - global.set $~lib/rt/pure/END - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/rt/pure/CUR - end - end - end - ) - (func $~lib/rt/pure/markGray (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - select - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - ) - (func $~lib/rt/pure/__collect - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.tee $1 - local.tee $3 - local.set $4 - global.get $~lib/rt/pure/CUR - local.set $0 - loop $for-loop|0 - local.get $4 - local.get $0 - i32.lt_u - if - local.get $4 - i32.load - local.tee $5 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.const 0 - local.get $2 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - select - if - local.get $5 - call $~lib/rt/pure/markGray - local.get $3 - local.get $5 - i32.store - local.get $3 - i32.const 4 - i32.add - local.set $3 - else - i32.const 0 - local.get $2 - i32.const 268435455 - i32.and - i32.eqz - local.get $2 - i32.const 1879048192 - i32.and - select - if - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/freeBlock - else - local.get $5 - local.get $2 - i32.const 2147483647 - i32.and - i32.store offset=4 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - global.set $~lib/rt/pure/CUR - local.get $1 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/pure/scan - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - local.set $0 - loop $for-loop|2 - local.get $0 - local.get $3 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - local.get $2 - i32.load offset=4 - i32.const 2147483647 - i32.and - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/collectWhite - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|2 - end - end - local.get $1 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.const 1652 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - local.set $0 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - i32.const 1 - i32.sub - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 - end - local.get $0 - call $~lib/rt/pure/decrement - br $break|0 - end - local.get $0 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1248 - i32.const 79 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/markGray - br $break|0 - end - local.get $0 - call $~lib/rt/pure/scan - br $break|0 - end - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1248 - i32.const 90 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.const 1879048192 - i32.and - if - local.get $0 - call $~lib/rt/pure/scanBlack - end - br $break|0 - end - local.get $0 - call $~lib/rt/pure/collectWhite - br $break|0 - end - i32.const 0 - i32.const 1248 - i32.const 101 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.tee $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $switch$1$default - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/retain-release-sanity.ts b/tests/compiler/retain-release-sanity.ts deleted file mode 100644 index 413cad7f52..0000000000 --- a/tests/compiler/retain-release-sanity.ts +++ /dev/null @@ -1,41 +0,0 @@ -{ - let arr: i32[] = new Array(3); - arr.push(123); - arr.push(123); - arr.pop(); -} -{ - let outer = new Array>(); - for (let i = 0; i < 10; ++i) { - let arr = new Array(); - for (let j = 0; j < 10; ++j) { - arr.push(""); - // outer.push(arr); - } - } -} -{ - let a = "a"; - let c = a + "b"; - c + "d"; -} - -class A { - b: B | null; -} -class B { - a: A | null; -} - -{ - let a = new A(); - let b = new B(); - a.b = b; - a.b = b; - b.a = a; - b.a = a; - a.b = b; - b.a = a; -} - -__collect(); diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat deleted file mode 100644 index 917fefc811..0000000000 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ /dev/null @@ -1,4736 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 224) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 272) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") - (data (i32.const 320) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 336) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 368) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 400) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 432) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d\00") - (data (i32.const 464) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 528) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 576) "\08\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\"\t\00\00\00\00\00\00\"A\00\00\00\00\00\00\"A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 576)) - (global $~lib/heap/__heap_base i32 (i32.const 644)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 176 - i32.const 128 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (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.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $3 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $6 - local.get $6 - i32.load - local.set $7 - local.get $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $5 - local.get $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $8 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u - if - i32.const 1 - drop - local.get $1 - local.get $8 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $8 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=8 - local.set $3 - local.get $1 - local.get $3 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $4 - local.get $1 - local.get $2 - i32.shl - local.set $5 - local.get $4 - local.get $5 - call $~lib/rt/tlsf/__realloc - local.set $6 - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $5 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $6 - local.get $4 - i32.ne - if - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.store offset=8 - end - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 288 - i32.const 80 - i32.const 300 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - call $~lib/rt/pure/__retain - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/string/String#concat (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 416 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - end - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $4 - local.get $1 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $5 - local.get $4 - local.get $5 - i32.add - local.set $6 - local.get $6 - i32.const 0 - i32.eq - if - i32.const 336 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $6 - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 - local.get $0 - local.get $4 - call $~lib/memory/memory.copy - local.get $7 - local.get $4 - i32.add - local.get $1 - local.get $5 - call $~lib/memory/memory.copy - local.get $7 - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.const 416 - local.get $0 - i32.const 0 - i32.ne - select - local.get $1 - call $~lib/string/String#concat - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $retain-release-sanity/A#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $retain-release-sanity/B#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $start:retain-release-sanity - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - i32.const 3 - call $~lib/array/Array#constructor - local.set $0 - local.get $0 - i32.const 123 - call $~lib/array/Array#push - drop - local.get $0 - i32.const 123 - call $~lib/array/Array#push - drop - local.get $0 - call $~lib/array/Array#pop - drop - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - i32.const 10 - i32.lt_s - local.set $2 - local.get $2 - if - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - i32.const 10 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - i32.const 336 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const 352 - local.set $0 - local.get $0 - i32.const 384 - call $~lib/string/String.__concat - local.tee $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - i32.const 448 - call $~lib/string/String.__concat - local.tee $3 - drop - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 0 - call $retain-release-sanity/A#constructor - local.set $3 - i32.const 0 - call $retain-release-sanity/B#constructor - local.set $2 - local.get $3 - local.tee $5 - local.get $2 - local.tee $4 - local.get $5 - i32.load - local.tee $1 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $4 - i32.store - local.get $3 - local.tee $0 - local.get $2 - local.tee $1 - local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $1 - i32.store - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $0 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $2 - local.tee $1 - local.get $3 - local.tee $0 - local.get $1 - i32.load - local.tee $4 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - i32.store - local.get $3 - local.tee $5 - local.get $2 - local.tee $4 - local.get $5 - i32.load - local.tee $1 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $4 - i32.store - local.get $2 - local.tee $0 - local.get $3 - local.tee $1 - local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $1 - i32.store - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__collect - ) - (func $~start - call $start:retain-release-sanity - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 480 - i32.const 544 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/growRoots - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.set $0 - global.get $~lib/rt/pure/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul - local.tee $2 - i32.const 64 - i32.const 2 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - local.set $4 - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $5 - i32.const 1 - drop - local.get $5 - i32.const 16 - i32.sub - call $~lib/rt/rtrace/onfree - local.get $5 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $0 - if - i32.const 1 - drop - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/rtrace/onalloc - local.get $0 - call $~lib/rt/tlsf/__free - end - local.get $5 - global.set $~lib/rt/pure/ROOTS - local.get $5 - local.get $1 - i32.add - global.set $~lib/rt/pure/CUR - local.get $5 - local.get $4 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/appendRoot (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.set $1 - local.get $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 0 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/finalize - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 - end - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - drop - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.eqz - if - local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/pure/markGray (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - local.get $0 - call $~lib/rt/pure/finalize - end - ) - (func $~lib/rt/pure/__collect - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - drop - global.get $~lib/rt/pure/ROOTS - local.set $0 - local.get $0 - local.set $1 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $6 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $6 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $5 - call $~lib/rt/pure/markGray - local.get $1 - local.get $5 - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - else - local.get $6 - i32.const 1879048192 - i32.and - i32.const 0 - i32.eq - if (result i32) - local.get $6 - i32.const 268435455 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $5 - call $~lib/rt/pure/finalize - else - local.get $5 - local.get $6 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - end - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - global.set $~lib/rt/pure/CUR - local.get $0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $1 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $3 - i32.load - call $~lib/rt/pure/scan - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $for-loop|1 - end - end - local.get $0 - local.set $3 - loop $for-loop|2 - local.get $3 - local.get $1 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $3 - i32.load - local.set $4 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/collectWhite - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $0 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 0 - drop - local.get $0 - i32.const 16 - i32.sub - local.set $2 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 - br $case5|0 - end - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - end - i32.const 1 - drop - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 79 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray - br $break|0 - end - local.get $2 - call $~lib/rt/pure/scan - br $break|0 - end - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 90 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end - br $break|0 - end - local.get $2 - call $~lib/rt/pure/collectWhite - br $break|0 - end - i32.const 1 - drop - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 101 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/retain-release.json b/tests/compiler/retain-release.json deleted file mode 100644 index bf222c4d2d..0000000000 --- a/tests/compiler/retain-release.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime none", - "--explicitStart" - ] -} \ No newline at end of file diff --git a/tests/compiler/retain-release.optimized.wat b/tests/compiler/retain-release.optimized.wat deleted file mode 100644 index d5e575aef0..0000000000 --- a/tests/compiler/retain-release.optimized.wat +++ /dev/null @@ -1,252 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r") - (data (i32.const 1056) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s") - (table $0 1 funcref) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $retain-release/REF (mut i32) (i32.const 0)) - (global $retain-release/TARGET (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "returnRef" (func $retain-release/returnRef)) - (export "receiveRef" (func $retain-release/receiveRef)) - (export "receiveRefDrop" (func $retain-release/receiveRef)) - (export "receiveRefRetain" (func $retain-release/receiveRef)) - (export "takeRef" (func $retain-release/takeRef)) - (export "provideRef" (func $retain-release/receiveRef)) - (export "takeReturnRef" (func $retain-release/takeReturnRef)) - (export "provideReceiveRef" (func $retain-release/receiveRef)) - (export "newRef" (func $retain-release/newRef)) - (export "assignGlobal" (func $retain-release/receiveRef)) - (export "assignField" (func $retain-release/assignField)) - (export "scopeBlock" (func $retain-release/receiveRef)) - (export "scopeBlockToUninitialized" (func $retain-release/receiveRef)) - (export "scopeBlockToInitialized" (func $retain-release/receiveRef)) - (export "scopeBlockToConditional" (func $retain-release/takeRef)) - (export "scopeTopLevelUninitialized" (func $retain-release/receiveRef)) - (export "scopeTopLevelInitialized" (func $retain-release/receiveRef)) - (export "scopeTopLevelConditional" (func $retain-release/takeRef)) - (export "scopeIf" (func $retain-release/takeRef)) - (export "scopeIfElse" (func $retain-release/takeRef)) - (export "scopeWhile" (func $retain-release/takeRef)) - (export "scopeDo" (func $retain-release/takeRef)) - (export "scopeFor" (func $retain-release/takeRef)) - (export "scopeForComplex" (func $retain-release/scopeForComplex)) - (export "scopeBreak" (func $retain-release/takeRef)) - (export "scopeBreakNested" (func $retain-release/takeRef)) - (export "scopeContinue" (func $retain-release/takeRef)) - (export "scopeContinueNested" (func $retain-release/takeRef)) - (export "scopeThrow" (func $retain-release/scopeThrow)) - (export "scopeUnreachable" (func $retain-release/scopeUnreachable)) - (export "callInline" (func $retain-release/receiveRef)) - (export "provideRefInline" (func $retain-release/receiveRef)) - (export "receiveRefInline" (func $retain-release/receiveRef)) - (export "receiveRefInlineDrop" (func $retain-release/receiveRef)) - (export "provideRefIndirect" (func $retain-release/provideRefIndirect)) - (export "receiveRefIndirect" (func $retain-release/receiveRefIndirect)) - (export "receiveRefIndirectDrop" (func $retain-release/receiveRefIndirect)) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $5 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $retain-release/returnRef (result i32) - global.get $retain-release/REF - ) - (func $retain-release/receiveRef - nop - ) - (func $retain-release/takeRef (param $0 i32) - nop - ) - (func $retain-release/takeReturnRef (param $0 i32) (result i32) - local.get $0 - ) - (func $retain-release/newRef - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - drop - ) - (func $retain-release/assignField - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $retain-release/TARGET - local.tee $0 - global.get $retain-release/REF - local.tee $2 - local.get $0 - i32.load - i32.ne - drop - local.get $2 - i32.store - ) - (func $retain-release/scopeForComplex (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $for-loop|0 - local.get $0 - if - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $0 - if - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - ) - (func $retain-release/scopeThrow (param $0 i32) - local.get $0 - if - i32.const 1040 - i32.const 1072 - i32.const 367 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - ) - (func $retain-release/scopeUnreachable (param $0 i32) - local.get $0 - if - unreachable - end - ) - (func $retain-release/provideRefIndirect (param $0 i32) - global.get $retain-release/REF - local.get $0 - i32.load - call_indirect (type $i32_=>_none) - ) - (func $retain-release/receiveRefIndirect (param $0 i32) - local.get $0 - i32.load - call_indirect (type $none_=>_i32) - drop - ) - (func $~start - (local $0 i32) - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - i32.const 1120 - global.set $~lib/rt/stub/offset - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - global.set $retain-release/REF - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.store - local.get $0 - global.set $retain-release/TARGET - ) -) diff --git a/tests/compiler/retain-release.ts b/tests/compiler/retain-release.ts deleted file mode 100644 index 70868e28a5..0000000000 --- a/tests/compiler/retain-release.ts +++ /dev/null @@ -1,474 +0,0 @@ -class Ref {} - -// FIXME: Comments are outdated due to various optimizations the compiler performs now. -// Instead, the tests that make sense should be moved to rc/XY - -var REF = new Ref(); - -export function returnRef(): Ref { - - // Returning a reference must retain it because it could otherwise drop to - // RC=0 before reaching the caller, for example if it was stored in a local - // with RC=1 when this local becomes released at the end of the function. See - // scope tests below. - - return /* __retain( */ REF /* ) */; -} - -export function receiveRef(): void { - - // Receiving a reference from a call must keep track of it in a temporary - // AUTORELEASE local because it has been pre-retained by the callee. This is - // required because the reference could be immediately dropped and the caller - // would otherwise not be able to release it properly. - - !/* (TEMP = */ returnRef() /* ) */; - // __release(TEMP) -} - -export function receiveRefDrop(): void { - - // A straight forward optimization here is to detect immediate drops and skip - // the temp local. - - /* __release( */ returnRef() /* ) */; -} - -export function receiveRefRetain(): void { - - // TODO: Another possible optimization is to detect that the target will - // retain on its own, skip the temp local and mark the target as AUTORELEASE, - // instead of doing: - - var a = /* __retain(TEMP = */ returnRef() /* ) */; - // __release(TEMP); - // __release(a); -} - -export function takeRef(ref: Ref): void { - - // Taking a reference as an argument must retain it while the body is - // executing because reassigning the argument could otherwise drop to RC=0, - // prematurely releasing the reference even though the caller still needs it. - // This is the same as if the caller would retain it pre-call and release it - // post-call, but from a code size perspective it makes more sense to make the - // callee handle this instead of embedding runtime calls into every single - // call. Downside is that the caller has more knowledge about the actual - // arguments, like if these must actually be retained, while the upside is - // that each function "just works" standalone. - - // __retain(ref) - // __release(ref) -} - -export function provideRef(): void { - - // Providing a reference therefore doesn't do any retains or releases but - // assumes that the callee will do this for us. The alternative of embedding - // runtime calls into the call is discussed above, and also a valid strategy - // for different reasons. It is likely that there are smart optimizations of - // this case. - - takeRef(REF); -} - -export function takeReturnRef(ref: Ref): Ref { - - // Returning a reference provided as an argument must do all of the above but - // can eliminate one set of retain/release by simply not releasing the - // reference at the end of the function and skipping the retain on return. - - // __retain(ref) - return ref; - - // What would otherwise be - // /* (T = __retain( */ ref /* )), __release(ref), T */; -} - -export function provideReceiveRef(): void { - - // Combined case of providing and receiving a reference, with no additional - // logic compared to the base cases above. - - !/* TEMP = */ takeReturnRef(REF); - // __release(TEMP) -} - -export function newRef(): void { - - // Allocating a reference must keep track of the allocation in a temporary - // AUTORELEASE local because the allocation could be dropped immediately. - // Similar to the receiveRef case, one possibile optimization here is to - // detect immediate drops. - - /* TEMP = */ new Ref(); - // __release(TEMP) -} - -var glo: Ref; - -export function assignGlobal(): void { - - // Assigning a reference to a global first retains it before releasing the - // previously stored reference. - - glo = /* __retainRelease( */ REF /* , glo) */; -} - -class Target { fld: Ref | null; } - -var TARGET = new Target(); - -export function assignField(): void { - - // Similar to the assignGlobal case, assigning a reference to a field first - // retains it before releasing the previously stored reference. - - TARGET.fld = /* __retainRelease( */ REF /* , fld) */; -} - -export function scopeBlock(): void { - - // A scoped local must retain ownership of its reference for the same reasons - // as in the takeRef case, because reassigning it could otherwise drop to RC=0 - // in a situation where the local holds a reference with RC=1, prematurely - // releasing it even if the original reference is still in use. - - { - let $0 = /* __retain( */ REF /* } */; - // __release($0) - } -} - -export function scopeBlockToUninitialized(): void { - - // Top-level variables that have not yet been initialized do not have to - // release `null` unless actually assigned a reference. Hence, such a var - // doesn't have the AUTORELEASE property initially, but immediately takes it - // as soon as it is assigned. - - var $0: Ref; // uninitialized, so no AUTORELEASE yet - { - let $1 = /* __retain( */ REF /* } */; - $0 = /* __retain( */ $1 /* ) */; - // __release($1) - } - // __release($0) -} - -export function scopeBlockToInitialized(): void { - - // Top-level variables that have been initialized must retain and release - // their reference normally like in the takeRef and scopeBlock cases, for the - // same reason of not prematurely dropping to RC=0 even though the original - // reference is still in use. - - var $0: Ref = /* __retain( */ REF /* ) */; - { - let $1 = /* __retain( */ REF /* } */; - $0 = /* __retainRelease( */ $1 /* , $0) */; - // __release($1) - } - // __release($0) -} - -export function scopeBlockToConditional(cond: bool): void { - - // Top-level variables that are uninitialized, but may become initialized - // conditionally, must even release `null` in the other case because the - // compiler doesn't know the outcome of the condition statically. - - var $0: Ref; - if (cond) { - $0 = /* __retain( */ REF /* ) */; // now AUTORELEASE - } - { - let $1 = /* __retain( */ REF /* } */; - $0 = /* __retainRelease( */ $1 /* , $0) */; - // __release($1) - } - // __release($0) -} - -export function scopeTopLevelUninitialized(): void { - - // Isolated case of an uninitialized top-level variable that is never - // initialized, and is thus never releasing `null`. - - var $0: Ref; -} - -export function scopeTopLevelInitialized(): void { - - // Isolated case of an initialized top-level variable that is never - // reassigned. One possible optimization here is to detect this case and - // eliminate the local with its retain/release altogether. Alternatively, a - // warning could be omitted to inform the user that this var is unnecessary, - // which I'd prefer because it hints the user at a portion of code that might - // contain other errors. - - var $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) -} - -export function scopeTopLevelConditional(cond: bool): void { - - // Isolated case of an uninitialized top-level variable that is conditionally - // assigned to, so that even `null` must be released at the end of the - // function because the compiler doesn't know the outcome of the condition - // statically. - - var $0: Ref; - if (cond) { - $0 = /* __retain( */ REF /* ) */; // now AUTORELEASE - } - // __release($0) -} - -export function scopeIf(cond: bool): void { - - // Validates that `if` scopes behave like blocks. - - if (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - } -} - -export function scopeIfElse(cond: bool): void { - - // Validates that `else` scopes behave like blocks. - - if (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - } else { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - } -} - -export function scopeWhile(cond: bool): void { - - // Validates that `while` scopes behave like blocks. - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - } -} - -export function scopeDo(cond: bool): void { - - // Validates that `do` scopes behave like blocks. - - do { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - } while (cond); -} - -export function scopeFor(cond: bool): void { - - // Validates that `for` scopes behave like blocks. - - for (; cond; ) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - } -} - -export function scopeForComplex(cond: bool): void { - - // Validates that complex `for` scopes behave properly - - for (let i = 0; cond; ++i) { - let $0: Ref = /* __retain( */ REF /* ) */; - for (let j = 0; cond; ++j) { - let $1: Ref = /* __retain( */ REF /* ) */; - if (cond) { - let $2: Ref = /* __retain( */ REF /* ) */; - // __release($2) - // __release($1) - continue; - } - // __release($1) - } - // __release($0) - } -} - -export function scopeBreak(cond: bool): void { - - // Validates that `break` statements terminate flows so that no further - // releases are performed afterwards. - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - break; - } -} - -export function scopeBreakNested(cond: bool): void { - - // Validates that nested `break` statements terminate flows so that no - // further releases are performed afterwards. - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - while (cond) { - let $1: Ref = /* __retain( */ REF /* ) */; - // __release($1) - // __release($0) - break; - } - // __release($0) - } -} - -export function scopeContinue(cond: bool): void { - - // Validates that `continue` statements terminate flows so that no further - // releases are performed afterwards. - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - continue; - } -} - -export function scopeContinueNested(cond: bool): void { - - // Validates that nested `continue` statements terminate flows so that no - // further releases are performed afterwards. - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - while (cond) { - let $1: Ref = /* __retain( */ REF /* ) */; - // __release($1) - // __release($0) - continue; - } - // __release($0) - } -} - -export function scopeThrow(cond: bool): void { - - // Validates that `throw` statements terminate flows so that no further - // releases are performed afterwards. - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - throw new Error("error"); - } -} - -export function scopeUnreachable(cond: bool): void { - - // Unreachable instructions are different in the sense that these are unsafe - // compiler intrinsics that guarantee to have no unexpected side-effects, - // hence don't terminate flows and result in an unreachable release after the - // instruction (i.e. after the program has crashed). - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - unreachable(); - } -} - -// @ts-ignore: decorator -@inline -function scopeInline(): void { - - // Inlined function bodies should behave like normal scopes. - - var $0 = /* __retain( */ REF /* ) */; - // __release($0) -} - -export function callInline(): void { - - // Hosts scopeInline with no own logic. - - scopeInline(); -} - -// @ts-ignore: decorator -@inline -function takeRefInline(ref: Ref): void { - - // The takeRef case but inline. Should retain and release while alive. - - // __retain(ref) - // __release(reF) -} - -export function provideRefInline(): void { - - // The provideRef case but inline. Should do nothing to the arguments while - // hosting the inlined retain and release. - - takeRefInline(REF); -} - -// @ts-ignore: decorator -@inline -function returnRefInline(): Ref { - - // The returnRef case but inline. - - return /* __retain( */ REF /* ) */; -} - -export function receiveRefInline(): void { - - // The receiveRef case but inline. - - !/* TEMP = */ returnRefInline(); - // __release(TEMP) -} - -export function receiveRefInlineDrop(): void { - - // The receiveRefDrop case but inline. - - /* __release( */ returnRefInline() /* ) */; - - // TODO: Since we have access to both the block and the surrounding code here, - // if we can prove that the last statement of the block does a retain, we can - // eliminate it together with the receiver's release. Opt pass maybe? -} - -export function provideRefIndirect(fn: (ref: Ref) => void): void { - - // An indirect call should behave just like a direct call, that is not insert - // anything when providing a reference. - - fn(REF); -} - -export function receiveRefIndirect(fn: () => Ref): void { - - // An indirect call should behave just like a direct call, that is taking care - // of release when receiving a reference. - - !/* TEMP = */ fn(); - // __release(TEMP) -} - -export function receiveRefIndirectDrop(fn: () => Ref): void { - - // An indirect call should behave just like a direct call, that is taking care - // of release when receiving a reference. - - /* __release( */ fn() /* ) */; -} - -// TODO: Optimize more immediate drops on alloc/call, like overloads, getters -// and immediately assigning to a storage target. diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat deleted file mode 100644 index aa25a055a3..0000000000 --- a/tests/compiler/retain-release.untouched.wat +++ /dev/null @@ -1,829 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r\00") - (data (i32.const 48) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $retain-release/REF (mut i32) (i32.const 0)) - (global $retain-release/glo (mut i32) (i32.const 0)) - (global $retain-release/TARGET (mut i32) (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 100)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "returnRef" (func $retain-release/returnRef)) - (export "receiveRef" (func $retain-release/receiveRef)) - (export "receiveRefDrop" (func $retain-release/receiveRefDrop)) - (export "receiveRefRetain" (func $retain-release/receiveRefRetain)) - (export "takeRef" (func $retain-release/takeRef)) - (export "provideRef" (func $retain-release/provideRef)) - (export "takeReturnRef" (func $retain-release/takeReturnRef)) - (export "provideReceiveRef" (func $retain-release/provideReceiveRef)) - (export "newRef" (func $retain-release/newRef)) - (export "assignGlobal" (func $retain-release/assignGlobal)) - (export "assignField" (func $retain-release/assignField)) - (export "scopeBlock" (func $retain-release/scopeBlock)) - (export "scopeBlockToUninitialized" (func $retain-release/scopeBlockToUninitialized)) - (export "scopeBlockToInitialized" (func $retain-release/scopeBlockToInitialized)) - (export "scopeBlockToConditional" (func $retain-release/scopeBlockToConditional)) - (export "scopeTopLevelUninitialized" (func $retain-release/scopeTopLevelUninitialized)) - (export "scopeTopLevelInitialized" (func $retain-release/scopeTopLevelInitialized)) - (export "scopeTopLevelConditional" (func $retain-release/scopeTopLevelConditional)) - (export "scopeIf" (func $retain-release/scopeIf)) - (export "scopeIfElse" (func $retain-release/scopeIfElse)) - (export "scopeWhile" (func $retain-release/scopeWhile)) - (export "scopeDo" (func $retain-release/scopeDo)) - (export "scopeFor" (func $retain-release/scopeFor)) - (export "scopeForComplex" (func $retain-release/scopeForComplex)) - (export "scopeBreak" (func $retain-release/scopeBreak)) - (export "scopeBreakNested" (func $retain-release/scopeBreakNested)) - (export "scopeContinue" (func $retain-release/scopeContinue)) - (export "scopeContinueNested" (func $retain-release/scopeContinueNested)) - (export "scopeThrow" (func $retain-release/scopeThrow)) - (export "scopeUnreachable" (func $retain-release/scopeUnreachable)) - (export "callInline" (func $retain-release/callInline)) - (export "provideRefInline" (func $retain-release/provideRefInline)) - (export "receiveRefInline" (func $retain-release/receiveRefInline)) - (export "receiveRefInlineDrop" (func $retain-release/receiveRefInlineDrop)) - (export "provideRefIndirect" (func $retain-release/provideRefIndirect)) - (export "receiveRefIndirect" (func $retain-release/receiveRefIndirect)) - (export "receiveRefIndirectDrop" (func $retain-release/receiveRefIndirectDrop)) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $retain-release/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $retain-release/Target#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $start:retain-release - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - call $retain-release/Ref#constructor - global.set $retain-release/REF - i32.const 0 - call $retain-release/Target#constructor - global.set $retain-release/TARGET - ) - (func $retain-release/returnRef (result i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $retain-release/receiveRef - (local $0 i32) - call $retain-release/returnRef - local.tee $0 - i32.eqz - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefDrop - call $retain-release/returnRef - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefRetain - (local $0 i32) - call $retain-release/returnRef - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/takeRef (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/provideRef - global.get $retain-release/REF - call $retain-release/takeRef - ) - (func $retain-release/takeReturnRef (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - ) - (func $retain-release/provideReceiveRef - (local $0 i32) - global.get $retain-release/REF - call $retain-release/takeReturnRef - local.tee $0 - i32.eqz - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/newRef - i32.const 0 - call $retain-release/Ref#constructor - call $~lib/rt/stub/__release - ) - (func $retain-release/assignGlobal - (local $0 i32) - (local $1 i32) - global.get $retain-release/REF - local.tee $0 - global.get $retain-release/glo - local.tee $1 - i32.ne - if - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - end - local.get $0 - global.set $retain-release/glo - ) - (func $retain-release/assignField - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $retain-release/TARGET - local.tee $0 - global.get $retain-release/REF - local.tee $1 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - end - local.get $1 - i32.store - ) - (func $retain-release/scopeBlock - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeBlockToUninitialized - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - local.set $0 - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - local.tee $2 - local.get $0 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeBlockToInitialized - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - local.tee $2 - local.get $0 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeBlockToConditional (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.set $1 - local.get $0 - if - global.get $retain-release/REF - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $1 - end - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - local.tee $3 - local.get $1 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - end - local.get $3 - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeTopLevelUninitialized - (local $0 i32) - i32.const 0 - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeTopLevelInitialized - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeTopLevelConditional (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - local.set $1 - local.get $0 - if - global.get $retain-release/REF - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $1 - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeIf (param $0 i32) - (local $1 i32) - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - end - ) - (func $retain-release/scopeIfElse (param $0 i32) - (local $1 i32) - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - else - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - end - ) - (func $retain-release/scopeWhile (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - call $~lib/rt/stub/__release - br $while-continue|0 - end - end - ) - (func $retain-release/scopeDo (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $do-continue|0 - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - local.set $2 - local.get $2 - br_if $do-continue|0 - end - ) - (func $retain-release/scopeFor (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $for-loop|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - call $~lib/rt/stub/__release - br $for-loop|0 - end - end - ) - (func $retain-release/scopeForComplex (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $0 - local.set $2 - local.get $2 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $0 - local.set $5 - local.get $5 - if - block $for-continue|1 - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $6 - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $7 - local.get $7 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - br $for-continue|1 - end - local.get $6 - call $~lib/rt/stub/__release - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 - end - end - local.get $3 - call $~lib/rt/stub/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - ) - (func $retain-release/scopeBreak (param $0 i32) - (local $1 i32) - (local $2 i32) - block $while-break|0 - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - call $~lib/rt/stub/__release - br $while-break|0 - end - end - end - ) - (func $retain-release/scopeBreakNested (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - block $while-break|1 - loop $while-continue|1 - local.get $0 - local.set $3 - local.get $3 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - call $~lib/rt/stub/__release - br $while-break|1 - end - end - end - local.get $2 - call $~lib/rt/stub/__release - br $while-continue|0 - end - end - ) - (func $retain-release/scopeContinue (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - call $~lib/rt/stub/__release - br $while-continue|0 - end - end - ) - (func $retain-release/scopeContinueNested (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - loop $while-continue|1 - local.get $0 - local.set $3 - local.get $3 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - call $~lib/rt/stub/__release - br $while-continue|1 - end - end - local.get $2 - call $~lib/rt/stub/__release - br $while-continue|0 - end - end - ) - (func $retain-release/scopeThrow (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - i32.const 32 - i32.const 64 - i32.const 367 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $retain-release/scopeUnreachable (param $0 i32) - (local $1 i32) - (local $2 i32) - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - unreachable - end - end - ) - (func $retain-release/callInline - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/provideRefInline - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefInline - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.tee $0 - i32.eqz - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefInlineDrop - global.get $retain-release/REF - call $~lib/rt/stub/__retain - call $~lib/rt/stub/__release - ) - (func $retain-release/provideRefIndirect (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - global.get $retain-release/REF - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.load - call_indirect (type $i32_=>_none) - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefIndirect (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.load - call_indirect (type $none_=>_i32) - local.tee $1 - i32.eqz - drop - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefIndirectDrop (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:retain-release - ) -) diff --git a/tests/compiler/retain-return.json b/tests/compiler/retain-return.json deleted file mode 100644 index 93ce9d8b22..0000000000 --- a/tests/compiler/retain-return.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half", - "--explicitStart" - ] -} \ No newline at end of file diff --git a/tests/compiler/retain-return.optimized.wat b/tests/compiler/retain-return.optimized.wat deleted file mode 100644 index 2265222389..0000000000 --- a/tests/compiler/retain-return.optimized.wat +++ /dev/null @@ -1,1167 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param 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_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\01") - (data (i32.const 1216) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\02") - (data (i32.const 1248) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\03") - (data (i32.const 1280) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\04") - (data (i32.const 1312) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\05") - (data (i32.const 1344) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\06") - (table $0 7 funcref) - (elem (i32.const 1) $retain-return/returnNew $start:retain-return~anonymous|1 $retain-return/returnGlobal $retain-return/returnNew $retain-return/returnNew $retain-return/returnGlobal) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $retain-return/ref (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1376 - local.set $1 - i32.const 1376 - i32.const 0 - i32.store - i32.const 2944 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1376 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1376 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1376 - i32.const 2960 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1376 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.tee $3 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - i32.const 16 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1368 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $retain-return/Ref#constructor (result i32) - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - call $~lib/rt/pure/__retain - ) - (func $retain-return/returnNew (result i32) - call $retain-return/Ref#constructor - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1368 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $retain-return/returnGlobal (result i32) - global.get $retain-return/ref - call $~lib/rt/pure/__retain - ) - (func $start:retain-return~anonymous|1 (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $start:retain-return - (local $0 i32) - call $retain-return/Ref#constructor - call $~lib/rt/pure/__release - call $retain-return/Ref#constructor - call $~lib/rt/pure/__release - call $retain-return/Ref#constructor - call $~lib/rt/pure/__release - call $retain-return/Ref#constructor - call $~lib/rt/pure/__release - call $retain-return/Ref#constructor - global.set $retain-return/ref - i32.const 1200 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1200 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - global.get $retain-return/ref - i32.const 1232 - i32.load - call_indirect (type $i32_=>_i32) - call $~lib/rt/pure/__release - global.get $retain-return/ref - i32.const 1232 - i32.load - call_indirect (type $i32_=>_i32) - call $~lib/rt/pure/__release - i32.const 1264 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1264 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1296 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1296 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1328 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1328 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1360 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 1360 - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - global.get $retain-return/ref - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 0 - global.set $retain-return/ref - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:retain-return - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$case$6 $switch$1$case$7 $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=20 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=20 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 1368 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) -) diff --git a/tests/compiler/retain-return.ts b/tests/compiler/retain-return.ts deleted file mode 100644 index 952c43a46b..0000000000 --- a/tests/compiler/retain-return.ts +++ /dev/null @@ -1,54 +0,0 @@ -class Ref {} - -// Normal function - -function returnNew(): Ref { - return new Ref(); // ctor retains -} -/* __release( */ returnNew() /* ) */; -/* __release( */ returnNew() /* ) */; - -function returnLocal(): Ref { - var ref = new Ref(); - return ref; // undoes autorelease -} -/* __release( */ returnLocal() /* ) */; -/* __release( */ returnLocal() /* ) */; - -var ref = new Ref(); -function returnGlobal(): Ref { - return /* __retain( */ ref /* ) */; -} -/* __release( */ returnGlobal() /* ) */; -/* __release( */ returnGlobal() /* ) */; - -// Function expression without block - -var returnNewFnExpr = (): Ref => new Ref(); // ctor retains -/* __release( */ returnNewFnExpr() /* ) */; -/* __release( */ returnNewFnExpr() /* ) */; - -var returnLocalFnExpr = (ref: Ref): Ref => ref; // undoes autorelease -/* __release( */ returnLocalFnExpr(ref) /* ) */; -/* __release( */ returnLocalFnExpr(ref) /* ) */; - -var returnGlobalFnExpr = (): Ref => /* __retain( */ ref /* ) */; -/* __release( */ returnGlobalFnExpr() /* ) */; -/* __release( */ returnGlobalFnExpr() /* ) */; - -// Function expression with block - -var returnNewFnBlock = (): Ref => { return new Ref(); }; // ctor retains -/* __release( */ returnNewFnBlock() /* ) */; -/* __release( */ returnNewFnBlock() /* ) */; - -var returnLocalFnBlock = (): Ref => { var ref = new Ref(); return ref; }; // undoes autorelease -/* __release( */ returnLocalFnBlock() /* ) */; -/* __release( */ returnLocalFnBlock() /* ) */; - -var returnGlobalFnBlock = (): Ref => { return /* __retain( */ ref /* ) */; }; -/* __release( */ returnGlobalFnBlock() /* ) */; -/* __release( */ returnGlobalFnBlock() /* ) */; - -// unleak -ref = changetype(0); diff --git a/tests/compiler/retain-return.untouched.wat b/tests/compiler/retain-return.untouched.wat deleted file mode 100644 index 60f06964d6..0000000000 --- a/tests/compiler/retain-return.untouched.wat +++ /dev/null @@ -1,1904 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (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))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 208) "\08\00\00\00\01\00\00\00\05\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 240) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 272) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 304) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") - (data (i32.const 336) "\08\00\00\00\01\00\00\00\04\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") - (table $0 7 funcref) - (elem (i32.const 1) $start:retain-return~anonymous|0 $start:retain-return~anonymous|1 $start:retain-return~anonymous|2 $start:retain-return~anonymous|3 $start:retain-return~anonymous|4 $start:retain-return~anonymous|5) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $retain-return/ref (mut i32) (i32.const 0)) - (global $retain-return/returnNewFnExpr (mut i32) (i32.const 192)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $retain-return/returnLocalFnExpr (mut i32) (i32.const 224)) - (global $retain-return/returnGlobalFnExpr (mut i32) (i32.const 256)) - (global $retain-return/returnNewFnBlock (mut i32) (i32.const 288)) - (global $retain-return/returnLocalFnBlock (mut i32) (i32.const 320)) - (global $retain-return/returnGlobalFnBlock (mut i32) (i32.const 352)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 360)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 80 - i32.const 32 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $retain-return/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $retain-return/returnNew (result i32) - i32.const 0 - call $retain-return/Ref#constructor - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $retain-return/returnLocal (result i32) - (local $0 i32) - i32.const 0 - call $retain-return/Ref#constructor - local.set $0 - local.get $0 - ) - (func $retain-return/returnGlobal (result i32) - global.get $retain-return/ref - call $~lib/rt/pure/__retain - ) - (func $start:retain-return~anonymous|0 (result i32) - i32.const 0 - call $retain-return/Ref#constructor - ) - (func $start:retain-return~anonymous|1 (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - ) - (func $start:retain-return~anonymous|2 (result i32) - global.get $retain-return/ref - call $~lib/rt/pure/__retain - ) - (func $start:retain-return~anonymous|3 (result i32) - i32.const 0 - call $retain-return/Ref#constructor - ) - (func $start:retain-return~anonymous|4 (result i32) - (local $0 i32) - i32.const 0 - call $retain-return/Ref#constructor - local.set $0 - local.get $0 - ) - (func $start:retain-return~anonymous|5 (result i32) - global.get $retain-return/ref - call $~lib/rt/pure/__retain - ) - (func $start:retain-return - (local $0 i32) - (local $1 i32) - call $retain-return/returnNew - call $~lib/rt/pure/__release - call $retain-return/returnNew - call $~lib/rt/pure/__release - call $retain-return/returnLocal - call $~lib/rt/pure/__release - call $retain-return/returnLocal - call $~lib/rt/pure/__release - i32.const 0 - call $retain-return/Ref#constructor - global.set $retain-return/ref - call $retain-return/returnGlobal - call $~lib/rt/pure/__release - call $retain-return/returnGlobal - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnNewFnExpr - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnNewFnExpr - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - global.get $retain-return/ref - i32.const 1 - global.set $~argumentsLength - global.get $retain-return/returnLocalFnExpr - i32.load - call_indirect (type $i32_=>_i32) - call $~lib/rt/pure/__release - global.get $retain-return/ref - i32.const 1 - global.set $~argumentsLength - global.get $retain-return/returnLocalFnExpr - i32.load - call_indirect (type $i32_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnGlobalFnExpr - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnGlobalFnExpr - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnNewFnBlock - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnNewFnBlock - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnLocalFnBlock - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnLocalFnBlock - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnGlobalFnBlock - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - global.set $~argumentsLength - global.get $retain-return/returnGlobalFnBlock - i32.load - call_indirect (type $none_=>_i32) - call $~lib/rt/pure/__release - i32.const 0 - local.tee $0 - global.get $retain-return/ref - local.tee $1 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $0 - global.set $retain-return/ref - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:retain-return - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 0 - drop - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/function/Function<%28%29=>retain-return/Ref>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28retain-return/Ref%29=>retain-return/Ref>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$case$6 $switch$1$case$7 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28%29=>retain-return/Ref>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28retain-return/Ref%29=>retain-return/Ref>#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/return-unreachable.debug.wat b/tests/compiler/return-unreachable.debug.wat new file mode 100644 index 0000000000..0c46f0c920 --- /dev/null +++ b/tests/compiler/return-unreachable.debug.wat @@ -0,0 +1,2624 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 512)) + (global $~lib/memory/__data_end i32 (i32.const 536)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33304)) + (global $~lib/memory/__heap_base i32 (i32.const 33304)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $1 (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $3 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 512) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "test" (func $return-unreachable/test)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $return-unreachable/test (param $a i32) (result i32) + (local $str i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 100 + call $~lib/array/Array#constructor + local.tee $str + i32.store + unreachable + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33328 + i32.const 33376 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/return-unreachable.json b/tests/compiler/return-unreachable.json new file mode 100644 index 0000000000..d269004c58 --- /dev/null +++ b/tests/compiler/return-unreachable.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--runtime", "incremental" + ] +} diff --git a/tests/compiler/return-unreachable.release.wat b/tests/compiler/return-unreachable.release.wat new file mode 100644 index 0000000000..df64ee697c --- /dev/null +++ b/tests/compiler/return-unreachable.release.wat @@ -0,0 +1,1784 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34328)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $1 (i32.const 1084) ",") + (data $1.1 (i32.const 1096) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $2 (i32.const 1132) "<") + (data $2.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $3 (i32.const 1196) "<") + (data $3.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $6 (i32.const 1324) "<") + (data $6.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $7 (i32.const 1388) ",") + (data $7.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $9 (i32.const 1468) "<") + (data $9.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 1536) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t") + (export "test" (func $return-unreachable/test)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$121 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34328 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$121 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34336 + i32.const 35908 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34336 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34328 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34328 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34328 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) + (func $return-unreachable/test (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 400 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/array/Array#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 400 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 100 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + unreachable + end + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34328 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + ) +) diff --git a/tests/compiler/return-unreachable.ts b/tests/compiler/return-unreachable.ts new file mode 100644 index 0000000000..5c513917c2 --- /dev/null +++ b/tests/compiler/return-unreachable.ts @@ -0,0 +1,6 @@ +export function test(a: i32): i32 { + let str = new Array(100); + { + return unreachable(); + } +} diff --git a/tests/compiler/return.debug.wat b/tests/compiler/return.debug.wat new file mode 100644 index 0000000000..3a0fe739ab --- /dev/null +++ b/tests/compiler/return.debug.wat @@ -0,0 +1,106 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 44)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32812)) + (global $~lib/memory/__heap_base i32 (i32.const 32812)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $start:return~anonymous|0) + (export "testVoidReturn" (func $return/testVoidReturn)) + (export "memory" (memory $0)) + (export "testVoidReturnFunction" (func $export:return/testVoidReturnFunction)) + (start $~start) + (func $return/nop + ) + (func $start:return~anonymous|0 + call $return/nop + ) + (func $return/testVoidReturnFunction (param $cond i32) (param $fn i32) + local.get $cond + if + i32.const 0 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $0) + return + end + i32.const 0 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $0) + return + ) + (func $return/testVoidReturn (param $cond i32) + local.get $cond + if + call $return/nop + return + end + call $return/nop + return + ) + (func $~start + call $start:return + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 32832 + i32.const 32880 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:return + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + i32.const 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $return/testVoidReturnFunction + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:return/testVoidReturnFunction (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $0 + local.get $1 + call $return/testVoidReturnFunction + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/return.json b/tests/compiler/return.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/return.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/return.release.wat b/tests/compiler/return.release.wat new file mode 100644 index 0000000000..4509ebf226 --- /dev/null +++ b/tests/compiler/return.release.wat @@ -0,0 +1,78 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $start:return~anonymous|0) + (export "testVoidReturn" (func $return/testVoidReturn)) + (export "memory" (memory $0)) + (export "testVoidReturnFunction" (func $export:return/testVoidReturnFunction)) + (start $~start) + (func $start:return~anonymous|0 + ) + (func $return/testVoidReturn (param $0 i32) + ) + (func $~start + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:return/testVoidReturnFunction (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/return.ts b/tests/compiler/return.ts new file mode 100644 index 0000000000..3d1818e903 --- /dev/null +++ b/tests/compiler/return.ts @@ -0,0 +1,16 @@ +function nop(): void {} + +export function testVoidReturn(cond: bool): void { + if (cond) { + return nop(); + } + return nop(); +} + +export function testVoidReturnFunction(cond: bool, fn: () => void): void { + if (cond) { + return fn(); + } + return fn(); +} +testVoidReturnFunction(true, () => nop()); diff --git a/tests/compiler/rt/alloc-large-memory.debug.wat b/tests/compiler/rt/alloc-large-memory.debug.wat new file mode 100644 index 0000000000..9d12c607e6 --- /dev/null +++ b/tests/compiler/rt/alloc-large-memory.debug.wat @@ -0,0 +1,1539 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64) (result i32))) + (type $6 (func (param i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 140)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32908)) + (global $~lib/memory/__heap_base i32 (i32.const 32908)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 96 + i32.const 32 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/memory/heap.alloc (param $size i32) (result i32) + local.get $size + call $~lib/rt/tlsf/__alloc + return + ) + (func $start:rt/alloc-large-memory + (local $i i32) + loop $while-continue|0 + memory.size + i32.const 128 + i32.ne + if + i32.const 32 + i32.const 1024 + i32.mul + call $~lib/memory/heap.alloc + drop + br $while-continue|0 + end + end + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + i32.const 32763 + i32.lt_s + if + i32.const 64 + i32.const 1024 + i32.mul + call $~lib/memory/heap.alloc + drop + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + ) + (func $~start + call $start:rt/alloc-large-memory + ) +) diff --git a/tests/compiler/rt/alloc-large-memory.json b/tests/compiler/rt/alloc-large-memory.json new file mode 100644 index 0000000000..ea57a955e1 --- /dev/null +++ b/tests/compiler/rt/alloc-large-memory.json @@ -0,0 +1,3 @@ +{ + "asc_flags": [] +} diff --git a/tests/compiler/rt/alloc-large-memory.release.wat b/tests/compiler/rt/alloc-large-memory.release.wat new file mode 100644 index 0000000000..7430833f99 --- /dev/null +++ b/tests/compiler/rt/alloc-large-memory.release.wat @@ -0,0 +1,965 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32 i64))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1056 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1056 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/memory/heap.alloc (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + memory.size + local.tee $2 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $2 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 33936 + i32.const 0 + i32.store + i32.const 35504 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + i32.const 33936 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + i32.const 16 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.const 33936 + i32.add + i32.const 0 + i32.store offset=96 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + i32.const 33936 + i32.const 35508 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 33936 + global.set $~lib/rt/tlsf/ROOT + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 1120 + i32.const 1056 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $0 + i32.const 256 + i32.ge_u + if (result i32) + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $0 + end + else + local.get $0 + end + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1056 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $2 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1056 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $2 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $3 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $2 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~start + (local $0 i32) + loop $while-continue|0 + memory.size + i32.const 128 + i32.ne + if + i32.const 32768 + call $~lib/memory/heap.alloc + br $while-continue|0 + end + end + loop $for-loop|1 + local.get $0 + i32.const 32763 + i32.lt_s + if + i32.const 65536 + call $~lib/memory/heap.alloc + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + ) +) diff --git a/tests/compiler/rt/alloc-large-memory.ts b/tests/compiler/rt/alloc-large-memory.ts new file mode 100644 index 0000000000..60af92d558 --- /dev/null +++ b/tests/compiler/rt/alloc-large-memory.ts @@ -0,0 +1,7 @@ +while (memory.size() != 128) { + heap.alloc(32 * 1024); +} + +for (let i = 0; i < 32763; i++) { + heap.alloc(64 * 1024); +} diff --git a/tests/compiler/rt/finalize.debug.wat b/tests/compiler/rt/finalize.debug.wat new file mode 100644 index 0000000000..9e9ef46519 --- /dev/null +++ b/tests/compiler/rt/finalize.debug.wat @@ -0,0 +1,2487 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $rt/finalize/expect (mut i32) (i32.const 0)) + (global $rt/finalize/ran (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 464)) + (global $~lib/memory/__data_end i32 (i32.const 488)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33256)) + (global $~lib/memory/__heap_base i32 (i32.const 33256)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s\00") + (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 464) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $rt/finalize/__finalize (param $ptr i32) + local.get $ptr + global.get $rt/finalize/expect + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $rt/finalize/ran + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 1 + drop + local.get $obj + i32.const 20 + i32.add + call $rt/finalize/__finalize + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 416 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $start:rt/finalize + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $rt/finalize/Ref#constructor + global.set $rt/finalize/expect + call $~lib/rt/itcms/__collect + global.get $rt/finalize/ran + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $rt/finalize/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:rt/finalize + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33280 + i32.const 33328 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/finalize/Ref#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/rt/finalize.json b/tests/compiler/rt/finalize.json index 93ce9d8b22..d89aa6d3b8 100644 --- a/tests/compiler/rt/finalize.json +++ b/tests/compiler/rt/finalize.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--explicitStart" + "--exportStart", "_start" ] -} \ No newline at end of file +} diff --git a/tests/compiler/rt/finalize.optimized.wat b/tests/compiler/rt/finalize.optimized.wat deleted file mode 100644 index cad0f1fc39..0000000000 --- a/tests/compiler/rt/finalize.optimized.wat +++ /dev/null @@ -1,2308 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (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_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) - (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1184) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1248) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1296) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1344) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s") - (data (i32.const 1392) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1456) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00n\00a\00l\00i\00z\00e") - (data (i32.const 1488) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1536) "\07\00\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\00\00\00\"\t") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $rt/finalize/expected (mut i32) (i32.const 0)) - (global $rt/finalize/expectedWriteIndex (mut i32) (i32.const 0)) - (global $rt/finalize/expectedReadIndex (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1596 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1152 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1152 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1600 - local.set $1 - i32.const 1600 - i32.const 0 - i32.store - i32.const 3168 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1600 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1600 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1600 - i32.const 3184 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1600 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1152 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1073741808 - i32.ge_u - if - i32.const 1200 - i32.const 1152 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1152 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 28 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1596 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1264 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1264 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 2 - i32.shr_u - ) - (func $rt/finalize/expect (param $0 i32) - (local $1 i32) - (local $2 i32) - global.get $rt/finalize/expectedWriteIndex - global.get $rt/finalize/expected - call $~lib/staticarray/StaticArray#get:length - i32.ge_s - if - i32.const 0 - i32.const 1360 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedWriteIndex - local.tee $1 - i32.const 1 - i32.add - global.set $rt/finalize/expectedWriteIndex - local.get $1 - local.tee $2 - global.get $rt/finalize/expected - local.tee $1 - call $~lib/staticarray/StaticArray#get:length - i32.ge_u - if - i32.const 1408 - i32.const 1088 - i32.const 110 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $0 - i32.store - ) - (func $start:rt/finalize - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 40 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.tee $0 - i32.const 40 - call $~lib/memory/memory.fill - local.get $0 - call $~lib/rt/pure/__retain - global.set $rt/finalize/expected - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - i32.const 0 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $0 - i32.const 0 - call $~lib/memory/memory.fill - local.get $0 - local.set $1 - local.get $0 - local.get $2 - i32.load - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $1 - i32.store - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $2 - i32.load - call $rt/finalize/expect - local.get $2 - call $rt/finalize/expect - local.get $2 - call $~lib/rt/pure/__release - global.get $rt/finalize/expectedWriteIndex - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedReadIndex - global.get $rt/finalize/expectedWriteIndex - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.store - i32.const 4 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - i32.store - local.get $2 - local.set $0 - local.get $2 - local.get $1 - i32.load - local.tee $3 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $1 - local.get $0 - i32.store - local.get $1 - local.tee $0 - local.get $2 - i32.load - local.tee $3 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $0 - i32.store - local.get $2 - call $rt/finalize/expect - local.get $1 - call $rt/finalize/expect - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__collect - global.get $rt/finalize/expectedWriteIndex - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedReadIndex - global.get $rt/finalize/expectedWriteIndex - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expected - call $rt/finalize/expect - global.get $rt/finalize/expected - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 0 - global.set $rt/finalize/expected - global.get $rt/finalize/expectedWriteIndex - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedReadIndex - global.get $rt/finalize/expectedWriteIndex - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:rt/finalize - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/pure/finalize (param $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 1472 - i32.const 1 - local.get $0 - i32.const 16 - i32.add - local.tee $1 - f64.convert_i32_u - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - global.get $rt/finalize/expectedReadIndex - local.tee $2 - i32.const 1 - i32.add - global.set $rt/finalize/expectedReadIndex - local.get $1 - global.get $rt/finalize/expected - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/pure/growRoots - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/CUR - global.get $~lib/rt/pure/ROOTS - local.tee $0 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - local.tee $1 - i32.const 256 - local.get $1 - i32.const 256 - i32.gt_u - select - local.tee $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $0 - local.get $3 - call $~lib/memory/memory.copy - local.get $0 - if - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - i32.const 16 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - if (result i32) - local.get $2 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/tlsf/freeBlock - end - local.get $1 - global.set $~lib/rt/pure/ROOTS - local.get $1 - local.get $3 - i32.add - global.set $~lib/rt/pure/CUR - local.get $1 - local.get $4 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1264 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $2 - i32.const -2147483648 - i32.and - if - local.get $0 - i32.const -2147483648 - i32.store offset=4 - else - local.get $0 - call $~lib/rt/pure/finalize - end - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1264 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 1536 - i32.load - i32.gt_u - if - i32.const 1408 - i32.const 1504 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.shl - i32.const 1540 - i32.add - i32.load - i32.const 32 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.sub - i32.const -1342177280 - i32.or - i32.store offset=4 - local.get $2 - i32.const -2147483648 - i32.and - i32.eqz - if - global.get $~lib/rt/pure/CUR - local.tee $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/rt/pure/CUR - end - else - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/pure/markGray (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - select - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - local.get $0 - call $~lib/rt/pure/finalize - end - ) - (func $~lib/rt/pure/__collect - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.tee $1 - local.tee $3 - local.set $4 - global.get $~lib/rt/pure/CUR - local.set $0 - loop $for-loop|0 - local.get $4 - local.get $0 - i32.lt_u - if - local.get $4 - i32.load - local.tee $5 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.const 0 - local.get $2 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - select - if - local.get $5 - call $~lib/rt/pure/markGray - local.get $3 - local.get $5 - i32.store - local.get $3 - i32.const 4 - i32.add - local.set $3 - else - i32.const 0 - local.get $2 - i32.const 268435455 - i32.and - i32.eqz - local.get $2 - i32.const 1879048192 - i32.and - select - if - local.get $5 - call $~lib/rt/pure/finalize - else - local.get $5 - local.get $2 - i32.const 2147483647 - i32.and - i32.store offset=4 - end - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - global.set $~lib/rt/pure/CUR - local.get $1 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/pure/scan - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - local.set $0 - loop $for-loop|2 - local.get $0 - local.get $3 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - local.get $2 - i32.load offset=4 - i32.const 2147483647 - i32.and - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/collectWhite - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|2 - end - end - local.get $1 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.const 1596 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - local.set $0 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - i32.const 1 - i32.sub - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 - end - local.get $0 - call $~lib/rt/pure/decrement - br $break|0 - end - local.get $0 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1264 - i32.const 79 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/markGray - br $break|0 - end - local.get $0 - call $~lib/rt/pure/scan - br $break|0 - end - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1264 - i32.const 90 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.const 1879048192 - i32.and - if - local.get $0 - call $~lib/rt/pure/scanBlack - end - br $break|0 - end - local.get $0 - call $~lib/rt/pure/collectWhite - br $break|0 - end - i32.const 0 - i32.const 1264 - i32.const 101 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $switch$1$default - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - return - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - return - end - unreachable - ) -) diff --git a/tests/compiler/rt/finalize.release.wat b/tests/compiler/rt/finalize.release.wat new file mode 100644 index 0000000000..5d8331afd3 --- /dev/null +++ b/tests/compiler/rt/finalize.release.wat @@ -0,0 +1,1560 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $rt/finalize/expect (mut i32) (i32.const 0)) + (global $rt/finalize/ran (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34280)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) ",") + (data $7.1 (i32.const 1384) "\02\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s") + (data $8 (i32.const 1420) "<") + (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1488) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$112 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34280 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$112 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34288 + i32.const 0 + i32.store + i32.const 35856 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34288 + i32.const 35860 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34288 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + global.get $rt/finalize/expect + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $rt/finalize/ran + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34280 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $rt/finalize/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + global.get $~started + if + return + end + i32.const 1 + global.set $~started + memory.size + i32.const 16 + i32.shl + i32.const 34280 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $__inlined_func$start:rt/finalize$1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $rt/finalize/expect + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $rt/finalize/ran + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$start:rt/finalize$1 + end + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/rt/finalize.ts b/tests/compiler/rt/finalize.ts index 2c0568d125..f57dd6bc7c 100644 --- a/tests/compiler/rt/finalize.ts +++ b/tests/compiler/rt/finalize.ts @@ -1,59 +1,13 @@ -// Add bookkeeping - -var expected = new StaticArray(10); -var expectedWriteIndex = 0; -var expectedReadIndex = 0; - -function expect(ptr: usize): void { - assert(expectedWriteIndex < expected.length); - expected[expectedWriteIndex++] = ptr; -} - -// Implement finalization hook +var expect: usize = 0; +var ran = false; // @ts-ignore @global function __finalize(ptr: usize): void { - trace("finalize", 1, ptr); - assert(ptr == unchecked(expected[expectedReadIndex++])); + assert(ptr == expect); + ran = true; } -// Simple test with locals becoming finalized immediately - -function testSimple(): void { - var a = new Array(0); - expect(changetype(a.buffer)); - expect(changetype(a)); -} -testSimple(); -assert(expectedWriteIndex == 2); -assert(expectedReadIndex == expectedWriteIndex); - -// Cyclic test with locals becoming deferred until collected - -class Foo { - bar: Bar | null; -} -class Bar { - foo: Foo | null; -} - -function testCyclic(): void { - var foo = new Foo(); - var bar = new Bar(); - foo.bar = bar; - bar.foo = foo; - expect(changetype(bar)); - expect(changetype(foo)); -} - -testCyclic(); +class Ref {} +expect = changetype(new Ref()); __collect(); -assert(expectedWriteIndex == 4); -assert(expectedReadIndex == expectedWriteIndex); - -// Unleak bookkeeping, expecting it to become finalized as well - -expect(changetype(expected)); -expected = changetype>(0); -assert(expectedWriteIndex == 5); -assert(expectedReadIndex == expectedWriteIndex); +assert(ran); diff --git a/tests/compiler/rt/finalize.untouched.wat b/tests/compiler/rt/finalize.untouched.wat deleted file mode 100644 index 5819deea71..0000000000 --- a/tests/compiler/rt/finalize.untouched.wat +++ /dev/null @@ -1,4174 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 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_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) - (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 176) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 240) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 288) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 336) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s\00") - (data (i32.const 384) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 448) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00n\00a\00l\00i\00z\00e\00") - (data (i32.const 480) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 528) "\07\00\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\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") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $rt/finalize/expected (mut i32) (i32.const 0)) - (global $rt/finalize/expectedWriteIndex (mut i32) (i32.const 0)) - (global $rt/finalize/expectedReadIndex (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 528)) - (global $~lib/heap/__heap_base i32 (i32.const 588)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 192 - i32.const 144 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/staticarray/StaticArray#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 83 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 304 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 2 - i32.shr_u - ) - (func $~lib/staticarray/StaticArray#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - call $~lib/staticarray/StaticArray#get:length - i32.ge_u - if - i32.const 400 - i32.const 80 - i32.const 110 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/staticarray/StaticArray#__uset - ) - (func $rt/finalize/expect (param $0 i32) - (local $1 i32) - global.get $rt/finalize/expectedWriteIndex - global.get $rt/finalize/expected - call $~lib/staticarray/StaticArray#get:length - i32.lt_s - i32.eqz - if - i32.const 0 - i32.const 352 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expected - global.get $rt/finalize/expectedWriteIndex - local.tee $1 - i32.const 1 - i32.add - global.set $rt/finalize/expectedWriteIndex - local.get $1 - local.get $0 - call $~lib/staticarray/StaticArray#__set - ) - (func $rt/finalize/testSimple - (local $0 i32) - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.set $0 - local.get $0 - i32.load - call $rt/finalize/expect - local.get $0 - call $rt/finalize/expect - local.get $0 - call $~lib/rt/pure/__release - ) - (func $rt/finalize/Foo#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $rt/finalize/Bar#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $rt/finalize/testCyclic - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - call $rt/finalize/Foo#constructor - local.set $0 - i32.const 0 - call $rt/finalize/Bar#constructor - local.set $1 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $3 - i32.store - local.get $1 - local.tee $4 - local.get $0 - local.tee $3 - local.get $4 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $3 - i32.store - local.get $1 - call $rt/finalize/expect - local.get $0 - call $rt/finalize/expect - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $start:rt/finalize - (local $0 i32) - (local $1 i32) - i32.const 0 - i32.const 10 - call $~lib/staticarray/StaticArray#constructor - global.set $rt/finalize/expected - call $rt/finalize/testSimple - global.get $rt/finalize/expectedWriteIndex - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 352 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedReadIndex - global.get $rt/finalize/expectedWriteIndex - i32.eq - i32.eqz - if - i32.const 0 - i32.const 352 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $rt/finalize/testCyclic - call $~lib/rt/pure/__collect - global.get $rt/finalize/expectedWriteIndex - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 352 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedReadIndex - global.get $rt/finalize/expectedWriteIndex - i32.eq - i32.eqz - if - i32.const 0 - i32.const 352 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expected - call $rt/finalize/expect - i32.const 0 - local.tee $0 - global.get $rt/finalize/expected - local.tee $1 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $0 - global.set $rt/finalize/expected - global.get $rt/finalize/expectedWriteIndex - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 352 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedReadIndex - global.get $rt/finalize/expectedWriteIndex - i32.eq - i32.eqz - if - i32.const 0 - i32.const 352 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:rt/finalize - ) - (func $~lib/staticarray/StaticArray#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $rt/finalize/__finalize (param $0 i32) - (local $1 i32) - i32.const 464 - i32.const 1 - local.get $0 - f64.convert_i32_u - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - local.get $0 - global.get $rt/finalize/expected - global.get $rt/finalize/expectedReadIndex - local.tee $1 - i32.const 1 - i32.add - global.set $rt/finalize/expectedReadIndex - local.get $1 - call $~lib/staticarray/StaticArray#__uget - i32.eq - i32.eqz - if - i32.const 0 - i32.const 352 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 0 - drop - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 1 - drop - local.get $0 - i32.const 16 - i32.add - call $rt/finalize/__finalize - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 400 - i32.const 496 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/growRoots - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.set $0 - global.get $~lib/rt/pure/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul - local.tee $2 - i32.const 64 - i32.const 2 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - local.set $4 - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $5 - i32.const 0 - drop - local.get $5 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $0 - if - i32.const 0 - drop - local.get $0 - call $~lib/rt/tlsf/__free - end - local.get $5 - global.set $~lib/rt/pure/ROOTS - local.get $5 - local.get $1 - i32.add - global.set $~lib/rt/pure/CUR - local.get $5 - local.get $4 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/appendRoot (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.set $1 - local.get $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 0 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/finalize - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 - end - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - drop - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 32 - i32.and - i32.eqz - if - local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/pure/markGray (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - local.get $0 - call $~lib/rt/pure/finalize - end - ) - (func $~lib/rt/pure/__collect - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - drop - global.get $~lib/rt/pure/ROOTS - local.set $0 - local.get $0 - local.set $1 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $6 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $6 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $5 - call $~lib/rt/pure/markGray - local.get $1 - local.get $5 - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - else - local.get $6 - i32.const 1879048192 - i32.and - i32.const 0 - i32.eq - if (result i32) - local.get $6 - i32.const 268435455 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $5 - call $~lib/rt/pure/finalize - else - local.get $5 - local.get $6 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - end - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - global.set $~lib/rt/pure/CUR - local.get $0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $1 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $3 - i32.load - call $~lib/rt/pure/scan - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $for-loop|1 - end - end - local.get $0 - local.set $3 - loop $for-loop|2 - local.get $3 - local.get $1 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $3 - i32.load - local.set $4 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/collectWhite - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $0 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 0 - drop - local.get $0 - i32.const 16 - i32.sub - local.set $2 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 - br $case5|0 - end - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - end - i32.const 1 - drop - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 79 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray - br $break|0 - end - local.get $2 - call $~lib/rt/pure/scan - br $break|0 - end - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 90 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end - br $break|0 - end - local.get $2 - call $~lib/rt/pure/collectWhite - br $break|0 - end - i32.const 1 - drop - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 101 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $~lib/staticarray/StaticArray#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/rt/flags.debug.wat b/tests/compiler/rt/flags.debug.wat new file mode 100644 index 0000000000..7a20ca9635 --- /dev/null +++ b/tests/compiler/rt/flags.debug.wat @@ -0,0 +1,1104 @@ +(module + (type $0 (func (param i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $rt/flags/VALUE_ALIGN_REF i32 (i32.const 256)) + (global $rt/flags/KEY_ALIGN_REF i32 (i32.const 131072)) + (global $~lib/rt/__rtti_base i32 (i32.const 176)) + (global $~lib/memory/__data_end i32 (i32.const 392)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33160)) + (global $~lib/memory/__heap_base i32 (i32.const 33160)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "5\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00B\08\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\t\00\00\02\01\00\00\02\n\00\00\02\02\00\00\02\19\00\00\02\1a\00\00\02\04\00\00 \00\00\00\02A\00\00\02a\00\00H\08\00\00H\00\00\00\88\08\00\00\88\00\00\00\08\t\00\00\08\01\00\00\08\n\00\00\08\02\00\00\08\19\00\00\08\1a\00\00\08\04\00\00\08A\00\00\08a\00\00P\08\08\00\90\08\14\00\10\t\12\00\10\n\11\00\10\84\10\00P\08\82\00P\08\c2\00\10\c1\10\00\10\e1\10\00\10a\c2\00\10\t2\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $rt/flags/test<~lib/typedarray/Int8Array> (param $flags i32) + i32.const 4 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/typedarray/Uint8Array> (param $flags i32) + i32.const 5 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/typedarray/Uint8ClampedArray> (param $flags i32) + i32.const 6 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/typedarray/Int16Array> (param $flags i32) + i32.const 7 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/typedarray/Uint16Array> (param $flags i32) + i32.const 8 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/typedarray/Int32Array> (param $flags i32) + i32.const 9 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/typedarray/Uint32Array> (param $flags i32) + i32.const 10 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/typedarray/Int64Array> (param $flags i32) + i32.const 11 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/typedarray/Uint64Array> (param $flags i32) + i32.const 12 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/typedarray/Float32Array> (param $flags i32) + i32.const 13 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/typedarray/Float64Array> (param $flags i32) + i32.const 14 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 15 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 16 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 17 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 18 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 19 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 20 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 21 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 22 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 23 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 24 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 25 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 27 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/array/Array> (param $flags i32) + i32.const 28 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 29 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 30 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 31 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 32 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 33 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 34 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 35 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 36 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 37 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 38 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 39 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 40 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/flags/test<~lib/set/Set> (param $flags i32) + i32.const 41 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 42 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 43 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 44 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 45 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 46 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 47 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 48 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 49 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 50 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 51 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $"rt/flags/test<~lib/map/Map>" (param $flags i32) + i32.const 52 + call $~lib/rt/__typeinfo + local.get $flags + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:rt/flags + i32.const 1 + i32.const 64 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/typedarray/Int8Array> + i32.const 1 + i32.const 64 + i32.or + call $rt/flags/test<~lib/typedarray/Uint8Array> + i32.const 1 + i32.const 64 + i32.or + call $rt/flags/test<~lib/typedarray/Uint8ClampedArray> + i32.const 1 + i32.const 128 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/typedarray/Int16Array> + i32.const 1 + i32.const 128 + i32.or + call $rt/flags/test<~lib/typedarray/Uint16Array> + i32.const 1 + i32.const 256 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/typedarray/Int32Array> + i32.const 1 + i32.const 256 + i32.or + call $rt/flags/test<~lib/typedarray/Uint32Array> + i32.const 1 + i32.const 512 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/typedarray/Int64Array> + i32.const 1 + i32.const 512 + i32.or + call $rt/flags/test<~lib/typedarray/Uint64Array> + i32.const 1 + i32.const 256 + i32.or + i32.const 2048 + i32.or + i32.const 4096 + i32.or + call $rt/flags/test<~lib/typedarray/Float32Array> + i32.const 1 + i32.const 512 + i32.or + i32.const 2048 + i32.or + i32.const 4096 + i32.or + call $rt/flags/test<~lib/typedarray/Float64Array> + i32.const 2 + i32.const 64 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 64 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 128 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 128 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 256 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 256 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 512 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 512 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 256 + i32.or + i32.const 2048 + i32.or + i32.const 4096 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 512 + i32.or + i32.const 2048 + i32.or + i32.const 4096 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + i32.const 1024 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + global.get $rt/flags/VALUE_ALIGN_REF + i32.or + i32.const 16384 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 2 + global.get $rt/flags/VALUE_ALIGN_REF + i32.or + i32.const 8192 + i32.or + i32.const 16384 + i32.or + call $rt/flags/test<~lib/array/Array> + i32.const 8 + i32.const 64 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/set/Set> + i32.const 8 + i32.const 64 + i32.or + call $rt/flags/test<~lib/set/Set> + i32.const 8 + i32.const 128 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/set/Set> + i32.const 8 + i32.const 128 + i32.or + call $rt/flags/test<~lib/set/Set> + i32.const 8 + i32.const 256 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/set/Set> + i32.const 8 + i32.const 256 + i32.or + call $rt/flags/test<~lib/set/Set> + i32.const 8 + i32.const 512 + i32.or + i32.const 2048 + i32.or + call $rt/flags/test<~lib/set/Set> + i32.const 8 + i32.const 512 + i32.or + call $rt/flags/test<~lib/set/Set> + i32.const 8 + i32.const 256 + i32.or + i32.const 2048 + i32.or + i32.const 4096 + i32.or + call $rt/flags/test<~lib/set/Set> + i32.const 8 + i32.const 512 + i32.or + i32.const 2048 + i32.or + i32.const 4096 + i32.or + call $rt/flags/test<~lib/set/Set> + i32.const 8 + i32.const 1024 + i32.or + call $rt/flags/test<~lib/set/Set> + i32.const 8 + global.get $rt/flags/VALUE_ALIGN_REF + i32.or + i32.const 16384 + i32.or + call $rt/flags/test<~lib/set/Set> + i32.const 8 + global.get $rt/flags/VALUE_ALIGN_REF + i32.or + i32.const 8192 + i32.or + i32.const 16384 + i32.or + call $rt/flags/test<~lib/set/Set> + i32.const 16 + i32.const 524288 + i32.or + i32.const 64 + i32.or + i32.const 2048 + i32.or + call $"rt/flags/test<~lib/map/Map>" + i32.const 16 + i32.const 262144 + i32.or + i32.const 1048576 + i32.or + i32.const 128 + i32.or + i32.const 2048 + i32.or + call $"rt/flags/test<~lib/map/Map>" + i32.const 16 + i32.const 131072 + i32.or + i32.const 1048576 + i32.or + i32.const 256 + i32.or + i32.const 2048 + i32.or + call $"rt/flags/test<~lib/map/Map>" + i32.const 16 + i32.const 65536 + i32.or + i32.const 1048576 + i32.or + i32.const 512 + i32.or + i32.const 2048 + i32.or + call $"rt/flags/test<~lib/map/Map>" + i32.const 16 + i32.const 32768 + i32.or + i32.const 1048576 + i32.or + i32.const 1024 + i32.or + call $"rt/flags/test<~lib/map/Map>" + i32.const 16 + global.get $rt/flags/KEY_ALIGN_REF + i32.or + i32.const 8388608 + i32.or + i32.const 64 + i32.or + i32.const 2048 + i32.or + call $"rt/flags/test<~lib/map/Map>" + i32.const 16 + global.get $rt/flags/KEY_ALIGN_REF + i32.or + i32.const 4194304 + i32.or + i32.const 8388608 + i32.or + i32.const 64 + i32.or + i32.const 2048 + i32.or + call $"rt/flags/test<~lib/map/Map>" + i32.const 16 + i32.const 32768 + i32.or + i32.const 1048576 + i32.or + i32.const 16384 + i32.or + global.get $rt/flags/VALUE_ALIGN_REF + i32.or + call $"rt/flags/test<~lib/map/Map>" + i32.const 16 + i32.const 32768 + i32.or + i32.const 1048576 + i32.or + i32.const 8192 + i32.or + i32.const 16384 + i32.or + global.get $rt/flags/VALUE_ALIGN_REF + i32.or + call $"rt/flags/test<~lib/map/Map>" + i32.const 16 + i32.const 4194304 + i32.or + i32.const 8388608 + i32.or + global.get $rt/flags/KEY_ALIGN_REF + i32.or + i32.const 8192 + i32.or + i32.const 16384 + i32.or + global.get $rt/flags/VALUE_ALIGN_REF + i32.or + call $"rt/flags/test<~lib/map/Map>" + i32.const 16 + i32.const 131072 + i32.or + i32.const 1048576 + i32.or + i32.const 2097152 + i32.or + i32.const 256 + i32.or + i32.const 2048 + i32.or + call $"rt/flags/test<~lib/map/Map>" + ) + (func $~start + call $start:rt/flags + ) +) diff --git a/tests/compiler/rt/flags.json b/tests/compiler/rt/flags.json index 97694deda8..1bdd02b1be 100644 --- a/tests/compiler/rt/flags.json +++ b/tests/compiler/rt/flags.json @@ -1,8 +1,4 @@ { - "features": [ - "simd" - ], "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/rt/flags.optimized.wat b/tests/compiler/rt/flags.optimized.wat deleted file mode 100644 index 07ad9d95be..0000000000 --- a/tests/compiler/rt/flags.optimized.wat +++ /dev/null @@ -1,334 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1088) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 1136) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s") - (data (i32.const 1184) "D\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00a\08\00\00\02\00\00\00a\00\00\00\02\00\00\00a\00\00\00\02\00\00\00\a1\08\00\00\02\00\00\00\a1\00\00\00\02\00\00\00!\t\00\00\02\00\00\00!\01\00\00\02\00\00\00!\n\00\00\02\00\00\00!\02\00\00\02\00\00\00!\19\00\00\02\00\00\00!\1a\00\00\02\00\00\00b\08\00\00\00\00\00\00b\00\00\00\00\00\00\00\a2\08\00\00\00\00\00\00\a2\00\00\00\00\00\00\00\"\t\00\00\00\00\00\00\"\01\00\00\00\00\00\00\"\n\00\00\00\00\00\00\"\02\00\00\00\00\00\00\"\19\00\00\00\00\00\00\"\1a\00\00\00\00\00\00\"\04\00\00\00\00\00\00 \00\00\00\00\00\00\00\"A\00\00\00\00\00\00\"a\00\00\00\00\00\00h\08\00\00\00\00\00\00h\00\00\00\00\00\00\00\a8\08\00\00\00\00\00\00\a8\00\00\00\00\00\00\00(\t\00\00\00\00\00\00(\01\00\00\00\00\00\00(\n\00\00\00\00\00\00(\02\00\00\00\00\00\00(\19\00\00\00\00\00\00(\1a\00\00\00\00\00\00(\04\00\00\00\00\00\00(A\00\00\00\00\00\00(a\00\00\00\00\00\00p\08\08\00\00\00\00\00\b0\08\14\00\00\00\00\000\t\12\00\00\00\00\000\n\11\00\00\00\00\000\84\10\00\00\00\00\00p\08\82\00\00\00\00\00p\08\c2\00\00\00\00\000\c1\10\00\00\00\00\000\e1\10\00\00\00\00\000a\c2\00\00\00\00\000\t2\00\00\00\00\00 ") - (data (i32.const 1644) "\02A\00\00\00\00\00\00 ") - (data (i32.const 1668) "\08A\00\00\00\00\00\00 ") - (data (i32.const 1692) "\10\t\82") - (data (i32.const 1708) "\10A\12\00\00\00\00\00 \00\00\00\00\00\00\00 ") - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - local.get $0 - i32.const 1184 - i32.load - i32.gt_u - if - i32.const 1040 - i32.const 1104 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1188 - i32.add - i32.load - ) - (func $start:rt/flags - block $folding-inner0 - i32.const 3 - call $~lib/rt/__typeinfo - i32.const 2145 - i32.ne - br_if $folding-inner0 - i32.const 4 - call $~lib/rt/__typeinfo - i32.const 97 - i32.ne - br_if $folding-inner0 - i32.const 5 - call $~lib/rt/__typeinfo - i32.const 97 - i32.ne - br_if $folding-inner0 - i32.const 6 - call $~lib/rt/__typeinfo - i32.const 2209 - i32.ne - br_if $folding-inner0 - i32.const 7 - call $~lib/rt/__typeinfo - i32.const 161 - i32.ne - br_if $folding-inner0 - i32.const 8 - call $~lib/rt/__typeinfo - i32.const 2337 - i32.ne - br_if $folding-inner0 - i32.const 9 - call $~lib/rt/__typeinfo - i32.const 289 - i32.ne - br_if $folding-inner0 - i32.const 10 - call $~lib/rt/__typeinfo - i32.const 2593 - i32.ne - br_if $folding-inner0 - i32.const 11 - call $~lib/rt/__typeinfo - i32.const 545 - i32.ne - br_if $folding-inner0 - i32.const 12 - call $~lib/rt/__typeinfo - i32.const 6433 - i32.ne - br_if $folding-inner0 - i32.const 13 - call $~lib/rt/__typeinfo - i32.const 6689 - i32.ne - br_if $folding-inner0 - i32.const 14 - call $~lib/rt/__typeinfo - i32.const 2146 - i32.ne - br_if $folding-inner0 - i32.const 15 - call $~lib/rt/__typeinfo - i32.const 98 - i32.ne - br_if $folding-inner0 - i32.const 16 - call $~lib/rt/__typeinfo - i32.const 2210 - i32.ne - br_if $folding-inner0 - i32.const 17 - call $~lib/rt/__typeinfo - i32.const 162 - i32.ne - br_if $folding-inner0 - i32.const 18 - call $~lib/rt/__typeinfo - i32.const 2338 - i32.ne - br_if $folding-inner0 - i32.const 19 - call $~lib/rt/__typeinfo - i32.const 290 - i32.ne - br_if $folding-inner0 - i32.const 20 - call $~lib/rt/__typeinfo - i32.const 2594 - i32.ne - br_if $folding-inner0 - i32.const 21 - call $~lib/rt/__typeinfo - i32.const 546 - i32.ne - br_if $folding-inner0 - i32.const 22 - call $~lib/rt/__typeinfo - i32.const 6434 - i32.ne - br_if $folding-inner0 - i32.const 23 - call $~lib/rt/__typeinfo - i32.const 6690 - i32.ne - br_if $folding-inner0 - i32.const 24 - call $~lib/rt/__typeinfo - i32.const 1058 - i32.ne - br_if $folding-inner0 - i32.const 26 - call $~lib/rt/__typeinfo - i32.const 16674 - i32.ne - br_if $folding-inner0 - i32.const 27 - call $~lib/rt/__typeinfo - i32.const 24866 - i32.ne - br_if $folding-inner0 - i32.const 28 - call $~lib/rt/__typeinfo - i32.const 2152 - i32.ne - br_if $folding-inner0 - i32.const 29 - call $~lib/rt/__typeinfo - i32.const 104 - i32.ne - br_if $folding-inner0 - i32.const 30 - call $~lib/rt/__typeinfo - i32.const 2216 - i32.ne - br_if $folding-inner0 - i32.const 31 - call $~lib/rt/__typeinfo - i32.const 168 - i32.ne - br_if $folding-inner0 - i32.const 32 - call $~lib/rt/__typeinfo - i32.const 2344 - i32.ne - br_if $folding-inner0 - i32.const 33 - call $~lib/rt/__typeinfo - i32.const 296 - i32.ne - br_if $folding-inner0 - i32.const 34 - call $~lib/rt/__typeinfo - i32.const 2600 - i32.ne - br_if $folding-inner0 - i32.const 35 - call $~lib/rt/__typeinfo - i32.const 552 - i32.ne - br_if $folding-inner0 - i32.const 36 - call $~lib/rt/__typeinfo - i32.const 6440 - i32.ne - br_if $folding-inner0 - i32.const 37 - call $~lib/rt/__typeinfo - i32.const 6696 - i32.ne - br_if $folding-inner0 - i32.const 38 - call $~lib/rt/__typeinfo - i32.const 1064 - i32.ne - br_if $folding-inner0 - i32.const 39 - call $~lib/rt/__typeinfo - i32.const 16680 - i32.ne - br_if $folding-inner0 - i32.const 40 - call $~lib/rt/__typeinfo - i32.const 24872 - i32.ne - br_if $folding-inner0 - i32.const 41 - call $~lib/rt/__typeinfo - i32.const 526448 - i32.ne - br_if $folding-inner0 - i32.const 42 - call $~lib/rt/__typeinfo - i32.const 1312944 - i32.ne - br_if $folding-inner0 - i32.const 43 - call $~lib/rt/__typeinfo - i32.const 1182000 - i32.ne - br_if $folding-inner0 - i32.const 44 - call $~lib/rt/__typeinfo - i32.const 1116720 - i32.ne - br_if $folding-inner0 - i32.const 45 - call $~lib/rt/__typeinfo - i32.const 1082416 - i32.ne - br_if $folding-inner0 - i32.const 46 - call $~lib/rt/__typeinfo - i32.const 8521840 - i32.ne - br_if $folding-inner0 - i32.const 47 - call $~lib/rt/__typeinfo - i32.const 12716144 - i32.ne - br_if $folding-inner0 - i32.const 48 - call $~lib/rt/__typeinfo - i32.const 1098032 - i32.ne - br_if $folding-inner0 - i32.const 49 - call $~lib/rt/__typeinfo - i32.const 1106224 - i32.ne - br_if $folding-inner0 - i32.const 50 - call $~lib/rt/__typeinfo - i32.const 12738864 - i32.ne - br_if $folding-inner0 - i32.const 51 - call $~lib/rt/__typeinfo - i32.const 3279152 - i32.ne - br_if $folding-inner0 - i32.const 52 - call $~lib/rt/__typeinfo - i32.const 32 - i32.ne - br_if $folding-inner0 - i32.const 53 - call $~lib/rt/__typeinfo - br_if $folding-inner0 - i32.const 54 - call $~lib/rt/__typeinfo - br_if $folding-inner0 - i32.const 56 - call $~lib/rt/__typeinfo - br_if $folding-inner0 - i32.const 58 - call $~lib/rt/__typeinfo - i32.const 32 - i32.ne - br_if $folding-inner0 - i32.const 59 - call $~lib/rt/__typeinfo - br_if $folding-inner0 - i32.const 61 - call $~lib/rt/__typeinfo - i32.const 32 - i32.ne - br_if $folding-inner0 - i32.const 62 - call $~lib/rt/__typeinfo - br_if $folding-inner0 - i32.const 64 - call $~lib/rt/__typeinfo - br_if $folding-inner0 - i32.const 66 - call $~lib/rt/__typeinfo - i32.const 32 - i32.ne - br_if $folding-inner0 - i32.const 67 - call $~lib/rt/__typeinfo - i32.const 32 - i32.ne - br_if $folding-inner0 - return - end - i32.const 0 - i32.const 1152 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - ) - (func $~start - call $start:rt/flags - ) -) diff --git a/tests/compiler/rt/flags.release.wat b/tests/compiler/rt/flags.release.wat new file mode 100644 index 0000000000..c0b2f9cf66 --- /dev/null +++ b/tests/compiler/rt/flags.release.wat @@ -0,0 +1,290 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $1 (i32.const 1100) ",") + (data $1.1 (i32.const 1112) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $2 (i32.const 1148) ",") + (data $2.1 (i32.const 1160) "\02\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s") + (data $3 (i32.const 1200) "5\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00B\08\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\t\00\00\02\01\00\00\02\n\00\00\02\02\00\00\02\19\00\00\02\1a\00\00\02\04\00\00 \00\00\00\02A\00\00\02a\00\00H\08\00\00H\00\00\00\88\08\00\00\88\00\00\00\08\t\00\00\08\01\00\00\08\n\00\00\08\02\00\00\08\19\00\00\08\1a\00\00\08\04\00\00\08A\00\00\08a\00\00P\08\08\00\90\08\14\00\10\t\12\00\10\n\11\00\10\84\10\00P\08\82\00P\08\c2\00\10\c1\10\00\10\e1\10\00\10a\c2\00\10\t2") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) + local.get $0 + i32.const 1200 + i32.load + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1204 + i32.add + i32.load + ) + (func $start:rt/flags + block $folding-inner0 + i32.const 4 + call $~lib/rt/__typeinfo + i32.const 2113 + i32.ne + br_if $folding-inner0 + i32.const 5 + call $~lib/rt/__typeinfo + i32.const 65 + i32.ne + br_if $folding-inner0 + i32.const 6 + call $~lib/rt/__typeinfo + i32.const 65 + i32.ne + br_if $folding-inner0 + i32.const 7 + call $~lib/rt/__typeinfo + i32.const 2177 + i32.ne + br_if $folding-inner0 + i32.const 8 + call $~lib/rt/__typeinfo + i32.const 129 + i32.ne + br_if $folding-inner0 + i32.const 9 + call $~lib/rt/__typeinfo + i32.const 2305 + i32.ne + br_if $folding-inner0 + i32.const 10 + call $~lib/rt/__typeinfo + i32.const 257 + i32.ne + br_if $folding-inner0 + i32.const 11 + call $~lib/rt/__typeinfo + i32.const 2561 + i32.ne + br_if $folding-inner0 + i32.const 12 + call $~lib/rt/__typeinfo + i32.const 513 + i32.ne + br_if $folding-inner0 + i32.const 13 + call $~lib/rt/__typeinfo + i32.const 6401 + i32.ne + br_if $folding-inner0 + i32.const 14 + call $~lib/rt/__typeinfo + i32.const 6657 + i32.ne + br_if $folding-inner0 + i32.const 15 + call $~lib/rt/__typeinfo + i32.const 2114 + i32.ne + br_if $folding-inner0 + i32.const 16 + call $~lib/rt/__typeinfo + i32.const 66 + i32.ne + br_if $folding-inner0 + i32.const 17 + call $~lib/rt/__typeinfo + i32.const 2178 + i32.ne + br_if $folding-inner0 + i32.const 18 + call $~lib/rt/__typeinfo + i32.const 130 + i32.ne + br_if $folding-inner0 + i32.const 19 + call $~lib/rt/__typeinfo + i32.const 2306 + i32.ne + br_if $folding-inner0 + i32.const 20 + call $~lib/rt/__typeinfo + i32.const 258 + i32.ne + br_if $folding-inner0 + i32.const 21 + call $~lib/rt/__typeinfo + i32.const 2562 + i32.ne + br_if $folding-inner0 + i32.const 22 + call $~lib/rt/__typeinfo + i32.const 514 + i32.ne + br_if $folding-inner0 + i32.const 23 + call $~lib/rt/__typeinfo + i32.const 6402 + i32.ne + br_if $folding-inner0 + i32.const 24 + call $~lib/rt/__typeinfo + i32.const 6658 + i32.ne + br_if $folding-inner0 + i32.const 25 + call $~lib/rt/__typeinfo + i32.const 1026 + i32.ne + br_if $folding-inner0 + i32.const 27 + call $~lib/rt/__typeinfo + i32.const 16642 + i32.ne + br_if $folding-inner0 + i32.const 28 + call $~lib/rt/__typeinfo + i32.const 24834 + i32.ne + br_if $folding-inner0 + i32.const 29 + call $~lib/rt/__typeinfo + i32.const 2120 + i32.ne + br_if $folding-inner0 + i32.const 30 + call $~lib/rt/__typeinfo + i32.const 72 + i32.ne + br_if $folding-inner0 + i32.const 31 + call $~lib/rt/__typeinfo + i32.const 2184 + i32.ne + br_if $folding-inner0 + i32.const 32 + call $~lib/rt/__typeinfo + i32.const 136 + i32.ne + br_if $folding-inner0 + i32.const 33 + call $~lib/rt/__typeinfo + i32.const 2312 + i32.ne + br_if $folding-inner0 + i32.const 34 + call $~lib/rt/__typeinfo + i32.const 264 + i32.ne + br_if $folding-inner0 + i32.const 35 + call $~lib/rt/__typeinfo + i32.const 2568 + i32.ne + br_if $folding-inner0 + i32.const 36 + call $~lib/rt/__typeinfo + i32.const 520 + i32.ne + br_if $folding-inner0 + i32.const 37 + call $~lib/rt/__typeinfo + i32.const 6408 + i32.ne + br_if $folding-inner0 + i32.const 38 + call $~lib/rt/__typeinfo + i32.const 6664 + i32.ne + br_if $folding-inner0 + i32.const 39 + call $~lib/rt/__typeinfo + i32.const 1032 + i32.ne + br_if $folding-inner0 + i32.const 40 + call $~lib/rt/__typeinfo + i32.const 16648 + i32.ne + br_if $folding-inner0 + i32.const 41 + call $~lib/rt/__typeinfo + i32.const 24840 + i32.ne + br_if $folding-inner0 + i32.const 42 + call $~lib/rt/__typeinfo + i32.const 526416 + i32.ne + br_if $folding-inner0 + i32.const 43 + call $~lib/rt/__typeinfo + i32.const 1312912 + i32.ne + br_if $folding-inner0 + i32.const 44 + call $~lib/rt/__typeinfo + i32.const 1181968 + i32.ne + br_if $folding-inner0 + i32.const 45 + call $~lib/rt/__typeinfo + i32.const 1116688 + i32.ne + br_if $folding-inner0 + i32.const 46 + call $~lib/rt/__typeinfo + i32.const 1082384 + i32.ne + br_if $folding-inner0 + i32.const 47 + call $~lib/rt/__typeinfo + i32.const 8521808 + i32.ne + br_if $folding-inner0 + i32.const 48 + call $~lib/rt/__typeinfo + i32.const 12716112 + i32.ne + br_if $folding-inner0 + i32.const 49 + call $~lib/rt/__typeinfo + i32.const 1098000 + i32.ne + br_if $folding-inner0 + i32.const 50 + call $~lib/rt/__typeinfo + i32.const 1106192 + i32.ne + br_if $folding-inner0 + i32.const 51 + call $~lib/rt/__typeinfo + i32.const 12738832 + i32.ne + br_if $folding-inner0 + i32.const 52 + call $~lib/rt/__typeinfo + i32.const 3279120 + i32.ne + br_if $folding-inner0 + return + end + i32.const 0 + i32.const 1168 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:rt/flags + ) +) diff --git a/tests/compiler/rt/flags.ts b/tests/compiler/rt/flags.ts index 9777acf83d..526c2ddb69 100644 --- a/tests/compiler/rt/flags.ts +++ b/tests/compiler/rt/flags.ts @@ -12,136 +12,59 @@ function test(flags: TypeinfoFlags): void { // structure flags -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_0); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_0); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_1); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_2); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_3); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); class Ref {} const VALUE_ALIGN_REF = sizeof() == 4 ? TypeinfoFlags.VALUE_ALIGN_2 : TypeinfoFlags.VALUE_ALIGN_3; const KEY_ALIGN_REF = sizeof() == 4 ? TypeinfoFlags.KEY_ALIGN_2 : TypeinfoFlags.KEY_ALIGN_3; -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_4); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_MANAGED); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED); - -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_4); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_MANAGED); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED); - -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_4 | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_3 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_2 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_1 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_0 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_4); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | KEY_ALIGN_REF | TypeinfoFlags.KEY_MANAGED | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC |KEY_ALIGN_REF | TypeinfoFlags.KEY_NULLABLE | TypeinfoFlags.KEY_MANAGED | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_0 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_MANAGED | VALUE_ALIGN_REF); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_0 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED | VALUE_ALIGN_REF); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_NULLABLE | TypeinfoFlags.KEY_MANAGED | KEY_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED | VALUE_ALIGN_REF); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_2 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.KEY_FLOAT | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); - -// cycle detection - -class NoCycle { - a: i32; -} - -test(TypeinfoFlags.ACYCLIC); - -class DirectCycle { - a: DirectCycle; -} - -test(TypeinfoFlags.NONE); - -class IndirectCycle { - a: IndirectCycleBack; -} -class IndirectCycleBack { - a: IndirectCycle; -} - -test(TypeinfoFlags.NONE); - -// array - -class IndirectCycleArray { - a: Array; -} - -test(TypeinfoFlags.NONE); - -class InnerCycleArray { - a: IndirectCycleArray; -} - -test(TypeinfoFlags.ACYCLIC); - -// set - -class IndirectCycleSet { - a: Set; -} - -test(TypeinfoFlags.NONE); - -class InnerCycleSet { - a: IndirectCycleSet; -} - -test(TypeinfoFlags.ACYCLIC); - -// map - -class IndirectCycleMapKey { - a: Map; -} - -test(TypeinfoFlags.NONE); - -class IndirectCycleMapValue { - a: Map; -} - -test(TypeinfoFlags.NONE); - -class InnerCycleMapKey { - a: IndirectCycleMapKey; -} - -test(TypeinfoFlags.ACYCLIC); - -class InnerCycleMapValue { - a: IndirectCycleMapValue; -} - -test(TypeinfoFlags.ACYCLIC); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_0); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_1); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_2); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_3); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_4); +test>(TypeinfoFlags.ARRAY | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_MANAGED); +test>(TypeinfoFlags.ARRAY | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED); + +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_0); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_1); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_2); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_3); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_4); +test>(TypeinfoFlags.SET | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_MANAGED); +test>(TypeinfoFlags.SET | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED); + +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_4 | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_3 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_2 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_1 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_0 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_4); +test>(TypeinfoFlags.MAP | KEY_ALIGN_REF | TypeinfoFlags.KEY_MANAGED | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.MAP | KEY_ALIGN_REF | TypeinfoFlags.KEY_NULLABLE | TypeinfoFlags.KEY_MANAGED | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_0 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_MANAGED | VALUE_ALIGN_REF); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_0 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED | VALUE_ALIGN_REF); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_NULLABLE | TypeinfoFlags.KEY_MANAGED | KEY_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED | VALUE_ALIGN_REF); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_2 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.KEY_FLOAT | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); diff --git a/tests/compiler/rt/flags.untouched.wat b/tests/compiler/rt/flags.untouched.wat deleted file mode 100644 index a908854c26..0000000000 --- a/tests/compiler/rt/flags.untouched.wat +++ /dev/null @@ -1,1375 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 80) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 128) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s\00") - (data (i32.const 176) "D\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00a\08\00\00\02\00\00\00a\00\00\00\02\00\00\00a\00\00\00\02\00\00\00\a1\08\00\00\02\00\00\00\a1\00\00\00\02\00\00\00!\t\00\00\02\00\00\00!\01\00\00\02\00\00\00!\n\00\00\02\00\00\00!\02\00\00\02\00\00\00!\19\00\00\02\00\00\00!\1a\00\00\02\00\00\00b\08\00\00\00\00\00\00b\00\00\00\00\00\00\00\a2\08\00\00\00\00\00\00\a2\00\00\00\00\00\00\00\"\t\00\00\00\00\00\00\"\01\00\00\00\00\00\00\"\n\00\00\00\00\00\00\"\02\00\00\00\00\00\00\"\19\00\00\00\00\00\00\"\1a\00\00\00\00\00\00\"\04\00\00\00\00\00\00 \00\00\00\00\00\00\00\"A\00\00\00\00\00\00\"a\00\00\00\00\00\00h\08\00\00\00\00\00\00h\00\00\00\00\00\00\00\a8\08\00\00\00\00\00\00\a8\00\00\00\00\00\00\00(\t\00\00\00\00\00\00(\01\00\00\00\00\00\00(\n\00\00\00\00\00\00(\02\00\00\00\00\00\00(\19\00\00\00\00\00\00(\1a\00\00\00\00\00\00(\04\00\00\00\00\00\00(A\00\00\00\00\00\00(a\00\00\00\00\00\00p\08\08\00\00\00\00\00\b0\08\14\00\00\00\00\000\t\12\00\00\00\00\000\n\11\00\00\00\00\000\84\10\00\00\00\00\00p\08\82\00\00\00\00\00p\08\c2\00\00\00\00\000\c1\10\00\00\00\00\000\e1\10\00\00\00\00\000a\c2\00\00\00\00\000\t2\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08A\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\t\82\00\00\00\00\00\00\00\00\00\00\00\00\00\10A\12\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") - (table $0 1 funcref) - (global $rt/flags/VALUE_ALIGN_REF i32 (i32.const 256)) - (global $rt/flags/KEY_ALIGN_REF i32 (i32.const 131072)) - (global $~lib/rt/__rtti_base i32 (i32.const 176)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/__typeinfo (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 32 - i32.const 96 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $rt/flags/test<~lib/typedarray/Int8Array> (param $0 i32) - i32.const 3 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/typedarray/Uint8Array> (param $0 i32) - i32.const 4 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/typedarray/Uint8ClampedArray> (param $0 i32) - i32.const 5 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/typedarray/Int16Array> (param $0 i32) - i32.const 6 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/typedarray/Uint16Array> (param $0 i32) - i32.const 7 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/typedarray/Int32Array> (param $0 i32) - i32.const 8 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/typedarray/Uint32Array> (param $0 i32) - i32.const 9 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/typedarray/Int64Array> (param $0 i32) - i32.const 10 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/typedarray/Uint64Array> (param $0 i32) - i32.const 11 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/typedarray/Float32Array> (param $0 i32) - i32.const 12 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/typedarray/Float64Array> (param $0 i32) - i32.const 13 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/array/Array> (param $0 i32) - i32.const 14 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/array/Array> (param $0 i32) - i32.const 15 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/array/Array> (param $0 i32) - i32.const 16 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/array/Array> (param $0 i32) - i32.const 17 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/array/Array> (param $0 i32) - i32.const 18 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/array/Array> (param $0 i32) - i32.const 19 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/array/Array> (param $0 i32) - i32.const 20 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/array/Array> (param $0 i32) - i32.const 21 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/array/Array> (param $0 i32) - i32.const 22 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/array/Array> (param $0 i32) - i32.const 23 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/array/Array> (param $0 i32) - i32.const 24 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/array/Array> (param $0 i32) - i32.const 26 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/array/Array> (param $0 i32) - i32.const 27 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/set/Set> (param $0 i32) - i32.const 28 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/set/Set> (param $0 i32) - i32.const 29 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/set/Set> (param $0 i32) - i32.const 30 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/set/Set> (param $0 i32) - i32.const 31 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/set/Set> (param $0 i32) - i32.const 32 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/set/Set> (param $0 i32) - i32.const 33 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/set/Set> (param $0 i32) - i32.const 34 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/set/Set> (param $0 i32) - i32.const 35 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/set/Set> (param $0 i32) - i32.const 36 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/set/Set> (param $0 i32) - i32.const 37 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/set/Set> (param $0 i32) - i32.const 38 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/set/Set> (param $0 i32) - i32.const 39 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/set/Set> (param $0 i32) - i32.const 40 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/map/Map> (param $0 i32) - i32.const 41 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/map/Map> (param $0 i32) - i32.const 42 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/map/Map> (param $0 i32) - i32.const 43 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/map/Map> (param $0 i32) - i32.const 44 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/map/Map> (param $0 i32) - i32.const 45 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/map/Map> (param $0 i32) - i32.const 46 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/map/Map> (param $0 i32) - i32.const 47 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/map/Map> (param $0 i32) - i32.const 48 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/map/Map> (param $0 i32) - i32.const 49 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/map/Map> (param $0 i32) - i32.const 50 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test<~lib/map/Map> (param $0 i32) - i32.const 51 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 52 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 53 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 54 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 56 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 58 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 59 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 61 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 62 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 64 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 66 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 67 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:rt/flags - i32.const 1 - i32.const 32 - i32.or - i32.const 64 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/typedarray/Int8Array> - i32.const 1 - i32.const 32 - i32.or - i32.const 64 - i32.or - call $rt/flags/test<~lib/typedarray/Uint8Array> - i32.const 1 - i32.const 32 - i32.or - i32.const 64 - i32.or - call $rt/flags/test<~lib/typedarray/Uint8ClampedArray> - i32.const 1 - i32.const 32 - i32.or - i32.const 128 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/typedarray/Int16Array> - i32.const 1 - i32.const 32 - i32.or - i32.const 128 - i32.or - call $rt/flags/test<~lib/typedarray/Uint16Array> - i32.const 1 - i32.const 32 - i32.or - i32.const 256 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/typedarray/Int32Array> - i32.const 1 - i32.const 32 - i32.or - i32.const 256 - i32.or - call $rt/flags/test<~lib/typedarray/Uint32Array> - i32.const 1 - i32.const 32 - i32.or - i32.const 512 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/typedarray/Int64Array> - i32.const 1 - i32.const 32 - i32.or - i32.const 512 - i32.or - call $rt/flags/test<~lib/typedarray/Uint64Array> - i32.const 1 - i32.const 32 - i32.or - i32.const 256 - i32.or - i32.const 2048 - i32.or - i32.const 4096 - i32.or - call $rt/flags/test<~lib/typedarray/Float32Array> - i32.const 1 - i32.const 32 - i32.or - i32.const 512 - i32.or - i32.const 2048 - i32.or - i32.const 4096 - i32.or - call $rt/flags/test<~lib/typedarray/Float64Array> - i32.const 2 - i32.const 32 - i32.or - i32.const 64 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 32 - i32.or - i32.const 64 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 32 - i32.or - i32.const 128 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 32 - i32.or - i32.const 128 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 32 - i32.or - i32.const 256 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 32 - i32.or - i32.const 256 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 32 - i32.or - i32.const 512 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 32 - i32.or - i32.const 512 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 32 - i32.or - i32.const 256 - i32.or - i32.const 2048 - i32.or - i32.const 4096 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 32 - i32.or - i32.const 512 - i32.or - i32.const 2048 - i32.or - i32.const 4096 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 32 - i32.or - i32.const 1024 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 32 - i32.or - global.get $rt/flags/VALUE_ALIGN_REF - i32.or - i32.const 16384 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 2 - i32.const 32 - i32.or - global.get $rt/flags/VALUE_ALIGN_REF - i32.or - i32.const 8192 - i32.or - i32.const 16384 - i32.or - call $rt/flags/test<~lib/array/Array> - i32.const 8 - i32.const 32 - i32.or - i32.const 64 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/set/Set> - i32.const 8 - i32.const 32 - i32.or - i32.const 64 - i32.or - call $rt/flags/test<~lib/set/Set> - i32.const 8 - i32.const 32 - i32.or - i32.const 128 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/set/Set> - i32.const 8 - i32.const 32 - i32.or - i32.const 128 - i32.or - call $rt/flags/test<~lib/set/Set> - i32.const 8 - i32.const 32 - i32.or - i32.const 256 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/set/Set> - i32.const 8 - i32.const 32 - i32.or - i32.const 256 - i32.or - call $rt/flags/test<~lib/set/Set> - i32.const 8 - i32.const 32 - i32.or - i32.const 512 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/set/Set> - i32.const 8 - i32.const 32 - i32.or - i32.const 512 - i32.or - call $rt/flags/test<~lib/set/Set> - i32.const 8 - i32.const 32 - i32.or - i32.const 256 - i32.or - i32.const 2048 - i32.or - i32.const 4096 - i32.or - call $rt/flags/test<~lib/set/Set> - i32.const 8 - i32.const 32 - i32.or - i32.const 512 - i32.or - i32.const 2048 - i32.or - i32.const 4096 - i32.or - call $rt/flags/test<~lib/set/Set> - i32.const 8 - i32.const 32 - i32.or - i32.const 1024 - i32.or - call $rt/flags/test<~lib/set/Set> - i32.const 8 - i32.const 32 - i32.or - global.get $rt/flags/VALUE_ALIGN_REF - i32.or - i32.const 16384 - i32.or - call $rt/flags/test<~lib/set/Set> - i32.const 8 - i32.const 32 - i32.or - global.get $rt/flags/VALUE_ALIGN_REF - i32.or - i32.const 8192 - i32.or - i32.const 16384 - i32.or - call $rt/flags/test<~lib/set/Set> - i32.const 16 - i32.const 32 - i32.or - i32.const 524288 - i32.or - i32.const 64 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/map/Map> - i32.const 16 - i32.const 32 - i32.or - i32.const 262144 - i32.or - i32.const 1048576 - i32.or - i32.const 128 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/map/Map> - i32.const 16 - i32.const 32 - i32.or - i32.const 131072 - i32.or - i32.const 1048576 - i32.or - i32.const 256 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/map/Map> - i32.const 16 - i32.const 32 - i32.or - i32.const 65536 - i32.or - i32.const 1048576 - i32.or - i32.const 512 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/map/Map> - i32.const 16 - i32.const 32 - i32.or - i32.const 32768 - i32.or - i32.const 1048576 - i32.or - i32.const 1024 - i32.or - call $rt/flags/test<~lib/map/Map> - i32.const 16 - i32.const 32 - i32.or - global.get $rt/flags/KEY_ALIGN_REF - i32.or - i32.const 8388608 - i32.or - i32.const 64 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/map/Map> - i32.const 16 - i32.const 32 - i32.or - global.get $rt/flags/KEY_ALIGN_REF - i32.or - i32.const 4194304 - i32.or - i32.const 8388608 - i32.or - i32.const 64 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/map/Map> - i32.const 16 - i32.const 32 - i32.or - i32.const 32768 - i32.or - i32.const 1048576 - i32.or - i32.const 16384 - i32.or - global.get $rt/flags/VALUE_ALIGN_REF - i32.or - call $rt/flags/test<~lib/map/Map> - i32.const 16 - i32.const 32 - i32.or - i32.const 32768 - i32.or - i32.const 1048576 - i32.or - i32.const 8192 - i32.or - i32.const 16384 - i32.or - global.get $rt/flags/VALUE_ALIGN_REF - i32.or - call $rt/flags/test<~lib/map/Map> - i32.const 16 - i32.const 32 - i32.or - i32.const 4194304 - i32.or - i32.const 8388608 - i32.or - global.get $rt/flags/KEY_ALIGN_REF - i32.or - i32.const 8192 - i32.or - i32.const 16384 - i32.or - global.get $rt/flags/VALUE_ALIGN_REF - i32.or - call $rt/flags/test<~lib/map/Map> - i32.const 16 - i32.const 32 - i32.or - i32.const 131072 - i32.or - i32.const 1048576 - i32.or - i32.const 2097152 - i32.or - i32.const 256 - i32.or - i32.const 2048 - i32.or - call $rt/flags/test<~lib/map/Map> - i32.const 32 - call $rt/flags/test - i32.const 0 - call $rt/flags/test - i32.const 0 - call $rt/flags/test - i32.const 0 - call $rt/flags/test - i32.const 32 - call $rt/flags/test - i32.const 0 - call $rt/flags/test - i32.const 32 - call $rt/flags/test - i32.const 0 - call $rt/flags/test - i32.const 0 - call $rt/flags/test - i32.const 32 - call $rt/flags/test - i32.const 32 - call $rt/flags/test - ) - (func $~start - call $start:rt/flags - ) -) diff --git a/tests/compiler/rt/ids.debug.wat b/tests/compiler/rt/ids.debug.wat new file mode 100644 index 0000000000..b663e8fa45 --- /dev/null +++ b/tests/compiler/rt/ids.debug.wat @@ -0,0 +1,35 @@ +(module + (type $0 (func)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:rt/ids + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 1 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + i32.const 3 + i32.const 3 + i32.eq + drop + ) + (func $~start + call $start:rt/ids + ) +) diff --git a/tests/compiler/rt/ids.json b/tests/compiler/rt/ids.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/rt/ids.json +++ b/tests/compiler/rt/ids.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/rt/ids.release.wat b/tests/compiler/rt/ids.release.wat new file mode 100644 index 0000000000..23da3862e2 --- /dev/null +++ b/tests/compiler/rt/ids.release.wat @@ -0,0 +1,4 @@ +(module + (memory $0 0) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/rt/ids.ts b/tests/compiler/rt/ids.ts index 962bbb2dea..3bc9762afa 100644 --- a/tests/compiler/rt/ids.ts +++ b/tests/compiler/rt/ids.ts @@ -1,5 +1,6 @@ import { ArrayBufferView } from "arraybuffer"; -assert(idof() == 0); -assert(idof() == 1); -assert(idof() == 2); +assert(idof() == 0); +assert(idof() == 1); +assert(idof() == 2); +assert(idof() == 3); diff --git a/tests/compiler/rt/ids.untouched.wat b/tests/compiler/rt/ids.untouched.wat deleted file mode 100644 index f066c481fb..0000000000 --- a/tests/compiler/rt/ids.untouched.wat +++ /dev/null @@ -1,24 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (start $~start) - (func $start:rt/ids - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 1 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - ) - (func $~start - call $start:rt/ids - ) -) diff --git a/tests/compiler/rt/instanceof.json b/tests/compiler/rt/instanceof.json deleted file mode 100644 index bf222c4d2d..0000000000 --- a/tests/compiler/rt/instanceof.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime none", - "--explicitStart" - ] -} \ No newline at end of file diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat deleted file mode 100644 index d433725220..0000000000 --- a/tests/compiler/rt/instanceof.optimized.wat +++ /dev/null @@ -1,410 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00r\00t\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") - (data (i32.const 1072) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\03\00\00\00 \00\00\00\04") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $rt/instanceof/animal (mut i32) (i32.const 0)) - (global $rt/instanceof/cat (mut i32) (i32.const 0)) - (global $rt/instanceof/blackcat (mut i32) (i32.const 0)) - (global $rt/instanceof/nullableAnimal (mut i32) (i32.const 0)) - (global $rt/instanceof/nullableCat (mut i32) (i32.const 0)) - (global $rt/instanceof/nullableBlackcat (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - i32.const 16 - i32.add - local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $4 - local.get $1 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $4 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $1 - global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 - i32.sub - local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $3 - ) - (func $rt/instanceof/Animal#constructor (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 3 - call $~lib/rt/stub/__alloc - end - ) - (func $rt/instanceof/Cat#constructor (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 4 - call $~lib/rt/stub/__alloc - end - call $rt/instanceof/Animal#constructor - ) - (func $~lib/rt/__instanceof (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=8 - local.tee $0 - i32.const 1072 - i32.load - i32.le_u - if - loop $do-continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1076 - i32.add - i32.load offset=4 - local.tee $0 - br_if $do-continue|0 - end - end - i32.const 0 - ) - (func $start:rt/instanceof - (local $0 i32) - i32.const 1136 - global.set $~lib/rt/stub/offset - i32.const 0 - call $rt/instanceof/Animal#constructor - global.set $rt/instanceof/animal - i32.const 0 - call $rt/instanceof/Cat#constructor - global.set $rt/instanceof/cat - i32.const 5 - call $~lib/rt/stub/__alloc - call $rt/instanceof/Cat#constructor - global.set $rt/instanceof/blackcat - global.get $rt/instanceof/animal - local.tee $0 - if (result i32) - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - else - i32.const 0 - end - if - i32.const 0 - i32.const 1040 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/animal - local.tee $0 - if (result i32) - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - else - i32.const 0 - end - if - i32.const 0 - i32.const 1040 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/cat - local.tee $0 - if (result i32) - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/cat - local.tee $0 - if (result i32) - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - else - i32.const 0 - end - if - i32.const 0 - i32.const 1040 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/blackcat - local.tee $0 - if (result i32) - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/blackcat - local.tee $0 - if (result i32) - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $rt/instanceof/Animal#constructor - global.set $rt/instanceof/nullableAnimal - i32.const 0 - call $rt/instanceof/Cat#constructor - global.set $rt/instanceof/nullableCat - i32.const 5 - call $~lib/rt/stub/__alloc - call $rt/instanceof/Cat#constructor - global.set $rt/instanceof/nullableBlackcat - global.get $rt/instanceof/nullableAnimal - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableAnimal - local.tee $0 - if (result i32) - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - else - i32.const 0 - end - if - i32.const 0 - i32.const 1040 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableAnimal - local.tee $0 - if (result i32) - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - else - i32.const 0 - end - if - i32.const 0 - i32.const 1040 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableCat - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableCat - local.tee $0 - if (result i32) - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableCat - local.tee $0 - if (result i32) - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - else - i32.const 0 - end - if - i32.const 0 - i32.const 1040 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableBlackcat - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableBlackcat - local.tee $0 - if (result i32) - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableBlackcat - local.tee $0 - if (result i32) - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:rt/instanceof - ) -) diff --git a/tests/compiler/rt/instanceof.ts b/tests/compiler/rt/instanceof.ts deleted file mode 100644 index 243bda7f48..0000000000 --- a/tests/compiler/rt/instanceof.ts +++ /dev/null @@ -1,51 +0,0 @@ -class Animal {} -class Cat extends Animal {} -class BlackCat extends Cat {} - -var animal: Animal = new Animal(); -var cat: Animal = new Cat(); -var blackcat: Animal = new BlackCat(); - -assert(animal instanceof Animal); // static true -assert(!(animal instanceof Cat)); // dynamic false -assert(!(animal instanceof BlackCat)); // dynamic false - -assert(cat instanceof Animal); // static true -assert(cat instanceof Cat); // dynamic true -assert(!(cat instanceof BlackCat)); // dynamic false - -assert(blackcat instanceof Animal); // static true -assert(blackcat instanceof Cat); // dynamic true -assert(blackcat instanceof BlackCat); // dynamic true - -var nullableAnimal: Animal | null = new Animal(); -var nullableCat: Animal | null = new Cat(); -var nullableBlackcat: Animal | null = new BlackCat(); - -assert(nullableAnimal instanceof Animal); // static true -assert(!(nullableAnimal instanceof Cat)); // dynamic false -assert(!(nullableAnimal instanceof BlackCat)); // dynamic false - -assert(nullableCat instanceof Animal); // static true -assert(nullableCat instanceof Cat); // dynamic true -assert(!(nullableCat instanceof BlackCat)); // dynamic false - -assert(nullableBlackcat instanceof Animal); // static true -assert(nullableBlackcat instanceof Cat); // dynamic true -assert(nullableBlackcat instanceof BlackCat); // dynamic true - -var nullAnimal: Animal | null = null; -var nullCat: Animal | null = null; -var nullBlackcat: Animal | null = null; - -assert(!(nullAnimal instanceof Animal)); // static false -assert(!(nullAnimal instanceof Cat)); // dynamic false -assert(!(nullAnimal instanceof BlackCat)); // dynamic false - -assert(!(nullCat instanceof Animal)); // static false -assert(!(nullCat instanceof Cat)); // dynamic false -assert(!(nullCat instanceof BlackCat)); // dynamic false - -assert(!(nullBlackcat instanceof Animal)); // static false -assert(!(nullBlackcat instanceof Cat)); // dynamic false -assert(!(nullBlackcat instanceof BlackCat)); // dynamic false diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat deleted file mode 100644 index a1cb7ea6d1..0000000000 --- a/tests/compiler/rt/instanceof.untouched.wat +++ /dev/null @@ -1,698 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (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))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00r\00t\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00") - (data (i32.const 64) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\03\00\00\00 \00\00\00\04\00\00\00") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $rt/instanceof/animal (mut i32) (i32.const 0)) - (global $rt/instanceof/cat (mut i32) (i32.const 0)) - (global $rt/instanceof/blackcat (mut i32) (i32.const 0)) - (global $rt/instanceof/nullableAnimal (mut i32) (i32.const 0)) - (global $rt/instanceof/nullableCat (mut i32) (i32.const 0)) - (global $rt/instanceof/nullableBlackcat (mut i32) (i32.const 0)) - (global $rt/instanceof/nullAnimal (mut i32) (i32.const 0)) - (global $rt/instanceof/nullCat (mut i32) (i32.const 0)) - (global $rt/instanceof/nullBlackcat (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 64)) - (global $~lib/heap/__heap_base i32 (i32.const 116)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $rt/instanceof/Animal#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $rt/instanceof/Cat#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $rt/instanceof/Animal#constructor - local.set $0 - local.get $0 - ) - (func $rt/instanceof/BlackCat#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $rt/instanceof/Cat#constructor - local.set $0 - local.get $0 - ) - (func $~lib/rt/__instanceof (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=8 - local.set $2 - global.get $~lib/rt/__rtti_base - local.set $3 - local.get $2 - local.get $3 - i32.load - i32.le_u - if - loop $do-continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - local.set $4 - local.get $4 - br_if $do-continue|0 - end - end - i32.const 0 - ) - (func $start:rt/instanceof - (local $0 i32) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - call $rt/instanceof/Animal#constructor - global.set $rt/instanceof/animal - i32.const 0 - call $rt/instanceof/Cat#constructor - global.set $rt/instanceof/cat - i32.const 0 - call $rt/instanceof/BlackCat#constructor - global.set $rt/instanceof/blackcat - i32.const 1 - drop - global.get $rt/instanceof/animal - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - end - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/animal - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - end - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - global.get $rt/instanceof/cat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/cat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - end - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - global.get $rt/instanceof/blackcat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/blackcat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $rt/instanceof/Animal#constructor - global.set $rt/instanceof/nullableAnimal - i32.const 0 - call $rt/instanceof/Cat#constructor - global.set $rt/instanceof/nullableCat - i32.const 0 - call $rt/instanceof/BlackCat#constructor - global.set $rt/instanceof/nullableBlackcat - global.get $rt/instanceof/nullableAnimal - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableAnimal - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - end - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableAnimal - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - end - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableCat - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableCat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableCat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - end - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableBlackcat - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableBlackcat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullableBlackcat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullAnimal - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullAnimal - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - end - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullAnimal - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - end - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullCat - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 45 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullCat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - end - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullCat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - end - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullBlackcat - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 49 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullBlackcat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 4 - call $~lib/rt/__instanceof - end - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/instanceof/nullBlackcat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 5 - call $~lib/rt/__instanceof - end - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:rt/instanceof - ) -) diff --git a/tests/compiler/rt/issue-2719.debug.wat b/tests/compiler/rt/issue-2719.debug.wat new file mode 100644 index 0000000000..6aae0a765d --- /dev/null +++ b/tests/compiler/rt/issue-2719.debug.wat @@ -0,0 +1,2558 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 480)) + (global $~lib/memory/__data_end i32 (i32.const 504)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33272)) + (global $~lib/memory/__heap_base i32 (i32.const 33272)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00r\00t\00/\00i\00s\00s\00u\00e\00-\002\007\001\009\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 480) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $rt/issue-2719/issue2719_T#set:v (param $this i32) (param $v i32) + local.get $this + local.get $v + i32.store + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $rt/issue-2719/issue2719_T#get:v (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $rt/issue-2719/issue2719_T + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/issue-2719/issue2719_T $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:rt/issue-2719 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33296 + i32.const 33344 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/issue-2719/issue2719_T#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $rt/issue-2719/issue2719_T#set:v + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $rt/issue-2719/issue2719_f2 (param $t i32) (result i32) + (local $c i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $rt/issue-2719/issue2719_T#constructor + local.tee $c + i32.store + local.get $c + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 100 + call $rt/issue-2719/issue2719_T#set:v + i32.const 1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $rt/issue-2719/issue2719_f1 (param $a i32) (param $t i32) (param $b i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $t + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $rt/issue-2719/issue2719_T#get:v + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:rt/issue-2719 + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 1 + i32.const 0 + call $rt/issue-2719/issue2719_T#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + call $rt/issue-2719/issue2719_T#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $rt/issue-2719/issue2719_f2 + call $rt/issue-2719/issue2719_f1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/rt/issue-2719.json b/tests/compiler/rt/issue-2719.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/rt/issue-2719.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/rt/issue-2719.release.wat b/tests/compiler/rt/issue-2719.release.wat new file mode 100644 index 0000000000..0665cfc0ef --- /dev/null +++ b/tests/compiler/rt/issue-2719.release.wat @@ -0,0 +1,1777 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (result i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34296)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "<") + (data $8.1 (i32.const 1448) "\02\00\00\00 \00\00\00r\00t\00/\00i\00s\00s\00u\00e\00-\002\007\001\009\00.\00t\00s") + (data $9 (i32.const 1504) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34296 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1504 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34304 + i32.const 0 + i32.store + i32.const 35872 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34304 + i32.const 35876 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34304 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34296 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34296 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34296 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $rt/issue-2719/issue2719_T + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/issue-2719/issue2719_T $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 34296 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $rt/issue-2719/issue2719_T#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + call $rt/issue-2719/issue2719_T#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + call $rt/issue-2719/issue2719_T#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + if + i32.const 0 + i32.const 1456 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $rt/issue-2719/issue2719_T#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/rt/issue-2719.ts b/tests/compiler/rt/issue-2719.ts new file mode 100644 index 0000000000..be369ee568 --- /dev/null +++ b/tests/compiler/rt/issue-2719.ts @@ -0,0 +1,17 @@ +class issue2719_T { + v: i32 = 0; +} + +function issue2719_f1(a: i32, t: issue2719_T, b: i32): void { + assert(t.v == 0); +} + +function issue2719_f2(t: issue2719_T): i32 { + __collect(); // gc will recover the second argument issue2719_T in issue2719_f1 + let c = new issue2719_T(); + c.v = 100; + return 1; +} + +issue2719_f1(1, new issue2719_T(), issue2719_f2(new issue2719_T())); + diff --git a/tests/compiler/rt/runtime-incremental-export.debug.wat b/tests/compiler/rt/runtime-incremental-export.debug.wat new file mode 100644 index 0000000000..e95efa75fe --- /dev/null +++ b/tests/compiler/rt/runtime-incremental-export.debug.wat @@ -0,0 +1,2439 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 544)) + (global $~lib/memory/__data_end i32 (i32.const 564)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33332)) + (global $~lib/memory/__heap_base i32 (i32.const 33332)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") + (data $9 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") + (data $10 (i32.const 544) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__pin (param $ptr i32) (result i32) + (local $obj i32) + local.get $ptr + if + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + local.get $obj + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + if + i32.const 432 + i32.const 96 + i32.const 338 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/Object#unlink + local.get $obj + global.get $~lib/rt/itcms/pinSpace + i32.const 3 + call $~lib/rt/itcms/Object#linkTo + end + local.get $ptr + return + ) + (func $~lib/rt/itcms/__unpin (param $ptr i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + local.get $obj + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.ne + if + i32.const 496 + i32.const 96 + i32.const 352 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + else + local.get $obj + call $~lib/rt/itcms/Object#unlink + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + end + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 432 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 496 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) +) diff --git a/tests/compiler/rt/runtime-incremental-export.json b/tests/compiler/rt/runtime-incremental-export.json new file mode 100644 index 0000000000..e6aec828e6 --- /dev/null +++ b/tests/compiler/rt/runtime-incremental-export.json @@ -0,0 +1,6 @@ +{ + "asc_flags": [ + "--runtime", "incremental", + "--exportRuntime" + ] +} diff --git a/tests/compiler/rt/runtime-incremental-export.release.wat b/tests/compiler/rt/runtime-incremental-export.release.wat new file mode 100644 index 0000000000..605d4f43c8 --- /dev/null +++ b/tests/compiler/rt/runtime-incremental-export.release.wat @@ -0,0 +1,1744 @@ +(module + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1568)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "<") + (data $8.1 (i32.const 1448) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data $9 (i32.const 1500) "<") + (data $9.1 (i32.const 1512) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") + (data $10 (i32.const 1568) "\04\00\00\00 \00\00\00 \00\00\00 ") + (export "__new" (func $~lib/rt/itcms/__new)) + (export "__pin" (func $~lib/rt/itcms/__pin)) + (export "__unpin" (func $~lib/rt/itcms/__unpin)) + (export "__collect" (func $~lib/rt/itcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1520 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34356 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/toSpace + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 1568 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + i32.const 1572 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34368 + i32.const 0 + i32.store + i32.const 35936 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34368 + i32.const 35940 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34368 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + i32.const 34356 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34356 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1456 + i32.const 1120 + i32.const 338 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 + end + local.get $0 + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 1520 + i32.const 1120 + i32.const 352 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (func $~lib/rt/itcms/__collect + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34356 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + ) +) diff --git a/tests/compiler/runtime-full.ts b/tests/compiler/rt/runtime-incremental-export.ts similarity index 100% rename from tests/compiler/runtime-full.ts rename to tests/compiler/rt/runtime-incremental-export.ts diff --git a/tests/compiler/rt/runtime-incremental.debug.wat b/tests/compiler/rt/runtime-incremental.debug.wat new file mode 100644 index 0000000000..541e3c19af --- /dev/null +++ b/tests/compiler/rt/runtime-incremental.debug.wat @@ -0,0 +1,9 @@ +(module + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/rt/runtime-incremental.json b/tests/compiler/rt/runtime-incremental.json new file mode 100644 index 0000000000..d269004c58 --- /dev/null +++ b/tests/compiler/rt/runtime-incremental.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--runtime", "incremental" + ] +} diff --git a/tests/compiler/rt/runtime-incremental.release.wat b/tests/compiler/rt/runtime-incremental.release.wat new file mode 100644 index 0000000000..23da3862e2 --- /dev/null +++ b/tests/compiler/rt/runtime-incremental.release.wat @@ -0,0 +1,4 @@ +(module + (memory $0 0) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/runtime-half.ts b/tests/compiler/rt/runtime-incremental.ts similarity index 100% rename from tests/compiler/runtime-half.ts rename to tests/compiler/rt/runtime-incremental.ts diff --git a/tests/compiler/rt/runtime-minimal-export.debug.wat b/tests/compiler/rt/runtime-minimal-export.debug.wat new file mode 100644 index 0000000000..95a809eadd --- /dev/null +++ b/tests/compiler/rt/runtime-minimal-export.debug.wat @@ -0,0 +1,2078 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/tcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 432)) + (global $~lib/memory/__heap_base i32 (i32.const 452)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d\00\00\00") + (data $5 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d\00\00\00\00\00") + (data $7 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 432) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "__new" (func $~lib/rt/tcms/__new)) + (export "__pin" (func $~lib/rt/tcms/__pin)) + (export "__unpin" (func $~lib/rt/tcms/__unpin)) + (export "__collect" (func $~lib/rt/tcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 160 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/tcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/tcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/tcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/tcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/tcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/tcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/tcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/tcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/tcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/tcms/Object#set:nextWithColor + ) + (func $~lib/rt/tcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/tcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/tcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/tcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/tcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/tcms/Object#set:prev + ) + (func $~lib/rt/tcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + local.get $size + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 125 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/tcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/tcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/tcms/fromSpace + global.get $~lib/rt/tcms/white + call $~lib/rt/tcms/Object#linkTo + global.get $~lib/rt/tcms/total + local.get $obj + call $~lib/rt/tcms/Object#get:size + i32.add + global.set $~lib/rt/tcms/total + local.get $obj + i32.const 20 + i32.add + return + ) + (func $~lib/rt/tcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/tcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/tcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/tcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/tcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/tcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/tcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 101 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/tcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 105 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/tcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/tcms/Object#set:next + ) + (func $~lib/rt/tcms/__pin (param $ptr i32) (result i32) + (local $obj i32) + local.get $ptr + if + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + local.get $obj + call $~lib/rt/tcms/Object#get:color + i32.const 3 + i32.eq + if + i32.const 256 + i32.const 96 + i32.const 181 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/tcms/Object#unlink + local.get $obj + global.get $~lib/rt/tcms/pinSpace + i32.const 3 + call $~lib/rt/tcms/Object#linkTo + end + local.get $ptr + return + ) + (func $~lib/rt/tcms/__unpin (param $ptr i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + local.get $obj + call $~lib/rt/tcms/Object#get:color + i32.const 3 + i32.ne + if + i32.const 352 + i32.const 96 + i32.const 195 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/tcms/Object#unlink + local.get $obj + global.get $~lib/rt/tcms/fromSpace + global.get $~lib/rt/tcms/white + call $~lib/rt/tcms/Object#linkTo + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/tcms/__collect + (local $pn i32) + (local $iter i32) + (local $black i32) + (local $to i32) + (local $from i32) + (local $newNext i32) + i32.const 0 + drop + i32.const 0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/tcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/tcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/tcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 213 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/tcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + global.get $~lib/rt/tcms/white + i32.eqz + local.set $black + global.get $~lib/rt/tcms/toSpace + local.set $to + local.get $to + call $~lib/rt/tcms/Object#get:next + local.set $iter + loop $while-continue|1 + local.get $iter + local.get $to + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/tcms/Object#get:color + local.get $black + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 223 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/tcms/Object#get:next + local.set $iter + br $while-continue|1 + end + end + global.get $~lib/rt/tcms/fromSpace + local.set $from + local.get $from + call $~lib/rt/tcms/Object#get:next + local.set $iter + loop $while-continue|2 + local.get $iter + local.get $from + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/tcms/Object#get:color + global.get $~lib/rt/tcms/white + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 232 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + call $~lib/rt/tcms/Object#get:next + local.set $newNext + local.get $iter + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $iter + i32.const 0 + call $~lib/rt/tcms/Object#set:nextWithColor + local.get $iter + i32.const 0 + call $~lib/rt/tcms/Object#set:prev + else + global.get $~lib/rt/tcms/total + local.get $iter + call $~lib/rt/tcms/Object#get:size + i32.sub + global.set $~lib/rt/tcms/total + i32.const 0 + drop + local.get $iter + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + local.get $newNext + local.set $iter + br $while-continue|2 + end + end + local.get $from + local.get $from + call $~lib/rt/tcms/Object#set:nextWithColor + local.get $from + local.get $from + call $~lib/rt/tcms/Object#set:prev + local.get $to + global.set $~lib/rt/tcms/fromSpace + local.get $from + global.set $~lib/rt/tcms/toSpace + local.get $black + global.set $~lib/rt/tcms/white + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/tcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/tcms/Object#get:color + global.get $~lib/rt/tcms/white + i32.eq + if + local.get $obj + call $~lib/rt/tcms/Object#unlink + local.get $obj + global.get $~lib/rt/tcms/toSpace + global.get $~lib/rt/tcms/white + i32.eqz + call $~lib/rt/tcms/Object#linkTo + end + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 32 + local.get $0 + call $~lib/rt/tcms/__visit + i32.const 256 + local.get $0 + call $~lib/rt/tcms/__visit + i32.const 352 + local.get $0 + call $~lib/rt/tcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/tcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) + (func $~start + i32.const 208 + call $~lib/rt/tcms/initLazy + global.set $~lib/rt/tcms/fromSpace + i32.const 304 + call $~lib/rt/tcms/initLazy + global.set $~lib/rt/tcms/pinSpace + i32.const 400 + call $~lib/rt/tcms/initLazy + global.set $~lib/rt/tcms/toSpace + ) +) diff --git a/tests/compiler/rt/runtime-minimal-export.json b/tests/compiler/rt/runtime-minimal-export.json new file mode 100644 index 0000000000..5a1c51bc88 --- /dev/null +++ b/tests/compiler/rt/runtime-minimal-export.json @@ -0,0 +1,6 @@ +{ + "asc_flags": [ + "--runtime", "minimal", + "--exportRuntime" + ] +} diff --git a/tests/compiler/rt/runtime-minimal-export.release.wat b/tests/compiler/rt/runtime-minimal-export.release.wat new file mode 100644 index 0000000000..bbaf5cc296 --- /dev/null +++ b/tests/compiler/rt/runtime-minimal-export.release.wat @@ -0,0 +1,1474 @@ +(module + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1456)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00c\00m\00s\00.\00t\00s") + (data $2 (i32.const 1164) "<") + (data $2.1 (i32.const 1176) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $4 (i32.const 1260) "<") + (data $4.1 (i32.const 1272) "\02\00\00\00*\00\00\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data $6 (i32.const 1356) "<") + (data $6.1 (i32.const 1368) "\02\00\00\00(\00\00\00O\00b\00j\00e\00c\00t\00 \00i\00s\00 \00n\00o\00t\00 \00p\00i\00n\00n\00e\00d") + (data $8 (i32.const 1456) "\04\00\00\00 \00\00\00 \00\00\00 ") + (export "__new" (func $~lib/rt/tcms/__new)) + (export "__pin" (func $~lib/rt/tcms/__pin)) + (export "__unpin" (func $~lib/rt/tcms/__unpin)) + (export "__collect" (func $~lib/rt/tcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1184 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1184 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1184 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1184 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1184 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1184 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 1488 + i32.const 0 + i32.store + i32.const 3056 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 1488 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 1488 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 1488 + i32.const 3060 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 1488 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 125 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1184 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1184 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1184 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/tcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $1 + local.get $2 + local.get $0 + global.get $~lib/rt/tcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/tcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/tcms/total + local.get $2 + i32.const 20 + i32.add + ) + (func $~lib/rt/tcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 1476 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 101 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 105 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tcms/__pin (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1280 + i32.const 1120 + i32.const 181 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/tcms/Object#unlink + global.get $~lib/rt/tcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 + end + local.get $0 + ) + (func $~lib/rt/tcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 1376 + i32.const 1120 + i32.const 195 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/tcms/Object#unlink + global.get $~lib/rt/tcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/tcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/tcms/__collect + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + i32.const 1056 + call $~lib/rt/tcms/__visit + i32.const 1280 + call $~lib/rt/tcms/__visit + i32.const 1376 + call $~lib/rt/tcms/__visit + global.get $~lib/rt/tcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 213 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/tcms/white + i32.eqz + local.set $3 + global.get $~lib/rt/tcms/toSpace + local.tee $2 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + local.get $2 + i32.ne + if + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 223 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + global.get $~lib/rt/tcms/fromSpace + local.tee $5 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + local.get $5 + i32.ne + if + global.get $~lib/rt/tcms/white + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 232 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.get $0 + i32.const 1476 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/tcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/tcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 1476 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $4 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $4 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1184 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $4 + i32.load + i32.const 1 + i32.or + i32.store + local.get $4 + call $~lib/rt/tlsf/insertBlock + end + end + local.set $0 + br $while-continue|2 + end + end + local.get $5 + local.get $5 + i32.store offset=4 + local.get $5 + local.get $5 + i32.store offset=8 + local.get $2 + global.set $~lib/rt/tcms/fromSpace + local.get $5 + global.set $~lib/rt/tcms/toSpace + local.get $3 + global.set $~lib/rt/tcms/white + ) + (func $~lib/rt/tcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/tcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + call $~lib/rt/tcms/Object#unlink + global.get $~lib/rt/tcms/toSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/tcms/white + i32.eqz + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/tcms/__visit + return + end + unreachable + ) + (func $~start + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/tcms/fromSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/tcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/tcms/toSpace + ) +) diff --git a/tests/compiler/runtime-none.ts b/tests/compiler/rt/runtime-minimal-export.ts similarity index 100% rename from tests/compiler/runtime-none.ts rename to tests/compiler/rt/runtime-minimal-export.ts diff --git a/tests/compiler/rt/runtime-minimal.debug.wat b/tests/compiler/rt/runtime-minimal.debug.wat new file mode 100644 index 0000000000..a049355339 --- /dev/null +++ b/tests/compiler/rt/runtime-minimal.debug.wat @@ -0,0 +1,6 @@ +(module + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/rt/runtime-minimal.json b/tests/compiler/rt/runtime-minimal.json new file mode 100644 index 0000000000..6b2a4893c3 --- /dev/null +++ b/tests/compiler/rt/runtime-minimal.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--runtime", "minimal" + ] +} diff --git a/tests/compiler/rt/runtime-minimal.release.wat b/tests/compiler/rt/runtime-minimal.release.wat new file mode 100644 index 0000000000..23da3862e2 --- /dev/null +++ b/tests/compiler/rt/runtime-minimal.release.wat @@ -0,0 +1,4 @@ +(module + (memory $0 0) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/runtime-stub.ts b/tests/compiler/rt/runtime-minimal.ts similarity index 100% rename from tests/compiler/runtime-stub.ts rename to tests/compiler/rt/runtime-minimal.ts diff --git a/tests/compiler/rt/runtime-stub-export.debug.wat b/tests/compiler/rt/runtime-stub-export.debug.wat new file mode 100644 index 0000000000..da03f96897 --- /dev/null +++ b/tests/compiler/rt/runtime-stub-export.debug.wat @@ -0,0 +1,225 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func)) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 144)) + (global $~lib/memory/__heap_base i32 (i32.const 164)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "__new" (func $~lib/rt/stub/__new)) + (export "__pin" (func $~lib/rt/stub/__pin)) + (export "__unpin" (func $~lib/rt/stub/__unpin)) + (export "__collect" (func $~lib/rt/stub/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/stub/maybeGrowMemory (param $newOffset i32) + (local $pagesBefore i32) + (local $maxOffset i32) + (local $pagesNeeded i32) + (local $4 i32) + (local $5 i32) + (local $pagesWanted i32) + memory.size + local.set $pagesBefore + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $maxOffset + local.get $newOffset + local.get $maxOffset + i32.gt_u + if + local.get $newOffset + local.get $maxOffset + i32.sub + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $4 + local.get $pagesNeeded + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $newOffset + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/stub/__alloc (param $size i32) (result i32) + (local $block i32) + (local $ptr i32) + (local $size|3 i32) + (local $payloadSize i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 33 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + local.set $block + global.get $~lib/rt/stub/offset + i32.const 4 + i32.add + local.set $ptr + block $~lib/rt/stub/computeSize|inlined.0 (result i32) + local.get $size + local.set $size|3 + local.get $size|3 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + br $~lib/rt/stub/computeSize|inlined.0 + end + local.set $payloadSize + local.get $ptr + local.get $payloadSize + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $block + local.get $payloadSize + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $ptr + return + ) + (func $~lib/rt/common/OBJECT#set:gcInfo (param $this i32) (param $gcInfo i32) + local.get $this + local.get $gcInfo + i32.store offset=4 + ) + (func $~lib/rt/common/OBJECT#set:gcInfo2 (param $this i32) (param $gcInfo2 i32) + local.get $this + local.get $gcInfo2 + i32.store offset=8 + ) + (func $~lib/rt/common/OBJECT#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/common/OBJECT#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/stub/__new (param $size i32) (param $id i32) (result i32) + (local $ptr i32) + (local $object i32) + local.get $size + i32.const 1073741804 + i32.gt_u + if + i32.const 32 + i32.const 96 + i32.const 86 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/stub/__alloc + local.set $ptr + local.get $ptr + i32.const 4 + i32.sub + local.set $object + local.get $object + i32.const 0 + call $~lib/rt/common/OBJECT#set:gcInfo + local.get $object + i32.const 0 + call $~lib/rt/common/OBJECT#set:gcInfo2 + local.get $object + local.get $id + call $~lib/rt/common/OBJECT#set:rtId + local.get $object + local.get $size + call $~lib/rt/common/OBJECT#set:rtSize + local.get $ptr + i32.const 16 + i32.add + return + ) + (func $~lib/rt/stub/__pin (param $ptr i32) (result i32) + local.get $ptr + return + ) + (func $~lib/rt/stub/__unpin (param $ptr i32) + ) + (func $~lib/rt/stub/__collect + ) + (func $~start + global.get $~lib/memory/__heap_base + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + ) +) diff --git a/tests/compiler/rt/runtime-stub-export.json b/tests/compiler/rt/runtime-stub-export.json new file mode 100644 index 0000000000..79c640c351 --- /dev/null +++ b/tests/compiler/rt/runtime-stub-export.json @@ -0,0 +1,6 @@ +{ + "asc_flags": [ + "--runtime", "stub", + "--exportRuntime" + ] +} diff --git a/tests/compiler/rt/runtime-stub-export.release.wat b/tests/compiler/rt/runtime-stub-export.release.wat new file mode 100644 index 0000000000..49d2915a10 --- /dev/null +++ b/tests/compiler/rt/runtime-stub-export.release.wat @@ -0,0 +1,143 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1168)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") + (data $2 (i32.const 1168) "\04\00\00\00 \00\00\00 \00\00\00 ") + (export "__new" (func $~lib/rt/stub/__new)) + (export "__pin" (func $~lib/rt/stub/__pin)) + (export "__unpin" (func $~lib/rt/stub/__unpin)) + (export "__collect" (func $~lib/rt/stub/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/stub/__new (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.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 86 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.tee $4 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 33 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + global.get $~lib/rt/stub/offset + i32.const 4 + i32.add + local.tee $2 + local.get $4 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.tee $4 + i32.add + local.tee $5 + memory.size + local.tee $6 + i32.const 16 + i32.shl + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $7 + i32.gt_u + if + local.get $6 + local.get $5 + local.get $7 + i32.sub + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $7 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $5 + global.set $~lib/rt/stub/offset + local.get $4 + i32.store + local.get $2 + i32.const 4 + i32.sub + local.tee $3 + i32.const 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 + local.get $0 + i32.store offset=16 + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/rt/stub/__pin (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__unpin (param $0 i32) + ) + (func $~lib/rt/stub/__collect + ) + (func $~start + i32.const 1196 + global.set $~lib/rt/stub/offset + ) +) diff --git a/tests/compiler/rt/runtime-stub-export.ts b/tests/compiler/rt/runtime-stub-export.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/compiler/rt/runtime-stub.debug.wat b/tests/compiler/rt/runtime-stub.debug.wat new file mode 100644 index 0000000000..a049355339 --- /dev/null +++ b/tests/compiler/rt/runtime-stub.debug.wat @@ -0,0 +1,6 @@ +(module + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/rt/runtime-stub.json b/tests/compiler/rt/runtime-stub.json new file mode 100644 index 0000000000..8e0a066281 --- /dev/null +++ b/tests/compiler/rt/runtime-stub.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--runtime", "stub" + ] +} diff --git a/tests/compiler/rt/runtime-stub.release.wat b/tests/compiler/rt/runtime-stub.release.wat new file mode 100644 index 0000000000..23da3862e2 --- /dev/null +++ b/tests/compiler/rt/runtime-stub.release.wat @@ -0,0 +1,4 @@ +(module + (memory $0 0) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/rt/runtime-stub.ts b/tests/compiler/rt/runtime-stub.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/compiler/rt/stub-realloc.json b/tests/compiler/rt/stub-realloc.json deleted file mode 100644 index 59636d75fa..0000000000 --- a/tests/compiler/rt/stub-realloc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime stub", - "--explicitStart" - ] -} \ No newline at end of file diff --git a/tests/compiler/rt/stub-realloc.optimized.wat b/tests/compiler/rt/stub-realloc.optimized.wat deleted file mode 100644 index f8dd972f4e..0000000000 --- a/tests/compiler/rt/stub-realloc.optimized.wat +++ /dev/null @@ -1,602 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") - (data (i32.const 1072) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00r\00t\00/\00s\00t\00u\00b\00-\00r\00e\00a\00l\00l\00o\00c\00.\00t\00s") - (data (i32.const 1136) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $rt/stub-realloc/ptr (mut i32) (i32.const 0)) - (global $rt/stub-realloc/originalPtr (mut i32) (i32.const 0)) - (global $rt/stub-realloc/newLastPtr (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1136)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/stub/__alloc)) - (export "__retain" (func $~lib/rt/stub/__retain)) - (export "__release" (func $~lib/rt/stub/__release)) - (export "__collect" (func $~lib/rt/stub/__collect)) - (export "__reset" (func $~lib/rt/stub/__reset)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - memory.size - local.tee $2 - i32.const 16 - i32.shl - local.tee $1 - i32.gt_u - if - local.get $2 - local.get $0 - local.get $1 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $4 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $3 - i32.const 16 - i32.sub - local.tee $2 - local.get $4 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $3 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/rt/stub/__collect - nop - ) - (func $~lib/rt/stub/__reset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/stub/__realloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 41 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.tee $3 - i32.load - local.set $4 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 44 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $4 - i32.add - i32.eq - local.set $5 - local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.set $2 - local.get $1 - local.get $4 - i32.gt_u - if - local.get $5 - if - local.get $1 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - local.get $0 - local.get $2 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $3 - local.get $2 - i32.store - else - local.get $2 - local.get $4 - i32.const 1 - i32.shl - local.tee $4 - local.get $2 - local.get $4 - i32.gt_u - select - local.get $3 - i32.load offset=8 - call $~lib/rt/stub/__alloc - local.tee $2 - local.get $0 - local.get $3 - i32.load offset=12 - call $~lib/memory/memory.copy - local.get $2 - local.tee $0 - i32.const 16 - i32.sub - local.set $3 - end - else - local.get $5 - if - local.get $0 - local.get $2 - i32.add - global.set $~lib/rt/stub/offset - local.get $3 - local.get $2 - i32.store - end - end - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $start:rt/stub-realloc - (local $0 i32) - (local $1 i32) - i32.const 10 - i32.const 0 - call $~lib/rt/stub/__alloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.set $rt/stub-realloc/originalPtr - global.get $rt/stub-realloc/ptr - i32.const 12 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 16 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 33 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 20 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - i32.const 1 - i32.const 0 - call $~lib/rt/stub/__alloc - global.set $rt/stub-realloc/newLastPtr - global.get $rt/stub-realloc/newLastPtr - global.get $rt/stub-realloc/originalPtr - i32.const 48 - i32.add - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 24 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 32 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 33 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.le_u - if - i32.const 0 - i32.const 1088 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - local.tee $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 70 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $1 - i32.load - i32.add - i32.eq - if - local.get $1 - global.set $~lib/rt/stub/offset - end - i32.const 1 - i32.const 0 - call $~lib/rt/stub/__alloc - global.get $rt/stub-realloc/ptr - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - i32.const 1168 - global.set $~lib/rt/stub/startOffset - i32.const 1168 - global.set $~lib/rt/stub/offset - call $start:rt/stub-realloc - ) -) diff --git a/tests/compiler/rt/stub-realloc.ts b/tests/compiler/rt/stub-realloc.ts deleted file mode 100644 index 129011e08b..0000000000 --- a/tests/compiler/rt/stub-realloc.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { BLOCK_OVERHEAD } from "rt/common"; - -var ptr = __alloc(10, 0); // initial allocation -var originalPtr = ptr; - -ptr = __realloc(ptr, 12); // just resizes (<= 16) -assert(ptr == originalPtr); - -ptr = __realloc(ptr, 16); // just resizes (<= 16) -assert(ptr == originalPtr); - -ptr = __realloc(ptr, 33); // last: resizes checking for grow (<= 48) -assert(ptr == originalPtr); - -ptr = __realloc(ptr, 20); // last: shrinks again (<= 32, see *) - -var newLastPtr = __alloc(1, 0); -assert(newLastPtr == originalPtr + 32 + BLOCK_OVERHEAD); // * - -ptr = __realloc(ptr, 24); // just resizes (<= 32) -assert(ptr == originalPtr); - -ptr = __realloc(ptr, 32); // just resizes (<= 32) -assert(ptr == originalPtr); - -ptr = __realloc(ptr, 33); // not last anymore: copies -assert(ptr > originalPtr); - -__free(ptr); // discards last -assert(__alloc(1, 0) == ptr); diff --git a/tests/compiler/rt/stub-realloc.untouched.wat b/tests/compiler/rt/stub-realloc.untouched.wat deleted file mode 100644 index 081fb46313..0000000000 --- a/tests/compiler/rt/stub-realloc.untouched.wat +++ /dev/null @@ -1,1747 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") - (data (i32.const 64) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00r\00t\00/\00s\00t\00u\00b\00-\00r\00e\00a\00l\00l\00o\00c\00.\00t\00s\00") - (data (i32.const 128) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $rt/stub-realloc/ptr (mut i32) (i32.const 0)) - (global $rt/stub-realloc/originalPtr (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $rt/stub-realloc/newLastPtr (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 128)) - (global $~lib/heap/__heap_base i32 (i32.const 156)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/stub/__alloc)) - (export "__retain" (func $~lib/rt/stub/__retain)) - (export "__release" (func $~lib/rt/stub/__release)) - (export "__collect" (func $~lib/rt/stub/__collect)) - (export "__reset" (func $~lib/rt/stub/__reset)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/rt/stub/__collect - nop - ) - (func $~lib/rt/stub/__reset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/stub/__realloc (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.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 41 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.set $2 - local.get $2 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.load offset=4 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 44 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - i32.add - global.get $~lib/rt/stub/offset - i32.eq - local.set $4 - local.get $1 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - local.get $1 - local.get $3 - i32.gt_u - if - local.get $4 - if - local.get $1 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - local.get $0 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - local.get $5 - i32.store - else - local.get $5 - local.tee $6 - local.get $3 - i32.const 1 - i32.shl - local.tee $7 - local.get $6 - local.get $7 - i32.gt_u - select - local.get $2 - i32.load offset=8 - call $~lib/rt/stub/__alloc - local.set $6 - local.get $6 - local.get $0 - local.get $2 - i32.load offset=12 - call $~lib/memory/memory.copy - local.get $6 - local.tee $0 - i32.const 16 - i32.sub - local.set $2 - end - else - local.get $4 - if - local.get $0 - local.get $5 - i32.add - global.set $~lib/rt/stub/offset - local.get $2 - local.get $5 - i32.store - end - end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/rt/stub/__free (param $0 i32) - (local $1 i32) - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.set $1 - i32.const 1 - drop - local.get $1 - i32.load offset=4 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 70 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.load - i32.add - global.get $~lib/rt/stub/offset - i32.eq - if - local.get $1 - global.set $~lib/rt/stub/offset - end - ) - (func $start:rt/stub-realloc - i32.const 10 - i32.const 0 - call $~lib/rt/stub/__alloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.set $rt/stub-realloc/originalPtr - global.get $rt/stub-realloc/ptr - i32.const 12 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 16 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 33 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 20 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - i32.const 1 - i32.const 0 - call $~lib/rt/stub/__alloc - global.set $rt/stub-realloc/newLastPtr - global.get $rt/stub-realloc/newLastPtr - global.get $rt/stub-realloc/originalPtr - i32.const 32 - i32.add - i32.const 16 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 24 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 32 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - i32.const 33 - call $~lib/rt/stub/__realloc - global.set $rt/stub-realloc/ptr - global.get $rt/stub-realloc/ptr - global.get $rt/stub-realloc/originalPtr - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/stub-realloc/ptr - call $~lib/rt/stub/__free - i32.const 1 - i32.const 0 - call $~lib/rt/stub/__alloc - global.get $rt/stub-realloc/ptr - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - call $start:rt/stub-realloc - ) -) diff --git a/tests/compiler/runtime-full.json b/tests/compiler/runtime-full.json deleted file mode 100644 index a499d3adfc..0000000000 --- a/tests/compiler/runtime-full.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime full" - ] -} diff --git a/tests/compiler/runtime-full.optimized.wat b/tests/compiler/runtime-full.optimized.wat deleted file mode 100644 index b1cfbd7047..0000000000 --- a/tests/compiler/runtime-full.optimized.wat +++ /dev/null @@ -1,1195 +0,0 @@ -(module - (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_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (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 $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1184)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1216 - local.set $1 - i32.const 1216 - i32.const 0 - i32.store - i32.const 2784 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1216 - i32.const 2800 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1216 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1040 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1073741808 - i32.ge_u - if - i32.const 1088 - i32.const 1040 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1212 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1212 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/pure/__collect - nop - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1212 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/runtime-full.untouched.wat b/tests/compiler/runtime-full.untouched.wat deleted file mode 100644 index 982cc205cd..0000000000 --- a/tests/compiler/runtime-full.untouched.wat +++ /dev/null @@ -1,1697 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 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 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/rt/__rtti_base i32 (i32.const 176)) - (global $~lib/heap/__heap_base i32 (i32.const 204)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 80 - i32.const 32 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 0 - drop - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/runtime-half.json b/tests/compiler/runtime-half.json deleted file mode 100644 index 8e2a32c1e2..0000000000 --- a/tests/compiler/runtime-half.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime half" - ] -} diff --git a/tests/compiler/runtime-half.untouched.wat b/tests/compiler/runtime-half.untouched.wat deleted file mode 100644 index bffe105a3d..0000000000 --- a/tests/compiler/runtime-half.untouched.wat +++ /dev/null @@ -1,5 +0,0 @@ -(module - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) -) diff --git a/tests/compiler/runtime-none.json b/tests/compiler/runtime-none.json deleted file mode 100644 index 453cb07770..0000000000 --- a/tests/compiler/runtime-none.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} diff --git a/tests/compiler/runtime-none.untouched.wat b/tests/compiler/runtime-none.untouched.wat deleted file mode 100644 index bffe105a3d..0000000000 --- a/tests/compiler/runtime-none.untouched.wat +++ /dev/null @@ -1,5 +0,0 @@ -(module - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) -) diff --git a/tests/compiler/runtime-stub.json b/tests/compiler/runtime-stub.json deleted file mode 100644 index c07784ffe0..0000000000 --- a/tests/compiler/runtime-stub.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime stub" - ] -} diff --git a/tests/compiler/runtime-stub.optimized.wat b/tests/compiler/runtime-stub.optimized.wat deleted file mode 100644 index 6825547dd7..0000000000 --- a/tests/compiler/runtime-stub.optimized.wat +++ /dev/null @@ -1,122 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 1) - (data (i32.const 1024) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1024)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/stub/__alloc)) - (export "__retain" (func $~lib/rt/stub/__retain)) - (export "__release" (func $~lib/rt/stub/__release)) - (export "__collect" (func $~lib/rt/stub/__collect)) - (export "__reset" (func $~lib/rt/stub/__reset)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $5 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/rt/stub/__collect - nop - ) - (func $~lib/rt/stub/__reset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) - (func $~start - i32.const 1056 - global.set $~lib/rt/stub/startOffset - i32.const 1056 - global.set $~lib/rt/stub/offset - ) -) diff --git a/tests/compiler/runtime-stub.untouched.wat b/tests/compiler/runtime-stub.untouched.wat deleted file mode 100644 index 6fb4fec6af..0000000000 --- a/tests/compiler/runtime-stub.untouched.wat +++ /dev/null @@ -1,155 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 1) - (data (i32.const 16) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 16)) - (global $~lib/heap/__heap_base i32 (i32.const 44)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/stub/__alloc)) - (export "__retain" (func $~lib/rt/stub/__retain)) - (export "__release" (func $~lib/rt/stub/__release)) - (export "__collect" (func $~lib/rt/stub/__collect)) - (export "__reset" (func $~lib/rt/stub/__reset)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/rt/stub/__collect - nop - ) - (func $~lib/rt/stub/__reset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) - (func $~start - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - ) -) diff --git a/tests/compiler/scoped.debug.wat b/tests/compiler/scoped.debug.wat new file mode 100644 index 0000000000..4703e91d9b --- /dev/null +++ b/tests/compiler/scoped.debug.wat @@ -0,0 +1,68 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (global $scoped/aGlobal (mut i32) (i32.const 1)) + (global $scoped/aConstant i32 (i32.const 3)) + (global $scoped/aStartFunctionLocal (mut i32) (i32.const 2)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $scoped/fn (param $c i32) + (local $a i32) + (local $b i32) + i32.const 0 + local.set $a + local.get $c + local.set $b + ) + (func $start:scoped + (local $anotherStartFunctionLocal i32) + (local $aGlobal i32) + (local $aConstant i64) + (local $aConstant|3 f32) + i32.const 0 + local.set $anotherStartFunctionLocal + loop $for-loop|0 + local.get $anotherStartFunctionLocal + i32.const 1 + i32.lt_s + if + local.get $anotherStartFunctionLocal + i32.const 1 + i32.add + local.set $anotherStartFunctionLocal + br $for-loop|0 + end + end + i32.const 0 + local.set $aGlobal + loop $for-loop|1 + local.get $aGlobal + i32.const 1 + i32.lt_s + if + local.get $aGlobal + drop + local.get $aGlobal + i32.const 1 + i32.add + local.set $aGlobal + br $for-loop|1 + end + end + i64.const 5 + local.set $aConstant + f32.const 10 + local.set $aConstant|3 + i32.const 42 + call $scoped/fn + ) + (func $~start + call $start:scoped + ) +) diff --git a/tests/compiler/scoped.json b/tests/compiler/scoped.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/scoped.json +++ b/tests/compiler/scoped.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/scoped.optimized.wat b/tests/compiler/scoped.optimized.wat deleted file mode 100644 index d9bbd8322b..0000000000 --- a/tests/compiler/scoped.optimized.wat +++ /dev/null @@ -1,35 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (export "memory" (memory $0)) - (start $~start) - (func $~start - (local $0 i32) - loop $for-loop|0 - local.get $0 - i32.const 1 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 1 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - ) -) diff --git a/tests/compiler/scoped.release.wat b/tests/compiler/scoped.release.wat new file mode 100644 index 0000000000..5a9366ab03 --- /dev/null +++ b/tests/compiler/scoped.release.wat @@ -0,0 +1,34 @@ +(module + (type $0 (func)) + (memory $0 0) + (export "memory" (memory $0)) + (start $~start) + (func $~start + (local $0 i32) + (local $1 i32) + loop $for-loop|0 + local.get $0 + i32.const 0 + i32.le_s + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $1 + i32.const 0 + i32.le_s + if + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + ) +) diff --git a/tests/compiler/scoped.untouched.wat b/tests/compiler/scoped.untouched.wat deleted file mode 100644 index c41737758b..0000000000 --- a/tests/compiler/scoped.untouched.wat +++ /dev/null @@ -1,69 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (memory $0 0) - (table $0 1 funcref) - (global $scoped/aGlobal (mut i32) (i32.const 1)) - (global $scoped/aConstant i32 (i32.const 3)) - (global $scoped/aStartFunctionLocal (mut i32) (i32.const 2)) - (export "memory" (memory $0)) - (start $~start) - (func $scoped/fn (param $0 i32) - (local $1 i32) - i32.const 0 - local.set $1 - local.get $0 - local.set $1 - ) - (func $start:scoped - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 f32) - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - i32.const 1 - i32.lt_s - local.set $1 - local.get $1 - if - nop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 1 - i32.lt_s - local.set $2 - local.get $2 - if - local.get $1 - drop - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - i64.const 5 - local.set $3 - f32.const 10 - local.set $4 - i32.const 42 - call $scoped/fn - ) - (func $~start - call $start:scoped - ) -) diff --git a/tests/compiler/simd-errors.json b/tests/compiler/simd-errors.json new file mode 100644 index 0000000000..9a0b2ef259 --- /dev/null +++ b/tests/compiler/simd-errors.json @@ -0,0 +1,10 @@ +{ + "asc_flags": [ + "--enable", "simd" + ], + "stderr": [ + "TS2322: Type 'f32' is not assignable to type 'v128'.", + "TS2322: Type 'i32' is not assignable to type 'v128'.", + "EOF" + ] +} diff --git a/tests/compiler/simd-errors.ts b/tests/compiler/simd-errors.ts new file mode 100644 index 0000000000..c2de705258 --- /dev/null +++ b/tests/compiler/simd-errors.ts @@ -0,0 +1,15 @@ +// f32 +{ + let a = f32x4.splat(0); + let b: f32 = 0; + v128.add(a, b); +} + +// i32 +{ + let a: i32 = 0; + let b = i32x4.splat(0); + v128.sub(a, b); +} + +ERROR("EOF"); diff --git a/tests/compiler/simd.debug.wat b/tests/compiler/simd.debug.wat new file mode 100644 index 0000000000..ded9a32b78 --- /dev/null +++ b/tests/compiler/simd.debug.wat @@ -0,0 +1,7141 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32) (result v128))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i32 i32) (result i32))) + (type $11 (func (result v128))) + (type $12 (func (param v128) (result v128))) + (type $13 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $14 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $15 (func (param i32 i32 i32 i32) (result v128))) + (type $16 (func (param i64) (result v128))) + (type $17 (func (param i64 i64) (result v128))) + (type $18 (func (param f32 f32 f32) (result v128))) + (type $19 (func (param f32 f32 f32 f32) (result v128))) + (type $20 (func (param f64) (result v128))) + (type $21 (func (param f64 f64) (result v128))) + (type $22 (func (param i32 i32) (result v128))) + (type $23 (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $simd/vec (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) + (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) + (global $~lib/builtins/i16.MAX_VALUE i32 (i32.const 32767)) + (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/rt/__rtti_base i32 (i32.const 560)) + (global $~lib/memory/__data_end i32 (i32.const 588)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33356)) + (global $~lib/memory/__heap_base i32 (i32.const 33356)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $10 (i32.const 508) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 560) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\04\00\00\02\t\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "reexport" (func $simd/reexport)) + (export "test_vars_i8x16_partial" (func $simd/test_vars_i8x16_partial)) + (export "test_vars_i8x16_full" (func $simd/test_vars_i8x16_full)) + (export "test_vars_i16x8_partial" (func $simd/test_vars_i16x8_partial)) + (export "test_vars_i16x8_full" (func $simd/test_vars_i16x8_full)) + (export "test_vars_i32x4_partial" (func $simd/test_vars_i32x4_partial)) + (export "test_vars_i32x4_full" (func $simd/test_vars_i32x4_full)) + (export "test_vars_i64x2_partial" (func $simd/test_vars_i64x2_partial)) + (export "test_vars_i64x2_full" (func $simd/test_vars_i64x2_full)) + (export "test_vars_f32x4_partial" (func $simd/test_vars_f32x4_partial)) + (export "test_vars_f32x4_full" (func $simd/test_vars_f32x4_full)) + (export "test_vars_f64x2_partial" (func $simd/test_vars_f64x2_partial)) + (export "test_vars_f64x2_full" (func $simd/test_vars_f64x2_full)) + (export "vec" (global $simd/vec)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 272 + i32.const 336 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 144 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 80 + i32.const 416 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 416 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 80 + i32.const 144 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $simd/test_v128 + (local $ptr i32) + (local $ptr|1 i32) + (local $ptr|2 i32) + (local $ptr|3 i32) + (local $ptr|4 i32) + (local $ptr|5 i32) + (local $ptr|6 i32) + (local $v v128) + (local $v|8 v128) + (local $ptr|9 i32) + (local $v|10 v128) + (local $ptr|11 i32) + (local $v|12 v128) + (local $ptr|13 i32) + (local $v|14 v128) + (local $v|15 v128) + (local $v|16 v128) + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + v128.any_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + v128.const i32x4 0x00000000 0x00000000 0x00000000 0xff000000 + v128.any_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + v128.any_true + i32.const 0 + i32.ne + i32.const 0 + i32.eq + drop + v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d + v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d + v128.const i32x4 0x04030202 0x08070605 0x0c0b0a09 0x100f0e0d + i8x16.ne + v128.any_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d + v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 + v128.and + v128.const i32x4 0x00010001 0x00010001 0x00010001 0x00010001 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d + v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 + v128.or + v128.const i32x4 0x05030301 0x09070705 0x0d0b0b09 0x110f0f0d + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d + v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 + v128.xor + v128.const i32x4 0x05020300 0x09060704 0x0d0a0b08 0x110e0f0c + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d + v128.not + v128.const i32x4 0xfbfcfdfe 0xf7f8f9fa 0xf3f4f5f6 0xeff0f1f2 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d + v128.const i32x4 0x0d0e0f10 0x090a0b0c 0x05060708 0x01020304 + v128.const i32x4 0xff00ff00 0xff00ff00 0xff00ff00 0xff00ff00 + v128.bitselect + v128.const i32x4 0x040e0210 0x080a060c 0x0c060a08 0x10020e04 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const 64 + call $~lib/rt/tlsf/__alloc + local.set $ptr + local.get $ptr + local.get $ptr + v128.load offset=16 + v128.store offset=32 + local.get $ptr + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $ptr|1 + local.get $ptr|1 + i32.const 42 + i32.store8 + local.get $ptr|1 + v128.load8_splat + v128.const i32x4 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 71 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|1 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $ptr|2 + local.get $ptr|2 + i32.const 42 + i32.store16 + local.get $ptr|2 + v128.load16_splat + v128.const i32x4 0x002a002a 0x002a002a 0x002a002a 0x002a002a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 81 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|2 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $ptr|3 + local.get $ptr|3 + i32.const 42 + i32.store + local.get $ptr|3 + v128.load32_splat + v128.const i32x4 0x0000002a 0x0000002a 0x0000002a 0x0000002a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 91 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|3 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $ptr|4 + local.get $ptr|4 + i64.const 42 + i64.store + local.get $ptr|4 + v128.load64_splat + v128.const i32x4 0x0000002a 0x00000000 0x0000002a 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 101 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|4 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $ptr|5 + local.get $ptr|5 + i32.const 42 + i32.store + local.get $ptr|5 + v128.load32_zero + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 111 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|5 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $ptr|6 + local.get $ptr|6 + i64.const 42 + i64.store + local.get $ptr|6 + v128.load64_zero + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 121 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|6 + call $~lib/rt/tlsf/__free + v128.const i32x4 0x3f800000 0xbf800000 0x3f800000 0xbf800000 + v128.const i32x4 0xbf800000 0x3f800000 0xbf800000 0x3f800000 + f32x4.pmin + v128.const i32x4 0xbf800000 0xbf800000 0xbf800000 0xbf800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x3f800000 0xbf800000 0x3f800000 0xbf800000 + v128.const i32x4 0xbf800000 0x3f800000 0xbf800000 0x3f800000 + f32x4.pmax + v128.const i32x4 0x3f800000 0x3f800000 0x3f800000 0x3f800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 + i32x4.add + v128.const i32x4 0x00000002 0x00000004 0x00000006 0x00000008 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 + i32x4.sub + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 + v128.const i32x4 0x00000002 0x00000002 0x00000002 0x00000002 + i32x4.dot_i16x8_s + v128.const i32x4 0x00000002 0x00000004 0x00000006 0x00000008 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x3f8ccccd 0x40200000 0x4079999a 0x40800000 + f32x4.trunc + v128.const i32x4 0x3f800000 0x40000000 0x40400000 0x40800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x3f8ccccd 0x40200000 0x4060a3d7 0x40800000 + f32x4.nearest + v128.const i32x4 0x3f800000 0x40000000 0x40800000 0x40800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 + f32x4.convert_i32x4_s + local.set $v + local.get $v + v128.const i32x4 0x3f800000 0x40000000 0x40400000 0x40800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 177 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $v + i32x4.trunc_sat_f32x4_s + local.set $v + local.get $v + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 179 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x00000001 0x00000002 0x00000000 0x00000000 + f64x2.convert_low_i32x4_s + local.set $v|8 + local.get $v|8 + v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x40000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 183 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $v|8 + i32x4.trunc_sat_f64x2_s_zero + local.set $v|8 + local.get $v|8 + v128.const i32x4 0x00000001 0x00000002 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 185 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $ptr|9 + local.get $ptr|9 + i32.const 42 + i32.store + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.set $v|10 + local.get $ptr|9 + local.get $v|10 + v128.load32_lane 0 + local.set $v|10 + local.get $v|10 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 192 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|9 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $ptr|11 + local.get $ptr|11 + i32.const 42 + i32.store + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.set $v|12 + local.get $ptr|11 + local.get $v|12 + v128.load32_lane 0 + local.set $v|12 + local.get $v|12 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 200 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|11 + local.get $v|12 + v128.load8_lane 0 + local.set $v|12 + local.get $v|12 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 202 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|11 + local.get $v|12 + v128.load16_lane 0 + local.set $v|12 + local.get $v|12 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 204 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|11 + local.get $v|12 + v128.load32_lane 0 + local.set $v|12 + local.get $v|12 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 206 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|11 + local.get $v|12 + v128.load64_lane 0 + local.set $v|12 + local.get $v|12 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 208 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|11 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $ptr|13 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + local.set $v|14 + local.get $ptr|13 + local.get $v|14 + v128.store32_lane 0 + local.get $ptr|13 + i32.load + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 215 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|13 + local.get $v|14 + v128.store8_lane 4 + local.get $ptr|13 + i32.load8_s + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 217 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|13 + local.get $v|14 + v128.store16_lane 4 + local.get $ptr|13 + i32.load16_s + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 219 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|13 + local.get $v|14 + v128.store32_lane 1 + local.get $ptr|13 + i32.load + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 221 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|13 + local.get $v|14 + v128.store64_lane offset=1 1 + local.get $ptr|13 + i64.load offset=1 + i64.const 44 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 223 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr|13 + call $~lib/rt/tlsf/__free + v128.const i32x4 0x3f8ccccd 0xbe800000 0x428c051f 0x40800000 + f32x4.ceil + local.set $v|15 + local.get $v|15 + v128.const i32x4 0x40000000 0x80000000 0x428e0000 0x40800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 228 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x3f8ccccd 0xbe800000 0x428c051f 0x40800000 + f32x4.floor + local.set $v|16 + local.get $v|16 + v128.const i32x4 0x3f800000 0xbf800000 0x428c0000 0x40800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 232 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i8x16.bitmask + i32.const 65535 + i32.eq + drop + v128.const i32x4 0x020100ff 0x06050403 0x0a090807 0x0f0d0c0b + i8x16.bitmask + i32.const 1 + i32.eq + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i16x8.bitmask + i32.const 255 + i32.eq + drop + v128.const i32x4 0x0000ffff 0x00020001 0x000c000b 0x000f000d + i16x8.bitmask + i32.const 1 + i32.eq + drop + v128.const i32x4 0x00000001 0xffffffff 0x00000001 0xffffffff + i32x4.bitmask + i32.const 10 + i32.eq + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i32x4.bitmask + i32.const 15 + i32.eq + drop + v128.const i32x4 0xffffffff 0x00000000 0x00000001 0x0000000f + i32x4.bitmask + i32.const 1 + i32.eq + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i64x2.bitmask + i32.const 3 + i32.eq + drop + v128.const i32x4 0xffffffff 0xffffffff 0x0000000f 0x00000000 + i64x2.bitmask + i32.const 1 + i32.eq + drop + ) + (func $simd/test_i8x16 + (local $a v128) + (local $b v128) + (local $c v128) + (local $one v128) + (local $negOne v128) + (local $only1st v128) + (local $excl1st v128) + (local $a|7 v128) + (local $b|8 v128) + (local $c|9 v128) + v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x7f0f0e0d + local.set $a + local.get $a + v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x7f0f0e0d + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 302 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i8x16.splat + local.set $b + local.get $b + v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 304 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i8x16.add + local.set $c + local.get $c + v128.const i32x4 0x05040302 0x09080706 0x0d0c0b0a 0x80100f0e + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 306 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + local.get $b + i8x16.sub + local.get $a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 307 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x007f7f00 0x00000000 0x00000000 0x00000000 + v128.const i32x4 0x00800080 0x00000000 0x00000000 0x00000000 + i8x16.min_s + v128.const i32x4 0x00800080 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x007f7f00 0x00000000 0x00000000 0x00000000 + v128.const i32x4 0x00800080 0x00000000 0x00000000 0x00000000 + i8x16.min_u + v128.const i32x4 0x007f0000 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x007f7f00 0x00000000 0x00000000 0x00000000 + v128.const i32x4 0x00800080 0x00000000 0x00000000 0x00000000 + i8x16.max_s + v128.const i32x4 0x007f7f00 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x007f7f00 0x00000000 0x00000000 0x00000000 + v128.const i32x4 0x00800080 0x00000000 0x00000000 0x00000000 + i8x16.max_u + v128.const i32x4 0x00807f80 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x04040201 0x08070605 0x0c0b0a09 0xff800e0d + v128.const i32x4 0x04020401 0x08070605 0x0c0b0a09 0xff800e0d + i8x16.avgr_u + v128.const i32x4 0x04030301 0x08070605 0x0c0b0a09 0xff800e0d + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + local.get $a + i8x16.neg + v128.const i32x4 0xfcfdfeff 0xf8f9fafb 0xf4f5f6f7 0x81f1f2f3 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 348 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i8x16.extract_lane_s 0 + i32.extend8_s + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 353 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i8x16.extract_lane_s 15 + i32.extend8_s + i32.const -128 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 354 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i8x16.extract_lane_u 15 + i32.const 255 + i32.and + i32.const 128 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 355 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i32.const 17 + i8x16.replace_lane 15 + v128.const i32x4 0x05040302 0x09080706 0x0d0c0b0a 0x11100f0e + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 356 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 + v128.const i32x4 0x04030201 0x08070605 0x01010101 0x01010101 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 361 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x7f7f7f7e 0x7f7f7f7f 0x7f7f7f7f 0x7f7f7f7f + i32.const 2 + i8x16.splat + i8x16.add_sat_s + i32.const 127 + i8x16.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xfffffffe 0xffffffff 0xffffffff 0xffffffff + i32.const 2 + i8x16.splat + i8x16.add_sat_u + i32.const -1 + i8x16.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x80808081 0x80808080 0x80808080 0x80808080 + i32.const 2 + i8x16.splat + i8x16.sub_sat_s + i32.const -128 + i8x16.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + i32.const 2 + i8x16.splat + i8x16.sub_sat_u + i32.const 0 + i8x16.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const 1 + i8x16.splat + i32.const 1 + i8x16.shl + i32.const 2 + i8x16.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -2 + i8x16.splat + i32.const 1 + i8x16.shr_s + i32.const -1 + i8x16.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -1 + i8x16.splat + i32.const 1 + i8x16.shr_u + i32.const 127 + i8x16.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + v128.any_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + i32.const 1 + i8x16.splat + i8x16.all_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + i32.const 0 + i8x16.splat + i32.const 1 + i8x16.replace_lane 0 + local.set $one + i32.const 0 + i8x16.splat + i32.const -1 + i8x16.replace_lane 0 + local.set $negOne + local.get $negOne + local.set $only1st + local.get $negOne + v128.not + local.set $excl1st + local.get $negOne + local.get $one + i8x16.eq + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 399 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i8x16.ne + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 400 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i8x16.lt_s + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 401 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + i8x16.lt_u + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 402 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + i8x16.le_s + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 403 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i8x16.le_u + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 404 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + i8x16.gt_s + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 405 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i8x16.gt_u + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 406 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i8x16.ge_s + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 407 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + i8x16.ge_u + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 408 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/i16.MAX_VALUE + i16x8.splat + global.get $~lib/builtins/i16.MAX_VALUE + i16x8.splat + i8x16.narrow_i16x8_s + global.get $~lib/builtins/i8.MAX_VALUE + i8x16.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + global.get $~lib/builtins/i16.MAX_VALUE + i16x8.splat + global.get $~lib/builtins/i16.MAX_VALUE + i16x8.splat + i8x16.narrow_i16x8_u + global.get $~lib/builtins/u8.MAX_VALUE + i8x16.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x03020100 0x07060504 0x0b0a0908 0x0f0e0d0c + local.set $a|7 + v128.const i32x4 0x13121110 0x17161514 0x1b1a1918 0x1f1e1d1c + local.set $b|8 + local.get $a|7 + local.get $b|8 + i8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 + v128.const i32x4 0x13021100 0x17061504 0x1b0a1908 0x1f0e1d0c + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 414 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x0c0d0e10 0x08090a0b 0x04050607 0x00010203 + local.set $c|9 + local.get $a|7 + local.get $c|9 + i8x16.swizzle + v128.const i32x4 0x0c0d0e00 0x08090a0b 0x04050607 0x00010203 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 420 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $a|7 + i8x16.popcnt + v128.const i32x4 0x02010100 0x03020201 0x03020201 0x04030302 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 425 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 + i8x16.abs + v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i8x16.abs + v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i8x16.abs + v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x80808080 0x80808080 0x80808080 0x80808080 + i8x16.abs + v128.const i32x4 0x80808080 0x80808080 0x80808080 0x80808080 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i8x16.bitmask + i32.const 65535 + i32.eq + drop + v128.const i32x4 0x020100ff 0x06050403 0x0a090807 0x0f0d0c0b + i8x16.bitmask + i32.const 1 + i32.eq + drop + ) + (func $simd/test_i16x8 + (local $a v128) + (local $b v128) + (local $c v128) + (local $one v128) + (local $negOne v128) + (local $only1st v128) + (local $excl1st v128) + (local $ptr i32) + v128.const i32x4 0x00020001 0x00040003 0x00060005 0x7fff0007 + local.set $a + local.get $a + v128.const i32x4 0x00020001 0x00040003 0x00060005 0x7fff0007 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 480 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i16x8.splat + local.set $b + local.get $b + v128.const i32x4 0x00010001 0x00010001 0x00010001 0x00010001 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 482 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i16x8.add + local.set $c + local.get $c + v128.const i32x4 0x00030002 0x00050004 0x00070006 0x80000008 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + local.get $b + i16x8.sub + local.get $a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 485 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + local.get $b + i16x8.mul + local.get $c + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x7fff0000 0x00007fff 0x00000000 0x00000000 + v128.const i32x4 0x00008000 0x00008000 0x00000000 0x00000000 + i16x8.min_s + v128.const i32x4 0x00008000 0x00008000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x7fff0000 0x00007fff 0x00000000 0x00000000 + v128.const i32x4 0x00008000 0x00008000 0x00000000 0x00000000 + i16x8.min_u + v128.const i32x4 0x00000000 0x00007fff 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x7fff0000 0x00007fff 0x00000000 0x00000000 + v128.const i32x4 0x00008000 0x00008000 0x00000000 0x00000000 + i16x8.max_s + v128.const i32x4 0x7fff0000 0x00007fff 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x7fff0000 0x00007fff 0x00000000 0x00000000 + v128.const i32x4 0x00008000 0x00008000 0x00000000 0x00000000 + i16x8.max_u + v128.const i32x4 0x7fff8000 0x00008000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00020001 0x00040004 0x00060005 0xffff8000 + v128.const i32x4 0x00040001 0x00040002 0x00060005 0xffff8000 + i16x8.avgr_u + v128.const i32x4 0x00030001 0x00040003 0x00060005 0xffff8000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + local.get $a + i16x8.neg + v128.const i32x4 0xfffeffff 0xfffcfffd 0xfffafffb 0x8001fff9 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 527 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i16x8.extract_lane_s 0 + i32.extend16_s + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 532 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i16x8.extract_lane_s 7 + i32.extend16_s + i32.const -32768 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 533 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i16x8.extract_lane_u 7 + i32.const 65535 + i32.and + i32.const 32768 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 534 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i32.const 9 + i16x8.replace_lane 7 + v128.const i32x4 0x00030002 0x00050004 0x00070006 0x00090008 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 535 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 + v128.const i32x4 0x00020001 0x00040003 0x00010001 0x00010001 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 540 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x7fff7ffe 0x7fff7fff 0x7fff7fff 0x7fff7fff + i32.const 2 + i16x8.splat + i16x8.add_sat_s + i32.const 32767 + i16x8.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xfffffffe 0xffffffff 0xffffffff 0xffffffff + i32.const 2 + i16x8.splat + i16x8.add_sat_u + i32.const -1 + i16x8.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x80008001 0x80008000 0x80008000 0x80008000 + i32.const 2 + i16x8.splat + i16x8.sub_sat_s + i32.const -32768 + i16x8.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + i32.const 2 + i16x8.splat + i16x8.sub_sat_u + i32.const 0 + i16x8.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const 1 + i16x8.splat + i32.const 1 + i16x8.shl + i32.const 2 + i16x8.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -2 + i16x8.splat + i32.const 1 + i16x8.shr_s + i32.const -1 + i16x8.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -1 + i16x8.splat + i32.const 1 + i16x8.shr_u + i32.const 32767 + i16x8.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + v128.any_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + i32.const 1 + i16x8.splat + i16x8.all_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + i32.const 0 + i16x8.splat + i32.const 1 + i16x8.replace_lane 0 + local.set $one + i32.const 0 + i16x8.splat + i32.const -1 + i16x8.replace_lane 0 + local.set $negOne + local.get $negOne + local.set $only1st + local.get $negOne + v128.not + local.set $excl1st + local.get $negOne + local.get $one + i16x8.eq + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i16x8.ne + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 579 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i16x8.lt_s + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + i16x8.lt_u + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + i16x8.le_s + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i16x8.le_u + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + i16x8.gt_s + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i16x8.gt_u + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i16x8.ge_s + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + i16x8.ge_u + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/i32.MAX_VALUE + i32x4.splat + global.get $~lib/builtins/i32.MAX_VALUE + i32x4.splat + i16x8.narrow_i32x4_s + global.get $~lib/builtins/i16.MAX_VALUE + i16x8.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + global.get $~lib/builtins/i32.MAX_VALUE + i32x4.splat + global.get $~lib/builtins/i32.MAX_VALUE + i32x4.splat + i16x8.narrow_i32x4_u + global.get $~lib/builtins/u16.MAX_VALUE + i16x8.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -1 + i8x16.splat + i32.const 0 + i8x16.replace_lane 8 + i16x8.extend_low_i8x16_s + i32.const -1 + i16x8.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -1 + i8x16.splat + i32.const 0 + i8x16.replace_lane 8 + i16x8.extend_low_i8x16_u + i32.const 255 + i16x8.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -1 + i8x16.splat + i32.const 0 + i8x16.replace_lane 0 + i16x8.extend_high_i8x16_s + i32.const -1 + i16x8.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -1 + i8x16.splat + i32.const 0 + i8x16.replace_lane 0 + i16x8.extend_high_i8x16_u + i32.const 255 + i16x8.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + local.get $a + local.get $b + i8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 + local.get $a + local.get $b + i8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 594 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $ptr + local.get $ptr + i32.const 1 + i32.store8 + local.get $ptr + i32.const 2 + i32.store8 offset=1 + local.get $ptr + i32.const 3 + i32.store8 offset=2 + local.get $ptr + i32.const 4 + i32.store8 offset=3 + local.get $ptr + i32.const 5 + i32.store8 offset=4 + local.get $ptr + i32.const 6 + i32.store8 offset=5 + local.get $ptr + i32.const 7 + i32.store8 offset=6 + local.get $ptr + i32.const -1 + i32.store8 offset=7 + local.get $ptr + v128.load8x8_s align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0xffff0007 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 609 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + v128.load8x8_u align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00ff0007 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 614 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + call $~lib/rt/tlsf/__free + v128.const i32x4 0xc001ffff 0xffff7ffd 0xffff8000 0x8000bfff + v128.const i32x4 0xc000ffff 0x80000001 0x00018000 0xfff6c000 + i16x8.q15mulr_sat_s + v128.const i32x4 0x20000000 0x00010001 0x00007fff 0x000a2001 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + local.get $a + i16x8.extadd_pairwise_i8x16_s + drop + local.get $a + i16x8.extadd_pairwise_i8x16_u + drop + local.get $a + local.get $a + i16x8.extmul_low_i8x16_s + drop + local.get $a + local.get $a + i16x8.extmul_low_i8x16_u + drop + local.get $a + local.get $a + i16x8.extmul_high_i8x16_s + drop + local.get $a + local.get $a + i16x8.extmul_high_i8x16_u + drop + v128.const i32x4 0x00010001 0x00010001 0x00010001 0x00010001 + i16x8.abs + v128.const i32x4 0x00010001 0x00010001 0x00010001 0x00010001 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i16x8.abs + v128.const i32x4 0x00010001 0x00010001 0x00010001 0x00010001 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i16x8.abs + v128.const i32x4 0x00010001 0x00010001 0x00010001 0x00010001 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x80008000 0x80008000 0x80008000 0x80008000 + i16x8.abs + v128.const i32x4 0x80008000 0x80008000 0x80008000 0x80008000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i16x8.bitmask + i32.const 255 + i32.eq + drop + v128.const i32x4 0x0000ffff 0x00020001 0x000c000b 0x000f000d + i16x8.bitmask + i32.const 1 + i32.eq + drop + ) + (func $simd/test_i32x4 + (local $a v128) + (local $b v128) + (local $c v128) + (local $one v128) + (local $negOne v128) + (local $only1st v128) + (local $excl1st v128) + (local $ptr i32) + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x7fffffff + local.set $a + local.get $a + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x7fffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 682 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32x4.splat + local.set $b + local.get $b + v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 684 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i32x4.add + local.set $c + local.get $c + v128.const i32x4 0x00000002 0x00000003 0x00000004 0x80000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 686 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + local.get $b + i32x4.sub + local.get $a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 687 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + local.get $b + i32x4.mul + local.get $c + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 688 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x00000000 0x7fffffff 0x7fffffff 0x00000000 + v128.const i32x4 0x80000000 0x00000000 0x80000000 0x00000000 + i32x4.min_s + v128.const i32x4 0x80000000 0x00000000 0x80000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000000 0x7fffffff 0x7fffffff 0x00000000 + v128.const i32x4 0x80000000 0x00000000 0x80000000 0x00000000 + i32x4.min_u + v128.const i32x4 0x00000000 0x00000000 0x7fffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000000 0x7fffffff 0x7fffffff 0x00000000 + v128.const i32x4 0x80000000 0x00000000 0x80000000 0x00000000 + i32x4.max_s + v128.const i32x4 0x00000000 0x7fffffff 0x7fffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000000 0x7fffffff 0x7fffffff 0x00000000 + v128.const i32x4 0x80000000 0x00000000 0x80000000 0x00000000 + i32x4.max_u + v128.const i32x4 0x80000000 0x7fffffff 0x80000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00020001 0x00040003 0x0003ffff 0x00000000 + v128.const i32x4 0x00060005 0x00080007 0xffff0002 0x00000000 + i32x4.dot_i16x8_s + v128.const i32x4 0x00000011 0x00000035 0xfffffffb 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + local.get $a + i32x4.neg + v128.const i32x4 0xffffffff 0xfffffffe 0xfffffffd 0x80000001 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 729 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i32x4.extract_lane 0 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 734 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i32x4.extract_lane 3 + i32.const -2147483648 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 735 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i32.const 5 + i32x4.replace_lane 3 + v128.const i32x4 0x00000002 0x00000003 0x00000004 0x00000005 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 736 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 + v128.const i32x4 0x00000001 0x00000002 0x00000001 0x00000001 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 741 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32x4.splat + i32.const 1 + i32x4.shl + i32.const 2 + i32x4.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -2 + i32x4.splat + i32.const 1 + i32x4.shr_s + i32.const -1 + i32x4.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -1 + i32x4.splat + i32.const 1 + i32x4.shr_u + i32.const 2147483647 + i32x4.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + v128.any_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + i32.const 1 + i32x4.splat + i32x4.all_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + i32.const 0 + i32x4.splat + i32.const 1 + i32x4.replace_lane 0 + local.set $one + i32.const 0 + i32x4.splat + i32.const -1 + i32x4.replace_lane 0 + local.set $negOne + local.get $negOne + local.set $only1st + local.get $negOne + v128.not + local.set $excl1st + local.get $negOne + local.get $one + i32x4.eq + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 755 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i32x4.ne + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 756 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i32x4.lt_s + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 757 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + i32x4.lt_u + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + i32x4.le_s + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 759 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i32x4.le_u + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 760 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + i32x4.gt_s + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 761 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i32x4.gt_u + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 762 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + i32x4.ge_s + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 763 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + i32x4.ge_u + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 764 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + f32x4.splat + i32x4.trunc_sat_f32x4_s + i32.const -1 + i32x4.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + f32.const -1.5 + f32x4.splat + i32x4.trunc_sat_f32x4_u + i32.const 0 + i32x4.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -1 + i16x8.splat + i32.const 0 + i16x8.replace_lane 4 + i32x4.extend_low_i16x8_s + i32.const -1 + i32x4.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -1 + i16x8.splat + i32.const 0 + i16x8.replace_lane 4 + i32x4.extend_low_i16x8_u + i32.const 65535 + i32x4.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -1 + i16x8.splat + i32.const 0 + i16x8.replace_lane 0 + i32x4.extend_high_i16x8_s + i32.const -1 + i32x4.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -1 + i16x8.splat + i32.const 0 + i16x8.replace_lane 0 + i32x4.extend_high_i16x8_u + i32.const 65535 + i32x4.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + local.get $a + local.get $b + i8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 + local.get $a + local.get $b + i8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 779 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $ptr + local.get $ptr + i32.const 1 + i32.store16 + local.get $ptr + i32.const 2 + i32.store16 offset=2 + local.get $ptr + i32.const 3 + i32.store16 offset=4 + local.get $ptr + i32.const -1 + i32.store16 offset=6 + local.get $ptr + v128.load16x4_s align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 790 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + v128.load16x4_u align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x0000ffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 795 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + call $~lib/rt/tlsf/__free + local.get $a + i32x4.extadd_pairwise_i16x8_s + drop + local.get $a + i32x4.extadd_pairwise_i16x8_u + drop + local.get $a + i32x4.trunc_sat_f64x2_s_zero + drop + local.get $a + i32x4.trunc_sat_f64x2_u_zero + drop + local.get $a + local.get $a + i32x4.extmul_low_i16x8_s + drop + local.get $a + local.get $a + i32x4.extmul_low_i16x8_u + drop + local.get $a + local.get $a + i32x4.extmul_high_i16x8_s + drop + local.get $a + local.get $a + i32x4.extmul_high_i16x8_u + drop + v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 + i32x4.abs + v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i32x4.abs + v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i32x4.abs + v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x80000000 0x80000000 0x80000000 0x80000000 + i32x4.abs + v128.const i32x4 0x80000000 0x80000000 0x80000000 0x80000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0xffffffff 0x00000001 0xffffffff + i32x4.bitmask + i32.const 10 + i32.eq + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i32x4.bitmask + i32.const 15 + i32.eq + drop + v128.const i32x4 0xffffffff 0x00000000 0x00000001 0x0000000f + i32x4.bitmask + i32.const 1 + i32.eq + drop + ) + (func $simd/test_i64x2 + (local $a v128) + (local $b v128) + (local $c v128) + (local $ptr i32) + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x7fffffff + local.set $a + local.get $a + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x7fffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 829 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64x2.splat + local.set $b + local.get $b + v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 831 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i64x2.add + local.set $c + local.get $c + v128.const i32x4 0x00000002 0x00000000 0x00000000 0x80000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 833 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + local.get $b + i64x2.sub + local.get $a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 834 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + local.get $b + i64x2.mul + local.get $c + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 835 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + i64x2.neg + v128.const i32x4 0xffffffff 0xffffffff 0x00000001 0x80000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 836 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i64x2.extract_lane 0 + i64.const 2 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 841 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i64x2.extract_lane 1 + i64.const -9223372036854775808 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 842 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + i64.const 3 + i64x2.replace_lane 1 + v128.const i32x4 0x00000002 0x00000000 0x00000003 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 843 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 + v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 848 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64x2.splat + i32.const 1 + i64x2.shl + i64.const 2 + i64x2.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i64.const -2 + i64x2.splat + i32.const 1 + i64x2.shr_s + i64.const -1 + i64x2.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i64.const -1 + i64x2.splat + i32.const 1 + i64x2.shr_u + i64.const 9223372036854775807 + i64x2.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + v128.any_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + i64.const 1 + i64x2.splat + i64x2.all_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $ptr + local.get $ptr + i32.const 1 + i32.store + local.get $ptr + i32.const -1 + i32.store offset=4 + local.get $ptr + v128.load32x2_s align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 862 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + v128.load32x2_u align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 867 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + call $~lib/rt/tlsf/__free + local.get $a + local.get $a + i64x2.extmul_low_i32x4_s + drop + local.get $a + local.get $a + i64x2.extmul_low_i32x4_u + drop + local.get $a + local.get $a + i64x2.extmul_high_i32x4_s + drop + local.get $a + local.get $a + i64x2.extmul_high_i32x4_u + drop + v128.const i32x4 0x0000000c 0x00000000 0x0000000c 0x00000000 + v128.const i32x4 0x0000000c 0x00000000 0x0000000c 0x00000000 + i64x2.eq + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x0000000c 0x00000000 0x0000000c 0x00000000 + v128.const i32x4 0x0000000c 0x00000000 0x0000000d 0x00000000 + i64x2.eq + v128.const i32x4 0xffffffff 0xffffffff 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x0000000c 0x00000000 0x0000000c 0x00000000 + v128.const i32x4 0x0000000c 0x00000000 0x0000000d 0x00000000 + i64x2.ne + v128.const i32x4 0x00000000 0x00000000 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x0000000b 0x00000000 0x0000000c 0x00000000 + v128.const i32x4 0x0000000c 0x00000000 0x0000000d 0x00000000 + i64x2.ne + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + v128.const i32x4 0x00000002 0x00000000 0x00000000 0x00000000 + i64x2.lt_s + v128.const i32x4 0xffffffff 0xffffffff 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + v128.const i32x4 0x00000002 0x00000000 0x00000001 0x00000000 + i64x2.lt_s + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + v128.const i32x4 0x00000002 0x00000000 0x00000000 0x00000000 + i64x2.le_s + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + v128.const i32x4 0x00000002 0x00000000 0x00000001 0x00000000 + i64x2.le_s + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000002 0x00000000 0x00000000 0x00000000 + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + i64x2.gt_s + v128.const i32x4 0xffffffff 0xffffffff 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000002 0x00000000 0x00000001 0x00000000 + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + i64x2.gt_s + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000002 0x00000000 0x00000000 0x00000000 + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + i64x2.ge_s + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000002 0x00000000 0x00000001 0x00000000 + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + i64x2.ge_s + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0x00000001 0x00000001 0xffffffff + i64x2.extend_low_i32x4_s + v128.const i32x4 0xffffffff 0xffffffff 0x00000001 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000000 0x00000000 0x00000001 0xffffffff + i64x2.extend_low_i32x4_s + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000001 0x00000000 0x00000000 + i64x2.extend_low_i32x4_s + v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 + i64x2.extend_low_i32x4_s + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x80000000 0x80000000 0x7fffffff 0x7fffffff + i64x2.extend_low_i32x4_s + v128.const i32x4 0x80000000 0xffffffff 0x80000000 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0x7fffffff 0x7fffffff + i64x2.extend_low_i32x4_s + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + i64x2.extend_low_i32x4_u + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000000 0x00000000 0x00000001 0xffffffff + i64x2.extend_low_i32x4_u + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000001 0x00000000 0x00000000 + i64x2.extend_low_i32x4_u + v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0x00000000 0x00000000 + i64x2.extend_low_i32x4_u + v128.const i32x4 0xffffffff 0x00000000 0xffffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x80000000 0x80000000 0x80000000 0x80000000 + i64x2.extend_low_i32x4_u + v128.const i32x4 0x80000000 0x00000000 0x80000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0x7fffffff 0x7fffffff + i64x2.extend_low_i32x4_u + v128.const i32x4 0xffffffff 0x00000000 0xffffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0x00000001 0x00000001 0xffffffff + i64x2.extend_high_i32x4_s + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000000 0x00000000 0x00000001 0xffffffff + i64x2.extend_high_i32x4_s + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000001 0x00000000 0x00000000 + i64x2.extend_high_i32x4_s + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 + i64x2.extend_high_i32x4_s + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x80000000 0x80000000 0x7fffffff 0x7fffffff + i64x2.extend_high_i32x4_s + v128.const i32x4 0x7fffffff 0x00000000 0x7fffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0x7fffffff 0x7fffffff + i64x2.extend_high_i32x4_s + v128.const i32x4 0x7fffffff 0x00000000 0x7fffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + i64x2.extend_high_i32x4_u + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000000 0x00000000 0x00000001 0xffffffff + i64x2.extend_high_i32x4_u + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000001 0x00000000 0x00000000 + i64x2.extend_high_i32x4_u + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000000 0x00000000 0xffffffff 0xffffffff + i64x2.extend_high_i32x4_u + v128.const i32x4 0xffffffff 0x00000000 0xffffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x80000000 0x80000000 0x80000000 0x80000000 + i64x2.extend_high_i32x4_u + v128.const i32x4 0x80000000 0x00000000 0x80000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x7fffffff 0x7fffffff 0xffffffff 0xffffffff + i64x2.extend_high_i32x4_u + v128.const i32x4 0xffffffff 0x00000000 0xffffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 + i64x2.abs + v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i64x2.abs + v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000000 0x80000000 0x00000000 0x80000000 + i64x2.abs + v128.const i32x4 0x00000000 0x80000000 0x00000000 0x80000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff + i64x2.bitmask + i32.const 3 + i32.eq + drop + v128.const i32x4 0xffffffff 0xffffffff 0x0000000f 0x00000000 + i64x2.bitmask + i32.const 1 + i32.eq + drop + ) + (func $simd/test_f32x4 + (local $a v128) + (local $b v128) + (local $c v128) + (local $d v128) + (local $one v128) + (local $negOne v128) + (local $only1st v128) + (local $excl1st v128) + (local $v v128) + (local $v|9 v128) + v128.const i32x4 0x3fc00000 0x40200000 0x40600000 0x40900000 + local.set $a + local.get $a + v128.const i32x4 0x3fc00000 0x40200000 0x40600000 0x40900000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 940 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32x4.splat + local.set $b + local.get $b + v128.const i32x4 0x3f800000 0x3f800000 0x3f800000 0x3f800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 942 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + f32x4.add + local.set $c + local.get $c + v128.const i32x4 0x40200000 0x40600000 0x40900000 0x40b00000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 944 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + local.get $b + f32x4.sub + local.get $a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 945 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + local.get $b + f32x4.mul + local.get $c + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 946 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $a + f32x4.mul + local.set $d + local.get $d + local.get $a + f32x4.div + local.get $a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 948 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $d + local.get $a + f32x4.mul + local.get $a + i8x16.ne + v128.any_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 949 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + f32x4.neg + v128.const i32x4 0xbfc00000 0xc0200000 0xc0600000 0xc0900000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 950 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + f32x4.extract_lane 0 + f32.const 2.5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 951 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + f32x4.extract_lane 3 + f32.const 5.5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 952 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + f32.const 6.5 + f32x4.replace_lane 3 + v128.const i32x4 0x40200000 0x40600000 0x40900000 0x40d00000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 953 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 + v128.const i32x4 0x3fc00000 0x40200000 0x3f800000 0x3f800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 958 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32x4.splat + f32.const 1 + f32x4.replace_lane 0 + local.set $one + f32.const 0 + f32x4.splat + f32.const -1 + f32x4.replace_lane 0 + local.set $negOne + v128.const i32x4 0xffffffff 0x00000000 0x00000000 0x00000000 + local.set $only1st + v128.const i32x4 0x00000000 0xffffffff 0xffffffff 0xffffffff + local.set $excl1st + local.get $negOne + local.get $one + f32x4.eq + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 967 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + f32x4.ne + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 968 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + f32x4.lt + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 969 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + f32x4.le + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 970 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + f32x4.gt + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 971 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + f32x4.ge + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 972 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + f32x4.min + local.get $negOne + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 973 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + f32x4.max + local.get $one + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 974 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + f32x4.abs + local.get $one + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 975 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x40800000 0x41100000 0x41800000 0x41c80000 + f32x4.sqrt + v128.const i32x4 0x40000000 0x40400000 0x40800000 0x40a00000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -1 + i32x4.splat + f32x4.convert_i32x4_s + f32.const -1 + f32x4.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + i32.const -1 + i32x4.splat + f32x4.convert_i32x4_u + f32.const 4294967296 + f32x4.splat + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + local.get $a + f32x4.demote_f64x2_zero + drop + v128.const i32x4 0x3f800000 0xbf800000 0x3f800000 0xbf800000 + v128.const i32x4 0xbf800000 0x3f800000 0xbf800000 0x3f800000 + f32x4.pmin + v128.const i32x4 0xbf800000 0xbf800000 0xbf800000 0xbf800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x3f800000 0xbf800000 0x3f800000 0xbf800000 + v128.const i32x4 0xbf800000 0x3f800000 0xbf800000 0x3f800000 + f32x4.pmax + v128.const i32x4 0x3f800000 0x3f800000 0x3f800000 0x3f800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x3f8ccccd 0xbe800000 0x428c051f 0x40800000 + f32x4.ceil + local.set $v + local.get $v + v128.const i32x4 0x40000000 0x80000000 0x428e0000 0x40800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1002 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x3f8ccccd 0xbe800000 0x428c051f 0x40800000 + f32x4.floor + local.set $v|9 + local.get $v|9 + v128.const i32x4 0x3f800000 0xbf800000 0x428c0000 0x40800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1006 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x3f8ccccd 0x40200000 0x4079999a 0x40800000 + f32x4.trunc + v128.const i32x4 0x3f800000 0x40000000 0x40400000 0x40800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x3f8ccccd 0x40200000 0x4060a3d7 0x40800000 + f32x4.nearest + v128.const i32x4 0x3f800000 0x40000000 0x40800000 0x40800000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + ) + (func $simd/test_f64x2 + (local $a v128) + (local $b v128) + (local $c v128) + (local $d v128) + (local $one v128) + (local $negOne v128) + (local $only1st v128) + (local $excl1st v128) + (local $v v128) + (local $v|9 v128) + v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x40040000 + local.set $a + local.get $a + v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x40040000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1022 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64x2.splat + local.set $b + local.get $b + v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x3ff00000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1024 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + f64x2.add + local.set $c + local.get $c + v128.const i32x4 0x00000000 0x40040000 0x00000000 0x400c0000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1026 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + local.get $b + f64x2.sub + local.get $a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1027 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + local.get $b + f64x2.mul + local.get $c + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1028 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $a + f64x2.mul + local.set $d + local.get $d + local.get $a + f64x2.div + local.get $a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1030 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $d + local.get $a + f64x2.mul + local.get $a + i8x16.ne + v128.any_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1031 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + f64x2.neg + v128.const i32x4 0x00000000 0xbff80000 0x00000000 0xc0040000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1032 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + f64x2.extract_lane 0 + f64.const 2.5 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1033 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + f64x2.extract_lane 1 + f64.const 3.5 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1034 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c + f64.const 4.5 + f64x2.replace_lane 1 + v128.const i32x4 0x00000000 0x40040000 0x00000000 0x40120000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1035 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.get $b + i8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 + v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x3ff00000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1040 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64x2.splat + f64.const 1 + f64x2.replace_lane 0 + local.set $one + f64.const 0 + f64x2.splat + f64.const -1 + f64x2.replace_lane 0 + local.set $negOne + v128.const i32x4 0xffffffff 0xffffffff 0x00000000 0x00000000 + local.set $only1st + v128.const i32x4 0x00000000 0x00000000 0xffffffff 0xffffffff + local.set $excl1st + local.get $negOne + local.get $one + f64x2.eq + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1049 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + f64x2.ne + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1050 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + f64x2.lt + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1051 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + f64x2.le + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1052 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $one + local.get $negOne + f64x2.gt + local.get $only1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1053 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + f64x2.ge + local.get $excl1st + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1054 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + f64x2.min + local.get $negOne + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1055 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + local.get $one + f64x2.max + local.get $one + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1056 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $negOne + f64x2.abs + local.get $one + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1057 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x00000000 0x40100000 0x00000000 0x40220000 + f64x2.sqrt + v128.const i32x4 0x00000000 0x40000000 0x00000000 0x40080000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + local.get $a + f64x2.convert_low_i32x4_s + drop + local.get $a + f64x2.convert_low_i32x4_u + drop + local.get $a + f64x2.promote_low_f32x4 + drop + v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0xbff00000 + v128.const i32x4 0x00000000 0xbff00000 0x00000000 0x3ff00000 + f64x2.pmin + v128.const i32x4 0x00000000 0xbff00000 0x00000000 0xbff00000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0xbff00000 + v128.const i32x4 0x00000000 0xbff00000 0x00000000 0x3ff00000 + f64x2.pmax + v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x3ff00000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x9999999a 0x3ff19999 0x00000000 0xbfd00000 + f64x2.ceil + local.set $v + local.get $v + v128.const i32x4 0x00000000 0x40000000 0x00000000 0x80000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1076 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x9999999a 0x3ff19999 0x00000000 0xbfd00000 + f64x2.floor + local.set $v|9 + local.get $v|9 + v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0xbff00000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1080 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x9999999a 0x3ff19999 0x33333333 0x400f3333 + f64x2.trunc + v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x40080000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + v128.const i32x4 0x9999999a 0x3ff19999 0xe147ae14 0x400c147a + f64x2.nearest + v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x40100000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + drop + ) + (func $simd/test_const (result v128) + (local $one v128) + v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 + local.set $one + local.get $one + return + ) + (func $simd/reexport (param $a v128) (result v128) + local.get $a + local.get $a + i32x4.mul + return + ) + (func $simd/test_vars_i8x16_partial (param $a i32) (param $b i32) (param $c i32) (result v128) + v128.const i32x4 0x03000100 0x07000504 0x0b0a0908 0x000e0d0c + local.get $a + i8x16.replace_lane 2 + local.get $b + i8x16.replace_lane 6 + local.get $c + i8x16.replace_lane 15 + return + ) + (func $simd/test_vars_i8x16_full (param $a i32) (param $b i32) (param $c i32) (param $d i32) (param $e i32) (param $f i32) (param $g i32) (param $h i32) (param $i i32) (param $k i32) (param $l i32) (param $m i32) (param $n i32) (param $o i32) (param $p i32) (param $q i32) (result v128) + local.get $a + i8x16.splat + local.get $b + i8x16.replace_lane 1 + local.get $c + i8x16.replace_lane 2 + local.get $d + i8x16.replace_lane 3 + local.get $e + i8x16.replace_lane 4 + local.get $f + i8x16.replace_lane 5 + local.get $g + i8x16.replace_lane 6 + local.get $h + i8x16.replace_lane 7 + local.get $i + i8x16.replace_lane 8 + local.get $k + i8x16.replace_lane 9 + local.get $l + i8x16.replace_lane 10 + local.get $m + i8x16.replace_lane 11 + local.get $n + i8x16.replace_lane 12 + local.get $o + i8x16.replace_lane 13 + local.get $p + i8x16.replace_lane 14 + local.get $q + i8x16.replace_lane 15 + return + ) + (func $simd/test_vars_i16x8_partial (param $a i32) (param $b i32) (param $c i32) (result v128) + v128.const i32x4 0x00010000 0x00030000 0x00050000 0x00000006 + local.get $a + i16x8.replace_lane 2 + local.get $b + i16x8.replace_lane 4 + local.get $c + i16x8.replace_lane 7 + return + ) + (func $simd/test_vars_i16x8_full (param $a i32) (param $b i32) (param $c i32) (param $d i32) (param $e i32) (param $f i32) (param $g i32) (param $h i32) (result v128) + local.get $a + i16x8.splat + local.get $b + i16x8.replace_lane 1 + local.get $c + i16x8.replace_lane 2 + local.get $d + i16x8.replace_lane 3 + local.get $e + i16x8.replace_lane 4 + local.get $f + i16x8.replace_lane 5 + local.get $g + i16x8.replace_lane 6 + local.get $h + i16x8.replace_lane 7 + return + ) + (func $simd/test_vars_i32x4_partial (param $a i32) (param $b i32) (param $c i32) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $a + i32x4.replace_lane 1 + local.get $b + i32x4.replace_lane 2 + local.get $c + i32x4.replace_lane 3 + return + ) + (func $simd/test_vars_i32x4_full (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result v128) + local.get $a + i32x4.splat + local.get $b + i32x4.replace_lane 1 + local.get $c + i32x4.replace_lane 2 + local.get $d + i32x4.replace_lane 3 + return + ) + (func $simd/test_vars_i64x2_partial (param $a i64) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $a + i64x2.replace_lane 1 + return + ) + (func $simd/test_vars_i64x2_full (param $a i64) (param $b i64) (result v128) + local.get $a + i64x2.splat + local.get $b + i64x2.replace_lane 1 + return + ) + (func $simd/test_vars_f32x4_partial (param $a f32) (param $b f32) (param $c f32) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $a + f32x4.replace_lane 1 + local.get $b + f32x4.replace_lane 2 + local.get $c + f32x4.replace_lane 3 + return + ) + (func $simd/test_vars_f32x4_full (param $a f32) (param $b f32) (param $c f32) (param $d f32) (result v128) + local.get $a + f32x4.splat + local.get $b + f32x4.replace_lane 1 + local.get $c + f32x4.replace_lane 2 + local.get $d + f32x4.replace_lane 3 + return + ) + (func $simd/test_vars_f64x2_partial (param $a f64) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $a + f64x2.replace_lane 1 + return + ) + (func $simd/test_vars_f64x2_full (param $a f64) (param $b f64) (result v128) + local.get $a + f64x2.splat + local.get $b + f64x2.replace_lane 1 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 272 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 80 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:simd + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33376 + i32.const 33424 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result v128) + (local $value v128) + (local $3 i32) + (local $4 v128) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 272 + i32.const 480 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 4 + i32.shl + i32.add + v128.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $start:simd + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 192 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 4 + i32.const 4 + i32.const 32 + call $~lib/rt/__newArray + local.tee $1 + i32.store + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32x4.extract_lane 0 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 5 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32x4.splat + global.set $simd/vec + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + call $simd/test_v128 + call $simd/test_i8x16 + call $simd/test_i16x8 + call $simd/test_i32x4 + call $simd/test_i64x2 + call $simd/test_f32x4 + call $simd/test_f64x2 + call $simd/test_const + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) +) diff --git a/tests/compiler/simd.json b/tests/compiler/simd.json new file mode 100644 index 0000000000..0a393fd610 --- /dev/null +++ b/tests/compiler/simd.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--enable", "simd" + ] +} diff --git a/tests/compiler/simd.release.wat b/tests/compiler/simd.release.wat new file mode 100644 index 0000000000..a554a20ba2 --- /dev/null +++ b/tests/compiler/simd.release.wat @@ -0,0 +1,2525 @@ +(module + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (param i32 i32 i32) (result v128))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i32) (result i32))) + (type $9 (func (param v128) (result v128))) + (type $10 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $11 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $12 (func (param i32 i32 i32 i32) (result v128))) + (type $13 (func (param i64) (result v128))) + (type $14 (func (param i64 i64) (result v128))) + (type $15 (func (param f32 f32 f32) (result v128))) + (type $16 (func (param f32 f32 f32 f32) (result v128))) + (type $17 (func (param f64) (result v128))) + (type $18 (func (param f64 f64) (result v128))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $simd/vec (mut v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34380)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") + (data $1 (i32.const 1084) "<") + (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1148) "<") + (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1276) "<") + (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1340) ",") + (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1420) "<") + (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1484) ",") + (data $9.1 (i32.const 1496) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $10 (i32.const 1532) ",") + (data $10.1 (i32.const 1544) "\02\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s") + (data $11 (i32.const 1584) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\04\00\00\02\t") + (export "reexport" (func $simd/reexport)) + (export "test_vars_i8x16_partial" (func $simd/test_vars_i8x16_partial)) + (export "test_vars_i8x16_full" (func $simd/test_vars_i8x16_full)) + (export "test_vars_i16x8_partial" (func $simd/test_vars_i16x8_partial)) + (export "test_vars_i16x8_full" (func $simd/test_vars_i16x8_full)) + (export "test_vars_i32x4_partial" (func $simd/test_vars_i32x4_partial)) + (export "test_vars_i32x4_full" (func $simd/test_vars_i32x4_full)) + (export "test_vars_i64x2_partial" (func $simd/test_vars_i64x2_partial)) + (export "test_vars_i64x2_full" (func $simd/test_vars_i64x2_full)) + (export "test_vars_f32x4_partial" (func $simd/test_vars_f32x4_partial)) + (export "test_vars_f32x4_full" (func $simd/test_vars_f32x4_full)) + (export "test_vars_f64x2_partial" (func $simd/test_vars_f64x2_partial)) + (export "test_vars_f64x2_full" (func $simd/test_vars_f64x2_full)) + (export "vec" (global $simd/vec)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34380 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1584 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1588 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34384 + i32.const 0 + i32.store + i32.const 35952 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34384 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34384 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34384 + i32.const 35956 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34384 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 34380 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34380 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34380 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1104 + i32.const 1440 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1440 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 32 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + v128.store align=1 + local.get $0 + ) + (func $simd/test_v128 + (local $0 i32) + (local $1 v128) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 64 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + local.get $0 + v128.load offset=16 + v128.store offset=32 + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 42 + i32.store8 + local.get $0 + v128.load8_splat + v128.const i32x4 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 71 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 42 + i32.store16 + local.get $0 + v128.load16_splat + v128.const i32x4 0x002a002a 0x002a002a 0x002a002a 0x002a002a + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 81 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 42 + i32.store + local.get $0 + v128.load32_splat + v128.const i32x4 0x0000002a 0x0000002a 0x0000002a 0x0000002a + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 91 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i64.const 42 + i64.store + local.get $0 + v128.load64_splat + v128.const i32x4 0x0000002a 0x00000000 0x0000002a 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 101 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 42 + i32.store + local.get $0 + v128.load32_zero + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 111 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i64.const 42 + i64.store + local.get $0 + v128.load64_zero + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 121 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 42 + i32.store + local.get $0 + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + v128.load32_lane 0 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 192 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 42 + i32.store + local.get $0 + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + v128.load32_lane 0 + local.tee $1 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 200 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + v128.load8_lane 0 + local.tee $1 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 202 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + v128.load16_lane 0 + local.tee $1 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 204 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + v128.load32_lane 0 + local.tee $1 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 206 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + v128.load64_lane 0 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 208 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store32_lane 0 + local.get $0 + i32.load + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 215 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store8_lane 4 + local.get $0 + i32.load8_s + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 217 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store16_lane 4 + local.get $0 + i32.load16_s + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 219 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store32_lane 1 + local.get $0 + i32.load + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 221 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store64_lane offset=1 1 + local.get $0 + i64.load offset=1 + i64.const 44 + i64.ne + if + i32.const 0 + i32.const 1552 + i32.const 223 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + ) + (func $simd/reexport (param $0 v128) (result v128) + local.get $0 + local.get $0 + i32x4.mul + ) + (func $simd/test_vars_i8x16_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) + v128.const i32x4 0x03000100 0x07000504 0x0b0a0908 0x000e0d0c + local.get $0 + i8x16.replace_lane 2 + local.get $1 + i8x16.replace_lane 6 + local.get $2 + i8x16.replace_lane 15 + ) + (func $simd/test_vars_i8x16_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (param $13 i32) (param $14 i32) (param $15 i32) (result v128) + local.get $0 + i8x16.splat + local.get $1 + i8x16.replace_lane 1 + local.get $2 + i8x16.replace_lane 2 + local.get $3 + i8x16.replace_lane 3 + local.get $4 + i8x16.replace_lane 4 + local.get $5 + i8x16.replace_lane 5 + local.get $6 + i8x16.replace_lane 6 + local.get $7 + i8x16.replace_lane 7 + local.get $8 + i8x16.replace_lane 8 + local.get $9 + i8x16.replace_lane 9 + local.get $10 + i8x16.replace_lane 10 + local.get $11 + i8x16.replace_lane 11 + local.get $12 + i8x16.replace_lane 12 + local.get $13 + i8x16.replace_lane 13 + local.get $14 + i8x16.replace_lane 14 + local.get $15 + i8x16.replace_lane 15 + ) + (func $simd/test_vars_i16x8_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) + v128.const i32x4 0x00010000 0x00030000 0x00050000 0x00000006 + local.get $0 + i16x8.replace_lane 2 + local.get $1 + i16x8.replace_lane 4 + local.get $2 + i16x8.replace_lane 7 + ) + (func $simd/test_vars_i16x8_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result v128) + local.get $0 + i16x8.splat + local.get $1 + i16x8.replace_lane 1 + local.get $2 + i16x8.replace_lane 2 + local.get $3 + i16x8.replace_lane 3 + local.get $4 + i16x8.replace_lane 4 + local.get $5 + i16x8.replace_lane 5 + local.get $6 + i16x8.replace_lane 6 + local.get $7 + i16x8.replace_lane 7 + ) + (func $simd/test_vars_i32x4_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $0 + i32x4.replace_lane 1 + local.get $1 + i32x4.replace_lane 2 + local.get $2 + i32x4.replace_lane 3 + ) + (func $simd/test_vars_i32x4_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result v128) + local.get $0 + i32x4.splat + local.get $1 + i32x4.replace_lane 1 + local.get $2 + i32x4.replace_lane 2 + local.get $3 + i32x4.replace_lane 3 + ) + (func $simd/test_vars_i64x2_partial (param $0 i64) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $0 + i64x2.replace_lane 1 + ) + (func $simd/test_vars_i64x2_full (param $0 i64) (param $1 i64) (result v128) + local.get $0 + i64x2.splat + local.get $1 + i64x2.replace_lane 1 + ) + (func $simd/test_vars_f32x4_partial (param $0 f32) (param $1 f32) (param $2 f32) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $0 + f32x4.replace_lane 1 + local.get $1 + f32x4.replace_lane 2 + local.get $2 + f32x4.replace_lane 3 + ) + (func $simd/test_vars_f32x4_full (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result v128) + local.get $0 + f32x4.splat + local.get $1 + f32x4.replace_lane 1 + local.get $2 + f32x4.replace_lane 2 + local.get $3 + f32x4.replace_lane 3 + ) + (func $simd/test_vars_f64x2_partial (param $0 f64) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $0 + f64x2.replace_lane 1 + ) + (func $simd/test_vars_f64x2_full (param $0 f64) (param $1 f64) (result v128) + local.get $0 + f64x2.splat + local.get $1 + f64x2.replace_lane 1 + ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + if + i32.const 34400 + i32.const 34448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 v128) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 34380 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 1056 + v128.load align=1 + v128.store align=1 + local.get $3 + i32.store + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + local.get $3 + i32.store + local.get $3 + if + local.get $4 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $3 + i32.const 20 + i32.sub + local.tee $5 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $4 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $1 + i32.const 3 + i32.eq + i32.and + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $4 + local.get $3 + i32.store offset=4 + local.get $4 + i32.const 16 + i32.store offset=8 + local.get $4 + i32.const 1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=12 + i32.eqz + if + i32.const 1296 + i32.const 1504 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + v128.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32x4.extract_lane 0 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 5 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 + global.set $simd/vec + call $simd/test_v128 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 2 + i32.store8 offset=1 + local.get $0 + i32.const 3 + i32.store8 offset=2 + local.get $0 + i32.const 4 + i32.store8 offset=3 + local.get $0 + i32.const 5 + i32.store8 offset=4 + local.get $0 + i32.const 6 + i32.store8 offset=5 + local.get $0 + i32.const 7 + i32.store8 offset=6 + local.get $0 + i32.const 255 + i32.store8 offset=7 + local.get $0 + v128.load8x8_s align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0xffff0007 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 609 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.load8x8_u align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00ff0007 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 614 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 1 + i32.store16 + local.get $0 + i32.const 2 + i32.store16 offset=2 + local.get $0 + i32.const 3 + i32.store16 offset=4 + local.get $0 + i32.const 65535 + i32.store16 offset=6 + local.get $0 + v128.load16x4_s align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0xffffffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 790 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.load16x4_u align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x0000ffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 795 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 1 + i32.store + local.get $0 + i32.const -1 + i32.store offset=4 + local.get $0 + v128.load32x2_s align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 862 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.load32x2_u align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 867 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34400 + i32.const 34448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/simd.ts b/tests/compiler/simd.ts new file mode 100644 index 0000000000..82dd705064 --- /dev/null +++ b/tests/compiler/simd.ts @@ -0,0 +1,1176 @@ +// hint: asc tests/compiler/simd --enable simd +{ + // test static array literal + let arr = [i32x4(1, 2, 3, 4)]; + assert(v128.extract_lane(arr[0], 0) == 1); +} +function test_v128(): void { + // check trueish + // @ts-ignore + assert(v128(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) == true); + // @ts-ignore + assert(v128(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1) == true); + // @ts-ignore + assert(v128(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) == false); + + // equality and inequality + assert( + v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) + == // i8x16.all_true(i8x16.eq(lhs, rhs)) + v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) + ); + assert( + v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) + != // i8x16.any_true(i8x16.ne(lhs, rhs)) + v128(2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) + ); + // bitwise + assert( + v128.and( + v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), + v128(1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1 , 1 , 1 , 1 , 1 , 1) + ) == + v128(1, 0, 1, 0, 1, 0, 1, 0, 1, 0 , 1 , 0 , 1 , 0 , 1 , 0) + ); + assert( + v128.or( + v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), + v128(1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1 , 1 , 1 , 1 , 1 , 1) + ) == + v128(1, 3, 3, 5, 5, 7, 7, 9, 9, 11, 11, 13, 13, 15, 15, 17) + ); + assert( + v128.xor( + v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), + v128(1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1 , 1 , 1 , 1 , 1 , 1) + ) == + v128(0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 17) + ); + assert( + v128.not( + v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) + ) == + v128(-2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17) + ); + assert( + v128.bitselect( + v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), + v128(16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1), + v128(0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1), + ) == + v128(16, 2, 14, 4, 12, 6, 10, 8, 8, 10, 6, 12, 4, 14, 2, 16), + ); + { + let ptr = __alloc(64); + v128.store(ptr, v128.load(ptr, 16), 32); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load8_splat(ptr) + == + v128(42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42) + ); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load16_splat(ptr) + == + v128(42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0) + ); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load32_splat(ptr) + == + v128(42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0) + ); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load64_splat(ptr) + == + v128(42, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0) + ); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load32_zero(ptr) + == + v128(42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + ); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load64_zero(ptr) + == + v128(42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + ); + __free(ptr); + } + { + assert( + v128.pmin(f32x4(1, -1, 1, -1), f32x4(-1, 1, -1, 1)) + == + f32x4(-1, -1, -1, -1) + ); + } + { + assert( + v128.pmax(f32x4(1, -1, 1, -1), f32x4(-1, 1, -1, 1)) + == + f32x4(1, 1, 1, 1) + ); + } + { + assert( + v128.add(i32x4(1, 2, 3, 4), i32x4(1, 2, 3, 4)) + == + i32x4(2, 4, 6, 8)); + } + { + assert( + v128.sub(i32x4(1, 2, 3, 4), i32x4(1, 2, 3, 4)) + == + i32x4(0, 0, 0, 0)); + } + { + assert( + v128.dot(i32x4(1, 2, 3, 4), i32x4(2, 2, 2, 2)) + == + i32x4(2, 4, 6, 8) + ); + } + { + assert( + v128.trunc(f32x4(1.1, 2.5, 3.9, 4.0)) + == + f32x4(1.0, 2.0, 3.0, 4.0) + ); + } + { + assert( + v128.nearest(f32x4(1.1, 2.5, 3.51, 4.0)) + == + f32x4(1.0, 2.0, 4.0, 4.0) + ); + } + { + let v: v128 = v128.convert(i32x4(1, 2, 3, 4)); + assert(v == f32x4(1.0, 2.0, 3.0, 4.0)); + v = v128.trunc_sat(v); + assert(v == i32x4(1, 2, 3, 4)); + } + { + let v: v128 = v128.convert_low(i32x4(1, 2, 0, 0)); + assert(v == f64x2(1.0, 2.0)); + v = v128.trunc_sat_zero(v); + assert(v == i32x4(1, 2, 0, 0)); + } + { + var ptr = __alloc(16); + store(ptr, 42); + var v: v128 = v128(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + v = v128.load_lane(ptr, v, 0); + assert(v == i32x4(42, 0, 0, 0)); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + let v: v128 = v128(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + v = v128.load_lane(ptr, v, 0); + assert(v == i32x4(42, 0, 0, 0)); + v = v128.load8_lane(ptr, v, 0); + assert(v == v128(42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); + v = v128.load16_lane(ptr, v, 0); + assert(v == i16x8(42, 0, 0, 0, 0, 0, 0, 0)); + v = v128.load32_lane(ptr, v, 0); + assert(v == i32x4(42, 0, 0, 0)); + v = v128.load64_lane(ptr, v, 0); + assert(v == i64x2(42, 0)); + __free(ptr); + } + { + let ptr = __alloc(16); + let v: v128 = v128(42, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0); + v128.store_lane(ptr, v, 0); + assert(load(ptr) == 42); + v128.store8_lane(ptr, v, 4); + assert(load(ptr) == 43); + v128.store16_lane(ptr, v, 4); + assert(load(ptr) == 44); + v128.store32_lane(ptr, v, 1); + assert(load(ptr) == 43); + v128.store64_lane(ptr, v, 1, 1); + assert(load(ptr, 1) == 44); + __free(ptr); + } + { + let v: v128 = v128.ceil(f32x4(1.1, -0.25, 70.01, 4.0)); + assert(v == f32x4(2, -0.0, 71, 4)); + } + { + let v: v128 = v128.floor(f32x4(1.1, -0.25, 70.01, 4.0)); + assert(v == f32x4(1, -1, 70, 4)); + } + { + assert( + v128.bitmask(i8x16( + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE)) == 0x0000FFFF + ); + assert( + v128.bitmask(i8x16(-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xF)) == 0x00000001 + ); + assert( + v128.bitmask(i16x8( + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE)) == 0x000000FF + ); + assert( + v128.bitmask(i16x8(-1, 0, 1, 2, 0xB, 0xC, 0xD, 0xF)) == 0x00000001 + ); + assert( + v128.bitmask(i32x4(1, -1, 1, -1)) == 10 + ); + assert( + v128.bitmask(i32x4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF)) == 0x0000000F + ); + assert( + v128.bitmask(i32x4(-1, 0, 1, 0xF)) == 1 + ); + assert( + v128.bitmask(i64x2(0xFFFFFFFF_FFFFFFFF, 0xFFFFFFFF_FFFFFFFF)) == 0x00000003 + ); + assert( + v128.bitmask(i64x2(-1, 0xF)) == 0x00000001 + ); + } + // TODO: missing C-API in Binaryen (see also passes/pass.ts) + // v128.load8_lane + // v128.load16_lane + // v128.load32_lane + // v128.load64_lane + // v128.store8_lane + // v128.store16_lane + // v128.store32_lane + // v128.store64_lane + + // generic operations are tested by the aliases below already +} + +function test_i8x16(): void { + var a = i8x16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 127); + assert(a == v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 127)); + var b = i8x16.splat(1); + assert(b == v128(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)); + var c = i8x16.add(a, b); + assert(c == i8x16(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -128)); + assert(i8x16.sub(c, b) == a); + assert( + i8x16.min_s( + i8x16(0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), + i8x16(-128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + ) + == + i8x16(-128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + ); + assert( + i8x16.min_u( + i8x16(0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), + i8x16(-128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + ) + == + i8x16(0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + ); + assert( + i8x16.max_s( + i8x16(0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), + i8x16(-128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + ) + == + i8x16(0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + ); + assert( + i8x16.max_u( + i8x16(0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), + i8x16(-128, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + ) + == + i8x16(-128, 127, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + ); + assert( + i8x16.avgr_u( + i8x16(1, 2, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0x80, 0xFF), + i8x16(1, 4, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0x80, 0xFF) + ) + == + i8x16(1, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0x80, 0xFF) + ); + assert( + i8x16.neg(a) + == + i8x16(-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -127) + ); + assert(i8x16.extract_lane_s(c, 0) == 2); + assert(i8x16.extract_lane_s(c, 15) == -128); + assert(i8x16.extract_lane_u(c, 15) == 128); + assert( + i8x16.replace_lane(c, 15, 17) + == + i8x16(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17) + ); + assert( + v128.shuffle(a, b, 0, 1, 2, 3, 4, 5, 6, 7, 24, 25, 26, 27, 28, 29, 30, 31) + == + i8x16(1, 2, 3, 4, 5, 6, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1) + ); + assert( + i8x16.add_sat_s( + i8x16(126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127), + i8x16.splat(2) + ) == i8x16.splat(127) + ); + assert( + i8x16.add_sat_u( + i8x16(-2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1), + i8x16.splat(2) + ) == i8x16.splat(-1) + ); + assert( + i8x16.sub_sat_s( + i8x16(-127, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128), + i8x16.splat(2) + ) == i8x16.splat(-128) + ); + assert( + i8x16.sub_sat_u( + i8x16(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), + i8x16.splat(2) + ) == i8x16.splat(0) + ); + assert(i8x16.shl(i8x16.splat(1), 1) == i8x16.splat(2)); + assert(i8x16.shr_s(i8x16.splat(-2), 1) == i8x16.splat(-1)); + assert(i8x16.shr_u(i8x16.splat(-1), 1) == i8x16.splat(127)); + assert(v128.any_true(i8x16(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) == true); + assert(i8x16.all_true(i8x16.splat(1)) == true); + var one = i8x16.replace_lane(i8x16.splat(0), 0, 1); + var negOne = i8x16.replace_lane(i8x16.splat(0), 0, -1); + var only1st = negOne; + var excl1st = v128.not(negOne); + assert(i8x16.eq(negOne, one) == excl1st); + assert(i8x16.ne(negOne, one) == only1st); + assert(i8x16.lt_s(negOne, one) == only1st); + assert(i8x16.lt_u(one, negOne) == only1st); + assert(i8x16.le_s(one, negOne) == excl1st); + assert(i8x16.le_u(negOne, one) == excl1st); + assert(i8x16.gt_s(one, negOne) == only1st); + assert(i8x16.gt_u(negOne, one) == only1st); + assert(i8x16.ge_s(negOne, one) == excl1st); + assert(i8x16.ge_u(one, negOne) == excl1st); + assert(i8x16.narrow_i16x8_s(i16x8.splat(i16.MAX_VALUE), i16x8.splat(i16.MAX_VALUE)) == i8x16.splat(i8.MAX_VALUE)); + assert(i8x16.narrow_i16x8_u(i16x8.splat(i16.MAX_VALUE), i16x8.splat(i16.MAX_VALUE)) == i8x16.splat(u8.MAX_VALUE)); + { + let a = v128( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); + let b = v128(16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31); + assert( + i8x16.shuffle(a, b, 0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31) + == + v128(0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31) + ); + let c = v128(16, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); + assert( + i8x16.swizzle(a, c) + == + v128(0, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) + ); + assert(i8x16.popcnt(a) == v128(0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4)); + } + + assert(i8x16.abs(i8x16(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)) == i8x16(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)); + assert(i8x16.abs(i8x16(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)) == i8x16(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)); + assert(i8x16.abs(i8x16( + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE)) + == + i8x16(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) + ); + assert(i8x16.abs(i8x16(-128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128)) + == + i8x16(i8(128), i8(128), i8(128), i8(128), i8(128), i8(128), i8(128), i8(128), i8(128), i8(128), i8(128), i8(128), i8(128), i8(128), i8(128), i8(128)) + ); + assert( + i8x16.bitmask(i8x16( + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE, + u8.MAX_VALUE)) == 0x0000FFFF + ); + assert( + i8x16.bitmask(i8x16(-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xF)) == 0x00000001 + ); +} + +function test_i16x8(): void { + var a = i16x8(1, 2, 3, 4, 5, 6, 7, 32767); + assert(a == v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, 127)); + var b = i16x8.splat(1); + assert(b == v128(1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0)); + var c = i16x8.add(a, b); + assert(c == i16x8(2, 3, 4, 5, 6, 7, 8, -32768)); + assert(i16x8.sub(c, b) == a); + assert(i16x8.mul(c, b) == c); + assert( + i16x8.min_s( + i16x8(0, 32767, 32767, 0, 0, 0, 0, 0), + i16x8(-32768, 0, -32768, 0, 0, 0, 0, 0) + ) + == + i16x8(-32768, 0, -32768, 0, 0, 0, 0, 0) + ); + assert( + i16x8.min_u( + i16x8(0, 32767, 32767, 0, 0, 0, 0, 0), + i16x8(-32768, 0, -32768, 0, 0, 0, 0, 0) + ) + == + i16x8(0, 0, 32767, 0, 0, 0, 0, 0) + ); + assert( + i16x8.max_s( + i16x8(0, 32767, 32767, 0, 0, 0, 0, 0), + i16x8(-32768, 0, -32768, 0, 0, 0, 0, 0) + ) + == + i16x8(0, 32767, 32767, 0, 0, 0, 0, 0) + ); + assert( + i16x8.max_u( + i16x8(0, 32767, 32767, 0, 0, 0, 0, 0), + i16x8(-32768, 0, -32768, 0, 0, 0, 0, 0) + ) + == + i16x8(-32768, 32767, -32768, 0, 0, 0, 0, 0) + ); + assert( + i16x8.avgr_u( + i16x8(1, 2, 4, 4, 5, 6, 0x8000, 0xFFFF), + i16x8(1, 4, 2, 4, 5, 6, 0x8000, 0xFFFF) + ) + == + i16x8(1, 3, 3, 4, 5, 6, 0x8000, 0xFFFF) + ); + assert( + i16x8.neg(a) + == + i16x8(-1, -2, -3, -4, -5, -6, -7, -32767) + ); + assert(i16x8.extract_lane_s(c, 0) == 2); + assert(i16x8.extract_lane_s(c, 7) == -32768); + assert(i16x8.extract_lane_u(c, 7) == 32768); + assert( + i16x8.replace_lane(c, 7, 9) + == + i16x8(2, 3, 4, 5, 6, 7, 8, 9) + ); + assert( + v128.shuffle(a, b, 0, 1, 2, 3, 12, 13, 14, 15) + == + i16x8(1, 2, 3, 4, 1, 1, 1, 1) + ); + assert( + i16x8.add_sat_s( + i16x8(32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767), + i16x8.splat(2) + ) == i16x8.splat(32767) + ); + assert( + i16x8.add_sat_u( + i16x8(-2, -1, -1, -1, -1, -1, -1, -1), + i16x8.splat(2) + ) == i16x8.splat(-1) + ); + assert( + i16x8.sub_sat_s( + i16x8(-32767, -32768, -32768, -32768, -32768, -32768, -32768, -32768), + i16x8.splat(2) + ) == i16x8.splat(-32768) + ); + assert( + i16x8.sub_sat_u( + i16x8(1, 0, 0, 0, 0, 0, 0, 0), + i16x8.splat(2) + ) == i16x8.splat(0) + ); + assert(i16x8.shl(i16x8.splat(1), 1) == i16x8.splat(2)); + assert(i16x8.shr_s(i16x8.splat(-2), 1) == i16x8.splat(-1)); + assert(i16x8.shr_u(i16x8.splat(-1), 1) == i16x8.splat(32767)); + assert(v128.any_true(i16x8(1, 0, 0, 0, 0, 0, 0, 0)) == true); + assert(i16x8.all_true(i16x8.splat(1)) == true); + var one = i16x8.replace_lane(i16x8.splat(0), 0, 1); + var negOne = i16x8.replace_lane(i16x8.splat(0), 0, -1); + var only1st = negOne; + var excl1st = v128.not(negOne); + assert(i16x8.eq(negOne, one) == excl1st); + assert(i16x8.ne(negOne, one) == only1st); + assert(i16x8.lt_s(negOne, one) == only1st); + assert(i16x8.lt_u(one, negOne) == only1st); + assert(i16x8.le_s(one, negOne) == excl1st); + assert(i16x8.le_u(negOne, one) == excl1st); + assert(i16x8.gt_s(one, negOne) == only1st); + assert(i16x8.gt_u(negOne, one) == only1st); + assert(i16x8.ge_s(negOne, one) == excl1st); + assert(i16x8.ge_u(one, negOne) == excl1st); + assert(i16x8.narrow_i32x4_s(i32x4.splat(i32.MAX_VALUE), i32x4.splat(i32.MAX_VALUE)) == i16x8.splat(i16.MAX_VALUE)); + assert(i16x8.narrow_i32x4_u(i32x4.splat(i32.MAX_VALUE), i32x4.splat(i32.MAX_VALUE)) == i16x8.splat(u16.MAX_VALUE)); + assert(i16x8.extend_low_i8x16_s(i8x16.replace_lane(i8x16.splat(-1), 8, 0)) == i16x8.splat(-1)); + assert(i16x8.extend_low_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 8, 0)) == i16x8.splat(255)); + assert(i16x8.extend_high_i8x16_s(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(-1)); + assert(i16x8.extend_high_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(255)); + assert( + i16x8.shuffle(a, b, 0, 1, 2, 3, 12, 13, 14, 15) + == + v128.shuffle(a, b, 0, 1, 2, 3, 12, 13, 14, 15) + ); + { + let ptr = __alloc(16); + store(ptr, 1); + store(ptr, 2, 1); + store(ptr, 3, 2); + store(ptr, 4, 3); + store(ptr, 5, 4); + store(ptr, 6, 5); + store(ptr, 7, 6); + store(ptr, -1, 7); + assert( + v128.load8x8_s(ptr) + == + v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, -1) + ); + assert( + v128.load8x8_u(ptr) + == + v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, 0) + ); + __free(ptr); + } + assert(i16x8.q15mulr_sat_s( + i16x8(-1, -16383, 32765, 65535, -32768, 65535, -16385, -32768), + i16x8(-1, -16384, 1, -32768, -32768, 1, -16384, -10) + ) == i16x8(0, 8192, 1, 1, 32767, 0, 8193, 10)); + + // TODO: unimp in Binaryen's interpreter + i16x8.extadd_pairwise_i8x16_s(a); + i16x8.extadd_pairwise_i8x16_u(a); + i16x8.extmul_low_i8x16_s(a, a); + i16x8.extmul_low_i8x16_u(a, a); + i16x8.extmul_high_i8x16_s(a, a); + i16x8.extmul_high_i8x16_u(a, a); + assert(i16x8.abs(i16x8(1, 1, 1, 1, 1, 1, 1, 1)) == i16x8(1, 1, 1, 1, 1, 1, 1, 1)); + assert(i16x8.abs(i16x8(-1, -1, -1, -1, -1, -1, -1, -1)) == i16x8(1, 1, 1, 1, 1, 1, 1, 1)); + assert(i16x8.abs(i16x8( + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE)) == i16x8(1, 1, 1, 1, 1, 1, 1, 1)); + assert(i16x8.abs(i16x8( + -32768, + -32768, + -32768, + -32768, + -32768, + -32768, + -32768, + -32768)) + == + i16x8( + i16(32768), + i16(32768), + i16(32768), + i16(32768), + i16(32768), + i16(32768), + i16(32768), + i16(32768)) + ); + assert( + i16x8.bitmask(i16x8( + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE, + u16.MAX_VALUE)) == 0x000000FF + ); + assert( + i16x8.bitmask(i16x8(-1, 0, 1, 2, 0xB, 0xC, 0xD, 0xF)) == 0x00000001 + ); +} + +function test_i32x4(): void { + var a = i32x4(1, 2, 3, 2147483647); + assert(a == v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, -1, 127)); + var b = i32x4.splat(1); + assert(b == v128(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)); + var c = i32x4.add(a, b); + assert(c == i32x4(2, 3, 4, -2147483648)); + assert(i32x4.sub(c, b) == a); + assert(i32x4.mul(c, b) == c); + assert( + i32x4.min_s( + i32x4(0, 2147483647, 2147483647, 0), + i32x4(-2147483648, 0, -2147483648, 0) + ) + == + i32x4(-2147483648, 0, -2147483648, 0) + ); + assert( + i32x4.min_u( + i32x4(0, 2147483647, 2147483647, 0), + i32x4(-2147483648, 0, -2147483648, 0) + ) + == + i32x4(0, 0, 2147483647, 0) + ); + assert( + i32x4.max_s( + i32x4(0, 2147483647, 2147483647, 0), + i32x4(-2147483648, 0, -2147483648, 0) + ) + == + i32x4(0, 2147483647, 2147483647, 0) + ); + assert( + i32x4.max_u( + i32x4(0, 2147483647, 2147483647, 0), + i32x4(-2147483648, 0, -2147483648, 0) + ) + == + i32x4(-2147483648, 2147483647, -2147483648, 0) + ); + assert( + i32x4.dot_i16x8_s( + i16x8(1, 2, 3, 4, -1, 3, 0, 0), + i16x8(5, 6, 7, 8, 2, -1, 0, 0), + ) + == + i32x4(17, 53, -5, 0) + ); + assert( + i32x4.neg(a) + == + i32x4(-1, -2, -3, -2147483647) + ); + assert(i32x4.extract_lane(c, 0) == 2); + assert(i32x4.extract_lane(c, 3) == -2147483648); + assert( + i32x4.replace_lane(c, 3, 5) + == + i32x4(2, 3, 4, 5) + ); + assert( + v128.shuffle(a, b, 0, 1, 6, 7) + == + i32x4(1, 2, 1, 1) + ); + assert(i32x4.shl(i32x4.splat(1), 1) == i32x4.splat(2)); + assert(i32x4.shr_s(i32x4.splat(-2), 1) == i32x4.splat(-1)); + assert(i32x4.shr_u(i32x4.splat(-1), 1) == i32x4.splat(2147483647)); + assert(v128.any_true(i32x4(1, 0, 0, 0)) == true); + assert(i32x4.all_true(i32x4.splat(1)) == true); + var one = i32x4.replace_lane(i32x4.splat(0), 0, 1); + var negOne = i32x4.replace_lane(i32x4.splat(0), 0, -1); + var only1st = negOne; + var excl1st = v128.not(negOne); + assert(i32x4.eq(negOne, one) == excl1st); + assert(i32x4.ne(negOne, one) == only1st); + assert(i32x4.lt_s(negOne, one) == only1st); + assert(i32x4.lt_u(one, negOne) == only1st); + assert(i32x4.le_s(one, negOne) == excl1st); + assert(i32x4.le_u(negOne, one) == excl1st); + assert(i32x4.gt_s(one, negOne) == only1st); + assert(i32x4.gt_u(negOne, one) == only1st); + assert(i32x4.ge_s(negOne, one) == excl1st); + assert(i32x4.ge_u(one, negOne) == excl1st); + assert( + i32x4.trunc_sat_f32x4_s(f32x4.splat(-1.5)) + == + i32x4.splat(-1) + ); + assert( + i32x4.trunc_sat_f32x4_u(f32x4.splat(-1.5)) + == + i32x4.splat(0) + ); + assert(i32x4.extend_low_i16x8_s(i16x8.replace_lane(i16x8.splat(-1), 4, 0)) == i32x4.splat(-1)); + assert(i32x4.extend_low_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 4, 0)) == i32x4.splat(65535)); + assert(i32x4.extend_high_i16x8_s(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(-1)); + assert(i32x4.extend_high_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(65535)); + assert( + i32x4.shuffle(a, b, 0, 1, 6, 7) + == + v128.shuffle(a, b, 0, 1, 6, 7) + ); + { + let ptr = __alloc(16); + store(ptr, 1); + store(ptr, 2, 2); + store(ptr, 3, 4); + store(ptr, -1, 6); + assert( + v128.load16x4_s(ptr) + == + v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, -1, -1) + ); + assert( + v128.load16x4_u(ptr) + == + v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, 0, 0) + ); + __free(ptr); + } + + // TODO: unimp in Binaryen's interpreter + i32x4.extadd_pairwise_i16x8_s(a); + i32x4.extadd_pairwise_i16x8_u(a); + i32x4.trunc_sat_f64x2_s_zero(a); + i32x4.trunc_sat_f64x2_u_zero(a); + i32x4.extmul_low_i16x8_s(a, a); + i32x4.extmul_low_i16x8_u(a, a); + i32x4.extmul_high_i16x8_s(a, a); + i32x4.extmul_high_i16x8_u(a, a); + assert(i32x4.abs(i32x4(1, 1, 1, 1)) == i32x4(1, 1, 1, 1)); + assert(i32x4.abs(i32x4(-1, -1, -1, -1)) == i32x4(1, 1, 1, 1)); + assert(i32x4.abs(i32x4(u32.MAX_VALUE, u32.MAX_VALUE, u32.MAX_VALUE, u32.MAX_VALUE)) == i32x4(1, 1, 1, 1)); + assert(i32x4.abs(i32x4(-2147483648, -2147483648, -2147483648, -2147483648)) == i32x4(2147483648, 2147483648, 2147483648, 2147483648)); + assert( + i32x4.bitmask(i32x4(1, -1, 1, -1)) == 10 + ); + assert( + i32x4.bitmask(i32x4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF)) == 0x0000000F + ); + assert( + i32x4.bitmask(i32x4(-1, 0, 1, 0xF)) == 1 + ); +} + +function test_i64x2(): void { + var a = i64x2(1, 9223372036854775807); + assert(a == v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 127)); + var b = i64x2.splat(1); + assert(b == v128(1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0)); + var c = i64x2.add(a, b); + assert(c == i64x2(2, -9223372036854775808)); + assert(i64x2.sub(c, b) == a); + assert(i64x2.mul(c, b) == c); + assert( + i64x2.neg(a) + == + i64x2(-1, -9223372036854775807) + ); + assert(i64x2.extract_lane(c, 0) == 2); + assert(i64x2.extract_lane(c, 1) == -9223372036854775808); + assert( + i64x2.replace_lane(c, 1, 3) + == + i64x2(2, 3) + ); + assert( + v128.shuffle(a, b, 0, 3) + == + i64x2(1, 1) + ); + assert(i64x2.shl(i64x2.splat(1), 1) == i64x2.splat(2)); + assert(i64x2.shr_s(i64x2.splat(-2), 1) == i64x2.splat(-1)); + assert(i64x2.shr_u(i64x2.splat(-1), 1) == i64x2.splat(9223372036854775807)); + assert(v128.any_true(i64x2(1, 0)) == true); + assert(i64x2.all_true(i64x2.splat(1)) == true); + { + let ptr = __alloc(16); + store(ptr, 1); + store(ptr, -1, 4); + assert( + v128.load32x2_s(ptr) + == + v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1) + ); + assert( + v128.load32x2_u(ptr) + == + v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0) + ); + __free(ptr); + } + // TODO: unimp in Binaryen's interpreter + i64x2.extmul_low_i32x4_s(a, a); + i64x2.extmul_low_i32x4_u(a, a); + i64x2.extmul_high_i32x4_s(a, a); + i64x2.extmul_high_i32x4_u(a, a); + assert(i64x2.eq(i64x2(12, 12),i64x2(12, 12)) == i64x2(-1, -1)); + assert(i64x2.eq(i64x2(12, 12),i64x2(12, 13)) == i64x2(-1, 0)); + assert(i64x2.ne(i64x2(12, 12),i64x2(12, 13)) == i64x2(0, -1)); + assert(i64x2.ne(i64x2(11, 12),i64x2(12, 13)) == i64x2(-1, -1)); + assert(i64x2.lt_s(i64x2(1, 0), i64x2(2, 0)) == i64x2(-1, 0)); + assert(i64x2.lt_s(i64x2(1, 0), i64x2(2, 1)) == i64x2(-1, -1)); + assert(i64x2.le_s(i64x2(1, 0), i64x2(2, 0)) == i64x2(-1, -1)); + assert(i64x2.le_s(i64x2(1, 0), i64x2(2, 1)) == i64x2(-1, -1)); + assert(i64x2.gt_s(i64x2(2, 0), i64x2(1, 0)) == i64x2(-1, 0)); + assert(i64x2.gt_s(i64x2(2, 1), i64x2(1, 0)) == i64x2(-1, -1)); + assert(i64x2.ge_s(i64x2(2, 0), i64x2(1, 0)) == i64x2(-1, -1)); + assert(i64x2.ge_s(i64x2(2, 1), i64x2(1, 0)) == i64x2(-1, -1)); + assert(i64x2.extend_low_i32x4_s(i32x4(-1, 1, 1, -1)) == i64x2(-1, 1)); + assert(i64x2.extend_low_i32x4_s(i32x4(0, 0, 1, -1)) == i64x2(0, 0)); + assert(i64x2.extend_low_i32x4_s(i32x4(1, 1, 0, 0)) == i64x2(1, 1)); + assert(i64x2.extend_low_i32x4_s(i32x4(1, 0, 1, 0)) == i64x2(1, 0)); + assert(i64x2.extend_low_i32x4_s(i32x4(-2147483648, -2147483648, 2147483647, 2147483647)) == i64x2(-2147483648, -2147483648)); + assert(i64x2.extend_low_i32x4_s(i32x4(-1, -1, 2147483647, 2147483647)) == i64x2(-1, -1)); + assert(i64x2.extend_low_i32x4_u(i32x4(0, 0, 0, 0)) == i64x2(0, 0)); + assert(i64x2.extend_low_i32x4_u(i32x4(0, 0, 1, -1)) == i64x2(0, 0)); + assert(i64x2.extend_low_i32x4_u(i32x4(1, 1, 0, 0)) == i64x2(1, 1)); + assert(i64x2.extend_low_i32x4_u(i32x4(-1, -1, 0, 0)) == i64x2(4294967295, 4294967295)); + assert(i64x2.extend_low_i32x4_u(i32x4(-2147483648, -2147483648, -2147483648, -2147483648)) + == + i64x2(2147483648, 2147483648) + ); + assert(i64x2.extend_low_i32x4_u(i32x4(-1, -1, 2147483647, 2147483647)) + == + i64x2(4294967295, 4294967295) + ); + assert(i64x2.extend_high_i32x4_s(i32x4(-1, 1, 1, -1)) == i64x2(1, -1)); + assert(i64x2.extend_high_i32x4_s(i32x4(0, 0, 1, -1)) == i64x2(1, -1)); + assert(i64x2.extend_high_i32x4_s(i32x4(1, 1, 0, 0)) == i64x2(0, 0)); + assert(i64x2.extend_high_i32x4_s(i32x4(1, 0, 1, 0)) == i64x2(1, 0)); + assert(i64x2.extend_high_i32x4_s(i32x4(-2147483648, -2147483648, 2147483647, 2147483647)) == i64x2(2147483647, 2147483647)); + assert(i64x2.extend_high_i32x4_s(i32x4(-1, -1, 2147483647, 2147483647)) == i64x2(2147483647, 2147483647)); + assert(i64x2.extend_high_i32x4_u(i32x4(0, 0, 0, 0)) == i64x2(0, 0)); + assert(i64x2.extend_high_i32x4_u(i32x4(0, 0, 1, -1)) == i64x2(1, 4294967295)); + assert(i64x2.extend_high_i32x4_u(i32x4(1, 1, 0, 0)) == i64x2(0, 0)); + assert(i64x2.extend_high_i32x4_u(i32x4(0, 0, -1, -1)) == i64x2(4294967295, 4294967295)); + assert(i64x2.extend_high_i32x4_u(i32x4(-2147483648, -2147483648, -2147483648, -2147483648)) + == + i64x2(2147483648, 2147483648) + ); + assert(i64x2.extend_high_i32x4_u(i32x4(2147483647, 2147483647, -1, -1)) + == + i64x2(4294967295, 4294967295) + ); + assert(i64x2.abs(i64x2(1, 1)) == i64x2(1, 1)); + assert(i64x2.abs(i64x2(u64.MAX_VALUE, u64.MAX_VALUE)) == i64x2(1, 1)); + assert(i64x2.abs(i64x2(-9223372036854775808, -9223372036854775808)) == i64x2(9223372036854775808, 9223372036854775808)); + assert( + i64x2.bitmask(i64x2(0xFFFFFFFF_FFFFFFFF, 0xFFFFFFFF_FFFFFFFF)) == 0x00000003 + ); + assert( + i64x2.bitmask(i64x2(-1, 0xF)) == 0x00000001 + ); +} + +function test_f32x4(): void { + var a = f32x4(1.5, 2.5, 3.5, 4.5); + assert(a == v128(0, 0, -64, 63, 0, 0, 32, 64, 0, 0, 96, 64, 0, 0, -112, 64)); + var b = f32x4.splat(1.0); + assert(b == v128(0, 0, -128, 63, 0, 0, -128, 63, 0, 0, -128, 63, 0, 0, -128, 63)); + var c = f32x4.add(a, b); + assert(c == f32x4(2.5, 3.5, 4.5, 5.5)); + assert(f32x4.sub(c, b) == a); + assert(f32x4.mul(c, b) == c); + var d = f32x4.mul(a, a); + assert(f32x4.div(d, a) == a); + assert(f32x4.mul(d, a) != a); + assert(f32x4.neg(a) == f32x4(-1.5, -2.5, -3.5, -4.5)); + assert(f32x4.extract_lane(c, 0) == 2.5); + assert(f32x4.extract_lane(c, 3) == 5.5); + assert( + f32x4.replace_lane(c, 3, 6.5) + == + f32x4(2.5, 3.5, 4.5, 6.5) + ); + assert( + v128.shuffle(a, b, 0, 1, 6, 7) + == + f32x4(1.5, 2.5, 1.0, 1.0) + ); + var one = f32x4.replace_lane(f32x4.splat(0), 0, 1); + var negOne = f32x4.replace_lane(f32x4.splat(0), 0, -1); + var only1st = i32x4(-1, 0, 0, 0); + var excl1st = i32x4(0, -1, -1, -1); + assert(f32x4.eq(negOne, one) == excl1st); + assert(f32x4.ne(negOne, one) == only1st); + assert(f32x4.lt(negOne, one) == only1st); + assert(f32x4.le(one, negOne) == excl1st); + assert(f32x4.gt(one, negOne) == only1st); + assert(f32x4.ge(negOne, one) == excl1st); + assert(f32x4.min(negOne, one) == negOne); + assert(f32x4.max(negOne, one) == one); + assert(f32x4.abs(negOne) == one); + assert(f32x4.sqrt(f32x4(4.0, 9.0, 16.0, 25.0)) == f32x4(2.0, 3.0, 4.0, 5.0)); + assert( + f32x4.convert_i32x4_s(i32x4.splat(-1)) + == + f32x4.splat(-1.0) + ); + assert( + f32x4.convert_i32x4_u(i32x4.splat(-1)) + == + f32x4.splat(4294967296.0) + ); + + // TODO: unimp in Binaryen's interpreter + f32x4.demote_f64x2_zero(a); + assert( + f32x4.pmin(f32x4(1, -1, 1, -1), f32x4(-1, 1, -1, 1)) + == + f32x4(-1, -1, -1, -1) + ); + assert( + f32x4.pmax(f32x4(1, -1, 1, -1), f32x4(-1, 1, -1, 1)) + == + f32x4(1, 1, 1, 1) + ); + { + let v: v128 = f32x4.ceil(f32x4(1.1, -0.25, 70.01, 4.0)); + assert(v == f32x4(2, -0.0, 71, 4)); + } + { + let v: v128 =f32x4.floor(f32x4(1.1, -0.25, 70.01, 4.0)); + assert(v == f32x4(1, -1, 70, 4)); + } + assert( + f32x4.trunc(f32x4(1.1, 2.5, 3.9, 4.0)) + == + f32x4(1.0, 2.0, 3.0, 4.0) + ); + assert( + f32x4.nearest(f32x4(1.1, 2.5, 3.51, 4.0)) + == + f32x4(1.0, 2.0, 4.0, 4.0) + ); +} + +function test_f64x2(): void { + var a = f64x2(1.5, 2.5); + assert(a == v128(0, 0, 0, 0, 0, 0, -8, 63, 0, 0, 0, 0, 0, 0, 4, 64)); + var b = f64x2.splat(1.0); + assert(b == v128(0, 0, 0, 0, 0, 0, -16, 63, 0, 0, 0, 0, 0, 0, -16, 63)); + var c = f64x2.add(a, b); + assert(c == f64x2(2.5, 3.5)); + assert(f64x2.sub(c, b) == a); + assert(f64x2.mul(c, b) == c); + var d = f64x2.mul(a, a); + assert(f64x2.div(d, a) == a); + assert(f64x2.mul(d, a) != a); + assert(f64x2.neg(a) == f64x2(-1.5, -2.5)); + assert(f64x2.extract_lane(c, 0) == 2.5); + assert(f64x2.extract_lane(c, 1) == 3.5); + assert( + f64x2.replace_lane(c, 1, 4.5) + == + f64x2(2.5, 4.5) + ); + assert( + v128.shuffle(a, b, 0, 3) + == + f64x2(1.5, 1.0) + ); + var one = f64x2.replace_lane(f64x2.splat(0), 0, 1); + var negOne = f64x2.replace_lane(f64x2.splat(0), 0, -1); + var only1st = i64x2(-1, 0); + var excl1st = i64x2(0, -1); + assert(f64x2.eq(negOne, one) == excl1st); + assert(f64x2.ne(negOne, one) == only1st); + assert(f64x2.lt(negOne, one) == only1st); + assert(f64x2.le(one, negOne) == excl1st); + assert(f64x2.gt(one, negOne) == only1st); + assert(f64x2.ge(negOne, one) == excl1st); + assert(f64x2.min(negOne, one) == negOne); + assert(f64x2.max(negOne, one) == one); + assert(f64x2.abs(negOne) == one); + assert(f64x2.sqrt(f64x2(4.0, 9.0)) == f64x2(2.0, 3.0)); + + // TODO: unimp in Binaryen's interpreter + f64x2.convert_low_i32x4_s(a); + f64x2.convert_low_i32x4_u(a); + f64x2.promote_low_f32x4(a); + assert( + f64x2.pmin(f64x2(1, -1), f64x2(-1, 1)) + == + f64x2(-1, -1) + ); + assert( + f64x2.pmax(f64x2(1, -1), f64x2(-1, 1)) + == + f64x2(1, 1) + ); + { + let v: v128 = f64x2.ceil(f64x2(1.1, -0.25)); + assert(v == f64x2(2, -0.0)); + } + { + let v: v128 =f64x2.floor(f64x2(1.1, -0.25)); + assert(v == f64x2(1, -1)); + } + assert( + f64x2.trunc(f64x2(1.1, 3.9)) + == + f64x2(1.0, 3.0) + ); + assert( + f64x2.nearest(f64x2(1.1, 3.51)) + == + f64x2(1.0, 4.0) + ); +} + +function test_const(): v128 { + const one = i32x4.splat(1); // should precompute + return one; // should not inline +} + +export function reexport(a: v128): v128 { + return i32x4.mul(a, a); +} + +export function test_vars_i8x16_partial(a: i8, b: i8, c: i8): v128 { + return i8x16(0, 1, a, 3, 4, 5, b, 7, 8, 9, 10, 11, 12, 13, 14, c); +} + +export function test_vars_i8x16_full( + a: i8, b: i8, c: i8, d: i8, + e: i8, f: i8, g: i8, h: i8, + i: i8, k: i8, l: i8, m: i8, + n: i8, o: i8, p: i8, q: i8 +): v128 { + return i8x16(a, b, c, d, e, f, g, h, i, k, l, m, n, o, p, q); +} + +export function test_vars_i16x8_partial(a: i16, b: i16, c: i16): v128 { + return i16x8(0, 1, a, 3, b, 5, 6, c); +} + +export function test_vars_i16x8_full( + a: i16, b: i16, c: i16, d: i16, + e: i16, f: i16, g: i16, h: i16 +): v128 { + return i16x8(a, b, c, d, e, f, g, h); +} + +export function test_vars_i32x4_partial(a: i32, b: i32, c: i32): v128 { + return i32x4(0, a, b, c); +} + +export function test_vars_i32x4_full(a: i32, b: i32, c: i32, d: i32): v128 { + return i32x4(a, b, c, d); +} + +export function test_vars_i64x2_partial(a: i64): v128 { + return i64x2(0, a); +} + +export function test_vars_i64x2_full(a: i64, b: i64): v128 { + return i64x2(a, b); +} + +export function test_vars_f32x4_partial(a: f32, b: f32, c: f32): v128 { + return f32x4(0, a, b, c); +} + +export function test_vars_f32x4_full(a: f32, b: f32, c: f32, d: f32): v128 { + return f32x4(a, b, c, d); +} + +export function test_vars_f64x2_partial(a: f64): v128 { + return f64x2(0, a); +} + +export function test_vars_f64x2_full(a: f64, b: f64): v128 { + return f64x2(a, b); +} + +// test exported var +export let vec: v128 = i32x4.splat(1); + +// test builtins +assert(isVector()); +assert(!isVector()); + +assert(isVector(i32x4.splat(0))); +assert(!isVector(0)); + +test_v128(); +test_i8x16(); +test_i16x8(); +test_i32x4(); +test_i64x2(); +test_f32x4(); +test_f64x2(); +test_const(); diff --git a/tests/compiler/simd.untouched.wat b/tests/compiler/simd.untouched.wat deleted file mode 100644 index ed2aec3b8e..0000000000 --- a/tests/compiler/simd.untouched.wat +++ /dev/null @@ -1,2083 +0,0 @@ -(module - (type $FUNCSIG$v (func)) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s\00") - (table $0 1 funcref) - (elem (i32.const 0) $null) - (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 0)) - (export "memory" (memory $0)) - (start $start) - (func $simd/test_v128 (; 1 ;) (type $FUNCSIG$v) - nop - ) - (func $simd/test_i8x16 (; 2 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x7f0f0e0d - local.set $0 - local.get $0 - v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x7f0f0e0d - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 60 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i8x16.splat - local.set $1 - local.get $1 - v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 62 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i8x16.add - local.set $2 - local.get $2 - v128.const i32x4 0x05040302 0x09080706 0x0d0c0b0a 0x80100f0e - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 64 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i8x16.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 65 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i8x16.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 66 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i8x16.neg - v128.const i32x4 0xfcfdfeff 0xf8f9fafb 0xf4f5f6f7 0x81f1f2f3 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 67 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i8x16.extract_lane_s 0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 72 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i8x16.extract_lane_s 15 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 73 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i8x16.extract_lane_u 15 - i32.const 255 - i32.and - i32.const 128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 74 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 17 - i8x16.replace_lane 15 - v128.const i32x4 0x05040302 0x09080706 0x0d0c0b0a 0x11100f0e - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 75 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x04030201 0x08070605 0x01010101 0x01010101 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 80 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i8x16.splat - i32.const 1 - i8x16.replace_lane 0 - local.set $3 - i32.const 0 - i8x16.splat - i32.const -1 - i8x16.replace_lane 0 - local.set $4 - local.get $4 - local.set $5 - local.get $4 - v128.not - local.set $6 - local.get $4 - local.get $3 - i8x16.eq - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 118 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.ne - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 119 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.lt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 120 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i8x16.lt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 121 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i8x16.le_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 122 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.le_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 123 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i8x16.gt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 124 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.gt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 125 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i8x16.ge_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 126 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i8x16.ge_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 127 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $simd/test_i16x8 (; 3 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - v128.const i32x4 0x00020001 0x00040003 0x00060005 0x7fff0007 - local.set $0 - local.get $0 - v128.const i32x4 0x00020001 0x00040003 0x00060005 0x7fff0007 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 132 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i16x8.splat - local.set $1 - local.get $1 - v128.const i32x4 0x00010001 0x00010001 0x00010001 0x00010001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 134 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i16x8.add - local.set $2 - local.get $2 - v128.const i32x4 0x00030002 0x00050004 0x00070006 0x80000008 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 136 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i16x8.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 137 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i16x8.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 138 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i16x8.neg - v128.const i32x4 0xfffeffff 0xfffcfffd 0xfffafffb 0x8001fff9 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 139 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i16x8.extract_lane_s 0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 144 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i16x8.extract_lane_s 7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 145 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i16x8.extract_lane_u 7 - i32.const 65535 - i32.and - i32.const 32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 146 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i16x8.replace_lane 7 - v128.const i32x4 0x00030002 0x00050004 0x00070006 0x00090008 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 147 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x00020001 0x00040003 0x00010001 0x00010001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 152 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i16x8.splat - i32.const 1 - i16x8.replace_lane 0 - local.set $3 - i32.const 0 - i16x8.splat - i32.const -1 - i16x8.replace_lane 0 - local.set $4 - local.get $4 - local.set $5 - local.get $4 - v128.not - local.set $6 - local.get $4 - local.get $3 - i16x8.eq - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 190 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.ne - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 191 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.lt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 192 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i16x8.lt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 193 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i16x8.le_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 194 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.le_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 195 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i16x8.gt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 196 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.gt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 197 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i16x8.ge_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 198 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i16x8.ge_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 199 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $simd/test_i32x4 (; 4 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - v128.const i32x4 0x00000001 0x00000002 0x00000003 0x7fffffff - local.set $0 - local.get $0 - v128.const i32x4 0x00000001 0x00000002 0x00000003 0x7fffffff - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 204 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32x4.splat - local.set $1 - local.get $1 - v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 206 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32x4.add - local.set $2 - local.get $2 - v128.const i32x4 0x00000002 0x00000003 0x00000004 0x80000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 208 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32x4.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 209 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32x4.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 210 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32x4.neg - v128.const i32x4 0xffffffff 0xfffffffe 0xfffffffd 0x80000001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 211 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32x4.extract_lane 0 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 216 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32x4.extract_lane 3 - i32.const -2147483648 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 217 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 5 - i32x4.replace_lane 3 - v128.const i32x4 0x00000002 0x00000003 0x00000004 0x00000005 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 218 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x00000001 0x00000002 0x00000001 0x00000001 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 223 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32x4.splat - i32.const 1 - i32x4.replace_lane 0 - local.set $3 - i32.const 0 - i32x4.splat - i32.const -1 - i32x4.replace_lane 0 - local.set $4 - local.get $4 - local.set $5 - local.get $4 - v128.not - local.set $6 - local.get $4 - local.get $3 - i32x4.eq - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 237 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.ne - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 238 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.lt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 239 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32x4.lt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 240 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32x4.le_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 241 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.le_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 242 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32x4.gt_s - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 243 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.gt_u - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 244 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $3 - i32x4.ge_s - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 245 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32x4.ge_u - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 246 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $simd/test_i64x2 (; 5 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - (local $2 v128) - v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x7fffffff - local.set $0 - local.get $0 - v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x7fffffff - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 261 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64x2.splat - local.set $1 - local.get $1 - v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 263 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i64x2.add - local.set $2 - local.get $2 - v128.const i32x4 0x00000002 0x00000000 0x00000000 0x80000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 265 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i64x2.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 266 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64x2.neg - v128.const i32x4 0xffffffff 0xffffffff 0x00000001 0x80000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 267 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i64x2.extract_lane 0 - i64.const 2 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 272 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i64x2.extract_lane 1 - i64.const -9223372036854775808 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 273 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i64.const 3 - i64x2.replace_lane 1 - v128.const i32x4 0x00000002 0x00000000 0x00000003 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 274 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x00000001 0x00000000 0x00000001 0x00000000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 279 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $simd/test_f32x4 (; 6 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - (local $7 v128) - v128.const i32x4 0x3fc00000 0x40200000 0x40600000 0x40900000 - local.set $0 - local.get $0 - v128.const i32x4 0x3fc00000 0x40200000 0x40600000 0x40900000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 303 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32x4.splat - local.set $1 - local.get $1 - v128.const i32x4 0x3f800000 0x3f800000 0x3f800000 0x3f800000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 305 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - f32x4.add - local.set $2 - local.get $2 - v128.const i32x4 0x40200000 0x40600000 0x40900000 0x40b00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 307 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - f32x4.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 308 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - f32x4.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 309 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - f32x4.mul - local.set $3 - local.get $3 - local.get $0 - f32x4.div - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 311 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $0 - f32x4.mul - local.get $0 - i8x16.ne - i8x16.any_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 312 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32x4.neg - v128.const i32x4 0xbfc00000 0xc0200000 0xc0600000 0xc0900000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 313 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f32x4.extract_lane 0 - f32.const 2.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 314 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f32x4.extract_lane 3 - f32.const 5.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 315 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f32.const 6.5 - f32x4.replace_lane 3 - v128.const i32x4 0x40200000 0x40600000 0x40900000 0x40d00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 316 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x3fc00000 0x40200000 0x3f800000 0x3f800000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 321 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32x4.splat - f32.const 1 - f32x4.replace_lane 0 - local.set $4 - f32.const 0 - f32x4.splat - f32.const -1 - f32x4.replace_lane 0 - local.set $5 - v128.const i32x4 0xffffffff 0x00000000 0x00000000 0x00000000 - local.set $6 - v128.const i32x4 0x00000000 0xffffffff 0xffffffff 0xffffffff - local.set $7 - local.get $5 - local.get $4 - f32x4.eq - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 330 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.ne - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 331 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.lt - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 332 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $5 - f32x4.le - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 333 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $5 - f32x4.gt - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 334 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.ge - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.min - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 336 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f32x4.max - local.get $4 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 337 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - f32x4.abs - local.get $4 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $simd/test_f64x2 (; 7 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 v128) - (local $4 v128) - (local $5 v128) - (local $6 v128) - (local $7 v128) - v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x40040000 - local.set $0 - local.get $0 - v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x40040000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 354 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64x2.splat - local.set $1 - local.get $1 - v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x3ff00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 356 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - f64x2.add - local.set $2 - local.get $2 - v128.const i32x4 0x00000000 0x40040000 0x00000000 0x400c0000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 358 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - f64x2.sub - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 359 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - f64x2.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 360 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - f64x2.mul - local.set $3 - local.get $3 - local.get $0 - f64x2.div - local.get $0 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 362 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $0 - f64x2.mul - local.get $0 - i8x16.ne - i8x16.any_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 363 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64x2.neg - v128.const i32x4 0x00000000 0xbff80000 0x00000000 0xc0040000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 364 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f64x2.extract_lane 0 - f64.const 2.5 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f64x2.extract_lane 1 - f64.const 3.5 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 366 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - f64.const 4.5 - f64x2.replace_lane 1 - v128.const i32x4 0x00000000 0x40040000 0x00000000 0x40120000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 367 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 - v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x3ff00000 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 372 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64x2.splat - f64.const 1 - f64x2.replace_lane 0 - local.set $4 - f64.const 0 - f64x2.splat - f64.const -1 - f64x2.replace_lane 0 - local.set $5 - v128.const i32x4 0xffffffff 0xffffffff 0x00000000 0x00000000 - local.set $6 - v128.const i32x4 0x00000000 0x00000000 0xffffffff 0xffffffff - local.set $7 - local.get $5 - local.get $4 - f64x2.eq - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 381 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.ne - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 382 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.lt - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 383 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $5 - f64x2.le - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 384 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $5 - f64x2.gt - local.get $6 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 385 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.ge - local.get $7 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 386 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.min - local.get $5 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 387 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $4 - f64x2.max - local.get $4 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 388 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - f64x2.abs - local.get $4 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 389 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $simd/test_v8x16 (; 8 ;) (type $FUNCSIG$v) - (local $0 v128) - (local $1 v128) - v128.const i32x4 0x03020100 0x07060504 0x0b0a0908 0x0f0e0d0c - local.set $0 - v128.const i32x4 0x13121110 0x17161514 0x1b1a1918 0x1f1e1d1c - local.set $1 - local.get $0 - local.get $1 - v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 - v128.const i32x4 0x13021100 0x17061504 0x1b0a1908 0x1f0e1d0c - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 406 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:simd (; 9 ;) (type $FUNCSIG$v) - call $simd/test_v128 - call $simd/test_i8x16 - call $simd/test_i16x8 - call $simd/test_i32x4 - call $simd/test_i64x2 - call $simd/test_f32x4 - call $simd/test_f64x2 - call $simd/test_v8x16 - ) - (func $start (; 10 ;) (type $FUNCSIG$v) - call $start:simd - ) - (func $null (; 11 ;) (type $FUNCSIG$v) - ) -) diff --git a/tests/compiler/static-this.debug.wat b/tests/compiler/static-this.debug.wat new file mode 100644 index 0000000000..4b335cf70f --- /dev/null +++ b/tests/compiler/static-this.debug.wat @@ -0,0 +1,37 @@ +(module + (type $0 (func)) + (type $1 (func (result i32))) + (type $2 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $static-this/Foo.bar (mut i32) (i32.const 42)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $static-this/Foo.getBar (result i32) + global.get $static-this/Foo.bar + return + ) + (func $start:static-this + call $static-this/Foo.getBar + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:static-this + ) +) diff --git a/tests/compiler/static-this.json b/tests/compiler/static-this.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/static-this.json +++ b/tests/compiler/static-this.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/static-this.optimized.wat b/tests/compiler/static-this.optimized.wat deleted file mode 100644 index d5d9d64094..0000000000 --- a/tests/compiler/static-this.optimized.wat +++ /dev/null @@ -1,5 +0,0 @@ -(module - (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s") - (export "memory" (memory $0)) -) diff --git a/tests/compiler/static-this.release.wat b/tests/compiler/static-this.release.wat new file mode 100644 index 0000000000..0f18b92259 --- /dev/null +++ b/tests/compiler/static-this.release.wat @@ -0,0 +1,6 @@ +(module + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s") + (export "memory" (memory $0)) +) diff --git a/tests/compiler/static-this.untouched.wat b/tests/compiler/static-this.untouched.wat deleted file mode 100644 index 25a4783c22..0000000000 --- a/tests/compiler/static-this.untouched.wat +++ /dev/null @@ -1,32 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s\00") - (table $0 1 funcref) - (global $static-this/Foo.bar (mut i32) (i32.const 42)) - (export "memory" (memory $0)) - (start $~start) - (func $static-this/Foo.getBar (result i32) - global.get $static-this/Foo.bar - ) - (func $start:static-this - call $static-this/Foo.getBar - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:static-this - ) -) diff --git a/tests/compiler/std/array-access.debug.wat b/tests/compiler/std/array-access.debug.wat new file mode 100644 index 0000000000..951850584d --- /dev/null +++ b/tests/compiler/std/array-access.debug.wat @@ -0,0 +1,940 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 284)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33052)) + (global $~lib/memory/__heap_base i32 (i32.const 33052)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $2 (i32.const 124) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "i32ArrayArrayElementAccess" (func $export:std/array-access/i32ArrayArrayElementAccess)) + (export "stringArrayPropertyAccess" (func $export:std/array-access/stringArrayPropertyAccess)) + (export "stringArrayMethodCall" (func $export:std/array-access/stringArrayMethodCall)) + (export "stringArrayArrayPropertyAccess" (func $export:std/array-access/stringArrayArrayPropertyAccess)) + (export "stringArrayArrayMethodCall" (func $export:std/array-access/stringArrayArrayMethodCall)) + (export "functionArrayElementCall" (func $export:std/array-access/functionArrayElementCall)) + (func $~lib/array/Array<~lib/array/Array>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/array/Array>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<%28i32%29=>i32>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<%28i32%29=>i32>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33072 + i32.const 33120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array<~lib/array/Array>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 144 + i32.const 96 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array-access/i32ArrayArrayElementAccess (param $a i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 144 + i32.const 96 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array-access/stringArrayPropertyAccess (param $a i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/string/String#startsWith (param $this i32) (param $search i32) (param $start i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $searchStart i32) + (local $searchLength i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $len + local.get $start + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $searchStart + local.get $search + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $searchLength + local.get $searchLength + local.get $searchStart + i32.add + local.get $len + i32.gt_s + if + i32.const 0 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + local.get $searchStart + local.get $search + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + i32.const 0 + local.get $searchLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $std/array-access/stringArrayMethodCall (param $a i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 272 + i32.const 0 + call $~lib/string/String#startsWith + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length_ + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 144 + i32.const 96 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array-access/stringArrayArrayPropertyAccess (param $a i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $a + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $std/array-access/stringArrayArrayMethodCall (param $a i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $a + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 272 + i32.const 0 + call $~lib/string/String#startsWith + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<%28i32%29=>i32>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%29=>i32>#get:length_ + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%29=>i32>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 144 + i32.const 96 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array-access/functionArrayElementCall (param $a i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 123 + i32.const 1 + global.set $~argumentsLength + local.get $a + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array<%28i32%29=>i32>#__get + i32.load + call_indirect (type $0) + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $std/array-access/i32ArrayArrayElementAccess + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $std/array-access/stringArrayPropertyAccess + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:std/array-access/stringArrayMethodCall (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $std/array-access/stringArrayMethodCall + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $std/array-access/stringArrayArrayPropertyAccess + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $std/array-access/stringArrayArrayMethodCall + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:std/array-access/functionArrayElementCall (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $std/array-access/functionArrayElementCall + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/std/array-access.json b/tests/compiler/std/array-access.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/std/array-access.json +++ b/tests/compiler/std/array-access.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat deleted file mode 100644 index 8c4643e1d0..0000000000 --- a/tests/compiler/std/array-access.optimized.wat +++ /dev/null @@ -1,217 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 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" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1088) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1136) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 1252) "\01\00\00\00\01") - (data (i32.const 1264) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (export "memory" (memory $0)) - (export "i32ArrayArrayElementAccess" (func $std/array-access/i32ArrayArrayElementAccess)) - (export "stringArrayPropertyAccess" (func $std/array-access/stringArrayPropertyAccess)) - (export "stringArrayMethodCall" (func $std/array-access/stringArrayMethodCall)) - (export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess)) - (export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall)) - (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1040 - i32.const 1104 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - local.get $0 - i32.eqz - if - i32.const 1152 - i32.const 1104 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) - i32.const 1 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - local.tee $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1040 - i32.const 1104 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.load offset=4 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - call $~lib/string/String#get:length - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1264 - local.set $3 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $1 - i32.const 7 - i32.and - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $1 - i64.load - local.get $3 - i64.load - i64.eq - if - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - if - local.get $3 - i32.load16_u - local.tee $0 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $4 - local.get $0 - i32.sub - return - end - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/string/String#startsWith (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - i32.lt_s - local.set $1 - i32.const 0 - local.get $2 - local.get $1 - select - local.tee $1 - i32.const 1264 - call $~lib/string/String#get:length - local.tee $3 - i32.add - local.get $2 - i32.gt_s - if - i32.const 0 - return - end - local.get $0 - local.get $1 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - ) - (func $std/array-access/stringArrayMethodCall (param $0 i32) (result i32) - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - call $~lib/string/String#startsWith - ) - (func $std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - i32.const 1 - call $~lib/array/Array<~lib/array/Array>#__get - call $~lib/string/String#get:length - ) - (func $std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - i32.const 1 - call $~lib/array/Array<~lib/array/Array>#__get - call $~lib/string/String#startsWith - ) -) diff --git a/tests/compiler/std/array-access.release.wat b/tests/compiler/std/array-access.release.wat new file mode 100644 index 0000000000..d9ec8e7386 --- /dev/null +++ b/tests/compiler/std/array-access.release.wat @@ -0,0 +1,593 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34076)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $1 (i32.const 1100) ",") + (data $1.1 (i32.const 1112) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $2 (i32.const 1148) "|") + (data $2.1 (i32.const 1160) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $3 (i32.const 1276) "\1c") + (data $3.1 (i32.const 1288) "\02") + (table $0 1 1 funcref) + (export "memory" (memory $0)) + (export "i32ArrayArrayElementAccess" (func $export:std/array-access/i32ArrayArrayElementAccess)) + (export "stringArrayPropertyAccess" (func $export:std/array-access/stringArrayPropertyAccess)) + (export "stringArrayMethodCall" (func $export:std/array-access/stringArrayMethodCall)) + (export "stringArrayArrayPropertyAccess" (func $export:std/array-access/stringArrayArrayPropertyAccess)) + (export "stringArrayArrayMethodCall" (func $export:std/array-access/stringArrayArrayMethodCall)) + (export "functionArrayElementCall" (func $export:std/array-access/functionArrayElementCall)) + (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + if + i32.const 34096 + i32.const 34144 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1168 + i32.const 1120 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/string/String#startsWith (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + if + i32.const 34096 + i32.const 34144 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store + i32.const 1292 + i32.load + i32.const 1 + i32.shr_u + local.tee $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1296 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=4 + i32.const 1 + local.get $0 + local.tee $1 + i32.const 7 + i32.and + local.get $2 + local.tee $0 + i32.const 4 + i32.lt_u + select + i32.eqz + if + loop $do-loop|0 + local.get $1 + i64.load + local.get $3 + i64.load + i64.eq + if + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$10 + loop $while-continue|1 + local.get $0 + local.tee $2 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + if + local.get $1 + i32.load16_u + local.tee $4 + local.get $3 + i32.load16_u + local.tee $5 + i32.sub + local.set $2 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$10 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $while-continue|1 + end + end + i32.const 0 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.eqz + ) + (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.le_u + if + i32.const 1056 + i32.const 1120 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34096 + i32.const 34144 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34096 + i32.const 34144 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:std/array-access/stringArrayMethodCall (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/string/String#startsWith + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34096 + i32.const 34144 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34096 + i32.const 34144 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/string/String#startsWith + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34096 + i32.const 34144 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:std/array-access/functionArrayElementCall (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 123 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + i32.load + call_indirect (type $0) + unreachable + end + i32.const 34096 + i32.const 34144 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/std/array-access.ts b/tests/compiler/std/array-access.ts index 944edf6740..26729d4ffc 100644 --- a/tests/compiler/std/array-access.ts +++ b/tests/compiler/std/array-access.ts @@ -17,3 +17,9 @@ export function stringArrayArrayPropertyAccess(a: string[][]): i32 { export function stringArrayArrayMethodCall(a: string[][]): i32 { return a[0][1].startsWith(""); } + +// FIXME: Parenthesizing signature types is not supported +type T = (x: i32) => i32 +export function functionArrayElementCall(a: T[]): i32 { + return a[0](123); +} diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat deleted file mode 100644 index 5a71f70c10..0000000000 --- a/tests/compiler/std/array-access.untouched.wat +++ /dev/null @@ -1,511 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 80) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 128) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (data (i32.const 240) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 256) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (table $0 1 funcref) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (export "memory" (memory $0)) - (export "i32ArrayArrayElementAccess" (func $std/array-access/i32ArrayArrayElementAccess)) - (export "stringArrayPropertyAccess" (func $std/array-access/stringArrayPropertyAccess)) - (export "stringArrayMethodCall" (func $std/array-access/stringArrayMethodCall)) - (export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess)) - (export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall)) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/array/Array<~lib/array/Array>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 32 - i32.const 96 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 144 - i32.const 96 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 32 - i32.const 96 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - local.tee $1 - i32.const 1 - call $~lib/array/Array#__get - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/array/Array<~lib/string/String>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 32 - i32.const 96 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 144 - i32.const 96 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - call $~lib/string/String#get:length - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String#startsWith (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.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 272 - local.tee $3 - local.get $1 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - end - local.get $3 - local.set $1 - end - local.get $0 - call $~lib/string/String#get:length - local.set $5 - local.get $2 - local.tee $3 - i32.const 0 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_s - select - local.tee $3 - local.get $5 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $6 - local.get $1 - call $~lib/string/String#get:length - local.set $7 - local.get $7 - local.get $6 - i32.add - local.get $5 - i32.gt_s - if - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - return - end - local.get $0 - local.get $6 - local.get $1 - i32.const 0 - local.get $7 - call $~lib/util/string/compareImpl - i32.eqz - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $std/array-access/stringArrayMethodCall (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 256 - i32.const 0 - call $~lib/string/String#startsWith - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 32 - i32.const 96 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 144 - i32.const 96 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - ) - (func $std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get - local.tee $1 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get - local.tee $1 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 256 - i32.const 0 - call $~lib/string/String#startsWith - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) -) diff --git a/tests/compiler/std/array-literal.debug.wat b/tests/compiler/std/array-literal.debug.wat new file mode 100644 index 0000000000..641be48a4f --- /dev/null +++ b/tests/compiler/std/array-literal.debug.wat @@ -0,0 +1,4187 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32 i32))) + (type $4 (func)) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32) (result i32))) + (type $10 (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $std/array-literal/staticArrayI8 i32 (i32.const 64)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $std/array-literal/staticArrayI32 i32 (i32.const 320)) + (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 400)) + (global $std/array-literal/i (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $std/array-literal/dynamicArrayI8 (mut i32) (i32.const 0)) + (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) + (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) + (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 816)) + (global $~lib/memory/__data_end i32 (i32.const 860)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33628)) + (global $~lib/memory/__heap_base i32 (i32.const 33628)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\00\01\02\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00 \00\00\00 \00\00\00\03\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 92) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00\00\00\00\00") + (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 220) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $5 (i32.const 268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") + (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00 \01\00\00 \01\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "\1c\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") + (data $8 (i32.const 380) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00p\01\00\00p\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $10 (i32.const 492) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 560) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 592) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 672) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 700) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 764) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $17 (i32.const 816) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00B\08\00\00\02\t\00\00 \00\00\00\02A\00\00 \00\00\00\02A\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 176 + i32.const 640 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 512 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 448 + i32.const 720 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 720 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 448 + i32.const 512 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $std/array-literal/doesntLeak (param $refs i32) + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/array-literal/staticArrayI8 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/staticArrayI32 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/emptyArrayI32 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayI8 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayI32 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayRef + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayRefWithCtor + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 176 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 784 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 448 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $std/array-literal/RefWithCtor + block $~lib/array/Array + block $std/array-literal/Ref + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:std/array-literal + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33648 + i32.const 33696 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 176 + i32.const 240 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 176 + i32.const 240 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 784 + i32.const 240 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 176 + i32.const 240 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 0 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + local.get $value + i32.store8 + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 176 + i32.const 240 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array-literal/Ref#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 176 + i32.const 240 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 176 + i32.const 240 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $start:std/array-literal + (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) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $std/array-literal/staticArrayI8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 0 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 3 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI32 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI32 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 0 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI32 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI32 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/emptyArrayI32 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 560 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 592 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 672 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 0 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + global.get $std/array-literal/i + call $~lib/array/Array#__set + local.get $3 + i32.const 1 + global.get $std/array-literal/i + i32.const 1 + i32.add + global.set $std/array-literal/i + global.get $std/array-literal/i + call $~lib/array/Array#__set + local.get $3 + i32.const 2 + global.get $std/array-literal/i + i32.const 1 + i32.add + global.set $std/array-literal/i + global.get $std/array-literal/i + call $~lib/array/Array#__set + local.get $3 + global.set $std/array-literal/dynamicArrayI8 + global.get $std/array-literal/dynamicArrayI8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 0 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array-literal/i + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=8 + local.get $4 + i32.const 0 + global.get $std/array-literal/i + call $~lib/array/Array#__set + local.get $4 + i32.const 1 + global.get $std/array-literal/i + i32.const 1 + i32.add + global.set $std/array-literal/i + global.get $std/array-literal/i + call $~lib/array/Array#__set + local.get $4 + i32.const 2 + global.get $std/array-literal/i + i32.const 1 + i32.add + global.set $std/array-literal/i + global.get $std/array-literal/i + call $~lib/array/Array#__set + local.get $4 + global.set $std/array-literal/dynamicArrayI32 + global.get $std/array-literal/dynamicArrayI32 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI32 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 0 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI32 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI32 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=12 + local.get $5 + i32.const 0 + i32.const 0 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__set + local.get $5 + i32.const 1 + i32.const 0 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__set + local.get $5 + i32.const 2 + i32.const 0 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__set + local.get $5 + global.set $std/array-literal/dynamicArrayRef + global.get $std/array-literal/dynamicArrayRef + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $6 + i32.store offset=16 + local.get $6 + i32.const 0 + i32.const 0 + call $std/array-literal/RefWithCtor#constructor + call $~lib/array/Array#__set + local.get $6 + i32.const 1 + i32.const 0 + call $std/array-literal/RefWithCtor#constructor + call $~lib/array/Array#__set + local.get $6 + i32.const 2 + i32.const 0 + call $std/array-literal/RefWithCtor#constructor + call $~lib/array/Array#__set + local.get $6 + global.set $std/array-literal/dynamicArrayRefWithCtor + global.get $std/array-literal/dynamicArrayRefWithCtor + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array-literal/emptyArrayI32 + i32.const 0 + global.set $std/array-literal/dynamicArrayI8 + i32.const 0 + global.set $std/array-literal/dynamicArrayI32 + i32.const 0 + global.set $std/array-literal/dynamicArrayRef + i32.const 0 + global.set $std/array-literal/dynamicArrayRefWithCtor + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $7 + i32.store offset=20 + local.get $7 + i32.const 0 + i32.const 0 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__set + local.get $7 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $std/array-literal/doesntLeak + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/array-literal/RefWithCtor#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/std/array-literal.json b/tests/compiler/std/array-literal.json index 9f7878d475..b83788465e 100644 --- a/tests/compiler/std/array-literal.json +++ b/tests/compiler/std/array-literal.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + ], + "asc_rtrace": true +} diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat deleted file mode 100644 index 0360098a44..0000000000 --- a/tests/compiler/std/array-literal.optimized.wat +++ /dev/null @@ -1,1711 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (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_i32_=>_i32 (func (param i32 i32 i32) (result 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))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\00\01\02") - (data (i32.const 1056) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\10\04\00\00\10\04\00\00\03\00\00\00\03") - (data (i32.const 1088) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") - (data (i32.const 1152) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1216) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1264) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02") - (data (i32.const 1296) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\00\05\00\00\00\05\00\00\0c\00\00\00\03") - (data (i32.const 1332) "\01") - (data (i32.const 1344) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00@\05\00\00@\05") - (data (i32.const 1376) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1424) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1488) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (global $std/array-literal/i (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $std/array-literal/dynamicArrayI8 (mut i32) (i32.const 0)) - (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) - (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) - (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1168 - i32.const 1232 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_s - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1168 - i32.const 1232 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1536 - local.set $1 - i32.const 1536 - i32.const 0 - i32.store - i32.const 3104 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1536 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1536 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1536 - i32.const 3120 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1536 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1392 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1073741808 - i32.ge_u - if - i32.const 1440 - i32.const 1392 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - call $~lib/rt/rtrace/onalloc - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1536 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1504 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - i32.const 16 - local.get $2 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - i32.shl - local.tee $1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1536 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $start:std/array-literal - (local $0 i32) - (local $1 i32) - i32.const 1084 - i32.load - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 2 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1072 - i32.const 0 - call $~lib/array/Array#__get - if - i32.const 0 - i32.const 1104 - i32.const 3 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1072 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1072 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1324 - i32.load - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1312 - i32.const 0 - call $~lib/array/Array#__get - if - i32.const 0 - i32.const 1104 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1312 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1312 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1372 - i32.load - if - i32.const 0 - i32.const 1104 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 0 - i32.const 3 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=4 - local.tee $0 - global.get $std/array-literal/i - i32.store8 - global.get $std/array-literal/i - i32.const 1 - i32.add - global.set $std/array-literal/i - local.get $0 - global.get $std/array-literal/i - i32.store8 offset=1 - global.get $std/array-literal/i - i32.const 1 - i32.add - global.set $std/array-literal/i - local.get $0 - global.get $std/array-literal/i - i32.store8 offset=2 - local.get $1 - global.set $std/array-literal/dynamicArrayI8 - global.get $std/array-literal/dynamicArrayI8 - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI8 - i32.const 0 - call $~lib/array/Array#__get - if - i32.const 0 - i32.const 1104 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI8 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI8 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array-literal/i - i32.const 3 - i32.const 2 - i32.const 4 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=4 - local.tee $0 - global.get $std/array-literal/i - i32.store - global.get $std/array-literal/i - i32.const 1 - i32.add - global.set $std/array-literal/i - local.get $0 - global.get $std/array-literal/i - i32.store offset=4 - global.get $std/array-literal/i - i32.const 1 - i32.add - global.set $std/array-literal/i - local.get $0 - global.get $std/array-literal/i - i32.store offset=8 - local.get $1 - global.set $std/array-literal/dynamicArrayI32 - global.get $std/array-literal/dynamicArrayI32 - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI32 - i32.const 0 - call $~lib/array/Array#__get - if - i32.const 0 - i32.const 1104 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI32 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI32 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 6 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=4 - local.tee $0 - i32.const 0 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 0 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.store offset=8 - local.get $1 - global.set $std/array-literal/dynamicArrayRef - global.get $std/array-literal/dynamicArrayRef - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 8 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=4 - local.tee $0 - i32.const 0 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 0 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.store offset=8 - local.get $1 - global.set $std/array-literal/dynamicArrayRefWithCtor - global.get $std/array-literal/dynamicArrayRefWithCtor - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI8 - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayI32 - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayRef - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayRefWithCtor - call $~lib/rt/pure/__release - i32.const 1 - i32.const 2 - i32.const 6 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=4 - i32.const 0 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.store - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~start - call $start:std/array-literal - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1504 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$10 - block $switch$1$case$8 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - local.get $0 - i32.const 16 - i32.add - local.tee $1 - i32.const 8 - i32.sub - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $__inlined_func$~lib/rt/__visit_members $switch$1$case$8 $__inlined_func$~lib/rt/__visit_members $switch$1$case$10 $switch$1$default - end - local.get $1 - i32.load - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - local.get $1 - i32.load - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $1 - i32.load - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $1 - call $~lib/array/Array#__visit_impl - br $__inlined_func$~lib/rt/__visit_members - end - local.get $1 - call $~lib/array/Array#__visit_impl - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1504 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1504 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 1536 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - i32.load - call $~lib/rt/pure/__visit - ) -) diff --git a/tests/compiler/std/array-literal.release.wat b/tests/compiler/std/array-literal.release.wat new file mode 100644 index 0000000000..d53285989a --- /dev/null +++ b/tests/compiler/std/array-literal.release.wat @@ -0,0 +1,2933 @@ +(module + (type $0 (func (param i32))) + (type $1 (func (param i32 i32 i32))) + (type $2 (func)) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (param i32) (result i32))) + (type $9 (func (param i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 1424)) + (global $std/array-literal/i (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $std/array-literal/dynamicArrayI8 (mut i32) (i32.const 0)) + (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) + (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) + (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34652)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\01\00\00\00\03\00\00\00\00\01\02") + (data $1 (i32.const 1068) ",") + (data $1.1 (i32.const 1080) "\04\00\00\00\10\00\00\00 \04\00\00 \04\00\00\03\00\00\00\03") + (data $2 (i32.const 1116) "<") + (data $2.1 (i32.const 1128) "\02\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (data $3 (i32.const 1180) "<") + (data $3.1 (i32.const 1192) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $4 (i32.const 1244) ",") + (data $4.1 (i32.const 1256) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $5 (i32.const 1292) "\1c") + (data $5.1 (i32.const 1304) "\01\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02") + (data $6 (i32.const 1324) ",") + (data $6.1 (i32.const 1336) "\05\00\00\00\10\00\00\00 \05\00\00 \05\00\00\0c\00\00\00\03") + (data $7 (i32.const 1372) "\1c") + (data $7.1 (i32.const 1384) "\01") + (data $8 (i32.const 1404) ",") + (data $8.1 (i32.const 1416) "\05\00\00\00\10\00\00\00p\05\00\00p\05") + (data $9 (i32.const 1452) "<") + (data $9.1 (i32.const 1464) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $10 (i32.const 1516) "<") + (data $10.1 (i32.const 1528) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $13 (i32.const 1644) ",") + (data $13.1 (i32.const 1656) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $15 (i32.const 1724) "<") + (data $15.1 (i32.const 1736) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $16 (i32.const 1788) ",") + (data $16.1 (i32.const 1800) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $17 (i32.const 1840) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00B\08\00\00\02\t\00\00 \00\00\00\02A\00\00 \00\00\00\02A") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit + global.get $std/array-literal/emptyArrayI32 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayI8 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayI32 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayRef + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayRefWithCtor + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1200 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 1472 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$154 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34652 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$154 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1840 + i32.load + i32.gt_u + if + i32.const 1200 + i32.const 1664 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1844 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1744 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1744 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1744 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1744 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1744 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1744 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34656 + i32.const 0 + i32.store + i32.const 36224 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34656 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34656 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34656 + i32.const 36228 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34656 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34652 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34652 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34652 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1744 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1472 + i32.const 1744 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1744 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1744 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array~visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $std/array-literal/RefWithCtor + block $~lib/array/Array + block $std/array-literal/Ref + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:std/array-literal + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1200 + i32.const 1264 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1200 + i32.const 1264 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 1808 + i32.const 1264 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$149 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + local.get $2 + i32.shl + local.tee $1 + local.get $1 + local.get $3 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$149 + end + local.get $3 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $3 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1200 + i32.const 1264 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1200 + i32.const 1264 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array-literal/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1200 + i32.const 1264 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array-literal + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1088 + call $~lib/array/Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1088 + i32.const 0 + call $~lib/array/Array#__get + if + i32.const 0 + i32.const 1136 + i32.const 3 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1088 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1088 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1344 + i32.store + i32.const 1344 + call $~lib/array/Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1344 + i32.store + i32.const 1344 + i32.const 0 + call $~lib/array/Array#__get + if + i32.const 0 + i32.const 1136 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1344 + i32.store + i32.const 1344 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1344 + i32.store + i32.const 1344 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array-literal/emptyArrayI32 + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1136 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 34652 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1588 + i32.const 1584 + i32.store + i32.const 1592 + i32.const 1584 + i32.store + i32.const 1584 + global.set $~lib/rt/itcms/pinSpace + i32.const 1620 + i32.const 1616 + i32.store + i32.const 1624 + i32.const 1616 + i32.store + i32.const 1616 + global.set $~lib/rt/itcms/toSpace + i32.const 1700 + i32.const 1696 + i32.store + i32.const 1704 + i32.const 1696 + i32.store + i32.const 1696 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 0 + i32.const 4 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + global.get $std/array-literal/i + call $~lib/array/Array#__set + global.get $std/array-literal/i + i32.const 1 + i32.add + global.set $std/array-literal/i + local.get $0 + i32.const 1 + global.get $std/array-literal/i + call $~lib/array/Array#__set + global.get $std/array-literal/i + i32.const 1 + i32.add + global.set $std/array-literal/i + local.get $0 + i32.const 2 + global.get $std/array-literal/i + call $~lib/array/Array#__set + local.get $0 + global.set $std/array-literal/dynamicArrayI8 + global.get $~lib/memory/__stack_pointer + global.get $std/array-literal/dynamicArrayI8 + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array-literal/dynamicArrayI8 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + if + i32.const 0 + i32.const 1136 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array-literal/dynamicArrayI8 + local.tee $0 + i32.store + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array-literal/dynamicArrayI8 + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array-literal/i + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 5 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 0 + global.get $std/array-literal/i + call $~lib/array/Array#__set + global.get $std/array-literal/i + i32.const 1 + i32.add + global.set $std/array-literal/i + local.get $0 + i32.const 1 + global.get $std/array-literal/i + call $~lib/array/Array#__set + global.get $std/array-literal/i + i32.const 1 + i32.add + global.set $std/array-literal/i + local.get $0 + i32.const 2 + global.get $std/array-literal/i + call $~lib/array/Array#__set + local.get $0 + global.set $std/array-literal/dynamicArrayI32 + global.get $~lib/memory/__stack_pointer + global.get $std/array-literal/dynamicArrayI32 + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array-literal/dynamicArrayI32 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + if + i32.const 0 + i32.const 1136 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array-literal/dynamicArrayI32 + local.tee $0 + i32.store + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array-literal/dynamicArrayI32 + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 7 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + local.get $0 + i32.const 0 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__set + local.get $0 + i32.const 2 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__set + local.get $0 + global.set $std/array-literal/dynamicArrayRef + global.get $~lib/memory/__stack_pointer + global.get $std/array-literal/dynamicArrayRef + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 9 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $std/array-literal/RefWithCtor#constructor + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + call $std/array-literal/RefWithCtor#constructor + call $~lib/array/Array#__set + local.get $0 + i32.const 2 + call $std/array-literal/RefWithCtor#constructor + call $~lib/array/Array#__set + local.get $0 + global.set $std/array-literal/dynamicArrayRefWithCtor + global.get $~lib/memory/__stack_pointer + global.get $std/array-literal/dynamicArrayRefWithCtor + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1136 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array-literal/emptyArrayI32 + i32.const 0 + global.set $std/array-literal/dynamicArrayI8 + i32.const 0 + global.set $std/array-literal/dynamicArrayI32 + i32.const 0 + global.set $std/array-literal/dynamicArrayRef + i32.const 0 + global.set $std/array-literal/dynamicArrayRefWithCtor + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 7 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=20 + local.get $0 + i32.const 0 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 34652 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.shl + local.tee $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $3 + i32.store + local.get $2 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/array-literal/RefWithCtor#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/std/array-literal.ts b/tests/compiler/std/array-literal.ts index 5d85019d68..588f6618f2 100644 --- a/tests/compiler/std/array-literal.ts +++ b/tests/compiler/std/array-literal.ts @@ -38,14 +38,17 @@ var dynamicArrayRefWithCtor: RefWithCtor[] = [new RefWithCtor(), new RefWithCtor assert(dynamicArrayRefWithCtor.length == 3); // Unleak globals -__release(changetype(emptyArrayI32)); -__release(changetype(dynamicArrayI8)); -__release(changetype(dynamicArrayI32)); -__release(changetype(dynamicArrayRef)); -__release(changetype(dynamicArrayRefWithCtor)); +emptyArrayI32 = changetype(0); +dynamicArrayI8 = changetype(0); +dynamicArrayI32 = changetype(0); +dynamicArrayRef = changetype(0); +dynamicArrayRefWithCtor = changetype(0); -// Make sure unassigned literals don't +// Make sure unassigned literals don't leak function doesntLeak(refs: Ref[]): void {} { doesntLeak([ new Ref() ]); } + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat deleted file mode 100644 index 3e64393f57..0000000000 --- a/tests/compiler/std/array-literal.untouched.wat +++ /dev/null @@ -1,3664 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 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 $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result 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))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\00\01\02") - (data (i32.const 48) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00 \00\00\00 \00\00\00\03\00\00\00\03\00\00\00") - (data (i32.const 80) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") - (data (i32.const 144) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 208) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 256) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 288) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\10\01\00\00\10\01\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 320) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 336) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00P\01\00\00P\01\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 368) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 416) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 480) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (table $0 1 funcref) - (global $std/array-literal/staticArrayI8 i32 (i32.const 64)) - (global $std/array-literal/staticArrayI32 i32 (i32.const 304)) - (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 352)) - (global $std/array-literal/i (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $std/array-literal/dynamicArrayI8 (mut i32) (i32.const 0)) - (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) - (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) - (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 528)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_s - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 160 - i32.const 224 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 160 - i32.const 224 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 432 - i32.const 384 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end - local.get $3 - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 496 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 496 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 16 - local.get $2 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.set $5 - local.get $5 - i32.const 0 - local.get $3 - call $~lib/rt/__allocBuffer - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $std/array-literal/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $std/array-literal/RefWithCtor#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $std/array-literal/doesntLeak (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - ) - (func $start:std/array-literal - (local $0 i32) - (local $1 i32) - global.get $std/array-literal/staticArrayI8 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 2 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/staticArrayI8 - i32.const 0 - call $~lib/array/Array#__get - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 3 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/staticArrayI8 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/staticArrayI8 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/staticArrayI32 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/staticArrayI32 - i32.const 0 - call $~lib/array/Array#__get - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/staticArrayI32 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/staticArrayI32 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/emptyArrayI32 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 0 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $0 - local.get $0 - global.get $std/array-literal/i - i32.store8 - local.get $0 - global.get $std/array-literal/i - i32.const 1 - i32.add - global.set $std/array-literal/i - global.get $std/array-literal/i - i32.store8 offset=1 - local.get $0 - global.get $std/array-literal/i - i32.const 1 - i32.add - global.set $std/array-literal/i - global.get $std/array-literal/i - i32.store8 offset=2 - local.get $1 - global.set $std/array-literal/dynamicArrayI8 - global.get $std/array-literal/dynamicArrayI8 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI8 - i32.const 0 - call $~lib/array/Array#__get - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI8 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI8 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array-literal/i - i32.const 3 - i32.const 2 - i32.const 4 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - global.get $std/array-literal/i - i32.store - local.get $1 - global.get $std/array-literal/i - i32.const 1 - i32.add - global.set $std/array-literal/i - global.get $std/array-literal/i - i32.store offset=4 - local.get $1 - global.get $std/array-literal/i - i32.const 1 - i32.add - global.set $std/array-literal/i - global.get $std/array-literal/i - i32.store offset=8 - local.get $0 - global.set $std/array-literal/dynamicArrayI32 - global.get $std/array-literal/dynamicArrayI32 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI32 - i32.const 0 - call $~lib/array/Array#__get - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI32 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI32 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 6 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $0 - local.get $0 - i32.const 0 - call $std/array-literal/Ref#constructor - i32.store - local.get $0 - i32.const 0 - call $std/array-literal/Ref#constructor - i32.store offset=4 - local.get $0 - i32.const 0 - call $std/array-literal/Ref#constructor - i32.store offset=8 - local.get $1 - global.set $std/array-literal/dynamicArrayRef - global.get $std/array-literal/dynamicArrayRef - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 0 - call $std/array-literal/RefWithCtor#constructor - i32.store - local.get $1 - i32.const 0 - call $std/array-literal/RefWithCtor#constructor - i32.store offset=4 - local.get $1 - i32.const 0 - call $std/array-literal/RefWithCtor#constructor - i32.store offset=8 - local.get $0 - global.set $std/array-literal/dynamicArrayRefWithCtor - global.get $std/array-literal/dynamicArrayRefWithCtor - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/emptyArrayI32 - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayI8 - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayI32 - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayRef - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayRefWithCtor - call $~lib/rt/pure/__release - i32.const 1 - i32.const 2 - i32.const 6 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $0 - local.get $0 - i32.const 0 - call $std/array-literal/Ref#constructor - i32.store - local.get $1 - local.tee $0 - call $std/array-literal/doesntLeak - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~start - call $start:std/array-literal - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 496 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 496 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 496 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 496 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$10 - block $switch$1$case$8 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$2 $switch$1$case$8 $switch$1$case$2 $switch$1$case$10 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/std/array.debug.wat b/tests/compiler/std/array.debug.wat new file mode 100644 index 0000000000..7c585db17c --- /dev/null +++ b/tests/compiler/std/array.debug.wat @@ -0,0 +1,46873 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32 i32))) + (type $7 (func (param f32 f32) (result i32))) + (type $8 (func (param f64 f64) (result i32))) + (type $9 (func (param i32 i32 i32 i32 i32 i32))) + (type $10 (func (param i32))) + (type $11 (func)) + (type $12 (func (param i64 i32) (result i32))) + (type $13 (func (result f64))) + (type $14 (func (param i32 f64 i32) (result i32))) + (type $15 (func (param i32 i32 i32 i32))) + (type $16 (func (param i64) (result i64))) + (type $17 (func (param i32 i64 i32))) + (type $18 (func (param i32 i32 i32) (result f32))) + (type $19 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $20 (func (param i32 i64) (result i32))) + (type $21 (func (param i32 f32 i32 i32) (result i32))) + (type $22 (func (param i32 f32 i32) (result i32))) + (type $23 (func (param i32 i32 i64) (result i32))) + (type $24 (func (result i32))) + (type $25 (func (param i32 i32 f32 i32 i32))) + (type $26 (func (param i32 i64 i32 i32))) + (type $27 (func (param i64))) + (type $28 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $29 (func (param i32 f64) (result i32))) + (type $30 (func (param i64) (result i32))) + (type $31 (func (param i32 i32) (result f32))) + (type $32 (func (param i32 i32) (result f64))) + (type $33 (func (param f64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) + (import "env" "seed" (func $~lib/builtins/seed (result f64))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $std/array/arr (mut i32) (i32.const 0)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $std/array/i (mut i32) (i32.const 0)) + (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) + (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) + (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) + (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) + (global $~lib/math/random_seeded (mut i32) (i32.const 0)) + (global $std/array/charset i32 (i32.const 9008)) + (global $std/array/inputStabArr (mut i32) (i32.const 0)) + (global $std/array/outputStabArr (mut i32) (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) + (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) + (global $~lib/rt/__rtti_base i32 (i32.const 14976)) + (global $~lib/memory/__data_end i32 (i32.const 15168)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 47936)) + (global $~lib/memory/__heap_base i32 (i32.const 47936)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $1 (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $3 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 508) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00") + (data $11 (i32.const 556) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $12 (i32.const 620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00c\00\00\00\00\00\00\00") + (data $13 (i32.const 652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\02\03\04\05\00\00\00\00\00\00\00") + (data $14 (i32.const 684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\01\04\05\00\00\00\00\00\00\00") + (data $15 (i32.const 716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") + (data $18 (i32.const 812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") + (data $19 (i32.const 844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\ff\ff\ff\ff\ff\00\00\00\00\00\00\00") + (data $20 (i32.const 876) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 924) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 972) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 1020) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\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") + (data $24 (i32.const 1068) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 1116) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 1164) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") + (data $27 (i32.const 1212) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00?\00\00\80?\00\00\c0?\00\00 @\00\00@@\00\00\00\00\00\00\00\00") + (data $28 (i32.const 1260) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00?\00\00\80?\00\00\80?\00\00 @\00\00@@\00\00\00\00\00\00\00\00") + (data $29 (i32.const 1308) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 1356) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 1404) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00@\00\00\00@\00\00\00\00\00\00\00\00") + (data $32 (i32.const 1452) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00@\00\00\00@\00\00\00\00\00\00\00\00") + (data $33 (i32.const 1500) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\00\00\00\00\00\00") + (data $34 (i32.const 1548) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\00\00\00\00\00") + (data $35 (i32.const 1596) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") + (data $36 (i32.const 1644) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 1692) "\1c\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") + (data $38 (i32.const 1724) "\1c\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") + (data $39 (i32.const 1756) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 1804) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 1852) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 1900) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 1948) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $44 (i32.const 1996) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $45 (i32.const 2044) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $46 (i32.const 2092) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $47 (i32.const 2140) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $48 (i32.const 2188) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $49 (i32.const 2236) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $50 (i32.const 2284) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $51 (i32.const 2332) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $52 (i32.const 2380) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $53 (i32.const 2428) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $54 (i32.const 2476) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $55 (i32.const 2524) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 2572) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $57 (i32.const 2620) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $58 (i32.const 2668) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 2716) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 2764) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $61 (i32.const 2812) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $62 (i32.const 2860) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 2908) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\03\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 2956) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\07\00\00\00\t\00\00\00\0b\00\00\00") + (data $65 (i32.const 2988) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\07\00\00\00\t\00\00\00\00\00\00\00") + (data $66 (i32.const 3020) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $67 (i32.const 3068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\t\00\00\00\0b\00\00\00\00\00\00\00") + (data $68 (i32.const 3100) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\07\00\00\00\t\00\00\00\00\00\00\00") + (data $69 (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\07\00\00\00\t\00\00\00\00\00\00\00") + (data $70 (i32.const 3164) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\01\02\03\00\00\00\00\00\00\00\00") + (data $71 (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\01\02\03\04\05\06\07\00\00\00\00") + (data $72 (i32.const 3228) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\11\00\00\00\00\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\00\00\00\00\00\00\00\00\00\00\00") + (data $73 (i32.const 3276) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $74 (i32.const 3324) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $75 (i32.const 3372) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $76 (i32.const 3420) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") + (data $77 (i32.const 3452) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f\00\00\00\00") + (data $78 (i32.const 3484) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $79 (i32.const 3532) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") + (data $80 (i32.const 3564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f\00\00\00\00") + (data $81 (i32.const 3596) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $82 (i32.const 3644) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $83 (i32.const 3692) "\1c\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") + (data $84 (i32.const 3724) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $85 (i32.const 3772) "\1c\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") + (data $86 (i32.const 3804) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $87 (i32.const 3852) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $88 (i32.const 3900) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data $89 (i32.const 3932) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $90 (i32.const 3964) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $91 (i32.const 4012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") + (data $92 (i32.const 4044) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05\00\00\00") + (data $93 (i32.const 4076) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $94 (i32.const 4124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $95 (i32.const 4156) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $96 (i32.const 4204) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $97 (i32.const 4252) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $98 (i32.const 4284) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $99 (i32.const 4332) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $100 (i32.const 4380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00") + (data $101 (i32.const 4412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $102 (i32.const 4444) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $103 (i32.const 4492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $104 (i32.const 4524) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $105 (i32.const 4572) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $106 (i32.const 4620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $107 (i32.const 4652) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $108 (i32.const 4700) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $109 (i32.const 4748) "\1c\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") + (data $110 (i32.const 4780) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $111 (i32.const 4828) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $112 (i32.const 4876) "\1c\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") + (data $113 (i32.const 4908) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $114 (i32.const 4956) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $115 (i32.const 5004) "\1c\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") + (data $116 (i32.const 5036) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $117 (i32.const 5084) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $118 (i32.const 5132) "\1c\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") + (data $119 (i32.const 5164) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $120 (i32.const 5212) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $121 (i32.const 5260) "\1c\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") + (data $122 (i32.const 5292) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $123 (i32.const 5340) "\1c\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") + (data $124 (i32.const 5372) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $125 (i32.const 5500) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $126 (i32.const 5628) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $127 (i32.const 5660) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $128 (i32.const 5692) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $129 (i32.const 5724) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $130 (i32.const 5756) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $131 (i32.const 5788) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $132 (i32.const 5820) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $133 (i32.const 5868) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $134 (i32.const 5900) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $135 (i32.const 5932) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $136 (i32.const 5964) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $137 (i32.const 5996) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $138 (i32.const 6028) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $139 (i32.const 6060) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $140 (i32.const 6092) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $141 (i32.const 6124) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data $142 (i32.const 6156) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data $143 (i32.const 6188) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data $144 (i32.const 6220) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") + (data $145 (i32.const 6252) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") + (data $146 (i32.const 6284) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") + (data $147 (i32.const 6316) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") + (data $148 (i32.const 6348) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") + (data $149 (i32.const 6380) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") + (data $150 (i32.const 6412) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") + (data $151 (i32.const 6444) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") + (data $152 (i32.const 6476) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $153 (i32.const 6604) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $154 (i32.const 6668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $155 (i32.const 6700) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $156 (i32.const 7100) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $157 (i32.const 8156) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $158 (i32.const 8252) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") + (data $159 (i32.const 8284) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") + (data $160 (i32.const 8316) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") + (data $161 (i32.const 8348) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") + (data $162 (i32.const 8380) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") + (data $163 (i32.const 8412) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") + (data $164 (i32.const 8444) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $165 (i32.const 8476) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") + (data $166 (i32.const 8508) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00") + (data $167 (i32.const 8540) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00#\00\00\00\00\00\00\00\00\00\00\00") + (data $168 (i32.const 8572) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00$\00\00\00\00\00\00\00\00\00\00\00") + (data $169 (i32.const 8604) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00%\00\00\00\00\00\00\00\00\00\00\00") + (data $170 (i32.const 8636) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") + (data $171 (i32.const 8668) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00\00\00\00\00") + (data $172 (i32.const 8700) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00(\00\00\00\00\00\00\00\00\00\00\00") + (data $173 (i32.const 8732) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") + (data $174 (i32.const 8764) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") + (data $175 (i32.const 8796) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $176 (i32.const 8828) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $177 (i32.const 8860) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $178 (i32.const 8892) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data $179 (i32.const 8924) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") + (data $180 (i32.const 8956) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $181 (i32.const 8988) "\bc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?\00") + (data $182 (i32.const 9180) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\00@\00\00\80\bf\00\00\00\00") + (data $183 (i32.const 9212) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $184 (i32.const 9244) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\80\bf\00\00\00\00\00\00\00@") + (data $185 (i32.const 9276) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data $186 (i32.const 9340) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data $187 (i32.const 9404) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data $188 (i32.const 9500) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $189 (i32.const 9532) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00@\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data $190 (i32.const 9628) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $191 (i32.const 9676) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $192 (i32.const 9708) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $193 (i32.const 9756) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $194 (i32.const 9804) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $195 (i32.const 9836) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") + (data $196 (i32.const 9884) "\1c\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") + (data $197 (i32.const 9916) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $198 (i32.const 9948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") + (data $199 (i32.const 9980) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $200 (i32.const 10028) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $201 (i32.const 10076) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data $202 (i32.const 10108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $203 (i32.const 10140) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $204 (i32.const 10172) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") + (data $205 (i32.const 10204) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") + (data $206 (i32.const 10236) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data $207 (i32.const 10268) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") + (data $208 (i32.const 10300) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $209 (i32.const 10332) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00;\00\00\00\00\00\00\00\00\00\00\00") + (data $210 (i32.const 10364) "\1c\00\00\00\00\00\00\00\00\00\00\00!\00\00\00\08\00\00\00<\00\00\00\00\00\00\00\00\00\00\00") + (data $211 (i32.const 10396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $212 (i32.const 10428) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $213 (i32.const 10460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") + (data $214 (i32.const 10492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00b\00a\00\00\00\00\00\00\00\00\00") + (data $215 (i32.const 10524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $216 (i32.const 10556) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00\b0(\00\00\d0(\00\00\b0(\00\00\f0(\00\00\10)\00\000)\00\00\00\00\00\00") + (data $217 (i32.const 10604) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\000)\00\00\b0(\00\00\b0(\00\00\f0(\00\00\d0(\00\00\10)\00\00\00\00\00\00") + (data $218 (i32.const 10652) "\1c\00\00\00\00\00\00\00\00\00\00\00#\00\00\00\08\00\00\00=\00\00\00\00\00\00\00\00\00\00\00") + (data $219 (i32.const 10684) "\1c\00\00\00\00\00\00\00\00\00\00\00$\00\00\00\08\00\00\00>\00\00\00\00\00\00\00\00\00\00\00") + (data $220 (i32.const 10716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $221 (i32.const 10748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") + (data $222 (i32.const 10780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") + (data $223 (i32.const 10812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $224 (i32.const 10844) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00\00\00\00\00\00\00\00\00") + (data $225 (i32.const 10892) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data $226 (i32.const 10924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00-\002\00-\003\00\00\00") + (data $227 (i32.const 10956) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $228 (i32.const 10988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $229 (i32.const 11020) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80\00\00\00\00") + (data $230 (i32.const 11052) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00_\00_\00\00\00\00\00\00\00\00\00") + (data $231 (i32.const 11084) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $232 (i32.const 11164) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data $233 (i32.const 11244) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00,\00 \00\00\00\00\00\00\00\00\00") + (data $234 (i32.const 11276) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data $235 (i32.const 11308) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data $236 (i32.const 11340) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $237 (i32.const 11388) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $238 (i32.const 11440) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $239 (i32.const 11496) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $248 (i32.const 12844) "\1c\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") + (data $249 (i32.const 12876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $250 (i32.const 12908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $251 (i32.const 12940) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $252 (i32.const 12988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00,\002\00\00\00\00\00\00\00") + (data $253 (i32.const 13020) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $254 (i32.const 13068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\01\ff\00\00\00\00\00\00\00\00\00\00") + (data $255 (i32.const 13100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00") + (data $256 (i32.const 13132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\80\81\80\00\00\00\00\00\00\00\00\00") + (data $257 (i32.const 13164) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00-\001\002\008\00,\00-\001\002\007\00,\00-\001\002\008\00") + (data $258 (i32.const 13212) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\00\ff\ff\00\00\00\00\00\00\00\00") + (data $259 (i32.const 13244) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00\00\00\00\00\00\00\00\00\00\00") + (data $260 (i32.const 13292) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\80\01\ff\00\00\00\00\00\00\00\00") + (data $261 (i32.const 13324) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00-\003\002\007\006\008\00,\00-\002\005\005\00\00\00\00\00\00\00") + (data $262 (i32.const 13372) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\80\80\ff\ff\ff\00\00\00\00") + (data $263 (i32.const 13404) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00-\002\001\004\007\004\008\003\006\004\008\00,\00-\001\002\008\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $264 (i32.const 13468) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") + (data $265 (i32.const 13516) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $266 (i32.const 13596) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f\00\00\00\00") + (data $267 (i32.const 13660) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00~\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $268 (i32.const 13820) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\000)\00\00\b0(\00\00\b0(\00\00\f0(\00\00\d0(\00\00\10)\00\00\00\00\00\00") + (data $269 (i32.const 13868) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00\00\00") + (data $270 (i32.const 13916) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $271 (i32.const 13948) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $272 (i32.const 13980) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\001\00\00p6\00\00\00\00\00\00\906\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $273 (i32.const 14028) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") + (data $274 (i32.const 14060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $275 (i32.const 14092) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") + (data $276 (i32.const 14124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $277 (i32.const 14172) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\02\00\00\00\00\00\00\00\00\00\00") + (data $278 (i32.const 14204) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\04\00\00\00\00\00\00\00\00\00\00") + (data $279 (i32.const 14236) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $280 (i32.const 14268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $281 (i32.const 14300) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $282 (i32.const 14332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00") + (data $283 (i32.const 14364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") + (data $284 (i32.const 14396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") + (data $285 (i32.const 14428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00P8\00\00\00\00\00\00\00\00\00\00") + (data $286 (i32.const 14460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") + (data $287 (i32.const 14492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") + (data $288 (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\908\00\00\00\00\00\00\b08\00\00") + (data $289 (i32.const 14556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") + (data $290 (i32.const 14588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00f\00i\00v\00e\00\00\00\00\00") + (data $291 (i32.const 14620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00s\00i\00x\00\00\00\00\00\00\00") + (data $292 (i32.const 14652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\f08\00\00\109\00\0009\00\00") + (data $293 (i32.const 14684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00s\00e\00v\00e\00n\00\00\00") + (data $294 (i32.const 14716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00p9\00\00\00\00\00\00\00\00\00\00") + (data $295 (i32.const 14748) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00P8\00\00\908\00\00\00\00\00\00\b08\00\00\f08\00\00\109\00\0009\00\00p9\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $296 (i32.const 14812) "\1c\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") + (data $297 (i32.const 14844) "\1c\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") + (data $298 (i32.const 14876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $299 (i32.const 14908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $300 (i32.const 14940) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00?\00\00\00\00\00\00\00\00\00\00\00") + (data $301 (i32.const 14976) "/\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00 \00\00\00A\00\00\00B\00\00\00\02\01\00\00\02\19\00\00\02A\00\00\82\00\00\00\02\1a\00\00\02a\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\02a\00\00\00\00\00\00\00\00\00\00B\00\00\00B\08\00\00\82\08\00\00\02\02\00\00\02\n\00\00\02A\00\00\02A\00\00\02A\00\00\02A\00\00\00\00\00\00") + (table $0 64 64 funcref) + (elem $0 (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|4 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|39 $start:std/array~anonymous|40 $start:std/array~anonymous|41 $start:std/array~anonymous|42 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|1 $std/array/assertStableSortedForComplexObjects~anonymous|0 $start:std/array~anonymous|48 $start:std/array~anonymous|49 $start:std/array~anonymous|50 $start:std/array~anonymous|51 $start:std/array~anonymous|52 $start:std/array~anonymous|53 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 $start:std/array~anonymous|54) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array.isArray<~lib/array/Array|null> (param $value i32) (result i32) + local.get $value + i32.const 0 + i32.ne + if (result i32) + i32.const 1 + else + i32.const 0 + end + return + ) + (func $std/array/Ref#set:v (param $this i32) (param $v i32) + local.get $this + local.get $v + i32.store + ) + (func $~lib/array/Array.isArray (param $value i32) (result i32) + local.get $value + i32.const 0 + i32.ne + if (result i32) + i32.const 0 + else + i32.const 0 + end + return + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/arraybuffer/ArrayBufferView#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> (param $value i32) (result i32) + local.get $value + i32.const 0 + i32.ne + if (result i32) + i32.const 0 + else + i32.const 0 + end + return + ) + (func $~lib/array/Array.isArray (param $value i32) (result i32) + i32.const 0 + return + ) + (func $~lib/array/Array.isArray<~lib/string/String> (param $value i32) (result i32) + local.get $value + i32.const 0 + i32.ne + if (result i32) + i32.const 0 + else + i32.const 0 + end + return + ) + (func $~lib/array/Array.isArray<~lib/array/Array> (param $value i32) (result i32) + local.get $value + i32.const 0 + i32.ne + if (result i32) + i32.const 1 + else + i32.const 0 + end + return + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/util/bytes/FILL (param $ptr i32) (param $len i32) (param $value i32) (param $start i32) (param $end 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.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $start + i32.add + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + else + local.get $start + local.tee $7 + local.get $len + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $start + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end + i32.add + local.tee $9 + i32.const 0 + local.tee $10 + local.get $9 + local.get $10 + i32.gt_u + select + else + local.get $end + local.tee $11 + local.get $len + local.tee $12 + local.get $11 + local.get $12 + i32.lt_s + select + end + local.set $end + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $start + local.get $end + i32.lt_s + if + local.get $ptr + local.get $start + i32.add + local.get $value + local.get $end + local.get $start + i32.sub + memory.fill + end + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/util/bytes/FILL (param $ptr i32) (param $len i32) (param $value i32) (param $start i32) (param $end 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.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $start + i32.add + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + else + local.get $start + local.tee $7 + local.get $len + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $start + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end + i32.add + local.tee $9 + i32.const 0 + local.tee $10 + local.get $9 + local.get $10 + i32.gt_u + select + else + local.get $end + local.tee $11 + local.get $len + local.tee $12 + local.get $11 + local.get $12 + i32.lt_s + select + end + local.set $end + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 1 + drop + local.get $value + i32.const 0 + i32.eq + local.get $value + i32.const -1 + i32.eq + i32.or + if + local.get $start + local.get $end + i32.lt_s + if + local.get $ptr + local.get $start + i32.const 2 + i32.shl + i32.add + local.get $value + local.get $end + local.get $start + i32.sub + i32.const 2 + i32.shl + memory.fill + end + return + end + loop $for-loop|0 + local.get $start + local.get $end + i32.lt_s + if + local.get $ptr + local.get $start + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $start + i32.const 1 + i32.add + local.set $start + br $for-loop|0 + end + end + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/util/bytes/FILL (param $ptr i32) (param $len i32) (param $value f32) (param $start i32) (param $end 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.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $start + i32.add + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + else + local.get $start + local.tee $7 + local.get $len + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $start + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end + i32.add + local.tee $9 + i32.const 0 + local.tee $10 + local.get $9 + local.get $10 + i32.gt_u + select + else + local.get $end + local.tee $11 + local.get $len + local.tee $12 + local.get $11 + local.get $12 + i32.lt_s + select + end + local.set $end + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $value + i32.reinterpret_f32 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + i32.const 4 + i32.const 8 + i32.eq + end + if + local.get $start + local.get $end + i32.lt_s + if + local.get $ptr + local.get $start + i32.const 2 + i32.shl + i32.add + i32.const 0 + local.get $end + local.get $start + i32.sub + i32.const 2 + i32.shl + memory.fill + end + return + end + loop $for-loop|0 + local.get $start + local.get $end + i32.lt_s + if + local.get $ptr + local.get $start + i32.const 2 + i32.shl + i32.add + local.get $value + f32.store + local.get $start + i32.const 1 + i32.add + local.set $start + br $for-loop|0 + end + end + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + return + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/util/bytes/REVERSE (param $ptr i32) (param $len i32) + (local $i i32) + (local $tail i32) + (local $hlen i32) + (local $front i32) + (local $back i32) + (local $temp i32) + local.get $len + i32.const 1 + i32.gt_u + if + i32.const 0 + local.set $i + local.get $len + i32.const 1 + i32.shr_u + local.set $hlen + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + local.get $len + i32.const 1 + i32.sub + local.set $tail + loop $while-continue|0 + local.get $i + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $front + local.get $ptr + local.get $tail + local.get $i + i32.sub + i32.const 2 + i32.shl + i32.add + local.set $back + local.get $front + i32.load + local.set $temp + local.get $front + local.get $back + i32.load + i32.store + local.get $back + local.get $temp + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $while-continue|0 + end + end + end + ) + (func $~lib/polyfills/bswap (param $value i64) (result i64) + (local $a i64) + (local $b i64) + (local $v i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $value + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $a + local.get $value + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + local.set $v + local.get $v + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $a + local.get $v + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/util/bytes/REVERSE (param $ptr i32) (param $len i32) + (local $i i32) + (local $tail i32) + (local $hlen i32) + (local $front i32) + (local $back i32) + (local $temp i64) + (local $front|8 i32) + (local $back|9 i32) + (local $temp|10 i32) + local.get $len + i32.const 1 + i32.gt_u + if + i32.const 0 + local.set $i + local.get $len + i32.const 1 + i32.shr_u + local.set $hlen + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $len + i32.const 8 + i32.sub + local.set $tail + loop $while-continue|0 + local.get $i + i32.const 7 + i32.add + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.add + local.set $front + local.get $ptr + local.get $tail + i32.add + local.get $i + i32.sub + local.set $back + local.get $front + i64.load + call $~lib/polyfills/bswap + local.set $temp + local.get $front + local.get $back + i64.load + call $~lib/polyfills/bswap + i64.store + local.get $back + local.get $temp + i64.store + local.get $i + i32.const 8 + i32.add + local.set $i + br $while-continue|0 + end + end + i32.const 1 + i32.const 2 + i32.eq + drop + local.get $len + i32.const 1 + i32.sub + local.set $tail + loop $while-continue|1 + local.get $i + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $front|8 + local.get $ptr + local.get $tail + local.get $i + i32.sub + i32.const 0 + i32.shl + i32.add + local.set $back|9 + local.get $front|8 + i32.load8_u + local.set $temp|10 + local.get $front|8 + local.get $back|9 + i32.load8_u + i32.store8 + local.get $back|9 + local.get $temp|10 + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $while-continue|1 + end + end + end + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/util/bytes/REVERSE (param $ptr i32) (param $len i32) + (local $i i32) + (local $tail i32) + (local $hlen i32) + (local $front i32) + (local $back i32) + (local $temp i32) + (local $front|8 i32) + (local $back|9 i32) + (local $temp|10 i32) + local.get $len + i32.const 1 + i32.gt_u + if + i32.const 0 + local.set $i + local.get $len + i32.const 1 + i32.shr_u + local.set $hlen + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $len + i32.const 2 + i32.sub + local.set $tail + loop $while-continue|0 + local.get $i + i32.const 1 + i32.add + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $front + local.get $ptr + local.get $tail + local.get $i + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $back + local.get $back + i32.load + i32.const 16 + i32.rotr + local.set $temp + local.get $back + local.get $front + i32.load + i32.const 16 + i32.rotr + i32.store + local.get $front + local.get $temp + i32.store + local.get $i + i32.const 2 + i32.add + local.set $i + br $while-continue|0 + end + end + local.get $len + i32.const 1 + i32.sub + local.set $tail + loop $while-continue|1 + local.get $i + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $front|8 + local.get $ptr + local.get $tail + local.get $i + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $back|9 + local.get $front|8 + i32.load16_u + local.set $temp|10 + local.get $front|8 + local.get $back|9 + i32.load16_u + i32.store16 + local.get $back|9 + local.get $temp|10 + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $while-continue|1 + end + end + end + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $std/array/Ref#get:v (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $start:std/array~anonymous|0 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 0 + i32.eq + ) + (func $start:std/array~anonymous|1 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 1 + i32.eq + ) + (func $start:std/array~anonymous|2 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|4 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|6 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 0 + i32.eq + ) + (func $start:std/array~anonymous|7 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 1 + i32.eq + ) + (func $start:std/array~anonymous|8 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|10 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 0 + i32.ge_s + ) + (func $start:std/array~anonymous|11 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 0 + i32.le_s + ) + (func $start:std/array~anonymous|13 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 10 + i32.lt_s + ) + (func $start:std/array~anonymous|15 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 3 + i32.ge_s + ) + (func $start:std/array~anonymous|16 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const -1 + i32.le_s + ) + (func $start:std/array~anonymous|18 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 10 + i32.gt_s + ) + (func $start:std/array~anonymous|20 (param $value i32) (param $$1 i32) (param $$2 i32) + global.get $std/array/i + local.get $value + i32.add + global.set $std/array/i + ) + (func $start:std/array~anonymous|22 (param $value i32) (param $$1 i32) (param $$2 i32) + global.get $std/array/i + local.get $value + i32.add + global.set $std/array/i + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 6700 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 6700 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 6700 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 6700 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 7120 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 7120 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 8176 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 8176 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/itoa32 + return + ) + (func $start:std/array~anonymous|25 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 10 + call $~lib/number/I32#toString + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $start:std/array~anonymous|26 (param $value i32) (param $$1 i32) (param $$2 i32) (result f32) + local.get $value + f32.convert_i32_s + ) + (func $start:std/array~anonymous|28 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + global.get $std/array/i + local.get $value + i32.add + global.set $std/array/i + local.get $value + return + ) + (func $start:std/array~anonymous|30 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|32 (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + global.get $std/array/i + local.get $value + i32.add + global.set $std/array/i + local.get $value + i32.const 2 + i32.ge_s + return + ) + (func $start:std/array~anonymous|34 (param $prev i32) (param $current i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $prev + local.get $current + i32.add + ) + (func $start:std/array~anonymous|35 (param $prev i32) (param $current i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $prev + local.get $current + i32.add + ) + (func $start:std/array~anonymous|36 (param $prev i32) (param $current i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $prev + if (result i32) + i32.const 1 + else + local.get $current + i32.const 2 + i32.gt_s + end + ) + (func $start:std/array~anonymous|37 (param $prev i32) (param $current i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $prev + if (result i32) + i32.const 1 + else + local.get $current + i32.const 100 + i32.gt_s + end + ) + (func $start:std/array~anonymous|39 (param $prev i32) (param $current i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $prev + local.get $current + i32.add + ) + (func $start:std/array~anonymous|41 (param $prev i32) (param $current i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $prev + local.get $current + i32.add + ) + (func $start:std/array~anonymous|42 (param $prev i32) (param $current i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $prev + local.get $current + i32.add + ) + (func $start:std/array~anonymous|43 (param $prev i32) (param $current i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $prev + if (result i32) + i32.const 1 + else + local.get $current + i32.const 2 + i32.gt_s + end + ) + (func $start:std/array~anonymous|44 (param $prev i32) (param $current i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $prev + if (result i32) + i32.const 1 + else + local.get $current + i32.const 100 + i32.gt_s + end + ) + (func $start:std/array~anonymous|46 (param $prev i32) (param $current i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $prev + local.get $current + i32.add + ) + (func $~lib/math/murmurHash3 (param $h i64) (result i64) + local.get $h + local.get $h + i64.const 33 + i64.shr_u + i64.xor + local.set $h + local.get $h + i64.const -49064778989728563 + i64.mul + local.set $h + local.get $h + local.get $h + i64.const 33 + i64.shr_u + i64.xor + local.set $h + local.get $h + i64.const -4265267296055464877 + i64.mul + local.set $h + local.get $h + local.get $h + i64.const 33 + i64.shr_u + i64.xor + local.set $h + local.get $h + return + ) + (func $~lib/math/splitMix32 (param $h i32) (result i32) + local.get $h + i32.const 1831565813 + i32.add + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.get $h + i32.const 1 + i32.or + i32.mul + local.set $h + local.get $h + local.get $h + local.get $h + local.get $h + i32.const 7 + i32.shr_u + i32.xor + local.get $h + i32.const 61 + i32.or + i32.mul + i32.add + i32.xor + local.set $h + local.get $h + local.get $h + i32.const 14 + i32.shr_u + i32.xor + return + ) + (func $~lib/math/NativeMath.seedRandom (param $value i64) + local.get $value + i64.const 0 + i64.eq + if + i64.const -7046029254386353131 + local.set $value + end + local.get $value + call $~lib/math/murmurHash3 + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + call $~lib/math/murmurHash3 + global.set $~lib/math/random_state1_64 + local.get $value + i32.wrap_i64 + call $~lib/math/splitMix32 + global.set $~lib/math/random_state0_32 + global.get $~lib/math/random_state0_32 + call $~lib/math/splitMix32 + global.set $~lib/math/random_state1_32 + i32.const 1 + global.set $~lib/math/random_seeded + ) + (func $std/array/Dim#set:height (param $this i32) (param $height i32) + local.get $this + local.get $height + i32.store + ) + (func $std/array/Dim#set:width (param $this i32) (param $width i32) + local.get $this + local.get $width + i32.store offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a f32) + (local $b f32) + (local $min f32) + (local $max f32) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $a + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + f32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + f32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + f32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + f32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp f32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + f32.load + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + f32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/nodePower (param $left i32) (param $right i32) (param $startA i32) (param $startB i32) (param $endB i32) (result i32) + (local $n i64) + (local $s i32) + (local $l i32) + (local $r i32) + (local $a i64) + (local $b i64) + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + i64.extend_i32_u + local.set $n + local.get $startB + local.get $left + i32.const 1 + i32.shl + i32.sub + local.set $s + local.get $startA + local.get $s + i32.add + local.set $l + local.get $endB + local.get $s + i32.add + i32.const 1 + i32.add + local.set $r + local.get $l + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $n + i64.div_u + local.set $a + local.get $r + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $n + i64.div_u + local.set $b + local.get $a + local.get $b + i64.xor + i32.wrap_i64 + i32.clz + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a f32) + (local $b f32) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + f32.load + f32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + f32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + local.set $a + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a + f32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a f32) (param $b f32) (result i32) + (local $ia i32) + (local $ib i32) + local.get $a + i32.reinterpret_f32 + local.set $ia + local.get $b + i32.reinterpret_f32 + local.set $ib + local.get $ia + local.get $ia + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.set $ia + local.get $ib + local.get $ib + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.set $ib + local.get $ia + local.get $ib + i32.gt_s + local.get $ia + local.get $ib + i32.lt_s + i32.sub + return + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a f64) + (local $b f64) + (local $min f64) + (local $max f64) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $a + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $a + f64.store offset=16 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $max + f64.store offset=16 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $a + f64.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $min + f64.store offset=8 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp f64) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + f64.load + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $tmp + f64.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a f64) + (local $b f64) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add + f64.load + f64.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + f64.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + local.set $a + local.get $buffer + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $a + f64.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $b + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a f64) (param $b f64) (result i32) + (local $ia i64) + (local $ib i64) + local.get $a + i64.reinterpret_f64 + local.set $ia + local.get $b + i64.reinterpret_f64 + local.set $ib + local.get $ia + local.get $ia + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.set $ia + local.get $ib + local.get $ib + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.set $ib + local.get $ia + local.get $ib + i64.gt_s + local.get $ia + local.get $ib + i64.lt_s + i32.sub + return + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + i32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + i32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.gt_u + local.get $a + local.get $b + i32.lt_u + i32.sub + ) + (func $~lib/math/NativeMath.random (result f64) + (local $s1 i64) + (local $s0 i64) + (local $r i64) + global.get $~lib/math/random_seeded + i32.eqz + if + call $~lib/builtins/seed + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + end + global.get $~lib/math/random_state0_64 + local.set $s1 + global.get $~lib/math/random_state1_64 + local.set $s0 + local.get $s0 + global.set $~lib/math/random_state0_64 + local.get $s1 + local.get $s1 + i64.const 23 + i64.shl + i64.xor + local.set $s1 + local.get $s1 + local.get $s1 + i64.const 17 + i64.shr_u + i64.xor + local.set $s1 + local.get $s1 + local.get $s0 + i64.xor + local.set $s1 + local.get $s1 + local.get $s0 + i64.const 26 + i64.shr_u + i64.xor + local.set $s1 + local.get $s1 + global.set $~lib/math/random_state1_64 + local.get $s0 + i64.const 12 + i64.shr_u + i64.const 4607182418800017408 + i64.or + local.set $r + local.get $r + f64.reinterpret_i64 + f64.const 1 + f64.sub + return + ) + (func $~lib/util/sort/COMPARATOR~anonymous|1 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.sub + ) + (func $std/array/Dim#get:height (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $std/array/Dim#get:width (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $start:std/array~anonymous|48 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.sub + ) + (func $start:std/array~anonymous|49 (param $a i32) (param $b i32) (result i32) + local.get $b + local.get $a + i32.sub + ) + (func $start:std/array~anonymous|50 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.sub + ) + (func $start:std/array~anonymous|51 (param $a i32) (param $b i32) (result i32) + local.get $b + local.get $a + i32.sub + ) + (func $~lib/array/Array<~lib/array/Array>#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/array/Array>#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array<~lib/array/Array>#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array<~lib/array/Array>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/array/Array>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/array/Array>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array>#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array>#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array>#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $std/array/Proxy#set:x (param $this i32) (param $x i32) + local.get $this + local.get $x + i32.store + ) + (func $~lib/array/Array>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $std/array/Proxy#get:x (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String|null>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/string/String|null>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/array/Array<~lib/string/String>#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/string/String>#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array<~lib/string/String>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i32) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + i32.const 0 + local.set $sign + i32.const 1 + drop + local.get $value + i32.const 0 + i32.lt_s + local.set $sign + local.get $sign + if + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + local.get $buffer + i32.const 45 + i32.store16 + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + i32.lt_u + if + local.get $dest + local.get $value + i32.const 48 + i32.or + i32.store16 + i32.const 1 + local.get $sign + i32.add + return + end + i32.const 0 + local.set $decimals + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $value + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i32) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + i32.const 0 + local.set $sign + i32.const 0 + drop + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop + local.get $value + i32.const 10 + i32.lt_u + if + local.get $buffer + local.get $value + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + i32.const 0 + local.set $decimals + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $value + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) + (local $one_exp i32) + (local $one_frc i64) + (local $mask i64) + (local $wp_w_frc i64) + (local $p1 i32) + (local $p2 i64) + (local $kappa i32) + (local $len i32) + (local $d i32) + (local $16 i32) + (local $17 i32) + (local $tmp i64) + (local $buffer|19 i32) + (local $len|20 i32) + (local $delta|21 i64) + (local $rest i64) + (local $ten_kappa i64) + (local $wp_w i64) + (local $lastp i32) + (local $digit i32) + (local $d|27 i64) + (local $28 i32) + (local $buffer|29 i32) + (local $len|30 i32) + (local $delta|31 i64) + (local $rest|32 i64) + (local $ten_kappa|33 i64) + (local $wp_w|34 i64) + (local $lastp|35 i32) + (local $digit|36 i32) + i32.const 0 + local.get $mp_exp + i32.sub + local.set $one_exp + i64.const 1 + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $one_frc + local.get $one_frc + i64.const 1 + i64.sub + local.set $mask + local.get $mp_frc + local.get $w_frc + i64.sub + local.set $wp_w_frc + local.get $mp_frc + local.get $one_exp + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $p1 + local.get $mp_frc + local.get $mask + i64.and + local.set $p2 + local.get $p1 + call $~lib/util/number/decimalCount32 + local.set $kappa + local.get $sign + local.set $len + loop $while-continue|0 + local.get $kappa + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $kappa + local.set $16 + local.get $16 + i32.const 10 + i32.eq + br_if $case0|1 + local.get $16 + i32.const 9 + i32.eq + br_if $case1|1 + local.get $16 + i32.const 8 + i32.eq + br_if $case2|1 + local.get $16 + i32.const 7 + i32.eq + br_if $case3|1 + local.get $16 + i32.const 6 + i32.eq + br_if $case4|1 + local.get $16 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $16 + i32.const 4 + i32.eq + br_if $case6|1 + local.get $16 + i32.const 3 + i32.eq + br_if $case7|1 + local.get $16 + i32.const 2 + i32.eq + br_if $case8|1 + local.get $16 + i32.const 1 + i32.eq + br_if $case9|1 + br $case10|1 + end + local.get $p1 + i32.const 1000000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100 + i32.div_u + local.set $d + local.get $p1 + i32.const 100 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10 + i32.div_u + local.set $d + local.get $p1 + i32.const 10 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + local.set $d + i32.const 0 + local.set $p1 + br $break|1 + end + i32.const 0 + local.set $d + br $break|1 + end + local.get $d + local.get $len + i32.or + if + local.get $buffer + local.get $len + local.tee $17 + i32.const 1 + i32.add + local.set $len + local.get $17 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p1 + i64.extend_i32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.get $p2 + i64.add + local.set $tmp + local.get $tmp + local.get $delta + i64.le_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $buffer + local.set $buffer|19 + local.get $len + local.set $len|20 + local.get $delta + local.set $delta|21 + local.get $tmp + local.set $rest + i32.const 12368 + local.get $kappa + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $ten_kappa + local.get $wp_w_frc + local.set $wp_w + local.get $buffer|19 + local.get $len|20 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp + local.get $lastp + i32.load16_u + local.set $digit + loop $while-continue|3 + local.get $rest + local.get $wp_w + i64.lt_u + if (result i32) + local.get $delta|21 + local.get $rest + i64.sub + local.get $ten_kappa + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w + local.get $rest + i64.sub + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit + i32.const 1 + i32.sub + local.set $digit + local.get $rest + local.get $ten_kappa + i64.add + local.set $rest + br $while-continue|3 + end + end + local.get $lastp + local.get $digit + i32.store16 + local.get $len + return + end + br $while-continue|0 + end + end + loop $while-continue|4 + i32.const 1 + if + local.get $p2 + i64.const 10 + i64.mul + local.set $p2 + local.get $delta + i64.const 10 + i64.mul + local.set $delta + local.get $p2 + local.get $one_exp + i64.extend_i32_s + i64.shr_u + local.set $d|27 + local.get $d|27 + local.get $len + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $buffer + local.get $len + local.tee $28 + i32.const 1 + i32.add + local.set $len + local.get $28 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d|27 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $p2 + local.get $mask + i64.and + local.set $p2 + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p2 + local.get $delta + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $wp_w_frc + i32.const 12368 + i32.const 0 + local.get $kappa + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $wp_w_frc + local.get $buffer + local.set $buffer|29 + local.get $len + local.set $len|30 + local.get $delta + local.set $delta|31 + local.get $p2 + local.set $rest|32 + local.get $one_frc + local.set $ten_kappa|33 + local.get $wp_w_frc + local.set $wp_w|34 + local.get $buffer|29 + local.get $len|30 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp|35 + local.get $lastp|35 + i32.load16_u + local.set $digit|36 + loop $while-continue|6 + local.get $rest|32 + local.get $wp_w|34 + i64.lt_u + if (result i32) + local.get $delta|31 + local.get $rest|32 + i64.sub + local.get $ten_kappa|33 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w|34 + local.get $rest|32 + i64.sub + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit|36 + i32.const 1 + i32.sub + local.set $digit|36 + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.set $rest|32 + br $while-continue|6 + end + end + local.get $lastp|35 + local.get $digit|36 + i32.store16 + local.get $len + return + end + br $while-continue|4 + end + end + unreachable + ) + (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) + (local $kk i32) + (local $i i32) + (local $ptr i32) + (local $offset i32) + (local $i|7 i32) + (local $buffer|8 i32) + (local $k|9 i32) + (local $sign i32) + (local $decimals i32) + (local $buffer|12 i32) + (local $num i32) + (local $offset|14 i32) + (local $len i32) + (local $buffer|16 i32) + (local $k|17 i32) + (local $sign|18 i32) + (local $decimals|19 i32) + (local $buffer|20 i32) + (local $num|21 i32) + (local $offset|22 i32) + local.get $k + i32.eqz + if + local.get $buffer + local.get $length + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $length + i32.const 2 + i32.add + return + end + local.get $length + local.get $k + i32.add + local.set $kk + local.get $length + local.get $kk + i32.le_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $length + local.set $i + loop $for-loop|0 + local.get $i + local.get $kk + i32.lt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $kk + i32.const 2 + i32.add + return + else + local.get $kk + i32.const 0 + i32.gt_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $ptr + i32.const 2 + i32.add + local.get $ptr + i32.const 0 + local.get $k + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + local.get $length + i32.const 1 + i32.add + return + else + i32.const -6 + local.get $kk + i32.lt_s + if (result i32) + local.get $kk + i32.const 0 + i32.le_s + else + i32.const 0 + end + if + i32.const 2 + local.get $kk + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $buffer + local.get $length + i32.const 1 + i32.shl + memory.copy + local.get $buffer + i32.const 48 + i32.const 46 + i32.const 16 + i32.shl + i32.or + i32.store + i32.const 2 + local.set $i|7 + loop $for-loop|1 + local.get $i|7 + local.get $offset + i32.lt_s + if + local.get $buffer + local.get $i|7 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i|7 + i32.const 1 + i32.add + local.set $i|7 + br $for-loop|1 + end + end + local.get $length + local.get $offset + i32.add + return + else + local.get $length + i32.const 1 + i32.eq + if + local.get $buffer + i32.const 101 + i32.store16 offset=2 + block $~lib/util/number/genExponent|inlined.0 (result i32) + local.get $buffer + i32.const 4 + i32.add + local.set $buffer|8 + local.get $kk + i32.const 1 + i32.sub + local.set $k|9 + local.get $k|9 + i32.const 0 + i32.lt_s + local.set $sign + local.get $sign + if + i32.const 0 + local.get $k|9 + i32.sub + local.set $k|9 + end + local.get $k|9 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals + local.get $buffer|8 + local.set $buffer|12 + local.get $k|9 + local.set $num + local.get $decimals + local.set $offset|14 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|12 + local.get $num + local.get $offset|14 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|8 + i32.const 45 + i32.const 43 + local.get $sign + select + i32.store16 + local.get $decimals + br $~lib/util/number/genExponent|inlined.0 + end + local.set $length + local.get $length + i32.const 2 + i32.add + return + else + local.get $length + i32.const 1 + i32.shl + local.set $len + local.get $buffer + i32.const 4 + i32.add + local.get $buffer + i32.const 2 + i32.add + local.get $len + i32.const 2 + i32.sub + memory.copy + local.get $buffer + i32.const 46 + i32.store16 offset=2 + local.get $buffer + local.get $len + i32.add + i32.const 101 + i32.store16 offset=2 + local.get $length + block $~lib/util/number/genExponent|inlined.1 (result i32) + local.get $buffer + local.get $len + i32.add + i32.const 4 + i32.add + local.set $buffer|16 + local.get $kk + i32.const 1 + i32.sub + local.set $k|17 + local.get $k|17 + i32.const 0 + i32.lt_s + local.set $sign|18 + local.get $sign|18 + if + i32.const 0 + local.get $k|17 + i32.sub + local.set $k|17 + end + local.get $k|17 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals|19 + local.get $buffer|16 + local.set $buffer|20 + local.get $k|17 + local.set $num|21 + local.get $decimals|19 + local.set $offset|22 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|20 + local.get $num|21 + local.get $offset|22 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|16 + i32.const 45 + i32.const 43 + local.get $sign|18 + select + i32.store16 + local.get $decimals|19 + br $~lib/util/number/genExponent|inlined.1 + end + i32.add + local.set $length + local.get $length + i32.const 2 + i32.add + return + end + unreachable + end + unreachable + end + unreachable + end + unreachable + ) + (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) + (local $sign i32) + (local $value|4 f64) + (local $buffer|5 i32) + (local $sign|6 i32) + (local $isSingle|7 i32) + (local $frc i64) + (local $exp i32) + (local $uv i32) + (local $sid i32) + (local $uv|12 i64) + (local $sid|13 i64) + (local $f i64) + (local $e i32) + (local $isSingle|16 i32) + (local $frc|17 i64) + (local $exp|18 i32) + (local $off i32) + (local $m i32) + (local $minExp i32) + (local $dk f64) + (local $k i32) + (local $index i32) + (local $off|25 i32) + (local $frc_pow i64) + (local $exp_pow i32) + (local $u i64) + (local $v i64) + (local $u0 i64) + (local $v0 i64) + (local $u1 i64) + (local $v1 i64) + (local $l i64) + (local $t i64) + (local $w i64) + (local $w_frc i64) + (local $e1 i32) + (local $e2 i32) + (local $w_exp i32) + (local $u|41 i64) + (local $v|42 i64) + (local $u0|43 i64) + (local $v0|44 i64) + (local $u1|45 i64) + (local $v1|46 i64) + (local $l|47 i64) + (local $t|48 i64) + (local $w|49 i64) + (local $wp_frc i64) + (local $e1|51 i32) + (local $e2|52 i32) + (local $wp_exp i32) + (local $u|54 i64) + (local $v|55 i64) + (local $u0|56 i64) + (local $v0|57 i64) + (local $u1|58 i64) + (local $v1|59 i64) + (local $l|60 i64) + (local $t|61 i64) + (local $w|62 i64) + (local $wm_frc i64) + (local $delta i64) + (local $len i32) + local.get $value + f64.const 0 + f64.lt + local.set $sign + local.get $sign + if + local.get $value + f64.neg + local.set $value + local.get $buffer + i32.const 45 + i32.store16 + end + block $~lib/util/number/grisu2|inlined.0 (result i32) + local.get $value + local.set $value|4 + local.get $buffer + local.set $buffer|5 + local.get $sign + local.set $sign|6 + local.get $isSingle + local.set $isSingle|7 + local.get $isSingle|7 + if + local.get $value|4 + f32.demote_f64 + i32.reinterpret_f32 + local.set $uv + local.get $uv + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.set $exp + local.get $uv + i32.const 8388607 + i32.and + local.set $sid + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + local.get $sid + i64.extend_i32_u + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 127 + i32.const 23 + i32.add + i32.sub + local.set $exp + else + local.get $value|4 + i64.reinterpret_f64 + local.set $uv|12 + local.get $uv|12 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $exp + local.get $uv|12 + i64.const 4503599627370495 + i64.and + local.set $sid|13 + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $sid|13 + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 1023 + i32.const 52 + i32.add + i32.sub + local.set $exp + end + local.get $frc + local.set $f + local.get $exp + local.set $e + local.get $isSingle|7 + local.set $isSingle|16 + local.get $f + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.set $frc|17 + local.get $e + i32.const 1 + i32.sub + local.set $exp|18 + local.get $frc|17 + i64.clz + i32.wrap_i64 + local.set $off + local.get $frc|17 + local.get $off + i64.extend_i32_s + i64.shl + local.set $frc|17 + local.get $exp|18 + local.get $off + i32.sub + local.set $exp|18 + i32.const 1 + local.get $f + local.get $isSingle|16 + if (result i64) + i64.const 8388608 + else + i64.const 4503599627370496 + end + i64.eq + i32.add + local.set $m + local.get $frc|17 + global.set $~lib/util/number/_frc_plus + local.get $f + local.get $m + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $e + local.get $m + i32.sub + local.get $exp|18 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $exp|18 + global.set $~lib/util/number/_exp + global.get $~lib/util/number/_exp + local.set $minExp + i32.const -61 + local.get $minExp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.set $dk + local.get $dk + i32.trunc_sat_f64_s + local.set $k + local.get $k + local.get $k + f64.convert_i32_s + local.get $dk + f64.ne + i32.add + local.set $k + local.get $k + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.set $index + i32.const 348 + local.get $index + i32.const 3 + i32.shl + i32.sub + global.set $~lib/util/number/_K + i32.const 11496 + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 12192 + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $frc + i64.clz + i32.wrap_i64 + local.set $off|25 + local.get $frc + local.get $off|25 + i64.extend_i32_s + i64.shl + local.set $frc + local.get $exp + local.get $off|25 + i32.sub + local.set $exp + global.get $~lib/util/number/_frc_pow + local.set $frc_pow + global.get $~lib/util/number/_exp_pow + local.set $exp_pow + block $~lib/util/number/umul64f|inlined.0 (result i64) + local.get $frc + local.set $u + local.get $frc_pow + local.set $v + local.get $u + i64.const 4294967295 + i64.and + local.set $u0 + local.get $v + i64.const 4294967295 + i64.and + local.set $v0 + local.get $u + i64.const 32 + i64.shr_u + local.set $u1 + local.get $v + i64.const 32 + i64.shr_u + local.set $v1 + local.get $u0 + local.get $v0 + i64.mul + local.set $l + local.get $u1 + local.get $v0 + i64.mul + local.get $l + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $u0 + local.get $v1 + i64.mul + local.get $t + i64.const 4294967295 + i64.and + i64.add + local.set $w + local.get $w + i64.const 2147483647 + i64.add + local.set $w + local.get $t + i64.const 32 + i64.shr_u + local.set $t + local.get $w + i64.const 32 + i64.shr_u + local.set $w + local.get $u1 + local.get $v1 + i64.mul + local.get $t + i64.add + local.get $w + i64.add + br $~lib/util/number/umul64f|inlined.0 + end + local.set $w_frc + block $~lib/util/number/umul64e|inlined.0 (result i32) + local.get $exp + local.set $e1 + local.get $exp_pow + local.set $e2 + local.get $e1 + local.get $e2 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.0 + end + local.set $w_exp + block $~lib/util/number/umul64f|inlined.1 (result i64) + global.get $~lib/util/number/_frc_plus + local.set $u|41 + local.get $frc_pow + local.set $v|42 + local.get $u|41 + i64.const 4294967295 + i64.and + local.set $u0|43 + local.get $v|42 + i64.const 4294967295 + i64.and + local.set $v0|44 + local.get $u|41 + i64.const 32 + i64.shr_u + local.set $u1|45 + local.get $v|42 + i64.const 32 + i64.shr_u + local.set $v1|46 + local.get $u0|43 + local.get $v0|44 + i64.mul + local.set $l|47 + local.get $u1|45 + local.get $v0|44 + i64.mul + local.get $l|47 + i64.const 32 + i64.shr_u + i64.add + local.set $t|48 + local.get $u0|43 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.const 4294967295 + i64.and + i64.add + local.set $w|49 + local.get $w|49 + i64.const 2147483647 + i64.add + local.set $w|49 + local.get $t|48 + i64.const 32 + i64.shr_u + local.set $t|48 + local.get $w|49 + i64.const 32 + i64.shr_u + local.set $w|49 + local.get $u1|45 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.add + local.get $w|49 + i64.add + br $~lib/util/number/umul64f|inlined.1 + end + i64.const 1 + i64.sub + local.set $wp_frc + block $~lib/util/number/umul64e|inlined.1 (result i32) + global.get $~lib/util/number/_exp + local.set $e1|51 + local.get $exp_pow + local.set $e2|52 + local.get $e1|51 + local.get $e2|52 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.1 + end + local.set $wp_exp + block $~lib/util/number/umul64f|inlined.2 (result i64) + global.get $~lib/util/number/_frc_minus + local.set $u|54 + local.get $frc_pow + local.set $v|55 + local.get $u|54 + i64.const 4294967295 + i64.and + local.set $u0|56 + local.get $v|55 + i64.const 4294967295 + i64.and + local.set $v0|57 + local.get $u|54 + i64.const 32 + i64.shr_u + local.set $u1|58 + local.get $v|55 + i64.const 32 + i64.shr_u + local.set $v1|59 + local.get $u0|56 + local.get $v0|57 + i64.mul + local.set $l|60 + local.get $u1|58 + local.get $v0|57 + i64.mul + local.get $l|60 + i64.const 32 + i64.shr_u + i64.add + local.set $t|61 + local.get $u0|56 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.const 4294967295 + i64.and + i64.add + local.set $w|62 + local.get $w|62 + i64.const 2147483647 + i64.add + local.set $w|62 + local.get $t|61 + i64.const 32 + i64.shr_u + local.set $t|61 + local.get $w|62 + i64.const 32 + i64.shr_u + local.set $w|62 + local.get $u1|58 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.add + local.get $w|62 + i64.add + br $~lib/util/number/umul64f|inlined.2 + end + i64.const 1 + i64.add + local.set $wm_frc + local.get $wp_frc + local.get $wm_frc + i64.sub + local.set $delta + local.get $buffer|5 + local.get $w_frc + local.get $w_exp + local.get $wp_frc + local.get $wp_exp + local.get $delta + local.get $sign|6 + call $~lib/util/number/genDigits + br $~lib/util/number/grisu2|inlined.0 + end + local.set $len + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.get $len + local.get $sign + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.set $len + local.get $len + local.get $sign + i32.add + return + ) + (func $~lib/util/number/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) + (local $buffer|2 i32) + (local $value|3 f64) + (local $isSingle i32) + (local $sign i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + local.get $buffer + local.set $buffer|2 + local.get $value + local.set $value|3 + i32.const 0 + local.set $isSingle + local.get $value|3 + f64.const 0 + f64.eq + if + local.get $buffer|2 + i32.const 48 + i32.store16 + local.get $buffer|2 + i32.const 46 + i32.store16 offset=2 + local.get $buffer|2 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + local.get $value|3 + local.get $value|3 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|3 + local.get $value|3 + f64.ne + if + local.get $buffer|2 + i32.const 78 + i32.store16 + local.get $buffer|2 + i32.const 97 + i32.store16 offset=2 + local.get $buffer|2 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + else + local.get $value|3 + f64.const 0 + f64.lt + local.set $sign + local.get $sign + if + local.get $buffer|2 + i32.const 45 + i32.store16 + local.get $buffer|2 + i32.const 2 + i32.add + local.set $buffer|2 + end + local.get $buffer|2 + i64.const 29555310648492105 + i64.store + local.get $buffer|2 + i64.const 34058970405077102 + i64.store offset=8 + i32.const 8 + local.get $sign + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + unreachable + end + local.get $buffer|2 + local.get $value|3 + local.get $isSingle + call $~lib/util/number/dtoa_core + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + return + ) + (func $std/array/Ref#toString (param $this i32) (result i32) + i32.const 12608 + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i32) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + i32.const 0 + local.set $sign + i32.const 1 + drop + local.get $value + i32.extend8_s + i32.const 0 + i32.lt_s + local.set $sign + local.get $sign + if + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $value + i32.extend8_s + i32.const -128 + i32.eq + if + local.get $buffer + i32.const 45 + i64.extend_i32_s + i32.const 48 + i32.const 1 + i32.add + i64.extend_i32_s + i64.const 16 + i64.shl + i64.or + i32.const 48 + i32.const 2 + i32.add + i64.extend_i32_s + i64.const 32 + i64.shl + i64.or + i32.const 48 + i32.const 8 + i32.add + i64.extend_i32_s + i64.const 48 + i64.shl + i64.or + i64.store + i32.const 4 + return + end + i32.const 1 + i32.const 2 + i32.eq + drop + local.get $buffer + i32.const 45 + i32.store16 + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 1 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $value + i32.extend8_s + i32.const 10 + i32.lt_u + if + local.get $dest + local.get $value + i32.extend8_s + i32.const 48 + i32.or + i32.store16 + i32.const 1 + local.get $sign + i32.add + return + end + i32.const 0 + local.set $decimals + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $value + i32.extend8_s + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i32) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + i32.const 0 + local.set $sign + i32.const 0 + drop + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop + local.get $value + i32.const 65535 + i32.and + i32.const 10 + i32.lt_u + if + local.get $buffer + local.get $value + i32.const 65535 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + i32.const 0 + local.set $decimals + i32.const 2 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 65535 + i32.and + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i32) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + i32.const 0 + local.set $sign + i32.const 1 + drop + local.get $value + i32.extend16_s + i32.const 0 + i32.lt_s + local.set $sign + local.get $sign + if + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $value + i32.extend16_s + i32.const -32768 + i32.eq + if + local.get $buffer + i32.const 45 + i64.extend_i32_s + i32.const 48 + i32.const 3 + i32.add + i64.extend_i32_s + i64.const 16 + i64.shl + i64.or + i32.const 48 + i32.const 2 + i32.add + i64.extend_i32_s + i64.const 32 + i64.shl + i64.or + i32.const 48 + i32.const 7 + i32.add + i64.extend_i32_s + i64.const 48 + i64.shl + i64.or + i64.store + local.get $buffer + i32.const 8 + i32.add + i32.const 48 + i32.const 6 + i32.add + i32.const 0 + i32.shl + i32.const 48 + i32.const 8 + i32.add + i32.const 16 + i32.shl + i32.or + i32.store + i32.const 6 + return + end + local.get $buffer + i32.const 45 + i32.store16 + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 1 + drop + i32.const 2 + i32.const 4 + i32.le_u + drop + local.get $value + i32.extend16_s + i32.const 10 + i32.lt_u + if + local.get $dest + local.get $value + i32.extend16_s + i32.const 48 + i32.or + i32.store16 + i32.const 1 + local.get $sign + i32.add + return + end + i32.const 0 + local.set $decimals + i32.const 2 + i32.const 4 + i32.le_u + drop + local.get $value + i32.extend16_s + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/util/number/decimalCount64High (param $value i64) (result i32) + local.get $value + i64.const 1000000000000000 + i64.lt_u + if + local.get $value + i64.const 1000000000000 + i64.lt_u + if + i32.const 10 + local.get $value + i64.const 100000000000 + i64.ge_u + i32.add + local.get $value + i64.const 10000000000 + i64.ge_u + i32.add + return + else + i32.const 13 + local.get $value + i64.const 100000000000000 + i64.ge_u + i32.add + local.get $value + i64.const 10000000000000 + i64.ge_u + i32.add + return + end + unreachable + else + local.get $value + i64.const 100000000000000000 + i64.lt_u + if + i32.const 16 + local.get $value + i64.const 10000000000000000 + i64.ge_u + i32.add + return + else + i32.const 18 + local.get $value + i64.const -8446744073709551616 + i64.ge_u + i32.add + local.get $value + i64.const 1000000000000000000 + i64.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa64_dec_lut (param $buffer i32) (param $num i64) (param $offset i32) + (local $t i64) + (local $r i32) + (local $b i32) + (local $c i32) + (local $b1 i32) + (local $b2 i32) + (local $c1 i32) + (local $c2 i32) + (local $digits1 i64) + (local $digits2 i64) + loop $while-continue|0 + local.get $num + i64.const 100000000 + i64.ge_u + if + local.get $num + i64.const 100000000 + i64.div_u + local.set $t + local.get $num + local.get $t + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 10000 + i32.div_u + local.set $b + local.get $r + i32.const 10000 + i32.rem_u + local.set $c + local.get $b + i32.const 100 + i32.div_u + local.set $b1 + local.get $b + i32.const 100 + i32.rem_u + local.set $b2 + local.get $c + i32.const 100 + i32.div_u + local.set $c1 + local.get $c + i32.const 100 + i32.rem_u + local.set $c2 + i32.const 6700 + local.get $c1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 6700 + local.get $c2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + i32.const 6700 + local.get $b1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 6700 + local.get $b2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $buffer + local.get $num + i32.wrap_i64 + local.get $offset + call $~lib/util/number/utoa32_dec_lut + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i64) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + (local $val64 i64) + (local $buffer|10 i32) + (local $num|11 i64) + (local $offset|12 i32) + i32.const 0 + local.set $sign + i32.const 0 + drop + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop + local.get $value + i64.const 10 + i64.lt_u + if + local.get $buffer + local.get $value + i32.const 48 + i64.extend_i32_s + i64.or + i64.store16 + i32.const 1 + return + end + i32.const 0 + local.set $decimals + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + local.set $val64 + local.get $val64 + call $~lib/util/number/decimalCount64High + local.set $decimals + local.get $dest + local.set $buffer|10 + local.get $val64 + local.set $num|11 + local.get $decimals + local.set $offset|12 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|10 + local.get $num|11 + local.get $offset|12 + call $~lib/util/number/utoa64_dec_lut + end + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i64) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + (local $val64 i64) + (local $buffer|10 i32) + (local $num|11 i64) + (local $offset|12 i32) + i32.const 0 + local.set $sign + i32.const 1 + drop + local.get $value + i64.const 0 + i64.lt_s + local.set $sign + local.get $sign + if + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + local.get $buffer + i32.const 45 + i32.store16 + i64.const 0 + local.get $value + i64.sub + local.set $value + end + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $value + i64.const 10 + i64.lt_u + if + local.get $dest + local.get $value + i32.const 48 + i64.extend_i32_s + i64.or + i64.store16 + i32.const 1 + local.get $sign + i32.add + return + end + i32.const 0 + local.set $decimals + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + local.set $val64 + local.get $val64 + call $~lib/util/number/decimalCount64High + local.set $decimals + local.get $dest + local.set $buffer|10 + local.get $val64 + local.set $num|11 + local.get $decimals + local.set $offset|12 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|10 + local.get $num|11 + local.get $offset|12 + call $~lib/util/number/utoa64_dec_lut + end + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/array/Array<~lib/array/Array>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/array/Array>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/array/Array>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i32) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + i32.const 0 + local.set $sign + i32.const 0 + drop + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop + local.get $value + i32.const 255 + i32.and + i32.const 10 + i32.lt_u + if + local.get $buffer + local.get $value + i32.const 255 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + i32.const 0 + local.set $decimals + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 255 + i32.and + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/array/Array<~lib/array/Array>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/array/Array>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/array/Array>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/array/arr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array/charset + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array/inputStabArr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array/outputStabArr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1616 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 5392 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 7120 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 8176 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>#__visit + ) + (func $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>#__visit + ) + (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit + ) + (func $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#__visit + ) + (func $~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array>#__visit + ) + (func $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#__visit + ) + (func $~lib/array/Array<~lib/string/String|null>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String|null>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>#__visit + ) + (func $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>#__visit + ) + (func $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit + ) + (func $~lib/array/Array<~lib/array/Array>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__visit + ) + (func $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array> + block $~lib/array/Array<~lib/array/Array<~lib/string/String|null>> + block $~lib/array/Array<~lib/array/Array<~lib/array/Array>> + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32> + block $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32> + block $~lib/array/Array<~lib/string/String|null> + block $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32> + block $~lib/array/Array> + block $std/array/Proxy + block $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32> + block $~lib/array/Array<~lib/array/Array> + block $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32> + block $~lib/function/Function<%28u32%2Cu32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28f64%2Cf64%29=>i32> + block $~lib/function/Function<%28f32%2Cf32%29=>i32> + block $~lib/array/Array + block $std/array/Dim + block $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool> + block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String> + block $~lib/array/Array<~lib/string/String> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/typedarray/Uint8Array + block $std/array/Ref + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $std/array/Ref $~lib/typedarray/Uint8Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void> $~lib/array/Array<~lib/string/String> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32> $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool> $std/array/Dim $~lib/array/Array $~lib/function/Function<%28f32%2Cf32%29=>i32> $~lib/function/Function<%28f64%2Cf64%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28u32%2Cu32%29=>i32> $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32> $~lib/array/Array<~lib/array/Array> $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32> $std/array/Proxy $~lib/array/Array> $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32> $~lib/array/Array<~lib/string/String|null> $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32> $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32> $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array<~lib/array/Array> $~lib/array/Array<~lib/array/Array> $~lib/array/Array<~lib/array/Array<~lib/array/Array>> $~lib/array/Array<~lib/array/Array<~lib/string/String|null>> $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>~visit + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/array + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 47968 + i32.const 48016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $std/array/Ref#constructor (param $this i32) (param $v i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $v + call $std/array/Ref#set:v + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) + (local $buffer i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $length + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 576 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + local.get $alignLog2 + i32.shl + local.tee $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $length + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Uint8Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array#fill (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.get $value + local.get $start + local.get $end + call $~lib/util/bytes/FILL + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) + (local $i i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.eqz + if + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $len + local.get $len + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $a + local.get $b + i32.eq + if + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + i32.const 0 + drop + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#fill@varargs (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $start + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $value + local.get $start + local.get $end + call $~lib/array/Array#fill + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/array/Array#fill (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.get $value + local.get $start + local.get $end + call $~lib/util/bytes/FILL + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) + (local $i i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.eqz + if + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $len + local.get $len + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $a + local.get $b + i32.eq + if + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + i32.const 0 + drop + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#fill@varargs (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $start + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $value + local.get $start + local.get $end + call $~lib/array/Array#fill + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/array/Array#fill (param $this i32) (param $value f32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.get $value + local.get $start + local.get $end + call $~lib/util/bytes/FILL + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f32) + (local $value f32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) + (local $i i32) + (local $4 f32) + (local $5 f32) + (local $x f64) + (local $x|7 f64) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.eqz + if + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + local.set $len + local.get $len + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $a + local.get $b + i32.eq + if + i32.const 1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + block $for-continue|0 + i32.const 1 + drop + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.tee $4 + local.get $4 + f32.ne + if (result i32) + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.tee $5 + local.get $5 + f32.ne + else + i32.const 0 + end + if + br $for-continue|0 + end + block $~lib/math/NativeMath.signbit|inlined.0 (result i32) + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + f64.promote_f32 + local.set $x + local.get $x + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.0 + end + i32.const 0 + i32.ne + block $~lib/math/NativeMath.signbit|inlined.1 (result i32) + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + f64.promote_f32 + local.set $x|7 + local.get $x|7 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.1 + end + i32.const 0 + i32.ne + i32.ne + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + f32.ne + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#fill@varargs (param $this i32) (param $value f32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $start + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $value + local.get $start + local.get $end + call $~lib/array/Array#fill + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $std/array/internalCapacity (param $array i32) (result i32) + (local $buffer i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.tee $buffer + i32.store offset=4 + local.get $buffer + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 2 + i32.shr_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 0 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#pop (param $this i32) (result i32) + (local $len i32) + (local $val i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + local.set $len + local.get $len + i32.const 1 + i32.lt_s + if + i32.const 1616 + i32.const 80 + i32.const 271 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $len + i32.const 1 + i32.sub + local.tee $len + i32.const 2 + i32.shl + i32.add + i32.load + local.set $val + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $len + call $~lib/array/Array#set:length_ + local.get $val + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#at (param $this i32) (param $index i32) (result i32) + (local $len i32) + (local $value i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + local.get $index + i32.const 0 + local.get $len + local.get $index + i32.const 0 + i32.ge_s + select + i32.add + local.set $index + local.get $index + local.get $len + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 143 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#concat (param $this i32) (param $other i32) (result i32) + (local $thisLen i32) + (local $otherLen i32) + (local $outLen i32) + (local $out i32) + (local $outStart i32) + (local $thisSize i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length_ + local.set $thisLen + local.get $other + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length_ + local.set $otherLen + local.get $thisLen + local.get $otherLen + i32.add + local.set $outLen + local.get $outLen + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 224 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $outLen + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $out + i32.store offset=4 + local.get $out + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:dataStart + local.set $outStart + local.get $thisLen + i32.const 2 + i32.shl + local.set $thisSize + i32.const 0 + drop + local.get $outStart + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:dataStart + local.get $thisSize + memory.copy + local.get $outStart + local.get $thisSize + i32.add + local.get $other + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:dataStart + local.get $otherLen + i32.const 2 + i32.shl + memory.copy + local.get $out + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#copyWithin (param $this i32) (param $target i32) (param $start i32) (param $end i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $to i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $from i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $last i32) + (local $23 i32) + (local $24 i32) + (local $count i32) + (local $26 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store + local.get $26 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store + local.get $26 + call $~lib/array/Array#get:length_ + local.set $len + local.get $end + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $end + local.get $target + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $target + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + else + local.get $target + local.tee $10 + local.get $len + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $to + local.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $start + i32.add + local.tee $13 + i32.const 0 + local.tee $14 + local.get $13 + local.get $14 + i32.gt_s + select + else + local.get $start + local.tee $15 + local.get $len + local.tee $16 + local.get $15 + local.get $16 + i32.lt_s + select + end + local.set $from + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end + i32.add + local.tee $18 + i32.const 0 + local.tee $19 + local.get $18 + local.get $19 + i32.gt_s + select + else + local.get $end + local.tee $20 + local.get $len + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + end + local.set $last + local.get $last + local.get $from + i32.sub + local.tee $23 + local.get $len + local.get $to + i32.sub + local.tee $24 + local.get $23 + local.get $24 + i32.lt_s + select + local.set $count + local.get $ptr + local.get $to + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $from + i32.const 2 + i32.shl + i32.add + local.get $count + i32.const 2 + i32.shl + memory.copy + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 + return + ) + (func $~lib/array/Array#copyWithin@varargs (param $this i32) (param $target i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 2 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $target + local.get $start + local.get $end + call $~lib/array/Array#copyWithin + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) + (local $i i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.eqz + if + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $len + local.get $len + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $a + local.get $b + i32.eq + if + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + i32.const 0 + drop + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#unshift (param $this i32) (param $value i32) (result i32) + (local $len i32) + (local $ptr i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $ptr + i32.const 4 + i32.add + local.get $ptr + local.get $len + i32.const 1 + i32.sub + i32.const 2 + i32.shl + memory.copy + local.get $ptr + local.get $value + i32.store + i32.const 0 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#shift (param $this i32) (result i32) + (local $len i32) + (local $base i32) + (local $element i32) + (local $lastIndex i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + local.set $len + local.get $len + i32.const 1 + i32.lt_s + if + i32.const 1616 + i32.const 80 + i32.const 330 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $base + local.get $base + i32.load + local.set $element + local.get $len + i32.const 1 + i32.sub + local.set $lastIndex + local.get $base + local.get $base + i32.const 4 + i32.add + local.get $lastIndex + i32.const 2 + i32.shl + memory.copy + i32.const 0 + drop + local.get $base + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $lastIndex + call $~lib/array/Array#set:length_ + local.get $element + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/array/Array#slice (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $len 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 $slice i32) + (local $sliceBase i32) + (local $thisBase i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:length_ + local.set $len + local.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $start + local.get $len + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $start + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $start + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $end + local.get $len + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + else + local.get $end + local.tee $10 + local.get $len + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $end + local.get $end + local.get $start + i32.sub + local.tee $12 + i32.const 0 + local.tee $13 + local.get $12 + local.get $13 + i32.gt_s + select + local.set $len + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $slice + i32.store offset=4 + local.get $slice + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:dataStart + local.set $sliceBase + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:dataStart + local.get $start + i32.const 2 + i32.shl + i32.add + local.set $thisBase + i32.const 0 + drop + local.get $sliceBase + local.get $thisBase + local.get $len + i32.const 2 + i32.shl + memory.copy + local.get $slice + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + ) + (func $~lib/array/Array#slice@varargs (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $start + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $start + local.get $end + call $~lib/array/Array#slice + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/array/Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#indexOf (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $ptr i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length_ + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $fromIndex + local.get $len + i32.ge_s + end + if + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $len + local.get $fromIndex + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $fromIndex + end + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:dataStart + local.set $ptr + loop $while-continue|0 + local.get $fromIndex + local.get $len + i32.lt_s + if + local.get $ptr + local.get $fromIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.get $value + i32.eq + if + local.get $fromIndex + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end + end + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/array/Array#indexOf (param $this i32) (param $value f32) (param $fromIndex i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $ptr i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length_ + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $fromIndex + local.get $len + i32.ge_s + end + if + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $len + local.get $fromIndex + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $fromIndex + end + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:dataStart + local.set $ptr + loop $while-continue|0 + local.get $fromIndex + local.get $len + i32.lt_s + if + local.get $ptr + local.get $fromIndex + i32.const 2 + i32.shl + i32.add + f32.load + local.get $value + f32.eq + if + local.get $fromIndex + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end + end + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/array/Array#indexOf (param $this i32) (param $value f64) (param $fromIndex i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $ptr i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length_ + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $fromIndex + local.get $len + i32.ge_s + end + if + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $len + local.get $fromIndex + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $fromIndex + end + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:dataStart + local.set $ptr + loop $while-continue|0 + local.get $fromIndex + local.get $len + i32.lt_s + if + local.get $ptr + local.get $fromIndex + i32.const 3 + i32.shl + i32.add + f64.load + local.get $value + f64.eq + if + local.get $fromIndex + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end + end + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/array/Array#lastIndexOf (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (local $len i32) + (local $ptr i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + local.set $len + local.get $len + i32.const 0 + i32.eq + if + i32.const -1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $len + local.get $fromIndex + i32.add + local.set $fromIndex + else + local.get $fromIndex + local.get $len + i32.ge_s + if + local.get $len + i32.const 1 + i32.sub + local.set $fromIndex + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $ptr + loop $while-continue|0 + local.get $fromIndex + i32.const 0 + i32.ge_s + if + local.get $ptr + local.get $fromIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.get $value + i32.eq + if + local.get $fromIndex + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $fromIndex + i32.const 1 + i32.sub + local.set $fromIndex + br $while-continue|0 + end + end + i32.const -1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/array/Array#lastIndexOf@varargs (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + local.set $fromIndex + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $value + local.get $fromIndex + call $~lib/array/Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/array/Array#includes (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $value + local.get $fromIndex + call $~lib/array/Array#indexOf + i32.const 0 + i32.ge_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#includes (param $this i32) (param $value f32) (param $fromIndex i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $ptr i32) + (local $elem f32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length_ + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $fromIndex + local.get $len + i32.ge_s + end + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $len + local.get $fromIndex + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $fromIndex + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:dataStart + local.set $ptr + loop $while-continue|0 + local.get $fromIndex + local.get $len + i32.lt_s + if + local.get $ptr + local.get $fromIndex + i32.const 2 + i32.shl + i32.add + f32.load + local.set $elem + local.get $elem + local.get $value + f32.eq + if (result i32) + i32.const 1 + else + local.get $elem + local.get $elem + f32.ne + local.get $value + local.get $value + f32.ne + i32.and + end + if + i32.const 1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end + end + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#includes (param $this i32) (param $value f64) (param $fromIndex i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $ptr i32) + (local $elem f64) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length_ + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $fromIndex + local.get $len + i32.ge_s + end + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $len + local.get $fromIndex + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $fromIndex + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:dataStart + local.set $ptr + loop $while-continue|0 + local.get $fromIndex + local.get $len + i32.lt_s + if + local.get $ptr + local.get $fromIndex + i32.const 3 + i32.shl + i32.add + f64.load + local.set $elem + local.get $elem + local.get $value + f64.eq + if (result i32) + i32.const 1 + else + local.get $elem + local.get $elem + f64.ne + local.get $value + local.get $value + f64.ne + i32.and + end + if + i32.const 1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end + end + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#splice (param $this i32) (param $start i32) (param $deleteCount i32) (result i32) + (local $len 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 $result i32) + (local $resultStart i32) + (local $thisStart i32) + (local $thisBase i32) + (local $offset i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:length_ + local.set $len + local.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $start + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $start + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $start + local.get $deleteCount + local.tee $8 + local.get $len + local.get $start + i32.sub + local.tee $9 + local.get $8 + local.get $9 + i32.lt_s + select + local.tee $10 + i32.const 0 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + local.set $deleteCount + global.get $~lib/memory/__stack_pointer + local.get $deleteCount + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result + i32.store offset=4 + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:dataStart + local.set $resultStart + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:dataStart + local.set $thisStart + local.get $thisStart + local.get $start + i32.const 2 + i32.shl + i32.add + local.set $thisBase + local.get $resultStart + local.get $thisBase + local.get $deleteCount + i32.const 2 + i32.shl + memory.copy + local.get $start + local.get $deleteCount + i32.add + local.set $offset + local.get $len + local.get $offset + i32.ne + if + local.get $thisBase + local.get $thisStart + local.get $offset + i32.const 2 + i32.shl + i32.add + local.get $len + local.get $offset + i32.sub + i32.const 2 + i32.shl + memory.copy + end + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + local.get $len + local.get $deleteCount + i32.sub + call $~lib/array/Array#set:length_ + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + ) + (func $~lib/array/Array#splice@varargs (param $this i32) (param $start i32) (param $deleteCount i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $deleteCount + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $start + local.get $deleteCount + call $~lib/array/Array#splice + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/array/Array#splice (param $this i32) (param $start i32) (param $deleteCount i32) (result i32) + (local $len 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 $result i32) + (local $resultStart i32) + (local $thisStart i32) + (local $thisBase i32) + (local $offset i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:length_ + local.set $len + local.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $start + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $start + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $start + local.get $deleteCount + local.tee $8 + local.get $len + local.get $start + i32.sub + local.tee $9 + local.get $8 + local.get $9 + i32.lt_s + select + local.tee $10 + i32.const 0 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + local.set $deleteCount + global.get $~lib/memory/__stack_pointer + local.get $deleteCount + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result + i32.store offset=4 + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:dataStart + local.set $resultStart + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:dataStart + local.set $thisStart + local.get $thisStart + local.get $start + i32.const 2 + i32.shl + i32.add + local.set $thisBase + local.get $resultStart + local.get $thisBase + local.get $deleteCount + i32.const 2 + i32.shl + memory.copy + local.get $start + local.get $deleteCount + i32.add + local.set $offset + local.get $len + local.get $offset + i32.ne + if + local.get $thisBase + local.get $thisStart + local.get $offset + i32.const 2 + i32.shl + i32.add + local.get $len + local.get $offset + i32.sub + i32.const 2 + i32.shl + memory.copy + end + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + local.get $len + local.get $deleteCount + i32.sub + call $~lib/array/Array#set:length_ + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 5392 + i32.const 80 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#splice (param $this i32) (param $start i32) (param $deleteCount i32) (result i32) + (local $len 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 $result i32) + (local $resultStart i32) + (local $thisStart i32) + (local $thisBase i32) + (local $offset i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:length_ + local.set $len + local.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $start + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $start + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $start + local.get $deleteCount + local.tee $8 + local.get $len + local.get $start + i32.sub + local.tee $9 + local.get $8 + local.get $9 + i32.lt_s + select + local.tee $10 + i32.const 0 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + local.set $deleteCount + global.get $~lib/memory/__stack_pointer + local.get $deleteCount + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result + i32.store offset=4 + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:dataStart + local.set $resultStart + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/array/Array#get:dataStart + local.set $thisStart + local.get $thisStart + local.get $start + i32.const 2 + i32.shl + i32.add + local.set $thisBase + local.get $resultStart + local.get $thisBase + local.get $deleteCount + i32.const 2 + i32.shl + memory.copy + local.get $start + local.get $deleteCount + i32.add + local.set $offset + local.get $len + local.get $offset + i32.ne + if + local.get $thisBase + local.get $thisStart + local.get $offset + i32.const 2 + i32.shl + i32.add + local.get $len + local.get $offset + i32.sub + i32.const 2 + i32.shl + memory.copy + end + local.get $this + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + local.get $len + local.get $deleteCount + i32.sub + call $~lib/array/Array#set:length_ + local.get $result + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 1 + i32.eqz + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#findIndex (param $this i32) (param $fn i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + local.set $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length_ + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length_ + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + if + local.get $i + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const -1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $start:std/array~anonymous|3 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop + local.get $value + i32.const 100 + i32.eq + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:std/array~anonymous|5 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + local.get $value + i32.const 100 + i32.eq + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $i i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + if + local.get $i + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + i32.const -1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:std/array~anonymous|9 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + local.get $value + i32.const 100 + i32.eq + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#every (param $this i32) (param $fn i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + local.set $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length_ + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length_ + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $start:std/array~anonymous|12 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop + local.get $value + i32.const 10 + i32.lt_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:std/array~anonymous|14 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + local.get $value + i32.const 3 + i32.lt_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#some (param $this i32) (param $fn i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + local.set $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length_ + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length_ + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + if + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $start:std/array~anonymous|17 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop + local.get $value + i32.const 10 + i32.gt_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:std/array~anonymous|19 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + local.get $value + i32.const 3 + i32.gt_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#forEach (param $this i32) (param $fn i32) + (local $i i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + local.set $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length_ + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length_ + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $5) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|21 (param $value i32) (param $_ i32) (param $array i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop + global.get $std/array/i + local.get $value + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|23 (param $value i32) (param $_ i32) (param $array i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $value + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|24 (param $value i32) (param $index i32) (param $array i32) + (local $i i32) + (local $i|4 i32) + (local $i|5 i32) + (local $i|6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + i32.const 0 + i32.eq + if + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + i32.const 4 + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#pop + drop + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $i|4 + loop $for-loop|1 + local.get $i|4 + i32.const 100 + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 100 + local.get $i|4 + i32.add + call $~lib/array/Array#push + drop + local.get $i|4 + i32.const 1 + i32.add + local.set $i|4 + br $for-loop|1 + end + end + i32.const 0 + local.set $i|5 + loop $for-loop|2 + local.get $i|5 + i32.const 100 + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#pop + drop + local.get $i|5 + i32.const 1 + i32.add + local.set $i|5 + br $for-loop|2 + end + end + i32.const 0 + local.set $i|6 + loop $for-loop|3 + local.get $i|6 + i32.const 100 + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $i|6 + i32.const 200 + i32.add + call $~lib/array/Array#push + drop + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|3 + end + end + end + local.get $index + i32.const 2 + i32.eq + if + local.get $value + i32.const 202 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 767 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#map<~lib/string/String> (param $this i32) (param $fn i32) (result i32) + (local $len i32) + (local $out i32) + (local $outStart i32) + (local $i i32) + (local $6 i32) + (local $7 i32) + (local $result i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array#get:length_ + local.set $len + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__newArray + local.tee $out + i32.store offset=4 + local.get $out + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $outStart + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + local.tee $6 + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array#get:length_ + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + local.tee $result + i32.store offset=12 + local.get $outStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $result + i32.store + i32.const 1 + drop + local.get $out + local.get $result + i32.const 1 + call $~lib/rt/itcms/__link + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/array/Array#map (param $this i32) (param $fn i32) (result i32) + (local $len i32) + (local $out i32) + (local $outStart i32) + (local $i i32) + (local $6 i32) + (local $7 i32) + (local $result f32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array#get:length_ + local.set $len + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $out + i32.store offset=4 + local.get $out + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array#get:dataStart + local.set $outStart + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + local.tee $6 + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array#get:length_ + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $18) + local.set $result + local.get $outStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $result + f32.store + i32.const 0 + drop + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $start:std/array~anonymous|27 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop + global.get $std/array/i + local.get $value + i32.add + global.set $std/array/i + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#map (param $this i32) (param $fn i32) (result i32) + (local $len i32) + (local $out i32) + (local $outStart i32) + (local $i i32) + (local $6 i32) + (local $7 i32) + (local $result i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array#get:length_ + local.set $len + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $out + i32.store offset=4 + local.get $out + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array#get:dataStart + local.set $outStart + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + local.tee $6 + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array#get:length_ + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + local.set $result + local.get $outStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $result + i32.store + i32.const 0 + drop + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $start:std/array~anonymous|29 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $value + i32.add + global.set $std/array/i + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#filter (param $this i32) (param $fn i32) (result i32) + (local $result i32) + (local $i i32) + (local $len i32) + (local $5 i32) + (local $6 i32) + (local $value i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result + i32.store + i32.const 0 + local.set $i + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length_ + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + local.tee $5 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length_ + local.tee $6 + local.get $5 + local.get $6 + i32.lt_s + select + i32.lt_s + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + local.get $value + local.get $i + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + if + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + call $~lib/array/Array#push + drop + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $start:std/array~anonymous|31 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop + global.get $std/array/i + local.get $value + i32.add + global.set $std/array/i + local.get $value + i32.const 2 + i32.ge_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:std/array~anonymous|33 (param $value i32) (param $_ i32) (param $array i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $value + i32.add + global.set $std/array/i + local.get $value + i32.const 2 + i32.ge_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $acc i32) + (local $i i32) + (local $len i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $initialValue + local.set $acc + i32.const 0 + local.set $i + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length_ + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + local.tee $6 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length_ + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if + local.get $acc + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $4) + local.set $acc + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $acc + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $acc i32) + (local $i i32) + (local $len i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $initialValue + local.set $acc + i32.const 0 + local.set $i + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length_ + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + local.tee $6 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length_ + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if + local.get $acc + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $4) + local.set $acc + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $acc + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $start:std/array~anonymous|38 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + call $~lib/array/Array#push + drop + local.get $prev + local.get $current + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $start:std/array~anonymous|40 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#pop + drop + local.get $prev + local.get $current + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $acc i32) + (local $i i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $initialValue + local.set $acc + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $acc + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 4 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $4) + local.set $acc + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $acc + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/array/Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $acc i32) + (local $i i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $initialValue + local.set $acc + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $acc + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 4 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $4) + local.set $acc + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $acc + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $start:std/array~anonymous|45 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + call $~lib/array/Array#push + drop + local.get $prev + local.get $current + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $start:std/array~anonymous|47 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#pop + drop + local.get $prev + local.get $current + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $std/array/Dim#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $std/array/Dim#set:height + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $std/array/Dim#set:width + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a f32) + (local $b f32) + (local $c i32) + (local $a|7 f32) + (local $b|8 f32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + f32.load + local.set $a + local.get $ptr + f32.load offset=4 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + f32.store + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + f32.load offset=8 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + f32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + f32.store offset=8 + end + local.get $ptr + f32.load + local.set $a|7 + local.get $ptr + f32.load offset=4 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + f32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.0 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.0 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:length_ + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 9232 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/array/Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a f64) + (local $b f64) + (local $c i32) + (local $a|7 f64) + (local $b|8 f64) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + f64.load + local.set $a + local.get $ptr + f64.load offset=8 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + f64.store + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + f64.load offset=16 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + f64.store offset=8 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + f64.store offset=16 + end + local.get $ptr + f64.load + local.set $a|7 + local.get $ptr + f64.load offset=8 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + f64.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.1 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.1 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 3 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:length_ + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 9520 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/array/Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f64) + (local $value f64) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $std/array/isArraysEqual (param $a i32) (param $b i32) (param $len i32) (result i32) + (local $i i32) + (local $4 f64) + (local $5 f64) + (local $x f64) + (local $x|7 f64) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.eqz + if + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + local.set $len + local.get $len + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $a + local.get $b + i32.eq + if + i32.const 1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + block $for-continue|0 + i32.const 1 + drop + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.tee $4 + local.get $4 + f64.ne + if (result i32) + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.tee $5 + local.get $5 + f64.ne + else + i32.const 0 + end + if + br $for-continue|0 + end + block $~lib/math/NativeMath.signbit|inlined.2 (result i32) + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.set $x + local.get $x + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.2 + end + i32.const 0 + i32.ne + block $~lib/math/NativeMath.signbit|inlined.3 (result i32) + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.set $x|7 + local.get $x|7 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.3 + end + i32.const 0 + i32.ne + i32.ne + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + local.get $b + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $i + call $~lib/array/Array#__get + f64.ne + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + i32.load + local.set $a + local.get $ptr + i32.load offset=4 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + i32.load offset=8 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store offset=8 + end + local.get $ptr + i32.load + local.set $a|7 + local.get $ptr + i32.load offset=4 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.2 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.2 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:length_ + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + i32.const 9696 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/array/Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + i32.load + local.set $a + local.get $ptr + i32.load offset=4 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + i32.load offset=8 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store offset=8 + end + local.get $ptr + i32.load + local.set $a|7 + local.get $ptr + i32.load offset=4 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.3 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.3 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:length_ + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 9824 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/array/Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/array/createReverseOrderedArray (param $size i32) (result i32) + (local $arr i32) + (local $i i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $arr + i32.store + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $arr + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $i + local.get $size + i32.const 1 + i32.sub + local.get $i + i32.sub + call $~lib/array/Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $arr + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array/createRandomOrderedArray (param $size i32) (result i32) + (local $arr i32) + (local $i i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $arr + i32.store + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $arr + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $i + call $~lib/math/NativeMath.random + local.get $size + f64.convert_i32_s + f64.mul + i32.trunc_sat_f64_s + call $~lib/array/Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $arr + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array/isSorted (param $data i32) (param $comparator i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + local.set $i + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $std/array/assertSorted (param $arr i32) (param $comparator i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $std/array/isSorted + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1080 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/assertSortedDefault (param $arr i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $arr + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + i32.const 10096 + br $~lib/util/sort/COMPARATOR|inlined.1 + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#slice (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $len 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 $slice i32) + (local $sliceBase i32) + (local $thisBase i32) + (local $off i32) + (local $end|18 i32) + (local $ref i32) + (local $20 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store + local.get $20 + call $~lib/array/Array#get:length_ + local.set $len + local.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $start + local.get $len + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $start + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $start + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $end + local.get $len + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + else + local.get $end + local.tee $10 + local.get $len + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $end + local.get $end + local.get $start + i32.sub + local.tee $12 + i32.const 0 + local.tee $13 + local.get $12 + local.get $13 + i32.gt_s + select + local.set $len + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.const 23 + i32.const 0 + call $~lib/rt/__newArray + local.tee $slice + i32.store offset=4 + local.get $slice + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store + local.get $20 + call $~lib/array/Array#get:dataStart + local.set $sliceBase + local.get $this + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store + local.get $20 + call $~lib/array/Array#get:dataStart + local.get $start + i32.const 2 + i32.shl + i32.add + local.set $thisBase + i32.const 1 + drop + i32.const 0 + local.set $off + local.get $len + i32.const 2 + i32.shl + local.set $end|18 + loop $while-continue|0 + local.get $off + local.get $end|18 + i32.lt_u + if + local.get $thisBase + local.get $off + i32.add + i32.load + local.set $ref + local.get $sliceBase + local.get $off + i32.add + local.get $ref + i32.store + local.get $slice + local.get $ref + i32.const 1 + call $~lib/rt/itcms/__link + local.get $off + i32.const 4 + i32.add + local.set $off + br $while-continue|0 + end + end + local.get $slice + local.set $20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $20 + return + ) + (func $~lib/array/Array#slice@varargs (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $start + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $start + local.get $end + call $~lib/array/Array#slice + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/array/Dim#get:height + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/array/Dim#get:height + i32.sub + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $b + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $max + i32.store offset=12 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $max + i32.store offset=12 + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $max + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $min + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + i32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $tmp + i32.store offset=8 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $b + i32.store offset=4 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=12 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store + global.get $~lib/memory/__stack_pointer + local.get $a + local.get $b + local.get $c + select + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=8 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a|7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b|8 + i32.store offset=20 + local.get $a|7 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b|8 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.4 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.4 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:length_ + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 5392 + i32.const 80 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array/assertStableSortedForComplexObjects + (local $sorted i32) + (local $check i32) + (local $i i32) + (local $len i32) + (local $input i32) + (local $target i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/array/inputStabArr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#slice@varargs + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 10192 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#sort + local.tee $sorted + i32.store offset=12 + i32.const 1 + local.set $check + i32.const 0 + local.set $i + global.get $std/array/inputStabArr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + local.set $len + block $for-break0 + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $sorted + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__get + local.tee $input + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/outputStabArr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__get + local.tee $target + i32.store offset=20 + local.get $input + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $std/array/Dim#get:height + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $std/array/Dim#get:height + i32.ne + if (result i32) + i32.const 1 + else + local.get $input + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $std/array/Dim#get:width + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $std/array/Dim#get:width + i32.ne + end + if + i32.const 0 + local.set $check + br $for-break0 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + end + local.get $check + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1076 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array<~lib/array/Array>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array<~lib/array/Array>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array<~lib/array/Array>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array<~lib/array/Array>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array<~lib/array/Array>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<~lib/array/Array>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/createReverseOrderedNestedArray (param $size i32) (result i32) + (local $arr i32) + (local $i i32) + (local $inner i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array<~lib/array/Array>#constructor + local.tee $arr + i32.store + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/array/Array#constructor + local.tee $inner + i32.store offset=4 + local.get $inner + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + local.get $size + i32.const 1 + i32.sub + local.get $i + i32.sub + call $~lib/array/Array#__set + local.get $arr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $i + local.get $inner + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $arr + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $start:std/array~anonymous|52 (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.sub + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $b + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $max + i32.store offset=12 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $max + i32.store offset=12 + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $max + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $min + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + i32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/extendRunRight<~lib/array/Array> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $tmp + i32.store offset=8 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/util/sort/mergeRuns<~lib/array/Array> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $b + i32.store offset=4 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=12 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT<~lib/array/Array> (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store + global.get $~lib/memory/__stack_pointer + local.get $a + local.get $b + local.get $c + select + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=8 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a|7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b|8 + i32.store offset=20 + local.get $a|7 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b|8 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.5 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.5 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight<~lib/array/Array> + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/array/Array> + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight<~lib/array/Array> + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/array/Array> + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns<~lib/array/Array> + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns<~lib/array/Array> + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array<~lib/array/Array>#get:length_ + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT<~lib/array/Array> + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array<~lib/array/Array>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<~lib/array/Array>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/array/Array>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 5392 + i32.const 80 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array/isSorted<~lib/array/Array> (param $data i32) (param $comparator i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1 + local.set $i + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/array/Array>#get:length + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $i + i32.const 1 + i32.sub + call $~lib/array/Array<~lib/array/Array>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $i + call $~lib/array/Array<~lib/array/Array>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $std/array/assertSorted<~lib/array/Array> (param $arr i32) (param $comparator i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array<~lib/array/Array>#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $std/array/isSorted<~lib/array/Array> + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1080 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 32 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $std/array/Proxy#constructor (param $this i32) (param $x i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 31 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $x + call $std/array/Proxy#set:x + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/createReverseOrderedElementsArray (param $size i32) (result i32) + (local $arr i32) + (local $i i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array>#constructor + local.tee $arr + i32.store + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $arr + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $i + i32.const 0 + local.get $size + i32.const 1 + i32.sub + local.get $i + i32.sub + call $std/array/Proxy#constructor + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/array/Array>#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $arr + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:std/array~anonymous|53 (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/array/Proxy#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/array/Proxy#get:x + i32.sub + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/sort/insertionSort> (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $b + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $max + i32.store offset=12 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $max + i32.store offset=12 + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $max + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $min + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + i32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/extendRunRight> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $tmp + i32.store offset=8 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/util/sort/mergeRuns> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $b + i32.store offset=4 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=12 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT> (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store + global.get $~lib/memory/__stack_pointer + local.get $a + local.get $b + local.get $c + select + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=8 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a|7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b|8 + i32.store offset=20 + local.get $a|7 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b|8 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.6 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.6 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight> + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort> + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight> + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort> + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns> + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns> + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array>#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array>#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array>#get:length_ + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT> + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array>#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 5392 + i32.const 80 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array/isSorted> (param $data i32) (param $comparator i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1 + local.set $i + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array>#get:length + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $i + i32.const 1 + i32.sub + call $~lib/array/Array>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $i + call $~lib/array/Array>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $std/array/assertSorted> (param $arr i32) (param $comparator i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array>#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $std/array/isSorted> + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1080 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/insertionSort<~lib/string/String|null> (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $b + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $max + i32.store offset=12 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $max + i32.store offset=12 + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $max + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $min + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + i32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/extendRunRight<~lib/string/String|null> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $tmp + i32.store offset=8 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/util/sort/mergeRuns<~lib/string/String|null> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $b + i32.store offset=4 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=12 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT<~lib/string/String|null> (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store + global.get $~lib/memory/__stack_pointer + local.get $a + local.get $b + local.get $c + select + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=8 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a|7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b|8 + i32.store offset=20 + local.get $a|7 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b|8 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/string/String|null> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.7 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.7 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight<~lib/string/String|null> + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/string/String|null> + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight<~lib/string/String|null> + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/string/String|null> + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns<~lib/string/String|null> + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns<~lib/string/String|null> + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String|null>#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array<~lib/string/String|null>#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array<~lib/string/String|null>#get:length_ + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT<~lib/string/String|null> + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array<~lib/string/String|null>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<~lib/string/String|null>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/string/String|null>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String|null>#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String|null>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 1 + i32.eqz + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array/isSorted<~lib/string/String|null> (param $data i32) (param $comparator i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1 + local.set $i + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String|null>#get:length + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $i + i32.const 1 + i32.sub + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $i + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $std/array/assertSorted<~lib/string/String|null> (param $arr i32) (param $comparator i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array<~lib/string/String|null>#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $std/array/isSorted<~lib/string/String|null> + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1080 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $a i32) (param $b i32) (result i32) + (local $alen i32) + (local $blen i32) + (local $4 i32) + (local $5 i32) + (local $res i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.get $b + i32.eq + if (result i32) + i32.const 1 + else + local.get $a + i32.const 0 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $b + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $a + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $alen + local.get $b + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $blen + local.get $alen + local.get $blen + i32.or + i32.eqz + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $alen + i32.eqz + if + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $blen + i32.eqz + if + i32.const 1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $a + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 0 + local.get $b + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + local.get $alen + local.tee $4 + local.get $blen + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $res + local.get $res + if (result i32) + local.get $res + else + local.get $alen + local.get $blen + i32.sub + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $std/array/assertSorted<~lib/string/String|null>@varargs (param $arr i32) (param $comparator i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 10672 + br $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $std/array/assertSorted<~lib/string/String|null> + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String.__ne (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/array/isArraysEqual<~lib/string/String|null> (param $a i32) (param $b i32) (param $len i32) (result i32) + (local $i i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $len + i32.eqz + if + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String|null>#get:length + local.set $len + local.get $len + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String|null>#get:length + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $a + local.get $b + i32.eq + if + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + i32.const 0 + drop + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $i + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $i + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array<~lib/string/String>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array<~lib/string/String>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array<~lib/string/String>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/string/String#charAt (param $this i32) (param $pos i32) (result i32) + (local $out i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $pos + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ge_u + if + i32.const 10544 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $pos + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $out + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 10544 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/array/createRandomString (param $len i32) (result i32) + (local $result i32) + (local $i i32) + (local $x f64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 10544 + local.tee $result + i32.store + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $std/array/charset + block $~lib/math/NativeMath.floor|inlined.0 (result f64) + call $~lib/math/NativeMath.random + global.get $std/array/charset + call $~lib/string/String#get:length + f64.convert_i32_s + f64.mul + local.set $x + local.get $x + f64.floor + br $~lib/math/NativeMath.floor|inlined.0 + end + i32.trunc_sat_f64_s + call $~lib/string/String#charAt + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String.__concat + local.tee $result + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $result + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<~lib/string/String>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/createRandomStringArray (param $size i32) (result i32) + (local $arr i32) + (local $i i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $arr + i32.store + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $arr + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $i + call $~lib/math/NativeMath.random + f64.const 32 + f64.mul + i32.trunc_sat_f64_s + call $std/array/createRandomString + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $arr + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/util/sort/insertionSort<~lib/string/String> (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $b + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $max + i32.store offset=12 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $min + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $max + i32.store offset=12 + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $max + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + local.get $min + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + i32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/extendRunRight<~lib/string/String> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $tmp + i32.store offset=8 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/util/sort/mergeRuns<~lib/string/String> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $b + i32.store offset=4 + local.get $a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + local.get $b + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=12 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT<~lib/string/String> (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store + global.get $~lib/memory/__stack_pointer + local.get $a + local.get $b + local.get $c + select + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=8 + local.tee $b + i32.store offset=4 + local.get $a + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load + local.tee $a|7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $ptr + i32.load offset=4 + local.tee $b|8 + i32.store offset=20 + local.get $a|7 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + local.get $b|8 + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=12 + local.get $34 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.8 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.8 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight<~lib/string/String> + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/string/String> + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/extendRunRight<~lib/string/String> + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/insertionSort<~lib/string/String> + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns<~lib/string/String> + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store offset=8 + local.get $34 + call $~lib/util/sort/mergeRuns<~lib/string/String> + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array<~lib/string/String>#get:length_ + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT<~lib/string/String> + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array<~lib/string/String>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<~lib/string/String>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 5392 + i32.const 80 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/array/isSorted<~lib/string/String> (param $data i32) (param $comparator i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1 + local.set $i + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $i + i32.const 1 + i32.sub + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $data + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $i + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $std/array/assertSorted<~lib/string/String> (param $arr i32) (param $comparator i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array<~lib/string/String>#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $std/array/isSorted<~lib/string/String> + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1080 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (param $a i32) (param $b i32) (result i32) + (local $alen i32) + (local $blen i32) + (local $4 i32) + (local $5 i32) + (local $res i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $a + local.get $b + i32.eq + if (result i32) + i32.const 1 + else + local.get $a + i32.const 0 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $b + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $a + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $alen + local.get $b + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $blen + local.get $alen + local.get $blen + i32.or + i32.eqz + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $alen + i32.eqz + if + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $blen + i32.eqz + if + i32.const 1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $a + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 0 + local.get $b + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + local.get $alen + local.tee $4 + local.get $blen + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $res + local.get $res + if (result i32) + local.get $res + else + local.get $alen + local.get $blen + i32.sub + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $std/array/assertSorted<~lib/string/String>@varargs (param $arr i32) (param $comparator i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 10704 + br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $std/array/assertSorted<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#substring (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $finalStart i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $finalEnd i32) + (local $14 i32) + (local $15 i32) + (local $fromPos i32) + (local $17 i32) + (local $18 i32) + (local $toPos i32) + (local $size i32) + (local $out i32) + (local $22 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $22 + global.get $~lib/memory/__stack_pointer + local.get $22 + i32.store + local.get $22 + call $~lib/string/String#get:length + local.set $len + local.get $start + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $finalStart + local.get $end + local.tee $9 + i32.const 0 + local.tee $10 + local.get $9 + local.get $10 + i32.gt_s + select + local.tee $11 + local.get $len + local.tee $12 + local.get $11 + local.get $12 + i32.lt_s + select + local.set $finalEnd + local.get $finalStart + local.tee $14 + local.get $finalEnd + local.tee $15 + local.get $14 + local.get $15 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $fromPos + local.get $finalStart + local.tee $17 + local.get $finalEnd + local.tee $18 + local.get $17 + local.get $18 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $toPos + local.get $toPos + local.get $fromPos + i32.sub + local.set $size + local.get $size + i32.eqz + if + i32.const 10544 + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + end + local.get $fromPos + i32.eqz + if (result i32) + local.get $toPos + local.get $len + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 + end + if + local.get $this + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + end + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $fromPos + i32.add + local.get $size + memory.copy + local.get $out + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + ) + (func $~lib/util/string/joinBooleanArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $sepLen i32) + (local $valueLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value i32) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + i32.const 10768 + i32.const 10800 + local.get $dataStart + i32.load8_u + select + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 5 + local.set $valueLen + local.get $valueLen + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + local.get $valueLen + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.add + i32.load8_u + local.set $value + i32.const 4 + local.get $value + i32.eqz + i32.add + local.set $valueLen + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 10768 + i32.const 10800 + local.get $value + select + local.get $valueLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $valueLen + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $dataStart + local.get $lastIndex + i32.add + i32.load8_u + local.set $value + i32.const 4 + local.get $value + i32.eqz + i32.add + local.set $valueLen + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 10768 + i32.const 10800 + local.get $value + select + local.get $valueLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $valueLen + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinBooleanArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i32.load + local.set $value + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/itoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 11 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 11 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i32.load + local.set $value + i32.const 0 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/utoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 10 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 10 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/util/string/joinFloatArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value f64) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + f64.load + call $~lib/util/number/dtoa + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $separator + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 28 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 28 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + call $~lib/util/number/dtoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + call $~lib/util/number/dtoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $result + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinFloatArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/util/string/joinStringArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $4 i32) + (local $estLen i32) + (local $value i32) + (local $i i32) + (local $offset i32) + (local $sepLen i32) + (local $result i32) + (local $i|11 i32) + (local $valueLen i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + end + local.get $lastIndex + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + i32.load + local.tee $4 + i32.store + local.get $4 + if (result i32) + local.get $4 + else + i32.const 10544 + end + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + end + i32.const 0 + local.set $estLen + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne + if + local.get $estLen + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + i32.add + local.set $estLen + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $offset + local.get $separator + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + local.set $sepLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + local.get $sepLen + local.get $lastIndex + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=12 + i32.const 0 + local.set $i|11 + loop $for-loop|1 + local.get $i|11 + local.get $lastIndex + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i|11 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne + if + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + local.set $valueLen + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + local.get $valueLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $valueLen + i32.add + local.set $offset + end + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i|11 + i32.const 1 + i32.add + local.set $i|11 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + memory.copy + end + local.get $result + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + ) + (func $~lib/array/Array<~lib/string/String|null>#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String|null>#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String|null>#get:length_ + local.set $len + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinStringArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/util/string/joinReferenceArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $result i32) + (local $sepLen i32) + (local $i i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $lastIndex + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if (result i32) + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $std/array/Ref#toString + else + i32.const 10544 + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 10544 + local.tee $result + i32.store offset=8 + local.get $separator + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $std/array/Ref#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $sepLen + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $separator + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $std/array/Ref#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinReferenceArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/util/string/joinReferenceArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $result i32) + (local $sepLen i32) + (local $i i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $lastIndex + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if (result i32) + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $std/array/Ref#toString + else + i32.const 10544 + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 10544 + local.tee $result + i32.store offset=8 + local.get $separator + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $std/array/Ref#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $sepLen + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $separator + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $std/array/Ref#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinReferenceArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10832 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i32.load8_s + local.set $value + i32.const 1 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/itoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 11 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 11 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10832 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i32.load16_u + local.set $value + i32.const 0 + drop + i32.const 2 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/utoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 10 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 10 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10832 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i32.load16_s + local.set $value + i32.const 1 + drop + i32.const 2 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/itoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 11 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 11 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10832 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i64) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i64) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i64.load + local.set $value + i32.const 0 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/utoa64 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 20 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 20 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10832 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i64) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i64) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i64.load + local.set $value + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $value + i32.wrap_i64 + i64.extend_i32_s + i32.const 10 + call $~lib/util/number/itoa64 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 21 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 21 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10832 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/string/String|null>#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10832 + call $~lib/array/Array<~lib/string/String|null>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $result i32) + (local $sepLen i32) + (local $i i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $lastIndex + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if (result i32) + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#toString + else + i32.const 10544 + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 10544 + local.tee $result + i32.store offset=8 + local.get $separator + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $~lib/array/Array#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $sepLen + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $separator + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $~lib/array/Array#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array<~lib/array/Array>#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/array/Array>#get:length_ + local.set $len + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinReferenceArray<~lib/array/Array> + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array<~lib/array/Array>#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10832 + call $~lib/array/Array<~lib/array/Array>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/array/Array>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<~lib/array/Array>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i32.load8_u + local.set $value + i32.const 0 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/utoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 10 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 10 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/array/Array#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $len + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10832 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $result i32) + (local $sepLen i32) + (local $i i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $lastIndex + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if (result i32) + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#toString + else + i32.const 10544 + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 10544 + local.tee $result + i32.store offset=8 + local.get $separator + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $~lib/array/Array#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $sepLen + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $separator + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $~lib/array/Array#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array<~lib/array/Array>#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/array/Array>#get:length_ + local.set $len + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinReferenceArray<~lib/array/Array> + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array<~lib/array/Array>#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10832 + call $~lib/array/Array<~lib/array/Array>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/array/Array>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<~lib/array/Array>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10832 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $result i32) + (local $sepLen i32) + (local $i i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $lastIndex + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if (result i32) + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#toString + else + i32.const 10544 + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 10544 + local.tee $result + i32.store offset=8 + local.get $separator + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $~lib/array/Array#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $sepLen + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $separator + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $~lib/array/Array#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array<~lib/array/Array>#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/array/Array>#get:length_ + local.set $len + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinReferenceArray<~lib/array/Array> + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array<~lib/array/Array>#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10832 + call $~lib/array/Array<~lib/array/Array>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $result i32) + (local $sepLen i32) + (local $i i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 10544 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $lastIndex + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if (result i32) + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array<~lib/array/Array>#toString + else + i32.const 10544 + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 10544 + local.tee $result + i32.store offset=8 + local.get $separator + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $sepLen + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $separator + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store + local.get $value + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + call $~lib/string/String.__concat + local.tee $result + i32.store offset=8 + end + local.get $result + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (param $this i32) (param $separator i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:dataStart + local.set $ptr + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:length_ + local.set $len + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $ptr + local.get $len + local.get $separator + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 10832 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/array/Array>#flat (param $this i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $size i32) + (local $i i32) + (local $child i32) + (local $byteLength i32) + (local $outBuffer i32) + (local $outArray i32) + (local $resultOffset i32) + (local $i|10 i32) + (local $child|11 i32) + (local $childDataLength i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1 + i32.eqz + drop + local.get $this + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store + local.get $13 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.set $ptr + local.get $this + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store + local.get $13 + call $~lib/array/Array<~lib/array/Array>#get:length_ + local.set $len + i32.const 0 + local.set $size + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $child + local.get $size + local.get $child + i32.const 0 + i32.eq + if (result i32) + i32.const 0 + else + local.get $child + i32.load offset=12 + end + i32.add + local.set $size + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $size + i32.const 2 + i32.shl + local.set $byteLength + global.get $~lib/memory/__stack_pointer + local.get $byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $outBuffer + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $outArray + i32.store offset=8 + local.get $outArray + local.get $size + i32.store offset=12 + local.get $outArray + local.get $byteLength + i32.store offset=8 + local.get $outArray + local.get $outBuffer + i32.store offset=4 + local.get $outArray + local.get $outBuffer + i32.store + local.get $outArray + local.get $outBuffer + i32.const 0 + call $~lib/rt/itcms/__link + i32.const 0 + local.set $resultOffset + i32.const 0 + local.set $i|10 + loop $for-loop|1 + local.get $i|10 + local.get $len + i32.lt_s + if + block $for-continue|1 + local.get $ptr + local.get $i|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $child|11 + local.get $child|11 + i32.eqz + if + br $for-continue|1 + end + local.get $child|11 + i32.load offset=12 + i32.const 2 + i32.shl + local.set $childDataLength + local.get $outBuffer + local.get $resultOffset + i32.add + local.get $child|11 + i32.load offset=4 + local.get $childDataLength + memory.copy + local.get $resultOffset + local.get $childDataLength + i32.add + local.set $resultOffset + end + local.get $i|10 + i32.const 1 + i32.add + local.set $i|10 + br $for-loop|1 + end + end + i32.const 0 + drop + local.get $outArray + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat (param $this i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $size i32) + (local $i i32) + (local $child i32) + (local $byteLength i32) + (local $outBuffer i32) + (local $outArray i32) + (local $resultOffset i32) + (local $i|10 i32) + (local $child|11 i32) + (local $childDataLength i32) + (local $i|13 i32) + (local $ref i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1 + i32.eqz + drop + local.get $this + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store + local.get $15 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:dataStart + local.set $ptr + local.get $this + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store + local.get $15 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:length_ + local.set $len + i32.const 0 + local.set $size + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $child + local.get $size + local.get $child + i32.const 0 + i32.eq + if (result i32) + i32.const 0 + else + local.get $child + i32.load offset=12 + end + i32.add + local.set $size + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $size + i32.const 2 + i32.shl + local.set $byteLength + global.get $~lib/memory/__stack_pointer + local.get $byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $outBuffer + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 34 + call $~lib/rt/itcms/__new + local.tee $outArray + i32.store offset=8 + local.get $outArray + local.get $size + i32.store offset=12 + local.get $outArray + local.get $byteLength + i32.store offset=8 + local.get $outArray + local.get $outBuffer + i32.store offset=4 + local.get $outArray + local.get $outBuffer + i32.store + local.get $outArray + local.get $outBuffer + i32.const 0 + call $~lib/rt/itcms/__link + i32.const 0 + local.set $resultOffset + i32.const 0 + local.set $i|10 + loop $for-loop|1 + local.get $i|10 + local.get $len + i32.lt_s + if + block $for-continue|1 + local.get $ptr + local.get $i|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $child|11 + local.get $child|11 + i32.eqz + if + br $for-continue|1 + end + local.get $child|11 + i32.load offset=12 + i32.const 2 + i32.shl + local.set $childDataLength + local.get $outBuffer + local.get $resultOffset + i32.add + local.get $child|11 + i32.load offset=4 + local.get $childDataLength + memory.copy + local.get $resultOffset + local.get $childDataLength + i32.add + local.set $resultOffset + end + local.get $i|10 + i32.const 1 + i32.add + local.set $i|10 + br $for-loop|1 + end + end + i32.const 1 + drop + i32.const 0 + local.set $i|13 + loop $for-loop|2 + local.get $i|13 + local.get $size + i32.lt_s + if + local.get $outBuffer + local.get $i|13 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $ref + local.get $outBuffer + local.get $ref + i32.const 1 + call $~lib/rt/itcms/__link + local.get $i|13 + i32.const 1 + i32.add + local.set $i|13 + br $for-loop|2 + end + end + local.get $outArray + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + ) + (func $start:std/array~anonymous|54 (param $nestedArray i32) (param $$1 i32) (param $$2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $nestedArray + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1267 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $nestedArray + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 3 + call $~lib/array/Array#push + drop + local.get $nestedArray + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1269 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $nestedArray + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array<~lib/array/Array>#map<~lib/array/Array> (param $this i32) (param $fn i32) (result i32) + (local $len i32) + (local $out i32) + (local $outStart i32) + (local $i i32) + (local $6 i32) + (local $7 i32) + (local $result i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array<~lib/array/Array>#get:length_ + local.set $len + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $out + i32.store offset=4 + local.get $out + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.set $outStart + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + local.tee $6 + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array<~lib/array/Array>#get:length_ + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + local.get $i + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + local.tee $result + i32.store offset=16 + local.get $outStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $result + i32.store + i32.const 1 + drop + local.get $out + local.get $result + i32.const 1 + call $~lib/rt/itcms/__link + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $start:std/array + (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) + (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) + (local $245 i32) + (local $246 i32) + (local $247 i32) + (local $248 i32) + (local $249 i32) + (local $250 i32) + (local $251 i32) + (local $252 i32) + (local $253 i32) + (local $254 i32) + (local $255 i32) + (local $256 i32) + (local $257 i32) + (local $258 i32) + (local $259 i32) + (local $260 i32) + (local $261 i32) + (local $262 i32) + (local $263 i32) + (local $264 i32) + (local $265 i32) + (local $266 i32) + (local $267 i32) + (local $268 i32) + (local $269 i32) + (local $270 i32) + (local $271 i32) + (local $272 i32) + (local $273 i32) + (local $274 i32) + (local $275 i32) + (local $276 i32) + (local $277 i32) + (local $278 i32) + (local $279 i32) + (local $280 i32) + (local $281 i32) + (local $282 i32) + (local $283 i32) + (local $284 i32) + (local $285 i32) + (local $286 i32) + (local $287 i32) + (local $288 i32) + (local $289 i32) + (local $290 i32) + (local $291 i32) + (local $292 i32) + (local $293 i32) + (local $294 i32) + (local $295 i32) + (local $296 i32) + global.get $~lib/memory/__stack_pointer + i32.const 444 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 444 + memory.fill + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + global.set $std/array/arr + i32.const 0 + call $~lib/array/Array.isArray<~lib/array/Array|null> + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array.isArray + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#constructor + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $~lib/array/Array.isArray + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 50 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 640 + call $~lib/array/Array.isArray<~lib/string/String> + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 51 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array.isArray<~lib/array/Array> + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 53 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 672 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=4 + local.get $1 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/array/Array#fill + drop + local.get $1 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 704 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#fill@varargs + drop + local.get $1 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 736 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/array/Array#fill + drop + local.get $1 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 768 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const -2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#fill@varargs + drop + local.get $1 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 800 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/array/Array#fill + drop + local.get $1 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 832 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const -1 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#fill@varargs + drop + local.get $1 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 864 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 896 + call $~lib/rt/__newArray + local.tee $9 + i32.store offset=12 + local.get $9 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/array/Array#fill + drop + local.get $9 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 944 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#fill@varargs + drop + local.get $9 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 992 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 86 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/array/Array#fill + drop + local.get $9 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 1040 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const -2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#fill@varargs + drop + local.get $9 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 1088 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/array/Array#fill + drop + local.get $9 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 1136 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const -1 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#fill@varargs + drop + local.get $9 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 1184 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 1232 + call $~lib/rt/__newArray + local.tee $17 + i32.store offset=16 + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + f32.const 1 + i32.const 1 + i32.const 3 + call $~lib/array/Array#fill + drop + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 1280 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + f32.const 0 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#fill@varargs + drop + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 1328 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + f32.const 1 + i32.const 0 + i32.const -3 + call $~lib/array/Array#fill + drop + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 1376 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + f32.const 2 + i32.const -2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#fill@varargs + drop + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 1424 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + f32.const 0 + i32.const 1 + i32.const 0 + call $~lib/array/Array#fill + drop + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 1472 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + f32.const -1 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#fill@varargs + drop + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 1520 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + f32.const -0 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#fill@varargs + drop + local.get $17 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 1568 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 130 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 42 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 134 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + local.set $25 + local.get $25 + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 140 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 141 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 142 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 146 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 148 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 44 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 153 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 154 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 45 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 159 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 160 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 161 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 162 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 163 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $26 + i32.store offset=20 + local.get $26 + i32.const 0 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $26 + i32.const 1 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $26 + local.tee $27 + i32.store offset=24 + local.get $27 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#set:length + local.get $27 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 171 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 1664 + call $~lib/rt/__newArray + local.tee $29 + i32.store offset=28 + local.get $29 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 179 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $29 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#at + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 180 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $29 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const -1 + call $~lib/array/Array#at + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 181 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $29 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const -4 + call $~lib/array/Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 182 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.tee $30 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $30 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#concat + local.tee $31 + i32.store offset=36 + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 191 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 192 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 1712 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#concat + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 196 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 199 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $30 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 46 + call $~lib/array/Array#push + drop + local.get $30 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 47 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $30 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#concat + local.tee $31 + i32.store offset=36 + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 207 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $30 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 208 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 209 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 210 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 211 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 212 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#__get + i32.const 46 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 213 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 4 + call $~lib/array/Array#__get + i32.const 47 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 214 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 217 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 1744 + call $~lib/rt/__newArray + local.tee $34 + i32.store offset=40 + local.get $34 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $34 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#concat + local.tee $31 + i32.store offset=36 + local.get $31 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 227 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $34 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 228 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 1776 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=44 + local.get $36 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 0 + i32.const 3 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#copyWithin@varargs + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 1824 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 1872 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=44 + local.get $36 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 1 + i32.const 3 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#copyWithin@varargs + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 1920 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 1968 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=44 + local.get $36 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#copyWithin@varargs + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2016 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 239 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2064 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=44 + local.get $36 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 2 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#copyWithin@varargs + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2112 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 241 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2160 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=44 + local.get $36 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2208 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 243 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2256 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=44 + local.get $36 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 1 + i32.const 3 + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2304 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 245 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2352 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=44 + local.get $36 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2400 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 247 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2448 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=44 + local.get $36 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 0 + i32.const -2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#copyWithin@varargs + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2496 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 249 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2544 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=44 + local.get $36 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/array/Array#copyWithin + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2592 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 251 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2640 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=44 + local.get $36 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/array/Array#copyWithin + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2688 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 253 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2736 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=44 + local.get $36 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/array/Array#copyWithin + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2784 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 255 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2832 + call $~lib/rt/__newArray + local.tee $36 + i32.store offset=44 + local.get $36 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const -4 + i32.const -3 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#copyWithin@varargs + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2880 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 257 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 42 + call $~lib/array/Array#unshift + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 265 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 266 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 267 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 268 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 269 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 270 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 41 + call $~lib/array/Array#unshift + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 274 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 275 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 41 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 276 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 277 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 278 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 279 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 4 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 280 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#shift + global.set $std/array/i + global.get $std/array/i + i32.const 41 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 289 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 290 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 291 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 292 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 293 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 294 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 295 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + global.set $std/array/i + global.get $std/array/i + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 299 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 300 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 301 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 302 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 303 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 304 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2928 + call $~lib/rt/__newArray + local.tee $62 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $62 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#slice@varargs + local.tee $60 + i32.store offset=56 + local.get $60 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 2976 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 314 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $62 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 4 + call $~lib/array/Array#slice + local.tee $60 + i32.store offset=56 + local.get $60 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 3008 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 317 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $62 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + i32.const 5 + call $~lib/array/Array#slice + local.tee $60 + i32.store offset=56 + local.get $60 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 3040 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 320 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $62 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#slice@varargs + local.tee $60 + i32.store offset=56 + local.get $60 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $62 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $62 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const -2 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#slice@varargs + local.tee $60 + i32.store offset=56 + local.get $60 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 3088 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 326 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $62 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const -1 + call $~lib/array/Array#slice + local.tee $60 + i32.store offset=56 + local.get $60 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 3120 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 329 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $62 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const -3 + i32.const -1 + call $~lib/array/Array#slice + local.tee $60 + i32.store offset=56 + local.get $60 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 3152 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 332 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $62 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const -1 + i32.const -3 + call $~lib/array/Array#slice + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 334 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $62 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 10 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#slice@varargs + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 335 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#reverse + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 343 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 347 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 44 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 0 + i32.const 7 + i32.const 3184 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#reverse + local.tee $70 + i32.store offset=60 + i32.const 0 + local.set $71 + local.get $70 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + local.set $72 + loop $for-loop|0 + local.get $71 + local.get $72 + i32.lt_s + if + local.get $70 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $71 + call $~lib/array/Array#__get + local.get $70 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + local.get $71 + i32.sub + i32.const 1 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 354 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $71 + i32.const 1 + i32.add + local.set $71 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 0 + i32.const 7 + i32.const 3216 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#reverse + local.tee $74 + i32.store offset=64 + i32.const 0 + local.set $75 + local.get $74 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + local.set $76 + loop $for-loop|1 + local.get $75 + local.get $76 + i32.lt_s + if + local.get $74 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $75 + call $~lib/array/Array#__get + local.get $74 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + local.get $75 + i32.sub + i32.const 1 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 359 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $75 + i32.const 1 + i32.add + local.set $75 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 17 + i32.const 0 + i32.const 7 + i32.const 3248 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#reverse + local.tee $78 + i32.store offset=68 + i32.const 0 + local.set $79 + local.get $78 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + local.set $80 + loop $for-loop|2 + local.get $79 + local.get $80 + i32.lt_s + if + local.get $78 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $79 + call $~lib/array/Array#__get + local.get $78 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + local.get $79 + i32.sub + i32.const 1 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 364 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $79 + i32.const 1 + i32.add + local.set $79 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 1 + i32.const 11 + i32.const 3296 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#reverse + local.tee $82 + i32.store offset=72 + i32.const 0 + local.set $83 + local.get $82 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + local.set $84 + loop $for-loop|3 + local.get $83 + local.get $84 + i32.lt_s + if + local.get $82 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $83 + call $~lib/array/Array#__get + local.get $82 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + local.get $83 + i32.sub + i32.const 1 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 369 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $83 + i32.const 1 + i32.add + local.set $83 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 1 + i32.const 11 + i32.const 3344 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#reverse + local.tee $86 + i32.store offset=76 + i32.const 0 + local.set $87 + local.get $86 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + local.set $88 + loop $for-loop|4 + local.get $87 + local.get $88 + i32.lt_s + if + local.get $86 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $87 + call $~lib/array/Array#__get + local.get $86 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + local.get $87 + i32.sub + i32.const 1 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 374 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $87 + i32.const 1 + i32.add + local.set $87 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 9 + i32.const 1 + i32.const 11 + i32.const 3392 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#reverse + local.tee $90 + i32.store offset=80 + i32.const 0 + local.set $91 + local.get $90 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + local.set $92 + loop $for-loop|5 + local.get $91 + local.get $92 + i32.lt_s + if + local.get $90 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $91 + call $~lib/array/Array#__get + local.get $90 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + local.get $91 + i32.sub + i32.const 1 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 379 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $91 + i32.const 1 + i32.add + local.set $91 + br $for-loop|5 + end + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 44 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 387 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 42 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 45 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 393 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const 100 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 396 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const -100 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 399 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const -2 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 402 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const -4 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 405 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 408 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const 1 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 411 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const 2 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 9 + i32.const 3440 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + f32.const nan:0x400000 + i32.const 0 + call $~lib/array/Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 3 + i32.const 12 + i32.const 3472 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/array/Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 3504 + call $~lib/rt/__newArray + local.tee $96 + i32.store offset=84 + local.get $96 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 424 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $96 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 7 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 425 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $96 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 3 + call $~lib/array/Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 426 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $96 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 2 + call $~lib/array/Array#lastIndexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 427 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $96 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const -2 + call $~lib/array/Array#lastIndexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 428 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $96 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const -1 + call $~lib/array/Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 429 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 44 + i32.const 0 + call $~lib/array/Array#includes + local.set $97 + local.get $97 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 437 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 42 + i32.const 0 + call $~lib/array/Array#includes + local.set $97 + local.get $97 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 45 + i32.const 0 + call $~lib/array/Array#includes + local.set $97 + local.get $97 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 443 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const 100 + call $~lib/array/Array#includes + local.set $97 + local.get $97 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 446 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const -100 + call $~lib/array/Array#includes + local.set $97 + local.get $97 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 449 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const -2 + call $~lib/array/Array#includes + local.set $97 + local.get $97 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 452 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const -4 + call $~lib/array/Array#includes + local.set $97 + local.get $97 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 455 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const 0 + call $~lib/array/Array#includes + local.set $97 + local.get $97 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 458 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const 1 + call $~lib/array/Array#includes + local.set $97 + local.get $97 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 43 + i32.const 2 + call $~lib/array/Array#includes + local.set $97 + local.get $97 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 464 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 9 + i32.const 3552 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + f32.const nan:0x400000 + i32.const 0 + call $~lib/array/Array#includes + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 466 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 3 + i32.const 12 + i32.const 3584 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/array/Array#includes + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 467 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + i32.const 1 + call $~lib/array/Array#splice + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 471 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/internalCapacity + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 472 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 473 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 474 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3616 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#splice@varargs + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3664 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 481 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 3712 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 482 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3744 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 0 + i32.const 0 + call $~lib/array/Array#splice + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 3792 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 485 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3824 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3872 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 2 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#splice@varargs + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 3920 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 489 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 3952 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 490 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3984 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 2 + i32.const 2 + call $~lib/array/Array#splice + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 4032 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 493 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 4064 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 494 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4096 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 0 + i32.const 1 + call $~lib/array/Array#splice + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 4144 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 497 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 4176 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 498 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4224 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#splice@varargs + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 4272 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 501 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 4304 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 502 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4352 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const -2 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#splice@varargs + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 4400 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 505 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 4432 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 506 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4464 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const -2 + i32.const 1 + call $~lib/array/Array#splice + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 4512 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 4544 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 510 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4592 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const -7 + i32.const 1 + call $~lib/array/Array#splice + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 4640 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 513 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 4672 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 514 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4720 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const -2 + i32.const -1 + call $~lib/array/Array#splice + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 4768 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 517 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4800 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 518 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4848 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 1 + i32.const -2 + call $~lib/array/Array#splice + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 4896 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 521 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4928 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 522 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4976 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 4 + i32.const 0 + call $~lib/array/Array#splice + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 5024 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 525 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5056 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 526 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5104 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 7 + i32.const 0 + call $~lib/array/Array#splice + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 5152 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 529 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5184 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 530 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5232 + call $~lib/rt/__newArray + local.tee $101 + i32.store offset=88 + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + i32.const 7 + i32.const 5 + call $~lib/array/Array#splice + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 5280 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 533 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $101 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5312 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 534 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 10 + i32.const 5360 + call $~lib/rt/__newArray + local.tee $144 + i32.store offset=92 + global.get $~lib/memory/__stack_pointer + local.get $144 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + i32.const 2 + call $~lib/array/Array#splice + local.tee $145 + i32.store offset=96 + local.get $145 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 538 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $144 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 539 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $146 + i32.store offset=100 + local.get $146 + i32.const 0 + i32.const 0 + i32.const 1 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $146 + i32.const 1 + i32.const 0 + i32.const 2 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $146 + i32.const 2 + i32.const 0 + i32.const 3 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $146 + i32.const 3 + i32.const 0 + i32.const 4 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $146 + i32.const 4 + i32.const 0 + i32.const 5 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $146 + local.tee $144 + i32.store offset=92 + global.get $~lib/memory/__stack_pointer + local.get $144 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 2 + call $~lib/array/Array#splice + local.tee $145 + i32.store offset=96 + local.get $145 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 544 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $145 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/Ref#get:v + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 545 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $145 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/Ref#get:v + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 546 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $144 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 548 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $144 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/Ref#get:v + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 549 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $144 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/Ref#get:v + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 550 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $144 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 2 + call $~lib/array/Array#__get + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/Ref#get:v + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 551 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__newArray + local.tee $147 + i32.store offset=104 + local.get $147 + i32.const 0 + i32.const 0 + i32.const 1 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $147 + i32.const 1 + i32.const 0 + call $~lib/array/Array#__set + local.get $147 + i32.const 2 + i32.const 0 + i32.const 2 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $147 + local.tee $148 + i32.store offset=108 + global.get $~lib/memory/__stack_pointer + local.get $148 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 1 + call $~lib/array/Array#splice + local.tee $149 + i32.store offset=112 + local.get $149 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 556 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $149 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + local.tee $150 + i32.store offset=116 + local.get $150 + if (result i32) + local.get $150 + else + i32.const 5520 + i32.const 528 + i32.const 557 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/Ref#get:v + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $148 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $148 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $148 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + local.tee $151 + i32.store offset=120 + local.get $151 + if (result i32) + local.get $151 + else + i32.const 5520 + i32.const 528 + i32.const 561 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/Ref#get:v + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + i32.const 0 + call $~lib/array/Array#__set + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + i32.const 1 + call $~lib/array/Array#__set + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 2 + call $~lib/array/Array#__set + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + i32.const 3 + call $~lib/array/Array#__set + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5648 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 574 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5680 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5712 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5744 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 588 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 589 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5776 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 591 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5808 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 5840 + call $~lib/rt/__newArray + local.tee $153 + i32.store offset=124 + local.get $153 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5888 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#findLastIndex + global.set $std/array/i + global.get $std/array/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $153 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5920 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#findLastIndex + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $153 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5952 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#findLastIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 624 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $153 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5984 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#findLastIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6016 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#every + local.set $154 + local.get $154 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 640 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6048 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#every + local.set $154 + local.get $154 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 643 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6080 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#every + local.set $154 + local.get $154 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 651 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 652 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6112 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#every + local.set $154 + local.get $154 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 654 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6144 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#every + local.set $154 + local.get $154 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 667 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 668 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6176 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#some + local.set $155 + local.get $155 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 678 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6208 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#some + local.set $155 + local.get $155 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 681 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6240 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#some + local.set $155 + local.get $155 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 689 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 690 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6272 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#some + local.set $155 + local.get $155 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 692 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6304 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#some + local.set $155 + local.get $155 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 705 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 706 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#push + drop + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6336 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 717 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6368 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 726 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 727 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6400 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 406 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 730 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6432 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 744 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 745 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 6464 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#forEach + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 770 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $156 + loop $for-loop|6 + local.get $156 + i32.const 100 + i32.lt_s + if + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + local.get $156 + i32.const 1 + i32.add + local.set $156 + br $for-loop|6 + end + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8272 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#map<~lib/string/String> + local.tee $157 + i32.store offset=128 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8304 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#map + local.tee $158 + i32.store offset=132 + local.get $158 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 786 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $158 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + f32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 787 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8336 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#map + drop + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 796 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 797 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8368 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#map + drop + global.get $std/array/i + i32.const 406 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 804 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8400 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#map + drop + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 819 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 820 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8432 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#filter + local.tee $159 + i32.store offset=136 + local.get $159 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 830 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8464 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#filter + drop + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 839 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 840 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8496 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#filter + drop + global.get $std/array/i + i32.const 406 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 847 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8528 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#filter + drop + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 862 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 863 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8560 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 873 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8592 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 4 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 877 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8624 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#reduce + local.set $160 + local.get $160 + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 880 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8656 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#reduce + local.set $160 + local.get $160 + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 883 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8688 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 892 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8720 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 894 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8752 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 907 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 908 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8784 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 918 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8816 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 4 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 922 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8848 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#reduceRight + local.set $161 + local.get $161 + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 925 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8880 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#reduceRight + local.set $161 + local.get $161 + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 928 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8912 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 936 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 937 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8944 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 939 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8976 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 952 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 953 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#push + drop + call $~lib/bindings/dom/Math.random + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + i32.const 23 + i32.const 0 + call $~lib/rt/__newArray + local.tee $162 + i32.store offset=140 + local.get $162 + i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $163 + i32.store offset=144 + local.get $163 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 100 + call $std/array/Dim#set:height + local.get $163 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 80 + call $std/array/Dim#set:width + local.get $163 + call $~lib/array/Array#__set + local.get $162 + i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $164 + i32.store offset=148 + local.get $164 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 90 + call $std/array/Dim#set:height + local.get $164 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 90 + call $std/array/Dim#set:width + local.get $164 + call $~lib/array/Array#__set + local.get $162 + i32.const 2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $165 + i32.store offset=152 + local.get $165 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 70 + call $std/array/Dim#set:height + local.get $165 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 95 + call $std/array/Dim#set:width + local.get $165 + call $~lib/array/Array#__set + local.get $162 + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $166 + i32.store offset=156 + local.get $166 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 100 + call $std/array/Dim#set:height + local.get $166 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 100 + call $std/array/Dim#set:width + local.get $166 + call $~lib/array/Array#__set + local.get $162 + i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $167 + i32.store offset=160 + local.get $167 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 80 + call $std/array/Dim#set:height + local.get $167 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 110 + call $std/array/Dim#set:width + local.get $167 + call $~lib/array/Array#__set + local.get $162 + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $168 + i32.store offset=164 + local.get $168 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 110 + call $std/array/Dim#set:height + local.get $168 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 115 + call $std/array/Dim#set:width + local.get $168 + call $~lib/array/Array#__set + local.get $162 + i32.const 6 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $169 + i32.store offset=168 + local.get $169 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 100 + call $std/array/Dim#set:height + local.get $169 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 120 + call $std/array/Dim#set:width + local.get $169 + call $~lib/array/Array#__set + local.get $162 + i32.const 7 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $170 + i32.store offset=172 + local.get $170 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 70 + call $std/array/Dim#set:height + local.get $170 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 125 + call $std/array/Dim#set:width + local.get $170 + call $~lib/array/Array#__set + local.get $162 + i32.const 8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $171 + i32.store offset=176 + local.get $171 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 70 + call $std/array/Dim#set:height + local.get $171 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 130 + call $std/array/Dim#set:width + local.get $171 + call $~lib/array/Array#__set + local.get $162 + i32.const 9 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $172 + i32.store offset=180 + local.get $172 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 100 + call $std/array/Dim#set:height + local.get $172 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 135 + call $std/array/Dim#set:width + local.get $172 + call $~lib/array/Array#__set + local.get $162 + i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $173 + i32.store offset=184 + local.get $173 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 75 + call $std/array/Dim#set:height + local.get $173 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 140 + call $std/array/Dim#set:width + local.get $173 + call $~lib/array/Array#__set + local.get $162 + i32.const 11 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $174 + i32.store offset=188 + local.get $174 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 70 + call $std/array/Dim#set:height + local.get $174 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 140 + call $std/array/Dim#set:width + local.get $174 + call $~lib/array/Array#__set + local.get $162 + global.set $std/array/inputStabArr + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + i32.const 23 + i32.const 0 + call $~lib/rt/__newArray + local.tee $175 + i32.store offset=192 + local.get $175 + i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $176 + i32.store offset=196 + local.get $176 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 70 + call $std/array/Dim#set:height + local.get $176 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 95 + call $std/array/Dim#set:width + local.get $176 + call $~lib/array/Array#__set + local.get $175 + i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $177 + i32.store offset=200 + local.get $177 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 70 + call $std/array/Dim#set:height + local.get $177 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 125 + call $std/array/Dim#set:width + local.get $177 + call $~lib/array/Array#__set + local.get $175 + i32.const 2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $178 + i32.store offset=204 + local.get $178 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 70 + call $std/array/Dim#set:height + local.get $178 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 130 + call $std/array/Dim#set:width + local.get $178 + call $~lib/array/Array#__set + local.get $175 + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $179 + i32.store offset=208 + local.get $179 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 70 + call $std/array/Dim#set:height + local.get $179 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 140 + call $std/array/Dim#set:width + local.get $179 + call $~lib/array/Array#__set + local.get $175 + i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $180 + i32.store offset=212 + local.get $180 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 75 + call $std/array/Dim#set:height + local.get $180 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 140 + call $std/array/Dim#set:width + local.get $180 + call $~lib/array/Array#__set + local.get $175 + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $181 + i32.store offset=216 + local.get $181 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 80 + call $std/array/Dim#set:height + local.get $181 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 110 + call $std/array/Dim#set:width + local.get $181 + call $~lib/array/Array#__set + local.get $175 + i32.const 6 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $182 + i32.store offset=220 + local.get $182 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 90 + call $std/array/Dim#set:height + local.get $182 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 90 + call $std/array/Dim#set:width + local.get $182 + call $~lib/array/Array#__set + local.get $175 + i32.const 7 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $183 + i32.store offset=224 + local.get $183 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 100 + call $std/array/Dim#set:height + local.get $183 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 80 + call $std/array/Dim#set:width + local.get $183 + call $~lib/array/Array#__set + local.get $175 + i32.const 8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $184 + i32.store offset=228 + local.get $184 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 100 + call $std/array/Dim#set:height + local.get $184 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 100 + call $std/array/Dim#set:width + local.get $184 + call $~lib/array/Array#__set + local.get $175 + i32.const 9 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $185 + i32.store offset=232 + local.get $185 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 100 + call $std/array/Dim#set:height + local.get $185 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 120 + call $std/array/Dim#set:width + local.get $185 + call $~lib/array/Array#__set + local.get $175 + i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $186 + i32.store offset=236 + local.get $186 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 100 + call $std/array/Dim#set:height + local.get $186 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 135 + call $std/array/Dim#set:width + local.get $186 + call $~lib/array/Array#__set + local.get $175 + i32.const 11 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $187 + i32.store offset=240 + local.get $187 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 110 + call $std/array/Dim#set:height + local.get $187 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 115 + call $std/array/Dim#set:width + local.get $187 + call $~lib/array/Array#__set + local.get $175 + global.set $std/array/outputStabArr + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 9 + i32.const 9200 + call $~lib/rt/__newArray + local.tee $189 + i32.store offset=244 + local.get $189 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#sort@varargs + drop + local.get $189 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + i32.const 2 + i32.const 9 + i32.const 9264 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1091 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 9 + i32.const 9296 + call $~lib/rt/__newArray + local.tee $192 + i32.store offset=248 + local.get $192 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#sort@varargs + drop + local.get $192 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8 + i32.const 2 + i32.const 9 + i32.const 9360 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1095 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 3 + i32.const 12 + i32.const 9424 + call $~lib/rt/__newArray + local.tee $195 + i32.store offset=252 + local.get $195 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#sort@varargs + drop + local.get $195 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 8 + i32.const 3 + i32.const 12 + i32.const 9552 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1099 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 9648 + call $~lib/rt/__newArray + local.tee $198 + i32.store offset=256 + local.get $198 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#sort@varargs + drop + local.get $198 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 9728 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 9776 + call $~lib/rt/__newArray + local.tee $201 + i32.store offset=260 + local.get $201 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#sort@varargs + drop + local.get $201 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 9856 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1107 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 9904 + call $~lib/rt/__newArray + local.tee $204 + i32.store offset=264 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 9936 + call $~lib/rt/__newArray + local.tee $206 + i32.store offset=268 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 9968 + call $~lib/rt/__newArray + local.tee $208 + i32.store offset=272 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 10000 + call $~lib/rt/__newArray + local.tee $210 + i32.store offset=276 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 10048 + call $~lib/rt/__newArray + local.tee $212 + i32.store offset=280 + global.get $~lib/memory/__stack_pointer + i32.const 64 + call $std/array/createReverseOrderedArray + local.tee $213 + i32.store offset=284 + global.get $~lib/memory/__stack_pointer + i32.const 128 + call $std/array/createReverseOrderedArray + local.tee $214 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + call $std/array/createReverseOrderedArray + local.tee $215 + i32.store offset=292 + global.get $~lib/memory/__stack_pointer + i32.const 10000 + call $std/array/createReverseOrderedArray + local.tee $216 + i32.store offset=296 + global.get $~lib/memory/__stack_pointer + i32.const 512 + call $std/array/createRandomOrderedArray + local.tee $217 + i32.store offset=300 + local.get $204 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/assertSortedDefault + local.get $206 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/assertSortedDefault + local.get $206 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 10128 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1127 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $208 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/assertSortedDefault + local.get $208 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 10160 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1130 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $210 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/assertSortedDefault + local.get $210 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $212 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1133 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $213 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/assertSortedDefault + local.get $213 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $212 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $214 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/assertSortedDefault + local.get $214 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $212 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1139 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $215 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/assertSortedDefault + local.get $215 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $212 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1142 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $216 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/assertSortedDefault + local.get $216 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $212 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1145 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $217 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $std/array/assertSortedDefault + call $std/array/assertStableSortedForComplexObjects + global.get $~lib/memory/__stack_pointer + i32.const 64 + call $std/array/createRandomOrderedArray + local.tee $220 + i32.store offset=304 + global.get $~lib/memory/__stack_pointer + i32.const 257 + call $std/array/createRandomOrderedArray + local.tee $221 + i32.store offset=308 + local.get $220 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 10224 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $std/array/assertSorted + local.get $220 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 10256 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $std/array/assertSorted + local.get $221 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 10288 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $std/array/assertSorted + local.get $221 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 10320 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $std/array/createReverseOrderedNestedArray + local.tee $222 + i32.store offset=312 + local.get $222 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 10352 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $std/array/assertSorted<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 512 + call $std/array/createReverseOrderedElementsArray + local.tee $223 + i32.store offset=316 + local.get $223 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 10384 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $std/array/assertSorted> + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 34 + i32.const 10576 + call $~lib/rt/__newArray + local.tee $225 + i32.store offset=320 + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 34 + i32.const 10624 + call $~lib/rt/__newArray + local.tee $227 + i32.store offset=324 + local.get $225 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $std/array/assertSorted<~lib/string/String|null>@varargs + local.get $225 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $227 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 0 + call $std/array/isArraysEqual<~lib/string/String|null> + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 400 + call $std/array/createRandomStringArray + local.tee $228 + i32.store offset=328 + local.get $228 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $std/array/assertSorted<~lib/string/String>@varargs + i32.const 2 + i32.const 0 + i32.const 37 + i32.const 10736 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 10832 + call $~lib/array/Array#join + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 10864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 10912 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 10544 + call $~lib/array/Array#join + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 10944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1194 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 8 + i32.const 10976 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 11008 + call $~lib/array/Array#join + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 10944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1195 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 11040 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 11072 + call $~lib/array/Array#join + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 11104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1196 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 6 + i32.const 3 + i32.const 12 + i32.const 11184 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 11264 + call $~lib/array/Array#join + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 12432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1197 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 34 + i32.const 12576 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 10544 + call $~lib/array/Array<~lib/string/String|null>#join + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 12544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__newArray + local.tee $235 + i32.store offset=332 + local.get $235 + i32.const 0 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $235 + i32.const 1 + i32.const 0 + call $~lib/array/Array#__set + local.get $235 + i32.const 2 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $235 + local.tee $236 + i32.store offset=336 + local.get $236 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 10832 + call $~lib/array/Array#join + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 12672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $237 + i32.store offset=340 + local.get $237 + i32.const 0 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $237 + i32.const 1 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $237 + local.tee $238 + i32.store offset=344 + local.get $238 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 10832 + call $~lib/array/Array#join + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 12768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1203 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 12864 + call $~lib/rt/__newArray + local.tee $240 + i32.store offset=348 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 12896 + call $~lib/rt/__newArray + local.tee $242 + i32.store offset=352 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 12928 + call $~lib/rt/__newArray + local.tee $244 + i32.store offset=356 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 12960 + call $~lib/rt/__newArray + local.tee $246 + i32.store offset=360 + local.get $240 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 10544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1213 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $242 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 12544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1214 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $244 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 13008 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1215 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $246 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 13040 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1216 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 0 + i32.const 38 + i32.const 13088 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 13120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1218 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 0 + i32.const 38 + i32.const 13152 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 13184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1219 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 1 + i32.const 11 + i32.const 13232 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 13264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1220 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 1 + i32.const 39 + i32.const 13312 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 13344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1221 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 13392 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 13424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1222 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 3 + i32.const 40 + i32.const 13488 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 13536 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 3 + i32.const 41 + i32.const 13616 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 13680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1224 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 34 + i32.const 13840 + call $~lib/rt/__newArray + local.tee $255 + i32.store offset=364 + local.get $255 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array<~lib/string/String|null>#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 13888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1231 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 2 + i32.const 34 + i32.const 14000 + call $~lib/rt/__newArray + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array<~lib/string/String|null>#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 14048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1232 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $257 + i32.store offset=368 + local.get $257 + i32.const 0 + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 14080 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $257 + i32.const 1 + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 14112 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $257 + local.tee $260 + i32.store offset=372 + local.get $260 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 14144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 42 + i32.const 0 + call $~lib/rt/__newArray + local.tee $261 + i32.store offset=376 + local.get $261 + i32.const 0 + i32.const 2 + i32.const 0 + i32.const 7 + i32.const 14192 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $261 + i32.const 1 + i32.const 2 + i32.const 0 + i32.const 7 + i32.const 14224 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $261 + local.tee $264 + i32.store offset=380 + local.get $264 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 14144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1238 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 44 + i32.const 0 + call $~lib/rt/__newArray + local.tee $265 + i32.store offset=384 + local.get $265 + i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 43 + i32.const 0 + call $~lib/rt/__newArray + local.tee $266 + i32.store offset=388 + local.get $266 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 8 + i32.const 14256 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $266 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__set + local.get $265 + local.tee $268 + i32.store offset=392 + local.get $268 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 12544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1241 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $269 + i32.store offset=396 + local.get $269 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 14288 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $269 + i32.const 1 + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 14320 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $269 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 14352 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $269 + i32.const 3 + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 14384 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $269 + local.tee $274 + i32.store offset=400 + global.get $~lib/memory/__stack_pointer + local.get $274 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array<~lib/array/Array>#flat + local.tee $275 + i32.store offset=404 + local.get $275 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1248 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $276 + loop $for-loop|7 + local.get $276 + i32.const 10 + i32.lt_s + if + local.get $275 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $276 + call $~lib/array/Array#__get + local.get $276 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1250 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $276 + i32.const 1 + i32.add + local.set $276 + br $for-loop|7 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 45 + i32.const 0 + call $~lib/rt/__newArray + local.tee $277 + i32.store offset=408 + local.get $277 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 34 + i32.const 14448 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__set + local.get $277 + i32.const 1 + i32.const 3 + i32.const 2 + i32.const 34 + i32.const 14544 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__set + local.get $277 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 34 + i32.const 14672 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__set + local.get $277 + i32.const 3 + i32.const 1 + i32.const 2 + i32.const 34 + i32.const 14736 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__set + local.get $277 + local.tee $282 + i32.store offset=412 + global.get $~lib/memory/__stack_pointer + local.get $282 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat + local.tee $283 + i32.store offset=416 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 34 + i32.const 14768 + call $~lib/rt/__newArray + local.tee $285 + i32.store offset=420 + local.get $283 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array<~lib/string/String|null>#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1256 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $286 + loop $for-loop|8 + local.get $286 + local.get $285 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array<~lib/string/String|null>#get:length + i32.lt_s + if + local.get $283 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + local.get $286 + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + local.get $285 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + local.get $286 + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1258 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $286 + i32.const 1 + i32.add + local.set $286 + br $for-loop|8 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $287 + i32.store offset=424 + local.get $287 + i32.const 0 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 14832 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $287 + i32.const 1 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 14864 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $287 + local.tee $290 + i32.store offset=428 + local.get $290 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + call $~lib/array/Array<~lib/array/Array>#flat + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1262 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $291 + i32.store offset=432 + local.get $291 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 14896 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $291 + i32.const 1 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 14928 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $291 + local.tee $294 + i32.store offset=436 + global.get $~lib/memory/__stack_pointer + local.get $294 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=8 + local.get $296 + i32.const 14960 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store offset=48 + local.get $296 + call $~lib/array/Array<~lib/array/Array>#map<~lib/array/Array> + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array<~lib/array/Array>#flat + local.tee $295 + i32.store offset=440 + local.get $295 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1272 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $295 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 0 + call $~lib/array/Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1273 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $295 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 1 + call $~lib/array/Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1274 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $295 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1275 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $295 + local.set $296 + global.get $~lib/memory/__stack_pointer + local.get $296 + i32.store + local.get $296 + i32.const 3 + call $~lib/array/Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1276 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/arr + i32.const 0 + global.set $std/array/inputStabArr + i32.const 0 + global.set $std/array/outputStabArr + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 444 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>~lib/string/String>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f32%2Cf32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f64%2Cf64%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u32%2Cu32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String|null>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String|null>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String|null>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String|null>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28~lib/array/Array%2Ci32%2C~lib/array/Array<~lib/array/Array>%29=>~lib/array/Array>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i32) + (local $offset|11 i32) + (local $val32 i32) + (local $decimals|13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 6496 + i32.const 6624 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 6688 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + local.get $value + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + i64.extend_i32_u + local.get $offset|11 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.set $val32 + local.get $val32 + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $val32 + i64.extend_i32_u + local.get $decimals|13 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 6496 + i32.const 6624 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 6688 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/util/number/dtoa (param $value f64) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + local.get $value + local.set $value|1 + i32.const 0 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 11296 + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 11328 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 11360 + i32.const 11408 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 11440 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 11440 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/util/number/utoa64 (param $value i64) (param $radix i32) (result i32) + (local $out i32) + (local $val32 i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i64) + (local $offset|11 i32) + (local $decimals|12 i32) + (local $buffer|13 i32) + (local $num|14 i64) + (local $offset|15 i32) + (local $decimals|16 i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 6496 + i32.const 6624 + i32.const 401 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i64.const 0 + i64.ne + i32.eqz + if + i32.const 6688 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + call $~lib/util/number/decimalCount64High + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + local.get $offset|11 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 63 + local.get $value + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|12 + global.get $~lib/memory/__stack_pointer + local.get $decimals|12 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|13 + local.get $value + local.set $num|14 + local.get $decimals|12 + local.set $offset|15 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|13 + local.get $num|14 + local.get $offset|15 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|16 + global.get $~lib/memory/__stack_pointer + local.get $decimals|16 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + local.get $decimals|16 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + ) + (func $~lib/util/number/itoa64 (param $value i64) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $val32 i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|9 i32) + (local $buffer|10 i32) + (local $num|11 i64) + (local $offset|12 i32) + (local $decimals|13 i32) + (local $buffer|14 i32) + (local $num|15 i64) + (local $offset|16 i32) + (local $decimals|17 i32) + (local $18 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 6496 + i32.const 6624 + i32.const 431 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i64.const 0 + i64.ne + i32.eqz + if + i32.const 6688 + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return + end + local.get $value + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i64.const 0 + local.get $value + i64.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + call $~lib/util/number/decimalCount64High + local.set $decimals|9 + global.get $~lib/memory/__stack_pointer + local.get $decimals|9 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|10 + local.get $value + local.set $num|11 + local.get $decimals|9 + local.set $offset|12 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|10 + local.get $num|11 + local.get $offset|12 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 63 + local.get $value + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|14 + local.get $value + local.set $num|15 + local.get $decimals|13 + local.set $offset|16 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|14 + local.get $num|15 + local.get $offset|16 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|17 + global.get $~lib/memory/__stack_pointer + local.get $decimals|17 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $value + local.get $decimals|17 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return + ) +) diff --git a/tests/compiler/std/array.json b/tests/compiler/std/array.json index 59c251c705..bec32a4d51 100644 --- a/tests/compiler/std/array.json +++ b/tests/compiler/std/array.json @@ -1,7 +1,6 @@ { "asc_flags": [ - "--runtime half", - "--explicitStart", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + "--exportStart", "_start" + ], + "asc_rtrace": true +} diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat deleted file mode 100644 index afe414b4f6..0000000000 --- a/tests/compiler/std/array.optimized.wat +++ /dev/null @@ -1,20803 +0,0 @@ -(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_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_f64 (func (result f64))) - (type $none_=>_none (func)) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i64_=>_none (func (param i64))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) - (import "env" "seed" (func $~lib/builtins/seed (result f64))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1120) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1168) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1232) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1280) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1328) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1392) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 1424) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") - (data (i32.const 1456) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 1488) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1552) "\05\00\00\00\01\00\00\00\00\00\00\00\05") - (data (i32.const 1584) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01") - (data (i32.const 1616) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 1648) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 1680) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1728) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data (i32.const 1776) "\14\00\00\00\01\00\00\00\00\00\00\00\14") - (data (i32.const 1824) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01") - (data (i32.const 1872) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 1920) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 1968) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") - (data (i32.const 2020) "\01") - (data (i32.const 2036) "\01") - (data (i32.const 2048) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2096) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2144) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2192) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") - (data (i32.const 2240) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2288) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 2336) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2384) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2432) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2480) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2528) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2576) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2624) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2672) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 2720) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2768) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2816) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2864) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2912) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2960) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3008) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3056) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 3104) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3152) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 3200) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f") - (data (i32.const 3232) "\08\00\00\00\01\00\00\00\00\00\00\00\08") - (data (i32.const 3254) "\f8\7f") - (data (i32.const 3264) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f") - (data (i32.const 3296) "\08\00\00\00\01\00\00\00\00\00\00\00\08") - (data (i32.const 3318) "\f8\7f") - (data (i32.const 3328) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3376) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3428) "\01") - (data (i32.const 3440) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3492) "\01") - (data (i32.const 3504) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3552) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3600) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3632) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 3664) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3712) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04") - (data (i32.const 3744) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05") - (data (i32.const 3776) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3824) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 3856) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3888) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3936) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\05") - (data (i32.const 3968) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") - (data (i32.const 4000) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4048) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\05") - (data (i32.const 4080) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 4112) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4160) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\04") - (data (i32.const 4192) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") - (data (i32.const 4224) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4272) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 4304) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4336) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4388) "\01") - (data (i32.const 4400) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4448) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4500) "\01") - (data (i32.const 4512) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4560) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4612) "\01") - (data (i32.const 4624) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4672) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4724) "\01") - (data (i32.const 4736) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4784) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4836) "\01") - (data (i32.const 4848) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4900) "\01") - (data (i32.const 4912) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 5024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") - (data (i32.const 5072) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\01") - (data (i32.const 5104) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\02") - (data (i32.const 5136) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\03") - (data (i32.const 5168) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\04") - (data (i32.const 5200) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\05") - (data (i32.const 5232) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\06") - (data (i32.const 5264) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\07") - (data (i32.const 5296) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\08") - (data (i32.const 5328) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\t") - (data (i32.const 5360) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\n") - (data (i32.const 5392) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0b") - (data (i32.const 5424) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0c") - (data (i32.const 5456) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0d") - (data (i32.const 5488) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0e") - (data (i32.const 5520) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0f") - (data (i32.const 5552) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\10") - (data (i32.const 5584) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\11") - (data (i32.const 5616) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\12") - (data (i32.const 5648) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\13") - (data (i32.const 5680) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\14") - (data (i32.const 5712) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\15") - (data (i32.const 5744) "\08\00\00\00\01\00\00\00\0e\00\00\00\08\00\00\00\16") - (data (i32.const 5776) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\17") - (data (i32.const 5808) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\18") - (data (i32.const 5840) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\19") - (data (i32.const 5872) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1a") - (data (i32.const 5904) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1b") - (data (i32.const 5936) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1c") - (data (i32.const 5968) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1d") - (data (i32.const 6000) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00\1e") - (data (i32.const 6032) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00\1f") - (data (i32.const 6064) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00 ") - (data (i32.const 6096) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00!") - (data (i32.const 6128) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00\"") - (data (i32.const 6160) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00#") - (data (i32.const 6192) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00$") - (data (i32.const 6224) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00%") - (data (i32.const 6256) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00&") - (data (i32.const 6288) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00\'") - (data (i32.const 6320) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00(") - (data (i32.const 6352) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00)") - (data (i32.const 6384) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00*") - (data (i32.const 6416) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00+") - (data (i32.const 6448) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") - (data (i32.const 6496) "\ac\00\00\00\01\00\00\00\01\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?") - (data (i32.const 6688) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") - (data (i32.const 6736) "\08\00\00\00\01\00\00\00\12\00\00\00\08\00\00\00,") - (data (i32.const 6768) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") - (data (i32.const 6816) "@\00\00\00\01\00\00\00\00\00\00\00@") - (data (i32.const 6838) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") - (data (i32.const 6878) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") - (data (i32.const 6896) "\08\00\00\00\01\00\00\00\13\00\00\00\08\00\00\00-") - (data (i32.const 6928) "@\00\00\00\01\00\00\00\00\00\00\00@") - (data (i32.const 6950) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") - (data (i32.const 6982) "\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") - (data (i32.const 7008) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") - (data (i32.const 7056) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\00.") - (data (i32.const 7088) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") - (data (i32.const 7136) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") - (data (i32.const 7184) "\08\00\00\00\01\00\00\00\15\00\00\00\08\00\00\00/") - (data (i32.const 7216) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 7268) "\01") - (data (i32.const 7280) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 7312) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01") - (data (i32.const 7344) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01") - (data (i32.const 7376) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 7408) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\000") - (data (i32.const 7440) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 7472) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 7504) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\001") - (data (i32.const 7536) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\002") - (data (i32.const 7568) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\003") - (data (i32.const 7600) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\004") - (data (i32.const 7632) "\08\00\00\00\01\00\00\00\17\00\00\00\08\00\00\005") - (data (i32.const 7664) "\08\00\00\00\01\00\00\00\1a\00\00\00\08\00\00\006") - (data (i32.const 7696) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 7728) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 7760) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 7792) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00a") - (data (i32.const 7828) "\01\00\00\00\01") - (data (i32.const 7840) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00 \1e\00\00@\1e\00\00 \1e\00\00`\1e\00\00\80\1e\00\00\a0\1e") - (data (i32.const 7888) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\a0\1e\00\00 \1e\00\00 \1e\00\00`\1e\00\00@\1e\00\00\80\1e") - (data (i32.const 7936) "\08\00\00\00\01\00\00\00\1c\00\00\00\08\00\00\007") - (data (i32.const 7968) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 8000) "\08\00\00\00\01\00\00\00\1e\00\00\00\08\00\00\008") - (data (i32.const 8032) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01") - (data (i32.const 8064) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 8096) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 8128) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") - (data (i32.const 8160) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") - (data (i32.const 8208) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 8240) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 8368) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 8432) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 8464) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 8560) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003") - (data (i32.const 8592) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 8624) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-") - (data (i32.const 8656) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 8688) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00_\00_") - (data (i32.const 8720) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 8784) "0\00\00\00\01\00\00\00\00\00\00\000") - (data (i32.const 8814) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 8848) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 8880) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 8912) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 8944) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 8992) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 9024) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\01\00\00\00\01\00\00\00>\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") - (data (i32.const 10308) "\01") - (data (i32.const 10320) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 10352) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 10384) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 10416) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00,\002") - (data (i32.const 10448) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") - (data (i32.const 10480) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\01\ff") - (data (i32.const 10512) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000") - (data (i32.const 10544) "\06\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff") - (data (i32.const 10576) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") - (data (i32.const 10624) "\18\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 10672) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") - (data (i32.const 10736) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") - (data (i32.const 10784) "T\00\00\00\01\00\00\00\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 10896) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\a0\1e\00\00 \1e\00\00 \1e\00\00`\1e\00\00@\1e\00\00\80\1e") - (data (i32.const 10944) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") - (data (i32.const 10992) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 11024) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004") - (data (i32.const 11056) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00@\'\00\00\00+\00\00\00\00\00\00 +") - (data (i32.const 11088) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") - (data (i32.const 11120) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 11152) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04") - (data (i32.const 11184) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") - (data (i32.const 11216) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01\02") - (data (i32.const 11248) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\03\04") - (data (i32.const 11280) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 11312) "\04\00\00\00\01\00\00\00\00\00\00\00\04") - (data (i32.const 11344) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 11376) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06") - (data (i32.const 11408) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 11440) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00o\00n\00e") - (data (i32.const 11472) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\c0,") - (data (i32.const 11504) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00t\00w\00o") - (data (i32.const 11536) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e") - (data (i32.const 11568) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00-\00\00\00\00\00\00 -") - (data (i32.const 11600) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r") - (data (i32.const 11632) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e") - (data (i32.const 11664) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00s\00i\00x") - (data (i32.const 11696) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00`-\00\00\80-\00\00\a0-") - (data (i32.const 11728) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n") - (data (i32.const 11760) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\e0-") - (data (i32.const 11792) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\c0,\00\00\00-\00\00\00\00\00\00 -\00\00`-\00\00\80-\00\00\a0-\00\00\e0-") - (data (i32.const 11844) "\01") - (data (i32.const 11860) "\01") - (data (i32.const 11872) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e") - (table $0 57 funcref) - (elem (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|16 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $std/array/arr (mut i32) (i32.const 0)) - (global $std/array/i (mut i32) (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/math/random_seeded (mut i32) (i32.const 0)) - (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) - (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) - (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) - (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $std/array/ArrayU32 i32 (i32.const 40)) - (global $std/array/ArrayU8 i32 (i32.const 41)) - (global $std/array/ArrayStr i32 (i32.const 42)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "ArrayU32" (global $std/array/ArrayU32)) - (export "ArrayU32#constructor" (func $~lib/array/Array#constructor@varargs)) - (export "ArrayU32#get:length" (func $~lib/array/Array#get:length)) - (export "ArrayU32#set:length" (func $~lib/array/Array#set:length)) - (export "ArrayU32#every" (func $~lib/array/Array#every)) - (export "ArrayU32#findIndex" (func $~lib/array/Array#findIndex)) - (export "ArrayU32#fill" (func $~lib/array/Array#fill@varargs)) - (export "ArrayU32#includes" (func $~lib/array/Array#includes@varargs)) - (export "ArrayU32#indexOf" (func $~lib/array/Array#indexOf@varargs)) - (export "ArrayU32#lastIndexOf" (func $~lib/array/Array#lastIndexOf@varargs)) - (export "ArrayU32#push" (func $~lib/array/Array#push)) - (export "ArrayU32#concat" (func $~lib/array/Array#concat)) - (export "ArrayU32#copyWithin" (func $~lib/array/Array#copyWithin@varargs)) - (export "ArrayU32#pop" (func $~lib/array/Array#pop)) - (export "ArrayU32#forEach" (func $~lib/array/Array#forEach)) - (export "ArrayU32#filter" (func $~lib/array/Array#filter)) - (export "ArrayU32#shift" (func $~lib/array/Array#shift)) - (export "ArrayU32#some" (func $~lib/array/Array#some)) - (export "ArrayU32#unshift" (func $~lib/array/Array#unshift)) - (export "ArrayU32#slice" (func $~lib/array/Array#slice@varargs)) - (export "ArrayU32#splice" (func $~lib/array/Array#splice@varargs)) - (export "ArrayU32#reverse" (func $~lib/array/Array#reverse)) - (export "ArrayU32#sort" (func $~lib/array/Array#sort@varargs)) - (export "ArrayU32#join" (func $~lib/array/Array#join@varargs)) - (export "ArrayU32#flat" (func $~lib/array/Array#flat)) - (export "ArrayU32#toString" (func $~lib/array/Array#toString)) - (export "ArrayU8" (global $std/array/ArrayU8)) - (export "ArrayU8#constructor" (func $~lib/array/Array#constructor@varargs)) - (export "ArrayU8#get:length" (func $~lib/array/Array#get:length)) - (export "ArrayU8#set:length" (func $~lib/array/Array#set:length)) - (export "ArrayU8#every" (func $~lib/array/Array#every)) - (export "ArrayU8#findIndex" (func $~lib/array/Array#findIndex)) - (export "ArrayU8#fill" (func $~lib/array/Array#fill@varargs)) - (export "ArrayU8#includes" (func $~lib/array/Array#includes@varargs)) - (export "ArrayU8#indexOf" (func $~lib/array/Array#indexOf@varargs)) - (export "ArrayU8#lastIndexOf" (func $~lib/array/Array#lastIndexOf@varargs)) - (export "ArrayU8#push" (func $~lib/array/Array#push)) - (export "ArrayU8#concat" (func $~lib/array/Array#concat)) - (export "ArrayU8#copyWithin" (func $~lib/array/Array#copyWithin@varargs)) - (export "ArrayU8#pop" (func $~lib/array/Array#pop)) - (export "ArrayU8#forEach" (func $~lib/array/Array#forEach)) - (export "ArrayU8#filter" (func $~lib/array/Array#filter)) - (export "ArrayU8#shift" (func $~lib/array/Array#shift)) - (export "ArrayU8#some" (func $~lib/array/Array#some)) - (export "ArrayU8#unshift" (func $~lib/array/Array#unshift)) - (export "ArrayU8#slice" (func $~lib/array/Array#slice@varargs)) - (export "ArrayU8#splice" (func $~lib/array/Array#splice@varargs)) - (export "ArrayU8#reverse" (func $~lib/array/Array#reverse)) - (export "ArrayU8#sort" (func $~lib/array/Array#sort@varargs)) - (export "ArrayU8#join" (func $~lib/array/Array#join@varargs)) - (export "ArrayU8#flat" (func $~lib/array/Array#flat)) - (export "ArrayU8#toString" (func $~lib/array/Array#toString)) - (export "ArrayStr" (global $std/array/ArrayStr)) - (export "ArrayStr#constructor" (func $~lib/array/Array<~lib/string/String>#constructor@varargs)) - (export "ArrayStr#get:length" (func $~lib/array/Array#get:length)) - (export "ArrayStr#set:length" (func $~lib/array/Array#set:length)) - (export "ArrayStr#every" (func $~lib/array/Array#every)) - (export "ArrayStr#findIndex" (func $~lib/array/Array#findIndex)) - (export "ArrayStr#fill" (func $~lib/array/Array<~lib/string/String>#fill@varargs)) - (export "ArrayStr#includes" (func $~lib/array/Array<~lib/string/String>#includes@varargs)) - (export "ArrayStr#indexOf" (func $~lib/array/Array<~lib/string/String>#indexOf@varargs)) - (export "ArrayStr#lastIndexOf" (func $~lib/array/Array<~lib/string/String>#lastIndexOf@varargs)) - (export "ArrayStr#push" (func $~lib/array/Array<~lib/string/String>#push)) - (export "ArrayStr#concat" (func $~lib/array/Array<~lib/string/String>#concat)) - (export "ArrayStr#copyWithin" (func $~lib/array/Array<~lib/string/String>#copyWithin@varargs)) - (export "ArrayStr#pop" (func $~lib/array/Array<~lib/string/String>#pop)) - (export "ArrayStr#forEach" (func $~lib/array/Array#forEach)) - (export "ArrayStr#filter" (func $~lib/array/Array<~lib/string/String>#filter)) - (export "ArrayStr#shift" (func $~lib/array/Array<~lib/string/String>#shift)) - (export "ArrayStr#some" (func $~lib/array/Array#some)) - (export "ArrayStr#unshift" (func $~lib/array/Array<~lib/string/String>#unshift)) - (export "ArrayStr#slice" (func $~lib/array/Array<~lib/string/String>#slice@varargs)) - (export "ArrayStr#splice" (func $~lib/array/Array<~lib/string/String>#splice@varargs)) - (export "ArrayStr#reverse" (func $~lib/array/Array<~lib/string/String>#reverse)) - (export "ArrayStr#sort" (func $~lib/array/Array<~lib/string/String>#sort@varargs)) - (export "ArrayStr#join" (func $~lib/array/Array<~lib/string/String>#join@varargs)) - (export "ArrayStr#flat" (func $~lib/array/Array#flat)) - (export "ArrayStr#toString" (func $~lib/array/Array<~lib/string/String|null>#toString)) - (export "__setArgumentsLength" (func $~setArgumentsLength)) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 11928 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1136 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1136 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1136 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 11936 - local.set $1 - i32.const 11936 - i32.const 0 - i32.store - i32.const 13504 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 11936 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 11936 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 11936 - i32.const 13520 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 11936 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 1184 - i32.const 1136 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1136 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1136 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1136 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - call $~lib/rt/rtrace/onalloc - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.tee $3 - local.get $1 - i32.store8 offset=3 - local.get $2 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - local.get $1 - i32.store8 offset=1 - local.get $0 - local.get $1 - i32.store8 offset=2 - local.get $3 - local.get $1 - i32.store8 offset=2 - local.get $3 - local.get $1 - i32.store8 offset=1 - local.get $2 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - local.get $1 - i32.store8 offset=3 - local.get $3 - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $5 - i32.add - local.tee $3 - local.get $1 - i32.const 255 - i32.and - i32.const 16843009 - i32.mul - local.tee $0 - i32.store - local.get $3 - local.get $2 - local.get $5 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 28 - i32.sub - local.tee $1 - local.get $0 - i32.store offset=24 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $3 - local.get $0 - i32.store offset=4 - local.get $3 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=16 - local.get $1 - local.get $0 - i32.store offset=20 - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $3 - local.get $0 - i32.store offset=12 - local.get $3 - local.get $0 - i32.store offset=16 - local.get $3 - local.get $0 - i32.store offset=20 - local.get $3 - local.get $0 - i32.store offset=24 - local.get $1 - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - local.get $3 - local.get $3 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.sub - local.set $2 - local.get $0 - i64.extend_i32_u - local.get $0 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $4 - loop $while-continue|0 - local.get $2 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $4 - i64.store - local.get $1 - local.get $4 - i64.store offset=8 - local.get $1 - local.get $4 - i64.store offset=16 - local.get $1 - local.get $4 - i64.store offset=24 - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 11928 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1248 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1248 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/array/Array#constructor (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $5 - i32.const 0 - i32.store - local.get $5 - i32.const 0 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 268435452 - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - local.tee $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $2 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 - local.get $5 - i32.load - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $0 - i32.store offset=12 - local.get $5 - ) - (func $~lib/array/Array.isArray<~lib/array/Array|null> (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - i32.ne - ) - (func $std/array/Ref#constructor (param $0 i32) (result i32) - (local $1 i32) - i32.const 4 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - local.get $0 - i32.store - local.get $1 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - i32.const 16 - local.get $2 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - i32.shl - local.tee $1 - local.set $5 - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $3 - if - local.get $4 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy - end - local.get $4 - local.tee $3 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=12 - local.set $4 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 - i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select - end - local.tee $3 - i32.lt_s - if - local.get $2 - local.get $5 - i32.add - local.get $1 - local.get $3 - local.get $2 - i32.sub - call $~lib/memory/memory.fill - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1504 - i32.const 1088 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_u - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner1 - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.eq - br_if $folding-inner1 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne - br_if $folding-inner0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - br $folding-inner1 - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - ) - (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=12 - local.set $4 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.set $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 - i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select - end - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1504 - i32.const 1088 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner1 - block $folding-inner0 - local.get $2 - i32.eqz - if - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.load offset=12 - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.eq - br_if $folding-inner1 - end - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.ne - br_if $folding-inner0 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - br $folding-inner1 - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - ) - (func $std/array/internalCapacity (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 2 - i32.shr_s - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1136 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - local.get $1 - i32.load - local.tee $5 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $4 - i32.const 1 - i32.and - if - local.get $5 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 11928 - i32.ge_u - if - local.get $1 - local.get $3 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $4 - call $~lib/rt/tlsf/maybeInitialize - local.get $4 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - local.get $2 - i32.shl - local.tee $2 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - local.tee $1 - local.get $3 - i32.add - i32.const 0 - local.get $2 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $1 - local.get $4 - i32.ne - if - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $2 - i32.store offset=8 - end - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s - if - i32.const 1984 - i32.const 1088 - i32.const 300 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.gt_s - if - local.get $0 - i32.load offset=4 - local.tee $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $do-continue|0 - local.get $3 - i32.load - call $~lib/rt/pure/__release - local.get $3 - i32.const 4 - i32.add - local.tee $3 - local.get $2 - i32.lt_u - br_if $do-continue|0 - end - else - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - end - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.const 0 - local.get $1 - select - local.tee $4 - i32.add - local.tee $2 - i32.const 268435452 - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=4 - local.tee $5 - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/memory/memory.copy - local.get $0 - local.get $5 - i32.add - local.get $1 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $3 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.tee $1 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $2 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 - i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select - end - local.get $2 - i32.sub - local.tee $2 - local.get $4 - local.get $1 - i32.sub - local.tee $1 - local.get $2 - local.get $1 - i32.lt_s - select - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.tee $3 - i32.const 4 - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array#shift (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s - if - i32.const 1984 - i32.const 1088 - i32.const 361 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.tee $2 - i32.load - local.get $2 - local.get $2 - i32.const 4 - i32.add - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - local.tee $4 - call $~lib/memory/memory.copy - local.get $2 - local.get $4 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.tee $1 - if - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.set $1 - loop $while-continue|0 - local.get $2 - local.get $1 - i32.lt_u - if - local.get $2 - i32.load - local.set $3 - local.get $2 - local.get $1 - i32.load - i32.store - local.get $1 - local.get $3 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $1 - i32.const 4 - i32.sub - local.set $1 - br $while-continue|0 - end - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s - ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.tee $1 - i32.sub - local.tee $4 - local.get $2 - local.get $4 - i32.lt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $4 - ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.tee $1 - i32.sub - local.tee $2 - i32.const 2 - local.get $2 - i32.lt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $4 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1504 - i32.const 1088 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.tee $0 - i32.eqz - if - i32.const 4928 - i32.const 1088 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $0 - ) - (func $~lib/array/Array#splice (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 0 - local.get $3 - i32.lt_s - select - local.set $2 - i32.const 1 - local.get $3 - local.get $2 - i32.sub - local.tee $1 - i32.const 1 - local.get $1 - i32.lt_s - select - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $1 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 - i32.add - local.tee $2 - i32.ne - if - local.get $6 - local.get $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $2 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $1 - i32.sub - i32.store offset=12 - local.get $4 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1504 - i32.const 1088 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1504 - i32.const 1088 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.eqz - ) - (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $4 - local.get $3 - i32.lt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const -1 - ) - (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 1 - i32.eq - ) - (func $start:std/array~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 100 - i32.eq - ) - (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 100 - i32.eq - ) - (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/array/Array#pop - drop - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 100 - i32.eq - ) - (func $start:std/array~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 0 - i32.ge_s - ) - (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $4 - local.get $3 - i32.lt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - ) - (func $start:std/array~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 0 - i32.le_s - ) - (func $start:std/array~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 10 - i32.lt_s - ) - (func $start:std/array~anonymous|9 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 10 - i32.lt_s - ) - (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/array/Array#pop - drop - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 3 - i32.lt_s - ) - (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 3 - i32.ge_s - ) - (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $4 - local.get $3 - i32.lt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const -1 - i32.le_s - ) - (func $start:std/array~anonymous|13 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 10 - i32.gt_s - ) - (func $start:std/array~anonymous|14 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 10 - i32.gt_s - ) - (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/array/Array#pop - drop - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 3 - i32.gt_s - ) - (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $4 - local.get $3 - i32.lt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $1 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|19 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/array/Array#pop - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $1 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.eqz - if - loop $for-loop|0 - local.get $3 - i32.const 4 - i32.lt_s - if - local.get $2 - call $~lib/array/Array#pop - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - i32.const 100 - i32.lt_s - if - local.get $2 - local.get $3 - i32.const 100 - i32.add - call $~lib/array/Array#push - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - i32.const 0 - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 100 - i32.lt_s - if - local.get $2 - call $~lib/array/Array#pop - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - i32.const 0 - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 100 - i32.lt_s - if - local.get $2 - local.get $3 - i32.const 200 - i32.add - call $~lib/array/Array#push - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|3 - end - end - end - local.get $1 - i32.const 2 - i32.eq - if - local.get $0 - i32.const 202 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 625 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) - local.get $0 - f32.convert_i32_s - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1504 - i32.const 1088 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $start:std/array~anonymous|22 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $~lib/array/Array#map (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $4 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - i32.load offset=4 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $4 - local.get $3 - i32.lt_s - select - i32.lt_s - if - local.get $2 - i32.const 2 - i32.shl - local.tee $3 - local.get $0 - i32.load offset=4 - i32.add - i32.load - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $3 - local.get $6 - i32.add - local.get $7 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - call $~lib/rt/pure/__release - local.get $0 - ) - (func $start:std/array~anonymous|24 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/array/Array#pop - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $5 - local.get $3 - i32.lt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - i32.const 3 - global.set $~argumentsLength - local.get $3 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $4 - local.get $3 - call $~lib/array/Array#push - drop - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|27 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - call $~lib/rt/pure/__release - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/array/Array#pop - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|29 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/array/Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $3 - local.get $5 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $3 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - i32.const 1 - local.get $1 - i32.const 2 - i32.gt_s - local.get $0 - select - ) - (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - i32.const 1 - local.get $1 - i32.const 100 - i32.gt_s - local.get $0 - select - ) - (func $start:std/array~anonymous|33 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $3 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 1 - call $~lib/array/Array#push - drop - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.add - ) - (func $start:std/array~anonymous|35 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $3 - call $~lib/rt/pure/__retain - local.tee $2 - call $~lib/array/Array#pop - drop - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/array/Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $1 - loop $for-loop|0 - local.get $1 - i32.const 0 - i32.ge_s - if - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - local.get $0 - local.get $3 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/math/murmurHash3 (param $0 i64) (result i64) - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - ) - (func $~lib/math/splitMix32 (param $0 i32) (result i32) - local.get $0 - i32.const 1831565813 - i32.add - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - local.get $0 - i32.const 1 - i32.or - i32.mul - local.tee $0 - local.get $0 - local.get $0 - i32.const 61 - i32.or - local.get $0 - local.get $0 - i32.const 7 - i32.shr_u - i32.xor - i32.mul - i32.add - i32.xor - local.tee $0 - local.get $0 - i32.const 14 - i32.shr_u - i32.xor - ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) - i32.const 1 - global.set $~lib/math/random_seeded - local.get $0 - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state1_64 - local.get $0 - i32.wrap_i64 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state0_32 - global.get $~lib/math/random_state0_32 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state1_32 - global.get $~lib/math/random_state1_32 - i32.const 0 - i32.ne - i32.const 0 - global.get $~lib/math/random_state0_32 - i32.const 0 - global.get $~lib/math/random_state1_64 - i64.const 0 - i64.ne - i32.const 0 - global.get $~lib/math/random_state0_64 - i64.const 0 - i64.ne - select - select - select - i32.eqz - if - i32.const 0 - i32.const 6464 - i32.const 1399 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - (local $7 f32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $5 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $5 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $3 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - f32.store - br $while-continue|1 - end - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - f32.store - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 f32) - (local $7 i32) - (local $8 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $7 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $5 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 1 - i32.and - local.get $5 - local.get $2 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $2 - i32.const 1 - i32.shr_s - local.set $2 - br $while-continue|1 - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.shr_s - local.tee $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $7 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $3 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $3 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $4 - f32.store - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $6 - f32.store - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 2 - i32.ge_s - if - local.get $0 - f32.load - local.set $4 - local.get $0 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $1 - f32.load - f32.store - local.get $1 - local.get $4 - f32.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - f32.load - local.set $4 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $7 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const 1 - local.get $1 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $4 - f32.store - local.get $0 - local.get $6 - f32.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|2 - end - end - call $~lib/rt/tlsf/maybeInitialize - local.get $5 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - local.get $0 - f32.load offset=4 - local.set $4 - local.get $0 - local.get $0 - f32.load - f32.store offset=4 - local.get $0 - local.get $4 - f32.store - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#sort (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 f32) - i32.const 6752 - call $~lib/rt/pure/__retain - local.set $2 - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1 - i32.le_s - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $3 - i32.const 2 - i32.eq - if - local.get $1 - f32.load offset=4 - local.set $5 - local.get $1 - f32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $2 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $1 - local.get $6 - f32.store offset=4 - local.get $1 - local.get $5 - f32.store - end - br $folding-inner0 - end - local.get $2 - call $~lib/rt/pure/__retain - local.set $4 - local.get $3 - i32.const 256 - i32.lt_s - if - local.get $1 - local.get $3 - local.get $4 - call $~lib/util/sort/insertionSort - else - local.get $1 - local.get $3 - local.get $4 - call $~lib/util/sort/weakHeapSort - end - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.get $2 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__retain - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $2 - local.get $2 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor - local.tee $2 - local.get $1 - i32.reinterpret_f32 - local.tee $3 - local.get $3 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor - local.tee $3 - i32.gt_s - local.get $2 - local.get $3 - i32.lt_s - i32.sub - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 f32) - (local $4 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner1 - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $1 - i32.load offset=12 - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.eq - br_if $folding-inner1 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.tee $3 - local.get $3 - f32.ne - if (result i32) - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.tee $3 - local.get $3 - f32.ne - else - i32.const 0 - end - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - f32.ne - br_if $folding-inner0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - br $folding-inner1 - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $5 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - if - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $5 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $3 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $7 - f64.store - br $while-continue|1 - end - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 f64) - (local $7 i32) - (local $8 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $7 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $5 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 1 - i32.and - local.get $5 - local.get $2 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $2 - i32.const 1 - i32.shr_s - local.set $2 - br $while-continue|1 - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.shr_s - local.tee $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $4 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $7 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $3 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $3 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 2 - i32.ge_s - if - local.get $0 - f64.load - local.set $4 - local.get $0 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $1 - f64.load - f64.store - local.get $1 - local.get $4 - f64.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - f64.load - local.set $4 - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $7 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const 1 - local.get $1 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - local.get $0 - local.get $6 - f64.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|2 - end - end - call $~lib/rt/tlsf/maybeInitialize - local.get $5 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - local.get $0 - f64.load offset=8 - local.set $4 - local.get $0 - local.get $0 - f64.load - f64.store offset=8 - local.get $0 - local.get $4 - f64.store - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#sort (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - i32.const 6912 - call $~lib/rt/pure/__retain - local.set $2 - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1 - i32.le_s - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $3 - i32.const 2 - i32.eq - if - local.get $1 - f64.load offset=8 - local.set $5 - local.get $1 - f64.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $1 - local.get $6 - f64.store offset=8 - local.get $1 - local.get $5 - f64.store - end - br $folding-inner0 - end - local.get $2 - call $~lib/rt/pure/__retain - local.set $4 - local.get $3 - i32.const 256 - i32.lt_s - if - local.get $1 - local.get $3 - local.get $4 - call $~lib/util/sort/insertionSort - else - local.get $1 - local.get $3 - local.get $4 - call $~lib/util/sort/weakHeapSort - end - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.get $2 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__retain - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - local.get $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.tee $2 - local.get $1 - i64.reinterpret_f64 - local.tee $3 - local.get $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.tee $3 - i64.gt_s - local.get $2 - local.get $3 - i64.lt_s - i32.sub - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1504 - i32.const 1088 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner1 - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $1 - i32.load offset=12 - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.eq - br_if $folding-inner1 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.tee $3 - local.get $3 - f64.ne - if (result i32) - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.tee $3 - local.get $3 - f64.ne - else - i32.const 0 - end - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - f64.ne - br_if $folding-inner0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - br $folding-inner1 - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $5 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $5 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $3 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - br $while-continue|1 - end - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $6 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $4 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 1 - i32.and - local.get $4 - local.get $2 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $2 - i32.const 1 - i32.shr_s - local.set $2 - br $while-continue|1 - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.shr_s - local.tee $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $5 - local.get $6 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $3 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $3 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 2 - i32.ge_s - if - local.get $0 - i32.load - local.set $1 - local.get $0 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store - local.get $2 - local.get $1 - i32.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.set $2 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $5 - local.get $6 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $0 - local.get $5 - i32.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|2 - end - end - call $~lib/rt/tlsf/maybeInitialize - local.get $4 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.le_s - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $2 - i32.const 2 - i32.eq - if - local.get $1 - i32.load offset=4 - local.set $2 - local.get $1 - i32.load - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $3 - local.get $4 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $1 - local.get $3 - i32.store offset=4 - local.get $1 - local.get $2 - i32.store - end - br $folding-inner0 - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.const 256 - i32.lt_s - if - local.get $1 - local.get $3 - local.get $2 - call $~lib/util/sort/insertionSort - else - local.get $1 - local.get $3 - local.get $2 - call $~lib/util/sort/weakHeapSort - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.get $4 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__retain - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 7200 - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/array/Array#constructor - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_s - if - local.get $2 - local.get $1 - local.get $0 - i32.const 1 - i32.sub - local.get $1 - i32.sub - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - ) - (func $~lib/math/NativeMath.random (result f64) - (local $0 i64) - (local $1 i64) - global.get $~lib/math/random_seeded - i32.eqz - if - call $~lib/builtins/seed - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - end - global.get $~lib/math/random_state0_64 - local.set $0 - global.get $~lib/math/random_state1_64 - local.tee $1 - global.set $~lib/math/random_state0_64 - local.get $1 - local.get $0 - local.get $0 - i64.const 23 - i64.shl - i64.xor - local.tee $0 - local.get $0 - i64.const 17 - i64.shr_u - i64.xor - i64.xor - local.get $1 - i64.const 26 - i64.shr_u - i64.xor - global.set $~lib/math/random_state1_64 - local.get $1 - i64.const 12 - i64.shr_u - i64.const 4607182418800017408 - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - ) - (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/array/Array#constructor - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_s - if - local.get $2 - local.get $1 - call $~lib/math/NativeMath.random - local.get $0 - f64.convert_i32_s - f64.mul - i32.trunc_f64_s - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - ) - (func $std/array/assertSorted (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) - block $__inlined_func$std/array/isSorted (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $3 - call $~lib/array/Array#sort - local.tee $5 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 1 - local.set $1 - local.get $0 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.get $0 - local.get $1 - call $~lib/array/Array#__get - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 0 - br $__inlined_func$std/array/isSorted - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/array/assertSortedDefault (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 7424 - call $std/array/assertSorted - i32.const 7424 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.sub - ) - (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1504 - i32.const 1088 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $2 - call $~lib/rt/pure/__retain - local.tee $3 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - local.tee $1 - i32.ne - if - local.get $0 - local.get $3 - call $~lib/rt/pure/__retain - i32.store - local.get $1 - call $~lib/rt/pure/__release - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/array/createReverseOrderedNestedArray (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 16 - i32.const 22 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $4 - i32.const 0 - i32.store - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=12 - i32.const 8 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $1 - i32.const 0 - i32.const 8 - call $~lib/memory/memory.fill - local.get $1 - local.set $0 - local.get $1 - local.get $4 - i32.load - local.tee $2 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $4 - local.get $0 - i32.store - local.get $4 - local.get $1 - i32.store offset=4 - local.get $4 - i32.const 8 - i32.store offset=8 - local.get $4 - i32.const 2 - i32.store offset=12 - loop $for-loop|0 - local.get $3 - i32.const 2 - i32.lt_s - if - i32.const 1 - call $~lib/array/Array#constructor - local.tee $1 - i32.const 0 - i32.const 1 - local.get $3 - i32.sub - call $~lib/array/Array#__set - local.get $4 - local.get $3 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $4 - ) - (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - local.get $1 - i32.const 0 - call $~lib/array/Array#__get - i32.sub - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $6 - loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $4 - local.get $6 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store - local.get $2 - i32.const 1 - i32.sub - else - local.get $4 - call $~lib/rt/pure/__release - br $while-break|1 - end - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - br $while-continue|1 - end - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $0 - i32.load offset=4 - local.set $2 - local.get $3 - i32.const 2 - i32.eq - if - local.get $2 - i32.load offset=4 - call $~lib/rt/pure/__retain - local.set $3 - local.get $2 - i32.load - call $~lib/rt/pure/__retain - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $4 - i32.store offset=4 - local.get $2 - local.get $3 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $2 - local.get $3 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $2 - call $~lib/util/sort/insertionSort<~lib/array/Array> - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/array/assertSorted<~lib/array/Array> (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) - block $__inlined_func$std/array/isSorted<~lib/array/Array> (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $6 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - call $~lib/array/Array<~lib/array/Array>#sort - local.tee $7 - call $~lib/rt/pure/__retain - local.set $0 - local.get $5 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 1 - local.set $1 - local.get $0 - i32.load offset=12 - local.set $8 - loop $for-loop|0 - local.get $1 - local.get $8 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $1 - call $~lib/array/Array#__get - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/array/Array> - end - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $std/array/createReverseOrderedElementsArray (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 16 - i32.const 25 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $4 - i32.const 0 - i32.store - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=12 - i32.const 2048 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $1 - i32.const 0 - i32.const 2048 - call $~lib/memory/memory.fill - local.get $1 - local.set $0 - local.get $1 - local.get $4 - i32.load - local.tee $2 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $4 - local.get $0 - i32.store - local.get $4 - local.get $1 - i32.store offset=4 - local.get $4 - i32.const 2048 - i32.store offset=8 - local.get $4 - i32.const 512 - i32.store offset=12 - loop $for-loop|0 - local.get $3 - i32.const 512 - i32.lt_s - if - i32.const 4 - i32.const 24 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 511 - local.get $3 - i32.sub - i32.store - local.get $4 - local.get $3 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $4 - ) - (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load - local.get $1 - i32.load - i32.sub - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - if - local.get $3 - i32.load16_u - local.tee $0 - local.get $1 - i32.load16_u - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - local.get $6 - i32.sub - return - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - block $folding-inner0 - i32.const 1 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eqz - i32.const 1 - local.get $0 - i32.eqz - local.get $0 - local.get $1 - i32.eq - select - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.set $2 - i32.const 0 - local.get $1 - call $~lib/string/String#get:length - local.tee $3 - i32.eqz - local.get $2 - select - br_if $folding-inner0 - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const -1 - return - end - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $std/array/isArraysEqual<~lib/string/String|null> (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $1 - i32.load offset=12 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $3 - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.set $4 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $6 - local.get $4 - call $~lib/rt/pure/__retain - local.tee $7 - call $~lib/string/String.__eq - i32.eqz - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - i32.const 0 - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - ) - (func $~lib/array/Array<~lib/string/String>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 29 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 268435452 - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.tee $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $2 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $3 - local.get $2 - local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $__inlined_func$~lib/string/String#concat (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 7984 - local.get $2 - select - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - i32.eqz - if - local.get $0 - i32.const 7984 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 7984 - local.set $0 - end - local.get $3 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.tee $4 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.tee $6 - i32.add - local.tee $1 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - i32.const 7840 - br $__inlined_func$~lib/string/String#concat - end - local.get $1 - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - local.get $3 - local.get $4 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.add - local.get $0 - local.get $6 - call $~lib/memory/memory.copy - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - end - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - i32.const 0 - local.get $2 - i32.lt_s - select - local.tee $3 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - local.tee $1 - local.get $3 - local.get $1 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - local.get $1 - local.get $3 - local.get $1 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $1 - i32.sub - local.tee $3 - i32.eqz - if - i32.const 7840 - return - end - i32.const 0 - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.eq - local.get $1 - select - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $3 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/string/joinBooleanArray (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) - i32.const 8144 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $4 - i32.eqz - if - i32.const 8080 - i32.const 8112 - local.get $0 - i32.load8_u - select - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - call $~lib/string/String#get:length - local.tee $5 - i32.const 5 - i32.add - i32.mul - i32.const 5 - i32.add - local.tee $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|1 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $0 - local.get $6 - i32.add - i32.load8_u - local.tee $9 - i32.eqz - i32.const 4 - i32.add - local.set $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 8080 - i32.const 8112 - local.get $9 - select - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $7 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.tee $4 - i32.eqz - i32.const 4 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 8080 - i32.const 8112 - local.get $4 - select - local.get $0 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $do-continue|0 - local.get $1 - i32.const 10 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 - local.get $1 - br_if $do-continue|0 - end - ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - i32.const 8448 - return - end - local.get $0 - i32.const 31 - i32.shr_u - local.tee $1 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $3 - call $~lib/util/number/utoa_dec_simple - local.get $1 - if - local.get $2 - i32.const 45 - i32.store16 - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $0 - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $2 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $4 - i32.eqz - if - local.get $0 - i32.load - call $~lib/util/number/itoa32 - local.get $2 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $2 - call $~lib/string/String#get:length - local.tee $5 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.set $3 - local.get $5 - if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $5 - i32.add - local.set $3 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/utoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - i32.const 8448 - return - end - local.get $0 - call $~lib/util/number/decimalCount32 - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount32 - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $0 - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $2 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $4 - i32.eqz - if - local.get $0 - i32.load - call $~lib/util/number/utoa32 - local.get $2 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $2 - call $~lib/string/String#get:length - local.tee $5 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.set $3 - local.get $5 - if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $5 - i32.add - local.set $3 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i64) - (local $11 i32) - (local $12 i64) - (local $13 i64) - local.get $3 - local.get $1 - i64.sub - local.set $8 - local.get $3 - i64.const 1 - i32.const 0 - local.get $4 - i32.sub - local.tee $11 - i64.extend_i32_s - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $12 - i64.and - local.set $7 - local.get $3 - local.get $11 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $9 - loop $while-continue|0 - local.get $9 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $9 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $2 - i32.const 1000000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100 - i32.div_u - local.set $4 - local.get $2 - i32.const 100 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10 - i32.div_u - local.set $4 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - local.set $4 - i32.const 0 - local.set $2 - br $break|1 - end - i32.const 0 - local.set $4 - end - local.get $4 - local.get $6 - i32.or - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $7 - local.get $2 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - i64.shl - i64.add - local.tee $1 - local.get $5 - i64.le_u - if - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 2 - i32.shl - i32.const 9896 - i32.add - i64.load32_u - local.get $11 - i64.extend_i32_s - i64.shl - local.set $10 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|3 - i32.const 1 - local.get $8 - local.get $1 - i64.sub - local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $10 - i64.ge_u - i32.const 0 - local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - return - end - br $while-continue|0 - end - end - local.get $11 - i64.extend_i32_s - local.set $13 - loop $while-continue|4 (result i32) - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $7 - i64.const 10 - i64.mul - local.tee $3 - local.get $13 - i64.shr_u - local.tee $1 - local.get $6 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $3 - local.get $12 - i64.and - local.tee $7 - local.get $5 - i64.ge_u - br_if $while-continue|4 - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - local.get $8 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 9896 - i32.add - i64.load32_u - i64.mul - local.set $8 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|6 - i32.const 1 - local.get $8 - local.get $1 - i64.sub - local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $10 - i64.ge_u - i32.const 0 - local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|6 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 - i32.const -6 - local.get $3 - i32.lt_s - select - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.add - end - end - end - end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - f64.const 0 - f64.lt - local.tee $9 - if (result f64) - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - else - local.get $1 - end - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $2 - i64.const 4503599627370495 - i64.and - i64.add - local.tee $3 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $4 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.tee $8 - i32.const 1 - i32.sub - local.get $4 - i32.sub - local.set $4 - local.get $3 - local.get $3 - i64.const 4503599627370496 - i64.eq - i32.const 1 - i32.add - local.tee $10 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $8 - local.get $10 - i32.sub - local.get $4 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $4 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_f64_s - local.tee $4 - local.get $4 - f64.convert_i32_s - local.get $1 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - local.tee $10 - i32.sub - global.set $~lib/util/number/_K - local.get $10 - i32.const 9024 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $4 - i32.const 1 - i32.shl - i32.const 9720 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $6 - i64.const 4294967295 - i64.and - local.set $2 - local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_plus - local.tee $5 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $5 - i64.const 4294967295 - i64.and - local.tee $5 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $5 - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - local.get $3 - local.get $3 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $8 - local.get $0 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $4 - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $6 - global.get $~lib/util/number/_frc_minus - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $5 - i64.mul - local.get $2 - local.get $5 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $2 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $3 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul - local.get $3 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $9 - call $~lib/util/number/genDigits - local.get $9 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $9 - i32.add - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - local.get $1 - f64.const 0 - f64.eq - if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - return - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne - if - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - return - else - local.get $1 - f64.const 0 - f64.lt - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $2 - i32.const 8 - i32.add - return - end - unreachable - end - local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core - ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 8864 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $5 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $5 - i32.eqz - if - block $__inlined_func$~lib/util/number/dtoa - local.get $0 - f64.load - local.tee $4 - f64.const 0 - f64.eq - if - i32.const 8896 - local.set $0 - br $__inlined_func$~lib/util/number/dtoa - end - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.ne - if - local.get $4 - local.get $4 - f64.ne - if - i32.const 8928 - local.set $0 - br $__inlined_func$~lib/util/number/dtoa - end - i32.const 8960 - i32.const 9008 - local.get $4 - f64.const 0 - f64.lt - select - call $~lib/rt/pure/__retain - local.set $0 - br $__inlined_func$~lib/util/number/dtoa - end - i32.const 56 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $4 - call $~lib/util/number/dtoa_core - local.tee $0 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - br $__inlined_func$~lib/util/number/dtoa - end - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - call $~lib/rt/tlsf/maybeInitialize - local.get $1 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - return - end - local.get $5 - local.get $3 - call $~lib/string/String#get:length - local.tee $6 - i32.const 28 - i32.add - i32.mul - i32.const 28 - i32.add - local.tee $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $7 - local.get $5 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $6 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $6 - i32.add - local.set $2 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $8 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/util/string/joinReferenceArray<~lib/string/String|null> (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.get $2 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - local.get $5 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $6 - i32.eqz - if - local.get $0 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - end - local.get $3 - if (result i32) - local.get $3 - call $~lib/rt/pure/__retain - else - i32.const 7840 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - return - end - i32.const 7840 - local.set $1 - local.get $5 - call $~lib/string/String#get:length - local.set $8 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - local.get $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $4 - if - local.get $4 - call $~lib/rt/pure/__retain - local.tee $2 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $9 - local.tee $2 - local.get $1 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $8 - if - local.get $1 - local.tee $2 - local.get $5 - call $~lib/string/String.__concat - local.tee $7 - local.tee $1 - local.get $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - local.get $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $3 - local.tee $2 - local.get $1 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array<~lib/string/String|null>#join (param $0 i32) (param $1 i32) (result i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/string/String|null> - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/joinReferenceArray (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) - i32.const 8144 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - local.get $5 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $6 - i32.eqz - if - local.get $0 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 10112 - i32.const 7840 - local.get $3 - select - return - end - i32.const 7840 - local.set $1 - local.get $5 - call $~lib/string/String#get:length - local.set $8 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $4 - if - local.get $1 - local.get $1 - i32.const 10112 - call $~lib/string/String.__concat - local.tee $7 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $8 - if - local.get $1 - local.tee $2 - local.get $5 - call $~lib/string/String.__concat - local.tee $7 - local.tee $1 - local.get $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $4 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $0 - if - local.get $1 - local.get $1 - i32.const 10112 - call $~lib/string/String.__concat - local.tee $4 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray - i32.const 8144 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $2 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.tee $2 - call $~lib/util/number/decimalCount32 - i32.add - local.set $1 - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 8144 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $4 - i32.eqz - if - local.get $0 - i32.load8_s - call $~lib/util/number/itoa32 - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - call $~lib/string/String#get:length - local.tee $5 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $1 - i32.const 65535 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 8144 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $4 - i32.eqz - if - local.get $0 - i32.load16_u - call $~lib/util/number/utoa32 - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - call $~lib/string/String#get:length - local.tee $5 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 - i64.const 1000000000000000 - i64.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - loop $do-continue|0 - local.get $1 - i64.const 10 - i64.rem_u - i32.wrap_i64 - local.set $3 - local.get $1 - i64.const 10 - i64.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 - local.get $1 - i64.const 0 - i64.ne - br_if $do-continue|0 - end - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $0 - local.get $1 - i64.const 48 - i64.or - i64.store16 - i32.const 1 - return - end - local.get $1 - i64.const 4294967295 - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.tee $3 - call $~lib/util/number/decimalCount32 - local.set $2 - local.get $0 - local.get $3 - local.get $2 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount64High - local.tee $2 - call $~lib/util/number/utoa_dec_simple - end - local.get $2 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 8144 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $4 - i32.eqz - if - block $__inlined_func$~lib/util/number/utoa64 (result i32) - i32.const 8448 - local.get $0 - i64.load - local.tee $5 - i64.eqz - br_if $__inlined_func$~lib/util/number/utoa64 - drop - local.get $5 - i64.const 4294967295 - i64.le_u - if - local.get $5 - i32.wrap_i64 - local.tee $1 - call $~lib/util/number/decimalCount32 - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa_dec_simple - else - local.get $5 - call $~lib/util/number/decimalCount64High - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $5 - local.get $1 - call $~lib/util/number/utoa_dec_simple - end - local.get $0 - call $~lib/rt/pure/__retain - end - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - call $~lib/string/String#get:length - local.tee $6 - i32.const 20 - i32.add - i32.mul - i32.const 20 - i32.add - local.tee $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $7 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $6 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $6 - i32.add - local.set $2 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $8 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i64.const 0 - i64.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i64.const 0 - local.get $1 - i64.sub - local.set $1 - end - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 48 - i64.or - i64.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $1 - i64.const 4294967295 - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.tee $3 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $2 - local.get $0 - local.get $3 - local.get $2 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount64High - local.get $2 - i32.add - local.tee $2 - call $~lib/util/number/utoa_dec_simple - end - local.get $2 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 8144 - call $~lib/rt/pure/__retain - local.set $4 - local.get $1 - i32.const 1 - i32.sub - local.tee $5 - i32.const 0 - i32.lt_s - if - local.get $4 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $5 - i32.eqz - if - block $__inlined_func$~lib/util/number/itoa64 (result i32) - i32.const 8448 - local.get $0 - i64.load - i32.wrap_i64 - i64.extend_i32_s - local.tee $3 - i64.eqz - br_if $__inlined_func$~lib/util/number/itoa64 - drop - local.get $3 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $0 - if - i64.const 0 - local.get $3 - i64.sub - local.set $3 - end - local.get $3 - i64.const 4294967295 - i64.le_u - if - local.get $3 - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.get $0 - i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $2 - local.get $5 - call $~lib/util/number/utoa_dec_simple - else - local.get $3 - call $~lib/util/number/decimalCount64High - local.get $0 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 - local.get $2 - call $~lib/util/number/utoa_dec_simple - end - local.get $0 - if - local.get $1 - i32.const 45 - i32.store16 - end - local.get $1 - call $~lib/rt/pure/__retain - end - local.get $4 - call $~lib/rt/pure/__release - return - end - local.get $5 - local.get $4 - call $~lib/string/String#get:length - local.tee $6 - i32.const 21 - i32.add - i32.mul - i32.const 21 - i32.add - local.tee $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $7 - local.get $5 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $6 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $4 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $6 - i32.add - local.set $2 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $8 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) - local.get $0 - i32.const 8144 - call $~lib/array/Array<~lib/string/String|null>#join - ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (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) - i32.const 8144 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - local.get $5 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $6 - i32.eqz - if - local.get $0 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - end - local.get $3 - if (result i32) - local.get $3 - i32.const 8144 - call $~lib/array/Array#join - else - i32.const 7840 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - return - end - i32.const 7840 - local.set $1 - local.get $5 - call $~lib/string/String#get:length - local.set $8 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $4 - if - local.get $4 - i32.const 8144 - call $~lib/array/Array#join - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $9 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $8 - if - local.get $1 - local.tee $2 - local.get $5 - call $~lib/string/String.__concat - local.tee $7 - local.tee $1 - local.get $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $4 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $0 - if - local.get $0 - i32.const 8144 - call $~lib/array/Array#join - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $3 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 255 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $1 - i32.const 255 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $2 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $4 - i32.eqz - if - local.get $0 - i32.load8_u - call $~lib/util/number/utoa32 - local.get $2 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $2 - call $~lib/string/String#get:length - local.tee $5 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.set $3 - local.get $5 - if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $5 - i32.add - local.set $3 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 8144 - call $~lib/array/Array#join - ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (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) - i32.const 8144 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - local.get $5 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $6 - i32.eqz - if - local.get $0 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - end - local.get $3 - if (result i32) - local.get $3 - i32.const 8144 - call $~lib/array/Array#join - else - i32.const 7840 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - return - end - i32.const 7840 - local.set $1 - local.get $5 - call $~lib/string/String#get:length - local.set $8 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $4 - if - local.get $4 - i32.const 8144 - call $~lib/array/Array#join - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $9 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $8 - if - local.get $1 - local.tee $2 - local.get $5 - call $~lib/string/String.__concat - local.tee $7 - local.tee $1 - local.get $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $4 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $0 - if - local.get $0 - i32.const 8144 - call $~lib/array/Array#join - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $3 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 8144 - call $~lib/array/Array#join - ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (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) - i32.const 8144 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - local.get $5 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $6 - i32.eqz - if - local.get $0 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - end - local.get $3 - if (result i32) - local.get $3 - i32.const 8144 - call $~lib/array/Array#join - else - i32.const 7840 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - return - end - i32.const 7840 - local.set $1 - local.get $5 - call $~lib/string/String#get:length - local.set $8 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $4 - if - local.get $4 - i32.const 8144 - call $~lib/array/Array#join - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $9 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $8 - if - local.get $1 - local.tee $2 - local.get $5 - call $~lib/string/String.__concat - local.tee $7 - local.tee $1 - local.get $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $4 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $0 - if - local.get $0 - i32.const 8144 - call $~lib/array/Array#join - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $3 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - i32.const 8144 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (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) - i32.const 8144 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - local.get $5 - call $~lib/rt/pure/__release - i32.const 7840 - return - end - local.get $6 - i32.eqz - if - local.get $0 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - end - local.get $3 - if (result i32) - local.get $3 - call $~lib/array/Array<~lib/array/Array>#toString - else - i32.const 7840 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - return - end - i32.const 7840 - local.set $1 - local.get $5 - call $~lib/string/String#get:length - local.set $8 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $4 - if - local.get $1 - local.get $1 - local.get $4 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $7 - call $~lib/string/String.__concat - local.tee $9 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $8 - if - local.get $1 - local.tee $2 - local.get $5 - call $~lib/string/String.__concat - local.tee $7 - local.tee $1 - local.get $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $4 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $0 - if - local.get $1 - local.get $1 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $4 - call $~lib/string/String.__concat - local.tee $3 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=12 - local.set $5 - local.get $0 - i32.load offset=4 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=12 - else - i32.const 0 - end - local.get $3 - i32.add - local.set $3 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $3 - i32.const 2 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $3 - i32.store offset=12 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=4 - local.get $0 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - if - local.get $1 - local.get $4 - i32.add - local.get $3 - i32.load offset=4 - local.get $3 - i32.load offset=8 - local.tee $3 - call $~lib/memory/memory.copy - local.get $1 - local.get $3 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat (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.get $0 - i32.load offset=12 - local.set $6 - local.get $0 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=12 - else - i32.const 0 - end - local.get $3 - i32.add - local.set $3 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $3 - i32.const 2 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $0 - i32.const 16 - i32.const 27 - call $~lib/rt/tlsf/__alloc - local.tee $4 - local.get $3 - i32.store offset=12 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $5 - if - local.get $0 - local.get $1 - i32.add - local.get $5 - i32.load offset=4 - local.get $5 - i32.load offset=8 - local.tee $5 - call $~lib/memory/memory.copy - local.get $1 - local.get $5 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - i32.const 0 - local.set $2 - loop $for-loop|2 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end - end - local.get $4 - call $~lib/rt/pure/__retain - ) - (func $start:std/array - (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) - (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 f32) - (local $31 f64) - (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) - i32.const 0 - call $~lib/array/Array#constructor - global.set $std/array/arr - i32.const 0 - call $~lib/array/Array.isArray<~lib/array/Array|null> - if - i32.const 0 - i32.const 1296 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $std/array/Ref#constructor - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $2 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $2 - end - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - i32.const 1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/memory/memory.fill - local.get $0 - local.tee $3 - local.get $2 - i32.load - local.tee $1 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $3 - i32.store - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.store offset=8 - global.get $std/array/arr - call $~lib/array/Array.isArray<~lib/array/Array|null> - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 52 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1440 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1472 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1568 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1600 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1632 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1664 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1696 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1744 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 79 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1792 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1840 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1888 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 88 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1936 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 91 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.load offset=12 - if - i32.const 0 - i32.const 1296 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - if - i32.const 0 - i32.const 1296 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 102 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - if - i32.const 0 - i32.const 1296 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.load offset=12 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 115 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 44 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 45 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 127 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 128 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 129 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 130 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 131 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=4 - local.tee $0 - i32.const 0 - call $std/array/Ref#constructor - i32.store - local.get $0 - i32.const 0 - call $std/array/Ref#constructor - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/array/Array#set:length - local.get $1 - i32.load offset=12 - if - i32.const 0 - i32.const 1296 - i32.const 139 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - call $~lib/array/Array#constructor - local.set $4 - global.get $std/array/arr - local.get $4 - call $~lib/array/Array#concat - local.set $1 - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 148 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 149 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 150 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2032 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/array/Array#concat - call $~lib/rt/pure/__release - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 153 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 155 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 156 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 157 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 46 - call $~lib/array/Array#push - drop - local.get $4 - i32.const 47 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.get $4 - call $~lib/array/Array#concat - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 164 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.load offset=12 - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 169 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 3 - call $~lib/array/Array#__get - i32.const 46 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 170 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 4 - call $~lib/array/Array#__get - i32.const 47 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 171 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/array/Array#pop - drop - local.get $6 - i32.load offset=12 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 174 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2048 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 - if - i32.const 0 - i32.const 1296 - i32.const 182 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - global.get $std/array/arr - call $~lib/array/Array#concat - local.set $1 - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 184 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=12 - if - i32.const 0 - i32.const 1296 - i32.const 185 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2064 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 3 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.tee $21 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2112 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $22 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 192 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2160 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.const 3 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.tee $23 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2208 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $24 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 194 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2256 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 1 - i32.const 2 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.tee $11 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2304 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $17 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 196 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2352 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - local.tee $0 - i32.const 2 - i32.const 2 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.tee $18 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2400 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $19 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 198 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2448 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - local.tee $0 - i32.const 0 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $12 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2496 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $13 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 200 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2544 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - local.tee $0 - i32.const 1 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $14 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2592 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $15 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 202 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2640 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - local.tee $0 - i32.const 1 - i32.const 2 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $16 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2688 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 204 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2736 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - local.tee $0 - i32.const 0 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.tee $10 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2784 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 206 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2832 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - local.tee $0 - i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/array/Array#copyWithin - local.tee $7 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2880 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 208 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2928 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - local.tee $0 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/array/Array#copyWithin - local.tee $5 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2976 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 210 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3024 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - local.tee $0 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/array/Array#copyWithin - local.tee $4 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3072 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 212 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3120 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $20 - local.get $0 - call $~lib/rt/pure/__release - local.get $20 - i32.const -4 - i32.const -3 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.tee $1 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3168 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 214 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 42 - call $~lib/array/Array#unshift - drop - global.get $std/array/arr - i32.load offset=12 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 222 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 223 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 224 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 225 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 226 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 227 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 41 - call $~lib/array/Array#unshift - drop - global.get $std/array/arr - i32.load offset=12 - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 231 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 232 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 41 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 233 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 234 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 235 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 236 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4 - call $~lib/array/Array#__get - i32.const 45 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 237 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#shift - global.set $std/array/i - global.get $std/array/i - i32.const 41 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 246 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 247 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 248 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 249 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 250 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 251 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 252 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - global.set $std/array/i - global.get $std/array/i - i32.const 45 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 256 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 257 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 258 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 259 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 260 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 261 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#reverse - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 269 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 270 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 271 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 272 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 273 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 44 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 44 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - if - i32.const 0 - i32.const 1296 - i32.const 283 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 286 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 45 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 289 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 292 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 295 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 298 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -4 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 301 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 304 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 1 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 307 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 310 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 9 - i32.const 3216 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - local.set $0 - i32.const 0 - local.set $3 - block $__inlined_func$~lib/array/Array#indexOf - i32.const 0 - local.get $6 - i32.load offset=12 - local.tee $1 - i32.ge_s - i32.const 1 - local.get $1 - select - if - i32.const -1 - local.set $3 - br $__inlined_func$~lib/array/Array#indexOf - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $3 - local.get $1 - i32.lt_s - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - f32.load - f32.const nan:0x400000 - f32.eq - br_if $__inlined_func$~lib/array/Array#indexOf - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|0 - end - end - i32.const -1 - local.set $3 - end - local.get $3 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 312 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 3 - i32.const 10 - i32.const 3248 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - local.set $0 - i32.const 0 - local.set $3 - block $__inlined_func$~lib/array/Array#indexOf - i32.const 0 - local.get $4 - i32.load offset=12 - local.tee $1 - i32.ge_s - i32.const 1 - local.get $1 - select - if - i32.const -1 - local.set $3 - br $__inlined_func$~lib/array/Array#indexOf - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|019 - local.get $3 - local.get $1 - i32.lt_s - if - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - f64.const nan:0x8000000000000 - f64.eq - br_if $__inlined_func$~lib/array/Array#indexOf - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|019 - end - end - i32.const -1 - local.set $3 - end - local.get $3 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 313 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 44 - i32.const 0 - call $~lib/array/Array#includes - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 320 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - i32.const 0 - call $~lib/array/Array#includes - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 45 - i32.const 0 - call $~lib/array/Array#includes - if - i32.const 0 - i32.const 1296 - i32.const 326 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 100 - call $~lib/array/Array#includes - if - i32.const 0 - i32.const 1296 - i32.const 329 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -100 - call $~lib/array/Array#includes - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 332 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -2 - call $~lib/array/Array#includes - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 335 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -4 - call $~lib/array/Array#includes - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 338 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 0 - call $~lib/array/Array#includes - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 341 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 1 - call $~lib/array/Array#includes - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 2 - call $~lib/array/Array#includes - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 347 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - block $__inlined_func$~lib/array/Array#includes (result i32) - i32.const 0 - local.set $2 - i32.const 0 - i32.const 0 - i32.const 1 - i32.const 2 - i32.const 9 - i32.const 3280 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - i32.load offset=12 - local.tee $1 - i32.ge_s - i32.const 1 - local.get $1 - select - br_if $__inlined_func$~lib/array/Array#includes - drop - local.get $6 - i32.load offset=4 - local.set $0 - loop $while-continue|020 - local.get $2 - local.get $1 - i32.lt_s - if - i32.const 1 - i32.const 1 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $30 - local.get $30 - f32.ne - local.get $30 - f32.const nan:0x400000 - f32.eq - select - br_if $__inlined_func$~lib/array/Array#includes - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|020 - end - end - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 349 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - block $__inlined_func$~lib/array/Array#includes (result i32) - i32.const 0 - local.set $3 - i32.const 0 - i32.const 0 - i32.const 1 - i32.const 3 - i32.const 10 - i32.const 3312 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=12 - local.tee $1 - i32.ge_s - i32.const 1 - local.get $1 - select - br_if $__inlined_func$~lib/array/Array#includes - drop - local.get $4 - i32.load offset=4 - local.set $0 - loop $while-continue|021 - local.get $3 - local.get $1 - i32.lt_s - if - i32.const 1 - i32.const 1 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $31 - local.get $31 - f64.ne - local.get $31 - f64.const nan:0x8000000000000 - f64.eq - select - br_if $__inlined_func$~lib/array/Array#includes - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|021 - end - end - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 350 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - i32.const 1 - call $~lib/array/Array#splice - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.load offset=12 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 354 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 355 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 356 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 357 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3344 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2147483647 - call $~lib/array/Array#splice - local.tee $35 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3392 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $36 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 364 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 3440 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $37 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3456 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/array/Array#splice - local.tee $38 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 3504 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $39 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 368 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3520 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $40 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 369 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3568 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 2 - i32.const 2147483647 - call $~lib/array/Array#splice - local.tee $41 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 3616 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $42 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 372 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 3648 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $43 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 373 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3680 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 2 - i32.const 2 - call $~lib/array/Array#splice - local.tee $44 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 3728 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $45 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 376 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 3760 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $46 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 377 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3792 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/array/Array#splice - local.tee $47 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 3840 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $48 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 380 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 3872 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $49 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 381 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3904 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const -1 - i32.const 2147483647 - call $~lib/array/Array#splice - local.tee $50 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 3952 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $51 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 384 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 3984 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $52 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 385 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4016 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#splice - local.tee $53 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 4064 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $54 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 4096 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $55 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4128 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const -2 - i32.const 1 - call $~lib/array/Array#splice - local.tee $56 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 4176 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $57 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 4208 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $26 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4240 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const -7 - i32.const 1 - call $~lib/array/Array#splice - local.tee $27 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 4288 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $20 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 396 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 4320 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $21 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 397 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4352 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const -2 - i32.const -1 - call $~lib/array/Array#splice - local.tee $22 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4400 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $23 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 400 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4416 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $24 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 401 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4464 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 1 - i32.const -2 - call $~lib/array/Array#splice - local.tee $11 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4512 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $17 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 404 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4528 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $18 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 405 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4576 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 4 - i32.const 0 - call $~lib/array/Array#splice - local.tee $19 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4624 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $12 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 408 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4640 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $13 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 409 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4688 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 7 - i32.const 0 - call $~lib/array/Array#splice - local.tee $14 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4736 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $15 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 412 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4752 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $16 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4800 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 7 - i32.const 5 - call $~lib/array/Array#splice - local.tee $2 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4848 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $10 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4864 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 8 - i32.const 4912 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 1 - call $~lib/array/Array#splice - local.tee $1 - i32.load offset=12 - if - i32.const 0 - i32.const 1296 - i32.const 421 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=12 - if - i32.const 0 - i32.const 1296 - i32.const 422 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $25 - i32.load offset=4 - local.tee $4 - i32.const 1 - call $std/array/Ref#constructor - i32.store - local.get $4 - i32.const 2 - call $std/array/Ref#constructor - i32.store offset=4 - local.get $4 - i32.const 3 - call $std/array/Ref#constructor - i32.store offset=8 - local.get $4 - i32.const 4 - call $std/array/Ref#constructor - i32.store offset=12 - local.get $4 - i32.const 5 - call $std/array/Ref#constructor - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $25 - i32.const 2 - call $~lib/array/Array#splice - local.set $29 - local.get $1 - call $~lib/rt/pure/__release - local.get $29 - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 427 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $29 - i32.const 0 - call $~lib/array/Array#__get - local.tee $7 - i32.load - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 428 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $29 - i32.const 1 - call $~lib/array/Array#__get - local.tee $9 - i32.load - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 429 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.load offset=12 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 431 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 0 - call $~lib/array/Array#__get - local.tee $5 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 432 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 1 - call $~lib/array/Array#__get - local.tee $6 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 433 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 2 - call $~lib/array/Array#__get - local.tee $4 - i32.load - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 434 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $28 - i32.load offset=4 - local.tee $1 - i32.const 1 - call $std/array/Ref#constructor - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 2 - call $std/array/Ref#constructor - i32.store offset=8 - local.get $28 - call $~lib/array/Array#splice - local.tee $32 - i32.load offset=12 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 439 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $32 - i32.const 0 - call $~lib/array/Array#__get - local.tee $33 - local.get $33 - i32.eqz - if - i32.const 5040 - i32.const 1296 - i32.const 440 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $28 - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 442 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $28 - i32.const 0 - call $~lib/array/Array#__get - local.tee $3 - if - i32.const 0 - i32.const 1296 - i32.const 443 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $28 - i32.const 1 - call $~lib/array/Array#__get - local.tee $34 - local.get $34 - i32.eqz - if - i32.const 5040 - i32.const 1296 - i32.const 444 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 444 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $55 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 0 - i32.const 0 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 1 - i32.const 1 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 2 - i32.const 2 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 3 - i32.const 3 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 5088 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - if - i32.const 0 - i32.const 1296 - i32.const 457 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5120 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 460 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5152 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5184 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 471 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 472 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5216 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - if - i32.const 0 - i32.const 1296 - i32.const 474 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 5248 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 487 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 488 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 5280 - call $~lib/array/Array#every - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 498 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5312 - call $~lib/array/Array#every - if - i32.const 0 - i32.const 1296 - i32.const 501 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5344 - call $~lib/array/Array#every - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 509 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 510 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5376 - call $~lib/array/Array#every - if - i32.const 0 - i32.const 1296 - i32.const 512 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 5408 - call $~lib/array/Array#every - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 525 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 526 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 5440 - call $~lib/array/Array#some - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 536 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5472 - call $~lib/array/Array#some - if - i32.const 0 - i32.const 1296 - i32.const 539 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5504 - call $~lib/array/Array#some - if - i32.const 0 - i32.const 1296 - i32.const 547 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 548 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5536 - call $~lib/array/Array#some - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 550 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 5568 - call $~lib/array/Array#some - if - i32.const 0 - i32.const 1296 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 5600 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 5632 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 5664 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 406 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 588 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 5696 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 602 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 5728 - call $~lib/array/Array#forEach - global.get $std/array/arr - i32.load offset=12 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 100 - i32.lt_s - if - global.get $std/array/arr - call $~lib/array/Array#pop - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - i32.const 0 - local.set $3 - global.get $std/array/arr - local.tee $9 - i32.load offset=12 - local.tee $6 - i32.const 2 - i32.const 9 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - i32.load offset=4 - local.set $4 - loop $for-loop|039 - local.get $3 - local.get $6 - local.get $9 - i32.load offset=12 - local.tee $0 - local.get $6 - local.get $0 - i32.lt_s - select - i32.lt_s - if - local.get $3 - i32.const 2 - i32.shl - local.tee $1 - local.get $9 - i32.load offset=4 - i32.add - i32.load - local.set $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $4 - i32.add - local.get $0 - local.get $3 - local.get $9 - i32.const 5760 - i32.load - call_indirect (type $i32_i32_i32_=>_f32) - f32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|039 - end - end - i32.const 5760 - call $~lib/rt/pure/__release - local.get $5 - i32.load offset=12 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 642 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 0 - call $~lib/array/Array#__get - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne - if - i32.const 0 - i32.const 1296 - i32.const 643 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 5792 - call $~lib/array/Array#map - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 652 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 653 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 5824 - call $~lib/array/Array#map - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 406 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 660 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 5856 - call $~lib/array/Array#map - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 675 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 676 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - local.get $5 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 5888 - call $~lib/array/Array#filter - local.tee $0 - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 686 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 5920 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 695 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 696 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 5952 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 406 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 703 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 5984 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 718 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 719 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - local.get $0 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 6016 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 729 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 6048 - i32.const 4 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 733 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 6080 - i32.const 0 - call $~lib/array/Array#reduce - i32.const 0 - i32.ne - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 736 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 6112 - i32.const 0 - call $~lib/array/Array#reduce - if - i32.const 0 - i32.const 1296 - i32.const 739 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 6144 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 747 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 748 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 6176 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 750 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 6208 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 763 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 764 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 6240 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 774 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 6272 - i32.const 4 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 778 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 6304 - i32.const 0 - call $~lib/array/Array#reduceRight - i32.const 0 - i32.ne - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 781 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 6336 - i32.const 0 - call $~lib/array/Array#reduceRight - if - i32.const 0 - i32.const 1296 - i32.const 784 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 6368 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 792 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 793 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 6400 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 795 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 6432 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 808 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - if - i32.const 0 - i32.const 1296 - i32.const 809 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - call $~lib/bindings/Math/random - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - i32.const 8 - i32.const 2 - i32.const 9 - i32.const 6704 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $17 - i32.const 0 - global.set $~argumentsLength - local.get $17 - call $~lib/array/Array#sort - i32.const 6752 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $17 - i32.const 8 - i32.const 2 - i32.const 9 - i32.const 6784 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 898 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 3 - i32.const 10 - i32.const 6832 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $18 - i32.const 0 - global.set $~argumentsLength - local.get $18 - call $~lib/array/Array#sort - i32.const 6912 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $18 - i32.const 8 - i32.const 3 - i32.const 10 - i32.const 6944 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 902 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 7024 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $19 - i32.const 0 - global.set $~argumentsLength - local.get $19 - i32.const 7072 - call $~lib/array/Array#sort - i32.const 7072 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $19 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 7104 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 906 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 7152 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $12 - i32.const 0 - global.set $~argumentsLength - local.get $12 - i32.const 0 - call $~lib/array/Array#sort@varargs - call $~lib/rt/pure/__release - local.get $12 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 7232 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 910 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 7280 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $7 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 7296 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $13 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 7328 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $14 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 7360 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $15 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 7392 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $11 - i32.const 64 - call $std/array/createReverseOrderedArray - local.set $16 - i32.const 128 - call $std/array/createReverseOrderedArray - local.set $2 - i32.const 1024 - call $std/array/createReverseOrderedArray - local.set $10 - i32.const 10000 - call $std/array/createReverseOrderedArray - local.set $8 - i32.const 512 - call $std/array/createRandomOrderedArray - local.set $9 - local.get $7 - call $std/array/assertSortedDefault - local.get $13 - call $std/array/assertSortedDefault - local.get $13 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 7456 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 930 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $14 - call $std/array/assertSortedDefault - local.get $14 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 7488 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 933 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $15 - call $std/array/assertSortedDefault - local.get $15 - local.get $11 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 936 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $16 - call $std/array/assertSortedDefault - local.get $16 - local.get $11 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 939 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $std/array/assertSortedDefault - local.get $2 - local.get $11 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 942 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $10 - call $std/array/assertSortedDefault - local.get $10 - local.get $11 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 945 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $std/array/assertSortedDefault - local.get $8 - local.get $11 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 948 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - call $std/array/assertSortedDefault - local.get $17 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 64 - call $std/array/createRandomOrderedArray - local.set $1 - i32.const 257 - call $std/array/createRandomOrderedArray - local.set $0 - local.get $1 - i32.const 7520 - call $std/array/assertSorted - local.get $1 - i32.const 7552 - call $std/array/assertSorted - local.get $0 - i32.const 7584 - call $std/array/assertSorted - local.get $0 - i32.const 7616 - call $std/array/assertSorted - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - call $std/array/createReverseOrderedNestedArray - local.tee $0 - i32.const 7648 - call $std/array/assertSorted<~lib/array/Array> - local.get $0 - call $~lib/rt/pure/__release - call $std/array/createReverseOrderedElementsArray - local.tee $0 - i32.const 7680 - call $std/array/assertSorted<~lib/array/Array> - local.get $0 - call $~lib/rt/pure/__release - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 7856 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $10 - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 7904 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $9 - i32.const 1 - global.set $~argumentsLength - block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) - local.get $10 - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 7952 - call $~lib/rt/pure/__retain - local.tee $4 - call $~lib/array/Array<~lib/array/Array>#sort - local.tee $1 - call $~lib/rt/pure/__retain - local.set $8 - local.get $4 - call $~lib/rt/pure/__retain - local.set $7 - i32.const 1 - local.set $2 - local.get $8 - i32.load offset=12 - local.set $0 - loop $for-loop|00 - local.get $2 - local.get $0 - i32.lt_s - if - local.get $8 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.set $5 - local.get $8 - local.get $2 - call $~lib/array/Array#__get - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $7 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/string/String|null> - end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|00 - end - end - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - i32.const 7952 - call $~lib/rt/pure/__release - local.get $10 - local.get $9 - call $std/array/isArraysEqual<~lib/string/String|null> - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 985 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - i32.const 0 - i32.const 400 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $8 - loop $for-loop|06 - local.get $2 - i32.const 400 - i32.lt_s - if - call $~lib/math/NativeMath.random - f64.const 32 - f64.mul - i32.trunc_f64_s - local.set $5 - i32.const 0 - local.set $7 - i32.const 7840 - local.set $3 - loop $for-loop|049 - local.get $7 - local.get $5 - i32.lt_s - if - local.get $3 - local.tee $1 - local.tee $0 - block $__inlined_func$~lib/string/String#charAt (result i32) - i32.const 7840 - call $~lib/math/NativeMath.random - i32.const 6512 - call $~lib/string/String#get:length - f64.convert_i32_s - f64.mul - f64.floor - i32.trunc_f64_s - local.tee $6 - i32.const 6512 - call $~lib/string/String#get:length - i32.ge_u - br_if $__inlined_func$~lib/string/String#charAt - drop - i32.const 2 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $4 - local.get $6 - i32.const 1 - i32.shl - i32.const 6512 - i32.add - i32.load16_u - i32.store16 - local.get $4 - call $~lib/rt/pure/__retain - end - local.tee $4 - call $~lib/string/String.__concat - local.tee $6 - local.tee $3 - local.get $0 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|049 - end - end - local.get $8 - local.get $2 - local.get $3 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|06 - end - end - i32.const 1 - global.set $~argumentsLength - local.get $8 - i32.const 8016 - call $std/array/assertSorted<~lib/array/Array> - i32.const 8016 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - i32.const 2 - i32.const 0 - i32.const 31 - i32.const 8048 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $12 - i32.load offset=4 - local.get $12 - i32.load offset=12 - call $~lib/util/string/joinBooleanArray - local.set $13 - i32.const 8144 - call $~lib/rt/pure/__release - local.get $13 - i32.const 8176 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 994 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 8224 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $10 - i32.const 7840 - call $~lib/array/Array#join - local.tee $8 - i32.const 8576 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 995 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 7 - i32.const 8608 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - i32.const 8640 - call $~lib/array/Array#join - local.tee $9 - i32.const 8576 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 996 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 8672 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - i32.const 8704 - call $~lib/array/Array#join - local.tee $6 - i32.const 8736 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 997 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 6 - i32.const 3 - i32.const 10 - i32.const 8800 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $14 - i32.load offset=4 - local.get $14 - i32.load offset=12 - call $~lib/util/string/joinFloatArray - local.set $15 - i32.const 8864 - call $~lib/rt/pure/__release - local.get $15 - i32.const 9952 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 998 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 10080 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.const 7840 - call $~lib/array/Array<~lib/string/String|null>#join - local.tee $3 - i32.const 10048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 999 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $16 - i32.load offset=4 - local.tee $0 - i32.const 0 - call $std/array/Ref#constructor - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $std/array/Ref#constructor - i32.store offset=8 - local.get $16 - call $~lib/array/Array#join - local.tee $1 - i32.const 10160 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1001 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=4 - local.tee $0 - i32.const 0 - call $std/array/Ref#constructor - i32.store - local.get $0 - i32.const 0 - call $std/array/Ref#constructor - i32.store offset=4 - local.get $2 - call $~lib/array/Array#join - local.tee $0 - i32.const 10240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1004 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $12 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 10320 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $21 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 10336 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $22 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 10368 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $23 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 10400 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $24 - local.get $21 - i32.const 8144 - call $~lib/array/Array#join - local.tee $0 - local.get $0 - i32.const 7840 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1014 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $22 - i32.const 8144 - call $~lib/array/Array#join - local.tee $0 - local.set $8 - local.get $0 - i32.const 10048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1015 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $23 - i32.const 8144 - call $~lib/array/Array#join - local.tee $0 - local.set $7 - local.get $0 - i32.const 10432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1016 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $24 - i32.const 8144 - call $~lib/array/Array#join - local.tee $0 - local.set $9 - local.get $0 - i32.const 10464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1017 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 0 - i32.const 32 - i32.const 10496 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $11 - i32.load offset=4 - local.get $11 - i32.load offset=12 - call $~lib/util/string/joinIntegerArray - local.set $17 - i32.const 8144 - call $~lib/rt/pure/__release - local.get $17 - i32.const 10528 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1019 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 1 - i32.const 33 - i32.const 10560 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $18 - i32.load offset=4 - local.get $18 - i32.load offset=12 - call $~lib/util/string/joinIntegerArray - local.set $19 - i32.const 8144 - call $~lib/rt/pure/__release - local.get $19 - i32.const 10592 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1020 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 3 - i32.const 34 - i32.const 10640 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $12 - i32.load offset=4 - local.get $12 - i32.load offset=12 - call $~lib/util/string/joinIntegerArray - local.set $13 - i32.const 8144 - call $~lib/rt/pure/__release - local.get $13 - i32.const 10688 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1021 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 3 - i32.const 35 - i32.const 10752 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $14 - i32.load offset=4 - local.get $14 - i32.load offset=12 - call $~lib/util/string/joinIntegerArray - local.set $15 - i32.const 8144 - call $~lib/rt/pure/__release - local.get $15 - i32.const 10800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1022 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 10912 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - i32.const 8144 - call $~lib/array/Array<~lib/string/String|null>#join - local.tee $0 - local.set $6 - local.get $0 - i32.const 10960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1026 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 2 - i32.const 27 - i32.const 11072 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.const 8144 - call $~lib/array/Array<~lib/string/String|null>#join - local.tee $0 - local.set $3 - local.get $0 - i32.const 11104 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1027 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 22 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $26 - i32.load offset=4 - local.tee $0 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 11136 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 11168 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $26 - i32.load offset=4 - local.get $26 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.set $16 - i32.const 8144 - call $~lib/rt/pure/__release - local.get $16 - i32.const 11200 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1030 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 36 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $27 - i32.load offset=4 - local.tee $0 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 11232 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 11264 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $27 - i32.load offset=4 - local.get $27 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.set $2 - i32.const 8144 - call $~lib/rt/pure/__release - local.get $2 - i32.const 11200 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1033 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 38 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $20 - i32.load offset=4 - i32.const 1 - i32.const 2 - i32.const 37 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=4 - i32.const 1 - i32.const 2 - i32.const 7 - i32.const 11296 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.store - local.get $20 - i32.load offset=4 - local.get $20 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> - local.set $0 - i32.const 8144 - call $~lib/rt/pure/__release - local.get $0 - i32.const 10048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1036 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - global.get $std/array/arr - call $~lib/rt/pure/__release - i32.const 4 - i32.const 2 - i32.const 22 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - i32.load offset=4 - local.tee $0 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 11328 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 11360 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $0 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 11392 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=8 - local.get $0 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 11424 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=12 - local.get $5 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $6 - i32.load offset=12 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 1047 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - i32.const 10 - i32.lt_s - if - local.get $6 - local.get $3 - call $~lib/array/Array#__get - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 1049 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - i32.const 4 - i32.const 2 - i32.const 39 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=4 - local.tee $0 - i32.const 1 - i32.const 2 - i32.const 27 - i32.const 11488 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 11584 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $0 - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 11712 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=8 - local.get $0 - i32.const 1 - i32.const 2 - i32.const 27 - i32.const 11776 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=12 - local.get $4 - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat - local.set $7 - i32.const 8 - i32.const 2 - i32.const 27 - i32.const 11808 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $9 - local.get $7 - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 1055 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|2 - local.get $3 - local.get $9 - i32.load offset=12 - i32.lt_s - if - local.get $7 - local.get $3 - call $~lib/array/Array#__get - local.tee $1 - local.get $9 - local.get $3 - call $~lib/array/Array#__get - local.tee $0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 1057 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - i32.const 2 - i32.const 2 - i32.const 22 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=4 - local.tee $0 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 11856 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 11872 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $0 - i32.load offset=12 - if - i32.const 0 - i32.const 1296 - i32.const 1061 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 268435452 - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.tee $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $2 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $3 - local.get $2 - local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.const 0 - local.get $1 - select - local.tee $4 - i32.add - local.tee $2 - i32.const 268435452 - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=4 - local.tee $5 - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/memory/memory.copy - local.get $0 - local.get $5 - i32.add - local.get $1 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $5 - local.get $3 - i32.lt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - i32.const 3 - global.set $~argumentsLength - local.get $3 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $4 - local.get $3 - call $~lib/array/Array#push - drop - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.tee $1 - i32.sub - local.tee $4 - local.get $2 - local.get $4 - i32.lt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $4 - ) - (func $~lib/array/Array#flat (param $0 i32) (result i32) - i32.const 11888 - i32.const 1088 - i32.const 504 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $2 - local.set $3 - local.get $2 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $4 - local.get $3 - i32.lt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - ) - (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $4 - local.get $3 - i32.lt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const -1 - ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1 - i32.add - local.tee $2 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $3 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.const 0 - local.get $1 - select - local.tee $4 - i32.add - local.tee $2 - i32.const 1073741808 - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=4 - local.tee $5 - local.get $0 - i32.load offset=4 - local.get $3 - call $~lib/memory/memory.copy - local.get $3 - local.get $5 - i32.add - local.get $1 - i32.load offset=4 - local.get $4 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $3 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.tee $1 - i32.add - local.get $5 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $2 - i32.add - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 - i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select - end - local.get $2 - i32.sub - local.tee $2 - local.get $4 - local.get $1 - i32.sub - local.tee $1 - local.get $2 - local.get $1 - i32.lt_s - select - call $~lib/memory/memory.copy - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s - if - i32.const 1984 - i32.const 1088 - i32.const 300 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $4 - local.get $3 - i32.lt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $5 - local.get $3 - i32.lt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.add - i32.load8_u - local.set $3 - i32.const 3 - global.set $~argumentsLength - local.get $3 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $4 - local.get $3 - call $~lib/array/Array#push - drop - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#shift (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s - if - i32.const 1984 - i32.const 1088 - i32.const 361 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.tee $2 - i32.load8_u - local.get $2 - local.get $2 - i32.const 1 - i32.add - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - call $~lib/memory/memory.copy - local.get $1 - local.get $2 - i32.add - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $4 - local.get $3 - i32.lt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.tee $2 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.tee $3 - i32.const 1 - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $3 - ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.tee $1 - i32.sub - local.tee $4 - local.get $2 - local.get $4 - i32.lt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.add - local.tee $6 - local.get $2 - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $1 - local.get $5 - i32.add - local.get $3 - local.get $1 - i32.sub - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $4 - ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.tee $1 - if - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - i32.add - local.set $1 - loop $while-continue|0 - local.get $2 - local.get $1 - i32.lt_u - if - local.get $2 - i32.load8_u - local.set $3 - local.get $2 - local.get $1 - i32.load8_u - i32.store8 - local.get $1 - local.get $3 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $while-continue|0 - end - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $5 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $0 - local.get $2 - i32.add - i32.load8_u - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $5 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $3 - i32.const 1 - i32.add - i32.add - local.get $7 - i32.store8 - br $while-continue|1 - end - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.add - local.get $6 - i32.store8 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $6 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $4 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 1 - i32.and - local.get $4 - local.get $2 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $2 - i32.const 1 - i32.shr_s - local.set $2 - br $while-continue|1 - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.shr_s - local.tee $7 - i32.add - i32.load8_u - local.set $2 - local.get $0 - local.get $3 - i32.add - i32.load8_u - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $5 - local.get $6 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $3 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $3 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $3 - i32.add - local.get $2 - i32.store8 - local.get $0 - local.get $7 - i32.add - local.get $5 - i32.store8 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 2 - i32.ge_s - if - local.get $0 - i32.load8_u - local.set $1 - local.get $0 - local.get $0 - local.get $3 - i32.add - local.tee $2 - i32.load8_u - i32.store8 - local.get $2 - local.get $1 - i32.store8 - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load8_u - local.set $2 - local.get $0 - local.get $1 - i32.add - i32.load8_u - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $5 - local.get $6 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.add - local.get $2 - i32.store8 - local.get $0 - local.get $5 - i32.store8 - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|2 - end - end - call $~lib/rt/tlsf/maybeInitialize - local.get $4 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - local.get $0 - i32.load8_u offset=1 - local.set $1 - local.get $0 - local.get $0 - i32.load8_u - i32.store8 offset=1 - local.get $0 - local.get $1 - i32.store8 - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.le_s - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $2 - i32.const 2 - i32.eq - if - local.get $1 - i32.load8_u offset=1 - local.set $2 - local.get $1 - i32.load8_u - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $3 - local.get $4 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $1 - local.get $3 - i32.store8 offset=1 - local.get $1 - local.get $2 - i32.store8 - end - br $folding-inner0 - end - local.get $2 - local.set $3 - local.get $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.const 256 - i32.lt_s - if - local.get $1 - local.get $3 - local.get $2 - call $~lib/util/sort/insertionSort - else - local.get $1 - local.get $3 - local.get $2 - call $~lib/util/sort/weakHeapSort - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.get $4 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__retain - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/string/String>#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=12 - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.lt_s - select - end - local.set $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $1 - local.get $3 - local.get $1 - i32.lt_s - select - end - local.set $1 - loop $for-loop|0 - local.get $2 - local.get $1 - i32.lt_s - if - local.get $4 - local.get $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - i32.ne - if - local.get $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__retain - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/string/String>#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - call $~lib/string/String.__eq - if - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const -1 - ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $1 - call $~lib/rt/pure/__retain - i32.store - local.get $0 - local.get $2 - i32.store offset=12 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/array/Array<~lib/string/String>#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.load offset=12 - i32.const 0 - local.get $1 - select - local.tee $5 - i32.add - local.tee $3 - i32.const 268435452 - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.shl - local.set $2 - local.get $0 - i32.load offset=4 - local.set $0 - loop $for-loop|0 - local.get $4 - local.get $2 - i32.lt_u - if - local.get $3 - local.get $4 - i32.add - local.get $0 - local.get $4 - i32.add - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $4 - i32.const 4 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $2 - local.get $3 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $5 - i32.const 2 - i32.shl - local.set $2 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_u - if - local.get $0 - local.get $4 - i32.add - local.get $0 - local.get $3 - i32.add - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $~lib/array/Array<~lib/string/String>#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=12 - local.tee $4 - local.set $6 - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $6 - i32.lt_s - select - end - local.tee $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 - i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select - end - local.get $2 - i32.sub - local.tee $3 - local.get $4 - local.get $1 - i32.sub - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.tee $3 - i32.add - i32.lt_s - i32.const 0 - local.get $2 - local.get $1 - i32.lt_s - select - if - local.get $2 - local.get $3 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.set $2 - local.get $1 - local.get $4 - i32.add - local.set $1 - loop $while-continue|0 - local.get $3 - if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - local.get $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.ne - if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|0 - end - end - else - loop $while-continue|1 - local.get $3 - if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - local.get $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.ne - if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|1 - end - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array<~lib/string/String>#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s - if - i32.const 1984 - i32.const 1088 - i32.const 300 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - local.get $0 - i32.load offset=12 - local.tee $1 - local.get $5 - local.get $1 - i32.lt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $1 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $0 - local.get $3 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $4 - local.get $1 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array<~lib/string/String>#shift (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s - if - i32.const 1984 - i32.const 1088 - i32.const 361 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.tee $2 - i32.load - call $~lib/rt/pure/__retain - local.get $2 - local.get $2 - i32.const 4 - i32.add - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - local.tee $4 - call $~lib/memory/memory.copy - local.get $2 - local.get $4 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.tee $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.tee $3 - i32.const 4 - i32.add - local.get $3 - local.get $1 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $2 - call $~lib/rt/pure/__retain - i32.store - local.get $0 - local.get $1 - i32.store offset=12 - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array<~lib/string/String>#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $1 - i32.const 0 - local.set $0 - local.get $2 - i32.const 2 - i32.shl - local.set $2 - loop $while-continue|0 - local.get $0 - local.get $2 - i32.lt_u - if - local.get $0 - local.get $4 - i32.add - local.get $0 - local.get $1 - i32.add - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $3 - ) - (func $~lib/array/Array<~lib/string/String>#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.tee $1 - i32.sub - local.tee $4 - local.get $2 - local.get $4 - i32.lt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $4 - ) - (func $~lib/array/Array<~lib/string/String>#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.tee $1 - if - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.set $1 - loop $while-continue|0 - local.get $2 - local.get $1 - i32.lt_u - if - local.get $2 - i32.load - call $~lib/rt/pure/__retain - local.set $3 - local.get $2 - local.get $1 - i32.load - i32.store - local.get $1 - local.get $3 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $1 - i32.const 4 - i32.sub - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - br $while-continue|0 - end - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:std/array - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1248 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $folding-inner0 $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $__inlined_func$~lib/rt/__visit_members $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $0 - i32.load offset=16 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=20 - local.tee $1 - local.get $0 - i32.load offset=28 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $1 - i32.load - local.tee $4 - if - local.get $4 - call $~lib/rt/pure/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - i32.load offset=16 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=20 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1248 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1248 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 11928 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/array/Array#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#constructor - ) - (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - i32.const 2147483647 - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#fill - ) - (func $~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#includes - ) - (func $~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - ) - (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=12 - local.set $2 - end - block $__inlined_func$~lib/array/Array#lastIndexOf - local.get $0 - local.tee $3 - i32.load offset=12 - local.tee $0 - i32.eqz - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf - end - local.get $0 - local.get $2 - i32.add - local.get $0 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $0 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $3 - i32.load offset=4 - local.set $2 - loop $while-continue|0 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - ) - (func $~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#copyWithin - ) - (func $~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const 2147483647 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#slice - ) - (func $~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#splice - ) - (func $~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 8144 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#join - ) - (func $~lib/array/Array#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#constructor - ) - (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - i32.const 2147483647 - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#fill - ) - (func $~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s - ) - (func $~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - ) - (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=12 - local.set $2 - end - block $__inlined_func$~lib/array/Array#lastIndexOf - local.get $0 - local.tee $3 - i32.load offset=12 - local.tee $0 - i32.eqz - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf - end - local.get $0 - local.get $2 - i32.add - local.get $0 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $0 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $3 - i32.load offset=4 - local.set $2 - loop $while-continue|0 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $2 - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - ) - (func $~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#copyWithin - ) - (func $~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const 2147483647 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#slice - ) - (func $~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#splice - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 11952 - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 8144 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#join - ) - (func $~lib/array/Array<~lib/string/String>#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#constructor - ) - (func $~lib/array/Array<~lib/string/String>#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - i32.const 2147483647 - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array<~lib/string/String>#fill - ) - (func $~lib/array/Array<~lib/string/String>#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $2 - call $~lib/array/Array<~lib/string/String>#indexOf - i32.const 0 - i32.ge_s - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/string/String>#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#indexOf - ) - (func $~lib/array/Array<~lib/string/String>#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=12 - local.set $2 - end - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf - local.get $0 - local.tee $3 - i32.load offset=12 - local.tee $0 - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf - end - local.get $0 - local.get $2 - i32.add - local.get $0 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $0 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $3 - i32.load offset=4 - local.set $2 - loop $while-continue|0 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - call $~lib/string/String.__eq - if - local.get $1 - call $~lib/rt/pure/__release - br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf - end - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const -1 - local.set $0 - end - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array<~lib/string/String>#copyWithin - ) - (func $~lib/array/Array<~lib/string/String>#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const 2147483647 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#slice - ) - (func $~lib/array/Array<~lib/string/String>#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#splice - ) - (func $~lib/array/Array<~lib/string/String>#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 11984 - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#sort - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/string/String>#join@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 8144 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String|null>#join - ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) -) diff --git a/tests/compiler/std/array.release.wat b/tests/compiler/std/array.release.wat new file mode 100644 index 0000000000..45106a414b --- /dev/null +++ b/tests/compiler/std/array.release.wat @@ -0,0 +1,30967 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32 i32 i32))) + (type $4 (func (param i32 i32 i32 i32) (result i32))) + (type $5 (func (param f32 f32) (result i32))) + (type $6 (func (param f64 f64) (result i32))) + (type $7 (func (param i32 i32))) + (type $8 (func (param i32))) + (type $9 (func (param i32 i32 i32 i32))) + (type $10 (func (param i32 i32 i32 i32 i32))) + (type $11 (func)) + (type $12 (func (result f64))) + (type $13 (func (param i32 i32 i32 i32 i32 i32))) + (type $14 (func (result i32))) + (type $15 (func (param i32 i32 i32) (result f32))) + (type $16 (func (param i32 f64) (result i32))) + (type $17 (func (param i32 i64) (result i32))) + (type $18 (func (param i32 i32 i64))) + (type $19 (func (param i32 i64 i64 i32 i64 i32) (result i32))) + (type $20 (func (param i32 i64 i32))) + (type $21 (func (param i32 f32 i32 i32))) + (type $22 (func (param i32 i32) (result f32))) + (type $23 (func (param i32 f32 i32))) + (type $24 (func (param i32 i32) (result f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) + (import "env" "seed" (func $~lib/builtins/seed (result f64))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $std/array/arr (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $std/array/i (mut i32) (i32.const 0)) + (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) + (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) + (global $~lib/math/random_seeded (mut i32) (i32.const 0)) + (global $std/array/inputStabArr (mut i32) (i32.const 0)) + (global $std/array/outputStabArr (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 48960)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $1 (i32.const 1084) ",") + (data $1.1 (i32.const 1096) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $2 (i32.const 1132) "<") + (data $2.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $3 (i32.const 1196) "<") + (data $3.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $6 (i32.const 1324) "<") + (data $6.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $7 (i32.const 1388) ",") + (data $7.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $9 (i32.const 1468) "<") + (data $9.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 1532) ",") + (data $10.1 (i32.const 1544) "\02\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $11 (i32.const 1580) "<") + (data $11.1 (i32.const 1592) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $12 (i32.const 1644) "\1c") + (data $12.1 (i32.const 1656) "\02\00\00\00\06\00\00\00a\00b\00c") + (data $13 (i32.const 1676) "\1c") + (data $13.1 (i32.const 1688) "\01\00\00\00\05\00\00\00\01\02\03\04\05") + (data $14 (i32.const 1708) "\1c") + (data $14.1 (i32.const 1720) "\01\00\00\00\05\00\00\00\01\01\01\04\05") + (data $15 (i32.const 1740) "\1c") + (data $15.1 (i32.const 1752) "\01\00\00\00\05") + (data $16 (i32.const 1772) "\1c") + (data $16.1 (i32.const 1784) "\01\00\00\00\05\00\00\00\01\01") + (data $17 (i32.const 1804) "\1c") + (data $17.1 (i32.const 1816) "\01\00\00\00\05\00\00\00\01\01\00\02\02") + (data $18 (i32.const 1836) "\1c") + (data $18.1 (i32.const 1848) "\01\00\00\00\05\00\00\00\01\01\00\02\02") + (data $19 (i32.const 1868) "\1c") + (data $19.1 (i32.const 1880) "\01\00\00\00\05\00\00\00\ff\ff\ff\ff\ff") + (data $20 (i32.const 1900) ",") + (data $20.1 (i32.const 1912) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $21 (i32.const 1948) ",") + (data $21.1 (i32.const 1960) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") + (data $22 (i32.const 1996) ",") + (data $22.1 (i32.const 2008) "\01\00\00\00\14") + (data $23 (i32.const 2044) ",") + (data $23.1 (i32.const 2056) "\01\00\00\00\14\00\00\00\01\00\00\00\01") + (data $24 (i32.const 2092) ",") + (data $24.1 (i32.const 2104) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data $25 (i32.const 2140) ",") + (data $25.1 (i32.const 2152) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data $26 (i32.const 2188) ",") + (data $26.1 (i32.const 2200) "\01\00\00\00\14\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") + (data $27 (i32.const 2236) ",") + (data $27.1 (i32.const 2248) "\01\00\00\00\14\00\00\00\00\00\00?\00\00\80?\00\00\c0?\00\00 @\00\00@@") + (data $28 (i32.const 2284) ",") + (data $28.1 (i32.const 2296) "\01\00\00\00\14\00\00\00\00\00\00?\00\00\80?\00\00\80?\00\00 @\00\00@@") + (data $29 (i32.const 2332) ",") + (data $29.1 (i32.const 2344) "\01\00\00\00\14") + (data $30 (i32.const 2380) ",") + (data $30.1 (i32.const 2392) "\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?") + (data $31 (i32.const 2428) ",") + (data $31.1 (i32.const 2440) "\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00@\00\00\00@") + (data $32 (i32.const 2476) ",") + (data $32.1 (i32.const 2488) "\01\00\00\00\14\00\00\00\00\00\80?\00\00\80?\00\00\00\00\00\00\00@\00\00\00@") + (data $33 (i32.const 2524) ",") + (data $33.1 (i32.const 2536) "\01\00\00\00\14\00\00\00\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\80\bf\00\00\80\bf") + (data $34 (i32.const 2572) ",") + (data $34.1 (i32.const 2584) "\01\00\00\00\14\00\00\00\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\80\00\00\00\80") + (data $35 (i32.const 2620) ",") + (data $35.1 (i32.const 2632) "\02\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") + (data $36 (i32.const 2668) ",") + (data $36.1 (i32.const 2680) "\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") + (data $37 (i32.const 2716) "\1c") + (data $37.1 (i32.const 2728) "\01") + (data $38 (i32.const 2748) "\1c") + (data $38.1 (i32.const 2760) "\01") + (data $39 (i32.const 2780) ",") + (data $39.1 (i32.const 2792) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $40 (i32.const 2828) ",") + (data $40.1 (i32.const 2840) "\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data $41 (i32.const 2876) ",") + (data $41.1 (i32.const 2888) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $42 (i32.const 2924) ",") + (data $42.1 (i32.const 2936) "\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") + (data $43 (i32.const 2972) ",") + (data $43.1 (i32.const 2984) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $44 (i32.const 3020) ",") + (data $44.1 (i32.const 3032) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data $45 (i32.const 3068) ",") + (data $45.1 (i32.const 3080) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $46 (i32.const 3116) ",") + (data $46.1 (i32.const 3128) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $47 (i32.const 3164) ",") + (data $47.1 (i32.const 3176) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $48 (i32.const 3212) ",") + (data $48.1 (i32.const 3224) "\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $49 (i32.const 3260) ",") + (data $49.1 (i32.const 3272) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $50 (i32.const 3308) ",") + (data $50.1 (i32.const 3320) "\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") + (data $51 (i32.const 3356) ",") + (data $51.1 (i32.const 3368) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $52 (i32.const 3404) ",") + (data $52.1 (i32.const 3416) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data $53 (i32.const 3452) ",") + (data $53.1 (i32.const 3464) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $54 (i32.const 3500) ",") + (data $54.1 (i32.const 3512) "\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data $55 (i32.const 3548) ",") + (data $55.1 (i32.const 3560) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $56 (i32.const 3596) ",") + (data $56.1 (i32.const 3608) "\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $57 (i32.const 3644) ",") + (data $57.1 (i32.const 3656) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $58 (i32.const 3692) ",") + (data $58.1 (i32.const 3704) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") + (data $59 (i32.const 3740) ",") + (data $59.1 (i32.const 3752) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $60 (i32.const 3788) ",") + (data $60.1 (i32.const 3800) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data $61 (i32.const 3836) ",") + (data $61.1 (i32.const 3848) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $62 (i32.const 3884) ",") + (data $62.1 (i32.const 3896) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data $63 (i32.const 3932) ",") + (data $63.1 (i32.const 3944) "\01\00\00\00\14\00\00\00\03\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b") + (data $64 (i32.const 3980) "\1c") + (data $64.1 (i32.const 3992) "\01\00\00\00\0c\00\00\00\07\00\00\00\t\00\00\00\0b") + (data $65 (i32.const 4012) "\1c") + (data $65.1 (i32.const 4024) "\01\00\00\00\08\00\00\00\07\00\00\00\t") + (data $66 (i32.const 4044) ",") + (data $66.1 (i32.const 4056) "\01\00\00\00\10\00\00\00\05\00\00\00\07\00\00\00\t\00\00\00\0b") + (data $67 (i32.const 4092) "\1c") + (data $67.1 (i32.const 4104) "\01\00\00\00\08\00\00\00\t\00\00\00\0b") + (data $68 (i32.const 4124) "\1c") + (data $68.1 (i32.const 4136) "\01\00\00\00\08\00\00\00\07\00\00\00\t") + (data $69 (i32.const 4156) "\1c") + (data $69.1 (i32.const 4168) "\01\00\00\00\08\00\00\00\07\00\00\00\t") + (data $70 (i32.const 4188) "\1c") + (data $70.1 (i32.const 4200) "\01\00\00\00\04\00\00\00\00\01\02\03") + (data $71 (i32.const 4220) "\1c") + (data $71.1 (i32.const 4232) "\01\00\00\00\08\00\00\00\00\01\02\03\04\05\06\07") + (data $72 (i32.const 4252) ",") + (data $72.1 (i32.const 4264) "\01\00\00\00\11\00\00\00\00\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10") + (data $73 (i32.const 4300) ",") + (data $73.1 (i32.const 4312) "\01\00\00\00\0e\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data $74 (i32.const 4348) ",") + (data $74.1 (i32.const 4360) "\01\00\00\00\10\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07") + (data $75 (i32.const 4396) ",") + (data $75.1 (i32.const 4408) "\01\00\00\00\12\00\00\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08") + (data $76 (i32.const 4444) "\1c") + (data $76.1 (i32.const 4456) "\01\00\00\00\04\00\00\00\00\00\c0\7f") + (data $77 (i32.const 4476) "\1c") + (data $77.1 (i32.const 4488) "\01\00\00\00\08") + (data $77.2 (i32.const 4502) "\f8\7f") + (data $78 (i32.const 4508) ",") + (data $78.1 (i32.const 4520) "\01\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02") + (data $79 (i32.const 4556) "\1c") + (data $79.1 (i32.const 4568) "\01\00\00\00\04\00\00\00\00\00\c0\7f") + (data $80 (i32.const 4588) "\1c") + (data $80.1 (i32.const 4600) "\01\00\00\00\08") + (data $80.2 (i32.const 4614) "\f8\7f") + (data $81 (i32.const 4620) ",") + (data $81.1 (i32.const 4632) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $82 (i32.const 4668) ",") + (data $82.1 (i32.const 4680) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $83 (i32.const 4716) "\1c") + (data $83.1 (i32.const 4728) "\01") + (data $84 (i32.const 4748) ",") + (data $84.1 (i32.const 4760) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $85 (i32.const 4796) "\1c") + (data $85.1 (i32.const 4808) "\01") + (data $86 (i32.const 4828) ",") + (data $86.1 (i32.const 4840) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $87 (i32.const 4876) ",") + (data $87.1 (i32.const 4888) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $88 (i32.const 4924) "\1c") + (data $88.1 (i32.const 4936) "\01\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") + (data $89 (i32.const 4956) "\1c") + (data $89.1 (i32.const 4968) "\01\00\00\00\08\00\00\00\01\00\00\00\02") + (data $90 (i32.const 4988) ",") + (data $90.1 (i32.const 5000) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $91 (i32.const 5036) "\1c") + (data $91.1 (i32.const 5048) "\01\00\00\00\08\00\00\00\03\00\00\00\04") + (data $92 (i32.const 5068) "\1c") + (data $92.1 (i32.const 5080) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05") + (data $93 (i32.const 5100) ",") + (data $93.1 (i32.const 5112) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $94 (i32.const 5148) "\1c") + (data $94.1 (i32.const 5160) "\01\00\00\00\04\00\00\00\01") + (data $95 (i32.const 5180) ",") + (data $95.1 (i32.const 5192) "\01\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $96 (i32.const 5228) ",") + (data $96.1 (i32.const 5240) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $97 (i32.const 5276) "\1c") + (data $97.1 (i32.const 5288) "\01\00\00\00\04\00\00\00\05") + (data $98 (i32.const 5308) ",") + (data $98.1 (i32.const 5320) "\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") + (data $99 (i32.const 5356) ",") + (data $99.1 (i32.const 5368) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $100 (i32.const 5404) "\1c") + (data $100.1 (i32.const 5416) "\01\00\00\00\08\00\00\00\04\00\00\00\05") + (data $101 (i32.const 5436) "\1c") + (data $101.1 (i32.const 5448) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $102 (i32.const 5468) ",") + (data $102.1 (i32.const 5480) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $103 (i32.const 5516) "\1c") + (data $103.1 (i32.const 5528) "\01\00\00\00\04\00\00\00\04") + (data $104 (i32.const 5548) ",") + (data $104.1 (i32.const 5560) "\01\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") + (data $105 (i32.const 5596) ",") + (data $105.1 (i32.const 5608) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $106 (i32.const 5644) "\1c") + (data $106.1 (i32.const 5656) "\01\00\00\00\04\00\00\00\01") + (data $107 (i32.const 5676) ",") + (data $107.1 (i32.const 5688) "\01\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $108 (i32.const 5724) ",") + (data $108.1 (i32.const 5736) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $109 (i32.const 5772) "\1c") + (data $109.1 (i32.const 5784) "\01") + (data $110 (i32.const 5804) ",") + (data $110.1 (i32.const 5816) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $111 (i32.const 5852) ",") + (data $111.1 (i32.const 5864) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $112 (i32.const 5900) "\1c") + (data $112.1 (i32.const 5912) "\01") + (data $113 (i32.const 5932) ",") + (data $113.1 (i32.const 5944) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $114 (i32.const 5980) ",") + (data $114.1 (i32.const 5992) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $115 (i32.const 6028) "\1c") + (data $115.1 (i32.const 6040) "\01") + (data $116 (i32.const 6060) ",") + (data $116.1 (i32.const 6072) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $117 (i32.const 6108) ",") + (data $117.1 (i32.const 6120) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $118 (i32.const 6156) "\1c") + (data $118.1 (i32.const 6168) "\01") + (data $119 (i32.const 6188) ",") + (data $119.1 (i32.const 6200) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $120 (i32.const 6236) ",") + (data $120.1 (i32.const 6248) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $121 (i32.const 6284) "\1c") + (data $121.1 (i32.const 6296) "\01") + (data $122 (i32.const 6316) ",") + (data $122.1 (i32.const 6328) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $123 (i32.const 6364) "\1c") + (data $123.1 (i32.const 6376) "\01") + (data $124 (i32.const 6396) "|") + (data $124.1 (i32.const 6408) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $125 (i32.const 6524) "|") + (data $125.1 (i32.const 6536) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (data $126 (i32.const 6652) "\1c") + (data $126.1 (i32.const 6664) "\0e\00\00\00\08\00\00\00\01") + (data $127 (i32.const 6684) "\1c") + (data $127.1 (i32.const 6696) "\0e\00\00\00\08\00\00\00\02") + (data $128 (i32.const 6716) "\1c") + (data $128.1 (i32.const 6728) "\0e\00\00\00\08\00\00\00\03") + (data $129 (i32.const 6748) "\1c") + (data $129.1 (i32.const 6760) "\0e\00\00\00\08\00\00\00\04") + (data $130 (i32.const 6780) "\1c") + (data $130.1 (i32.const 6792) "\0e\00\00\00\08\00\00\00\05") + (data $131 (i32.const 6812) "\1c") + (data $131.1 (i32.const 6824) "\0e\00\00\00\08\00\00\00\06") + (data $132 (i32.const 6844) ",") + (data $132.1 (i32.const 6856) "\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data $133 (i32.const 6892) "\1c") + (data $133.1 (i32.const 6904) "\0e\00\00\00\08\00\00\00\07") + (data $134 (i32.const 6924) "\1c") + (data $134.1 (i32.const 6936) "\0e\00\00\00\08\00\00\00\08") + (data $135 (i32.const 6956) "\1c") + (data $135.1 (i32.const 6968) "\0e\00\00\00\08\00\00\00\t") + (data $136 (i32.const 6988) "\1c") + (data $136.1 (i32.const 7000) "\0e\00\00\00\08\00\00\00\n") + (data $137 (i32.const 7020) "\1c") + (data $137.1 (i32.const 7032) "\0e\00\00\00\08\00\00\00\0b") + (data $138 (i32.const 7052) "\1c") + (data $138.1 (i32.const 7064) "\0e\00\00\00\08\00\00\00\0c") + (data $139 (i32.const 7084) "\1c") + (data $139.1 (i32.const 7096) "\0e\00\00\00\08\00\00\00\r") + (data $140 (i32.const 7116) "\1c") + (data $140.1 (i32.const 7128) "\0e\00\00\00\08\00\00\00\0e") + (data $141 (i32.const 7148) "\1c") + (data $141.1 (i32.const 7160) "\0e\00\00\00\08\00\00\00\0f") + (data $142 (i32.const 7180) "\1c") + (data $142.1 (i32.const 7192) "\0e\00\00\00\08\00\00\00\10") + (data $143 (i32.const 7212) "\1c") + (data $143.1 (i32.const 7224) "\0e\00\00\00\08\00\00\00\11") + (data $144 (i32.const 7244) "\1c") + (data $144.1 (i32.const 7256) "\0e\00\00\00\08\00\00\00\12") + (data $145 (i32.const 7276) "\1c") + (data $145.1 (i32.const 7288) "\0e\00\00\00\08\00\00\00\13") + (data $146 (i32.const 7308) "\1c") + (data $146.1 (i32.const 7320) "\0e\00\00\00\08\00\00\00\14") + (data $147 (i32.const 7340) "\1c") + (data $147.1 (i32.const 7352) "\0f\00\00\00\08\00\00\00\15") + (data $148 (i32.const 7372) "\1c") + (data $148.1 (i32.const 7384) "\0f\00\00\00\08\00\00\00\16") + (data $149 (i32.const 7404) "\1c") + (data $149.1 (i32.const 7416) "\0f\00\00\00\08\00\00\00\17") + (data $150 (i32.const 7436) "\1c") + (data $150.1 (i32.const 7448) "\0f\00\00\00\08\00\00\00\18") + (data $151 (i32.const 7468) "\1c") + (data $151.1 (i32.const 7480) "\0f\00\00\00\08\00\00\00\19") + (data $152 (i32.const 7500) "|") + (data $152.1 (i32.const 7512) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $153 (i32.const 7628) "<") + (data $153.1 (i32.const 7640) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $154 (i32.const 7692) "\1c") + (data $154.1 (i32.const 7704) "\02\00\00\00\02\00\00\000") + (data $155 (i32.const 7724) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $156 (i32.const 8124) "\1c\04") + (data $156.1 (i32.const 8136) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $157 (i32.const 9180) "\\") + (data $157.1 (i32.const 9192) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $158 (i32.const 9276) "\1c") + (data $158.1 (i32.const 9288) "\11\00\00\00\08\00\00\00\1a") + (data $159 (i32.const 9308) "\1c") + (data $159.1 (i32.const 9320) "\12\00\00\00\08\00\00\00\1b") + (data $160 (i32.const 9340) "\1c") + (data $160.1 (i32.const 9352) "\13\00\00\00\08\00\00\00\1c") + (data $161 (i32.const 9372) "\1c") + (data $161.1 (i32.const 9384) "\13\00\00\00\08\00\00\00\1d") + (data $162 (i32.const 9404) "\1c") + (data $162.1 (i32.const 9416) "\13\00\00\00\08\00\00\00\1e") + (data $163 (i32.const 9436) "\1c") + (data $163.1 (i32.const 9448) "\0e\00\00\00\08\00\00\00\1f") + (data $164 (i32.const 9468) "\1c") + (data $164.1 (i32.const 9480) "\0e\00\00\00\08\00\00\00 ") + (data $165 (i32.const 9500) "\1c") + (data $165.1 (i32.const 9512) "\0e\00\00\00\08\00\00\00!") + (data $166 (i32.const 9532) "\1c") + (data $166.1 (i32.const 9544) "\0e\00\00\00\08\00\00\00\"") + (data $167 (i32.const 9564) "\1c") + (data $167.1 (i32.const 9576) "\14\00\00\00\08\00\00\00#") + (data $168 (i32.const 9596) "\1c") + (data $168.1 (i32.const 9608) "\14\00\00\00\08\00\00\00$") + (data $169 (i32.const 9628) "\1c") + (data $169.1 (i32.const 9640) "\15\00\00\00\08\00\00\00%") + (data $170 (i32.const 9660) "\1c") + (data $170.1 (i32.const 9672) "\15\00\00\00\08\00\00\00&") + (data $171 (i32.const 9692) "\1c") + (data $171.1 (i32.const 9704) "\14\00\00\00\08\00\00\00\'") + (data $172 (i32.const 9724) "\1c") + (data $172.1 (i32.const 9736) "\14\00\00\00\08\00\00\00(") + (data $173 (i32.const 9756) "\1c") + (data $173.1 (i32.const 9768) "\14\00\00\00\08\00\00\00)") + (data $174 (i32.const 9788) "\1c") + (data $174.1 (i32.const 9800) "\14\00\00\00\08\00\00\00*") + (data $175 (i32.const 9820) "\1c") + (data $175.1 (i32.const 9832) "\14\00\00\00\08\00\00\00+") + (data $176 (i32.const 9852) "\1c") + (data $176.1 (i32.const 9864) "\15\00\00\00\08\00\00\00,") + (data $177 (i32.const 9884) "\1c") + (data $177.1 (i32.const 9896) "\15\00\00\00\08\00\00\00-") + (data $178 (i32.const 9916) "\1c") + (data $178.1 (i32.const 9928) "\14\00\00\00\08\00\00\00.") + (data $179 (i32.const 9948) "\1c") + (data $179.1 (i32.const 9960) "\14\00\00\00\08\00\00\00/") + (data $180 (i32.const 9980) "\1c") + (data $180.1 (i32.const 9992) "\14\00\00\00\08\00\00\000") + (data $181 (i32.const 10012) "\bc") + (data $181.1 (i32.const 10024) "\02\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?") + (data $182 (i32.const 10204) "\1c") + (data $182.1 (i32.const 10216) "\01\00\00\00\0c\00\00\00\00\00\00@\00\00\80\bf") + (data $183 (i32.const 10236) "\1c") + (data $183.1 (i32.const 10248) "\18\00\00\00\08\00\00\001") + (data $184 (i32.const 10268) "\1c") + (data $184.1 (i32.const 10280) "\01\00\00\00\0c\00\00\00\00\00\80\bf\00\00\00\00\00\00\00@") + (data $185 (i32.const 10300) "<") + (data $185.1 (i32.const 10312) "\01\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") + (data $186 (i32.const 10364) "<") + (data $186.1 (i32.const 10376) "\01\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") + (data $187 (i32.const 10428) "\\") + (data $187.1 (i32.const 10440) "\01\00\00\00@") + (data $187.2 (i32.const 10454) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") + (data $187.3 (i32.const 10494) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") + (data $188 (i32.const 10524) "\1c") + (data $188.1 (i32.const 10536) "\19\00\00\00\08\00\00\002") + (data $189 (i32.const 10556) "\\") + (data $189.1 (i32.const 10568) "\01\00\00\00@") + (data $189.2 (i32.const 10582) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") + (data $189.3 (i32.const 10614) "\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") + (data $190 (i32.const 10652) ",") + (data $190.1 (i32.const 10664) "\01\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") + (data $191 (i32.const 10700) "\1c") + (data $191.1 (i32.const 10712) "\1a\00\00\00\08\00\00\003") + (data $192 (i32.const 10732) ",") + (data $192.1 (i32.const 10744) "\01\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") + (data $193 (i32.const 10780) ",") + (data $193.1 (i32.const 10792) "\01\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") + (data $194 (i32.const 10828) "\1c") + (data $194.1 (i32.const 10840) "\1b\00\00\00\08\00\00\004") + (data $195 (i32.const 10860) ",") + (data $195.1 (i32.const 10872) "\01\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") + (data $196 (i32.const 10908) "\1c") + (data $196.1 (i32.const 10920) "\01") + (data $197 (i32.const 10940) "\1c") + (data $197.1 (i32.const 10952) "\01\00\00\00\04\00\00\00\01") + (data $198 (i32.const 10972) "\1c") + (data $198.1 (i32.const 10984) "\01\00\00\00\08\00\00\00\02\00\00\00\01") + (data $199 (i32.const 11004) ",") + (data $199.1 (i32.const 11016) "\01\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01") + (data $200 (i32.const 11052) ",") + (data $200.1 (i32.const 11064) "\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data $201 (i32.const 11100) "\1c") + (data $201.1 (i32.const 11112) "\1a\00\00\00\08\00\00\005") + (data $202 (i32.const 11132) "\1c") + (data $202.1 (i32.const 11144) "\01\00\00\00\04\00\00\00\01") + (data $203 (i32.const 11164) "\1c") + (data $203.1 (i32.const 11176) "\01\00\00\00\08\00\00\00\01\00\00\00\02") + (data $204 (i32.const 11196) "\1c") + (data $204.1 (i32.const 11208) "\1c\00\00\00\08\00\00\006") + (data $205 (i32.const 11228) "\1c") + (data $205.1 (i32.const 11240) "\1a\00\00\00\08\00\00\007") + (data $206 (i32.const 11260) "\1c") + (data $206.1 (i32.const 11272) "\1a\00\00\00\08\00\00\008") + (data $207 (i32.const 11292) "\1c") + (data $207.1 (i32.const 11304) "\1a\00\00\00\08\00\00\009") + (data $208 (i32.const 11324) "\1c") + (data $208.1 (i32.const 11336) "\1a\00\00\00\08\00\00\00:") + (data $209 (i32.const 11356) "\1c") + (data $209.1 (i32.const 11368) "\1e\00\00\00\08\00\00\00;") + (data $210 (i32.const 11388) "\1c") + (data $210.1 (i32.const 11400) "!\00\00\00\08\00\00\00<") + (data $211 (i32.const 11420) "\1c") + (data $211.1 (i32.const 11432) "\02\00\00\00\02\00\00\00a") + (data $212 (i32.const 11452) "\1c") + (data $212.1 (i32.const 11464) "\02\00\00\00\02\00\00\00b") + (data $213 (i32.const 11484) "\1c") + (data $213.1 (i32.const 11496) "\02\00\00\00\04\00\00\00a\00b") + (data $214 (i32.const 11516) "\1c") + (data $214.1 (i32.const 11528) "\02\00\00\00\04\00\00\00b\00a") + (data $215 (i32.const 11548) "\1c") + (data $215.1 (i32.const 11560) "\02") + (data $216 (i32.const 11580) ",") + (data $216.1 (i32.const 11592) "\01\00\00\00\1c\00\00\00\b0,\00\00\d0,\00\00\b0,\00\00\f0,\00\00\10-\00\000-") + (data $217 (i32.const 11628) ",") + (data $217.1 (i32.const 11640) "\01\00\00\00\1c\00\00\000-\00\00\b0,\00\00\b0,\00\00\f0,\00\00\d0,\00\00\10-") + (data $218 (i32.const 11676) "\1c") + (data $218.1 (i32.const 11688) "#\00\00\00\08\00\00\00=") + (data $219 (i32.const 11708) "\1c") + (data $219.1 (i32.const 11720) "$\00\00\00\08\00\00\00>") + (data $220 (i32.const 11740) "\1c") + (data $220.1 (i32.const 11752) "\01\00\00\00\02\00\00\00\01") + (data $221 (i32.const 11772) "\1c") + (data $221.1 (i32.const 11784) "\02\00\00\00\08\00\00\00t\00r\00u\00e") + (data $222 (i32.const 11804) "\1c") + (data $222.1 (i32.const 11816) "\02\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data $223 (i32.const 11836) "\1c") + (data $223.1 (i32.const 11848) "\02\00\00\00\02\00\00\00,") + (data $224 (i32.const 11868) ",") + (data $224.1 (i32.const 11880) "\02\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") + (data $225 (i32.const 11916) "\1c") + (data $225.1 (i32.const 11928) "\01\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data $226 (i32.const 11948) "\1c") + (data $226.1 (i32.const 11960) "\02\00\00\00\n\00\00\001\00-\002\00-\003") + (data $227 (i32.const 11980) "\1c") + (data $227.1 (i32.const 11992) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $228 (i32.const 12012) "\1c") + (data $228.1 (i32.const 12024) "\02\00\00\00\02\00\00\00-") + (data $229 (i32.const 12044) "\1c") + (data $229.1 (i32.const 12056) "\01\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") + (data $230 (i32.const 12076) "\1c") + (data $230.1 (i32.const 12088) "\02\00\00\00\04\00\00\00_\00_") + (data $231 (i32.const 12108) "L") + (data $231.1 (i32.const 12120) "\02\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") + (data $232 (i32.const 12188) "L") + (data $232.1 (i32.const 12200) "\01\00\00\000") + (data $232.2 (i32.const 12222) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") + (data $233 (i32.const 12268) "\1c") + (data $233.1 (i32.const 12280) "\02\00\00\00\04\00\00\00,\00 ") + (data $234 (i32.const 12300) "\1c") + (data $234.1 (i32.const 12312) "\02\00\00\00\06\00\00\000\00.\000") + (data $235 (i32.const 12332) "\1c") + (data $235.1 (i32.const 12344) "\02\00\00\00\06\00\00\00N\00a\00N") + (data $236 (i32.const 12364) ",") + (data $236.1 (i32.const 12376) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $237 (i32.const 12412) ",") + (data $237.1 (i32.const 12424) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data $239 (i32.const 12520) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") + (data $248 (i32.const 13868) "\1c") + (data $248.1 (i32.const 13880) "\01") + (data $249 (i32.const 13900) "\1c") + (data $249.1 (i32.const 13912) "\01\00\00\00\04\00\00\00\01") + (data $250 (i32.const 13932) "\1c") + (data $250.1 (i32.const 13944) "\01\00\00\00\08\00\00\00\01\00\00\00\02") + (data $251 (i32.const 13964) ",") + (data $251.1 (i32.const 13976) "\01\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data $252 (i32.const 14012) "\1c") + (data $252.1 (i32.const 14024) "\02\00\00\00\06\00\00\001\00,\002") + (data $253 (i32.const 14044) ",") + (data $253.1 (i32.const 14056) "\02\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") + (data $254 (i32.const 14092) "\1c") + (data $254.1 (i32.const 14104) "\01\00\00\00\03\00\00\00\01\ff") + (data $255 (i32.const 14124) "\1c") + (data $255.1 (i32.const 14136) "\02\00\00\00\0c\00\00\001\00,\00-\001\00,\000") + (data $256 (i32.const 14156) "\1c") + (data $256.1 (i32.const 14168) "\01\00\00\00\03\00\00\00\80\81\80") + (data $257 (i32.const 14188) ",") + (data $257.1 (i32.const 14200) "\02\00\00\00\1c\00\00\00-\001\002\008\00,\00-\001\002\007\00,\00-\001\002\008") + (data $258 (i32.const 14236) "\1c") + (data $258.1 (i32.const 14248) "\01\00\00\00\06\00\00\00\01\00\ff\ff") + (data $259 (i32.const 14268) ",") + (data $259.1 (i32.const 14280) "\02\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") + (data $260 (i32.const 14316) "\1c") + (data $260.1 (i32.const 14328) "\01\00\00\00\04\00\00\00\00\80\01\ff") + (data $261 (i32.const 14348) ",") + (data $261.1 (i32.const 14360) "\02\00\00\00\16\00\00\00-\003\002\007\006\008\00,\00-\002\005\005") + (data $262 (i32.const 14396) "\1c") + (data $262.1 (i32.const 14408) "\01\00\00\00\08\00\00\00\00\00\00\80\80\ff\ff\ff") + (data $263 (i32.const 14428) "<") + (data $263.1 (i32.const 14440) "\02\00\00\00 \00\00\00-\002\001\004\007\004\008\003\006\004\008\00,\00-\001\002\008") + (data $264 (i32.const 14492) ",") + (data $264.1 (i32.const 14504) "\01\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") + (data $265 (i32.const 14540) "L") + (data $265.1 (i32.const 14552) "\02\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") + (data $266 (i32.const 14620) "<") + (data $266.1 (i32.const 14632) "\01\00\00\00(\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") + (data $267 (i32.const 14684) "\9c") + (data $267.1 (i32.const 14696) "\02\00\00\00~\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") + (data $268 (i32.const 14844) ",") + (data $268.1 (i32.const 14856) "\01\00\00\00\1c\00\00\000-\00\00\b0,\00\00\b0,\00\00\f0,\00\00\d0,\00\00\10-") + (data $269 (i32.const 14892) ",") + (data $269.1 (i32.const 14904) "\02\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") + (data $270 (i32.const 14940) "\1c") + (data $270.1 (i32.const 14952) "\02\00\00\00\02\00\00\002") + (data $271 (i32.const 14972) "\1c") + (data $271.1 (i32.const 14984) "\02\00\00\00\02\00\00\004") + (data $272 (i32.const 15004) ",") + (data $272.1 (i32.const 15016) "\01\00\00\00\10\00\00\00\005\00\00p:\00\00\00\00\00\00\90:") + (data $273 (i32.const 15052) "\1c") + (data $273.1 (i32.const 15064) "\02\00\00\00\0c\00\00\001\00,\002\00,\00,\004") + (data $274 (i32.const 15084) "\1c") + (data $274.1 (i32.const 15096) "\01\00\00\00\08\00\00\00\01\00\00\00\02") + (data $275 (i32.const 15116) "\1c") + (data $275.1 (i32.const 15128) "\01\00\00\00\08\00\00\00\03\00\00\00\04") + (data $276 (i32.const 15148) ",") + (data $276.1 (i32.const 15160) "\02\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") + (data $277 (i32.const 15196) "\1c") + (data $277.1 (i32.const 15208) "\01\00\00\00\02\00\00\00\01\02") + (data $278 (i32.const 15228) "\1c") + (data $278.1 (i32.const 15240) "\01\00\00\00\02\00\00\00\03\04") + (data $279 (i32.const 15260) "\1c") + (data $279.1 (i32.const 15272) "\01\00\00\00\04\00\00\00\01") + (data $280 (i32.const 15292) "\1c") + (data $280.1 (i32.const 15304) "\01\00\00\00\04") + (data $281 (i32.const 15324) "\1c") + (data $281.1 (i32.const 15336) "\01\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $282 (i32.const 15356) "\1c") + (data $282.1 (i32.const 15368) "\01\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06") + (data $283 (i32.const 15388) "\1c") + (data $283.1 (i32.const 15400) "\01\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t") + (data $284 (i32.const 15420) "\1c") + (data $284.1 (i32.const 15432) "\02\00\00\00\06\00\00\00o\00n\00e") + (data $285 (i32.const 15452) "\1c") + (data $285.1 (i32.const 15464) "\01\00\00\00\04\00\00\00P<") + (data $286 (i32.const 15484) "\1c") + (data $286.1 (i32.const 15496) "\02\00\00\00\06\00\00\00t\00w\00o") + (data $287 (i32.const 15516) "\1c") + (data $287.1 (i32.const 15528) "\02\00\00\00\n\00\00\00t\00h\00r\00e\00e") + (data $288 (i32.const 15548) "\1c") + (data $288.1 (i32.const 15560) "\01\00\00\00\0c\00\00\00\90<\00\00\00\00\00\00\b0<") + (data $289 (i32.const 15580) "\1c") + (data $289.1 (i32.const 15592) "\02\00\00\00\08\00\00\00f\00o\00u\00r") + (data $290 (i32.const 15612) "\1c") + (data $290.1 (i32.const 15624) "\02\00\00\00\08\00\00\00f\00i\00v\00e") + (data $291 (i32.const 15644) "\1c") + (data $291.1 (i32.const 15656) "\02\00\00\00\06\00\00\00s\00i\00x") + (data $292 (i32.const 15676) "\1c") + (data $292.1 (i32.const 15688) "\01\00\00\00\0c\00\00\00\f0<\00\00\10=\00\000=") + (data $293 (i32.const 15708) "\1c") + (data $293.1 (i32.const 15720) "\02\00\00\00\n\00\00\00s\00e\00v\00e\00n") + (data $294 (i32.const 15740) "\1c") + (data $294.1 (i32.const 15752) "\01\00\00\00\04\00\00\00p=") + (data $295 (i32.const 15772) "<") + (data $295.1 (i32.const 15784) "\01\00\00\00 \00\00\00P<\00\00\90<\00\00\00\00\00\00\b0<\00\00\f0<\00\00\10=\00\000=\00\00p=") + (data $296 (i32.const 15836) "\1c") + (data $296.1 (i32.const 15848) "\01") + (data $297 (i32.const 15868) "\1c") + (data $297.1 (i32.const 15880) "\01") + (data $298 (i32.const 15900) "\1c") + (data $298.1 (i32.const 15912) "\01\00\00\00\04\00\00\00\01") + (data $299 (i32.const 15932) "\1c") + (data $299.1 (i32.const 15944) "\01\00\00\00\04\00\00\00\02") + (data $300 (i32.const 15964) "\1c") + (data $300.1 (i32.const 15976) ".\00\00\00\08\00\00\00?") + (data $301 (i32.const 16000) "/\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00 \00\00\00A\00\00\00B\00\00\00\02\01\00\00\02\19\00\00\02A\00\00\82\00\00\00\02\1a\00\00\02a") + (data $301.1 (i32.const 16068) "\02A") + (data $301.2 (i32.const 16092) " \00\00\00\02A") + (data $301.3 (i32.const 16120) "\02A\00\00\00\00\00\00 \00\00\00\02A\00\00\00\00\00\00\02a") + (data $301.4 (i32.const 16152) "B\00\00\00B\08\00\00\82\08\00\00\02\02\00\00\02\n\00\00\02A\00\00\02A\00\00\02A\00\00\02A") + (table $0 64 64 funcref) + (elem $0 (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|20 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|34 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|34 $start:std/array~anonymous|40 $start:std/array~anonymous|34 $start:std/array~anonymous|34 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|34 $start:std/array~anonymous|40 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/array/assertStableSortedForComplexObjects~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|49 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|49 $start:std/array~anonymous|52 $std/array/assertStableSortedForComplexObjects~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $start:std/array~anonymous|54) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $std/array/arr + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 10032 + call $~lib/rt/itcms/__visit + global.get $std/array/inputStabArr + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array/outputStabArr + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 2640 + call $~lib/rt/itcms/__visit + i32.const 6416 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 8144 + call $~lib/rt/itcms/__visit + i32.const 9200 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$731 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 48960 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$731 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 16000 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 16004 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 48960 + i32.const 0 + i32.store + i32.const 50528 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 48960 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 48960 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 48960 + i32.const 50532 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 48960 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 48960 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 48960 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 48960 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.eqz + ) + (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 1 + i32.eq + ) + (func $start:std/array~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.ge_s + ) + (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.le_s + ) + (func $start:std/array~anonymous|13 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 10 + i32.lt_s + ) + (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.ge_s + ) + (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.lt_s + ) + (func $start:std/array~anonymous|18 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 10 + i32.gt_s + ) + (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + call $~lib/util/number/itoa32 + ) + (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + local.get $0 + f32.convert_i32_s + ) + (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $0 + ) + (func $start:std/array~anonymous|30 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|34 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $start:std/array~anonymous|36 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + i32.const 1 + local.get $1 + i32.const 2 + i32.gt_s + local.get $0 + select + ) + (func $start:std/array~anonymous|37 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + i32.const 1 + local.get $1 + i32.const 100 + i32.gt_s + local.get $0 + select + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 f32) + (local $6 f32) + (local $7 i32) + (local $8 f32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $7 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load offset=4 + local.tee $8 + local.set $6 + local.get $3 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect (type $5) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $5) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + f32.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $5) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + f32.store offset=4 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $6 + f32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load offset=4 + local.get $6 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $5) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + f32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + f32.load offset=4 + local.get $1 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $5) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 f32) + (local $8 f32) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $9 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + f32.load + f32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $7 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $5) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + f32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + local.get $1 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + local.get $3 + i32.xor + local.tee $3 + i32.gt_s + local.get $2 + local.get $3 + i32.lt_s + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 f64) + (local $8 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $6 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $6 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $6 + loop $for-loop|0 + local.get $2 + local.get $6 + i32.ge_s + if + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load offset=8 + local.tee $7 + local.set $5 + local.get $3 + f64.load + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $4 + local.get $7 + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.le_s + if + local.get $4 + local.set $5 + local.get $7 + local.set $4 + end + local.get $6 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $8 + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $4 + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $7 + f64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $4 + f64.store offset=16 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $8 + f64.load + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $4 + local.get $5 + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $8 + local.get $4 + f64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store offset=8 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load offset=8 + local.get $6 + f64.load + i32.const 2 + global.set $~argumentsLength + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + local.set $4 + local.get $6 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $6 + local.get $4 + f64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $1 + f64.load offset=8 + local.get $1 + f64.load + i32.const 2 + global.set $~argumentsLength + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end + end + end + local.get $3 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 f64) + (local $7 f64) + (local $8 i32) + (local $9 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $5 + local.get $3 + i32.add + local.set $8 + local.get $5 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $9 + local.get $4 + i32.add + local.get $0 + local.get $9 + i32.add + f64.load + f64.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $4 + local.get $8 + local.get $5 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + f64.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $6 + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $6 + f64.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + local.get $2 + i64.xor + local.tee $2 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + local.get $3 + i64.xor + local.tee $3 + i64.gt_s + local.get $2 + local.get $3 + i64.lt_s + i32.sub + ) + (func $~lib/util/sort/insertionSort (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 $8 i32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load offset=4 + local.tee $6 + local.set $5 + local.get $3 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $4 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $4 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $6 + loop $for-loop|0 + local.get $2 + local.get $6 + i32.ge_s + if + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load offset=4 + local.tee $5 + local.set $4 + local.get $3 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $4 + local.get $5 + local.set $3 + end + local.get $6 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $7 + i32.store offset=8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + end + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $5 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $4 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $7 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + end + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + local.get $4 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + local.set $5 + local.get $4 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end + end + end + local.get $3 + ) + (func $~lib/util/sort/mergeRuns (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.get $2 + i32.const 1 + i32.sub + local.tee $5 + local.get $3 + i32.add + local.set $6 + local.get $5 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $7 + local.get $4 + i32.add + local.get $0 + local.get $7 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $4 + local.get $6 + local.get $5 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $~lib/math/NativeMath.random (result f64) + (local $0 i64) + (local $1 i64) + global.get $~lib/math/random_seeded + i32.eqz + if + i64.const -7046029254386353131 + call $~lib/builtins/seed + i64.reinterpret_f64 + local.tee $0 + local.get $0 + i64.eqz + select + local.tee $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + local.tee $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + global.set $~lib/math/random_state1_64 + i32.const 1 + global.set $~lib/math/random_seeded + end + global.get $~lib/math/random_state0_64 + local.set $1 + global.get $~lib/math/random_state1_64 + local.tee $0 + global.set $~lib/math/random_state0_64 + local.get $1 + local.get $1 + i64.const 23 + i64.shl + i64.xor + local.tee $1 + local.get $1 + i64.const 17 + i64.shr_u + i64.xor + local.get $0 + i64.xor + local.get $0 + i64.const 26 + i64.shr_u + i64.xor + global.set $~lib/math/random_state1_64 + local.get $0 + i64.const 12 + i64.shr_u + i64.const 4607182418800017408 + i64.or + f64.reinterpret_i64 + f64.const -1 + f64.add + ) + (func $start:std/array~anonymous|49 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.sub + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 0 + i32.lt_s + local.tee $2 + if + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $0 + local.get $1 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $0 + local.get $2 + i32.add + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + local.get $0 + local.get $1 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $0 + ) + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i64) + (local $12 i64) + local.get $2 + local.get $1 + i64.sub + local.set $9 + i64.const 1 + i32.const 0 + local.get $3 + i32.sub + local.tee $10 + i64.extend_i32_s + local.tee $1 + i64.shl + local.tee $12 + i64.const 1 + i64.sub + local.tee $11 + local.get $2 + i64.and + local.set $8 + local.get $2 + local.get $1 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $7 + loop $while-continue|0 + local.get $7 + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $7 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $3 + i32.const 1000000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100 + i32.div_u + local.set $6 + local.get $3 + i32.const 100 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10 + i32.div_u + local.set $6 + local.get $3 + i32.const 10 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + local.set $6 + i32.const 0 + local.set $3 + br $break|1 + end + i32.const 0 + local.set $6 + end + local.get $5 + local.get $6 + i32.or + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $4 + local.get $3 + i64.extend_i32_u + local.get $10 + i64.extend_i32_s + local.tee $2 + i64.shl + local.get $8 + i64.add + local.tee $1 + i64.ge_u + if + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 13392 + i32.add + i64.load32_u + local.get $2 + i64.shl + local.set $2 + local.get $0 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|3 + local.get $1 + local.get $9 + i64.lt_u + local.get $4 + local.get $1 + i64.sub + local.get $2 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $1 + local.get $2 + i64.add + local.tee $8 + i64.gt_u + local.get $9 + local.get $1 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $1 + local.get $2 + i64.add + local.set $1 + br $while-continue|3 + end + end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + return + end + br $while-continue|0 + end + end + loop $while-continue|4 + local.get $4 + i64.const 10 + i64.mul + local.set $4 + local.get $8 + i64.const 10 + i64.mul + local.tee $1 + local.get $10 + i64.extend_i32_s + i64.shr_u + local.tee $2 + local.get $5 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $1 + local.get $11 + i64.and + local.tee $8 + local.get $4 + i64.ge_u + br_if $while-continue|4 + end + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 13392 + i32.add + i64.load32_u + i64.mul + local.set $1 + local.get $0 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|6 + local.get $1 + local.get $8 + i64.gt_u + local.get $4 + local.get $8 + i64.sub + local.get $12 + i64.ge_u + i32.and + if (result i32) + local.get $1 + local.get $8 + local.get $12 + i64.add + local.tee $2 + i64.gt_u + local.get $1 + local.get $8 + i64.sub + local.get $2 + local.get $1 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $8 + local.get $12 + i64.add + local.set $8 + br $while-continue|6 + end + end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.eqz + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add + return + end + local.get $1 + local.get $2 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + local.get $3 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add + local.get $0 + i32.const 0 + local.get $2 + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 46 + i32.store16 + local.get $1 + i32.const 1 + i32.add + else + local.get $3 + i32.const 0 + i32.le_s + local.get $3 + i32.const -6 + i32.gt_s + i32.and + if (result i32) + local.get $0 + i32.const 2 + local.get $3 + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 3014704 + i32.store + i32.const 2 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + local.get $3 + i32.add + else + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $3 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + else + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $1 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + i32.sub + memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $4 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $1 + end + local.get $1 + i32.const 2 + i32.add + end + end + end + ) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) + (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 i32) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + local.get $1 + f64.const 0 + f64.lt + local.tee $3 + if (result f64) + local.get $0 + i32.const 45 + i32.store16 + local.get $1 + f64.neg + else + local.get $1 + end + i64.reinterpret_f64 + local.tee $2 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $5 + i32.const 1 + local.get $5 + select + i32.const 1075 + i32.sub + local.tee $9 + i32.const 1 + i32.sub + local.get $2 + i64.const 4503599627370495 + i64.and + local.get $5 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + i64.add + local.tee $2 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $4 + i64.clz + i32.wrap_i64 + local.tee $10 + i32.sub + local.set $5 + local.get $4 + local.get $10 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $2 + local.get $2 + i64.const 4503599627370496 + i64.eq + i32.const 1 + i32.add + local.tee $10 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $9 + local.get $10 + i32.sub + local.get $5 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $5 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $1 + i32.trunc_sat_f64_s + local.tee $5 + local.get $5 + f64.convert_i32_s + local.get $1 + f64.ne + i32.add + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.tee $5 + i32.const 3 + i32.shl + local.tee $9 + i32.sub + global.set $~lib/util/number/_K + local.get $9 + i32.const 12520 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $5 + i32.const 1 + i32.shl + i32.const 13216 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $2 + local.get $2 + i64.clz + i64.shl + local.tee $2 + i64.const 4294967295 + i64.and + local.set $6 + global.get $~lib/util/number/_frc_pow + local.tee $11 + i64.const 4294967295 + i64.and + local.tee $12 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + i64.mul + local.get $6 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + global.get $~lib/util/number/_frc_plus + local.tee $4 + i64.const 4294967295 + i64.and + local.set $13 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $4 + local.get $12 + i64.mul + local.get $12 + local.get $13 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $8 + global.get $~lib/util/number/_frc_minus + local.tee $14 + i64.const 4294967295 + i64.and + local.set $15 + local.get $14 + i64.const 32 + i64.shr_u + local.tee $14 + local.get $12 + i64.mul + local.get $12 + local.get $15 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $2 + local.get $11 + i64.const 32 + i64.shr_u + local.tee $2 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $6 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $4 + i64.mul + local.get $8 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $13 + i64.mul + local.get $8 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.tee $4 + global.get $~lib/util/number/_exp_pow + global.get $~lib/util/number/_exp + i32.add + i32.const -64 + i32.sub + local.get $4 + local.get $2 + local.get $14 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $15 + i64.mul + local.get $12 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + local.get $3 + call $~lib/util/number/genDigits + local.get $3 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $3 + i32.add + ) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + local.get $1 + f64.const 0 + f64.eq + if + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne + if + local.get $1 + local.get $1 + f64.ne + if + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + else + local.get $1 + f64.const 0 + f64.lt + local.tee $2 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + unreachable + end + local.get $0 + local.get $1 + call $~lib/util/number/dtoa_core + end + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.extend8_s + local.tee $3 + i32.const 0 + i32.lt_s + local.tee $2 + if + local.get $3 + i32.const -128 + i32.eq + if + local.get $0 + i64.const 15762813447372845 + i64.store + i32.const 4 + return + end + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.extend8_s + local.tee $3 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $3 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $1 + i32.extend8_s + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + local.get $3 + i32.add + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 65535 + i32.and + local.tee $2 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $2 + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + local.get $1 + i32.const 65535 + i32.and + local.set $1 + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + local.set $2 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 0 + i32.lt_s + local.tee $2 + if + local.get $3 + i32.const -32768 + i32.eq + if + local.get $0 + i64.const 15481338470793261 + i64.store + local.get $0 + i32.const 3670070 + i32.store offset=8 + i32.const 6 + return + end + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $3 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $1 + i32.extend16_s + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + local.get $3 + i32.add + ) + (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + loop $while-continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + if + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $1 + i64.const 100000000 + i64.div_u + local.tee $1 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + local.get $1 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.set $2 + local.get $1 + i64.const 10 + i64.lt_u + if + local.get $0 + local.get $1 + i64.const 48 + i64.or + i64.store16 + i32.const 1 + return + end + local.get $1 + i64.const 4294967295 + i64.le_u + if + local.get $1 + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $0 + local.get $2 + local.get $3 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else + local.get $2 + local.get $1 + local.get $1 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $1 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $1 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $1 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $1 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $1 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa64_dec_lut + end + local.get $0 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i64.const 0 + i64.lt_s + local.tee $3 + if + local.get $0 + i32.const 45 + i32.store16 + i64.const 0 + local.get $1 + i64.sub + local.set $1 + end + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $1 + i64.const 10 + i64.lt_u + if + local.get $4 + local.get $1 + i64.const 48 + i64.or + i64.store16 + local.get $3 + i32.const 1 + i32.add + return + end + local.get $1 + i64.const 4294967295 + i64.le_u + if + local.get $1 + i32.wrap_i64 + local.tee $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $0 + local.get $4 + local.get $2 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else + local.get $4 + local.get $1 + local.get $1 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $1 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $1 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $1 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $1 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $1 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa64_dec_lut + end + local.get $0 + local.get $3 + i32.add + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 255 + i32.and + local.tee $2 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $2 + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + local.get $1 + i32.const 255 + i32.and + local.set $1 + i32.const 3 + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + local.get $1 + i32.const 100 + i32.ge_u + select + local.set $2 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $std/array/Proxy + block $std/array/Dim + block $~lib/typedarray/Uint8Array + block $std/array/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $std/array/Ref $~lib/typedarray/Uint8Array $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $std/array/Dim $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/array + ) + (func $~lib/array/Array#constructor (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $0 + local.get $0 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/array/Ref#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $0 + local.get $2 + i32.add + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.gt_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.tee $2 + local.get $0 + local.get $3 + i32.add + local.get $3 + local.get $0 + local.get $0 + local.get $3 + i32.gt_s + select + local.get $3 + i32.const 0 + i32.lt_s + select + local.tee $0 + i32.lt_s + if + local.get $2 + local.get $4 + i32.add + local.get $1 + local.get $0 + local.get $2 + i32.sub + memory.fill + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + ) + (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + i32.const 2147483647 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $0 + i32.add + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.gt_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + local.get $3 + i32.add + local.get $3 + local.get $0 + local.get $0 + local.get $3 + i32.gt_s + select + local.get $3 + i32.const 0 + i32.lt_s + select + local.set $0 + block $__inlined_func$~lib/util/bytes/FILL$139 + local.get $1 + i32.eqz + local.get $1 + i32.const -1 + i32.eq + i32.or + if + local.get $0 + local.get $2 + i32.gt_s + if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $0 + local.get $2 + i32.sub + i32.const 2 + i32.shl + memory.fill + end + br $__inlined_func$~lib/util/bytes/FILL$139 + end + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + ) + (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + i32.const 2147483647 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#fill (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $0 + i32.add + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.gt_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + local.get $3 + i32.add + local.get $3 + local.get $0 + local.get $0 + local.get $3 + i32.gt_s + select + local.get $3 + i32.const 0 + i32.lt_s + select + local.set $0 + block $__inlined_func$~lib/util/bytes/FILL$148 + local.get $1 + i32.reinterpret_f32 + i32.eqz + if + local.get $0 + local.get $2 + i32.gt_s + if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.const 0 + local.get $0 + local.get $2 + i32.sub + i32.const 2 + i32.shl + memory.fill + end + br $__inlined_func$~lib/util/bytes/FILL$148 + end + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $1 + call $~lib/array/Array#get:length + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f32.ne + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f32.ne + else + i32.const 0 + end + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + f64.promote_f32 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + f64.promote_f32 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $3 + f32.ne + br_if $folding-inner0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + ) + (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 f32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + i32.const 2147483647 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/internalCapacity (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_s + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $4 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $3 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.set $1 + local.get $2 + if + i32.const 1073741820 + local.get $4 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $1 + end + block $__inlined_func$~lib/rt/itcms/__renew$653 + local.get $3 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u + if + local.get $4 + local.get $1 + i32.store offset=16 + local.get $3 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$653 + end + local.get $1 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $3 + local.get $1 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $1 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $2 + local.get $3 + i32.ne + if + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $1 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#pop (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 0 + i32.le_s + if + i32.const 2640 + i32.const 1104 + i32.const 271 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1344 + i32.const 1104 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 143 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + local.tee $2 + local.get $3 + i32.add + local.tee $4 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 224 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $5 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + local.tee $0 + memory.copy + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $0 + local.get $5 + i32.add + local.get $1 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $3 + local.get $5 + i32.lt_s + select + local.set $3 + local.get $4 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $5 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $5 + local.get $1 + local.get $5 + i32.lt_s + select + end + local.tee $1 + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $5 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $5 + local.get $2 + local.get $5 + i32.lt_s + select + end + local.tee $2 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + local.get $5 + i32.add + local.tee $3 + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + else + local.get $3 + local.get $5 + local.get $3 + local.get $5 + i32.lt_s + select + end + local.get $2 + i32.sub + local.tee $2 + local.get $5 + local.get $1 + i32.sub + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 2 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/array/Array#copyWithin + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $2 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + ) + (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.load offset=12 + i32.const 1 + i32.add + local.tee $2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const 4 + i32.add + local.get $3 + local.get $2 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + memory.copy + local.get $3 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#slice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $4 + local.get $5 + i32.const 8 + i32.sub + local.set $6 + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.add + local.get $4 + i32.lt_u + if + local.get $1 + local.get $2 + i32.add + local.tee $7 + i64.load + local.tee $3 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $3 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.set $3 + local.get $7 + local.get $2 + local.get $6 + i32.add + local.get $1 + i32.sub + local.tee $7 + i64.load + local.tee $8 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $8 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $8 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $8 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + i64.store + local.get $7 + local.get $3 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $3 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + i64.store + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $5 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $4 + i32.lt_u + if + local.get $1 + local.get $2 + i32.add + local.tee $6 + i32.load8_u + local.set $7 + local.get $6 + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.add + local.tee $6 + i32.load8_u + i32.store8 + local.get $6 + local.get $7 + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#reverse (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $4 + i32.const 1 + i32.gt_u + if + local.get $4 + i32.const 1 + i32.shr_u + local.set $3 + local.get $4 + i32.const 2 + i32.sub + local.set $5 + loop $while-continue|0 + local.get $1 + i32.const 1 + i32.add + local.get $3 + i32.lt_u + if + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load + i32.const 16 + i32.rotr + local.set $7 + local.get $6 + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load + i32.const 16 + i32.rotr + i32.store + local.get $6 + local.get $7 + i32.store + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u + local.set $6 + local.get $5 + local.get $2 + local.get $4 + local.get $1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u + i32.store16 + local.get $5 + local.get $6 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/array/Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#indexOf + i32.const 0 + i32.ge_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.tee $4 + i32.sub + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $5 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.tee $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $5 + i32.const 2 + i32.shl + memory.copy + local.get $4 + local.get $5 + i32.add + local.tee $4 + local.get $3 + i32.ne + if + local.get $6 + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $4 + i32.sub + i32.const 2 + i32.shl + memory.copy + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + local.get $5 + i32.sub + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#splice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $4 + i32.sub + local.tee $1 + local.get $1 + i32.const 2 + i32.gt_s + select + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.tee $3 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $1 + i32.const 2 + i32.shl + memory.copy + local.get $2 + local.get $1 + local.get $4 + i32.add + local.tee $4 + i32.ne + if + local.get $6 + local.get $3 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $2 + local.get $4 + i32.sub + i32.const 2 + i32.shl + memory.copy + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + local.get $1 + i32.sub + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 6416 + i32.const 1104 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1344 + i32.const 1104 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 100 + i32.eq + ) + (func $~lib/array/Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $2 + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + ) + (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 10 + i32.lt_s + ) + (func $start:std/array~anonymous|14 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.lt_s + ) + (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 10 + i32.gt_s + ) + (func $start:std/array~anonymous|19 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.gt_s + ) + (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $3) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|24 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.eqz + if + loop $for-loop|0 + local.get $3 + i32.const 4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $3 + i32.const 100 + i32.add + call $~lib/array/Array#push + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 + end + end + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $3 + i32.const 200 + i32.add + call $~lib/array/Array#push + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|3 + end + end + end + local.get $1 + i32.const 2 + i32.eq + local.get $0 + i32.const 202 + i32.ne + i32.and + if + i32.const 0 + i32.const 1552 + i32.const 767 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|27 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#map (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=12 + local.tee $3 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + local.set $4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $3 + local.get $5 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + i32.const 2 + i32.shl + local.tee $5 + local.get $0 + i32.load offset=4 + i32.add + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $4 + local.get $5 + i32.add + local.get $6 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|29 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + local.set $4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $5 + call $~lib/array/Array#push + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|33 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $~lib/array/Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $5 + local.get $3 + local.get $0 + local.get $1 + i32.load + call_indirect (type $4) + local.set $2 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $start:std/array~anonymous|38 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 1 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.add + ) + (func $start:std/array~anonymous|40 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.add + ) + (func $~lib/array/Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|0 + local.get $3 + i32.const 0 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $3 + local.get $0 + local.get $1 + i32.load + call_indirect (type $4) + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/array/Dim#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i32) + (local $16 i32) + (local $17 f32) + (local $18 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + f32.load offset=8 + local.set $18 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $18 + local.get $9 + local.get $17 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $18 + local.get $2 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store offset=4 + local.get $0 + local.get $9 + local.get $18 + local.get $1 + select + f32.store offset=8 + end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + f32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $11 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $14 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $14 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $15 + local.get $11 + i32.add + local.tee $16 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $15 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $16 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#sort@varargs (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 10256 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 10256 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/sort/SORT (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 f64) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) + (local $16 f64) + (local $17 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f64.load + local.set $16 + local.get $0 + f64.load offset=8 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $16 + local.get $16 + local.get $17 + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store + local.get $0 + f64.load offset=16 + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $16 + local.get $17 + local.get $1 + select + local.tee $16 + local.get $8 + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + local.set $1 + local.get $0 + local.get $8 + local.get $16 + local.get $1 + select + f64.store offset=8 + local.get $0 + local.get $16 + local.get $8 + local.get $1 + select + f64.store offset=16 + end + local.get $0 + f64.load + local.set $8 + local.get $0 + f64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $8 + local.get $8 + local.get $16 + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store + local.get $0 + local.get $8 + local.get $16 + local.get $1 + select + f64.store offset=8 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $3 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + i32.shl + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $4 + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $10 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 3 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + call $~lib/util/sort/extendRunRight + local.tee $3 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $3 + local.get $1 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + loop $while-continue|2 + local.get $3 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + local.get $3 + i32.const 1 + i32.add + local.tee $5 + local.get $9 + call $~lib/util/sort/extendRunRight + local.tee $4 + local.get $5 + i32.sub + i32.const 1 + i32.add + local.tee $6 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + local.get $5 + local.get $9 + local.get $5 + i32.const 31 + i32.add + local.tee $4 + local.get $4 + local.get $9 + i32.gt_s + select + local.tee $4 + local.get $6 + call $~lib/util/sort/insertionSort + end + local.get $2 + local.get $5 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $6 + loop $for-loop|3 + local.get $1 + local.get $6 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $7 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + local.get $7 + local.get $2 + local.get $3 + local.get $12 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $7 + local.set $2 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $6 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $2 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $5 + local.set $2 + local.get $4 + local.set $3 + local.get $6 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $10 + i32.add + i32.load + local.tee $3 + i32.const -1 + i32.ne + if + local.get $2 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + local.get $3 + local.get $2 + local.get $9 + local.get $12 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $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 i64) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store + local.get $0 + i32.load offset=8 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store offset=4 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/sort/SORT (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 $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store + local.get $0 + i32.load offset=8 + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $1 + local.get $2 + local.get $3 + select + local.tee $1 + local.get $4 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $2 + local.get $0 + local.get $4 + local.get $1 + local.get $2 + select + i32.store offset=4 + local.get $0 + local.get $1 + local.get $4 + local.get $2 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + select + i32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $3 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + i32.shl + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $4 + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $9 + i32.add + local.set $10 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $9 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $8 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $8 + local.get $8 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + loop $while-continue|2 + local.get $4 + local.get $8 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $5 + local.get $8 + call $~lib/util/sort/extendRunRight + local.tee $3 + local.get $5 + i32.sub + i32.const 1 + i32.add + local.tee $6 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + local.get $0 + local.get $5 + local.get $8 + local.get $5 + i32.const 31 + i32.add + local.tee $3 + local.get $3 + local.get $8 + i32.gt_s + select + local.tee $3 + local.get $6 + call $~lib/util/sort/insertionSort + end + local.get $2 + local.get $5 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $8 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $12 + i64.div_u + local.get $3 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $12 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $6 + loop $for-loop|3 + local.get $1 + local.get $6 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $13 + local.get $9 + i32.add + local.tee $14 + i32.load + local.tee $7 + i32.const -1 + i32.ne + if + local.get $10 + local.get $13 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + local.get $0 + local.get $7 + local.get $2 + local.get $4 + local.get $11 + call $~lib/util/sort/mergeRuns + local.get $14 + i32.const -1 + i32.store + local.get $7 + local.set $2 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $6 + i32.const 2 + i32.shl + local.tee $1 + local.get $9 + i32.add + local.get $2 + i32.store + local.get $1 + local.get $10 + i32.add + local.get $4 + i32.store + local.get $5 + local.set $2 + local.get $3 + local.set $4 + local.get $6 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $9 + i32.add + i32.load + local.tee $3 + i32.const -1 + i32.ne + if + local.get $2 + local.get $10 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + local.get $0 + local.get $3 + local.get $2 + local.get $8 + local.get $11 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $11 + call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array#constructor + local.tee $2 + i32.store + loop $for-loop|0 + local.get $0 + local.get $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + local.get $0 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/math/NativeMath.random + local.get $0 + f64.convert_i32_s + f64.mul + i32.trunc_sat_f64_s + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/array/assertSorted (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + block $__inlined_func$std/array/isSorted$658 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/array/Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.set $3 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted$658 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1080 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/array/assertSortedDefault (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11120 + i32.store offset=4 + local.get $0 + i32.const 11120 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/insertionSort (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 $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $8 + loop $for-loop|0 + local.get $2 + local.get $8 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load offset=4 + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + local.tee $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + local.tee $3 + i32.store offset=12 + end + local.get $8 + i32.const 1 + i32.sub + local.set $9 + loop $while-continue|1 + local.get $1 + local.get $9 + i32.le_s + if + block $while-break|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $5 + local.get $7 + i32.store offset=8 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + br $while-continue|1 + end + end + end + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $9 + i32.le_s + if + block $while-break|2 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $5 + local.get $3 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + br $while-continue|2 + end + end + end + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.add + local.set $8 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load + local.tee $5 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $5 + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.tee $5 + i32.store offset=8 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $1 + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.add + local.set $7 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $4 + local.get $7 + local.get $2 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $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 i64) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $4 + local.get $4 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $1 + select + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $3 + local.get $1 + select + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $4 + local.get $4 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $1 + select + i32.store offset=4 + local.get $0 + local.get $4 + local.get $3 + local.get $1 + select + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $4 + local.get $4 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $1 + select + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $1 + select + i32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $5 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + i32.shl + local.set $3 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $4 + global.get $~lib/rt/tlsf/ROOT + local.get $3 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 + i32.add + local.set $12 + loop $for-loop|1 + local.get $5 + local.get $7 + i32.gt_u + if + local.get $13 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $14 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 31 + local.get $14 + local.get $14 + i32.const 31 + i32.ge_s + select + local.tee $5 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $7 + i32.const 0 + local.set $1 + loop $while-continue|2 + local.get $5 + local.get $14 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $5 + i32.const 1 + i32.add + local.tee $4 + local.get $14 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $6 + local.get $4 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $4 + local.get $14 + local.get $4 + i32.const 31 + i32.add + local.tee $3 + local.get $3 + local.get $14 + i32.gt_s + select + local.tee $6 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $1 + local.get $4 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $14 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $10 + i64.div_u + local.get $4 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $3 + loop $for-loop|3 + local.get $3 + local.get $7 + i32.lt_u + if + local.get $7 + i32.const 2 + i32.shl + local.tee $9 + local.get $13 + i32.add + local.tee $8 + i32.load + local.tee $15 + i32.const -1 + i32.ne + if + local.get $9 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $15 + local.get $1 + local.get $5 + local.get $11 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $8 + i32.const -1 + i32.store + local.get $15 + local.set $1 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|3 + end + end + local.get $3 + i32.const 2 + i32.shl + local.tee $7 + local.get $13 + i32.add + local.get $1 + i32.store + local.get $7 + local.get $12 + i32.add + local.get $5 + i32.store + local.get $4 + local.set $1 + local.get $6 + local.set $5 + local.get $3 + local.set $7 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $7 + if + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $13 + i32.add + i32.load + local.tee $3 + i32.const -1 + i32.ne + if + local.get $1 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $3 + local.get $1 + local.get $14 + local.get $11 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|4 + end + end + local.get $11 + call $~lib/rt/tlsf/__free + local.get $13 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $start:std/array~anonymous|52 (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + block $__inlined_func$std/array/isSorted<~lib/array/Array>$660 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/array/Array#sort + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + local.get $1 + local.set $0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $1 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $3 + local.get $0 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted<~lib/array/Array>$660 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1080 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + local.get $0 + local.get $1 + i32.eq + i32.or + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + local.get $4 + i32.or + i32.eqz + br_if $folding-inner0 + local.get $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $4 + local.get $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.tee $2 + i32.const 4 + i32.ge_u + if (result i32) + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $0 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if + local.get $0 + i32.load16_u + local.tee $3 + local.get $1 + i32.load16_u + local.tee $6 + i32.ne + if + local.get $3 + local.get $6 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + end + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + local.get $5 + i32.sub + local.get $0 + select + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl$1 (result i32) + local.get $2 + i32.const 4 + i32.ge_u + if (result i32) + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $0 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if + local.get $0 + i32.load16_u + local.tee $3 + local.get $1 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $3 + local.get $4 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl$1 + end + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + end + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$736 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/string/String#concat$736 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.le_s + select + i32.const 1 + i32.shl + local.set $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.ge_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + i32.sub + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return + end + local.get $3 + i32.eqz + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $3 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#join (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$738 + local.get $0 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$738 + end + local.get $7 + i32.eqz + if + local.get $6 + i32.load + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$738 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 11 + i32.add + local.get $7 + i32.mul + i32.const 11 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $5 + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $2 + local.get $5 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $1 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$738 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#join (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$739 + local.get $0 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$739 + end + local.get $7 + i32.eqz + if + local.get $6 + i32.load + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$739 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 10 + i32.add + local.get $7 + i32.mul + i32.const 10 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $5 + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $2 + local.get $5 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $1 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$739 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return + end + local.get $7 + i32.eqz + if + local.get $0 + f64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 12320 + local.set $0 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $3 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.ne + if + i32.const 12352 + local.set $0 + local.get $3 + local.get $3 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 12384 + i32.const 12432 + local.get $3 + f64.const 0 + f64.lt + select + local.set $0 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 12464 + local.get $3 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 12464 + local.get $1 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12288 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12284 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 28 + i32.add + local.get $7 + i32.mul + i32.const 28 + i32.add + local.tee $5 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $1 + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 12288 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $5 + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/string/joinStringArray (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $5 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return + end + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 11568 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $4 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $3 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $5 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=12 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $5 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=4 + local.get $7 + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $7 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.get $7 + i32.add + local.set $4 + end + local.get $1 + if + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $4 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array<~lib/string/String|null>#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/joinStringArray + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + block $__inlined_func$~lib/util/string/joinReferenceArray$4 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + local.get $0 + i32.const 1 + i32.sub + local.tee $2 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + br $__inlined_func$~lib/util/string/joinReferenceArray$4 + end + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 13632 + else + i32.const 11568 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray$4 + end + i32.const 11568 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11568 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=4 + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.store + local.get $3 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 13632 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 13632 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 11856 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 13632 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 13632 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 11856 + call $~lib/array/Array#join + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$740 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$740 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load8_s + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$740 + end + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + local.get $6 + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $5 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 11856 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$740 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return + end + local.get $7 + i32.eqz + if + local.get $0 + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64$485 + local.get $3 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7712 + local.set $1 + br $__inlined_func$~lib/util/number/utoa64$485 + end + local.get $3 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.wrap_i64 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $3 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $3 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $3 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $3 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $3 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $3 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $3 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + local.get $0 + call $~lib/util/number/utoa64_dec_lut + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 20 + i32.add + local.get $7 + i32.mul + i32.const 20 + i32.add + local.tee $5 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $1 + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 11856 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $5 + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring + local.set $1 + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 11856 + call $~lib/array/Array<~lib/string/String|null>#join + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$743 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$743 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load8_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$743 + end + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + local.get $6 + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $5 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 11856 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$743 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 11856 + call $~lib/array/Array#join + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + local.get $0 + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 + end + local.get $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#toString + else + i32.const 11568 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 + end + i32.const 11568 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11568 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=4 + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $6 + call $~lib/array/Array#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end + local.get $2 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 11856 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + call $~lib/array/Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $4 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + if (result i32) + local.get $5 + i32.load offset=12 + else + i32.const 0 + end + local.get $2 + i32.add + local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=8 + local.get $0 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=4 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + if + local.get $1 + local.get $6 + i32.add + local.get $5 + i32.load offset=4 + local.get $5 + i32.load offset=12 + i32.const 2 + i32.shl + local.tee $5 + memory.copy + local.get $1 + local.get $5 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $start:std/array~anonymous|54 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1267 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1269 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $start:std/array + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 f64) + (local $7 f32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 444 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 444 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 48960 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $~lib/array/Array#constructor + global.set $std/array/arr + i32.const 0 + call $std/array/Ref#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $2 + local.get $9 + i32.store + local.get $2 + local.get $9 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $9 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 53 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 1696 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 1728 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/array/Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 1760 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 1792 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.const 2 + i32.const -2 + call $~lib/array/Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 1824 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 1856 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/array/Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 0 + i32.const 7 + i32.const 1888 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 1920 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 1968 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/array/Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 2016 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 86 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 2064 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.const 2 + i32.const -2 + call $~lib/array/Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 2112 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 2160 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/array/Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 2208 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 2256 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + f32.const 1 + i32.const 1 + i32.const 3 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 2304 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const 0 + i32.const 0 + call $~lib/array/Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 2352 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + f32.const 1 + i32.const 0 + i32.const -3 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 2400 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 2 + global.set $~argumentsLength + local.get $2 + f32.const 2 + i32.const -2 + call $~lib/array/Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 2448 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + f32.const 0 + i32.const 1 + i32.const 0 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 2496 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const -1 + i32.const 0 + call $~lib/array/Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 2544 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const -0 + i32.const 0 + call $~lib/array/Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 9 + i32.const 2592 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1552 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 130 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 42 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 134 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 140 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1552 + i32.const 141 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 142 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 43 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 146 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 148 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 44 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 153 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 154 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 45 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 159 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 160 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 161 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 162 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 163 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $8 + i32.store offset=20 + local.get $8 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $8 + i32.const 1 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $8 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $8 + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1552 + i32.const 171 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 2688 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#at + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 179 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 3 + call $~lib/array/Array#at + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 180 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const -1 + call $~lib/array/Array#at + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 181 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const -4 + call $~lib/array/Array#at + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 182 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/array/Array#constructor + local.tee $2 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + local.get $2 + call $~lib/array/Array#concat + local.tee $8 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $9 + i32.store + local.get $9 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 191 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $9 + i32.store + local.get $9 + call $~lib/array/Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 192 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 2736 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $8 + local.get $9 + call $~lib/array/Array#concat + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $9 + i32.store + local.get $9 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 196 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 199 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 46 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 47 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + local.get $2 + call $~lib/array/Array#concat + local.tee $8 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $9 + i32.store + local.get $9 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 207 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 208 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 209 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 210 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 211 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 212 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 3 + call $~lib/array/Array#__get + i32.const 46 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 213 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 4 + call $~lib/array/Array#__get + i32.const 47 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 214 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 217 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 2768 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1552 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $8 + call $~lib/array/Array#concat + local.tee $8 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 227 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1552 + i32.const 228 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2800 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.const 0 + i32.const 3 + call $~lib/array/Array#copyWithin@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2848 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2896 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.const 1 + i32.const 3 + call $~lib/array/Array#copyWithin@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2944 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 2992 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/array/Array#copyWithin@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3040 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 239 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3088 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.const 2 + i32.const 2 + call $~lib/array/Array#copyWithin@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3136 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 241 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3184 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + local.get $2 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3232 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 243 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3280 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + local.get $2 + i32.const 1 + i32.const 3 + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3328 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 245 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3376 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + local.get $2 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3424 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 247 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3472 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.const 0 + i32.const -2 + call $~lib/array/Array#copyWithin@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3520 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 249 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3568 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + local.get $2 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/array/Array#copyWithin + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3616 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 251 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3664 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + local.get $2 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/array/Array#copyWithin + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3712 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 253 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3760 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + local.get $2 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/array/Array#copyWithin + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3808 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 255 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3856 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.const -4 + i32.const -3 + call $~lib/array/Array#copyWithin@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3904 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $2 + local.get $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 257 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 42 + call $~lib/array/Array#unshift + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 265 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 266 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 267 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 268 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 269 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 3 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 270 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 41 + call $~lib/array/Array#unshift + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 274 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 275 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 41 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 276 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 277 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 2 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 278 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 3 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 279 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 4 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 280 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=12 + local.tee $8 + i32.const 0 + i32.le_s + if + i32.const 2640 + i32.const 1104 + i32.const 330 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + local.tee $9 + i32.load + local.get $9 + local.get $9 + i32.const 4 + i32.add + local.get $8 + i32.const 1 + i32.sub + local.tee $8 + i32.const 2 + i32.shl + local.tee $11 + memory.copy + local.get $9 + local.get $11 + i32.add + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/array/i + global.get $std/array/i + i32.const 41 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 289 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 290 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 291 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 292 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 293 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 294 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 3 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 295 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + global.set $std/array/i + global.get $std/array/i + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 299 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 300 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 301 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 302 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 303 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 304 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 3952 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/array/Array#slice@varargs + local.tee $8 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 4000 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $8 + local.get $9 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 314 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const 4 + call $~lib/array/Array#slice + local.tee $8 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 4032 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $8 + local.get $9 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 317 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.const 5 + call $~lib/array/Array#slice + local.tee $8 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 4064 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $8 + local.get $9 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 320 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/array/Array#slice@varargs + local.tee $8 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $8 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const -2 + call $~lib/array/Array#slice@varargs + local.tee $8 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 4112 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $8 + local.get $9 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 326 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const -1 + call $~lib/array/Array#slice + local.tee $8 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 4144 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $8 + local.get $9 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 329 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const -3 + i32.const -1 + call $~lib/array/Array#slice + local.tee $8 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 4176 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $8 + local.get $9 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 332 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const -1 + i32.const -3 + call $~lib/array/Array#slice + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1552 + i32.const 334 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 10 + call $~lib/array/Array#slice@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1552 + i32.const 335 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.gt_u + if + local.get $2 + i32.const 1 + i32.shr_u + local.set $9 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $9 + i32.lt_u + if + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $10 + i32.load + local.set $11 + local.get $10 + local.get $8 + local.get $2 + local.get $4 + i32.sub + i32.const 2 + i32.shl + i32.add + local.tee $10 + i32.load + i32.store + local.get $10 + local.get $11 + i32.store + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 343 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 2 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 347 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 43 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + i32.const 44 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 0 + i32.const 7 + i32.const 4208 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#reverse + local.tee $2 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.set $4 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.get $0 + i32.sub + i32.const 1 + i32.sub + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 354 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 0 + i32.const 7 + i32.const 4240 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#reverse + local.tee $2 + i32.store offset=64 + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.set $4 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.get $0 + i32.sub + i32.const 1 + i32.sub + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 359 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 17 + i32.const 0 + i32.const 7 + i32.const 4272 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#reverse + local.tee $2 + i32.store offset=68 + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.set $4 + loop $for-loop|2 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.get $0 + i32.sub + i32.const 1 + i32.sub + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 364 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 1 + i32.const 11 + i32.const 4320 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#reverse + local.tee $2 + i32.store offset=72 + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.set $4 + loop $for-loop|3 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.get $0 + i32.sub + i32.const 1 + i32.sub + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 369 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 1 + i32.const 11 + i32.const 4368 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#reverse + local.tee $2 + i32.store offset=76 + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.set $4 + loop $for-loop|4 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.get $0 + i32.sub + i32.const 1 + i32.sub + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 374 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 9 + i32.const 1 + i32.const 11 + i32.const 4416 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#reverse + local.tee $2 + i32.store offset=80 + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.set $4 + loop $for-loop|5 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.get $0 + i32.sub + i32.const 1 + i32.sub + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 379 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|5 + end + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 44 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + if + i32.const 0 + i32.const 1552 + i32.const 387 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 42 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 45 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 393 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const 100 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 396 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const -100 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 399 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const -2 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 402 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const -4 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 405 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 408 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const 1 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 411 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const 2 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 9 + i32.const 4464 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + block $__inlined_func$~lib/array/Array#indexOf$714 + local.get $2 + i32.load offset=12 + local.tee $4 + i32.eqz + local.get $4 + i32.const 0 + i32.le_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#indexOf$714 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + local.set $2 + loop $while-continue|05 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const nan:0x400000 + f32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/array/Array#indexOf$714 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|05 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $0 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 3 + i32.const 12 + i32.const 4496 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + block $__inlined_func$~lib/array/Array#indexOf$715 + local.get $2 + i32.load offset=12 + local.tee $4 + i32.eqz + local.get $4 + i32.const 0 + i32.le_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#indexOf$715 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + local.set $2 + loop $while-continue|07 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const nan:0x8000000000000 + f64.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/array/Array#indexOf$715 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|07 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $0 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 4528 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=84 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 2 + call $~lib/array/Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 424 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 7 + call $~lib/array/Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 425 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/array/Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 426 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.const 2 + call $~lib/array/Array#lastIndexOf + if + i32.const 0 + i32.const 1552 + i32.const 427 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.const -2 + call $~lib/array/Array#lastIndexOf + if + i32.const 0 + i32.const 1552 + i32.const 428 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.const -1 + call $~lib/array/Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 429 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 44 + i32.const 0 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 437 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 42 + i32.const 0 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 45 + i32.const 0 + call $~lib/array/Array#includes + if + i32.const 0 + i32.const 1552 + i32.const 443 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const 100 + call $~lib/array/Array#includes + if + i32.const 0 + i32.const 1552 + i32.const 446 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const -100 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 449 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const -2 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 452 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const -4 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 455 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const 0 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 458 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const 1 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const 2 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 464 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/array/Array#includes$716 (result i32) + i32.const 1 + i32.const 2 + i32.const 9 + i32.const 4576 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=12 + local.tee $4 + i32.eqz + local.get $4 + i32.const 0 + i32.le_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$~lib/array/Array#includes$716 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + local.set $2 + loop $while-continue|09 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $7 + local.get $7 + f32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + br $__inlined_func$~lib/array/Array#includes$716 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|09 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 466 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/array/Array#includes$717 (result i32) + i32.const 1 + i32.const 3 + i32.const 12 + i32.const 4608 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=12 + local.tee $4 + i32.eqz + local.get $4 + i32.const 0 + i32.le_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$~lib/array/Array#includes$717 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + local.set $2 + loop $while-continue|011 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $6 + local.get $6 + f64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + br $__inlined_func$~lib/array/Array#includes$717 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|011 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 467 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 1 + i32.const 1 + call $~lib/array/Array#splice + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 471 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $std/array/internalCapacity + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 472 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 473 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 474 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4640 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 0 + call $~lib/array/Array#splice@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4688 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 481 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 4736 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 482 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4768 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/array/Array#splice + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 4816 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 485 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4848 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 4896 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 2 + call $~lib/array/Array#splice@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 4944 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 489 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 4976 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 490 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5008 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + i32.const 2 + i32.const 2 + call $~lib/array/Array#splice + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 5056 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 493 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 5088 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 494 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5120 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/array/Array#splice + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 5168 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 497 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 5200 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 498 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5248 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/array/Array#splice@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 5296 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 501 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 5328 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 502 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5376 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -2 + call $~lib/array/Array#splice@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 5424 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 505 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 5456 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 506 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5488 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + i32.const -2 + i32.const 1 + call $~lib/array/Array#splice + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 5536 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 5568 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 510 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5616 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + i32.const -7 + i32.const 1 + call $~lib/array/Array#splice + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 5664 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 513 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 5696 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 514 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5744 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + i32.const -2 + i32.const -1 + call $~lib/array/Array#splice + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 5792 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 517 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5824 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 518 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5872 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + i32.const 1 + i32.const -2 + call $~lib/array/Array#splice + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 5920 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 521 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 5952 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 522 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 6000 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/array/Array#splice + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 6048 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 525 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 6080 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 526 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 6128 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + i32.const 7 + i32.const 0 + call $~lib/array/Array#splice + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 6176 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 529 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 6208 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 530 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 6256 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + i32.const 7 + i32.const 5 + call $~lib/array/Array#splice + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 6304 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 533 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 6336 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 534 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 10 + i32.const 6384 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=92 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/array/Array#splice + local.tee $2 + i32.store offset=96 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1552 + i32.const 538 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1552 + i32.const 539 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=100 + local.get $2 + i32.const 0 + i32.const 1 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $2 + i32.store offset=92 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/array/Array#splice + local.tee $0 + i32.store offset=96 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 544 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 545 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 546 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 548 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 549 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 550 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 2 + call $~lib/array/Array#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 551 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=104 + local.get $2 + i32.const 0 + i32.const 1 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.const 0 + call $~lib/array/Array#__set + local.get $2 + i32.const 2 + i32.const 2 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $2 + i32.store offset=108 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=12 + local.tee $4 + i32.const 0 + local.get $4 + i32.const 0 + i32.le_s + select + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 1 + local.get $4 + local.get $8 + i32.sub + local.tee $9 + local.get $9 + i32.const 1 + i32.gt_s + select + local.tee $9 + i32.const 0 + local.get $9 + i32.const 0 + i32.gt_s + select + local.tee $9 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__newArray + local.tee $10 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + local.tee $11 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.tee $12 + local.get $9 + i32.const 2 + i32.shl + memory.copy + local.get $8 + local.get $9 + i32.add + local.tee $8 + local.get $4 + i32.ne + if + local.get $12 + local.get $11 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $8 + i32.sub + i32.const 2 + i32.shl + memory.copy + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $4 + local.get $9 + i32.sub + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=112 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/array/Array#get:length + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 556 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.const 0 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=116 + local.get $0 + i32.eqz + if + i32.const 6544 + i32.const 1552 + i32.const 557 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + if + i32.const 0 + i32.const 1552 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=120 + local.get $0 + i32.eqz + if + i32.const 6544 + i32.const 1552 + i32.const 561 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 1 + i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6672 + i32.store offset=8 + local.get $0 + i32.const 6672 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + if + i32.const 0 + i32.const 1552 + i32.const 574 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6704 + i32.store offset=8 + local.get $0 + i32.const 6704 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6736 + i32.store offset=8 + local.get $0 + i32.const 6736 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6768 + i32.store offset=8 + local.get $0 + i32.const 6768 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 588 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 589 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6800 + i32.store offset=8 + local.get $0 + i32.const 6800 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + if + i32.const 0 + i32.const 1552 + i32.const 591 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6832 + i32.store offset=8 + local.get $0 + i32.const 6832 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 6864 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=124 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=8 + local.get $0 + i32.const 6912 + call $~lib/array/Array#findLastIndex + global.set $std/array/i + global.get $std/array/i + if + i32.const 0 + i32.const 1552 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6944 + i32.store offset=8 + local.get $0 + i32.const 6944 + call $~lib/array/Array#findLastIndex + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6976 + i32.store offset=8 + local.get $0 + i32.const 6976 + call $~lib/array/Array#findLastIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 624 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7008 + i32.store offset=8 + local.get $0 + i32.const 7008 + call $~lib/array/Array#findLastIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7040 + i32.store offset=8 + local.get $0 + i32.const 7040 + call $~lib/array/Array#every + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 640 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7072 + i32.store offset=8 + local.get $0 + i32.const 7072 + call $~lib/array/Array#every + if + i32.const 0 + i32.const 1552 + i32.const 643 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7104 + i32.store offset=8 + local.get $0 + i32.const 7104 + call $~lib/array/Array#every + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 651 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 652 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7136 + i32.store offset=8 + local.get $0 + i32.const 7136 + call $~lib/array/Array#every + if + i32.const 0 + i32.const 1552 + i32.const 654 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7168 + i32.store offset=8 + local.get $0 + i32.const 7168 + call $~lib/array/Array#every + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 667 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 668 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7200 + i32.store offset=8 + local.get $0 + i32.const 7200 + call $~lib/array/Array#some + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 678 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7232 + i32.store offset=8 + local.get $0 + i32.const 7232 + call $~lib/array/Array#some + if + i32.const 0 + i32.const 1552 + i32.const 681 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7264 + i32.store offset=8 + local.get $0 + i32.const 7264 + call $~lib/array/Array#some + if + i32.const 0 + i32.const 1552 + i32.const 689 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 690 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7296 + i32.store offset=8 + local.get $0 + i32.const 7296 + call $~lib/array/Array#some + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 692 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7328 + i32.store offset=8 + local.get $0 + i32.const 7328 + call $~lib/array/Array#some + if + i32.const 0 + i32.const 1552 + i32.const 705 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 706 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7360 + i32.store offset=8 + local.get $0 + i32.const 7360 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 717 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7392 + i32.store offset=8 + local.get $0 + i32.const 7392 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 726 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 727 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=8 + local.get $0 + i32.const 7424 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 406 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 730 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $0 + i32.const 7456 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 744 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 745 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7488 + i32.store offset=8 + local.get $0 + i32.const 7488 + call $~lib/array/Array#forEach + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 770 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|6 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|6 + end + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 1 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9296 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=12 + local.tee $8 + i32.const 2 + i32.const 16 + i32.const 0 + call $~lib/rt/__newArray + local.tee $9 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.load offset=4 + local.set $10 + i32.const 0 + local.set $4 + loop $for-loop|012 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $4 + local.get $8 + local.get $2 + i32.load offset=12 + local.tee $11 + local.get $8 + local.get $11 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $4 + i32.const 2 + i32.shl + local.tee $11 + local.get $2 + i32.load offset=4 + i32.add + i32.load + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 3 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $12 + local.get $4 + local.get $2 + i32.const 9296 + i32.load + call_indirect (type $1) + local.tee $12 + i32.store offset=12 + local.get $10 + local.get $11 + i32.add + local.get $12 + i32.store + local.get $9 + local.get $12 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|012 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=128 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9328 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=12 + local.tee $8 + i32.const 2 + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $9 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.load offset=4 + local.set $10 + i32.const 0 + local.set $4 + loop $for-loop|013 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $4 + local.get $8 + local.get $2 + i32.load offset=12 + local.tee $11 + local.get $8 + local.get $11 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $4 + i32.const 2 + i32.shl + local.tee $11 + local.get $2 + i32.load offset=4 + i32.add + i32.load + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $10 + local.get $11 + i32.add + local.get $12 + local.get $4 + local.get $2 + i32.const 9328 + i32.load + call_indirect (type $15) + f32.store + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|013 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=132 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/array/Array#get:length + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 786 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + f32.ne + if + i32.const 0 + i32.const 1552 + i32.const 787 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9360 + i32.store offset=8 + local.get $0 + i32.const 9360 + call $~lib/array/Array#map + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 796 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 797 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9392 + i32.store offset=8 + local.get $0 + i32.const 9392 + call $~lib/array/Array#map + global.get $std/array/i + i32.const 406 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 804 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9424 + i32.store offset=8 + local.get $0 + i32.const 9424 + call $~lib/array/Array#map + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 819 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 820 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9456 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 9456 + call $~lib/array/Array#filter + local.tee $0 + i32.store offset=136 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 830 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9488 + i32.store offset=8 + local.get $0 + i32.const 9488 + call $~lib/array/Array#filter + drop + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 839 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 840 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9520 + i32.store offset=8 + local.get $0 + i32.const 9520 + call $~lib/array/Array#filter + drop + global.get $std/array/i + i32.const 406 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 847 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9552 + i32.store offset=8 + local.get $0 + i32.const 9552 + call $~lib/array/Array#filter + drop + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 862 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 863 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store offset=8 + local.get $0 + i32.const 9584 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 873 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9616 + i32.store offset=8 + local.get $0 + i32.const 9616 + i32.const 4 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 877 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9648 + i32.store offset=8 + local.get $0 + i32.const 9648 + i32.const 0 + call $~lib/array/Array#reduce + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 880 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9680 + i32.store offset=8 + local.get $0 + i32.const 9680 + i32.const 0 + call $~lib/array/Array#reduce + if + i32.const 0 + i32.const 1552 + i32.const 883 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9712 + i32.store offset=8 + local.get $0 + i32.const 9712 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 892 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9744 + i32.store offset=8 + local.get $0 + i32.const 9744 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 894 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9776 + i32.store offset=8 + local.get $0 + i32.const 9776 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 907 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 908 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9808 + i32.store offset=8 + local.get $0 + i32.const 9808 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 918 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9840 + i32.store offset=8 + local.get $0 + i32.const 9840 + i32.const 4 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 922 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9872 + i32.store offset=8 + local.get $0 + i32.const 9872 + i32.const 0 + call $~lib/array/Array#reduceRight + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 925 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9904 + i32.store offset=8 + local.get $0 + i32.const 9904 + i32.const 0 + call $~lib/array/Array#reduceRight + if + i32.const 0 + i32.const 1552 + i32.const 928 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9936 + i32.store offset=8 + local.get $0 + i32.const 9936 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 936 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 937 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9968 + i32.store offset=8 + local.get $0 + i32.const 9968 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 939 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10000 + i32.store offset=8 + local.get $0 + i32.const 10000 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 952 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1552 + i32.const 953 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 1 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + i64.const -7046029254386353131 + call $~lib/bindings/dom/Math.random + i64.reinterpret_f64 + local.tee $5 + local.get $5 + i64.eqz + select + local.tee $5 + local.get $5 + i64.const 33 + i64.shr_u + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $5 + local.get $5 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $5 + local.get $5 + i64.const 33 + i64.shr_u + i64.xor + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + local.tee $5 + local.get $5 + i64.const 33 + i64.shr_u + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $5 + local.get $5 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $5 + local.get $5 + i64.const 33 + i64.shr_u + i64.xor + global.set $~lib/math/random_state1_64 + i32.const 1 + global.set $~lib/math/random_seeded + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + i32.const 23 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=140 + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=144 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 80 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=148 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 90 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 90 + i32.store offset=4 + local.get $0 + i32.const 1 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=152 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 70 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 95 + i32.store offset=4 + local.get $0 + i32.const 2 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + i32.store offset=4 + local.get $0 + i32.const 3 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=160 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 80 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 110 + i32.store offset=4 + local.get $0 + i32.const 4 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=164 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 110 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 115 + i32.store offset=4 + local.get $0 + i32.const 5 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=168 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 120 + i32.store offset=4 + local.get $0 + i32.const 6 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=172 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 70 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 125 + i32.store offset=4 + local.get $0 + i32.const 7 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=176 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 70 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 130 + i32.store offset=4 + local.get $0 + i32.const 8 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=180 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 135 + i32.store offset=4 + local.get $0 + i32.const 9 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=184 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 75 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 140 + i32.store offset=4 + local.get $0 + i32.const 10 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=188 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 70 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 140 + i32.store offset=4 + local.get $0 + i32.const 11 + local.get $2 + call $~lib/array/Array#__set + local.get $0 + global.set $std/array/inputStabArr + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + i32.const 23 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=192 + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=196 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 70 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 95 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=200 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 70 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 125 + i32.store offset=4 + local.get $0 + i32.const 1 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=204 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 70 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 130 + i32.store offset=4 + local.get $0 + i32.const 2 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=208 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 70 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 140 + i32.store offset=4 + local.get $0 + i32.const 3 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=212 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 75 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 140 + i32.store offset=4 + local.get $0 + i32.const 4 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=216 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 80 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 110 + i32.store offset=4 + local.get $0 + i32.const 5 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=220 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 90 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 90 + i32.store offset=4 + local.get $0 + i32.const 6 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=224 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 80 + i32.store offset=4 + local.get $0 + i32.const 7 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=228 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + i32.store offset=4 + local.get $0 + i32.const 8 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=232 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 120 + i32.store offset=4 + local.get $0 + i32.const 9 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=236 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 135 + i32.store offset=4 + local.get $0 + i32.const 10 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=240 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 110 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 115 + i32.store offset=4 + local.get $0 + i32.const 11 + local.get $2 + call $~lib/array/Array#__set + local.get $0 + global.set $std/array/outputStabArr + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 9 + i32.const 10224 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=244 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + global.set $~argumentsLength + local.get $0 + call $~lib/array/Array#sort@varargs + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + i32.const 2 + i32.const 9 + i32.const 10288 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1091 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 9 + i32.const 10320 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=248 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + global.set $~argumentsLength + local.get $0 + call $~lib/array/Array#sort@varargs + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 8 + i32.const 2 + i32.const 9 + i32.const 10384 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1095 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 3 + i32.const 12 + i32.const 10448 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=252 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 8 + i32.const 3 + i32.const 12 + i32.const 10576 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + block $__inlined_func$std/array/isArraysEqual$7 (result i32) + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + block $folding-inner1 + block $folding-inner01 + local.get $4 + call $~lib/array/Array#get:length + local.get $8 + i32.ne + br_if $folding-inner01 + local.get $2 + local.get $4 + i32.eq + br_if $folding-inner1 + loop $for-loop|02 + local.get $0 + local.get $8 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + local.tee $6 + local.get $6 + f64.ne + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $0 + call $~lib/array/Array#__get + local.tee $6 + local.get $6 + f64.ne + else + i32.const 0 + end + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $0 + call $~lib/array/Array#__get + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.ne + br_if $folding-inner01 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $0 + call $~lib/array/Array#__get + local.get $6 + f64.ne + br_if $folding-inner01 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|02 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isArraysEqual$7 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1099 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 10672 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=256 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 10720 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10720 + i32.store offset=8 + local.get $0 + i32.const 10720 + call $~lib/array/Array#sort + drop + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 10752 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 10800 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=260 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 10880 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1107 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 10928 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=264 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 10960 + call $~lib/rt/__newArray + local.tee $8 + i32.store offset=268 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 10992 + call $~lib/rt/__newArray + local.tee $9 + i32.store offset=272 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 11024 + call $~lib/rt/__newArray + local.tee $10 + i32.store offset=276 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 11072 + call $~lib/rt/__newArray + local.tee $11 + i32.store offset=280 + global.get $~lib/memory/__stack_pointer + i32.const 64 + call $std/array/createReverseOrderedArray + local.tee $12 + i32.store offset=284 + global.get $~lib/memory/__stack_pointer + i32.const 128 + call $std/array/createReverseOrderedArray + local.tee $13 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + call $std/array/createReverseOrderedArray + local.tee $14 + i32.store offset=292 + global.get $~lib/memory/__stack_pointer + i32.const 10000 + call $std/array/createReverseOrderedArray + local.tee $0 + i32.store offset=296 + global.get $~lib/memory/__stack_pointer + i32.const 512 + call $std/array/createRandomOrderedArray + local.tee $2 + i32.store offset=300 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 11152 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $8 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1127 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 11184 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $9 + local.get $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1130 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $10 + local.get $11 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1133 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $12 + local.get $11 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store + local.get $13 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $13 + local.get $11 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1139 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $14 + local.get $11 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1142 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $0 + local.get $11 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1145 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $std/array/inputStabArr + local.tee $0 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $4 + i32.const 0 + local.get $4 + i32.const 0 + i32.le_s + select + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $8 + i32.sub + local.tee $4 + i32.const 0 + local.get $4 + i32.const 0 + i32.gt_s + select + local.tee $4 + i32.const 2 + i32.const 23 + i32.const 0 + call $~lib/rt/__newArray + local.tee $9 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.load offset=4 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.set $8 + i32.const 0 + local.set $0 + local.get $4 + i32.const 2 + i32.shl + local.set $4 + loop $while-continue|06 + local.get $0 + local.get $4 + i32.lt_u + if + local.get $0 + local.get $10 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + local.tee $11 + i32.store + local.get $9 + local.get $11 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|06 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11216 + i32.store offset=4 + local.get $9 + i32.const 11216 + call $~lib/array/Array#sort + local.tee $0 + i32.store offset=12 + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + global.get $std/array/inputStabArr + local.tee $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.set $2 + loop $for-loop|014 + local.get $1 + local.get $2 + i32.lt_s + if + block $for-break0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/array/Array#__get + local.tee $8 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/outputStabArr + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $9 + local.get $1 + call $~lib/array/Array#__get + local.tee $9 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.load + i32.ne + if (result i32) + i32.const 1 + else + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.load offset=4 + i32.ne + end + if + i32.const 0 + local.set $4 + br $for-break0 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|014 + end + end + end + local.get $4 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1076 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 64 + call $std/array/createRandomOrderedArray + local.tee $0 + i32.store offset=304 + global.get $~lib/memory/__stack_pointer + i32.const 257 + call $std/array/createRandomOrderedArray + local.tee $1 + i32.store offset=308 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11248 + i32.store offset=8 + local.get $0 + i32.const 11248 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11280 + i32.store offset=8 + local.get $0 + i32.const 11280 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11312 + i32.store offset=8 + local.get $1 + i32.const 11312 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11344 + i32.store offset=8 + local.get $1 + i32.const 11344 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $2 + local.get $4 + i32.store + local.get $2 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 32 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|015 + local.get $0 + i32.const 2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/array/Array#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const 1 + local.get $0 + i32.sub + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $2 + local.get $0 + local.get $4 + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|015 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=312 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11376 + i32.store offset=8 + local.get $2 + i32.const 11376 + call $std/array/assertSorted<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 32 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $2 + local.get $4 + i32.store + local.get $2 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2048 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 512 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|06 + local.get $0 + i32.const 512 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 31 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 511 + local.get $0 + i32.sub + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $4 + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|06 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=316 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11408 + i32.store offset=8 + local.get $2 + i32.const 11408 + call $std/array/assertSorted<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 34 + i32.const 11600 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=320 + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 34 + i32.const 11648 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=324 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11696 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11696 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + block $__inlined_func$std/array/isSorted<~lib/string/String|null>$662 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11696 + i32.store offset=12 + local.get $0 + i32.const 11696 + call $~lib/array/Array#sort + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11696 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $8 + loop $for-loop|07 + local.get $1 + local.get $8 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $1 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $10 + i32.const 11696 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted<~lib/string/String|null>$662 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|07 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1080 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.get $4 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 + end + local.get $0 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 + end + i32.const 0 + local.set $1 + loop $for-loop|08 + local.get $1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/array/Array#__get + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/array/Array#__get + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $8 + local.get $9 + call $~lib/string/String.__eq + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|08 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.store + local.get $9 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 1600 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $9 + local.get $1 + i32.store + local.get $9 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1600 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 400 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + i32.store + i32.const 0 + local.set $4 + loop $for-loop|019 + local.get $4 + i32.const 400 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + call $~lib/math/NativeMath.random + f64.const 32 + f64.mul + i32.trunc_sat_f64_s + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 11568 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11568 + i32.store + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $~lib/math/NativeMath.random + i32.const 10028 + i32.load + i32.const 1 + i32.shr_u + f64.convert_i32_s + f64.mul + f64.floor + i32.trunc_sat_f64_s + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 10032 + i32.store + block $__inlined_func$~lib/string/String#charAt$737 + local.get $12 + i32.const 10028 + i32.load + i32.const 1 + i32.shr_u + i32.ge_u + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $2 + br $__inlined_func$~lib/string/String#charAt$737 + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $12 + i32.const 1 + i32.shl + i32.const 10032 + i32.add + i32.load16_u + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + call $~lib/string/String.__concat + local.tee $0 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $9 + local.get $4 + local.get $0 + call $~lib/array/Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|019 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=328 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11728 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11728 + i32.store offset=8 + local.get $9 + i32.const 11728 + call $std/array/assertSorted<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + i32.const 0 + i32.const 37 + i32.const 11760 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + i32.const 0 + local.set $1 + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinBooleanArray$12 + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $2 + br $__inlined_func$~lib/util/string/joinBooleanArray$12 + end + block $folding-inner07 + local.get $0 + i32.eqz + if + i32.const 11792 + i32.const 11824 + local.get $8 + i32.load8_u + select + local.set $2 + br $folding-inner07 + end + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $9 + i32.const 5 + i32.add + local.get $0 + i32.mul + i32.const 5 + i32.add + local.tee $10 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + loop $for-loop|18 + local.get $0 + local.get $4 + i32.gt_s + if + local.get $4 + local.get $8 + i32.add + i32.load8_u + local.tee $11 + i32.eqz + i32.const 4 + i32.add + local.set $12 + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 11792 + i32.const 11824 + local.get $11 + select + local.get $12 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $12 + i32.add + local.set $1 + local.get $9 + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 11856 + local.get $9 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $9 + i32.add + local.set $1 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|18 + end + end + local.get $0 + local.get $8 + i32.add + i32.load8_u + local.tee $0 + i32.eqz + i32.const 4 + i32.add + local.set $4 + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 11792 + i32.const 11824 + local.get $0 + select + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.tee $0 + local.get $10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/string/String#substring + local.set $2 + br $folding-inner07 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinBooleanArray$12 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 11888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 11936 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 11568 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 11968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1194 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 8 + i32.const 12000 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 12032 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 11968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1195 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 12064 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 12096 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 12128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1196 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 6 + i32.const 3 + i32.const 12 + i32.const 12208 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 12288 + i32.store + call $~lib/util/string/joinFloatArray + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 13456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1197 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 34 + i32.const 13600 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 11568 + call $~lib/array/Array<~lib/string/String|null>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 13568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 13 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=332 + local.get $1 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.const 0 + call $~lib/array/Array#__set + local.get $1 + i32.const 2 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $1 + i32.store offset=336 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 13696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=340 + local.get $1 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__set + local.get $1 + i32.store offset=344 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/array/Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 13792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1203 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 13888 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=348 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 13920 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=352 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 13952 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=356 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 4 + i32.const 13984 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=360 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 11568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1213 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 13568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1214 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1215 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14064 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1216 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 0 + i32.const 38 + i32.const 14112 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1218 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 0 + i32.const 38 + i32.const 14176 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1219 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 1 + i32.const 11 + i32.const 14256 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$741 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $2 + br $__inlined_func$~lib/util/string/joinIntegerArray$741 + end + local.get $1 + i32.eqz + if + local.get $4 + i32.load16_u + call $~lib/util/number/utoa32 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$741 + end + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $8 + i32.const 10 + i32.add + local.get $1 + i32.mul + i32.const 10 + i32.add + local.tee $9 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + loop $for-loop|03 + local.get $1 + local.get $3 + i32.gt_s + if + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $8 + if + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.const 11856 + local.get $8 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $8 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|03 + end + end + local.get $9 + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/string/String#substring + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$741 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 14288 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1220 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 1 + i32.const 39 + i32.const 14336 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 0 + local.set $0 + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$742 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $2 + br $__inlined_func$~lib/util/string/joinIntegerArray$742 + end + local.get $1 + i32.eqz + if + local.get $4 + i32.load16_s + call $~lib/util/number/itoa32 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$742 + end + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $8 + i32.const 11 + i32.add + local.get $1 + i32.mul + i32.const 11 + i32.add + local.tee $9 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + loop $for-loop|05 + local.get $1 + local.get $3 + i32.gt_s + if + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_s + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $8 + if + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.const 11856 + local.get $8 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $8 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|05 + end + end + local.get $9 + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/string/String#substring + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$742 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 14368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1221 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 14416 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14448 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1222 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 3 + i32.const 40 + i32.const 14512 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + call $~lib/util/string/joinIntegerArray + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 3 + i32.const 41 + i32.const 14640 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + i32.const 0 + local.set $0 + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$13 + local.get $2 + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $2 + br $__inlined_func$~lib/util/string/joinIntegerArray$13 + end + block $folding-inner09 + local.get $4 + i32.eqz + if + block $__inlined_func$~lib/util/number/itoa64$4 (result i32) + local.get $1 + i64.load + i64.extend32_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7712 + br $__inlined_func$~lib/util/number/itoa64$4 + end + i64.const 0 + local.get $5 + i64.sub + local.get $5 + local.get $5 + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.const 1 + i32.shl + local.tee $0 + select + local.tee $5 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.wrap_i64 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $0 + local.get $2 + i32.add + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $5 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $5 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $5 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $5 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $5 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $5 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $5 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $5 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $5 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $5 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $0 + local.get $2 + i32.add + local.get $5 + local.get $1 + call $~lib/util/number/utoa64_dec_lut + end + local.get $0 + if + local.get $2 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + end + local.set $2 + br $folding-inner09 + end + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $8 + i32.const 21 + i32.add + local.get $4 + i32.mul + i32.const 21 + i32.add + local.tee $9 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + loop $for-loop|010 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $8 + if + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.const 11856 + local.get $8 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $8 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|010 + end + end + local.get $9 + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/string/String#substring + local.set $2 + br $folding-inner09 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$13 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 14704 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1224 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 34 + i32.const 14864 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=364 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/array/Array<~lib/string/String|null>#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1231 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 2 + i32.const 34 + i32.const 15024 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/array/Array<~lib/string/String|null>#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1232 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=368 + local.get $1 + i32.const 0 + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 15104 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 15136 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.store offset=372 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $2 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 + end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#toString + else + i32.const 11568 + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 + end + i32.const 11568 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11568 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=4 + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|011 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store + local.get $8 + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $~lib/array/Array#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $2 + local.get $8 + call $~lib/string/String.__concat + local.tee $2 + i32.store offset=8 + end + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 11856 + call $~lib/string/String.__concat + local.tee $2 + i32.store offset=8 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|011 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $2 + local.get $0 + call $~lib/string/String.__concat + local.tee $2 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 15168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 42 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=376 + local.get $1 + i32.const 0 + i32.const 2 + i32.const 0 + i32.const 7 + i32.const 15216 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.const 2 + i32.const 0 + i32.const 7 + i32.const 15248 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.store offset=380 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $2 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 + end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#toString + else + i32.const 11568 + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 + end + i32.const 11568 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11568 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=4 + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|016 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store + local.get $8 + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $~lib/array/Array#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $2 + local.get $8 + call $~lib/string/String.__concat + local.tee $2 + i32.store offset=8 + end + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 11856 + call $~lib/string/String.__concat + local.tee $2 + i32.store offset=8 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|016 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $2 + local.get $0 + call $~lib/string/String.__concat + local.tee $2 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 15168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1238 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 44 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=384 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 43 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=388 + local.get $2 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 8 + i32.const 15280 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.const 0 + local.get $2 + call $~lib/array/Array#__set + local.get $1 + i32.store offset=392 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $2 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 + end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array<~lib/array/Array>#toString + else + i32.const 11568 + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 + end + i32.const 11568 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11568 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=4 + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|017 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store + local.get $8 + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $2 + local.get $8 + call $~lib/string/String.__concat + local.tee $2 + i32.store offset=8 + end + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 11856 + call $~lib/string/String.__concat + local.tee $2 + i32.store offset=8 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|017 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $2 + local.get $0 + call $~lib/string/String.__concat + local.tee $2 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 13568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1241 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=396 + local.get $1 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 15312 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 15344 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 15376 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.const 3 + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 15408 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.store offset=400 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/array/Array<~lib/array/Array>#flat + local.tee $1 + i32.store offset=404 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1248 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|7 + local.get $0 + i32.const 10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/array/Array#__get + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1250 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|7 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 45 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=408 + local.get $1 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 34 + i32.const 15472 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.const 3 + i32.const 2 + i32.const 34 + i32.const 15568 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 34 + i32.const 15696 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.const 3 + i32.const 1 + i32.const 2 + i32.const 34 + i32.const 15760 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.store offset=412 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + local.set $8 + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|023 + local.get $0 + local.get $8 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + if (result i32) + local.get $4 + i32.load offset=12 + else + i32.const 0 + end + local.get $1 + i32.add + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|023 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 34 + call $~lib/rt/itcms/__new + local.tee $10 + i32.store offset=8 + local.get $10 + local.get $1 + i32.store offset=12 + local.get $10 + local.get $0 + i32.store offset=8 + local.get $10 + local.get $9 + i32.store offset=4 + local.get $10 + local.get $9 + i32.store + local.get $10 + local.get $9 + i32.const 0 + call $~lib/rt/itcms/__link + i32.const 0 + local.set $0 + i32.const 0 + local.set $4 + loop $for-loop|124 + local.get $4 + local.get $8 + i32.lt_s + if + local.get $3 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + if + local.get $0 + local.get $9 + i32.add + local.get $11 + i32.load offset=4 + local.get $11 + i32.load offset=12 + i32.const 2 + i32.shl + local.tee $11 + memory.copy + local.get $0 + local.get $11 + i32.add + local.set $0 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|124 + end + end + i32.const 0 + local.set $0 + loop $for-loop|225 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $9 + local.get $9 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|225 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=416 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 34 + i32.const 15792 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=420 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/array/Array#get:length + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1256 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=48 + local.get $10 + local.get $0 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=48 + local.get $1 + local.get $0 + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $2 + local.get $3 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1258 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|8 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=424 + local.get $1 + i32.const 0 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 15856 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 15888 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.store offset=428 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#flat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1552 + i32.const 1262 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=432 + local.get $1 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 15920 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.const 1 + i32.const 2 + i32.const 4 + i32.const 15952 + call $~lib/rt/__newArray + call $~lib/array/Array#__set + local.get $1 + i32.store offset=436 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 15984 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + local.set $8 + i32.const 0 + local.set $4 + loop $for-loop|026 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $2 + local.get $1 + i32.load offset=12 + local.tee $9 + local.get $2 + local.get $9 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $9 + local.get $1 + i32.load offset=4 + i32.add + i32.load + local.tee $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $10 + local.get $4 + local.get $1 + i32.const 15984 + i32.load + call_indirect (type $1) + local.tee $10 + i32.store offset=16 + local.get $8 + local.get $9 + i32.add + local.get $10 + i32.store + local.get $3 + local.get $10 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|026 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/array/Array>#flat + local.tee $0 + i32.store offset=440 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1272 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1273 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1274 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1275 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1276 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/arr + i32.const 0 + global.set $std/array/inputStabArr + i32.const 0 + global.set $std/array/outputStabArr + i32.const 48960 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|028 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|028 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 444 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.shl + local.tee $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $1 + local.get $3 + if + local.get $1 + local.get $3 + local.get $5 + memory.copy + end + local.get $1 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/number/itoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7712 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $0 + select + local.tee $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $0 + local.get $3 + i32.add + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + local.get $0 + if + local.get $3 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/util/number/utoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7712 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index b788a6882a..06bb2fd927 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -20,11 +20,12 @@ function isArraysEqual(a: Array, b: Array, len: i32 = 0): bool { if (!len) { len = a.length; if (len != b.length) return false; - if (a === b) return true; + if (a == b) return true; } for (let i = 0; i < len; i++) { if (isFloat()) { if (isNaN(a[i]) && isNaN(b[i])) continue; + if (Math.signbit(a[i]) != Math.signbit(b[i])) return false; } if (a[i] != b[i]) return false; } @@ -70,6 +71,9 @@ class Ref { arr8.fill(0, 1, 0); assert(isArraysEqual(arr8, [1, 1, 0, 2, 2])); + + arr8.fill(-1); + assert(isArraysEqual(arr8, [-1, -1, -1, -1, -1])); } { @@ -89,43 +93,71 @@ class Ref { arr32.fill(0, 1, 0); assert(isArraysEqual(arr32, [1, 1, 0, 2, 2])); + + arr32.fill(-1); + assert(isArraysEqual(arr32, [-1, -1, -1, -1, -1])); +} + +{ + let arrf32: f32[] = [0.5, 1.0, 1.5, 2.5, 3.0]; + + arrf32.fill(1.0, 1, 3); + assert(isArraysEqual(arrf32, [0.5, 1., 1., 2.5, 3.])); + + arrf32.fill(0.0); + assert(isArraysEqual(arrf32, [0., 0., 0., 0., 0.])); + + arrf32.fill(1.0, 0, -3); + assert(isArraysEqual(arrf32, [1., 1., 0., 0., 0.])); + + arrf32.fill(2.0, -2); + assert(isArraysEqual(arrf32, [1., 1., 0., 2., 2.])); + + arrf32.fill(0.0, 1, 0); + assert(isArraysEqual(arrf32, [1., 1., 0., 2., 2.])); + + arrf32.fill(-1.0); + assert(isArraysEqual(arrf32, [-1., -1., -1., -1., -1.])); + + arrf32.fill(-0.0); + assert(isArraysEqual(arrf32, [-0., -0., -0., -0., -0.])); } // Array#push/pop ////////////////////////////////////////////////////////////////////////////////// { assert(arr.length == 0); - assert(internalCapacity(arr) == 0); + assert(internalCapacity(arr) == 8); arr.push(42); assert(arr[0] == 42); assert(arr.length == 1); - assert(internalCapacity(arr) == 1); + assert(internalCapacity(arr) == 8); let i = arr.pop(); assert(i == 42); assert(arr.length == 0); - assert(internalCapacity(arr) == 1); + assert(internalCapacity(arr) == 8); arr.push(43); assert(arr.length == 1); - assert(internalCapacity(arr) == 1); + assert(internalCapacity(arr) == 8); assert(arr[0] == 43); arr.push(44); assert(arr.length == 2); - assert(internalCapacity(arr) == 2); + assert(internalCapacity(arr) == 8); assert(arr[0] == 43); assert(arr[1] == 44); arr.push(45); assert(arr.length == 3); - assert(internalCapacity(arr) == 3); + assert(internalCapacity(arr) == 8); assert(arr[0] == 43); assert(arr[1] == 44); assert(arr[2] == 45); @@ -139,18 +171,29 @@ class Ref { assert(arr.length == 0); } +// Array#at /////////////////////////////////////////////////////////////////////////////////////// + +{ + let arr: i32[] = [1, 2, 3, 4]; + + assert(arr.at(0) == 1); + assert(arr.at(3) == 4); + assert(arr.at(-1) == 4); + assert(arr.at(-4) == 1); +} + // Array#concat /////////////////////////////////////////////////////////////////////////////////// { let other = new Array(); let out = arr.concat(other); - assert(internalCapacity(arr) == 3); + assert(internalCapacity(arr) == 8); assert(arr.length == 3); assert(out.length == 3); out.concat([]); - assert(internalCapacity(arr) == 3); + assert(internalCapacity(arr) == 8); assert(out[0] == 43); assert(out[1] == 44); @@ -161,7 +204,7 @@ class Ref { out = arr.concat(other); - assert(internalCapacity(arr) == 3); + assert(internalCapacity(arr) == 8); assert(other.length == 2); assert(out.length == 5); assert(out[0] == 43); @@ -220,7 +263,7 @@ class Ref { arr.unshift(42); assert(arr.length == 4); - assert(internalCapacity(arr) == 4); + assert(internalCapacity(arr) == 8); assert(arr[0] == 42); assert(arr[1] == 43); assert(arr[2] == 44); @@ -229,7 +272,7 @@ class Ref { arr.unshift(41); assert(arr.length == 5); - assert(internalCapacity(arr) == 5); + assert(internalCapacity(arr) == 8); assert(arr[0] == 41); assert(arr[1] == 42); assert(arr[2] == 43); @@ -245,7 +288,7 @@ var i: i32; assert(i == 41); assert(arr.length == 4); - assert(internalCapacity(arr) == 5); + assert(internalCapacity(arr) == 8); assert(arr[0] == 42); assert(arr[1] == 43); assert(arr[2] == 44); @@ -255,25 +298,86 @@ var i: i32; assert(i == 45); assert(arr.length == 3); - assert(internalCapacity(arr) == 5); + assert(internalCapacity(arr) == 8); assert(arr[0] == 42); assert(arr[1] == 43); assert(arr[2] == 44); } +// Array#slice + +{ + let result: i32[]; + const elements: i32[] = [3, 5, 7, 9, 11]; + + result = elements.slice(2); + assert(isArraysEqual(result, [7, 9, 11])); + + result = elements.slice(2, 4); + assert(isArraysEqual(result, [7, 9])); + + result = elements.slice(1, 5); + assert(isArraysEqual(result, [5, 7, 9, 11])); + + result = elements.slice(); + assert(isArraysEqual(result, elements)); + + result = elements.slice(-2); + assert(isArraysEqual(result, [9, 11])); + + result = elements.slice(2, -1); + assert(isArraysEqual(result, [7, 9])); + + result = elements.slice(-3, -1); + assert(isArraysEqual(result, [7, 9])); + + assert(elements.slice(-1, -3).length == 0); + assert(elements.slice(10).length == 0); +} + // Array#reverse /////////////////////////////////////////////////////////////////////////////////// { arr.reverse(); assert(arr.length == 3); - assert(internalCapacity(arr) == 5); + assert(internalCapacity(arr) == 8); assert(arr[0] == 44); assert(arr[1] == 43); assert(arr[2] == 42); arr.push(43); arr.push(44); + + let bytes4 = ([0, 1, 2, 3] as u8[]).reverse(); + for (let i = 0, l = bytes4.length; i < l; i++) { + assert(bytes4[i] == bytes4.length - i - 1); + } + + let bytes8 = ([0, 1, 2, 3, 4, 5, 6, 7] as u8[]).reverse(); + for (let i = 0, l = bytes8.length; i < l; i++) { + assert(bytes8[i] == bytes8.length - i - 1); + } + + let bytes17 = ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] as u8[]).reverse(); + for (let i = 0, l = bytes17.length; i < l; i++) { + assert(bytes17[i] == bytes17.length - i - 1); + } + + let shorts7 = ([0, 1, 2, 3, 4, 5, 6] as u16[]).reverse(); + for (let i = 0, l = shorts7.length; i < l; i++) { + assert(shorts7[i] == shorts7.length - i - 1); + } + + let shorts8 = ([0, 1, 2, 3, 4, 5, 6, 7] as u16[]).reverse(); + for (let i = 0, l = shorts8.length; i < l; i++) { + assert(shorts8[i] == shorts8.length - i - 1); + } + + let shorts9 = ([0, 1, 2, 3, 4, 5, 6, 7, 8] as u16[]).reverse(); + for (let i = 0, l = shorts9.length; i < l; i++) { + assert(shorts9[i] == shorts9.length - i - 1); + } } // Array#indexOf /////////////////////////////////////////////////////////////////////////////////// @@ -313,6 +417,19 @@ var i: i32; assert(([NaN] as f64[]).indexOf(NaN) == -1); } +// Array#lastIndexOf + +{ + const numbers: i32[] = [2, 5, 9, 2]; + assert(numbers.lastIndexOf(2) == 3); + assert(numbers.lastIndexOf(7) == -1); + assert(numbers.lastIndexOf(2, 3) == 3); + assert(numbers.lastIndexOf(2, 2) == 0); + assert(numbers.lastIndexOf(2, -2) == 0); + assert(numbers.lastIndexOf(2, -1) == 3); + +} + // Array#includes ////////////////////////////////////////////////////////////////////////////////// { @@ -352,7 +469,7 @@ var i: i32; arr.splice(1, 1); assert(arr.length == 4); - assert(internalCapacity(arr) == 5); + assert(internalCapacity(arr) == 8); assert(arr[0] == 44); assert(arr[1] == 42); } @@ -416,8 +533,8 @@ var i: i32; assert(isArraysEqual(sarr.splice(7, 5), [])); assert(isArraysEqual(sarr, [1, 2, 3, 4, 5])); - var refArr: Ref[] = []; - var spliced = refArr.splice(1, 2); + let refArr: Ref[] = []; + let spliced = refArr.splice(1, 2); assert(spliced.length == 0); assert(refArr.length == 0); @@ -433,14 +550,14 @@ var i: i32; assert(refArr[1].v == 2); assert(refArr[2].v == 5); - var refArr2: (Ref | null)[] = [new Ref(1), null, new Ref(2)]; - var spliced2 = refArr2.splice(0, 1); + let refArr2: (Ref | null)[] = [new Ref(1), null, new Ref(2)]; + let spliced2 = refArr2.splice(0, 1); assert(spliced2.length == 1); assert(spliced2[0]!.v == 1); assert(refArr2.length == 2); - assert(refArr2[0] === null); + assert(refArr2[0] == null); assert(refArr2[1]!.v == 2); } @@ -491,6 +608,31 @@ var i: i32; arr.push(3); } +// Array#findLastIndex ///////////////////////////////////////////////////////////////////////////// + +{ + let intArr = [0, 1, 2, 3]; + + i = intArr.findLastIndex(value => value == 0); + + assert(i == 0); + + i = intArr.findLastIndex(value => value == 1); + assert(i == 1); + + i = intArr.findLastIndex(value => value == 100); + assert(i == -1); + + // Test side effect pop + i = intArr.findLastIndex((value, _, array) => { + // @ts-ignore + array.pop(); // popped items shouldn't be looked up, and we shouldn't go out of bounds + return value == 100; + }); + + assert(i == -1); +} + // Array#every ///////////////////////////////////////////////////////////////////////////////////// { @@ -638,7 +780,9 @@ var i: i32; // Array#map /////////////////////////////////////////////////////////////////////////////////////// { - let newArr = arr.map((value: i32) => value); + let arrStr1 = arr.map((value: i32) => value.toString()); + + let newArr = arr.map((value: i32) => value); assert(newArr.length == 4); assert(newArr[0] == arr[0]); @@ -818,7 +962,7 @@ var i: i32; // Checks if an array is properly sorted function isSorted(data: Array, comparator: (a: T, b: T) => i32 = COMPARATOR()): bool { - for (let i: i32 = 1, len: i32 = data.length; i < len; i++) { + for (let i = 1, len = data.length; i < len; i++) { if (comparator(data[i - 1], data[i]) > 0) return false; } return true; @@ -844,7 +988,7 @@ function createRandomOrderedArray(size: i32): Array { function createReverseOrderedNestedArray(size: i32): Array> { var arr = new Array>(size); - for (let i: i32 = 0; i < size; i++) { + for (let i = 0; i < size; i++) { let inner = new Array(1); inner[0] = size - 1 - i; arr[i] = inner; @@ -856,9 +1000,14 @@ class Proxy { constructor(public x: T) {} } -function createReverseOrderedElementsArray(size: i32): Proxy[] { +class Dim { + height: i32; + width: i32; +} + +function createReverseOrderedElementsArray(size: i32): Array> { var arr = new Array>(size); - for (let i: i32 = 0; i < size; i++) { + for (let i = 0; i < size; i++) { arr[i] = new Proxy(size - 1 - i); } return arr; @@ -866,6 +1015,36 @@ function createReverseOrderedElementsArray(size: i32): Proxy[] { const charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-,.+/\\[]{}()<>*&$%^@#!?"; +let inputStabArr: Array = [ + { height: 100, width: 80 }, + { height: 90, width: 90 }, + { height: 70, width: 95 }, + { height: 100, width: 100 }, + { height: 80, width: 110 }, + { height: 110, width: 115 }, + { height: 100, width: 120 }, + { height: 70, width: 125 }, + { height: 70, width: 130 }, + { height: 100, width: 135 }, + { height: 75, width: 140 }, + { height: 70, width: 140 } +]; + +let outputStabArr: Array = [ + { height: 70, width: 95 }, + { height: 70, width: 125 }, + { height: 70, width: 130 }, + { height: 70, width: 140 }, + { height: 75, width: 140 }, + { height: 80, width: 110 }, + { height: 90, width: 90 }, + { height: 100, width: 80 }, + { height: 100, width: 100 }, + { height: 100, width: 120 }, + { height: 100, width: 135 }, + { height: 110, width: 115 } +]; + function createRandomString(len: i32): string { var result = ""; @@ -875,14 +1054,28 @@ function createRandomString(len: i32): string { return result; } -function createRandomStringArray(size: i32): string[] { +function createRandomStringArray(size: i32): Array { var arr = new Array(size); - for (let i: i32 = 0; i < size; i++) { + for (let i = 0; i < size; i++) { arr[i] = createRandomString((NativeMath.random() * 32)); } return arr; } +function assertStableSortedForComplexObjects(): void { + let sorted = inputStabArr.slice(0).sort((a, b) => a.height - b.height); + let check = true; + for (let i = 0, len = inputStabArr.length; i < len; i++) { + let input = sorted[i]; + let target = outputStabArr[i]; + if (input.height != target.height || input.width != target.width) { + check = false; + break; + } + } + assert(check); +} + function assertSorted(arr: Array, comparator: (a: T, b: T) => i32 = COMPARATOR()): void { assert(isSorted(arr.sort(comparator), comparator)); } @@ -893,6 +1086,10 @@ function assertSortedDefault(arr: Array): void { // Tests for default comparator { + let f32ArrayTypedSmall: f32[] = [2.0, -1.0, 0.0]; + f32ArrayTypedSmall.sort(); + assert(isArraysEqual(f32ArrayTypedSmall, [-1.0, 0.0, 2.0])); + let f32ArrayTyped: f32[] = [1.0, NaN, -Infinity, 1.00000001, 0.0, -1.0, -2.0, +Infinity]; f32ArrayTyped.sort(); assert(isArraysEqual(f32ArrayTyped, [-Infinity, -2.0, -1.0, 0.0, 1.0, 1.00000001, Infinity, NaN])); @@ -948,6 +1145,8 @@ function assertSortedDefault(arr: Array): void { assert(isArraysEqual(reversed10000, expected4, 4)); assertSortedDefault(randomized512); + + assertStableSortedForComplexObjects(); } // Test sorting with custom comparator @@ -1017,41 +1216,43 @@ function assertSortedDefault(arr: Array): void { assert(arr3.toString() == "0,1,2,3"); assert(([1, -1, 0]).toString() == "1,-1,0"); + assert(([-128, -127, -128]).toString() == "-128,-127,-128"); assert(([1, 0xFFFF, 0]).toString() == "1,65535,0"); + assert(([-0x8000, -0xFF]).toString() == "-32768,-255"); + assert(([-0x80000000, -0x80]).toString() == "-2147483648,-128"); assert(([1, 0xFFFFFFFFFFFFFFFF, 0]).toString() == "1,18446744073709551615,0"); - assert(([-1, -1234567890123456, 0, i64.MAX_VALUE]).toString() == "-1,-1234567890123456,0,9223372036854775807"); + assert( + ([-1, -1234567890123456, i64.MIN_VALUE, 0, i64.MAX_VALUE]).toString() == + "-1,-1234567890123456,-9223372036854775808,0,9223372036854775807" + ); let arrStr: (string | null)[] = ["", "a", "a", "ab", "b", "ba", null]; assert(arrStr.toString() == ",a,a,ab,b,ba,"); assert((>["1", "2", null, "4"]).toString() == "1,2,,4"); - var subarr32: i32[][] = [[1,2], [3,4]]; + let subarr32: i32[][] = [[1,2], [3,4]]; assert(subarr32.toString() == "1,2,3,4"); - var subarr8: u8[][] = [[1,2], [3,4]]; + let subarr8: u8[][] = [[1,2], [3,4]]; assert(subarr8.toString() == "1,2,3,4"); - var subarrU32: u32[][][] = [[[1]]]; + let subarrU32: u32[][][] = [[[1]]]; assert(subarrU32.toString() == "1"); } -// Unleak globals -__release(changetype(arr)); - - // Array#flat ////////////////////////////////////////////////////////////////////////////////// { - var flatTarget: i32[][] = [[0], [1, 2, 3], [4, 5, 6], [7, 8, 9]]; - var result = flatTarget.flat(); - assert(result.length == 10); + let plainTarget: i32[][] = [[0], [1, 2, 3], [4, 5, 6], [7, 8, 9]]; + let plainResult = plainTarget.flat(); + assert(plainResult.length == 10); for (let i = 0; i < 10; i++) { - assert(result[i] == i); + assert(plainResult[i] == i); } - var flatStringTarget: Array> = [["one"], ["two", null, "three"], ["four", "five", "six"], ["seven"]]; - var stringResult = flatStringTarget.flat(); - var expected = ["one", "two", null, "three", "four", "five", "six", "seven"]; + let stringTarget: Array> = [["one"], ["two", null, "three"], ["four", "five", "six"], ["seven"]]; + let stringResult = stringTarget.flat(); + let expected = ["one", "two", null, "three", "four", "five", "six", "seven"]; assert(stringResult.length == 8); for (let i = 0; i < expected.length; i++) { assert(stringResult[i] == expected[i]); @@ -1059,12 +1260,26 @@ __release(changetype(arr)); let testArray: i32[][] = [[], []]; assert(testArray.flat().length == 0); + + // see: https://github.com/AssemblyScript/assemblyscript/issues/2018 + let mapTarget: i32[][] = [[1], [2]]; + let mapResult = mapTarget.map(nestedArray => { + assert(nestedArray.length == 1); + nestedArray.push(3); + assert(nestedArray.length == 2); + return nestedArray; + }).flat(); + assert(mapResult.length == 4); + assert(mapResult[0] == 1); + assert(mapResult[1] == 3); + assert(mapResult[2] == 2); + assert(mapResult[3] == 3); } -// export extended arrays +// Unleak globals +arr = changetype>(0); +inputStabArr = changetype>(0); +outputStabArr = changetype>(0); -export class ArrayU32 extends Array {} -export class ArrayU8 extends Array {} -export class ArrayStr extends Array {} -// TODO: -// export class ArrayArrayI32 extends Array> {} \ No newline at end of file +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat deleted file mode 100644 index 347bea9cff..0000000000 --- a/tests/compiler/std/array.untouched.wat +++ /dev/null @@ -1,32476 +0,0 @@ -(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_=>_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 $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $none_=>_none (func)) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $none_=>_f64 (func (result f64))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i64_=>_none (func (param i64))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) - (import "env" "seed" (func $~lib/builtins/seed (result f64))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 224) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 272) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 320) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 384) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") - (data (i32.const 416) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") - (data (i32.const 448) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 480) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 544) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00") - (data (i32.const 576) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00") - (data (i32.const 608) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 640) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 672) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 720) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 768) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 816) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 864) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 912) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 960) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") - (data (i32.const 1008) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1024) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1040) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1088) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1136) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1184) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1232) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1280) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 1328) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1376) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1424) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1472) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1520) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1568) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1616) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1664) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1712) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1760) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1808) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1856) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1904) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1952) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2000) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2048) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2096) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2144) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 2192) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f") - (data (i32.const 2224) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f") - (data (i32.const 2256) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f") - (data (i32.const 2288) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f") - (data (i32.const 2320) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2368) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2416) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2432) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2480) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2496) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2544) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2592) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2624) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 2656) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2704) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00") - (data (i32.const 2736) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05\00\00\00") - (data (i32.const 2768) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2816) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 2848) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2880) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2928) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2960) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00") - (data (i32.const 2992) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3040) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3072) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 3104) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3152) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\04\00\00\00") - (data (i32.const 3184) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00") - (data (i32.const 3216) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3264) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 3296) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3328) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3376) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3392) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3440) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3488) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3504) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3552) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3600) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3616) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3664) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3712) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3728) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3776) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3824) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3840) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3888) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3904) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (data (i32.const 4016) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") - (data (i32.const 4064) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 4096) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 4128) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 4160) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 4192) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") - (data (i32.const 4224) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") - (data (i32.const 4256) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00") - (data (i32.const 4288) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00") - (data (i32.const 4320) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 4352) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00") - (data (i32.const 4384) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00") - (data (i32.const 4416) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00") - (data (i32.const 4448) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00") - (data (i32.const 4480) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00") - (data (i32.const 4512) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 4544) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 4576) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00") - (data (i32.const 4608) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00") - (data (i32.const 4640) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00") - (data (i32.const 4672) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00") - (data (i32.const 4704) "\08\00\00\00\01\00\00\00\0d\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00") - (data (i32.const 4736) "\08\00\00\00\01\00\00\00\0e\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00") - (data (i32.const 4768) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00") - (data (i32.const 4800) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00") - (data (i32.const 4832) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00") - (data (i32.const 4864) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00") - (data (i32.const 4896) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00") - (data (i32.const 4928) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00") - (data (i32.const 4960) "\08\00\00\00\01\00\00\00\0c\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00") - (data (i32.const 4992) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00") - (data (i32.const 5024) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00") - (data (i32.const 5056) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00 \00\00\00\00\00\00\00") - (data (i32.const 5088) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00!\00\00\00\00\00\00\00") - (data (i32.const 5120) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00") - (data (i32.const 5152) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00#\00\00\00\00\00\00\00") - (data (i32.const 5184) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00$\00\00\00\00\00\00\00") - (data (i32.const 5216) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00%\00\00\00\00\00\00\00") - (data (i32.const 5248) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00&\00\00\00\00\00\00\00") - (data (i32.const 5280) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00") - (data (i32.const 5312) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00(\00\00\00\00\00\00\00") - (data (i32.const 5344) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00)\00\00\00\00\00\00\00") - (data (i32.const 5376) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00*\00\00\00\00\00\00\00") - (data (i32.const 5408) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00+\00\00\00\00\00\00\00") - (data (i32.const 5440) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") - (data (i32.const 5488) "\ac\00\00\00\01\00\00\00\01\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?\00") - (data (i32.const 5680) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") - (data (i32.const 5728) "\08\00\00\00\01\00\00\00\12\00\00\00\08\00\00\00,\00\00\00\00\00\00\00") - (data (i32.const 5760) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") - (data (i32.const 5808) "@\00\00\00\01\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") - (data (i32.const 5888) "\08\00\00\00\01\00\00\00\13\00\00\00\08\00\00\00-\00\00\00\00\00\00\00") - (data (i32.const 5920) "@\00\00\00\01\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") - (data (i32.const 6000) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00") - (data (i32.const 6048) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\00.\00\00\00\00\00\00\00") - (data (i32.const 6080) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 6128) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00") - (data (i32.const 6176) "\08\00\00\00\01\00\00\00\15\00\00\00\08\00\00\00/\00\00\00\00\00\00\00") - (data (i32.const 6208) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 6256) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6272) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 6304) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01\00\00\00") - (data (i32.const 6336) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 6368) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 6400) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\000\00\00\00\00\00\00\00") - (data (i32.const 6432) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 6464) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 6496) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\001\00\00\00\00\00\00\00") - (data (i32.const 6528) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\002\00\00\00\00\00\00\00") - (data (i32.const 6560) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\003\00\00\00\00\00\00\00") - (data (i32.const 6592) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\004\00\00\00\00\00\00\00") - (data (i32.const 6624) "\08\00\00\00\01\00\00\00\17\00\00\00\08\00\00\005\00\00\00\00\00\00\00") - (data (i32.const 6656) "\08\00\00\00\01\00\00\00\1a\00\00\00\08\00\00\006\00\00\00\00\00\00\00") - (data (i32.const 6688) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 6720) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 6752) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b\00") - (data (i32.const 6784) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00a\00") - (data (i32.const 6816) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 6832) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\000\1a\00\00P\1a\00\000\1a\00\00p\1a\00\00\90\1a\00\00\b0\1a\00\00\00\00\00\00") - (data (i32.const 6880) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\b0\1a\00\000\1a\00\000\1a\00\00p\1a\00\00P\1a\00\00\90\1a\00\00\00\00\00\00") - (data (i32.const 6928) "\08\00\00\00\01\00\00\00\1c\00\00\00\08\00\00\007\00\00\00\00\00\00\00") - (data (i32.const 6960) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 6992) "\08\00\00\00\01\00\00\00\1e\00\00\00\08\00\00\008\00\00\00\00\00\00\00") - (data (i32.const 7024) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01\00") - (data (i32.const 7056) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") - (data (i32.const 7088) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") - (data (i32.const 7120) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") - (data (i32.const 7152) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00") - (data (i32.const 7200) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 7232) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 7360) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 7424) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 7444) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 7856) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 8896) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00") - (data (i32.const 8992) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00") - (data (i32.const 9024) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 9056) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") - (data (i32.const 9088) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 9120) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00_\00_\00") - (data (i32.const 9152) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 9216) "0\00\00\00\01\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 9280) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 \00") - (data (i32.const 9312) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 9344) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 9376) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 9424) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 9456) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\01\00\00\00\01\00\00\00>\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00") - (data (i32.const 10736) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10752) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 10784) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 10816) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 10848) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00,\002\00") - (data (i32.const 10880) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00") - (data (i32.const 10912) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\01\ff\00") - (data (i32.const 10944) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00") - (data (i32.const 10976) "\06\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff\00\00") - (data (i32.const 11008) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00") - (data (i32.const 11056) "\18\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") - (data (i32.const 11104) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00") - (data (i32.const 11168) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") - (data (i32.const 11216) "T\00\00\00\01\00\00\00\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") - (data (i32.const 11328) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\b0\1a\00\000\1a\00\000\1a\00\00p\1a\00\00P\1a\00\00\90\1a\00\00\00\00\00\00") - (data (i32.const 11376) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00") - (data (i32.const 11424) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\002\00") - (data (i32.const 11456) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\004\00") - (data (i32.const 11488) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\f0(\00\00\b0,\00\00\00\00\00\00\d0,\00\00") - (data (i32.const 11520) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") - (data (i32.const 11552) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 11584) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00") - (data (i32.const 11616) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00") - (data (i32.const 11648) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01\02") - (data (i32.const 11680) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\03\04") - (data (i32.const 11712) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 11744) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 11776) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 11808) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00") - (data (i32.const 11840) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data (i32.const 11872) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00o\00n\00e\00") - (data (i32.const 11904) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00p.\00\00") - (data (i32.const 11936) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00t\00w\00o\00") - (data (i32.const 11968) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e\00") - (data (i32.const 12000) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\b0.\00\00\00\00\00\00\d0.\00\00") - (data (i32.const 12032) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r\00") - (data (i32.const 12064) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e\00") - (data (i32.const 12096) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00s\00i\00x\00") - (data (i32.const 12128) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\10/\00\000/\00\00P/\00\00") - (data (i32.const 12160) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n\00") - (data (i32.const 12192) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\90/\00\00") - (data (i32.const 12224) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00p.\00\00\b0.\00\00\00\00\00\00\d0.\00\00\10/\00\000/\00\00P/\00\00\90/\00\00") - (data (i32.const 12272) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12288) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12304) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e\00") - (table $0 57 funcref) - (elem (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|4 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|39 $start:std/array~anonymous|40 $start:std/array~anonymous|41 $start:std/array~anonymous|42 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|1 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $std/array/arr (mut i32) (i32.const 0)) - (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $std/array/i (mut i32) (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/math/random_seeded (mut i32) (i32.const 0)) - (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) - (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) - (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) - (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (global $std/array/charset i32 (i32.const 5504)) - (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 12360)) - (global $std/array/ArrayU32 i32 (i32.const 40)) - (global $std/array/ArrayU8 i32 (i32.const 41)) - (global $std/array/ArrayStr i32 (i32.const 42)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "ArrayU32" (global $std/array/ArrayU32)) - (export "ArrayU32#constructor" (func $~lib/array/Array#constructor@varargs)) - (export "ArrayU32#get:length" (func $~lib/array/Array#get:length)) - (export "ArrayU32#set:length" (func $~lib/array/Array#set:length)) - (export "ArrayU32#every" (func $~lib/array/Array#every)) - (export "ArrayU32#findIndex" (func $~lib/array/Array#findIndex)) - (export "ArrayU32#fill" (func $~lib/array/Array#fill@varargs)) - (export "ArrayU32#includes" (func $~lib/array/Array#includes@varargs)) - (export "ArrayU32#indexOf" (func $~lib/array/Array#indexOf@varargs)) - (export "ArrayU32#lastIndexOf" (func $~lib/array/Array#lastIndexOf@varargs)) - (export "ArrayU32#push" (func $~lib/array/Array#push)) - (export "ArrayU32#concat" (func $~lib/array/Array#concat)) - (export "ArrayU32#copyWithin" (func $~lib/array/Array#copyWithin@varargs)) - (export "ArrayU32#pop" (func $~lib/array/Array#pop)) - (export "ArrayU32#forEach" (func $~lib/array/Array#forEach)) - (export "ArrayU32#filter" (func $~lib/array/Array#filter)) - (export "ArrayU32#shift" (func $~lib/array/Array#shift)) - (export "ArrayU32#some" (func $~lib/array/Array#some)) - (export "ArrayU32#unshift" (func $~lib/array/Array#unshift)) - (export "ArrayU32#slice" (func $~lib/array/Array#slice@varargs)) - (export "ArrayU32#splice" (func $~lib/array/Array#splice@varargs)) - (export "ArrayU32#reverse" (func $~lib/array/Array#reverse)) - (export "ArrayU32#sort" (func $~lib/array/Array#sort@varargs)) - (export "ArrayU32#join" (func $~lib/array/Array#join@varargs)) - (export "ArrayU32#flat" (func $~lib/array/Array#flat)) - (export "ArrayU32#toString" (func $~lib/array/Array#toString)) - (export "ArrayU8" (global $std/array/ArrayU8)) - (export "ArrayU8#constructor" (func $~lib/array/Array#constructor@varargs)) - (export "ArrayU8#get:length" (func $~lib/array/Array#get:length)) - (export "ArrayU8#set:length" (func $~lib/array/Array#set:length)) - (export "ArrayU8#every" (func $~lib/array/Array#every)) - (export "ArrayU8#findIndex" (func $~lib/array/Array#findIndex)) - (export "ArrayU8#fill" (func $~lib/array/Array#fill@varargs)) - (export "ArrayU8#includes" (func $~lib/array/Array#includes@varargs)) - (export "ArrayU8#indexOf" (func $~lib/array/Array#indexOf@varargs)) - (export "ArrayU8#lastIndexOf" (func $~lib/array/Array#lastIndexOf@varargs)) - (export "ArrayU8#push" (func $~lib/array/Array#push)) - (export "ArrayU8#concat" (func $~lib/array/Array#concat)) - (export "ArrayU8#copyWithin" (func $~lib/array/Array#copyWithin@varargs)) - (export "ArrayU8#pop" (func $~lib/array/Array#pop)) - (export "ArrayU8#forEach" (func $~lib/array/Array#forEach)) - (export "ArrayU8#filter" (func $~lib/array/Array#filter)) - (export "ArrayU8#shift" (func $~lib/array/Array#shift)) - (export "ArrayU8#some" (func $~lib/array/Array#some)) - (export "ArrayU8#unshift" (func $~lib/array/Array#unshift)) - (export "ArrayU8#slice" (func $~lib/array/Array#slice@varargs)) - (export "ArrayU8#splice" (func $~lib/array/Array#splice@varargs)) - (export "ArrayU8#reverse" (func $~lib/array/Array#reverse)) - (export "ArrayU8#sort" (func $~lib/array/Array#sort@varargs)) - (export "ArrayU8#join" (func $~lib/array/Array#join@varargs)) - (export "ArrayU8#flat" (func $~lib/array/Array#flat)) - (export "ArrayU8#toString" (func $~lib/array/Array#toString)) - (export "ArrayStr" (global $std/array/ArrayStr)) - (export "ArrayStr#constructor" (func $~lib/array/Array<~lib/string/String>#constructor@varargs)) - (export "ArrayStr#get:length" (func $~lib/array/Array<~lib/string/String>#get:length)) - (export "ArrayStr#set:length" (func $~lib/array/Array<~lib/string/String>#set:length)) - (export "ArrayStr#every" (func $~lib/array/Array<~lib/string/String>#every)) - (export "ArrayStr#findIndex" (func $~lib/array/Array<~lib/string/String>#findIndex)) - (export "ArrayStr#fill" (func $~lib/array/Array<~lib/string/String>#fill@varargs)) - (export "ArrayStr#includes" (func $~lib/array/Array<~lib/string/String>#includes@varargs)) - (export "ArrayStr#indexOf" (func $~lib/array/Array<~lib/string/String>#indexOf@varargs)) - (export "ArrayStr#lastIndexOf" (func $~lib/array/Array<~lib/string/String>#lastIndexOf@varargs)) - (export "ArrayStr#push" (func $~lib/array/Array<~lib/string/String>#push)) - (export "ArrayStr#concat" (func $~lib/array/Array<~lib/string/String>#concat)) - (export "ArrayStr#copyWithin" (func $~lib/array/Array<~lib/string/String>#copyWithin@varargs)) - (export "ArrayStr#pop" (func $~lib/array/Array<~lib/string/String>#pop)) - (export "ArrayStr#forEach" (func $~lib/array/Array<~lib/string/String>#forEach)) - (export "ArrayStr#filter" (func $~lib/array/Array<~lib/string/String>#filter)) - (export "ArrayStr#shift" (func $~lib/array/Array<~lib/string/String>#shift)) - (export "ArrayStr#some" (func $~lib/array/Array<~lib/string/String>#some)) - (export "ArrayStr#unshift" (func $~lib/array/Array<~lib/string/String>#unshift)) - (export "ArrayStr#slice" (func $~lib/array/Array<~lib/string/String>#slice@varargs)) - (export "ArrayStr#splice" (func $~lib/array/Array<~lib/string/String>#splice@varargs)) - (export "ArrayStr#reverse" (func $~lib/array/Array<~lib/string/String>#reverse)) - (export "ArrayStr#sort" (func $~lib/array/Array<~lib/string/String>#sort@varargs)) - (export "ArrayStr#join" (func $~lib/array/Array<~lib/string/String>#join@varargs)) - (export "ArrayStr#flat" (func $~lib/array/Array<~lib/string/String>#flat)) - (export "ArrayStr#toString" (func $~lib/array/Array<~lib/string/String>#toString)) - (export "__setArgumentsLength" (func $~setArgumentsLength)) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 176 - i32.const 128 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array.isArray<~lib/array/Array|null> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 1 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $std/array/Ref#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $~lib/array/Array.isArray (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 0 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 336 - i32.const 18 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.shl - local.tee $1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - ) - (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 0 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array.isArray (param $0 i32) (result i32) - i32.const 0 - ) - (func $~lib/array/Array.isArray<~lib/string/String> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 0 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array.isArray<~lib/array/Array> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 1 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end - local.get $3 - ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 16 - local.get $2 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.set $5 - local.get $5 - i32.const 0 - local.get $3 - call $~lib/rt/__allocBuffer - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~lib/array/Array#fill (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.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $2 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $3 - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - local.get $3 - i32.lt_s - if - local.get $4 - local.get $2 - i32.add - local.get $1 - local.get $3 - local.get $2 - i32.sub - call $~lib/memory/memory.fill - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_u - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 496 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 - drop - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#fill (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.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $2 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $3 - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 496 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 - drop - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - ) - (func $std/array/internalCapacity (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.load - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 2 - i32.shr_s - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (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.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $3 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $6 - local.get $6 - i32.load - local.set $7 - local.get $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $5 - local.get $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $8 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u - if - i32.const 1 - drop - local.get $1 - local.get $8 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $8 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=8 - local.set $3 - local.get $1 - local.get $3 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $4 - local.get $1 - local.get $2 - i32.shl - local.set $5 - local.get $4 - local.get $5 - call $~lib/rt/tlsf/__realloc - local.set $6 - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $5 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $6 - local.get $4 - i32.ne - if - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.store offset=8 - end - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 496 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 976 - i32.const 80 - i32.const 300 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 1 - drop - local.get $2 - local.get $1 - i32.gt_s - if - local.get $0 - i32.load offset=4 - local.set $3 - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $4 - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.set $5 - loop $do-continue|0 - local.get $4 - i32.load - call $~lib/rt/pure/__release - local.get $4 - i32.const 4 - i32.add - local.tee $4 - local.get $5 - i32.lt_u - local.set $6 - local.get $6 - br_if $do-continue|0 - end - else - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - end - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#concat (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - local.get $1 - i32.load offset=12 - local.get $1 - i32.const 0 - i32.eq - select - local.set $3 - local.get $2 - local.get $3 - i32.add - local.set $4 - local.get $4 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $5 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $2 - i32.const 2 - i32.shl - local.set $7 - i32.const 0 - drop - local.get $6 - local.get $0 - i32.load offset=4 - local.get $7 - call $~lib/memory/memory.copy - local.get $6 - local.get $7 - i32.add - local.get $1 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $5 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/array/Array#copyWithin (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.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $1 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $1 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $8 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $2 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $9 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $10 - local.get $10 - local.get $9 - i32.sub - local.tee $6 - local.get $5 - local.get $8 - i32.sub - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $11 - i32.const 0 - drop - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 - drop - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.set $2 - local.get $0 - local.get $2 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - i32.const 0 - drop - local.get $3 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array#shift (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 976 - i32.const 80 - i32.const 361 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - i32.load - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.set $4 - local.get $2 - local.get $2 - i32.const 4 - i32.add - local.get $4 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - i32.const 0 - drop - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $4 - i32.store offset=12 - local.get $3 - ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - if - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $2 - local.get $3 - i32.load - i32.store - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $3 - i32.const 4 - i32.sub - local.set $3 - br $while-continue|0 - end - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.ge_s - end - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $6 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.ge_s - end - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $6 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $1 - f32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.ge_s - end - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $6 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $6 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $1 - f64.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - i32.const 0 - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s - return - ) - (func $~lib/array/Array#includes (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - i32.const 1 - drop - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.ge_s - end - if - i32.const 0 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $6 - local.get $6 - local.get $1 - f32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $6 - f32.ne - local.get $1 - local.get $1 - f32.ne - i32.and - end - if - i32.const 1 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const 0 - return - ) - (func $~lib/array/Array#includes (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - i32.const 1 - drop - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.ge_s - end - if - i32.const 0 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - local.get $6 - local.get $1 - f64.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $6 - f64.ne - local.get $1 - local.get $1 - f64.ne - i32.and - end - if - i32.const 1 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const 0 - return - ) - (func $~lib/array/Array#splice (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.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $1 - local.get $2 - local.tee $4 - local.get $3 - local.get $1 - i32.sub - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - local.get $2 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=4 - local.set $8 - local.get $8 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $9 - local.get $7 - local.get $9 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $2 - i32.add - local.set $10 - local.get $3 - local.get $10 - i32.ne - if - local.get $9 - local.get $8 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $10 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $6 - ) - (func $~lib/array/Array#splice (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.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $1 - local.get $2 - local.tee $4 - local.get $3 - local.get $1 - i32.sub - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - local.get $2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=4 - local.set $8 - local.get $8 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $9 - local.get $7 - local.get $9 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $2 - i32.add - local.set $10 - local.get $3 - local.get $10 - i32.ne - if - local.get $9 - local.get $8 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $10 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $6 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 496 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 3920 - i32.const 80 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - ) - (func $~lib/array/Array#splice (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.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $1 - local.get $2 - local.tee $4 - local.get $3 - local.get $1 - i32.sub - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - local.get $2 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=4 - local.set $8 - local.get $8 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $9 - local.get $7 - local.get $9 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $2 - i32.add - local.set $10 - local.get $3 - local.get $10 - i32.ne - if - local.get $9 - local.get $8 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $10 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $6 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 496 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 1 - drop - i32.const 1 - i32.eqz - drop - local.get $2 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 496 - i32.const 80 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 1 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 100 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - i32.const 100 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|4 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 100 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 100 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 0 - i32.ge_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - i32.const 0 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 0 - i32.le_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - i32.const 10 - i32.lt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|9 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 10 - i32.lt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 3 - i32.lt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 3 - i32.ge_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const -1 - i32.le_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|13 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - i32.const 10 - i32.gt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|14 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 10 - i32.gt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 3 - i32.gt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $2 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|18 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $2 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|19 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - call $~lib/array/Array#pop - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $2 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 4 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $2 - call $~lib/array/Array#pop - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - i32.const 100 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $2 - i32.const 100 - local.get $3 - i32.add - call $~lib/array/Array#push - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - i32.const 0 - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 100 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $2 - call $~lib/array/Array#pop - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - i32.const 0 - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 100 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $2 - local.get $3 - i32.const 200 - i32.add - call $~lib/array/Array#push - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|3 - end - end - end - local.get $1 - i32.const 2 - i32.eq - if - local.get $0 - i32.const 202 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 625 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) - (local $3 f32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.convert_i32_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#map (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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 2 - i32.const 9 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - i32.load offset=4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_f32) - local.set $8 - i32.const 0 - drop - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $8 - f32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 496 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $start:std/array~anonymous|22 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#map (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - i32.load offset=4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - local.set $7 - i32.const 0 - drop - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|24 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - call $~lib/array/Array#pop - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.ge_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - local.tee $5 - local.get $0 - i32.load offset=12 - local.tee $6 - local.get $5 - local.get $6 - i32.lt_s - select - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $6 - local.get $3 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.get $6 - call $~lib/array/Array#push - drop - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - i32.const 2 - i32.ge_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|27 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - i32.const 2 - i32.ge_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - call $~lib/array/Array#pop - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - i32.const 2 - i32.ge_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|29 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#reduce (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - local.set $3 - i32.const 0 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $4 - local.get $5 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - local.set $6 - local.get $6 - if - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - i32.const 4 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $start:std/array~anonymous|30 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 2 - i32.gt_s - end - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#reduce (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - local.set $3 - i32.const 0 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $4 - local.get $5 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - local.set $6 - local.get $6 - if - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - i32.const 4 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 100 - i32.gt_s - end - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|33 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - i32.const 1 - call $~lib/array/Array#push - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|34 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|35 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - call $~lib/array/Array#pop - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|36 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - local.set $3 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 - i32.const 0 - i32.ge_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - i32.const 4 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|37 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|38 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 2 - i32.gt_s - end - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - local.set $3 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 - i32.const 0 - i32.ge_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - i32.const 4 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|39 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 100 - i32.gt_s - end - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|40 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - i32.const 1 - call $~lib/array/Array#push - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|41 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|42 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - call $~lib/array/Array#pop - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/math/murmurHash3 (param $0 i64) (result i64) - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - i64.const -49064778989728563 - i64.mul - local.set $0 - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - i64.const -4265267296055464877 - i64.mul - local.set $0 - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - ) - (func $~lib/math/splitMix32 (param $0 i32) (result i32) - local.get $0 - i32.const 1831565813 - i32.add - local.set $0 - local.get $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - local.get $0 - i32.const 1 - i32.or - i32.mul - local.set $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - i32.const 7 - i32.shr_u - i32.xor - local.get $0 - i32.const 61 - i32.or - i32.mul - i32.add - i32.xor - local.set $0 - local.get $0 - local.get $0 - i32.const 14 - i32.shr_u - i32.xor - ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) - i32.const 1 - global.set $~lib/math/random_seeded - local.get $0 - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state1_64 - local.get $0 - i32.wrap_i64 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state0_32 - global.get $~lib/math/random_state0_32 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state1_32 - global.get $~lib/math/random_state0_64 - i64.const 0 - i64.ne - if (result i32) - global.get $~lib/math/random_state1_64 - i64.const 0 - i64.ne - else - i32.const 0 - end - if (result i32) - global.get $~lib/math/random_state0_32 - i32.const 0 - i32.ne - else - i32.const 0 - end - if (result i32) - global.get $~lib/math/random_state1_32 - i32.const 0 - i32.ne - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 5456 - i32.const 1399 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - f32.store - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - f32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) - (local $10 f32) - (local $11 i32) - (local $12 f32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $9 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $9 - f32.store - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $10 - f32.store - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 - if - local.get $0 - f32.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - f32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $10 - f32.store - i32.const 1 - local.set $8 - loop $while-continue|3 - local.get $8 - i32.const 1 - i32.shl - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $8 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $7 - local.get $5 - i32.lt_s - local.set $11 - local.get $11 - if - local.get $7 - local.set $8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $8 - i32.const 0 - i32.gt_s - local.set $11 - local.get $11 - if - local.get $0 - f32.load - local.set $10 - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $9 - local.get $10 - local.get $9 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $8 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $10 - f32.store - local.get $0 - local.get $9 - f32.store - end - local.get $8 - i32.const 1 - i32.shr_s - local.set $8 - br $while-continue|4 - end - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 - end - end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - f32.load offset=4 - local.set $12 - local.get $0 - local.get $0 - f32.load - f32.store offset=4 - local.get $0 - local.get $12 - f32.store - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 f32) - (local $7 i32) - (local $8 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.const 2 - i32.eq - if - local.get $4 - f32.load offset=4 - local.set $5 - local.get $4 - f32.load - local.set $6 - local.get $5 - local.get $6 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $6 - f32.store offset=4 - local.get $4 - local.get $5 - f32.store - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $4 - local.set $8 - local.get $2 - local.set $7 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - drop - local.get $7 - i32.const 256 - i32.lt_s - if - local.get $8 - local.get $7 - local.get $3 - call $~lib/util/sort/insertionSort - else - local.get $8 - local.get $7 - local.get $3 - call $~lib/util/sort/weakHeapSort - end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.reinterpret_f32 - local.set $2 - local.get $1 - i32.reinterpret_f32 - local.set $3 - local.get $2 - local.get $2 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor - local.set $2 - local.get $3 - local.get $3 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor - local.set $3 - local.get $2 - local.get $3 - i32.gt_s - local.get $2 - local.get $3 - i32.lt_s - i32.sub - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 5744 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - block $for-continue|0 - i32.const 1 - drop - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f32.ne - if (result i32) - local.get $1 - local.get $3 - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f32.ne - else - i32.const 0 - end - if - br $for-continue|0 - end - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - f32.ne - if - i32.const 0 - local.set $6 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $8 - f64.store - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 i32) - (local $12 f64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $9 - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.get $9 - f64.store - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - local.get $10 - f64.store - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 - if - local.get $0 - f64.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - f64.store - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.get $10 - f64.store - i32.const 1 - local.set $8 - loop $while-continue|3 - local.get $8 - i32.const 1 - i32.shl - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $8 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $7 - local.get $5 - i32.lt_s - local.set $11 - local.get $11 - if - local.get $7 - local.set $8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $8 - i32.const 0 - i32.gt_s - local.set $11 - local.get $11 - if - local.get $0 - f64.load - local.set $10 - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $9 - local.get $10 - local.get $9 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $8 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - local.get $10 - f64.store - local.get $0 - local.get $9 - f64.store - end - local.get $8 - i32.const 1 - i32.shr_s - local.set $8 - br $while-continue|4 - end - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 - end - end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - f64.load offset=8 - local.set $12 - local.get $0 - local.get $0 - f64.load - f64.store offset=8 - local.get $0 - local.get $12 - f64.store - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 i32) - (local $8 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.const 2 - i32.eq - if - local.get $4 - f64.load offset=8 - local.set $5 - local.get $4 - f64.load - local.set $6 - local.get $5 - local.get $6 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $6 - f64.store offset=8 - local.get $4 - local.get $5 - f64.store - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $4 - local.set $8 - local.get $2 - local.set $7 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - drop - local.get $7 - i32.const 256 - i32.lt_s - if - local.get $8 - local.get $7 - local.get $3 - call $~lib/util/sort/insertionSort - else - local.get $8 - local.get $7 - local.get $3 - call $~lib/util/sort/weakHeapSort - end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 - local.get $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.set $2 - local.get $3 - local.get $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.set $3 - local.get $2 - local.get $3 - i64.gt_s - local.get $2 - local.get $3 - i64.lt_s - i32.sub - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 5904 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 496 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - block $for-continue|0 - i32.const 1 - drop - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f64.ne - if (result i32) - local.get $1 - local.get $3 - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f64.ne - else - i32.const 0 - end - if - br $for-continue|0 - end - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - f64.ne - if - i32.const 0 - local.set $6 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 - if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 - if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - local.get $0 - local.get $11 - i32.store - end - local.get $9 - i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 - end - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 - end - end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $12 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $12 - i32.store - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.const 2 - i32.eq - if - local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load - local.set $5 - local.get $3 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.store offset=4 - local.get $4 - local.get $3 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $4 - local.set $5 - local.get $2 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $6 - i32.const 0 - drop - local.get $3 - i32.const 256 - i32.lt_s - if - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort - else - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/weakHeapSort - end - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 1 - drop - i32.const 1 - if (result i32) - i32.const 4 - i32.const 4 - i32.le_u - else - i32.const 0 - end - drop - i32.const 6064 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 - if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 - if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - local.get $0 - local.get $11 - i32.store - end - local.get $9 - i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 - end - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 - end - end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $12 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $12 - i32.store - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.const 2 - i32.eq - if - local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load - local.set $5 - local.get $3 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.store offset=4 - local.get $4 - local.get $3 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $4 - local.set $5 - local.get $2 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $6 - i32.const 0 - drop - local.get $3 - i32.const 256 - i32.lt_s - if - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort - else - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/weakHeapSort - end - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 1 - drop - i32.const 0 - if (result i32) - i32.const 4 - i32.const 4 - i32.le_u - else - i32.const 0 - end - drop - i32.const 6192 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - local.get $0 - call $~lib/array/Array#constructor - local.set $1 - i32.const 0 - local.set $2 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $1 - local.get $2 - local.get $0 - i32.const 1 - i32.sub - local.get $2 - i32.sub - call $~lib/array/Array#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/math/NativeMath.random (result f64) - (local $0 i64) - (local $1 i64) - (local $2 i64) - global.get $~lib/math/random_seeded - i32.eqz - if - call $~lib/builtins/seed - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - end - global.get $~lib/math/random_state0_64 - local.set $0 - global.get $~lib/math/random_state1_64 - local.set $1 - local.get $1 - global.set $~lib/math/random_state0_64 - local.get $0 - local.get $0 - i64.const 23 - i64.shl - i64.xor - local.set $0 - local.get $0 - local.get $0 - i64.const 17 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - local.get $1 - i64.xor - local.set $0 - local.get $0 - local.get $1 - i64.const 26 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - global.set $~lib/math/random_state1_64 - local.get $1 - i64.const 12 - i64.shr_u - i64.const 4607182418800017408 - i64.or - local.set $2 - local.get $2 - f64.reinterpret_i64 - f64.const 1 - f64.sub - ) - (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - local.get $0 - call $~lib/array/Array#constructor - local.set $1 - i32.const 0 - local.set $2 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $1 - local.get $2 - call $~lib/math/NativeMath.random - local.get $0 - f64.convert_i32_s - f64.mul - i32.trunc_f64_s - call $~lib/array/Array#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|1 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $std/array/isSorted (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.get $0 - local.get $2 - call $~lib/array/Array#__get - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - i32.const 0 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/array/assertSorted (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.tee $2 - local.get $1 - call $std/array/isSorted - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/array/assertSortedDefault (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) - i32.const 1 - drop - i32.const 1 - if (result i32) - i32.const 4 - i32.const 4 - i32.le_u - else - i32.const 0 - end - drop - i32.const 6416 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.1 - end - local.tee $1 - call $std/array/assertSorted - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|43 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.sub - ) - (func $start:std/array~anonymous|45 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $start:std/array~anonymous|46 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.sub - ) - (func $~lib/array/Array<~lib/array/Array>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 22 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array<~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - local.get $3 - i32.load - local.set $4 - local.get $2 - local.get $4 - i32.ne - if - local.get $3 - local.get $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 496 - i32.const 80 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/array/createReverseOrderedNestedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#constructor - local.set $1 - i32.const 0 - local.set $2 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - local.set $3 - local.get $3 - if - i32.const 0 - i32.const 1 - call $~lib/array/Array#constructor - local.set $4 - local.get $4 - i32.const 0 - local.get $0 - i32.const 1 - i32.sub - local.get $2 - i32.sub - call $~lib/array/Array#__set - local.get $1 - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - ) - (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - local.get $1 - i32.const 0 - call $~lib/array/Array#__get - i32.sub - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - local.get $8 - call $~lib/rt/pure/__release - br $while-break|1 - end - local.get $8 - call $~lib/rt/pure/__release - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.const 2 - i32.eq - if - local.get $4 - i32.load offset=4 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.store offset=4 - local.get $4 - local.get $3 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $4 - local.set $5 - local.get $2 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $6 - i32.const 1 - drop - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort<~lib/array/Array> - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/array/Array<~lib/array/Array>#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/array/Array>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 496 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 3920 - i32.const 80 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - ) - (func $std/array/isSorted<~lib/array/Array> (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/array/Array>#__get - local.tee $5 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/array/Array>#__get - local.tee $6 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - return - end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#sort - local.tee $2 - local.get $1 - call $std/array/isSorted<~lib/array/Array> - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 25 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $std/array/Proxy#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 24 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - local.get $3 - i32.load - local.set $4 - local.get $2 - local.get $4 - i32.ne - if - local.get $3 - local.get $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 496 - i32.const 80 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array>#__uset - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/array/createReverseOrderedElementsArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.get $0 - call $~lib/array/Array>#constructor - local.set $1 - i32.const 0 - local.set $2 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $1 - local.get $2 - i32.const 0 - local.get $0 - i32.const 1 - i32.sub - local.get $2 - i32.sub - call $std/array/Proxy#constructor - local.tee $4 - call $~lib/array/Array>#__set - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - ) - (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load - local.get $1 - i32.load - i32.sub - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/util/sort/insertionSort> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - local.get $8 - call $~lib/rt/pure/__release - br $while-break|1 - end - local.get $8 - call $~lib/rt/pure/__release - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.const 2 - i32.eq - if - local.get $4 - i32.load offset=4 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.store offset=4 - local.get $4 - local.get $3 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $4 - local.set $5 - local.get $2 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $6 - i32.const 1 - drop - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort> - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/array/Array>#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 496 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array>#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 3920 - i32.const 80 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - ) - (func $std/array/isSorted> (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array>#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array>#__get - local.tee $5 - local.get $0 - local.get $2 - call $~lib/array/Array>#__get - local.tee $6 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - return - end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/array/assertSorted> (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/array/Array>#sort - local.tee $2 - local.get $1 - call $std/array/isSorted> - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/insertionSort<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - local.get $8 - call $~lib/rt/pure/__release - br $while-break|1 - end - local.get $8 - call $~lib/rt/pure/__release - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/string/String|null>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.const 2 - i32.eq - if - local.get $4 - i32.load offset=4 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.store offset=4 - local.get $4 - local.get $3 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $4 - local.set $5 - local.get $2 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $6 - i32.const 1 - drop - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort<~lib/string/String|null> - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/array/Array<~lib/string/String|null>#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/string/String|null>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array<~lib/string/String|null>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 496 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String|null>#__uget - local.set $2 - i32.const 1 - drop - i32.const 1 - i32.eqz - drop - local.get $2 - ) - (func $std/array/isSorted<~lib/string/String|null> (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array<~lib/string/String|null>#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/string/String|null>#__get - local.tee $5 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String|null>#__get - local.tee $6 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - return - end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/array/assertSorted<~lib/string/String|null> (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String|null>#sort - local.tee $2 - local.get $1 - call $std/array/isSorted<~lib/string/String|null> - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $7 - ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - call $~lib/string/String#get:length - local.set $4 - local.get $3 - i32.eqz - if (result i32) - local.get $4 - i32.eqz - else - i32.const 0 - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $3 - i32.eqz - if - i32.const -1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $4 - i32.eqz - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - local.tee $2 - local.get $4 - local.tee $5 - local.get $2 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/array/assertSorted<~lib/string/String|null>@varargs (param $0 i32) (param $1 i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 6944 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 - end - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $std/array/assertSorted<~lib/string/String|null> - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/array/isArraysEqual<~lib/string/String|null> (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array<~lib/string/String|null>#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array<~lib/string/String|null>#get:length - i32.ne - if - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 - drop - local.get $0 - local.get $3 - call $~lib/array/Array<~lib/string/String|null>#__get - local.tee $5 - local.get $1 - local.get $3 - call $~lib/array/Array<~lib/string/String|null>#__get - local.tee $6 - call $~lib/string/String.__ne - if - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - return - end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array<~lib/string/String>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 29 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/string/String#charAt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - call $~lib/string/String#get:length - i32.ge_u - if - i32.const 6832 - call $~lib/rt/pure/__retain - return - end - i32.const 2 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#concat (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 6976 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - end - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $4 - local.get $1 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $5 - local.get $4 - local.get $5 - i32.add - local.set $6 - local.get $6 - i32.const 0 - i32.eq - if - i32.const 6832 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $6 - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 - local.get $0 - local.get $4 - call $~lib/memory/memory.copy - local.get $7 - local.get $4 - i32.add - local.get $1 - local.get $5 - call $~lib/memory/memory.copy - local.get $7 - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.const 6976 - local.get $0 - i32.const 0 - i32.ne - select - local.get $1 - call $~lib/string/String#concat - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/array/createRandomString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 6832 - local.set $1 - i32.const 0 - local.set $2 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $1 - global.get $std/array/charset - call $~lib/math/NativeMath.random - global.get $std/array/charset - call $~lib/string/String#get:length - f64.convert_i32_s - f64.mul - local.set $4 - local.get $4 - f64.floor - i32.trunc_f64_s - call $~lib/string/String#charAt - local.tee $5 - call $~lib/string/String.__concat - local.tee $6 - local.tee $7 - local.get $1 - local.tee $8 - i32.ne - if - local.get $7 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__release - end - local.get $7 - local.set $1 - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/array/Array<~lib/string/String>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - local.get $3 - i32.load - local.set $4 - local.get $2 - local.get $4 - i32.ne - if - local.get $3 - local.get $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 496 - i32.const 80 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__uset - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/array/createRandomStringArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.get $0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $1 - i32.const 0 - local.set $2 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $1 - local.get $2 - call $~lib/math/NativeMath.random - f64.const 32 - f64.mul - i32.trunc_f64_s - call $std/array/createRandomString - local.tee $4 - call $~lib/array/Array<~lib/string/String>#__set - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/util/sort/insertionSort<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - local.get $8 - call $~lib/rt/pure/__release - br $while-break|1 - end - local.get $8 - call $~lib/rt/pure/__release - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/string/String>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.const 2 - i32.eq - if - local.get $4 - i32.load offset=4 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.store offset=4 - local.get $4 - local.get $3 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $4 - local.set $5 - local.get $2 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $6 - i32.const 1 - drop - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort<~lib/string/String> - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 496 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 3920 - i32.const 80 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - ) - (func $std/array/isSorted<~lib/string/String> (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/string/String>#__get - local.tee $5 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $6 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - return - end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/array/assertSorted<~lib/string/String> (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#sort - local.tee $2 - local.get $1 - call $std/array/isSorted<~lib/string/String> - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - call $~lib/string/String#get:length - local.set $4 - local.get $3 - i32.eqz - if (result i32) - local.get $4 - i32.eqz - else - i32.const 0 - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $3 - i32.eqz - if - i32.const -1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $4 - i32.eqz - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - local.tee $2 - local.get $4 - local.tee $5 - local.get $2 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/array/assertSorted<~lib/string/String>@varargs (param $0 i32) (param $1 i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 7008 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 - end - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $std/array/assertSorted<~lib/string/String> - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String#substring (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.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $6 - local.get $2 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $7 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $8 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $8 - i32.sub - local.set $10 - local.get $10 - i32.eqz - if - i32.const 6832 - call $~lib/rt/pure/__retain - return - end - local.get $8 - i32.eqz - if (result i32) - local.get $9 - local.get $3 - i32.const 1 - i32.shl - i32.eq - else - i32.const 0 - end - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $10 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $11 - local.get $11 - local.get $0 - local.get $8 - i32.add - local.get $10 - call $~lib/memory/memory.copy - local.get $11 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/string/joinBooleanArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - i32.const 7072 - i32.const 7104 - local.get $0 - i32.load8_u - select - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $5 - i32.const 5 - local.set $6 - local.get $6 - local.get $5 - i32.add - local.get $3 - i32.mul - local.get $6 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $8 - i32.const 0 - local.set $9 - i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - local.get $3 - i32.lt_s - local.set $12 - local.get $12 - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $10 - i32.const 4 - local.get $10 - i32.eqz - i32.add - local.set $6 - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.const 7072 - i32.const 7104 - local.get $10 - select - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $6 - i32.add - local.set $9 - local.get $5 - if - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $5 - i32.add - local.set $9 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 - end - end - local.get $0 - local.get $3 - i32.add - i32.load8_u - local.set $10 - i32.const 4 - local.get $10 - i32.eqz - i32.add - local.set $6 - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.const 7072 - i32.const 7104 - local.get $10 - select - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $6 - i32.add - local.set $9 - local.get $7 - local.get $9 - i32.gt_s - if - local.get $8 - i32.const 0 - local.get $9 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $8 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinBooleanArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 100000 - i32.lt_u - if - local.get $0 - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $0 - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $0 - i32.const 10000 - i32.ge_u - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $0 - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - i32.const 7444 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - i32.const 7444 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $1 - i32.const 100 - i32.div_u - local.set $3 - local.get $1 - i32.const 100 - i32.rem_u - local.set $10 - local.get $3 - local.set $1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 7444 - local.get $10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 7444 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - else - local.get $2 - i32.const 1 - i32.sub - local.set $2 - i32.const 48 - local.get $1 - i32.add - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - ) - (func $~lib/util/number/utoa_hex_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $2 - i32.const 2 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7872 - local.get $1 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i64.const 8 - i64.shr_u - local.set $1 - br $while-continue|0 - end - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - i32.const 7872 - local.get $1 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - local.get $1 - local.set $2 - local.get $2 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $1 - i64.extend_i32_s - local.set $3 - local.get $3 - local.set $4 - i32.const 1 - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $4 - i64.div_u - local.set $0 - local.get $4 - local.get $4 - i64.mul - local.set $4 - local.get $5 - i32.const 1 - i32.shl - local.set $5 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $0 - i64.const 1 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $3 - i64.div_u - local.set $0 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $while-continue|1 - end - end - local.get $5 - i32.const 1 - i32.sub - ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i32) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $5 - local.get $4 - i64.const 1 - i64.sub - local.set $6 - loop $do-continue|0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 8912 - local.get $1 - local.get $6 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $5 - i64.shr_u - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|0 - end - else - loop $do-continue|1 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $4 - i64.div_u - local.set $6 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 8912 - local.get $1 - local.get $6 - local.get $4 - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $6 - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|1 - end - end - ) - (func $~lib/util/number/itoa32 (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.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 7248 - i32.const 7376 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 7440 - return - end - local.get $0 - i32.const 31 - i32.shr_u - local.set $2 - local.get $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - i64.extend_i32_u - local.get $5 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.set $4 - local.get $4 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.get $4 - i64.extend_i32_u - local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 1 - drop - local.get $1 - i32.const 0 - i32.lt_s - local.set $2 - local.get $2 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - local.get $2 - i32.add - return - end - local.get $2 - local.set $3 - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i32.load - local.set $4 - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 11 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 11 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 7248 - i32.const 7376 - i32.const 350 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 7440 - return - end - i32.const 0 - local.set $2 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - i64.extend_i32_u - local.get $4 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.get $0 - i64.extend_i32_u - local.get $3 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i32.load - local.set $4 - i32.const 0 - drop - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 10 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 10 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i64) - i32.const 0 - local.get $4 - i32.sub - local.set $7 - i64.const 1 - local.get $7 - i64.extend_i32_s - i64.shl - local.set $8 - local.get $8 - i64.const 1 - i64.sub - local.set $9 - local.get $3 - local.get $1 - i64.sub - local.set $10 - local.get $3 - local.get $7 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.set $11 - local.get $3 - local.get $9 - i64.and - local.set $12 - local.get $11 - call $~lib/util/number/decimalCount32 - local.set $13 - local.get $6 - local.set $14 - loop $while-continue|0 - local.get $13 - i32.const 0 - i32.gt_s - local.set $15 - local.get $15 - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $13 - local.set $17 - local.get $17 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $17 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $17 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $17 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $17 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $17 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $17 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $17 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $17 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $17 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - local.get $11 - i32.const 1000000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 1000000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 100000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 100000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 10000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 10000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 1000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 1000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 100000 - i32.div_u - local.set $16 - local.get $11 - i32.const 100000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 10000 - i32.div_u - local.set $16 - local.get $11 - i32.const 10000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 1000 - i32.div_u - local.set $16 - local.get $11 - i32.const 1000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 100 - i32.div_u - local.set $16 - local.get $11 - i32.const 100 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 10 - i32.div_u - local.set $16 - local.get $11 - i32.const 10 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - local.set $16 - i32.const 0 - local.set $11 - br $break|1 - end - i32.const 0 - local.set $16 - br $break|1 - end - local.get $16 - local.get $14 - i32.or - if - local.get $0 - local.get $14 - local.tee $17 - i32.const 1 - i32.add - local.set $14 - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $16 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - i32.const 1 - i32.sub - local.set $13 - local.get $11 - i64.extend_i32_u - local.get $7 - i64.extend_i32_s - i64.shl - local.get $12 - i64.add - local.set $18 - local.get $18 - local.get $5 - i64.le_u - if - global.get $~lib/util/number/_K - local.get $13 - i32.add - global.set $~lib/util/number/_K - local.get $0 - local.set $23 - local.get $14 - local.set $17 - local.get $5 - local.set $22 - local.get $18 - local.set $21 - i32.const 10328 - local.get $13 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $7 - i64.extend_i32_s - i64.shl - local.set $20 - local.get $10 - local.set $19 - local.get $23 - local.get $17 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $24 - local.get $24 - i32.load16_u - local.set $25 - loop $while-continue|3 - local.get $21 - local.get $19 - i64.lt_u - if (result i32) - local.get $22 - local.get $21 - i64.sub - local.get $20 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $19 - local.get $21 - i64.sub - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - local.set $26 - local.get $26 - if - local.get $25 - i32.const 1 - i32.sub - local.set $25 - local.get $21 - local.get $20 - i64.add - local.set $21 - br $while-continue|3 - end - end - local.get $24 - local.get $25 - i32.store16 - local.get $14 - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - i32.const 1 - local.set $15 - local.get $15 - if - local.get $12 - i64.const 10 - i64.mul - local.set $12 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $12 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $22 - local.get $22 - local.get $14 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $14 - local.tee $25 - i32.const 1 - i32.add - local.set $14 - local.get $25 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $22 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $12 - local.get $9 - i64.and - local.set $12 - local.get $13 - i32.const 1 - i32.sub - local.set $13 - local.get $12 - local.get $5 - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $13 - i32.add - global.set $~lib/util/number/_K - local.get $10 - i32.const 10328 - i32.const 0 - local.get $13 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $10 - local.get $0 - local.set $17 - local.get $14 - local.set $26 - local.get $5 - local.set $27 - local.get $12 - local.set $21 - local.get $8 - local.set $20 - local.get $10 - local.set $19 - local.get $17 - local.get $26 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $25 - local.get $25 - i32.load16_u - local.set $24 - loop $while-continue|6 - local.get $21 - local.get $19 - i64.lt_u - if (result i32) - local.get $27 - local.get $21 - i64.sub - local.get $20 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $19 - local.get $21 - i64.sub - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - local.set $23 - local.get $23 - if - local.get $24 - i32.const 1 - i32.sub - local.set $24 - local.get $21 - local.get $20 - i64.add - local.set $21 - br $while-continue|6 - end - end - local.get $25 - local.get $24 - i32.store16 - local.get $14 - return - end - br $while-continue|4 - end - end - unreachable - ) - (func $~lib/util/number/prettify (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.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.set $3 - local.get $1 - local.get $3 - i32.le_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $1 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 2 - i32.add - return - else - local.get $3 - i32.const 0 - i32.gt_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $4 - local.get $4 - i32.const 2 - i32.add - local.get $4 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - return - else - i32.const -6 - local.get $3 - i32.lt_s - if (result i32) - local.get $3 - i32.const 0 - i32.le_s - else - i32.const 0 - end - if - i32.const 2 - local.get $3 - i32.sub - local.set $4 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or - i32.store - i32.const 2 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $4 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $1 - local.get $4 - i32.add - return - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - local.get $6 - i32.const 0 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 - local.get $6 - i32.sub - local.set $6 - end - local.get $6 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $7 - local.get $5 - local.set $10 - local.get $6 - local.set $9 - local.get $7 - local.set $8 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/number/utoa32_dec_lut - local.get $5 - i32.const 45 - i32.const 43 - local.get $4 - select - i32.store16 - local.get $7 - local.set $1 - local.get $1 - i32.const 2 - i32.add - return - else - local.get $1 - i32.const 1 - i32.shl - local.set $7 - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $7 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $7 - i32.add - i32.const 101 - i32.store16 offset=2 - local.get $1 - local.get $0 - local.get $7 - i32.add - i32.const 4 - i32.add - local.set $9 - local.get $3 - i32.const 1 - i32.sub - local.set $8 - local.get $8 - i32.const 0 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 - local.get $8 - i32.sub - local.set $8 - end - local.get $8 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $5 - local.get $9 - local.set $11 - local.get $8 - local.set $6 - local.get $5 - local.set $10 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $11 - local.get $6 - local.get $10 - call $~lib/util/number/utoa32_dec_lut - local.get $9 - i32.const 45 - i32.const 43 - local.get $4 - select - i32.store16 - local.get $5 - i32.add - local.set $1 - local.get $1 - i32.const 2 - i32.add - return - end - unreachable - end - unreachable - end - unreachable - end - unreachable - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i64) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 f64) - (local $17 i64) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i64) - (local $24 i64) - (local $25 i64) - (local $26 i32) - (local $27 i64) - (local $28 i32) - local.get $1 - f64.const 0 - f64.lt - local.set $2 - local.get $2 - if - local.get $1 - f64.neg - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - local.get $1 - local.set $5 - local.get $0 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i64.reinterpret_f64 - local.set $6 - local.get $6 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $7 - local.get $6 - i64.const 4503599627370495 - i64.and - local.set $8 - local.get $7 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $8 - i64.add - local.set $9 - local.get $7 - i32.const 1 - local.get $7 - select - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $7 - local.get $9 - local.set $11 - local.get $7 - local.set $10 - local.get $11 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $12 - local.get $10 - i32.const 1 - i32.sub - local.set $13 - local.get $12 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $12 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $12 - local.get $13 - local.get $14 - i32.sub - local.set $13 - i32.const 1 - local.get $11 - i64.const 4503599627370496 - i64.eq - i32.add - local.set $15 - local.get $12 - global.set $~lib/util/number/_frc_plus - local.get $11 - local.get $15 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $10 - local.get $15 - i32.sub - local.get $13 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $13 - global.set $~lib/util/number/_exp - global.get $~lib/util/number/_exp - local.set $10 - i32.const -61 - local.get $10 - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $16 - local.get $16 - i32.trunc_f64_s - local.set $15 - local.get $15 - local.get $15 - f64.convert_i32_s - local.get $16 - f64.ne - i32.add - local.set $15 - local.get $15 - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $14 - i32.const 348 - local.get $14 - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 9456 - local.get $14 - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 10152 - local.get $14 - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $9 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $9 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $9 - local.get $7 - local.get $14 - i32.sub - local.set $7 - global.get $~lib/util/number/_frc_pow - local.set $12 - global.get $~lib/util/number/_exp_pow - local.set $15 - local.get $9 - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $24 - local.get $24 - i64.const 2147483647 - i64.add - local.set $24 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $24 - i64.const 32 - i64.shr_u - local.set $24 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $24 - i64.add - local.set $24 - local.get $7 - local.set $10 - local.get $15 - local.set $13 - local.get $10 - local.get $13 - i32.add - i32.const 64 - i32.add - local.set $10 - global.get $~lib/util/number/_frc_plus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $23 - local.get $11 - i64.const 4294967295 - i64.and - local.set $22 - local.get $17 - i64.const 32 - i64.shr_u - local.set $21 - local.get $11 - i64.const 32 - i64.shr_u - local.set $20 - local.get $23 - local.get $22 - i64.mul - local.set $19 - local.get $21 - local.get $22 - i64.mul - local.get $19 - i64.const 32 - i64.shr_u - i64.add - local.set $18 - local.get $23 - local.get $20 - i64.mul - local.get $18 - i64.const 4294967295 - i64.and - i64.add - local.set $25 - local.get $25 - i64.const 2147483647 - i64.add - local.set $25 - local.get $18 - i64.const 32 - i64.shr_u - local.set $18 - local.get $25 - i64.const 32 - i64.shr_u - local.set $25 - local.get $21 - local.get $20 - i64.mul - local.get $18 - i64.add - local.get $25 - i64.add - i64.const 1 - i64.sub - local.set $25 - global.get $~lib/util/number/_exp - local.set $26 - local.get $15 - local.set $13 - local.get $26 - local.get $13 - i32.add - i32.const 64 - i32.add - local.set $26 - global.get $~lib/util/number/_frc_minus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $27 - local.get $27 - i64.const 2147483647 - i64.add - local.set $27 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $27 - i64.const 32 - i64.shr_u - local.set $27 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $27 - i64.add - i64.const 1 - i64.add - local.set $27 - local.get $25 - local.get $27 - i64.sub - local.set $23 - local.get $4 - local.get $24 - local.get $10 - local.get $25 - local.get $26 - local.get $23 - local.get $3 - call $~lib/util/number/genDigits - local.set $28 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $28 - local.get $2 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $28 - local.get $28 - local.get $2 - i32.add - ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - f64.const 0 - f64.eq - if - i32.const 9328 - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $0 - local.get $0 - f64.ne - if - i32.const 9360 - return - end - i32.const 9392 - i32.const 9440 - local.get $0 - f64.const 0 - f64.lt - select - call $~lib/rt/pure/__retain - return - end - i32.const 28 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $1 - local.get $1 - local.get $0 - call $~lib/util/number/dtoa_core - local.set $2 - local.get $2 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - return - end - local.get $1 - i32.const 0 - local.get $2 - call $~lib/string/String#substring - local.set $3 - local.get $1 - call $~lib/rt/tlsf/__free - local.get $3 - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - local.get $1 - f64.const 0 - f64.eq - if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - return - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - return - else - local.get $1 - f64.const 0 - f64.lt - local.set $2 - local.get $2 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - i32.const 8 - local.get $2 - i32.add - return - end - unreachable - end - local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core - ) - (func $~lib/util/string/joinFloatArray (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 f64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - f64.load - call $~lib/util/number/dtoa - local.tee $4 - local.set $5 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $6 - i32.const 28 - local.get $6 - i32.add - local.get $3 - i32.mul - i32.const 28 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $8 - i32.const 0 - local.set $9 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $10 - call $~lib/util/number/dtoa_buffered - i32.add - local.set $9 - local.get $6 - if - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $6 - i32.add - local.set $9 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $10 - call $~lib/util/number/dtoa_buffered - i32.add - local.set $9 - local.get $7 - local.get $9 - i32.gt_s - if - local.get $8 - i32.const 0 - local.get $9 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $8 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinFloatArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/util/string/joinStringArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i32.load - local.tee $4 - if (result i32) - local.get $4 - call $~lib/rt/pure/__retain - else - i32.const 6832 - end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 0 - local.set $5 - i32.const 0 - local.set $6 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $8 - local.get $6 - local.tee $9 - i32.ne - if - local.get $8 - call $~lib/rt/pure/__retain - local.set $8 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $8 - local.set $6 - local.get $6 - i32.const 0 - i32.ne - if - local.get $5 - local.get $6 - call $~lib/string/String#get:length - i32.add - local.set $5 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - i32.const 0 - local.set $10 - local.get $2 - call $~lib/string/String#get:length - local.set $11 - local.get $5 - local.get $11 - local.get $3 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $12 - i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - local.get $3 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $6 - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $6 - local.get $6 - i32.const 0 - i32.ne - if - local.get $6 - call $~lib/string/String#get:length - local.set $9 - local.get $12 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $9 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $9 - i32.add - local.set $10 - end - local.get $11 - if - local.get $12 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $11 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $11 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $8 - local.get $6 - local.tee $4 - i32.ne - if - local.get $8 - call $~lib/rt/pure/__retain - local.set $8 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $8 - local.set $6 - local.get $6 - i32.const 0 - i32.ne - if - local.get $12 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $6 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - local.get $12 - call $~lib/rt/pure/__retain - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/array/Array<~lib/string/String|null>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinStringArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $std/array/Ref#toString (param $0 i32) (result i32) - i32.const 10544 - ) - (func $~lib/util/string/joinReferenceArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 0 - local.set $5 - local.get $3 - i32.eqz - if - local.get $0 - i32.load - local.tee $4 - local.get $5 - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if (result i32) - local.get $5 - call $std/array/Ref#toString - else - i32.const 6832 - end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 6832 - local.set $7 - local.get $2 - call $~lib/string/String#get:length - local.set $8 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $5 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $std/array/Ref#toString - local.tee $9 - call $~lib/string/String.__concat - local.tee $10 - local.tee $11 - local.get $7 - local.tee $12 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $7 - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - end - local.get $8 - if - local.get $7 - local.get $2 - call $~lib/string/String.__concat - local.tee $10 - local.tee $12 - local.get $7 - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - local.set $7 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $11 - local.get $5 - local.tee $4 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $std/array/Ref#toString - local.tee $11 - call $~lib/string/String.__concat - local.tee $4 - local.tee $9 - local.get $7 - local.tee $6 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $7 - local.get $11 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - end - local.get $7 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinReferenceArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/util/string/joinReferenceArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 0 - local.set $5 - local.get $3 - i32.eqz - if - local.get $0 - i32.load - local.tee $4 - local.get $5 - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if (result i32) - local.get $5 - call $std/array/Ref#toString - else - i32.const 6832 - end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 6832 - local.set $7 - local.get $2 - call $~lib/string/String#get:length - local.set $8 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $5 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $std/array/Ref#toString - local.tee $9 - call $~lib/string/String.__concat - local.tee $10 - local.tee $11 - local.get $7 - local.tee $12 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $7 - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - end - local.get $8 - if - local.get $7 - local.get $2 - call $~lib/string/String.__concat - local.tee $10 - local.tee $12 - local.get $7 - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - local.set $7 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $11 - local.get $5 - local.tee $4 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $std/array/Ref#toString - local.tee $11 - call $~lib/string/String.__concat - local.tee $4 - local.tee $9 - local.get $7 - local.tee $6 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $7 - local.get $11 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - end - local.get $7 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinReferenceArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7136 - call $~lib/array/Array#join - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 1 - drop - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 0 - i32.lt_s - local.set $2 - local.get $2 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 1 - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 48 - i32.or - i32.store16 - i32.const 1 - local.get $2 - i32.add - return - end - local.get $2 - local.set $3 - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i32.load8_s - local.set $4 - i32.const 1 - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 11 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 11 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7136 - call $~lib/array/Array#join - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 - i32.const 2 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - i32.const 65535 - i32.and - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i32.load16_u - local.set $4 - i32.const 0 - drop - i32.const 2 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 10 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 10 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7136 - call $~lib/array/Array#join - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if - local.get $0 - i64.const 1000000000000 - i64.lt_u - if - i32.const 10 - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - return - else - i32.const 13 - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if - i32.const 16 - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.add - return - else - i32.const 18 - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - loop $while-continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i64.const 100000000 - i64.div_u - local.set $4 - local.get $1 - local.get $4 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 - local.get $6 - i32.const 100 - i32.div_u - local.set $8 - local.get $6 - i32.const 100 - i32.rem_u - local.set $9 - local.get $7 - i32.const 100 - i32.div_u - local.set $10 - local.get $7 - i32.const 100 - i32.rem_u - local.set $11 - i32.const 7444 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 7444 - local.get $11 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - i32.const 7444 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 7444 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $0 - local.get $1 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - ) - (func $~lib/util/number/utoa64 (param $0 i64) (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 i64) - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 7248 - i32.const 7376 - i32.const 401 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 0 - i64.ne - i32.eqz - if - i32.const 7440 - return - end - i32.const 0 - local.set $2 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.set $3 - local.get $3 - call $~lib/util/number/decimalCount32 - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $7 - local.get $3 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $8 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $3 - local.get $0 - local.set $8 - local.get $4 - local.set $7 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $3 - local.get $8 - local.get $7 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.get $0 - local.get $4 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $0 - local.get $1 - i64.const 48 - i64.or - i64.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $1 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.set $4 - local.get $3 - local.get $4 - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $7 - local.get $4 - local.set $6 - local.get $3 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $3 - local.get $1 - call $~lib/util/number/decimalCount64High - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - local.set $8 - local.get $3 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_dec_lut - end - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i64.load - local.set $5 - i32.const 0 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $5 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $4 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 20 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 20 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7136 - call $~lib/array/Array#join - ) - (func $~lib/util/number/itoa64 (param $0 i64) (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 i64) - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 7248 - i32.const 7376 - i32.const 431 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 0 - i64.ne - i32.eqz - if - i32.const 7440 - return - end - local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $2 - local.get $2 - if - i64.const 0 - local.get $0 - i64.sub - local.set $0 - end - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.set $4 - local.get $4 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $8 - local.get $4 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/number/utoa32_dec_lut - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $9 - local.get $5 - local.set $6 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $9 - local.get $6 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $4 - local.get $0 - local.set $9 - local.get $5 - local.set $8 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $4 - local.get $9 - local.get $8 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.get $0 - local.get $5 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - i32.const 0 - local.set $2 - i32.const 1 - drop - local.get $1 - i64.const 0 - i64.lt_s - local.set $2 - local.get $2 - if - i64.const 0 - local.get $1 - i64.sub - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 48 - i64.or - i64.store16 - i32.const 1 - local.get $2 - i32.add - return - end - local.get $2 - local.set $3 - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $1 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.set $4 - local.get $3 - local.get $4 - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $7 - local.get $4 - local.set $6 - local.get $3 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $3 - local.get $1 - call $~lib/util/number/decimalCount64High - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - local.set $8 - local.get $3 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_dec_lut - end - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i64.load - local.set $5 - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $5 - i32.wrap_i64 - i64.extend_i32_s - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $4 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 21 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 21 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7136 - call $~lib/array/Array#join - ) - (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7136 - call $~lib/array/Array<~lib/string/String|null>#join - ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 0 - local.set $5 - local.get $3 - i32.eqz - if - local.get $0 - i32.load - local.tee $4 - local.get $5 - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if (result i32) - local.get $5 - call $~lib/array/Array#toString - else - i32.const 6832 - end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 6832 - local.set $7 - local.get $2 - call $~lib/string/String#get:length - local.set $8 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $5 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $~lib/array/Array#toString - local.tee $9 - call $~lib/string/String.__concat - local.tee $10 - local.tee $11 - local.get $7 - local.tee $12 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $7 - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - end - local.get $8 - if - local.get $7 - local.get $2 - call $~lib/string/String.__concat - local.tee $10 - local.tee $12 - local.get $7 - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - local.set $7 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $11 - local.get $5 - local.tee $4 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $~lib/array/Array#toString - local.tee $11 - call $~lib/string/String.__concat - local.tee $4 - local.tee $9 - local.get $7 - local.tee $6 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $7 - local.get $11 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - end - local.get $7 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array<~lib/array/Array>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7136 - call $~lib/array/Array<~lib/array/Array>#join - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 255 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - i32.const 255 - i32.and - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - i32.const 255 - i32.and - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i32.load8_u - local.set $4 - i32.const 0 - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 10 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 10 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7136 - call $~lib/array/Array#join - ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 0 - local.set $5 - local.get $3 - i32.eqz - if - local.get $0 - i32.load - local.tee $4 - local.get $5 - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if (result i32) - local.get $5 - call $~lib/array/Array#toString - else - i32.const 6832 - end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 6832 - local.set $7 - local.get $2 - call $~lib/string/String#get:length - local.set $8 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $5 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $~lib/array/Array#toString - local.tee $9 - call $~lib/string/String.__concat - local.tee $10 - local.tee $11 - local.get $7 - local.tee $12 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $7 - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - end - local.get $8 - if - local.get $7 - local.get $2 - call $~lib/string/String.__concat - local.tee $10 - local.tee $12 - local.get $7 - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - local.set $7 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $11 - local.get $5 - local.tee $4 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $~lib/array/Array#toString - local.tee $11 - call $~lib/string/String.__concat - local.tee $4 - local.tee $9 - local.get $7 - local.tee $6 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $7 - local.get $11 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - end - local.get $7 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array<~lib/array/Array>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7136 - call $~lib/array/Array<~lib/array/Array>#join - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7136 - call $~lib/array/Array#join - ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 0 - local.set $5 - local.get $3 - i32.eqz - if - local.get $0 - i32.load - local.tee $4 - local.get $5 - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if (result i32) - local.get $5 - call $~lib/array/Array#toString - else - i32.const 6832 - end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 6832 - local.set $7 - local.get $2 - call $~lib/string/String#get:length - local.set $8 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $5 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $~lib/array/Array#toString - local.tee $9 - call $~lib/string/String.__concat - local.tee $10 - local.tee $11 - local.get $7 - local.tee $12 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $7 - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - end - local.get $8 - if - local.get $7 - local.get $2 - call $~lib/string/String.__concat - local.tee $10 - local.tee $12 - local.get $7 - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - local.set $7 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $11 - local.get $5 - local.tee $4 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $~lib/array/Array#toString - local.tee $11 - call $~lib/string/String.__concat - local.tee $4 - local.tee $9 - local.get $7 - local.tee $6 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $7 - local.get $11 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - end - local.get $7 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array<~lib/array/Array>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7136 - call $~lib/array/Array<~lib/array/Array>#join - ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 6832 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 0 - local.set $5 - local.get $3 - i32.eqz - if - local.get $0 - i32.load - local.tee $4 - local.get $5 - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if (result i32) - local.get $5 - call $~lib/array/Array<~lib/array/Array>#toString - else - i32.const 6832 - end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 6832 - local.set $7 - local.get $2 - call $~lib/string/String#get:length - local.set $8 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $5 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $9 - call $~lib/string/String.__concat - local.tee $10 - local.tee $11 - local.get $7 - local.tee $12 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $7 - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - end - local.get $8 - if - local.get $7 - local.get $2 - call $~lib/string/String.__concat - local.tee $10 - local.tee $12 - local.get $7 - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - local.set $7 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $11 - local.get $5 - local.tee $4 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $11 - call $~lib/string/String.__concat - local.tee $4 - local.tee $9 - local.get $7 - local.tee $6 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $7 - local.get $11 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - end - local.get $7 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7136 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join - ) - (func $~lib/array/Array<~lib/array/Array>#flat (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) - i32.const 1 - i32.eqz - drop - local.get $0 - i32.load offset=12 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $3 - local.get $6 - i32.const 0 - i32.eq - if (result i32) - i32.const 0 - else - local.get $6 - i32.load offset=12 - end - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.const 2 - i32.shl - local.set $7 - local.get $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $8 - i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.set $9 - local.get $9 - local.get $3 - i32.store offset=12 - local.get $9 - local.get $7 - i32.store offset=8 - local.get $9 - local.get $8 - i32.store offset=4 - local.get $9 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - block $for-continue|1 - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $6 - i32.const 0 - i32.eq - if - br $for-continue|1 - end - local.get $6 - i32.load offset=8 - local.set $11 - local.get $8 - local.get $10 - i32.add - local.get $6 - i32.load offset=4 - local.get $11 - call $~lib/memory/memory.copy - local.get $10 - local.get $11 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 - end - end - i32.const 0 - drop - local.get $9 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat (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) - i32.const 1 - i32.eqz - drop - local.get $0 - i32.load offset=12 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $3 - local.get $6 - i32.const 0 - i32.eq - if (result i32) - i32.const 0 - else - local.get $6 - i32.load offset=12 - end - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.const 2 - i32.shl - local.set $7 - local.get $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $8 - i32.const 16 - i32.const 27 - call $~lib/rt/tlsf/__alloc - local.set $9 - local.get $9 - local.get $3 - i32.store offset=12 - local.get $9 - local.get $7 - i32.store offset=8 - local.get $9 - local.get $8 - i32.store offset=4 - local.get $9 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - block $for-continue|1 - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $6 - i32.const 0 - i32.eq - if - br $for-continue|1 - end - local.get $6 - i32.load offset=8 - local.set $11 - local.get $8 - local.get $10 - i32.add - local.get $6 - i32.load offset=4 - local.get $11 - call $~lib/memory/memory.copy - local.get $10 - local.get $11 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 - end - end - i32.const 1 - drop - i32.const 0 - local.set $4 - loop $for-loop|2 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - drop - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|2 - end - end - local.get $9 - call $~lib/rt/pure/__retain - ) - (func $start:std/array - (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) - (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) - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - global.set $std/array/arr - i32.const 0 - call $~lib/array/Array.isArray<~lib/array/Array|null> - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - local.tee $0 - call $~lib/array/Array.isArray - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/array/Array.isArray - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 400 - call $~lib/array/Array.isArray<~lib/string/String> - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 50 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array.isArray<~lib/array/Array> - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 52 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 432 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 464 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 560 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 592 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 624 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 656 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 688 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $5 - local.get $5 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 736 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 79 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 784 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 832 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 880 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 88 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 928 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 91 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 102 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - local.set $1 - local.get $1 - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - call $~lib/array/Array#push - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 115 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 44 - call $~lib/array/Array#push - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 45 - call $~lib/array/Array#push - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 127 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 128 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 129 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 130 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 131 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $0 - local.get $0 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - i32.store - local.get $0 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - i32.store offset=4 - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - call $~lib/array/Array#set:length - local.get $0 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 139 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.set $0 - global.get $std/array/arr - local.get $0 - call $~lib/array/Array#concat - local.set $1 - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 148 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 149 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 150 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 1024 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - call $~lib/array/Array#concat - call $~lib/rt/pure/__release - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 153 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 155 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 156 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 157 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 46 - call $~lib/array/Array#push - drop - local.get $0 - i32.const 47 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.get $0 - call $~lib/array/Array#concat - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - local.set $1 - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 164 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/array/Array#get:length - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 169 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - call $~lib/array/Array#__get - i32.const 46 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 170 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - call $~lib/array/Array#__get - i32.const 47 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 171 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/array/Array#pop - drop - local.get $1 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 174 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 1040 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 182 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/array/arr - call $~lib/array/Array#concat - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - local.set $1 - local.get $1 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 184 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 185 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1056 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - i32.const 0 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $2 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1104 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 192 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1152 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - local.set $3 - local.get $3 - i32.const 1 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $4 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1200 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 194 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1248 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - local.set $3 - local.get $3 - i32.const 1 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $5 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1296 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 196 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1344 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - local.set $3 - local.get $3 - i32.const 2 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $6 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1392 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 198 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1440 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $8 - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - local.set $3 - local.get $3 - i32.const 0 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $8 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1488 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $11 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 200 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1536 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $10 - local.get $3 - call $~lib/rt/pure/__release - local.get $10 - local.set $3 - local.get $3 - i32.const 1 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $10 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1584 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $13 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 202 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1632 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $12 - local.get $3 - call $~lib/rt/pure/__release - local.get $12 - local.set $3 - local.get $3 - i32.const 1 - i32.const 2 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $12 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1680 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $15 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 204 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1728 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $14 - local.get $3 - call $~lib/rt/pure/__release - local.get $14 - local.set $3 - local.get $3 - i32.const 0 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $14 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1776 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $17 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 206 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1824 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $16 - local.get $3 - call $~lib/rt/pure/__release - local.get $16 - local.set $3 - local.get $3 - i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/array/Array#copyWithin - local.tee $16 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1872 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $19 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 208 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1920 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $18 - local.get $3 - call $~lib/rt/pure/__release - local.get $18 - local.set $3 - local.get $3 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/array/Array#copyWithin - local.tee $18 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1968 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $21 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 210 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2016 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $20 - local.get $3 - call $~lib/rt/pure/__release - local.get $20 - local.set $3 - local.get $3 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/array/Array#copyWithin - local.tee $20 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2064 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $23 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 212 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2112 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $22 - local.get $3 - call $~lib/rt/pure/__release - local.get $22 - local.set $3 - local.get $3 - i32.const -4 - i32.const -3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $22 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2160 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $25 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 214 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 42 - call $~lib/array/Array#unshift - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 222 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 223 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 224 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 225 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 226 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 227 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 41 - call $~lib/array/Array#unshift - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 231 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 232 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 41 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 233 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 234 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 235 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 236 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 237 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#shift - global.set $std/array/i - global.get $std/array/i - i32.const 41 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 246 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 247 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 248 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 249 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 250 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 251 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 252 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - global.set $std/array/i - global.get $std/array/i - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 256 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 257 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 258 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 259 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 260 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 261 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#reverse - call $~lib/rt/pure/__release - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 269 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 270 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 271 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 272 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 273 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 44 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 44 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 283 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 286 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 45 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 289 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 292 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 295 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 298 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -4 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 301 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 304 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 1 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 307 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 310 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 9 - i32.const 2208 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $22 - f32.const nan:0x400000 - i32.const 0 - call $~lib/array/Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 312 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 3 - i32.const 10 - i32.const 2240 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $23 - f64.const nan:0x8000000000000 - i32.const 0 - call $~lib/array/Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 313 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 44 - i32.const 0 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 320 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - i32.const 0 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 45 - i32.const 0 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 326 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 100 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 329 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -100 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 332 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -2 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 335 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -4 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 338 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 0 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 341 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 1 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 2 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 347 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 9 - i32.const 2272 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $25 - f32.const nan:0x400000 - i32.const 0 - call $~lib/array/Array#includes - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 349 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 3 - i32.const 10 - i32.const 2304 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $20 - f64.const nan:0x8000000000000 - i32.const 0 - call $~lib/array/Array#includes - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 350 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - i32.const 1 - call $~lib/array/Array#splice - call $~lib/rt/pure/__release - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 354 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 355 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 356 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 357 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2336 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $25 - local.get $25 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.tee $20 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2384 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $22 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 364 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2432 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $21 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2448 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $24 - local.get $25 - call $~lib/rt/pure/__release - local.get $24 - local.set $25 - local.get $25 - i32.const 0 - i32.const 0 - call $~lib/array/Array#splice - local.tee $24 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2496 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $23 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 368 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2512 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $19 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 369 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2560 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $3 - local.get $25 - call $~lib/rt/pure/__release - local.get $3 - local.set $25 - local.get $25 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.tee $3 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 2608 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $18 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 372 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 2640 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $17 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 373 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2672 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $2 - local.get $25 - call $~lib/rt/pure/__release - local.get $2 - local.set $25 - local.get $25 - i32.const 2 - i32.const 2 - call $~lib/array/Array#splice - local.tee $2 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 2720 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $16 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 376 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 2752 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $15 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 377 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2784 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $0 - local.get $25 - call $~lib/rt/pure/__release - local.get $0 - local.set $25 - local.get $25 - i32.const 0 - i32.const 1 - call $~lib/array/Array#splice - local.tee $0 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 2832 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $14 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 380 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 2864 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $13 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 381 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2896 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $4 - local.get $25 - call $~lib/rt/pure/__release - local.get $4 - local.set $25 - local.get $25 - i32.const -1 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.tee $4 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 2944 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $12 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 384 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 2976 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $11 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 385 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3008 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $1 - local.get $25 - call $~lib/rt/pure/__release - local.get $1 - local.set $25 - local.get $25 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.tee $1 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 3056 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $10 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 3088 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3120 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $5 - local.get $25 - call $~lib/rt/pure/__release - local.get $5 - local.set $25 - local.get $25 - i32.const -2 - i32.const 1 - call $~lib/array/Array#splice - local.tee $5 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 3168 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 3200 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3232 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $25 - call $~lib/rt/pure/__release - local.get $6 - local.set $25 - local.get $25 - i32.const -7 - i32.const 1 - call $~lib/array/Array#splice - local.tee $6 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 3280 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $27 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 396 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 3312 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $28 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 397 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3344 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $26 - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - local.set $25 - local.get $25 - i32.const -2 - i32.const -1 - call $~lib/array/Array#splice - local.tee $26 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 3392 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $30 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 400 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3408 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $31 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 401 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3456 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $29 - local.get $25 - call $~lib/rt/pure/__release - local.get $29 - local.set $25 - local.get $25 - i32.const 1 - i32.const -2 - call $~lib/array/Array#splice - local.tee $29 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 3504 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $33 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 404 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3520 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $34 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 405 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3568 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $32 - local.get $25 - call $~lib/rt/pure/__release - local.get $32 - local.set $25 - local.get $25 - i32.const 4 - i32.const 0 - call $~lib/array/Array#splice - local.tee $32 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 3616 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $36 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 408 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3632 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $37 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 409 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3680 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $35 - local.get $25 - call $~lib/rt/pure/__release - local.get $35 - local.set $25 - local.get $25 - i32.const 7 - i32.const 0 - call $~lib/array/Array#splice - local.tee $35 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 3728 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $39 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 412 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3744 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $40 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3792 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $38 - local.get $25 - call $~lib/rt/pure/__release - local.get $38 - local.set $25 - local.get $25 - i32.const 7 - i32.const 5 - call $~lib/array/Array#splice - local.tee $38 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 3840 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $42 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3856 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $43 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 8 - i32.const 3904 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $45 - local.get $45 - i32.const 1 - i32.const 2 - call $~lib/array/Array#splice - local.set $46 - local.get $46 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 421 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $45 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 422 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $44 - local.get $44 - i32.load offset=4 - local.set $41 - local.get $41 - i32.const 0 - i32.const 1 - call $std/array/Ref#constructor - i32.store - local.get $41 - i32.const 0 - i32.const 2 - call $std/array/Ref#constructor - i32.store offset=4 - local.get $41 - i32.const 0 - i32.const 3 - call $std/array/Ref#constructor - i32.store offset=8 - local.get $41 - i32.const 0 - i32.const 4 - call $std/array/Ref#constructor - i32.store offset=12 - local.get $41 - i32.const 0 - i32.const 5 - call $std/array/Ref#constructor - i32.store offset=16 - local.get $44 - local.set $44 - local.get $45 - call $~lib/rt/pure/__release - local.get $44 - local.set $45 - local.get $45 - i32.const 2 - i32.const 2 - call $~lib/array/Array#splice - local.set $41 - local.get $46 - call $~lib/rt/pure/__release - local.get $41 - local.set $46 - local.get $46 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 427 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $46 - i32.const 0 - call $~lib/array/Array#__get - local.tee $41 - i32.load - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 428 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $46 - i32.const 1 - call $~lib/array/Array#__get - local.tee $44 - i32.load - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 429 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $45 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 431 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $45 - i32.const 0 - call $~lib/array/Array#__get - local.tee $47 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 432 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $45 - i32.const 1 - call $~lib/array/Array#__get - local.tee $48 - i32.load - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 433 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $45 - i32.const 2 - call $~lib/array/Array#__get - local.tee $49 - i32.load - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 434 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $50 - local.get $50 - i32.load offset=4 - local.set $51 - local.get $51 - i32.const 0 - i32.const 1 - call $std/array/Ref#constructor - i32.store - local.get $51 - i32.const 0 - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $51 - i32.const 0 - i32.const 2 - call $std/array/Ref#constructor - i32.store offset=8 - local.get $50 - local.set $52 - local.get $52 - i32.const 0 - i32.const 1 - call $~lib/array/Array#splice - local.set $53 - local.get $53 - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 439 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $53 - i32.const 0 - call $~lib/array/Array#__get - local.tee $51 - local.tee $50 - if (result i32) - local.get $50 - else - i32.const 4032 - i32.const 288 - i32.const 440 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $52 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 442 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $52 - i32.const 0 - call $~lib/array/Array#__get - local.tee $50 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 443 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $52 - i32.const 1 - call $~lib/array/Array#__get - local.tee $54 - local.tee $55 - if (result i32) - local.get $55 - else - i32.const 4032 - i32.const 288 - i32.const 444 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.load - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 444 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $25 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 0 - i32.const 0 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 1 - i32.const 1 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 2 - i32.const 2 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 3 - i32.const 3 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 4080 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 457 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4112 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 460 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4144 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4176 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 471 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 472 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4208 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 474 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 4240 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 487 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 488 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 4272 - call $~lib/array/Array#every - local.set $54 - local.get $54 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 498 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4304 - call $~lib/array/Array#every - local.set $54 - local.get $54 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 501 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4336 - call $~lib/array/Array#every - local.set $54 - local.get $54 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 509 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 510 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4368 - call $~lib/array/Array#every - local.set $54 - local.get $54 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 512 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 4400 - call $~lib/array/Array#every - local.set $54 - local.get $54 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 525 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 526 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 4432 - call $~lib/array/Array#some - local.set $54 - local.get $54 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 536 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4464 - call $~lib/array/Array#some - local.set $54 - local.get $54 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 539 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4496 - call $~lib/array/Array#some - local.set $54 - local.get $54 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 547 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 548 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4528 - call $~lib/array/Array#some - local.set $54 - local.get $54 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 550 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 4560 - call $~lib/array/Array#some - local.set $54 - local.get $54 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 4592 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 4624 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 4656 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 406 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 588 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 4688 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 602 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 4720 - call $~lib/array/Array#forEach - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $54 - loop $for-loop|0 - local.get $54 - i32.const 100 - i32.lt_s - local.set $50 - local.get $50 - if - global.get $std/array/arr - call $~lib/array/Array#pop - drop - local.get $54 - i32.const 1 - i32.add - local.set $54 - br $for-loop|0 - end - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 4752 - call $~lib/array/Array#map - local.set $54 - local.get $54 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 642 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $54 - i32.const 0 - call $~lib/array/Array#__get - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - f32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 643 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 4784 - call $~lib/array/Array#map - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 652 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 653 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 4816 - call $~lib/array/Array#map - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 406 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 660 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 4848 - call $~lib/array/Array#map - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 675 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 676 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - local.get $54 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 4880 - call $~lib/array/Array#filter - local.set $54 - local.get $54 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 686 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 4912 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 695 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 696 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 4944 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 406 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 703 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 4976 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 718 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 719 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - local.get $54 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 5008 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 729 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5040 - i32.const 4 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 733 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5072 - i32.const 0 - call $~lib/array/Array#reduce - local.set $54 - local.get $54 - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 736 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5104 - i32.const 0 - call $~lib/array/Array#reduce - local.set $54 - local.get $54 - i32.const 0 - i32.ne - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 739 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5136 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 747 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 748 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5168 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 750 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 5200 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 763 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 764 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 5232 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 774 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5264 - i32.const 4 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 778 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5296 - i32.const 0 - call $~lib/array/Array#reduceRight - local.set $54 - local.get $54 - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 781 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5328 - i32.const 0 - call $~lib/array/Array#reduceRight - local.set $54 - local.get $54 - i32.const 0 - i32.ne - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 784 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5360 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 792 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 793 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5392 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 795 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 5424 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 808 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 809 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - call $~lib/bindings/Math/random - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - i32.const 8 - i32.const 2 - i32.const 9 - i32.const 5696 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $50 - local.get $50 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/array/Array#sort@varargs - call $~lib/rt/pure/__release - local.get $50 - i32.const 8 - i32.const 2 - i32.const 9 - i32.const 5776 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $51 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 898 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 3 - i32.const 10 - i32.const 5824 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $49 - local.get $49 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/array/Array#sort@varargs - call $~lib/rt/pure/__release - local.get $49 - i32.const 8 - i32.const 3 - i32.const 10 - i32.const 5936 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $48 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 902 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 6016 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $47 - local.get $47 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/array/Array#sort@varargs - call $~lib/rt/pure/__release - local.get $47 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 6096 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $44 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 906 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 6144 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $41 - local.get $41 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/array/Array#sort@varargs - call $~lib/rt/pure/__release - local.get $41 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 6224 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $43 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 910 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 6272 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $42 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 6288 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $38 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 6320 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $40 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 6352 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $39 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 6384 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $35 - i32.const 64 - call $std/array/createReverseOrderedArray - local.set $54 - i32.const 128 - call $std/array/createReverseOrderedArray - local.set $37 - i32.const 1024 - call $std/array/createReverseOrderedArray - local.set $36 - i32.const 10000 - call $std/array/createReverseOrderedArray - local.set $32 - i32.const 512 - call $std/array/createRandomOrderedArray - local.set $34 - local.get $42 - call $std/array/assertSortedDefault - local.get $38 - call $std/array/assertSortedDefault - local.get $38 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 6448 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $29 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 930 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $40 - call $std/array/assertSortedDefault - local.get $40 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 6480 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $31 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 933 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $39 - call $std/array/assertSortedDefault - local.get $39 - local.get $35 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 936 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $54 - call $std/array/assertSortedDefault - local.get $54 - local.get $35 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 939 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $37 - call $std/array/assertSortedDefault - local.get $37 - local.get $35 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 942 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $36 - call $std/array/assertSortedDefault - local.get $36 - local.get $35 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 945 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $32 - call $std/array/assertSortedDefault - local.get $32 - local.get $35 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 948 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $34 - call $std/array/assertSortedDefault - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - i32.const 64 - call $std/array/createRandomOrderedArray - local.set $31 - i32.const 257 - call $std/array/createRandomOrderedArray - local.set $29 - local.get $31 - i32.const 6512 - call $std/array/assertSorted - local.get $31 - i32.const 6544 - call $std/array/assertSorted - local.get $29 - i32.const 6576 - call $std/array/assertSorted - local.get $29 - i32.const 6608 - call $std/array/assertSorted - local.get $31 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - i32.const 2 - call $std/array/createReverseOrderedNestedArray - local.set $29 - local.get $29 - i32.const 6640 - call $std/array/assertSorted<~lib/array/Array> - local.get $29 - call $~lib/rt/pure/__release - i32.const 512 - call $std/array/createReverseOrderedElementsArray - local.set $29 - local.get $29 - i32.const 6672 - call $std/array/assertSorted> - local.get $29 - call $~lib/rt/pure/__release - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 6848 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $31 - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 6896 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $34 - local.get $31 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $std/array/assertSorted<~lib/string/String|null>@varargs - local.get $31 - local.get $34 - i32.const 0 - call $std/array/isArraysEqual<~lib/string/String|null> - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 985 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 400 - call $std/array/createRandomStringArray - local.set $29 - local.get $29 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $std/array/assertSorted<~lib/string/String>@varargs - local.get $31 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - i32.const 2 - i32.const 0 - i32.const 31 - i32.const 7040 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $34 - i32.const 7136 - call $~lib/array/Array#join - local.tee $29 - i32.const 7168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 994 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 7216 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $32 - i32.const 6832 - call $~lib/array/Array#join - local.tee $31 - i32.const 9008 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 995 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 7 - i32.const 9040 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $37 - i32.const 9072 - call $~lib/array/Array#join - local.tee $36 - i32.const 9008 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 996 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 9104 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $35 - i32.const 9136 - call $~lib/array/Array#join - local.tee $54 - i32.const 9168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 997 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 6 - i32.const 3 - i32.const 10 - i32.const 9232 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $40 - i32.const 9296 - call $~lib/array/Array#join - local.tee $39 - i32.const 10384 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 998 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 10512 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $42 - i32.const 6832 - call $~lib/array/Array<~lib/string/String|null>#join - local.tee $38 - i32.const 10480 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 999 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $43 - local.get $43 - i32.load offset=4 - local.set $41 - local.get $41 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - i32.store - local.get $41 - i32.const 0 - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $41 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - i32.store offset=8 - local.get $43 - local.set $41 - local.get $41 - i32.const 7136 - call $~lib/array/Array#join - local.tee $43 - i32.const 10592 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1001 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $44 - local.get $44 - i32.load offset=4 - local.set $47 - local.get $47 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - i32.store - local.get $47 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - i32.store offset=4 - local.get $44 - local.set $47 - local.get $47 - i32.const 7136 - call $~lib/array/Array#join - local.tee $44 - i32.const 10672 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1004 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $34 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 10752 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $47 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 10768 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $43 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 10800 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $41 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 10832 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $38 - local.get $47 - call $~lib/array/Array#toString - local.tee $44 - i32.const 6832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1014 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $43 - call $~lib/array/Array#toString - local.tee $42 - i32.const 10480 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1015 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $41 - call $~lib/array/Array#toString - local.tee $39 - i32.const 10864 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1016 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $38 - call $~lib/array/Array#toString - local.tee $40 - i32.const 10896 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1017 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 0 - i32.const 32 - i32.const 10928 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $35 - call $~lib/array/Array#toString - local.tee $54 - i32.const 10960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1019 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 1 - i32.const 33 - i32.const 10992 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $37 - call $~lib/array/Array#toString - local.tee $36 - i32.const 11024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1020 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 3 - i32.const 34 - i32.const 11072 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $32 - call $~lib/array/Array#toString - local.tee $31 - i32.const 11120 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1021 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 3 - i32.const 35 - i32.const 11184 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $34 - call $~lib/array/Array#toString - local.tee $29 - i32.const 11232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1022 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 11344 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $49 - local.get $49 - call $~lib/array/Array<~lib/string/String|null>#toString - local.tee $48 - i32.const 11392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1026 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 2 - i32.const 27 - i32.const 11504 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $50 - call $~lib/array/Array<~lib/string/String|null>#toString - local.tee $51 - i32.const 11536 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1027 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 22 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $33 - local.get $33 - i32.load offset=4 - local.set $30 - local.get $30 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 11568 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store - local.get $30 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 11600 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $33 - local.set $56 - local.get $56 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $30 - i32.const 11632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1030 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 36 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $33 - local.get $33 - i32.load offset=4 - local.set $26 - local.get $26 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 11664 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store - local.get $26 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 11696 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $33 - local.set $57 - local.get $57 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $26 - i32.const 11632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1033 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - i32.const 38 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $33 - local.get $33 - i32.load offset=4 - local.set $28 - local.get $28 - i32.const 1 - i32.const 2 - i32.const 37 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $27 - local.get $27 - i32.load offset=4 - local.set $6 - local.get $6 - i32.const 1 - i32.const 2 - i32.const 7 - i32.const 11728 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store - local.get $27 - i32.store - local.get $33 - local.set $58 - local.get $58 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString - local.tee $28 - i32.const 10480 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1036 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $47 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - global.get $std/array/arr - call $~lib/rt/pure/__release - i32.const 4 - i32.const 2 - i32.const 22 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $28 - local.get $28 - i32.load offset=4 - local.set $26 - local.get $26 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 11760 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store - local.get $26 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 11792 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $26 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 11824 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=8 - local.get $26 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 11856 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=12 - local.get $28 - local.set $59 - local.get $59 - call $~lib/array/Array<~lib/array/Array>#flat - local.set $60 - local.get $60 - call $~lib/array/Array#get:length - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1047 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $26 - loop $for-loop|1 - local.get $26 - i32.const 10 - i32.lt_s - local.set $28 - local.get $28 - if - local.get $60 - local.get $26 - call $~lib/array/Array#__get - local.get $26 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1049 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $26 - i32.const 1 - i32.add - local.set $26 - br $for-loop|1 - end - end - i32.const 4 - i32.const 2 - i32.const 39 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $26 - local.get $26 - i32.load offset=4 - local.set $28 - local.get $28 - i32.const 1 - i32.const 2 - i32.const 27 - i32.const 11920 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store - local.get $28 - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 12016 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $28 - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 12144 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=8 - local.get $28 - i32.const 1 - i32.const 2 - i32.const 27 - i32.const 12208 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=12 - local.get $26 - local.set $61 - local.get $61 - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat - local.set $62 - i32.const 8 - i32.const 2 - i32.const 27 - i32.const 12240 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $63 - local.get $62 - call $~lib/array/Array<~lib/string/String|null>#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1055 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $26 - loop $for-loop|2 - local.get $26 - local.get $63 - call $~lib/array/Array<~lib/string/String|null>#get:length - i32.lt_s - local.set $28 - local.get $28 - if - local.get $62 - local.get $26 - call $~lib/array/Array<~lib/string/String|null>#__get - local.tee $30 - local.get $63 - local.get $26 - call $~lib/array/Array<~lib/string/String|null>#__get - local.tee $51 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1057 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $30 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $26 - i32.const 1 - i32.add - local.set $26 - br $for-loop|2 - end - end - i32.const 2 - i32.const 2 - i32.const 22 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $26 - local.get $26 - i32.load offset=4 - local.set $28 - local.get $28 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 12288 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store - local.get $28 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 12304 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $26 - local.set $28 - local.get $28 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $26 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 1061 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $28 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $59 - call $~lib/rt/pure/__release - local.get $60 - call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $std/array/ArrayU32#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 40 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - call $~lib/array/Array#constructor - local.set $0 - local.get $0 - ) - (func $~lib/array/Array#get:buffer (param $0 i32) (result i32) - local.get $0 - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $2 - call $~lib/rt/pure/__release - end - local.get $1 - i32.store - ) - (func $~lib/array/Array#get:dataStart (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - ) - (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) - (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array#get:length_ (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - i32.const 0 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 496 - i32.const 80 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.ge_s - end - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $6 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - i32.const 0 - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s - return - ) - (func $~lib/array/Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.set $2 - else - local.get $2 - local.get $3 - i32.ge_s - if - local.get $3 - i32.const 1 - i32.sub - local.set $2 - end - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - local.set $5 - local.get $5 - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - ) - (func $~lib/array/Array#concat (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - local.get $1 - i32.load offset=12 - local.get $1 - i32.const 0 - i32.eq - select - local.set $3 - local.get $2 - local.get $3 - i32.add - local.set $4 - local.get $4 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $5 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $2 - i32.const 2 - i32.shl - local.set $7 - i32.const 0 - drop - local.get $6 - local.get $0 - i32.load offset=4 - local.get $7 - call $~lib/memory/memory.copy - local.get $6 - local.get $7 - i32.add - local.get $1 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $5 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/array/Array#copyWithin (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.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $1 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $1 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $8 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $2 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $9 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $10 - local.get $10 - local.get $9 - i32.sub - local.tee $6 - local.get $5 - local.get $8 - i32.sub - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $11 - i32.const 0 - drop - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 976 - i32.const 80 - i32.const 300 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - local.tee $5 - local.get $0 - i32.load offset=12 - local.tee $6 - local.get $5 - local.get $6 - i32.lt_s - select - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $6 - local.get $3 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.get $6 - call $~lib/array/Array#push - drop - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#shift (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 976 - i32.const 80 - i32.const 361 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - i32.load - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.set $4 - local.get $2 - local.get $2 - i32.const 4 - i32.add - local.get $4 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - i32.const 0 - drop - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $4 - i32.store offset=12 - local.get $3 - ) - (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.set $2 - local.get $0 - local.get $2 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - i32.const 0 - drop - local.get $3 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array#slice (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.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $2 - local.get $2 - local.get $1 - i32.sub - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $3 - local.get $3 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $8 - i32.const 0 - drop - local.get $7 - local.get $8 - local.get $3 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $6 - ) - (func $~lib/array/Array#splice (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.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $1 - local.get $2 - local.tee $4 - local.get $3 - local.get $1 - i32.sub - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - local.get $2 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=4 - local.set $8 - local.get $8 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $9 - local.get $7 - local.get $9 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $2 - i32.add - local.set $10 - local.get $3 - local.get $10 - i32.ne - if - local.get $9 - local.get $8 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $10 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $6 - ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - if - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $2 - local.get $3 - i32.load - i32.store - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $3 - i32.const 4 - i32.sub - local.set $3 - br $while-continue|0 - end - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#flat (param $0 i32) (result i32) - i32.const 0 - i32.eqz - drop - i32.const 12320 - i32.const 80 - i32.const 504 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 0 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $std/array/ArrayU8#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 41 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - call $~lib/array/Array#constructor - local.set $0 - local.get $0 - ) - (func $~lib/array/Array#get:buffer (param $0 i32) (result i32) - local.get $0 - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $2 - call $~lib/rt/pure/__release - end - local.get $1 - i32.store - ) - (func $~lib/array/Array#get:dataStart (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - ) - (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) - (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array#get:length_ (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - i32.const 0 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 496 - i32.const 80 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.ge_s - end - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $6 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $6 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - i32.const 0 - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s - return - ) - (func $~lib/array/Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.set $2 - else - local.get $2 - local.get $3 - i32.ge_s - if - local.get $3 - i32.const 1 - i32.sub - local.set $2 - end - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - local.set $5 - local.get $5 - if - local.get $4 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 0 - call $~lib/array/ensureSize - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 0 - i32.shl - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - ) - (func $~lib/array/Array#concat (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - local.get $1 - i32.load offset=12 - local.get $1 - i32.const 0 - i32.eq - select - local.set $3 - local.get $2 - local.get $3 - i32.add - local.set $4 - local.get $4 - i32.const 1073741808 - i32.const 0 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $5 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $2 - i32.const 0 - i32.shl - local.set $7 - i32.const 0 - drop - local.get $6 - local.get $0 - i32.load offset=4 - local.get $7 - call $~lib/memory/memory.copy - local.get $6 - local.get $7 - i32.add - local.get $1 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - call $~lib/memory/memory.copy - local.get $5 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/array/Array#copyWithin (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.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $1 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $1 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $8 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $2 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $9 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $10 - local.get $10 - local.get $9 - i32.sub - local.tee $6 - local.get $5 - local.get $8 - i32.sub - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $11 - i32.const 0 - drop - local.get $4 - local.get $8 - i32.const 0 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.const 0 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 976 - i32.const 80 - i32.const 300 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $2 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - local.tee $5 - local.get $0 - i32.load offset=12 - local.tee $6 - local.get $5 - local.get $6 - i32.lt_s - select - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $6 - local.get $6 - local.get $3 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.get $6 - call $~lib/array/Array#push - drop - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#shift (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 976 - i32.const 80 - i32.const 361 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - i32.load8_u - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.set $4 - local.get $2 - local.get $2 - i32.const 1 - i32.add - local.get $4 - i32.const 0 - i32.shl - call $~lib/memory/memory.copy - i32.const 0 - drop - local.get $2 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.const 0 - i32.store8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $3 - ) - (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.set $2 - local.get $0 - local.get $2 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 1 - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub - i32.const 0 - i32.shl - call $~lib/memory/memory.copy - i32.const 0 - drop - local.get $3 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array#slice (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.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $2 - local.get $2 - local.get $1 - i32.sub - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $3 - local.get $3 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - local.set $8 - i32.const 0 - drop - local.get $7 - local.get $8 - local.get $3 - i32.const 0 - i32.shl - call $~lib/memory/memory.copy - local.get $6 - ) - (func $~lib/array/Array#splice (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.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $1 - local.get $2 - local.tee $4 - local.get $3 - local.get $1 - i32.sub - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - local.get $2 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=4 - local.set $8 - local.get $8 - local.get $1 - i32.const 0 - i32.shl - i32.add - local.set $9 - local.get $7 - local.get $9 - local.get $2 - i32.const 0 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $2 - i32.add - local.set $10 - local.get $3 - local.get $10 - i32.ne - if - local.get $9 - local.get $8 - local.get $10 - i32.const 0 - i32.shl - i32.add - local.get $3 - local.get $10 - i32.sub - i32.const 0 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $6 - ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - if - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load8_u - local.set $5 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $3 - local.get $5 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|0 - end - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 0 - i32.shl - i32.add - local.get $8 - i32.store8 - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 0 - i32.shl - i32.add - local.get $5 - i32.store8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $9 - local.get $0 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 0 - i32.shl - i32.add - local.get $9 - i32.store8 - local.get $0 - local.get $8 - i32.const 0 - i32.shl - i32.add - local.get $10 - i32.store8 - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 - if - local.get $0 - i32.load8_u - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.store8 - local.get $0 - local.get $5 - i32.const 0 - i32.shl - i32.add - local.get $10 - i32.store8 - i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 - if - local.get $0 - i32.load8_u - local.set $10 - local.get $0 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $11 - local.get $10 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $10 - i32.store8 - local.get $0 - local.get $11 - i32.store8 - end - local.get $9 - i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 - end - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 - end - end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load8_u offset=1 - local.set $12 - local.get $0 - local.get $0 - i32.load8_u - i32.store8 offset=1 - local.get $0 - local.get $12 - i32.store8 - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.const 2 - i32.eq - if - local.get $4 - i32.load8_u offset=1 - local.set $3 - local.get $4 - i32.load8_u - local.set $5 - local.get $3 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.store8 offset=1 - local.get $4 - local.get $3 - i32.store8 - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $4 - local.set $5 - local.get $2 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $6 - i32.const 0 - drop - local.get $3 - i32.const 256 - i32.lt_s - if - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort - else - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/weakHeapSort - end - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/array/Array#flat (param $0 i32) (result i32) - i32.const 0 - i32.eqz - drop - i32.const 12320 - i32.const 80 - i32.const 504 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $std/array/ArrayStr#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 42 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $0 - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#get:buffer (param $0 i32) (result i32) - local.get $0 - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array<~lib/string/String>#set:buffer (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $2 - call $~lib/rt/pure/__release - end - local.get $1 - i32.store - ) - (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - ) - (func $~lib/array/Array<~lib/string/String>#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array<~lib/string/String>#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) - (func $~lib/array/Array<~lib/string/String>#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array<~lib/string/String>#get:length_ (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 1 - drop - local.get $2 - local.get $1 - i32.gt_s - if - local.get $0 - i32.load offset=4 - local.set $3 - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $4 - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.set $5 - loop $do-continue|0 - local.get $4 - i32.load - call $~lib/rt/pure/__release - local.get $4 - i32.const 4 - i32.add - local.tee $4 - local.get $5 - i32.lt_u - local.set $6 - local.get $6 - br_if $do-continue|0 - end - else - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - end - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - i32.const 0 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array<~lib/string/String>#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array<~lib/string/String>#fill (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $2 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $3 - i32.const 1 - drop - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $1 - local.get $7 - i32.ne - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - call $~lib/rt/pure/__release - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $~lib/array/Array<~lib/string/String>#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.ge_s - end - if - i32.const -1 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $6 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - call $~lib/string/String.__eq - if - local.get $2 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array<~lib/string/String>#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - drop - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#indexOf - i32.const 0 - i32.ge_s - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - ) - (func $~lib/array/Array<~lib/string/String>#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $2 - i32.add - local.set $2 - else - local.get $2 - local.get $3 - i32.ge_s - if - local.get $3 - i32.const 1 - i32.sub - local.set $2 - end - end - local.get $0 - i32.load offset=4 - local.set $5 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - local.set $4 - local.get $4 - if - local.get $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - call $~lib/string/String.__eq - if - local.get $2 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - call $~lib/rt/pure/__retain - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array<~lib/string/String>#concat (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - local.get $1 - i32.load offset=12 - local.get $1 - i32.const 0 - i32.eq - select - local.set $3 - local.get $2 - local.get $3 - i32.add - local.set $4 - local.get $4 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $5 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $2 - i32.const 2 - i32.shl - local.set $7 - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $7 - i32.lt_u - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.add - i32.load - local.set $11 - local.get $6 - local.get $9 - i32.add - local.get $11 - call $~lib/rt/pure/__retain - i32.store - local.get $9 - i32.const 4 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $6 - local.get $7 - i32.add - local.set $6 - local.get $1 - i32.load offset=4 - local.set $9 - local.get $3 - i32.const 2 - i32.shl - local.set $10 - i32.const 0 - local.set $11 - loop $for-loop|1 - local.get $11 - local.get $10 - i32.lt_u - local.set $12 - local.get $12 - if - local.get $9 - local.get $11 - i32.add - i32.load - local.set $13 - local.get $6 - local.get $11 - i32.add - local.get $13 - call $~lib/rt/pure/__retain - i32.store - local.get $11 - i32.const 4 - i32.add - local.set $11 - br $for-loop|1 - end - end - local.get $5 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $~lib/array/Array<~lib/string/String>#copyWithin (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 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $1 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $1 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $8 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $2 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $9 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $10 - local.get $10 - local.get $9 - i32.sub - local.tee $6 - local.get $5 - local.get $8 - i32.sub - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - local.set $11 - i32.const 1 - drop - local.get $9 - local.get $8 - i32.lt_s - if (result i32) - local.get $8 - local.get $9 - local.get $11 - i32.add - i32.lt_s - else - i32.const 0 - end - if - local.get $9 - local.get $11 - i32.const 1 - i32.sub - i32.add - local.set $9 - local.get $8 - local.get $11 - i32.const 1 - i32.sub - i32.add - local.set $8 - loop $while-continue|0 - local.get $11 - local.set $6 - local.get $6 - if - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $4 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $12 - local.get $12 - local.get $7 - i32.ne - if - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $12 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - call $~lib/rt/pure/__release - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $11 - i32.const 1 - i32.sub - local.set $11 - br $while-continue|0 - end - end - else - loop $while-continue|1 - local.get $11 - local.set $6 - local.get $6 - if - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $13 - local.get $4 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $14 - local.get $14 - local.get $13 - i32.ne - if - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $14 - call $~lib/rt/pure/__retain - i32.store - local.get $13 - call $~lib/rt/pure/__release - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - local.get $8 - i32.const 1 - i32.add - local.set $8 - local.get $11 - i32.const 1 - i32.sub - local.set $11 - br $while-continue|1 - end - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array<~lib/string/String>#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 976 - i32.const 80 - i32.const 300 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $2 - ) - (func $~lib/array/Array<~lib/string/String>#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/string/String>#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - local.tee $5 - local.get $0 - i32.load offset=12 - local.tee $6 - local.get $5 - local.get $6 - i32.lt_s - select - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - local.get $3 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.get $6 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $6 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array<~lib/string/String>#shift (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - i32.const 1 - i32.lt_s - if - i32.const 976 - i32.const 80 - i32.const 361 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - i32.load - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.set $4 - local.get $2 - local.get $2 - i32.const 4 - i32.add - local.get $4 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - i32.const 1 - drop - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $4 - i32.store offset=12 - local.get $3 - ) - (func $~lib/array/Array<~lib/string/String>#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array<~lib/string/String>#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.set $2 - local.get $0 - local.get $2 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 4 - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - i32.const 1 - drop - local.get $3 - local.get $1 - call $~lib/rt/pure/__retain - i32.store - local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array<~lib/string/String>#slice (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.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $2 - local.get $2 - local.get $1 - i32.sub - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $3 - local.get $3 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $8 - i32.const 1 - drop - i32.const 0 - local.set $4 - local.get $3 - i32.const 2 - i32.shl - local.set $5 - loop $while-continue|0 - local.get $4 - local.get $5 - i32.lt_u - local.set $9 - local.get $9 - if - local.get $8 - local.get $4 - i32.add - i32.load - local.set $10 - local.get $7 - local.get $4 - i32.add - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - i32.const 4 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $6 - ) - (func $~lib/array/Array<~lib/string/String>#splice (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.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $1 - local.get $2 - local.tee $4 - local.get $3 - local.get $1 - i32.sub - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $2 - local.get $2 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=4 - local.set $8 - local.get $8 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $9 - local.get $7 - local.get $9 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $2 - i32.add - local.set $10 - local.get $3 - local.get $10 - i32.ne - if - local.get $9 - local.get $8 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $10 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $6 - ) - (func $~lib/array/Array<~lib/string/String>#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - if - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - local.get $3 - i32.load - i32.store - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $3 - i32.const 4 - i32.sub - local.set $3 - local.get $5 - call $~lib/rt/pure/__release - br $while-continue|0 - end - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array<~lib/string/String>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinStringArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/array/Array<~lib/string/String>#flat (param $0 i32) (result i32) - i32.const 0 - i32.eqz - drop - i32.const 12320 - i32.const 80 - i32.const 504 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array<~lib/string/String>#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7136 - call $~lib/array/Array<~lib/string/String>#join - ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:std/array - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 240 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array>#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array<~lib/string/String|null>#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$41 - block $switch$1$case$40 - block $switch$1$case$39 - block $switch$1$case$38 - block $switch$1$case$37 - block $switch$1$case$36 - block $switch$1$case$35 - block $switch$1$case$34 - block $switch$1$case$33 - block $switch$1$case$32 - block $switch$1$case$31 - block $switch$1$case$30 - block $switch$1$case$29 - block $switch$1$case$28 - block $switch$1$case$27 - block $switch$1$case$25 - block $switch$1$case$24 - block $switch$1$case$23 - block $switch$1$case$22 - block $switch$1$case$21 - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$18 - block $switch$1$case$17 - block $switch$1$case$16 - block $switch$1$case$15 - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$2 $switch$1$case$4 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$15 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$2 $switch$1$case$27 $switch$1$case$28 $switch$1$case$29 $switch$1$case$30 $switch$1$case$31 $switch$1$case$32 $switch$1$case$33 $switch$1$case$34 $switch$1$case$35 $switch$1$case$36 $switch$1$case$37 $switch$1$case$38 $switch$1$case$39 $switch$1$case$40 $switch$1$case$41 $switch$1$case$9 $switch$1$case$8 $switch$1$case$31 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String|null>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__visit_impl - return - end - unreachable - ) - (func $~lib/array/Array#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#constructor - ) - (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#fill - ) - (func $~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#includes - ) - (func $~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - ) - (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=12 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#lastIndexOf - ) - (func $~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#copyWithin - ) - (func $~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#slice - ) - (func $~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#splice - ) - (func $~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 7136 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#join - ) - (func $~lib/array/Array#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#constructor - ) - (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#fill - ) - (func $~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#includes - ) - (func $~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - ) - (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=12 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#lastIndexOf - ) - (func $~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#copyWithin - ) - (func $~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#slice - ) - (func $~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#splice - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - local.get $1 - i32.const 255 - i32.and - i32.gt_u - local.get $0 - i32.const 255 - i32.and - local.get $1 - i32.const 255 - i32.and - i32.lt_u - i32.sub - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 1 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.const 4 - i32.le_u - else - i32.const 0 - end - drop - i32.const 12384 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 7136 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#join - ) - (func $~lib/array/Array<~lib/string/String>#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#constructor - ) - (func $~lib/array/Array<~lib/string/String>#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array<~lib/string/String>#fill - ) - (func $~lib/array/Array<~lib/string/String>#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#includes - ) - (func $~lib/array/Array<~lib/string/String>#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#indexOf - ) - (func $~lib/array/Array<~lib/string/String>#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=12 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#lastIndexOf - ) - (func $~lib/array/Array<~lib/string/String>#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array<~lib/string/String>#copyWithin - ) - (func $~lib/array/Array<~lib/string/String>#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#slice - ) - (func $~lib/array/Array<~lib/string/String>#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#splice - ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|1 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - call $~lib/string/String#get:length - local.set $4 - local.get $3 - i32.eqz - if (result i32) - local.get $4 - i32.eqz - else - i32.const 0 - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $3 - i32.eqz - if - i32.const -1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $4 - i32.eqz - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - local.tee $2 - local.get $4 - local.tee $5 - local.get $2 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/array/Array<~lib/string/String>#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.1 (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 12416 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.1 - end - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#sort - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array<~lib/string/String>#join@varargs (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 7136 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#join - ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) -) diff --git a/tests/compiler/std/arraybuffer.debug.wat b/tests/compiler/std/arraybuffer.debug.wat new file mode 100644 index 0000000000..62e83133db --- /dev/null +++ b/tests/compiler/std/arraybuffer.debug.wat @@ -0,0 +1,3978 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 688)) + (global $~lib/memory/__data_end i32 (i32.const 760)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33528)) + (global $~lib/memory/__heap_base i32 (i32.const 33528)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $3 (i32.const 188) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $12 (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 688) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 336 + i32.const 400 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 208 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 144 + i32.const 480 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 144 + i32.const 208 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + return + ) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array|null> (param $value i32) (result i32) + i32.const 1 + drop + local.get $value + i32.const 0 + i32.eq + if + i32.const 0 + return + end + i32.const 0 + 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 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + return + ) + (func $~lib/arraybuffer/ArrayBuffer.isView (param $value i32) (result i32) + i32.const 0 + 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 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + return + ) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array|null> (param $value i32) (result i32) + i32.const 1 + drop + local.get $value + i32.const 0 + i32.eq + if + i32.const 0 + return + end + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + return + ) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array|null> (param $value i32) (result i32) + i32.const 1 + drop + local.get $value + i32.const 0 + i32.eq + if + i32.const 0 + return + end + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + return + ) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView|null> (param $value i32) (result i32) + i32.const 1 + drop + local.get $value + i32.const 0 + i32.eq + if + i32.const 0 + return + end + i32.const 0 + 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 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/arraybuffer/ArrayBufferView#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> (param $value i32) (result i32) + i32.const 0 + 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 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + return + ) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> (param $value i32) (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + return + ) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> (param $value i32) (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + return + ) + (func $~lib/dataview/DataView#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/dataview/DataView#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/dataview/DataView#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> (param $value i32) (result i32) + i32.const 0 + 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 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + return + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 336 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 144 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/typedarray/Int8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8ClampedArray~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/dataview/DataView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/dataview/DataView + block $~lib/typedarray/Float64Array + block $~lib/typedarray/Float32Array + block $~lib/typedarray/Uint64Array + block $~lib/typedarray/Int64Array + block $~lib/typedarray/Uint32Array + block $~lib/typedarray/Int32Array + block $~lib/typedarray/Uint16Array + block $~lib/typedarray/Int16Array + block $~lib/typedarray/Uint8ClampedArray + block $~lib/typedarray/Uint8Array + block $~lib/typedarray/Int8Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/typedarray/Int8Array $~lib/typedarray/Uint8Array $~lib/typedarray/Uint8ClampedArray $~lib/typedarray/Int16Array $~lib/typedarray/Uint16Array $~lib/typedarray/Int32Array $~lib/typedarray/Uint32Array $~lib/typedarray/Int64Array $~lib/typedarray/Uint64Array $~lib/typedarray/Float32Array $~lib/typedarray/Float64Array $~lib/dataview/DataView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/dataview/DataView~visit + return + end + unreachable + ) + (func $~start + call $start:std/arraybuffer + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33552 + i32.const 33600 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/arraybuffer/ArrayBuffer#slice (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $length 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 $outSize i32) + (local $out i32) + (local $16 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $length + local.get $begin + i32.const 0 + i32.lt_s + if (result i32) + local.get $length + local.get $begin + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $begin + local.tee $6 + local.get $length + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $begin + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $length + local.get $end + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + else + local.get $end + local.tee $10 + local.get $length + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $end + local.get $end + local.get $begin + i32.sub + local.tee $12 + i32.const 0 + local.tee $13 + local.get $12 + local.get $13 + i32.gt_s + select + local.set $outSize + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $begin + i32.add + local.get $outSize + memory.copy + local.get $out + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 + return + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) + (local $buffer i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $length + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + local.get $alignLog2 + i32.shl + local.tee $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $length + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Uint8Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int32Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/dataview/DataView#constructor (param $this i32) (param $buffer i32) (param $byteOffset i32) (param $byteLength i32) (result i32) + (local $dataStart i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + call $~lib/dataview/DataView#set:buffer + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + call $~lib/dataview/DataView#set:dataStart + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + call $~lib/dataview/DataView#set:byteLength + local.get $byteLength + i32.const 1073741820 + i32.gt_u + local.get $byteOffset + local.get $byteLength + i32.add + local.get $buffer + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.gt_u + i32.or + if + i32.const 32 + i32.const 640 + i32.const 25 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $buffer + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/dataview/DataView#set:buffer + local.get $buffer + local.get $byteOffset + i32.add + local.set $dataStart + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $dataStart + call $~lib/dataview/DataView#set:dataStart + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $byteLength + call $~lib/dataview/DataView#set:byteLength + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/dataview/DataView#constructor@varargs (param $this i32) (param $buffer i32) (param $byteOffset i32) (param $byteLength i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $byteOffset + end + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $byteLength + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $byteOffset + local.get $byteLength + call $~lib/dataview/DataView#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $start:std/arraybuffer + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const -1 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 17 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 3 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const -1 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const -3 + i32.const -1 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const -4 + i32.const 42 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 42 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 38 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array|null> + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer.isView + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $~lib/arraybuffer/ArrayBuffer.isView + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array|null> + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array|null> + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView|null> + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=12 + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 608 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/dataview/DataView#constructor@varargs + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 51 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) +) diff --git a/tests/compiler/std/arraybuffer.json b/tests/compiler/std/arraybuffer.json index 9f7878d475..b83788465e 100644 --- a/tests/compiler/std/arraybuffer.json +++ b/tests/compiler/std/arraybuffer.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + ], + "asc_rtrace": true +} diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat deleted file mode 100644 index 74e1c922e2..0000000000 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ /dev/null @@ -1,2050 +0,0 @@ -(module - (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_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result 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))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1184) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1248) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1296) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1360) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 1392) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1440 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1152 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1152 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1440 - local.set $1 - i32.const 1440 - i32.const 0 - i32.store - i32.const 3008 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1440 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1440 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1440 - i32.const 3024 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1440 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1152 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1073741808 - i32.ge_u - if - i32.const 1200 - i32.const 1152 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1152 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - call $~lib/rt/rtrace/onalloc - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 28 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1440 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1264 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1264 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $0 - local.get $1 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - i32.const 1 - i32.const 1073741808 - local.get $1 - i32.shr_u - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 18 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - local.get $1 - i32.shl - local.tee $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $3 - call $~lib/memory/memory.fill - local.get $2 - local.tee $1 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - ) - (func $start:std/arraybuffer - (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) - i32.const 8 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $0 - i32.const 8 - call $~lib/memory/memory.fill - local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 4 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 1073741808 - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.eq - if - i32.const 0 - i32.const 1312 - i32.const 9 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.const 1073741808 - call $~lib/arraybuffer/ArrayBuffer#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 13 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -1 - i32.const 1073741808 - call $~lib/arraybuffer/ArrayBuffer#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.const 3 - call $~lib/arraybuffer/ArrayBuffer#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.const -1 - call $~lib/arraybuffer/ArrayBuffer#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -3 - i32.const -1 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 29 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.const 42 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 42 - i32.const 1073741808 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - i32.const 16 - i32.sub - i32.load offset=12 - if - i32.const 0 - i32.const 1312 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 38 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/rt/pure/__release - i32.const 0 - if - i32.const 0 - i32.const 1312 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/rt/pure/__release - i32.const 0 - if - i32.const 0 - i32.const 1312 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/rt/pure/__release - i32.const 0 - if - i32.const 0 - i32.const 1312 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $5 - i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.set $0 - i32.const 8 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $1 - i32.const 1376 - i32.const 8 - call $~lib/memory/memory.copy - local.get $0 - local.get $1 - call $~lib/rt/pure/__retain - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 8 - i32.store offset=8 - local.get $0 - i32.const 2 - i32.store offset=12 - local.get $0 - call $~lib/rt/pure/__retain - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $7 - local.get $5 - i32.load - local.tee $1 - i32.const 16 - i32.sub - i32.load offset=12 - local.tee $0 - local.set $8 - i32.const 12 - i32.const 15 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1073741808 - i32.gt_u - local.get $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.gt_u - i32.or - if - i32.const 1040 - i32.const 1408 - i32.const 25 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $1 - local.get $0 - local.get $3 - i32.load - local.tee $9 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $3 - local.get $1 - i32.store - local.get $3 - local.get $0 - i32.store offset=4 - local.get $3 - local.get $8 - i32.store offset=8 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~start - call $start:std/arraybuffer - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1264 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$5 - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$5 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=16 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1264 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1264 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 1440 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) -) diff --git a/tests/compiler/std/arraybuffer.release.wat b/tests/compiler/std/arraybuffer.release.wat new file mode 100644 index 0000000000..334f1c302e --- /dev/null +++ b/tests/compiler/std/arraybuffer.release.wat @@ -0,0 +1,2476 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34552)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $1 (i32.const 1084) "<") + (data $1.1 (i32.const 1096) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $2 (i32.const 1148) "<") + (data $2.1 (i32.const 1160) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $3 (i32.const 1212) "<") + (data $3.1 (i32.const 1224) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $6 (i32.const 1340) "<") + (data $6.1 (i32.const 1352) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $7 (i32.const 1404) ",") + (data $7.1 (i32.const 1416) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $9 (i32.const 1484) "<") + (data $9.1 (i32.const 1496) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 1548) "<") + (data $10.1 (i32.const 1560) "\02\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $11 (i32.const 1612) "\1c") + (data $11.1 (i32.const 1624) "\01\00\00\00\08\00\00\00\01\00\00\00\02") + (data $12 (i32.const 1644) "<") + (data $12.1 (i32.const 1656) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data $13 (i32.const 1712) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$185 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34552 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$185 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1712 + i32.load + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1716 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34560 + i32.const 0 + i32.store + i32.const 36128 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34560 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34560 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34560 + i32.const 36132 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34560 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34552 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34552 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34552 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1504 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1168 + i32.const 1232 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1168 + i32.const 1504 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1504 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $~lib/array/Array $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1784 + i32.lt_s + if + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + call $start:std/arraybuffer + ) + (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1784 + i32.lt_s + if + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1784 + i32.lt_s + if + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 1073741820 + local.get $1 + i32.shr_u + i32.eqz + if + i32.const 1056 + i32.const 1104 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + local.get $1 + i32.shl + local.tee $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $start:std/arraybuffer + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1784 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 34552 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1284 + i32.const 1280 + i32.store + i32.const 1288 + i32.const 1280 + i32.store + i32.const 1280 + global.set $~lib/rt/itcms/pinSpace + i32.const 1316 + i32.const 1312 + i32.store + i32.const 1320 + i32.const 1312 + i32.store + i32.const 1312 + global.set $~lib/rt/itcms/toSpace + i32.const 1460 + i32.const 1456 + i32.store + i32.const 1464 + i32.const 1456 + i32.store + i32.const 1456 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1784 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.eq + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const -1 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 17 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.const 3 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.const -1 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const -3 + i32.const -1 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const -4 + i32.const 42 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 42 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 38 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1784 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1784 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 1632 + i64.load align=1 + i64.store align=1 + local.get $2 + i32.store + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1784 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $0 + i32.store offset=16 + block $__inlined_func$~lib/dataview/DataView#constructor@varargs (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 1784 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1784 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.get $1 + i32.lt_u + local.get $1 + i32.const 1073741820 + i32.gt_u + i32.or + if + i32.const 1056 + i32.const 1664 + i32.const 25 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + br $__inlined_func$~lib/dataview/DataView#constructor@varargs + end + br $folding-inner1 + end + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 34552 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/std/arraybuffer.ts b/tests/compiler/std/arraybuffer.ts index 64722a3503..5ed1691742 100644 --- a/tests/compiler/std/arraybuffer.ts +++ b/tests/compiler/std/arraybuffer.ts @@ -6,7 +6,7 @@ let sliced = buffer.slice(); assert(sliced.byteLength == 8); - assert(sliced !== buffer); + assert(sliced != buffer); sliced = buffer.slice(1); @@ -50,3 +50,6 @@ assert(ArrayBuffer.isView(new Int32Array(1))); assert(ArrayBuffer.isView(new DataView(arr8.buffer))); } + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat deleted file mode 100644 index 36a60407d6..0000000000 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ /dev/null @@ -1,4247 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 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_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 176) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 240) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 288) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 352) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 384) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 432)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 192 - i32.const 144 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.const 1073741808 - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 49 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $2 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/arraybuffer/ArrayBuffer#slice (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.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $2 - local.get $2 - local.get $1 - i32.sub - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $0 - local.get $1 - i32.add - local.get $6 - call $~lib/memory/memory.copy - local.get $7 - call $~lib/rt/pure/__retain - ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array|null> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 1 - drop - local.get $0 - i32.const 0 - i32.eq - if - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - return - end - i32.const 0 - 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 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/arraybuffer/ArrayBuffer.isView (param $0 i32) (result i32) - i32.const 0 - 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 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array|null> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 1 - drop - local.get $0 - i32.const 0 - i32.eq - if - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - return - end - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - return - ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array|null> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 1 - drop - local.get $0 - i32.const 0 - i32.eq - if - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - return - end - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - return - ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView|null> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 1 - drop - local.get $0 - i32.const 0 - i32.eq - if - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - return - end - i32.const 0 - 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 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - return - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 18 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.shl - local.tee $1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - ) - (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end - local.get $3 - ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 16 - local.get $2 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.set $5 - local.get $5 - i32.const 0 - local.get $3 - call $~lib/rt/__allocBuffer - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 0 - 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 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - return - ) - (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - return - ) - (func $~lib/dataview/DataView#constructor (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.get $0 - i32.eqz - if - i32.const 12 - i32.const 15 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - i32.const 1073741808 - i32.gt_u - local.get $2 - local.get $3 - i32.add - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.gt_u - i32.or - if - i32.const 32 - i32.const 400 - i32.const 25 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $1 - local.get $2 - i32.add - local.set $7 - local.get $0 - local.get $7 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $~lib/dataview/DataView#constructor@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/dataview/DataView#constructor - ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 0 - 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 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - return - ) - (func $start:std/arraybuffer - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - i32.const 8 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $0 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 4 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1073741808 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 9 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 1073741808 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 7 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 13 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -1 - i32.const 1073741808 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 3 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -1 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -3 - i32.const -1 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 29 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -4 - i32.const 42 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 42 - i32.const 1073741808 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 38 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array|null> - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 40 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer.isView - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/arraybuffer/ArrayBuffer.isView - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array|null> - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array|null> - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView|null> - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#constructor - local.set $2 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 368 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 - call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 50 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $2 - i32.load - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/dataview/DataView#constructor@varargs - local.tee $5 - call $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 51 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~start - call $start:std/arraybuffer - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/std/console.debug.wat b/tests/compiler/std/console.debug.wat new file mode 100644 index 0000000000..2bd7371986 --- /dev/null +++ b/tests/compiler/std/console.debug.wat @@ -0,0 +1,295 @@ +(module + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32 i32 i32))) + (import "env" "console.assert" (func $~lib/bindings/dom/console.assert (param i32 i32))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "console.debug" (func $~lib/bindings/dom/console.debug (param i32))) + (import "env" "console.info" (func $~lib/bindings/dom/console.info (param i32))) + (import "env" "console.warn" (func $~lib/bindings/dom/console.warn (param i32))) + (import "env" "console.error" (func $~lib/bindings/dom/console.error (param i32))) + (import "env" "console.time" (func $~lib/bindings/dom/console.time (param i32))) + (import "env" "console.timeLog" (func $~lib/bindings/dom/console.timeLog (param i32))) + (import "env" "console.timeEnd" (func $~lib/bindings/dom/console.timeEnd (param i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__data_end i32 (i32.const 588)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33356)) + (global $~lib/memory/__heap_base i32 (i32.const 33356)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00w\00h\00o\00o\00p\00s\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00p\00h\00e\00w\00\00\00\00\00") + (data $2 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00h\00e\00l\00l\00o\00 \00l\00o\00g\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00d\00e\00b\00u\00g\00\00\00\00\00\00\00") + (data $4 (i32.const 172) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00i\00n\00f\00o\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 220) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00w\00a\00r\00n\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00e\00r\00r\00o\00r\00\00\00\00\00\00\00") + (data $7 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00s\00o\00m\00e\00L\00a\00b\00e\00l\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00w\00r\00o\00n\00g\00L\00a\00b\00e\00l\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00L\00a\00b\00e\00l\00") + (data $10 (i32.const 460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\002\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\002\003\00\00\00\00\00\00\00") + (data $13 (i32.const 556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\002\003\004\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:std/console + i32.const 0 + i32.const 32 + call $~lib/console/console.assert + i32.const 1 + i32.const 64 + call $~lib/console/console.assert + i32.const 96 + call $~lib/console/console.log + i32.const 144 + call $~lib/console/console.debug + i32.const 192 + call $~lib/console/console.info + i32.const 240 + call $~lib/console/console.warn + i32.const 288 + call $~lib/console/console.error + i32.const 336 + call $~lib/console/console.time + i32.const 336 + call $~lib/console/console.timeLog + i32.const 336 + call $~lib/console/console.timeEnd + i32.const 384 + call $~lib/console/console.timeLog + i32.const 384 + call $~lib/console/console.timeEnd + i32.const 432 + call $~lib/console/console.time + i32.const 432 + call $~lib/console/console.time + i32.const 480 + call $~lib/console/console.log + i32.const 512 + call $~lib/console/console.log + i32.const 544 + call $~lib/console/console.log + i32.const 576 + call $~lib/console/console.log + ) + (func $~start + call $start:std/console + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33376 + i32.const 33424 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/console/console.assert (param $condition i32) (param $message i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $condition + i32.eqz + i32.eqz + local.get $message + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/bindings/dom/console.assert + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.log (param $message i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $message + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/bindings/dom/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.debug (param $message i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $message + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/bindings/dom/console.debug + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.info (param $message i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $message + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/bindings/dom/console.info + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.warn (param $message i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $message + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/bindings/dom/console.warn + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.error (param $message i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $message + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/bindings/dom/console.error + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.time (param $label i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $label + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/bindings/dom/console.time + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.timeLog (param $label i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $label + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/bindings/dom/console.timeLog + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.timeEnd (param $label i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $label + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/bindings/dom/console.timeEnd + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/std/console.json b/tests/compiler/std/console.json new file mode 100644 index 0000000000..23ec5535fe --- /dev/null +++ b/tests/compiler/std/console.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + ], + "skipInstantiate": true +} diff --git a/tests/compiler/std/console.release.wat b/tests/compiler/std/console.release.wat new file mode 100644 index 0000000000..a45eaf7c52 --- /dev/null +++ b/tests/compiler/std/console.release.wat @@ -0,0 +1,317 @@ +(module + (type $0 (func (param i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32 i32 i32 i32))) + (import "env" "console.assert" (func $~lib/bindings/dom/console.assert (param i32 i32))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "console.debug" (func $~lib/bindings/dom/console.debug (param i32))) + (import "env" "console.info" (func $~lib/bindings/dom/console.info (param i32))) + (import "env" "console.warn" (func $~lib/bindings/dom/console.warn (param i32))) + (import "env" "console.error" (func $~lib/bindings/dom/console.error (param i32))) + (import "env" "console.time" (func $~lib/bindings/dom/console.time (param i32))) + (import "env" "console.timeLog" (func $~lib/bindings/dom/console.timeLog (param i32))) + (import "env" "console.timeEnd" (func $~lib/bindings/dom/console.timeEnd (param i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34380)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\0c\00\00\00w\00h\00o\00o\00p\00s") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\08\00\00\00p\00h\00e\00w") + (data $2 (i32.const 1100) ",") + (data $2.1 (i32.const 1112) "\02\00\00\00\12\00\00\00h\00e\00l\00l\00o\00 \00l\00o\00g") + (data $3 (i32.const 1148) ",") + (data $3.1 (i32.const 1160) "\02\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00d\00e\00b\00u\00g") + (data $4 (i32.const 1196) ",") + (data $4.1 (i32.const 1208) "\02\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00i\00n\00f\00o") + (data $5 (i32.const 1244) ",") + (data $5.1 (i32.const 1256) "\02\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00w\00a\00r\00n") + (data $6 (i32.const 1292) ",") + (data $6.1 (i32.const 1304) "\02\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00e\00r\00r\00o\00r") + (data $7 (i32.const 1340) ",") + (data $7.1 (i32.const 1352) "\02\00\00\00\12\00\00\00s\00o\00m\00e\00L\00a\00b\00e\00l") + (data $8 (i32.const 1388) ",") + (data $8.1 (i32.const 1400) "\02\00\00\00\14\00\00\00w\00r\00o\00n\00g\00L\00a\00b\00e\00l") + (data $9 (i32.const 1436) ",") + (data $9.1 (i32.const 1448) "\02\00\00\00\1c\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00L\00a\00b\00e\00l") + (data $10 (i32.const 1484) "\1c") + (data $10.1 (i32.const 1496) "\02\00\00\00\02\00\00\001") + (data $11 (i32.const 1516) "\1c") + (data $11.1 (i32.const 1528) "\02\00\00\00\04\00\00\001\002") + (data $12 (i32.const 1548) "\1c") + (data $12.1 (i32.const 1560) "\02\00\00\00\06\00\00\001\002\003") + (data $13 (i32.const 1580) "\1c") + (data $13.1 (i32.const 1592) "\02\00\00\00\08\00\00\001\002\003\004") + (export "memory" (memory $0)) + (start $~start) + (func $~start + i32.const 0 + i32.const 1056 + call $~lib/console/console.assert + i32.const 1 + i32.const 1088 + call $~lib/console/console.assert + i32.const 1120 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1168 + call $~lib/bindings/dom/console.debug + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store + i32.const 1216 + call $~lib/bindings/dom/console.info + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1264 + call $~lib/bindings/dom/console.warn + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1312 + i32.store + i32.const 1312 + call $~lib/bindings/dom/console.error + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1360 + call $~lib/console/console.time + i32.const 1360 + call $~lib/console/console.timeLog + i32.const 1360 + call $~lib/console/console.timeEnd + i32.const 1408 + call $~lib/console/console.timeLog + i32.const 1408 + call $~lib/console/console.timeEnd + i32.const 1456 + call $~lib/console/console.time + i32.const 1456 + call $~lib/console/console.time + i32.const 1504 + call $~lib/console/console.log + i32.const 1536 + call $~lib/console/console.log + i32.const 1568 + call $~lib/console/console.log + i32.const 1600 + call $~lib/console/console.log + return + end + i32.const 34400 + i32.const 34448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/console/console.assert (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + if + i32.const 34400 + i32.const 34448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $0 + i32.const 0 + i32.ne + local.get $1 + call $~lib/bindings/dom/console.assert + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.log (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + if + i32.const 34400 + i32.const 34448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/bindings/dom/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.time (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + if + i32.const 34400 + i32.const 34448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/bindings/dom/console.time + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.timeLog (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + if + i32.const 34400 + i32.const 34448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/bindings/dom/console.timeLog + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.timeEnd (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + if + i32.const 34400 + i32.const 34448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/bindings/dom/console.timeEnd + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/std/console.ts b/tests/compiler/std/console.ts new file mode 100644 index 0000000000..5fb2e20514 --- /dev/null +++ b/tests/compiler/std/console.ts @@ -0,0 +1,25 @@ +// asserts +console.assert(false, "whoops"); +console.assert(true, "phew"); + +// prefixes +console.log("hello log"); +console.debug("hello debug"); +console.info("hello info"); +console.warn("hello warn"); +console.error("hello error"); + +// timers +console.time("someLabel"); +console.timeLog("someLabel"); +console.timeEnd("someLabel"); +console.timeLog("wrongLabel"); +console.timeEnd("wrongLabel"); +console.time("duplicateLabel"); +console.time("duplicateLabel"); + +// fast writes +console.log("1"); +console.log("12"); +console.log("123"); +console.log("1234"); diff --git a/tests/compiler/std/dataview.debug.wat b/tests/compiler/std/dataview.debug.wat new file mode 100644 index 0000000000..ad44b4a321 --- /dev/null +++ b/tests/compiler/std/dataview.debug.wat @@ -0,0 +1,6590 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32 i32))) + (type $4 (func)) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i32) (result i32))) + (type $8 (func (param i32 i32 i32 i32) (result i32))) + (type $9 (func (param i32 i32 i32) (result i64))) + (type $10 (func (param i32 i32 i64 i32))) + (type $11 (func (param i32 i32 i64) (result i32))) + (type $12 (func (result i32))) + (type $13 (func (param i64) (result i64))) + (type $14 (func (param i32 i32 i32) (result f32))) + (type $15 (func (param i32 i32 i32) (result f64))) + (type $16 (func (param i32 i32 f32 i32))) + (type $17 (func (param i32 i32 f64 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 720)) + (global $~lib/memory/__data_end i32 (i32.const 748)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33516)) + (global $~lib/memory/__heap_base i32 (i32.const 33516)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $3 (i32.const 188) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 588) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 720) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 336 + i32.const 400 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 208 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 144 + i32.const 480 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 144 + i32.const 208 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/arraybuffer/ArrayBufferView#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + return + ) + (func $~lib/dataview/DataView#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/dataview/DataView#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/dataview/DataView#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/dataview/DataView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/dataview/DataView#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/polyfills/bswap (param $value i32) (result i32) + i32.const 1 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $value + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $value + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or + return + ) + (func $~lib/polyfills/bswap (param $value i64) (result i64) + (local $a i64) + (local $b i64) + (local $v i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $value + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $a + local.get $value + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + local.set $v + local.get $v + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $a + local.get $v + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/polyfills/bswap (param $value i32) (result i32) + i32.const 1 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $value + i32.const 8 + i32.const 15 + i32.and + i32.shl + local.get $value + i32.const 65535 + i32.and + i32.const 8 + i32.const 15 + i32.and + i32.shr_u + i32.or + return + ) + (func $~lib/dataview/DataView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 336 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 144 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/dataview/DataView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/dataview/DataView + block $~lib/typedarray/Uint8Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Uint8Array $~lib/dataview/DataView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/dataview/DataView~visit + return + end + unreachable + ) + (func $~start + call $start:std/dataview + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33536 + i32.const 33584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) + (local $buffer i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $length + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + local.get $alignLog2 + i32.shl + local.tee $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $length + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Uint8Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint8Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.ge_u + if + i32.const 336 + i32.const 544 + i32.const 178 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + local.get $value + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#constructor (param $this i32) (param $buffer i32) (param $byteOffset i32) (param $byteLength i32) (result i32) + (local $dataStart i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + call $~lib/dataview/DataView#set:buffer + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + call $~lib/dataview/DataView#set:dataStart + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + call $~lib/dataview/DataView#set:byteLength + local.get $byteLength + i32.const 1073741820 + i32.gt_u + local.get $byteOffset + local.get $byteLength + i32.add + local.get $buffer + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.gt_u + i32.or + if + i32.const 32 + i32.const 608 + i32.const 25 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $buffer + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/dataview/DataView#set:buffer + local.get $buffer + local.get $byteOffset + i32.add + local.set $dataStart + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $dataStart + call $~lib/dataview/DataView#set:dataStart + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $byteLength + call $~lib/dataview/DataView#set:byteLength + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + i32.sub + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/dataview/DataView#getFloat32 (param $this i32) (param $byteOffset i32) (param $littleEndian i32) (result f32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 4 + i32.add + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 35 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $littleEndian + if (result f32) + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + f32.load + else + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + i32.load + call $~lib/polyfills/bswap + f32.reinterpret_i32 + end + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/dataview/DataView#getFloat64 (param $this i32) (param $byteOffset i32) (param $littleEndian i32) (result f64) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 8 + i32.add + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 44 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $littleEndian + if (result f64) + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + f64.load + else + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + i64.load + call $~lib/polyfills/bswap + f64.reinterpret_i64 + end + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/dataview/DataView#getInt8 (param $this i32) (param $byteOffset i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/dataview/DataView#get:byteLength + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 51 + i32.const 50 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + i32.load8_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/dataview/DataView#getInt16 (param $this i32) (param $byteOffset i32) (param $littleEndian i32) (result i32) + (local $result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 2 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 58 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + i32.load16_s + local.set $result + local.get $littleEndian + if (result i32) + local.get $result + else + local.get $result + call $~lib/polyfills/bswap + end + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/dataview/DataView#getInt32 (param $this i32) (param $byteOffset i32) (param $littleEndian i32) (result i32) + (local $result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 4 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 66 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + i32.load + local.set $result + local.get $littleEndian + if (result i32) + local.get $result + else + local.get $result + call $~lib/polyfills/bswap + end + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/dataview/DataView#getInt64 (param $this i32) (param $byteOffset i32) (param $littleEndian i32) (result i64) + (local $result i64) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 8 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 151 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + i64.load + local.set $result + local.get $littleEndian + if (result i64) + local.get $result + else + local.get $result + call $~lib/polyfills/bswap + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/dataview/DataView#getUint8 (param $this i32) (param $byteOffset i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/dataview/DataView#get:byteLength + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 72 + i32.const 50 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + i32.load8_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/dataview/DataView#getUint16 (param $this i32) (param $byteOffset i32) (param $littleEndian i32) (result i32) + (local $result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 2 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 79 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + i32.load16_u + local.set $result + local.get $littleEndian + if (result i32) + local.get $result + else + local.get $result + call $~lib/polyfills/bswap + end + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/dataview/DataView#getUint32 (param $this i32) (param $byteOffset i32) (param $littleEndian i32) (result i32) + (local $result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 4 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 87 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + i32.load + local.set $result + local.get $littleEndian + if (result i32) + local.get $result + else + local.get $result + call $~lib/polyfills/bswap + end + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/dataview/DataView#getUint64 (param $this i32) (param $byteOffset i32) (param $littleEndian i32) (result i64) + (local $result i64) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 8 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 159 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + i64.load + local.set $result + local.get $littleEndian + if (result i64) + local.get $result + else + local.get $result + call $~lib/polyfills/bswap + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/dataview/DataView#setFloat32 (param $this i32) (param $byteOffset i32) (param $value f32) (param $littleEndian i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 4 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 95 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $littleEndian + if + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + local.get $value + f32.store + else + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + local.get $value + i32.reinterpret_f32 + call $~lib/polyfills/bswap + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setFloat64 (param $this i32) (param $byteOffset i32) (param $value f64) (param $littleEndian i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 8 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 103 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $littleEndian + if + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + local.get $value + f64.store + else + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + local.get $value + i64.reinterpret_f64 + call $~lib/polyfills/bswap + i64.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setInt8 (param $this i32) (param $byteOffset i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/dataview/DataView#get:byteLength + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 109 + i32.const 50 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + local.get $value + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setInt16 (param $this i32) (param $byteOffset i32) (param $value i32) (param $littleEndian i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 2 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 116 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + local.get $littleEndian + if (result i32) + local.get $value + else + local.get $value + call $~lib/polyfills/bswap + end + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setInt32 (param $this i32) (param $byteOffset i32) (param $value i32) (param $littleEndian i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 4 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 123 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + local.get $littleEndian + if (result i32) + local.get $value + else + local.get $value + call $~lib/polyfills/bswap + end + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setInt64 (param $this i32) (param $byteOffset i32) (param $value i64) (param $littleEndian i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 8 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 167 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + local.get $littleEndian + if (result i64) + local.get $value + else + local.get $value + call $~lib/polyfills/bswap + end + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setUint8 (param $this i32) (param $byteOffset i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/dataview/DataView#get:byteLength + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 128 + i32.const 50 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + local.get $value + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setUint16 (param $this i32) (param $byteOffset i32) (param $value i32) (param $littleEndian i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 2 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 135 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + local.get $littleEndian + if (result i32) + local.get $value + else + local.get $value + call $~lib/polyfills/bswap + end + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setUint32 (param $this i32) (param $byteOffset i32) (param $value i32) (param $littleEndian i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 4 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 142 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + local.get $littleEndian + if (result i32) + local.get $value + else + local.get $value + call $~lib/polyfills/bswap + end + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setUint64 (param $this i32) (param $byteOffset i32) (param $value i64) (param $littleEndian i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $byteOffset + i32.const 31 + i32.shr_u + local.get $byteOffset + i32.const 8 + i32.add + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:byteLength + i32.gt_s + i32.or + if + i32.const 336 + i32.const 608 + i32.const 174 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/dataview/DataView#get:dataStart + local.get $byteOffset + i32.add + local.get $littleEndian + if (result i64) + local.get $value + else + local.get $value + call $~lib/polyfills/bswap + end + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#constructor@varargs (param $this i32) (param $buffer i32) (param $byteOffset i32) (param $byteLength i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $byteOffset + end + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $byteLength + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $byteOffset + local.get $byteLength + call $~lib/dataview/DataView#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/dataview/DataView#get:byteOffset (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/dataview/DataView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/dataview/DataView#get:buffer + i32.sub + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $start:std/dataview + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 246 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 224 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 88 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 159 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.const 130 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 6 + i32.const 67 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 7 + i32.const 95 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + call $~lib/dataview/DataView#constructor + local.tee $1 + i32.store offset=12 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const -4.592586247781397e-20 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const -2.3413961970849473e-37 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const 77105877018631129268224 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 17 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const 229.51023864746094 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const 14079802746555334656 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getFloat32 + f32.const -2275140518817895515269171e9 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 0 + call $~lib/dataview/DataView#getFloat32 + f32.const -62437351080004157440 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 0 + call $~lib/dataview/DataView#getFloat32 + f32.const 1403059112509440 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/dataview/DataView#getFloat32 + f32.const -5.522466503261712e-20 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.const 0 + call $~lib/dataview/DataView#getFloat32 + f32.const -1.6843597451835358e-37 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getFloat64 + f64.const 7936550095674706383278551e126 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getFloat64 + f64.const -411777475818852546741639e241 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/dataview/DataView#getInt8 + i32.const -10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/dataview/DataView#getInt8 + i32.const -32 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/dataview/DataView#getInt8 + i32.const 88 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + call $~lib/dataview/DataView#getInt8 + i32.const -97 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4 + call $~lib/dataview/DataView#getInt8 + i32.const -126 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + call $~lib/dataview/DataView#getInt8 + i32.const 101 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 6 + call $~lib/dataview/DataView#getInt8 + i32.const 67 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 7 + call $~lib/dataview/DataView#getInt8 + i32.const 95 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const -7946 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 39 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const 22752 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const -24744 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 41 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const -32097 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const 25986 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const 17253 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 6 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const 24387 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const -2336 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const -8104 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const 22687 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const -24702 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 50 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const -32155 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 51 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const 25923 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 6 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const 17247 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 53 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const -1621565194 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 55 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const -2103486240 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const 1703059288 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const 1130726047 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const 1598252418 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getInt32 + i32.const -153069409 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 0 + call $~lib/dataview/DataView#getInt32 + i32.const -531062910 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 0 + call $~lib/dataview/DataView#getInt32 + i32.const 1486848613 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/dataview/DataView#getInt32 + i32.const -1618844349 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.const 0 + call $~lib/dataview/DataView#getInt32 + i32.const -2107292833 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getInt64 + i64.const 6864441868736323830 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getInt64 + i64.const -657428103485373601 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/dataview/DataView#getUint8 + i32.const 246 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/dataview/DataView#getUint8 + i32.const 224 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 71 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/dataview/DataView#getUint8 + i32.const 88 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + call $~lib/dataview/DataView#getUint8 + i32.const 159 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4 + call $~lib/dataview/DataView#getUint8 + i32.const 130 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + call $~lib/dataview/DataView#getUint8 + i32.const 101 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 75 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 6 + call $~lib/dataview/DataView#getUint8 + i32.const 67 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 7 + call $~lib/dataview/DataView#getUint8 + i32.const 95 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 77 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 57590 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 79 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 22752 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 40792 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 33439 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 25986 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 17253 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 6 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 24387 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 63200 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 87 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 57432 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 88 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 22687 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 40834 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 90 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 33381 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 25923 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 6 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 17247 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 93 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const -1621565194 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const -2103486240 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const 1703059288 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const 1130726047 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const 1598252418 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 99 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getUint32 + i32.const -153069409 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 101 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 0 + call $~lib/dataview/DataView#getUint32 + i32.const -531062910 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 102 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 0 + call $~lib/dataview/DataView#getUint32 + i32.const 1486848613 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/dataview/DataView#getUint32 + i32.const -1618844349 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4 + i32.const 0 + call $~lib/dataview/DataView#getUint32 + i32.const -2107292833 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getUint64 + i64.const 6864441868736323830 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 107 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getUint64 + i64.const -657428103485373601 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f32.const 1.5976661625240943e-18 + i32.const 1 + call $~lib/dataview/DataView#setFloat32 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const 1.5976661625240943e-18 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f32.const 1976281973381696323584 + i32.const 0 + call $~lib/dataview/DataView#setFloat32 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getFloat32 + f32.const 1976281973381696323584 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f64.const -1094252199637739024055454e124 + i32.const 1 + call $~lib/dataview/DataView#setFloat64 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getFloat64 + f64.const -1094252199637739024055454e124 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f64.const 6.022586634778589e-103 + i32.const 0 + call $~lib/dataview/DataView#setFloat64 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getFloat64 + f64.const 6.022586634778589e-103 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 108 + call $~lib/dataview/DataView#setInt8 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/dataview/DataView#getInt8 + i32.const 108 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const -13360 + i32.const 1 + call $~lib/dataview/DataView#setInt16 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const -13360 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 14689 + i32.const 0 + call $~lib/dataview/DataView#setInt16 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.extend16_s + i32.const 14689 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1204680201 + i32.const 1 + call $~lib/dataview/DataView#setInt32 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const 1204680201 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 132 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 660673230 + i32.const 0 + call $~lib/dataview/DataView#setInt32 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getInt32 + i32.const 660673230 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const -3290739641816099749 + i32.const 1 + call $~lib/dataview/DataView#setInt64 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getInt64 + i64.const -3290739641816099749 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 8178932412950708047 + i32.const 0 + call $~lib/dataview/DataView#setInt64 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getInt64 + i64.const 8178932412950708047 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 141 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 238 + call $~lib/dataview/DataView#setUint8 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/dataview/DataView#getUint8 + i32.const 238 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 144 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 58856 + i32.const 1 + call $~lib/dataview/DataView#setUint16 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 58856 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 60400 + i32.const 0 + call $~lib/dataview/DataView#setUint16 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 60400 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const -846805744 + i32.const 1 + call $~lib/dataview/DataView#setUint32 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const -846805744 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 153 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const -1510791631 + i32.const 0 + call $~lib/dataview/DataView#setUint32 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getUint32 + i32.const -1510791631 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 156 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 2334704782995986958 + i32.const 1 + call $~lib/dataview/DataView#setUint64 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getUint64 + i64.const 2334704782995986958 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 159 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const -7123186897289856329 + i32.const 0 + call $~lib/dataview/DataView#setUint64 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getUint64 + i64.const -7123186897289856329 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 162 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/dataview/DataView#constructor@varargs + local.tee $1 + i32.store offset=12 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/dataview/DataView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 165 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/dataview/DataView#get:byteLength + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/std/dataview.json b/tests/compiler/std/dataview.json index 9f7878d475..b83788465e 100644 --- a/tests/compiler/std/dataview.json +++ b/tests/compiler/std/dataview.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + ], + "asc_rtrace": true +} diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat deleted file mode 100644 index f710a3aca4..0000000000 --- a/tests/compiler/std/dataview.optimized.wat +++ /dev/null @@ -1,3523 +0,0 @@ -(module - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param 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 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_f32_i32_=>_none (func (param i32 f32 i32))) - (type $i32_f64_i32_=>_none (func (param i32 f64 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1184) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1248) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1296) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1360) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1424) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (data (i32.const 1472) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1520 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1152 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1152 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1520 - local.set $1 - i32.const 1520 - i32.const 0 - i32.store - i32.const 3088 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1520 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1520 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1520 - i32.const 3104 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1520 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1152 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1073741808 - i32.ge_u - if - i32.const 1200 - i32.const 1152 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1152 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - call $~lib/rt/rtrace/onalloc - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1520 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1264 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1264 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - i32.const 8 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $1 - i32.const 0 - i32.store8 - local.get $1 - local.tee $2 - i32.const 4 - i32.add - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=6 - local.get $2 - i32.const 0 - i32.store8 offset=5 - local.get $2 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 offset=4 - local.get $2 - local.get $0 - i32.load - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 8 - i32.store offset=8 - local.get $0 - ) - (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1312 - i32.const 1376 - i32.const 163 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/dataview/DataView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $4 - i32.const 0 - i32.store - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 1073741808 - i32.gt_u - local.get $1 - local.get $2 - i32.add - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.gt_u - i32.or - if - i32.const 1040 - i32.const 1440 - i32.const 25 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $0 - local.get $4 - i32.load - local.tee $5 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $4 - local.get $3 - i32.store - local.get $4 - local.get $0 - local.get $1 - i32.add - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - local.get $0 - i32.const -16711936 - i32.and - i32.const 8 - i32.rotl - local.get $0 - i32.const 16711935 - i32.and - i32.const 8 - i32.rotr - i32.or - ) - (func $~lib/dataview/DataView#getFloat32 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 1312 - i32.const 1440 - i32.const 35 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - if (result f32) - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - f32.load - else - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load - call $~lib/polyfills/bswap - f32.reinterpret_i32 - end - ) - (func $~lib/polyfills/bswap (param $0 i64) (result i64) - local.get $0 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.get $0 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.tee $0 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $0 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - ) - (func $~lib/dataview/DataView#getFloat64 (param $0 i32) (param $1 i32) (result f64) - i32.const 8 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1312 - i32.const 1440 - i32.const 44 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - if (result f64) - local.get $0 - i32.load offset=4 - f64.load - else - local.get $0 - i32.load offset=4 - i64.load - call $~lib/polyfills/bswap - f64.reinterpret_i64 - end - ) - (func $~lib/dataview/DataView#getInt8 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1312 - i32.const 1440 - i32.const 51 - i32.const 50 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_s - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.shl - i32.const 24 - i32.shr_s - i32.const 255 - i32.and - local.get $0 - i32.const 8 - i32.shl - i32.or - ) - (func $~lib/dataview/DataView#getInt16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 1312 - i32.const 1440 - i32.const 58 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load16_s - local.set $0 - local.get $2 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/polyfills/bswap - end - ) - (func $~lib/dataview/DataView#getInt32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 1312 - i32.const 1440 - i32.const 66 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load - local.set $0 - local.get $2 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/polyfills/bswap - end - ) - (func $~lib/dataview/DataView#getInt64 (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - i32.const 8 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1312 - i32.const 1440 - i32.const 151 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i64.load - local.set $2 - local.get $1 - if (result i64) - local.get $2 - else - local.get $2 - call $~lib/polyfills/bswap - end - ) - (func $~lib/dataview/DataView#getUint8 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1312 - i32.const 1440 - i32.const 72 - i32.const 50 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - local.get $0 - i32.const 8 - i32.shl - local.get $0 - i32.const 65535 - i32.and - i32.const 8 - i32.shr_u - i32.or - ) - (func $~lib/dataview/DataView#getUint16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 1312 - i32.const 1440 - i32.const 79 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load16_u - local.set $0 - local.get $2 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/polyfills/bswap - end - ) - (func $~lib/dataview/DataView#getUint32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 1312 - i32.const 1440 - i32.const 87 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load - local.set $0 - local.get $2 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/polyfills/bswap - end - ) - (func $~lib/dataview/DataView#getUint64 (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - i32.const 8 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1312 - i32.const 1440 - i32.const 159 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i64.load - local.set $2 - local.get $1 - if (result i64) - local.get $2 - else - local.get $2 - call $~lib/polyfills/bswap - end - ) - (func $~lib/dataview/DataView#setFloat32 (param $0 i32) (param $1 f32) (param $2 i32) - i32.const 4 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1312 - i32.const 1440 - i32.const 95 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - if - local.get $0 - i32.load offset=4 - local.get $1 - f32.store - else - local.get $0 - i32.load offset=4 - local.get $1 - i32.reinterpret_f32 - call $~lib/polyfills/bswap - i32.store - end - ) - (func $~lib/dataview/DataView#setFloat64 (param $0 i32) (param $1 f64) (param $2 i32) - i32.const 8 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1312 - i32.const 1440 - i32.const 103 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - if - local.get $0 - i32.load offset=4 - local.get $1 - f64.store - else - local.get $0 - i32.load offset=4 - local.get $1 - i64.reinterpret_f64 - call $~lib/polyfills/bswap - i64.store - end - ) - (func $~lib/dataview/DataView#setInt16 (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 2 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1312 - i32.const 1440 - i32.const 116 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $2 - if (result i32) - local.get $1 - else - local.get $1 - call $~lib/polyfills/bswap - end - i32.store16 - ) - (func $~lib/dataview/DataView#setInt32 (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 4 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1312 - i32.const 1440 - i32.const 123 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $2 - if (result i32) - local.get $1 - else - local.get $1 - call $~lib/polyfills/bswap - end - i32.store - ) - (func $~lib/dataview/DataView#setInt64 (param $0 i32) (param $1 i64) (param $2 i32) - i32.const 8 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1312 - i32.const 1440 - i32.const 167 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $2 - if (result i64) - local.get $1 - else - local.get $1 - call $~lib/polyfills/bswap - end - i64.store - ) - (func $~lib/dataview/DataView#setUint16 (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 2 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1312 - i32.const 1440 - i32.const 135 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $2 - if (result i32) - local.get $1 - else - local.get $1 - call $~lib/polyfills/bswap - end - i32.store16 - ) - (func $~lib/dataview/DataView#setUint32 (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 4 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1312 - i32.const 1440 - i32.const 142 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $2 - if (result i32) - local.get $1 - else - local.get $1 - call $~lib/polyfills/bswap - end - i32.store - ) - (func $~lib/dataview/DataView#setUint64 (param $0 i32) (param $1 i64) (param $2 i32) - i32.const 8 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1312 - i32.const 1440 - i32.const 174 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $2 - if (result i64) - local.get $1 - else - local.get $1 - call $~lib/polyfills/bswap - end - i64.store - ) - (func $start:std/dataview - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.const 246 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 224 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 88 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 159 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 4 - i32.const 130 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 5 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 6 - i32.const 67 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 7 - i32.const 95 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.load - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - i32.load offset=8 - call $~lib/dataview/DataView#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const -4.592586247781397e-20 - f32.ne - if - i32.const 0 - i32.const 1488 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const -2.3413961970849473e-37 - f32.ne - if - i32.const 0 - i32.const 1488 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const 77105877018631129268224 - f32.ne - if - i32.const 0 - i32.const 1488 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const 229.51023864746094 - f32.ne - if - i32.const 0 - i32.const 1488 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const 14079802746555334656 - f32.ne - if - i32.const 0 - i32.const 1488 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const -2275140518817895515269171e9 - f32.ne - if - i32.const 0 - i32.const 1488 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const -62437351080004157440 - f32.ne - if - i32.const 0 - i32.const 1488 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const 1403059112509440 - f32.ne - if - i32.const 0 - i32.const 1488 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const -5.522466503261712e-20 - f32.ne - if - i32.const 0 - i32.const 1488 - i32.const 24 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const -1.6843597451835358e-37 - f32.ne - if - i32.const 0 - i32.const 1488 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getFloat64 - f64.const 7936550095674706383278551e126 - f64.ne - if - i32.const 0 - i32.const 1488 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getFloat64 - f64.const -411777475818852546741639e241 - f64.ne - if - i32.const 0 - i32.const 1488 - i32.const 28 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getInt8 - i32.const -10 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 30 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getInt8 - i32.const -32 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 31 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/dataview/DataView#getInt8 - i32.const 88 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/dataview/DataView#getInt8 - i32.const -97 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - call $~lib/dataview/DataView#getInt8 - i32.const -126 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - call $~lib/dataview/DataView#getInt8 - i32.const 101 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - call $~lib/dataview/DataView#getInt8 - i32.const 67 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 7 - call $~lib/dataview/DataView#getInt8 - i32.const 95 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 57590 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 22752 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 40 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 40792 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 41 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 33439 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 25986 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 17253 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 24387 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 63200 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 57432 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 22687 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 40834 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 50 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 33381 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 51 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 25923 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 52 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 17247 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 53 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const -1621565194 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 55 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const -2103486240 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const 1703059288 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 57 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const 1130726047 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const 1598252418 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const -153069409 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const -531062910 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const 1486848613 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const -1618844349 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const -2107292833 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getInt64 - i64.const 6864441868736323830 - i64.ne - if - i32.const 0 - i32.const 1488 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getInt64 - i64.const -657428103485373601 - i64.ne - if - i32.const 0 - i32.const 1488 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getUint8 - i32.const 246 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 70 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getUint8 - i32.const 224 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 71 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/dataview/DataView#getUint8 - i32.const 88 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/dataview/DataView#getUint8 - i32.const 159 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - call $~lib/dataview/DataView#getUint8 - i32.const 130 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 74 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - call $~lib/dataview/DataView#getUint8 - i32.const 101 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 75 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - call $~lib/dataview/DataView#getUint8 - i32.const 67 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 76 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 7 - call $~lib/dataview/DataView#getUint8 - i32.const 95 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 77 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 57590 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 79 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 22752 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 40792 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 81 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 33439 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 25986 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 17253 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 24387 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 63200 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 87 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 57432 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 88 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 22687 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 89 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 40834 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 90 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 33381 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 91 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 25923 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 92 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 17247 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 93 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const -1621565194 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const -2103486240 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const 1703059288 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const 1130726047 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const 1598252418 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 99 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -153069409 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 101 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -531062910 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 102 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const 1486848613 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -1618844349 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -2107292833 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getUint64 - i64.const 6864441868736323830 - i64.ne - if - i32.const 0 - i32.const 1488 - i32.const 107 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getUint64 - i64.const -657428103485373601 - i64.ne - if - i32.const 0 - i32.const 1488 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1.5976661625240943e-18 - i32.const 1 - call $~lib/dataview/DataView#setFloat32 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const 1.5976661625240943e-18 - f32.ne - if - i32.const 0 - i32.const 1488 - i32.const 111 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1976281973381696323584 - i32.const 0 - call $~lib/dataview/DataView#setFloat32 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const 1976281973381696323584 - f32.ne - if - i32.const 0 - i32.const 1488 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const -1094252199637739024055454e124 - i32.const 1 - call $~lib/dataview/DataView#setFloat64 - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getFloat64 - f64.const -1094252199637739024055454e124 - f64.ne - if - i32.const 0 - i32.const 1488 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 6.022586634778589e-103 - i32.const 0 - call $~lib/dataview/DataView#setFloat64 - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getFloat64 - f64.const 6.022586634778589e-103 - f64.ne - if - i32.const 0 - i32.const 1488 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1312 - i32.const 1440 - i32.const 109 - i32.const 50 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 108 - i32.store8 - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getInt8 - i32.const 108 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -13360 - i32.const 1 - call $~lib/dataview/DataView#setInt16 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 52176 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 14689 - i32.const 0 - call $~lib/dataview/DataView#setInt16 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 14689 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 129 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1204680201 - i32.const 1 - call $~lib/dataview/DataView#setInt32 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const 1204680201 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 132 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 660673230 - i32.const 0 - call $~lib/dataview/DataView#setInt32 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const 660673230 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const -3290739641816099749 - i32.const 1 - call $~lib/dataview/DataView#setInt64 - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getInt64 - i64.const -3290739641816099749 - i64.ne - if - i32.const 0 - i32.const 1488 - i32.const 138 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 8178932412950708047 - i32.const 0 - call $~lib/dataview/DataView#setInt64 - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getInt64 - i64.const 8178932412950708047 - i64.ne - if - i32.const 0 - i32.const 1488 - i32.const 141 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1312 - i32.const 1440 - i32.const 128 - i32.const 50 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 238 - i32.store8 - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getUint8 - i32.const 238 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 144 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 58856 - i32.const 1 - call $~lib/dataview/DataView#setUint16 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 58856 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 147 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 60400 - i32.const 0 - call $~lib/dataview/DataView#setUint16 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 60400 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 150 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -846805744 - i32.const 1 - call $~lib/dataview/DataView#setUint32 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const -846805744 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 153 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -1510791631 - i32.const 0 - call $~lib/dataview/DataView#setUint32 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -1510791631 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 156 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 2334704782995986958 - i32.const 1 - call $~lib/dataview/DataView#setUint64 - local.get $0 - i32.const 1 - call $~lib/dataview/DataView#getUint64 - i64.const 2334704782995986958 - i64.ne - if - i32.const 0 - i32.const 1488 - i32.const 159 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const -7123186897289856329 - i32.const 0 - call $~lib/dataview/DataView#setUint64 - local.get $0 - i32.const 0 - call $~lib/dataview/DataView#getUint64 - i64.const -7123186897289856329 - i64.ne - if - i32.const 0 - i32.const 1488 - i32.const 162 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 16 - i32.sub - i32.load offset=12 - local.set $2 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/dataview/DataView#constructor - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1488 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=8 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~start - call $start:std/dataview - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1264 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1520 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1264 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1264 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/std/dataview.release.wat b/tests/compiler/std/dataview.release.wat new file mode 100644 index 0000000000..7a0b6705e9 --- /dev/null +++ b/tests/compiler/std/dataview.release.wat @@ -0,0 +1,5283 @@ +(module + (type $0 (func (param i32 i32 i32))) + (type $1 (func (param i32 i32 i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (param i32 i32))) + (type $6 (func (param i32 i32) (result i64))) + (type $7 (func (param i32 i64 i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i64))) + (type $10 (func (result i32))) + (type $11 (func (param i32) (result i32))) + (type $12 (func (param i32 i32 i32) (result f32))) + (type $13 (func (param i32 i32) (result f64))) + (type $14 (func (param i32 f32 i32))) + (type $15 (func (param i32 f64 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34540)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $1 (i32.const 1084) "<") + (data $1.1 (i32.const 1096) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $2 (i32.const 1148) "<") + (data $2.1 (i32.const 1160) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $3 (i32.const 1212) "<") + (data $3.1 (i32.const 1224) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $6 (i32.const 1340) "<") + (data $6.1 (i32.const 1352) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $7 (i32.const 1404) ",") + (data $7.1 (i32.const 1416) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $9 (i32.const 1484) "<") + (data $9.1 (i32.const 1496) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 1548) "<") + (data $10.1 (i32.const 1560) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data $11 (i32.const 1612) "<") + (data $11.1 (i32.const 1624) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data $12 (i32.const 1676) "<") + (data $12.1 (i32.const 1688) "\02\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data $13 (i32.const 1744) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$221 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34540 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$221 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1744 + i32.load + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1748 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34544 + i32.const 0 + i32.store + i32.const 36112 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34544 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34544 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34544 + i32.const 36116 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34544 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34540 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34540 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34540 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1504 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1168 + i32.const 1232 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1168 + i32.const 1504 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1504 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + call $start:std/dataview + ) + (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1568 + i32.const 178 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.get $1 + local.get $2 + i32.add + i32.lt_u + local.get $2 + i32.const 1073741820 + i32.gt_u + i32.or + if + i32.const 1056 + i32.const 1632 + i32.const 25 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#getFloat32 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (local $3 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 31 + i32.shr_u + local.get $0 + i32.load offset=8 + local.get $1 + i32.const 4 + i32.add + i32.lt_s + i32.or + if + i32.const 1360 + i32.const 1632 + i32.const 35 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + if (result f32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + f32.load + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load + local.tee $0 + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $0 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or + f32.reinterpret_i32 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#getFloat64 (param $0 i32) (param $1 i32) (result f64) + (local $2 i64) + (local $3 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 8 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 44 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + if (result f64) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + f64.load + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i64.load + local.tee $2 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $2 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $2 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $2 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + f64.reinterpret_i64 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#getInt8 (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 51 + i32.const 50 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#getInt16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 31 + i32.shr_u + local.get $0 + i32.load offset=8 + local.get $1 + i32.const 2 + i32.add + i32.lt_s + i32.or + if + i32.const 1360 + i32.const 1632 + i32.const 58 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load16_s + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + if (result i32) + local.get $0 + else + local.get $0 + i32.const 8 + i32.shl + local.get $0 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or + end + ) + (func $~lib/dataview/DataView#getInt32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 31 + i32.shr_u + local.get $0 + i32.load offset=8 + local.get $1 + i32.const 4 + i32.add + i32.lt_s + i32.or + if + i32.const 1360 + i32.const 1632 + i32.const 66 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + if (result i32) + local.get $0 + else + local.get $0 + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $0 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or + end + ) + (func $~lib/dataview/DataView#getInt64 (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 8 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 151 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + if (result i64) + local.get $2 + else + local.get $2 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $2 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $2 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $2 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + end + ) + (func $~lib/dataview/DataView#getUint8 (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 72 + i32.const 50 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#getUint16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 31 + i32.shr_u + local.get $0 + i32.load offset=8 + local.get $1 + i32.const 2 + i32.add + i32.lt_s + i32.or + if + i32.const 1360 + i32.const 1632 + i32.const 79 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load16_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + if (result i32) + local.get $0 + else + local.get $0 + i32.const 8 + i32.shl + local.get $0 + i32.const 8 + i32.shr_u + i32.or + end + ) + (func $~lib/dataview/DataView#getUint32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 31 + i32.shr_u + local.get $0 + i32.load offset=8 + local.get $1 + i32.const 4 + i32.add + i32.lt_s + i32.or + if + i32.const 1360 + i32.const 1632 + i32.const 87 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + if (result i32) + local.get $0 + else + local.get $0 + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $0 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or + end + ) + (func $~lib/dataview/DataView#getUint64 (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 8 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 159 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + if (result i64) + local.get $2 + else + local.get $2 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $2 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $2 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $2 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + end + ) + (func $~lib/dataview/DataView#setFloat32 (param $0 i32) (param $1 f32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 4 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 95 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + f32.store + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.reinterpret_f32 + local.tee $0 + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $0 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setFloat64 (param $0 i32) (param $1 f64) (param $2 i32) + (local $3 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 8 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 103 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + f64.store + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $3 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $3 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $3 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + i64.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setInt16 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 116 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $2 + if (result i32) + local.get $1 + else + local.get $1 + i32.const 8 + i32.shl + local.get $1 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or + end + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setInt32 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 4 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 123 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $2 + if (result i32) + local.get $1 + else + local.get $1 + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $1 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or + end + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setInt64 (param $0 i32) (param $1 i64) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 8 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 167 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $2 + if (result i64) + local.get $1 + else + local.get $1 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $1 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $1 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $1 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + end + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setUint16 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 135 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $2 + if (result i32) + local.get $1 + else + local.get $1 + i32.const 8 + i32.shl + local.get $1 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or + end + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setUint32 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 4 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 142 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $2 + if (result i32) + local.get $1 + else + local.get $1 + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $1 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or + end + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#setUint64 (param $0 i32) (param $1 i64) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 8 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 174 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $2 + if (result i64) + local.get $1 + else + local.get $1 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $1 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $1 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $1 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + end + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/dataview + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + memory.size + i32.const 16 + i32.shl + i32.const 34540 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1284 + i32.const 1280 + i32.store + i32.const 1288 + i32.const 1280 + i32.store + i32.const 1280 + global.set $~lib/rt/itcms/pinSpace + i32.const 1316 + i32.const 1312 + i32.store + i32.const 1320 + i32.const 1312 + i32.store + i32.const 1312 + global.set $~lib/rt/itcms/toSpace + i32.const 1460 + i32.const 1456 + i32.store + i32.const 1464 + i32.const 1456 + i32.store + i32.const 1456 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/typedarray/Uint8Array#constructor (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + br $__inlined_func$~lib/typedarray/Uint8Array#constructor + end + br $folding-inner1 + end + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 246 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 224 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 88 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 159 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 130 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 6 + i32.const 67 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7 + i32.const 95 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $3 + local.get $1 + i32.load offset=8 + call $~lib/dataview/DataView#constructor + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const -4.592586247781397e-20 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const -2.3413961970849473e-37 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const 77105877018631129268224 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 17 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const 229.51023864746094 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const 14079802746555334656 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getFloat32 + f32.const -2275140518817895515269171e9 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 0 + call $~lib/dataview/DataView#getFloat32 + f32.const -62437351080004157440 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 0 + call $~lib/dataview/DataView#getFloat32 + f32.const 1403059112509440 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/dataview/DataView#getFloat32 + f32.const -5.522466503261712e-20 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/dataview/DataView#getFloat32 + f32.const -1.6843597451835358e-37 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getFloat64 + f64.const 7936550095674706383278551e126 + f64.ne + if + i32.const 0 + i32.const 1696 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#getFloat64 + f64.const -411777475818852546741639e241 + f64.ne + if + i32.const 0 + i32.const 1696 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#getInt8 + i32.const -10 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getInt8 + i32.const -32 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/dataview/DataView#getInt8 + i32.const 88 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/dataview/DataView#getInt8 + i32.const -97 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + call $~lib/dataview/DataView#getInt8 + i32.const -126 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + call $~lib/dataview/DataView#getInt8 + i32.const 101 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 6 + call $~lib/dataview/DataView#getInt8 + i32.const 67 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 7 + call $~lib/dataview/DataView#getInt8 + i32.const 95 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 57590 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 39 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 22752 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 40792 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 41 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 33439 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 25986 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 17253 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 6 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 24387 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 63200 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 57432 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 22687 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 40834 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 50 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 33381 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 51 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 25923 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 6 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 17247 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 53 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const -1621565194 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 55 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const -2103486240 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const 1703059288 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const 1130726047 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const 1598252418 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getInt32 + i32.const -153069409 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 0 + call $~lib/dataview/DataView#getInt32 + i32.const -531062910 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 0 + call $~lib/dataview/DataView#getInt32 + i32.const 1486848613 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/dataview/DataView#getInt32 + i32.const -1618844349 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/dataview/DataView#getInt32 + i32.const -2107292833 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getInt64 + i64.const 6864441868736323830 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#getInt64 + i64.const -657428103485373601 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#getUint8 + i32.const 246 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getUint8 + i32.const 224 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 71 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/dataview/DataView#getUint8 + i32.const 88 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/dataview/DataView#getUint8 + i32.const 159 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + call $~lib/dataview/DataView#getUint8 + i32.const 130 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + call $~lib/dataview/DataView#getUint8 + i32.const 101 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 75 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 6 + call $~lib/dataview/DataView#getUint8 + i32.const 67 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 7 + call $~lib/dataview/DataView#getUint8 + i32.const 95 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 77 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 57590 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 79 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 22752 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 40792 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 33439 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 25986 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 17253 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 6 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 24387 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 63200 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 87 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 57432 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 88 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 22687 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 40834 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 90 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 33381 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 25923 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 6 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 17247 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 93 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const -1621565194 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const -2103486240 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const 1703059288 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const 1130726047 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const 1598252418 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 99 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getUint32 + i32.const -153069409 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 101 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 0 + call $~lib/dataview/DataView#getUint32 + i32.const -531062910 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 102 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 0 + call $~lib/dataview/DataView#getUint32 + i32.const 1486848613 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/dataview/DataView#getUint32 + i32.const -1618844349 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/dataview/DataView#getUint32 + i32.const -2107292833 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getUint64 + i64.const 6864441868736323830 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 107 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#getUint64 + i64.const -657428103485373601 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 1.5976661625240943e-18 + i32.const 1 + call $~lib/dataview/DataView#setFloat32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getFloat32 + f32.const 1.5976661625240943e-18 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 1976281973381696323584 + i32.const 0 + call $~lib/dataview/DataView#setFloat32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getFloat32 + f32.const 1976281973381696323584 + f32.ne + if + i32.const 0 + i32.const 1696 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const -1094252199637739024055454e124 + i32.const 1 + call $~lib/dataview/DataView#setFloat64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getFloat64 + f64.const -1094252199637739024055454e124 + f64.ne + if + i32.const 0 + i32.const 1696 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 6.022586634778589e-103 + i32.const 0 + call $~lib/dataview/DataView#setFloat64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#getFloat64 + f64.const 6.022586634778589e-103 + f64.ne + if + i32.const 0 + i32.const 1696 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.eqz + if + i32.const 1360 + i32.const 1632 + i32.const 109 + i32.const 50 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 108 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#getInt8 + i32.const 108 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -13360 + i32.const 1 + call $~lib/dataview/DataView#setInt16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 52176 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 14689 + i32.const 0 + call $~lib/dataview/DataView#setInt16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getInt16 + i32.const 65535 + i32.and + i32.const 14689 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1204680201 + i32.const 1 + call $~lib/dataview/DataView#setInt32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getInt32 + i32.const 1204680201 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 132 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 660673230 + i32.const 0 + call $~lib/dataview/DataView#setInt32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getInt32 + i32.const 660673230 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const -3290739641816099749 + i32.const 1 + call $~lib/dataview/DataView#setInt64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getInt64 + i64.const -3290739641816099749 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 8178932412950708047 + i32.const 0 + call $~lib/dataview/DataView#setInt64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#getInt64 + i64.const 8178932412950708047 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 141 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.eqz + if + i32.const 1360 + i32.const 1632 + i32.const 128 + i32.const 50 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 238 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#getUint8 + i32.const 238 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 144 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 58856 + i32.const 1 + call $~lib/dataview/DataView#setUint16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 58856 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 60400 + i32.const 0 + call $~lib/dataview/DataView#setUint16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getUint16 + i32.const 65535 + i32.and + i32.const 60400 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -846805744 + i32.const 1 + call $~lib/dataview/DataView#setUint32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/dataview/DataView#getUint32 + i32.const -846805744 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 153 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1510791631 + i32.const 0 + call $~lib/dataview/DataView#setUint32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#getUint32 + i32.const -1510791631 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 156 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 2334704782995986958 + i32.const 1 + call $~lib/dataview/DataView#setUint64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/dataview/DataView#getUint64 + i64.const 2334704782995986958 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 159 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const -7123186897289856329 + i32.const 0 + call $~lib/dataview/DataView#setUint64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#getUint64 + i64.const -7123186897289856329 + i64.ne + if + i32.const 0 + i32.const 1696 + i32.const 162 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/dataview/DataView#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1696 + i32.const 165 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 34540 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/std/dataview.ts b/tests/compiler/std/dataview.ts index 309ab77d17..b44812abf4 100644 --- a/tests/compiler/std/dataview.ts +++ b/tests/compiler/std/dataview.ts @@ -12,156 +12,159 @@ let view = new DataView(array.buffer, array.byteOffset, array.byteLength); - assert(view.getFloat32(0, true) === -4.592586247781397e-20); - assert(view.getFloat32(1, true) === -2.3413961970849473e-37); - assert(view.getFloat32(2, true) === 7.710587701863113e+22); - assert(view.getFloat32(3, true) === 229.51023864746094); - assert(view.getFloat32(4, true) === 14079802746555335000.0); - - assert(view.getFloat32(0, false) === -2.2751405188178955e+33); - assert(view.getFloat32(1, false) === -62437351080004160000.0); - assert(view.getFloat32(2, false) === 1403059112509440.0); - assert(view.getFloat32(3, false) === -5.522466503261712e-20); - assert(view.getFloat32(4, false) === -1.6843597451835358e-37); - - assert(view.getFloat64(0, true) === 7.936550095674706e+150); - assert(view.getFloat64(0, false) === -4.1177747581885255e+264); - - assert(view.getInt8(0) === -10); - assert(view.getInt8(1) === -32); - assert(view.getInt8(2) === 88); - assert(view.getInt8(3) === -97); - assert(view.getInt8(4) === -126); - assert(view.getInt8(5) === 101); - assert(view.getInt8(6) === 67); - assert(view.getInt8(7) === 95); - - assert(view.getInt16(0, true) === -7946); - assert(view.getInt16(1, true) === 22752); - assert(view.getInt16(2, true) === -24744); - assert(view.getInt16(3, true) === -32097); - assert(view.getInt16(4, true) === 25986); - assert(view.getInt16(5, true) === 17253); - assert(view.getInt16(6, true) === 24387); - - assert(view.getInt16(0, false) === -2336); - assert(view.getInt16(1, false) === -8104); - assert(view.getInt16(2, false) === 22687); - assert(view.getInt16(3, false) === -24702); - assert(view.getInt16(4, false) === -32155); - assert(view.getInt16(5, false) === 25923); - assert(view.getInt16(6, false) === 17247); - - assert(view.getInt32(0, true) === -1621565194); - assert(view.getInt32(1, true) === -2103486240); - assert(view.getInt32(2, true) === 1703059288); - assert(view.getInt32(3, true) === 1130726047); - assert(view.getInt32(4, true) === 1598252418); - - assert(view.getInt32(0, false) === -153069409); - assert(view.getInt32(1, false) === -531062910); - assert(view.getInt32(2, false) === 1486848613); - assert(view.getInt32(3, false) === -1618844349); - assert(view.getInt32(4, false) === -2107292833); - - assert(view.getInt64(0, true) === 6864441868736323830); - assert(view.getInt64(0, false) === -657428103485373601); - - assert(view.getUint8(0) === 246); - assert(view.getUint8(1) === 224); - assert(view.getUint8(2) === 88); - assert(view.getUint8(3) === 159); - assert(view.getUint8(4) === 130); - assert(view.getUint8(5) === 101); - assert(view.getUint8(6) === 67); - assert(view.getUint8(7) === 95); - - assert(view.getUint16(0, true) === 57590); - assert(view.getUint16(1, true) === 22752); - assert(view.getUint16(2, true) === 40792); - assert(view.getUint16(3, true) === 33439); - assert(view.getUint16(4, true) === 25986); - assert(view.getUint16(5, true) === 17253); - assert(view.getUint16(6, true) === 24387); - - assert(view.getUint16(0, false) === 63200); - assert(view.getUint16(1, false) === 57432); - assert(view.getUint16(2, false) === 22687); - assert(view.getUint16(3, false) === 40834); - assert(view.getUint16(4, false) === 33381); - assert(view.getUint16(5, false) === 25923); - assert(view.getUint16(6, false) === 17247); - - assert(view.getUint32(0, true) === 2673402102); - assert(view.getUint32(1, true) === 2191481056); - assert(view.getUint32(2, true) === 1703059288); - assert(view.getUint32(3, true) === 1130726047); - assert(view.getUint32(4, true) === 1598252418); - - assert(view.getUint32(0, false) === 4141897887); - assert(view.getUint32(1, false) === 3763904386); - assert(view.getUint32(2, false) === 1486848613); - assert(view.getUint32(3, false) === 2676122947); - assert(view.getUint32(4, false) === 2187674463); - - assert(view.getUint64(0, true) === 6864441868736323830); - assert(view.getUint64(0, false) === 17789315970224178015); + assert(view.getFloat32(0, true) == -4.592586247781397e-20); + assert(view.getFloat32(1, true) == -2.3413961970849473e-37); + assert(view.getFloat32(2, true) == 7.710587701863113e+22); + assert(view.getFloat32(3, true) == 229.51023864746094); + assert(view.getFloat32(4, true) == 14079802746555335000.0); + + assert(view.getFloat32(0, false) == -2.2751405188178955e+33); + assert(view.getFloat32(1, false) == -62437351080004160000.0); + assert(view.getFloat32(2, false) == 1403059112509440.0); + assert(view.getFloat32(3, false) == -5.522466503261712e-20); + assert(view.getFloat32(4, false) == -1.6843597451835358e-37); + + assert(view.getFloat64(0, true) == 7.936550095674706e+150); + assert(view.getFloat64(0, false) == -4.1177747581885255e+264); + + assert(view.getInt8(0) == -10); + assert(view.getInt8(1) == -32); + assert(view.getInt8(2) == 88); + assert(view.getInt8(3) == -97); + assert(view.getInt8(4) == -126); + assert(view.getInt8(5) == 101); + assert(view.getInt8(6) == 67); + assert(view.getInt8(7) == 95); + + assert(view.getInt16(0, true) == -7946); + assert(view.getInt16(1, true) == 22752); + assert(view.getInt16(2, true) == -24744); + assert(view.getInt16(3, true) == -32097); + assert(view.getInt16(4, true) == 25986); + assert(view.getInt16(5, true) == 17253); + assert(view.getInt16(6, true) == 24387); + + assert(view.getInt16(0, false) == -2336); + assert(view.getInt16(1, false) == -8104); + assert(view.getInt16(2, false) == 22687); + assert(view.getInt16(3, false) == -24702); + assert(view.getInt16(4, false) == -32155); + assert(view.getInt16(5, false) == 25923); + assert(view.getInt16(6, false) == 17247); + + assert(view.getInt32(0, true) == -1621565194); + assert(view.getInt32(1, true) == -2103486240); + assert(view.getInt32(2, true) == 1703059288); + assert(view.getInt32(3, true) == 1130726047); + assert(view.getInt32(4, true) == 1598252418); + + assert(view.getInt32(0, false) == -153069409); + assert(view.getInt32(1, false) == -531062910); + assert(view.getInt32(2, false) == 1486848613); + assert(view.getInt32(3, false) == -1618844349); + assert(view.getInt32(4, false) == -2107292833); + + assert(view.getInt64(0, true) == 6864441868736323830); + assert(view.getInt64(0, false) == -657428103485373601); + + assert(view.getUint8(0) == 246); + assert(view.getUint8(1) == 224); + assert(view.getUint8(2) == 88); + assert(view.getUint8(3) == 159); + assert(view.getUint8(4) == 130); + assert(view.getUint8(5) == 101); + assert(view.getUint8(6) == 67); + assert(view.getUint8(7) == 95); + + assert(view.getUint16(0, true) == 57590); + assert(view.getUint16(1, true) == 22752); + assert(view.getUint16(2, true) == 40792); + assert(view.getUint16(3, true) == 33439); + assert(view.getUint16(4, true) == 25986); + assert(view.getUint16(5, true) == 17253); + assert(view.getUint16(6, true) == 24387); + + assert(view.getUint16(0, false) == 63200); + assert(view.getUint16(1, false) == 57432); + assert(view.getUint16(2, false) == 22687); + assert(view.getUint16(3, false) == 40834); + assert(view.getUint16(4, false) == 33381); + assert(view.getUint16(5, false) == 25923); + assert(view.getUint16(6, false) == 17247); + + assert(view.getUint32(0, true) == 2673402102); + assert(view.getUint32(1, true) == 2191481056); + assert(view.getUint32(2, true) == 1703059288); + assert(view.getUint32(3, true) == 1130726047); + assert(view.getUint32(4, true) == 1598252418); + + assert(view.getUint32(0, false) == 4141897887); + assert(view.getUint32(1, false) == 3763904386); + assert(view.getUint32(2, false) == 1486848613); + assert(view.getUint32(3, false) == 2676122947); + assert(view.getUint32(4, false) == 2187674463); + + assert(view.getUint64(0, true) == 6864441868736323830); + assert(view.getUint64(0, false) == 17789315970224178015); view.setFloat32(0, 1.5976661625240943e-18, true); - assert(view.getFloat32(0, true) === 1.5976661625240943e-18); + assert(view.getFloat32(0, true) == 1.5976661625240943e-18); view.setFloat32(0, 1.9762819733816963e+21, false); - assert(view.getFloat32(0, false) === 1.9762819733816963e+21); + assert(view.getFloat32(0, false) == 1.9762819733816963e+21); view.setFloat64(0, -1.094252199637739e+148, true); - assert(view.getFloat64(0, true) === -1.094252199637739e+148); + assert(view.getFloat64(0, true) == -1.094252199637739e+148); view.setFloat64(0, 6.022586634778589e-103, false); - assert(view.getFloat64(0, false) === 6.022586634778589e-103); + assert(view.getFloat64(0, false) == 6.022586634778589e-103); view.setInt8(0, 108); - assert(view.getInt8(0) === 108); + assert(view.getInt8(0) == 108); view.setInt16(0, -13360, true); - assert(view.getInt16(0, true) === -13360); + assert(view.getInt16(0, true) == -13360); view.setInt16(0, 14689, false); - assert(view.getInt16(0, false) === 14689); + assert(view.getInt16(0, false) == 14689); view.setInt32(0, 1204680201, true); - assert(view.getInt32(0, true) === 1204680201); + assert(view.getInt32(0, true) == 1204680201); view.setInt32(0, 660673230, false); - assert(view.getInt32(0, false) === 660673230); + assert(view.getInt32(0, false) == 660673230); view.setInt64(0, -3290739641816099749, true); - assert(view.getInt64(0, true) === -3290739641816099749); + assert(view.getInt64(0, true) == -3290739641816099749); view.setInt64(0, 8178932412950708047, false); - assert(view.getInt64(0, false) === 8178932412950708047); + assert(view.getInt64(0, false) == 8178932412950708047); view.setUint8(0, 238); - assert(view.getUint8(0) === 238); + assert(view.getUint8(0) == 238); view.setUint16(0, 58856, true); - assert(view.getUint16(0, true) === 58856); + assert(view.getUint16(0, true) == 58856); view.setUint16(0, 60400, false); - assert(view.getUint16(0, false) === 60400); + assert(view.getUint16(0, false) == 60400); view.setUint32(0, 3448161552, true); - assert(view.getUint32(0, true) === 3448161552); + assert(view.getUint32(0, true) == 3448161552); view.setUint32(0, 2784175665, false); - assert(view.getUint32(0, false) === 2784175665); + assert(view.getUint32(0, false) == 2784175665); view.setUint64(0, 2334704782995986958, true); - assert(view.getUint64(0, true) === 2334704782995986958); + assert(view.getUint64(0, true) == 2334704782995986958); view.setUint64(0, 11323557176419695287, false); - assert(view.getUint64(0, false) === 11323557176419695287); + assert(view.getUint64(0, false) == 11323557176419695287); view = new DataView(array.buffer); assert(view.byteOffset == 0); assert(view.byteLength == 8); } + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat deleted file mode 100644 index d0b78e568f..0000000000 --- a/tests/compiler/std/dataview.untouched.wat +++ /dev/null @@ -1,4711 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i64_i32_=>_none (func (param i32 i32 i64 i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_i64 (func (param i32 i32 i32) (result i64))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i32_i32_f32_i32_=>_none (func (param i32 i32 f32 i32))) - (type $i32_i32_f64_i32_=>_none (func (param i32 i32 f64 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) - (type $i32_i32_i32_=>_f64 (func (param i32 i32 i32) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 176) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 240) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 288) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 352) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 416) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") - (data (i32.const 464) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 512)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 192 - i32.const 144 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 18 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.shl - local.tee $1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - ) - (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 304 - i32.const 368 - i32.const 163 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - ) - (func $~lib/dataview/DataView#constructor (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.get $0 - i32.eqz - if - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - i32.const 1073741808 - i32.gt_u - local.get $2 - local.get $3 - i32.add - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.gt_u - i32.or - if - i32.const 32 - i32.const 432 - i32.const 25 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.tee $4 - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $1 - local.get $2 - i32.add - local.set $7 - local.get $0 - local.get $7 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $0 - i32.const -16711936 - i32.and - i32.const 8 - i32.rotl - local.get $0 - i32.const 16711935 - i32.and - i32.const 8 - i32.rotr - i32.or - return - ) - (func $~lib/dataview/DataView#getFloat32 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 35 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - if (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - f32.load - else - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load - call $~lib/polyfills/bswap - f32.reinterpret_i32 - end - ) - (func $~lib/polyfills/bswap (param $0 i64) (result i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - i32.const 1 - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $0 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.set $1 - local.get $0 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - local.set $2 - local.get $1 - local.get $2 - i64.or - local.set $3 - local.get $3 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.set $1 - local.get $3 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - local.set $2 - local.get $1 - local.get $2 - i64.or - i64.const 32 - i64.rotr - return - ) - (func $~lib/dataview/DataView#getFloat64 (param $0 i32) (param $1 i32) (param $2 i32) (result f64) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 44 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - if (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - f64.load - else - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i64.load - call $~lib/polyfills/bswap - f64.reinterpret_i64 - end - ) - (func $~lib/dataview/DataView#getInt8 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 304 - i32.const 432 - i32.const 51 - i32.const 50 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_s - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $0 - i32.const 8 - i32.shl - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 8 - i32.shr_s - i32.const 255 - i32.and - i32.or - return - ) - (func $~lib/dataview/DataView#getInt16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 58 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load16_s - local.set $3 - local.get $2 - if (result i32) - local.get $3 - else - local.get $3 - call $~lib/polyfills/bswap - end - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $0 - i32.const -16711936 - i32.and - i32.const 8 - i32.rotl - local.get $0 - i32.const 16711935 - i32.and - i32.const 8 - i32.rotr - i32.or - return - ) - (func $~lib/dataview/DataView#getInt32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 66 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load - local.set $3 - local.get $2 - if (result i32) - local.get $3 - else - local.get $3 - call $~lib/polyfills/bswap - end - ) - (func $~lib/polyfills/bswap (param $0 i64) (result i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - i32.const 1 - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $0 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.set $1 - local.get $0 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - local.set $2 - local.get $1 - local.get $2 - i64.or - local.set $3 - local.get $3 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.set $1 - local.get $3 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - local.set $2 - local.get $1 - local.get $2 - i64.or - i64.const 32 - i64.rotr - return - ) - (func $~lib/dataview/DataView#getInt64 (param $0 i32) (param $1 i32) (param $2 i32) (result i64) - (local $3 i64) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 151 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i64.load - local.set $3 - local.get $2 - if (result i64) - local.get $3 - else - local.get $3 - call $~lib/polyfills/bswap - end - ) - (func $~lib/dataview/DataView#getUint8 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 304 - i32.const 432 - i32.const 72 - i32.const 50 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_u - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $0 - i32.const 8 - i32.shl - local.get $0 - i32.const 65535 - i32.and - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.or - return - ) - (func $~lib/dataview/DataView#getUint16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 79 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load16_u - local.set $3 - local.get $2 - if (result i32) - local.get $3 - else - local.get $3 - call $~lib/polyfills/bswap - end - ) - (func $~lib/dataview/DataView#getUint32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 87 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load - local.set $3 - local.get $2 - if (result i32) - local.get $3 - else - local.get $3 - call $~lib/polyfills/bswap - end - ) - (func $~lib/dataview/DataView#getUint64 (param $0 i32) (param $1 i32) (param $2 i32) (result i64) - (local $3 i64) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 159 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i64.load - local.set $3 - local.get $2 - if (result i64) - local.get $3 - else - local.get $3 - call $~lib/polyfills/bswap - end - ) - (func $~lib/dataview/DataView#setFloat32 (param $0 i32) (param $1 i32) (param $2 f32) (param $3 i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 95 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $3 - if - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - f32.store - else - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.reinterpret_f32 - call $~lib/polyfills/bswap - i32.store - end - ) - (func $~lib/dataview/DataView#setFloat64 (param $0 i32) (param $1 i32) (param $2 f64) (param $3 i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 103 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $3 - if - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - f64.store - else - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i64.reinterpret_f64 - call $~lib/polyfills/bswap - i64.store - end - ) - (func $~lib/dataview/DataView#setInt8 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 304 - i32.const 432 - i32.const 109 - i32.const 50 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/dataview/DataView#setInt16 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 116 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $3 - if (result i32) - local.get $2 - else - local.get $2 - call $~lib/polyfills/bswap - end - i32.store16 - ) - (func $~lib/dataview/DataView#setInt32 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 123 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $3 - if (result i32) - local.get $2 - else - local.get $2 - call $~lib/polyfills/bswap - end - i32.store - ) - (func $~lib/dataview/DataView#setInt64 (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 167 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $3 - if (result i64) - local.get $2 - else - local.get $2 - call $~lib/polyfills/bswap - end - i64.store - ) - (func $~lib/dataview/DataView#setUint8 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 304 - i32.const 432 - i32.const 128 - i32.const 50 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/dataview/DataView#setUint16 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 135 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $3 - if (result i32) - local.get $2 - else - local.get $2 - call $~lib/polyfills/bswap - end - i32.store16 - ) - (func $~lib/dataview/DataView#setUint32 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 142 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $3 - if (result i32) - local.get $2 - else - local.get $2 - call $~lib/polyfills/bswap - end - i32.store - ) - (func $~lib/dataview/DataView#setUint64 (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) - local.get $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - i32.or - if - i32.const 304 - i32.const 432 - i32.const 174 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $3 - if (result i64) - local.get $2 - else - local.get $2 - call $~lib/polyfills/bswap - end - i64.store - ) - (func $~lib/dataview/DataView#constructor@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/dataview/DataView#constructor - ) - (func $~lib/dataview/DataView#get:byteOffset (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - ) - (func $start:std/dataview - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 8 - call $~lib/typedarray/Uint8Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.const 246 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 224 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 88 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 3 - i32.const 159 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 4 - i32.const 130 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 5 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 6 - i32.const 67 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 7 - i32.const 95 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - local.get $0 - i32.load - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $0 - i32.load offset=8 - call $~lib/dataview/DataView#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const -4.592586247781397e-20 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const -2.3413961970849473e-37 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const 77105877018631129268224 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const 229.51023864746094 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const 14079802746555334656 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const -2275140518817895515269171e9 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const -62437351080004157440 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const 1403059112509440 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const -5.522466503261712e-20 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 24 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const -1.6843597451835358e-37 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getFloat64 - f64.const 7936550095674706383278551e126 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getFloat64 - f64.const -411777475818852546741639e241 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 28 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/dataview/DataView#getInt8 - i32.const -10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 30 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/dataview/DataView#getInt8 - i32.const -32 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 31 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/dataview/DataView#getInt8 - i32.const 88 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - call $~lib/dataview/DataView#getInt8 - i32.const -97 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - call $~lib/dataview/DataView#getInt8 - i32.const -126 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - call $~lib/dataview/DataView#getInt8 - i32.const 101 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 6 - call $~lib/dataview/DataView#getInt8 - i32.const 67 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 7 - call $~lib/dataview/DataView#getInt8 - i32.const 95 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -7946 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 22752 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 40 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -24744 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 41 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32097 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 25986 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 17253 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 6 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 24387 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -2336 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -8104 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 22687 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -24702 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 50 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32155 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 51 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 25923 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 52 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 6 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 17247 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 53 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const -1621565194 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 55 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const -2103486240 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const 1703059288 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 57 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const 1130726047 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const 1598252418 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const -153069409 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const -531062910 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const 1486848613 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const -1618844349 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const -2107292833 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt64 - i64.const 6864441868736323830 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt64 - i64.const -657428103485373601 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/dataview/DataView#getUint8 - i32.const 246 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 70 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/dataview/DataView#getUint8 - i32.const 224 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 71 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/dataview/DataView#getUint8 - i32.const 88 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - call $~lib/dataview/DataView#getUint8 - i32.const 159 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - call $~lib/dataview/DataView#getUint8 - i32.const 130 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 74 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - call $~lib/dataview/DataView#getUint8 - i32.const 101 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 75 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 6 - call $~lib/dataview/DataView#getUint8 - i32.const 67 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 76 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 7 - call $~lib/dataview/DataView#getUint8 - i32.const 95 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 77 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 57590 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 79 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 22752 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 40792 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 81 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 33439 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 25986 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 17253 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 6 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 24387 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 63200 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 87 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 57432 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 88 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 22687 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 89 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 40834 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 90 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 33381 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 91 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 25923 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 92 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 6 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 17247 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 93 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const -1621565194 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const -2103486240 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const 1703059288 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const 1130726047 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const 1598252418 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 99 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -153069409 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 101 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -531062910 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 102 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const 1486848613 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -1618844349 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -2107292833 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint64 - i64.const 6864441868736323830 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 107 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint64 - i64.const -657428103485373601 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - f32.const 1.5976661625240943e-18 - i32.const 1 - call $~lib/dataview/DataView#setFloat32 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getFloat32 - f32.const 1.5976661625240943e-18 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 111 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - f32.const 1976281973381696323584 - i32.const 0 - call $~lib/dataview/DataView#setFloat32 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getFloat32 - f32.const 1976281973381696323584 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - f64.const -1094252199637739024055454e124 - i32.const 1 - call $~lib/dataview/DataView#setFloat64 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getFloat64 - f64.const -1094252199637739024055454e124 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - f64.const 6.022586634778589e-103 - i32.const 0 - call $~lib/dataview/DataView#setFloat64 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getFloat64 - f64.const 6.022586634778589e-103 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 108 - call $~lib/dataview/DataView#setInt8 - local.get $1 - i32.const 0 - call $~lib/dataview/DataView#getInt8 - i32.const 108 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const -13360 - i32.const 1 - call $~lib/dataview/DataView#setInt16 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -13360 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 14689 - i32.const 0 - call $~lib/dataview/DataView#setInt16 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 14689 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 129 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 1204680201 - i32.const 1 - call $~lib/dataview/DataView#setInt32 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt32 - i32.const 1204680201 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 132 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 660673230 - i32.const 0 - call $~lib/dataview/DataView#setInt32 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt32 - i32.const 660673230 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i64.const -3290739641816099749 - i32.const 1 - call $~lib/dataview/DataView#setInt64 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getInt64 - i64.const -3290739641816099749 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 138 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i64.const 8178932412950708047 - i32.const 0 - call $~lib/dataview/DataView#setInt64 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getInt64 - i64.const 8178932412950708047 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 141 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 238 - call $~lib/dataview/DataView#setUint8 - local.get $1 - i32.const 0 - call $~lib/dataview/DataView#getUint8 - i32.const 238 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 144 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 58856 - i32.const 1 - call $~lib/dataview/DataView#setUint16 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 58856 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 147 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 60400 - i32.const 0 - call $~lib/dataview/DataView#setUint16 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint16 - i32.const 65535 - i32.and - i32.const 60400 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 150 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const -846805744 - i32.const 1 - call $~lib/dataview/DataView#setUint32 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint32 - i32.const -846805744 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 153 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const -1510791631 - i32.const 0 - call $~lib/dataview/DataView#setUint32 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint32 - i32.const -1510791631 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 156 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i64.const 2334704782995986958 - i32.const 1 - call $~lib/dataview/DataView#setUint64 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/dataview/DataView#getUint64 - i64.const 2334704782995986958 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 159 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i64.const -7123186897289856329 - i32.const 0 - call $~lib/dataview/DataView#setUint64 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#getUint64 - i64.const -7123186897289856329 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 162 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - i32.load - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/dataview/DataView#constructor@varargs - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - local.get $1 - call $~lib/dataview/DataView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 480 - i32.const 166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~start - call $start:std/dataview - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/std/date.debug.wat b/tests/compiler/std/date.debug.wat new file mode 100644 index 0000000000..69c2f16c5e --- /dev/null +++ b/tests/compiler/std/date.debug.wat @@ -0,0 +1,13741 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (param i32))) + (type $6 (func)) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i64) (result i32))) + (type $9 (func (param i32 i32 i32) (result i64))) + (type $10 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) + (type $11 (func (param i32 i32 i64) (result i32))) + (type $12 (func (result i32))) + (type $13 (func (param i32 i64))) + (type $14 (func (param i32) (result i64))) + (type $15 (func (param i32 i32 i32 i64) (result i64))) + (type $16 (func (param i32 i64 i32))) + (type $17 (func (param i64 i32) (result i32))) + (type $18 (func (param i32 i64 i32 i32))) + (type $19 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $20 (func (param i32 i64) (result i32))) + (type $21 (func (param i32 i64) (result i64))) + (type $22 (func (param i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/date/_day (mut i32) (i32.const 0)) + (global $~lib/date/_month (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 7408)) + (global $~lib/memory/__data_end i32 (i32.const 7444)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 40212)) + (global $~lib/memory/__heap_base i32 (i32.const 40212)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00D\00a\00t\00e\00\00\00\00\00") + (data $1 (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00") + (data $2 (i32.const 108) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00\00\00") + (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $4 (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 492) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 556) "\00\03\02\05\00\03\05\01\04\06\02\04") + (data $12 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 636) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 764) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $16 (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 860) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $18 (i32.const 1260) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 2316) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $20 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 2444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00T\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00Z\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2572) "L\00\00\00\03\00\00\00\00\00\00\00\05\00\00\008\00\00\00\00\00\00\00P\02\00\00\00\00\00\00P\02\00\00\00\00\00\00\a0\t\00\00\00\00\00\00\c0\t\00\00\00\00\00\00\c0\t\00\00\00\00\00\00\e0\t\00\00\00\00\00\00\00\n\00\00\00\00\00\00") + (data $26 (i32.const 2652) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2732) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00-\000\000\000\000\000\001\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00") + (data $28 (i32.const 2812) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\000\000\000\001\00-\000\004\00-\000\007\00T\002\003\00:\000\006\00:\004\000\00.\000\000\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 2892) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 2972) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 3052) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z\00\00\00\00\00\00\00") + (data $32 (i32.const 3132) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\009\009\009\009\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 3212) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00+\000\001\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") + (data $34 (i32.const 3292) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00-\000\000\000\000\002\002\00-\000\006\00-\001\006\00T\001\007\00:\001\003\00:\005\000\00.\007\007\004\00Z\00\00\00\00\00\00\00") + (data $35 (i32.const 3372) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00S\00u\00n\00 \00\00\00\00\00") + (data $36 (i32.const 3404) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00M\00o\00n\00 \00\00\00\00\00") + (data $37 (i32.const 3436) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00T\00u\00e\00 \00\00\00\00\00") + (data $38 (i32.const 3468) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00W\00e\00d\00 \00\00\00\00\00") + (data $39 (i32.const 3500) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00T\00h\00u\00 \00\00\00\00\00") + (data $40 (i32.const 3532) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00F\00r\00i\00 \00\00\00\00\00") + (data $41 (i32.const 3564) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00S\00a\00t\00 \00\00\00\00\00") + (data $42 (i32.const 3596) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\1c\00\00\00@\r\00\00`\r\00\00\80\r\00\00\a0\r\00\00\c0\r\00\00\e0\r\00\00\00\0e\00\00") + (data $43 (i32.const 3644) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00J\00a\00n\00 \00\00\00\00\00") + (data $44 (i32.const 3676) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00F\00e\00b\00 \00\00\00\00\00") + (data $45 (i32.const 3708) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00M\00a\00r\00 \00\00\00\00\00") + (data $46 (i32.const 3740) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00p\00r\00 \00\00\00\00\00") + (data $47 (i32.const 3772) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00M\00a\00y\00 \00\00\00\00\00") + (data $48 (i32.const 3804) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00J\00u\00n\00 \00\00\00\00\00") + (data $49 (i32.const 3836) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00J\00u\00l\00 \00\00\00\00\00") + (data $50 (i32.const 3868) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00u\00g\00 \00\00\00\00\00") + (data $51 (i32.const 3900) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00S\00e\00p\00 \00\00\00\00\00") + (data $52 (i32.const 3932) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00O\00c\00t\00 \00\00\00\00\00") + (data $53 (i32.const 3964) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00N\00o\00v\00 \00\00\00\00\00") + (data $54 (i32.const 3996) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00D\00e\00c\00 \00\00\00\00\00") + (data $55 (i32.const 4028) "L\00\00\00\00\00\00\00\00\00\00\00\05\00\00\000\00\00\00P\0e\00\00p\0e\00\00\90\0e\00\00\b0\0e\00\00\d0\0e\00\00\f0\0e\00\00\10\0f\00\000\0f\00\00P\0f\00\00p\0f\00\00\90\0f\00\00\b0\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 4108) ",\00\00\00\03\00\00\00\00\00\00\00\05\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $57 (i32.const 4156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00 \00-\00\00\00\00\00\00\00\00\00") + (data $58 (i32.const 4188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 4220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00W\00e\00d\00 \00J\00a\00n\00 \000\001\00 \000\000\002\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 4284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00S\00u\00n\00 \00F\00e\00b\00 \000\002\00 \002\000\002\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $61 (i32.const 4348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00T\00h\00u\00 \00J\00u\00l\00 \000\001\00 \00-\000\000\000\001\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $62 (i32.const 4412) ",\00\00\00\03\00\00\00\00\00\00\00\05\00\00\00\14\00\00\00\00\00\00\00\c0\t\00\00\00\00\00\00\c0\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 4460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\000\000\00:\000\000\00:\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 4508) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\002\003\00:\005\009\00:\005\009\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 4556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00S\00u\00n\00,\00 \00\00\00") + (data $66 (i32.const 4588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00M\00o\00n\00,\00 \00\00\00") + (data $67 (i32.const 4620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00T\00u\00e\00,\00 \00\00\00") + (data $68 (i32.const 4652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00W\00e\00d\00,\00 \00\00\00") + (data $69 (i32.const 4684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00T\00h\00u\00,\00 \00\00\00") + (data $70 (i32.const 4716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00F\00r\00i\00,\00 \00\00\00") + (data $71 (i32.const 4748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00S\00a\00t\00,\00 \00\00\00") + (data $72 (i32.const 4780) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\1c\00\00\00\e0\11\00\00\00\12\00\00 \12\00\00@\12\00\00`\12\00\00\80\12\00\00\a0\12\00\00") + (data $73 (i32.const 4828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00J\00a\00n\00 \00\00\00") + (data $74 (i32.const 4860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00F\00e\00b\00 \00\00\00") + (data $75 (i32.const 4892) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00M\00a\00r\00 \00\00\00") + (data $76 (i32.const 4924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00A\00p\00r\00 \00\00\00") + (data $77 (i32.const 4956) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00M\00a\00y\00 \00\00\00") + (data $78 (i32.const 4988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00J\00u\00n\00 \00\00\00") + (data $79 (i32.const 5020) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00J\00u\00l\00 \00\00\00") + (data $80 (i32.const 5052) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00A\00u\00g\00 \00\00\00") + (data $81 (i32.const 5084) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00S\00e\00p\00 \00\00\00") + (data $82 (i32.const 5116) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00O\00c\00t\00 \00\00\00") + (data $83 (i32.const 5148) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00N\00o\00v\00 \00\00\00") + (data $84 (i32.const 5180) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00D\00e\00c\00 \00\00\00") + (data $85 (i32.const 5212) "L\00\00\00\00\00\00\00\00\00\00\00\05\00\00\000\00\00\00\f0\12\00\00\10\13\00\000\13\00\00P\13\00\00p\13\00\00\90\13\00\00\b0\13\00\00\d0\13\00\00\f0\13\00\00\10\14\00\000\14\00\00P\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $86 (i32.const 5292) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00G\00M\00T\00\00\00\00\00") + (data $87 (i32.const 5324) "L\00\00\00\03\00\00\00\00\00\00\00\05\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00p\10\00\00\00\00\00\00\c0\t\00\00\00\00\00\00\c0\t\00\00\00\00\00\00\c0\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $88 (i32.const 5404) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\00W\00e\00d\00,\00 \000\001\00 \00J\00a\00n\00 \000\000\002\000\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T\00\00\00") + (data $89 (i32.const 5484) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\00M\00o\00n\00,\00 \000\003\00 \00F\00e\00b\00 \002\000\002\000\00 \001\004\00:\005\003\00:\003\003\00 \00G\00M\00T\00\00\00") + (data $90 (i32.const 5564) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00<\00\00\00T\00h\00u\00,\00 \000\001\00 \00J\00u\00l\00 \00-\000\000\000\001\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T\00") + (data $91 (i32.const 5644) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002\00\00\00\00\00\00\00\00\00") + (data $92 (i32.const 5692) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $93 (i32.const 5740) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $94 (i32.const 5788) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $95 (i32.const 5916) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $96 (i32.const 5964) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004\00\00\00\00\00\00\00\00\00") + (data $97 (i32.const 6012) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00\00\00\00\00\00\00") + (data $98 (i32.const 6076) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $99 (i32.const 6156) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $100 (i32.const 6236) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00-\000\008\00:\000\000\00\00\00") + (data $101 (i32.const 6316) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00+\000\005\00:\003\000\00\00\00") + (data $102 (i32.const 6396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00") + (data $103 (i32.const 6460) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $104 (i32.const 6540) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\008\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00+\000\000\00:\000\000\00\00\00\00\00") + (data $105 (i32.const 6620) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00\00\00\00\00\00\00\00\00") + (data $106 (i32.const 6700) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00Z\00\00\00\00\00\00\00") + (data $107 (i32.const 6780) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00+\000\000\00:\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $108 (i32.const 6876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\000\000\000\00\00\00\00\00") + (data $109 (i32.const 6908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\000\000\001\00\00\00\00\00") + (data $110 (i32.const 6940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\009\007\006\00\00\00\00\00") + (data $111 (i32.const 6972) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\009\007\006\00-\000\002\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $112 (i32.const 7020) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $113 (i32.const 7084) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") + (data $114 (i32.const 7164) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\003\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") + (data $115 (i32.const 7244) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\002\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00") + (data $116 (i32.const 7324) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z\00\00\00\00\00\00\00") + (data $117 (i32.const 7408) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\04A\00\00\02A\00\00\02\t\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/date/daysSinceEpoch (param $y i32) (param $m i32) (param $d i32) (result i64) + (local $a i32) + (local $b i32) + (local $era i32) + (local $yoe i32) + (local $doy i32) + (local $doe i32) + local.get $y + local.get $m + i32.const 2 + i32.le_s + i32.sub + local.set $y + block $~lib/date/floorDiv|inlined.0 (result i32) + local.get $y + local.set $a + i32.const 400 + local.set $b + local.get $a + local.get $a + i32.const 0 + i32.lt_s + if (result i32) + local.get $b + i32.const 1 + i32.sub + else + i32.const 0 + end + i32.sub + local.get $b + i32.div_s + br $~lib/date/floorDiv|inlined.0 + end + local.set $era + local.get $y + local.get $era + i32.const 400 + i32.mul + i32.sub + local.set $yoe + i32.const 153 + local.get $m + local.get $m + i32.const 2 + i32.gt_s + if (result i32) + i32.const -3 + else + i32.const 9 + end + i32.add + i32.mul + i32.const 2 + i32.add + i32.const 5 + i32.div_u + local.get $d + i32.add + i32.const 1 + i32.sub + local.set $doy + local.get $yoe + i32.const 365 + i32.mul + local.get $yoe + i32.const 4 + i32.div_u + i32.add + local.get $yoe + i32.const 100 + i32.div_u + i32.sub + local.get $doy + i32.add + local.set $doe + local.get $era + i32.const 146097 + i32.mul + local.get $doe + i32.add + i32.const 719468 + i32.sub + i64.extend_i32_s + return + ) + (func $~lib/date/epochMillis (param $year i32) (param $month i32) (param $day i32) (param $hour i32) (param $minute i32) (param $second i32) (param $milliseconds i32) (result i64) + local.get $year + local.get $month + local.get $day + call $~lib/date/daysSinceEpoch + i32.const 86400000 + i64.extend_i32_s + i64.mul + local.get $hour + i32.const 3600000 + i32.mul + i64.extend_i32_s + i64.add + local.get $minute + i32.const 60000 + i32.mul + i64.extend_i32_s + i64.add + local.get $second + i32.const 1000 + i32.mul + i64.extend_i32_s + i64.add + local.get $milliseconds + i64.extend_i32_s + i64.add + return + ) + (func $~lib/date/invalidDate (param $millis i64) (result i32) + local.get $millis + i64.const 0 + i64.const 8640000000000000 + i64.sub + i64.lt_s + local.get $millis + i64.const 8640000000000000 + i64.gt_s + i32.or + return + ) + (func $~lib/date/dateFromEpoch (param $ms i64) (result i32) + (local $a i64) + (local $b i64) + (local $da i32) + (local $a|4 i32) + (local $b|5 i32) + (local $q0 i32) + (local $r1 i32) + (local $u1 i64) + (local $dm1 i32) + (local $n1 i32) + (local $year i32) + (local $mo i32) + block $~lib/date/floorDiv|inlined.0 (result i64) + local.get $ms + local.set $a + i32.const 86400000 + i64.extend_i32_s + local.set $b + local.get $a + local.get $a + i64.const 0 + i64.lt_s + if (result i64) + local.get $b + i64.const 1 + i64.sub + else + i64.const 0 + end + i64.sub + local.get $b + i64.div_s + br $~lib/date/floorDiv|inlined.0 + end + i32.wrap_i64 + i32.const 4 + i32.mul + i32.const 719468 + i32.const 4 + i32.mul + i32.add + i32.const 3 + i32.or + local.set $da + block $~lib/date/floorDiv|inlined.1 (result i32) + local.get $da + local.set $a|4 + i32.const 146097 + local.set $b|5 + local.get $a|4 + local.get $a|4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $b|5 + i32.const 1 + i32.sub + else + i32.const 0 + end + i32.sub + local.get $b|5 + i32.div_s + br $~lib/date/floorDiv|inlined.1 + end + local.set $q0 + local.get $da + local.get $q0 + i32.const 146097 + i32.mul + i32.sub + local.set $r1 + local.get $r1 + i32.const 3 + i32.or + i64.extend_i32_u + i64.const 2939745 + i64.mul + local.set $u1 + local.get $u1 + i32.wrap_i64 + i32.const 11758980 + i32.div_u + local.set $dm1 + i32.const 2141 + local.get $dm1 + i32.mul + i32.const 197913 + i32.add + local.set $n1 + i32.const 100 + local.get $q0 + i32.mul + local.get $u1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.add + local.set $year + local.get $n1 + i32.const 16 + i32.shr_u + local.set $mo + local.get $n1 + i32.const 65535 + i32.and + i32.const 2141 + i32.div_s + i32.const 1 + i32.add + global.set $~lib/date/_day + local.get $dm1 + i32.const 306 + i32.ge_u + if + local.get $mo + i32.const 12 + i32.sub + local.set $mo + local.get $year + i32.const 1 + i32.add + local.set $year + end + local.get $mo + global.set $~lib/date/_month + local.get $year + return + ) + (func $~lib/date/Date#set:year (param $this i32) (param $year i32) + local.get $this + local.get $year + i32.store + ) + (func $~lib/date/Date#set:month (param $this i32) (param $month i32) + local.get $this + local.get $month + i32.store offset=4 + ) + (func $~lib/date/Date#set:day (param $this i32) (param $day i32) + local.get $this + local.get $day + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 368 + i32.const 432 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 240 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 176 + i32.const 512 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 176 + i32.const 240 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/date/Date#set:epochMillis (param $this i32) (param $epochMillis i64) + local.get $this + local.get $epochMillis + i64.store offset=16 + ) + (func $~lib/date/Date#get:epochMillis (param $this i32) (result i64) + local.get $this + i64.load offset=16 + ) + (func $~lib/date/Date#get:year (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/date/Date#get:month (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/date/Date#get:day (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/date/join (param $year i32) (param $month i32) (param $day i32) (param $ms i64) (result i64) + (local $a i64) + (local $b i64) + (local $m i64) + local.get $year + local.get $month + local.get $day + call $~lib/date/daysSinceEpoch + i32.const 86400000 + i64.extend_i32_s + i64.mul + block $~lib/date/euclidRem|inlined.4 (result i64) + local.get $ms + local.set $a + i32.const 86400000 + i64.extend_i32_s + local.set $b + local.get $a + local.get $b + i64.rem_s + local.set $m + local.get $m + local.get $m + i64.const 0 + i64.lt_s + if (result i64) + local.get $b + else + i64.const 0 + end + i64.add + br $~lib/date/euclidRem|inlined.4 + end + i64.add + return + ) + (func $~lib/date/dayOfWeek (param $year i32) (param $month i32) (param $day i32) (result i32) + (local $a i32) + (local $b i32) + (local $a|5 i32) + (local $b|6 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $m i32) + local.get $year + local.get $month + i32.const 3 + i32.lt_s + i32.sub + local.set $year + local.get $year + block $~lib/date/floorDiv|inlined.2 (result i32) + local.get $year + local.set $a + i32.const 4 + local.set $b + local.get $a + local.get $a + i32.const 0 + i32.lt_s + if (result i32) + local.get $b + i32.const 1 + i32.sub + else + i32.const 0 + end + i32.sub + local.get $b + i32.div_s + br $~lib/date/floorDiv|inlined.2 + end + block $~lib/date/floorDiv|inlined.3 (result i32) + local.get $year + local.set $a|5 + i32.const 100 + local.set $b|6 + local.get $a|5 + local.get $a|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $b|6 + i32.const 1 + i32.sub + else + i32.const 0 + end + i32.sub + local.get $b|6 + i32.div_s + br $~lib/date/floorDiv|inlined.3 + end + i32.sub + block $~lib/date/floorDiv|inlined.4 (result i32) + local.get $year + local.set $a|7 + i32.const 400 + local.set $b|8 + local.get $a|7 + local.get $a|7 + i32.const 0 + i32.lt_s + if (result i32) + local.get $b|8 + i32.const 1 + i32.sub + else + i32.const 0 + end + i32.sub + local.get $b|8 + i32.div_s + br $~lib/date/floorDiv|inlined.4 + end + i32.add + i32.add + local.set $year + i32.const 556 + local.get $month + i32.add + i32.const 1 + i32.sub + i32.load8_u + local.set $month + block $~lib/date/euclidRem|inlined.0 (result i32) + local.get $year + local.get $month + i32.add + local.get $day + i32.add + local.set $a|9 + i32.const 7 + local.set $b|10 + local.get $a|9 + local.get $b|10 + i32.rem_s + local.set $m + local.get $m + local.get $m + i32.const 0 + i32.lt_s + if (result i32) + local.get $b|10 + else + i32.const 0 + end + i32.add + br $~lib/date/euclidRem|inlined.0 + end + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 860 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 860 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 860 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 860 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1280 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1280 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2336 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2336 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/itoa32 + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/memory/memory.repeat (param $dst i32) (param $src i32) (param $srcLength i32) (param $count i32) + (local $index i32) + (local $total i32) + i32.const 0 + local.set $index + local.get $srcLength + local.get $count + i32.mul + local.set $total + loop $while-continue|0 + local.get $index + local.get $total + i32.lt_u + if + local.get $dst + local.get $index + i32.add + local.get $src + local.get $srcLength + memory.copy + local.get $index + local.get $srcLength + i32.add + local.set $index + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__uset (param $this i32) (param $index i32) (param $value i32) + local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 2 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__uget (param $this i32) (param $index i32) (result i32) + local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + return + ) + (func $~lib/util/string/isSpace (param $c i32) (result i32) + (local $1 i32) + local.get $c + i32.const 5760 + i32.lt_u + if + local.get $c + i32.const 128 + i32.or + i32.const 160 + i32.eq + if (result i32) + i32.const 1 + else + local.get $c + i32.const 9 + i32.sub + i32.const 13 + i32.const 9 + i32.sub + i32.le_u + end + return + end + local.get $c + i32.const 8192 + i32.sub + i32.const 8202 + i32.const 8192 + i32.sub + i32.le_u + if + i32.const 1 + return + end + block $break|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $c + local.set $1 + local.get $1 + i32.const 5760 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 8232 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 8233 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 8239 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 8287 + i32.eq + br_if $case4|0 + local.get $1 + i32.const 12288 + i32.eq + br_if $case5|0 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + end + end + end + end + end + end + i32.const 1 + return + end + i32.const 0 + return + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array<~lib/string/String>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 368 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 5760 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 5808 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 176 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1280 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2336 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + i32.const 1 + drop + local.get $this + local.set $cur + local.get $cur + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String> + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/date/Date + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/date + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 40240 + i32.const 40288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/date/Date#constructor (param $this i32) (param $epochMillis i64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $epochMillis + call $~lib/date/Date#set:epochMillis + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/date/Date#set:year + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/date/Date#set:month + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/date/Date#set:day + local.get $epochMillis + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 131 + i32.const 35 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $epochMillis + call $~lib/date/dateFromEpoch + call $~lib/date/Date#set:year + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + global.get $~lib/date/_month + call $~lib/date/Date#set:month + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + global.get $~lib/date/_day + call $~lib/date/Date#set:day + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/date/Date#setTime (param $this i32) (param $time i64) (result i64) + (local $2 i32) + (local $3 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $time + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 143 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $time + call $~lib/date/Date#set:epochMillis + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $time + call $~lib/date/dateFromEpoch + call $~lib/date/Date#set:year + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + global.get $~lib/date/_month + call $~lib/date/Date#set:month + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + global.get $~lib/date/_day + call $~lib/date/Date#set:day + local.get $time + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/date/Date#getUTCHours (param $this i32) (result i32) + (local $a i64) + (local $b i64) + (local $m i64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/date/euclidRem|inlined.0 (result i64) + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/date/Date#get:epochMillis + local.set $a + i32.const 86400000 + i64.extend_i32_s + local.set $b + local.get $a + local.get $b + i64.rem_s + local.set $m + local.get $m + local.get $m + i64.const 0 + i64.lt_s + if (result i64) + local.get $b + else + i64.const 0 + end + i64.add + br $~lib/date/euclidRem|inlined.0 + end + i32.wrap_i64 + i32.const 3600000 + i32.div_s + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/date/Date#getUTCMinutes (param $this i32) (result i32) + (local $a i64) + (local $b i64) + (local $m i64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/date/euclidRem|inlined.1 (result i64) + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/date/Date#get:epochMillis + local.set $a + i32.const 3600000 + i64.extend_i32_s + local.set $b + local.get $a + local.get $b + i64.rem_s + local.set $m + local.get $m + local.get $m + i64.const 0 + i64.lt_s + if (result i64) + local.get $b + else + i64.const 0 + end + i64.add + br $~lib/date/euclidRem|inlined.1 + end + i32.wrap_i64 + i32.const 60000 + i32.div_s + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/date/Date#getUTCSeconds (param $this i32) (result i32) + (local $a i64) + (local $b i64) + (local $m i64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/date/euclidRem|inlined.2 (result i64) + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/date/Date#get:epochMillis + local.set $a + i32.const 60000 + i64.extend_i32_s + local.set $b + local.get $a + local.get $b + i64.rem_s + local.set $m + local.get $m + local.get $m + i64.const 0 + i64.lt_s + if (result i64) + local.get $b + else + i64.const 0 + end + i64.add + br $~lib/date/euclidRem|inlined.2 + end + i32.wrap_i64 + i32.const 1000 + i32.div_s + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/date/Date#getUTCMilliseconds (param $this i32) (result i32) + (local $a i64) + (local $b i64) + (local $m i64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/date/euclidRem|inlined.3 (result i64) + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/date/Date#get:epochMillis + local.set $a + i32.const 1000 + i64.extend_i32_s + local.set $b + local.get $a + local.get $b + i64.rem_s + local.set $m + local.get $m + local.get $m + i64.const 0 + i64.lt_s + if (result i64) + local.get $b + else + i64.const 0 + end + i64.add + br $~lib/date/euclidRem|inlined.3 + end + i32.wrap_i64 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/date/Date#setUTCMilliseconds (param $this i32) (param $millis i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#get:epochMillis + local.get $millis + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#getUTCMilliseconds + i32.sub + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCSeconds (param $this i32) (param $seconds i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#get:epochMillis + local.get $seconds + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#getUTCSeconds + i32.sub + i32.const 1000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCMinutes (param $this i32) (param $minutes i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#get:epochMillis + local.get $minutes + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#getUTCMinutes + i32.sub + i32.const 60000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCHours (param $this i32) (param $hours i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#get:epochMillis + local.get $hours + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#getUTCHours + i32.sub + i32.const 3600000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCDate (param $this i32) (param $day i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/date/Date#get:day + local.get $day + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#get:year + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#get:month + local.get $day + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#get:epochMillis + call $~lib/date/join + call $~lib/date/Date#setTime + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCMonth (param $this i32) (param $month i32) (param $day i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/date/Date#get:month + local.get $month + i32.const 1 + i32.add + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/date/Date#get:year + local.get $month + i32.const 1 + i32.add + local.get $day + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/date/Date#get:epochMillis + call $~lib/date/join + call $~lib/date/Date#setTime + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCMonth@varargs (param $this i32) (param $month i32) (param $day i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/date/Date#get:day + local.set $day + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $month + local.get $day + call $~lib/date/Date#setUTCMonth + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCFullYear (param $this i32) (param $year i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/date/Date#get:year + local.get $year + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $year + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#get:month + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#get:day + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/date/Date#get:epochMillis + call $~lib/date/join + call $~lib/date/Date#setTime + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#padStart (param $this i32) (param $length i32) (param $pad i32) (result i32) + (local $thisSize i32) + (local $targetSize i32) + (local $padSize i32) + (local $prependSize i32) + (local $out i32) + (local $repeatCount i32) + (local $restBase i32) + (local $restSize i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $length + i32.const 1 + i32.shl + local.set $targetSize + local.get $pad + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $padSize + local.get $targetSize + local.get $thisSize + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $padSize + i32.eqz + end + if + local.get $this + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $targetSize + local.get $thisSize + i32.sub + local.set $prependSize + global.get $~lib/memory/__stack_pointer + local.get $targetSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $prependSize + local.get $padSize + i32.gt_u + if + local.get $prependSize + i32.const 2 + i32.sub + local.get $padSize + i32.div_u + local.set $repeatCount + local.get $repeatCount + local.get $padSize + i32.mul + local.set $restBase + local.get $prependSize + local.get $restBase + i32.sub + local.set $restSize + local.get $out + local.get $pad + local.get $padSize + local.get $repeatCount + call $~lib/memory/memory.repeat + local.get $out + local.get $restBase + i32.add + local.get $pad + local.get $restSize + memory.copy + else + local.get $out + local.get $pad + local.get $prependSize + memory.copy + end + local.get $out + local.get $prependSize + i32.add + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/date/stringify (param $value i32) (param $padding i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $value + i32.const 10 + call $~lib/number/I32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $padding + i32.const 848 + call $~lib/string/String#padStart + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 2432 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/util/string/joinStringArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $4 i32) + (local $estLen i32) + (local $value i32) + (local $i i32) + (local $offset i32) + (local $sepLen i32) + (local $result i32) + (local $i|11 i32) + (local $valueLen i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 2432 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + end + local.get $lastIndex + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + i32.load + local.tee $4 + i32.store + local.get $4 + if (result i32) + local.get $4 + else + i32.const 2432 + end + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + end + i32.const 0 + local.set $estLen + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne + if + local.get $estLen + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + i32.add + local.set $estLen + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $offset + local.get $separator + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + local.set $sepLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + local.get $sepLen + local.get $lastIndex + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=12 + i32.const 0 + local.set $i|11 + loop $for-loop|1 + local.get $i|11 + local.get $lastIndex + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i|11 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne + if + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + local.set $valueLen + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + local.get $valueLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $valueLen + i32.add + local.set $offset + end + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i|11 + i32.const 1 + i32.add + local.set $i|11 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + memory.copy + end + local.get $result + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 1 + drop + local.get $this + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinStringArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/date/Date#toISOString (param $this i32) (result i32) + (local $yr i32) + (local $isNeg i32) + (local $3 i32) + (local $4 i32) + (local $year i32) + (local $month i32) + (local $day i32) + (local $hours i32) + (local $mins i32) + (local $secs i32) + (local $ms 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) + global.get $~lib/memory/__stack_pointer + i32.const 64 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 64 + memory.fill + local.get $this + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + call $~lib/date/Date#get:year + local.set $yr + local.get $yr + i32.const 0 + i32.lt_s + local.set $isNeg + global.get $~lib/memory/__stack_pointer + local.get $isNeg + if (result i32) + i32.const 1 + else + local.get $yr + i32.const 10000 + i32.ge_s + end + if (result i32) + local.get $isNeg + if (result i32) + i32.const 592 + else + i32.const 624 + end + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + local.get $yr + local.tee $3 + i32.const 31 + i32.shr_s + local.tee $4 + local.get $3 + i32.add + local.get $4 + i32.xor + i32.const 6 + call $~lib/date/stringify + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/string/String.__concat + else + local.get $yr + i32.const 4 + call $~lib/date/stringify + end + local.tee $year + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + call $~lib/date/Date#get:month + i32.const 2 + call $~lib/date/stringify + local.tee $month + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + call $~lib/date/Date#get:day + i32.const 2 + call $~lib/date/stringify + local.tee $day + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + call $~lib/date/Date#getUTCHours + i32.const 2 + call $~lib/date/stringify + local.tee $hours + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + call $~lib/date/Date#getUTCMinutes + i32.const 2 + call $~lib/date/stringify + local.tee $mins + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + call $~lib/date/Date#getUTCSeconds + i32.const 2 + call $~lib/date/stringify + local.tee $secs + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + call $~lib/date/Date#getUTCMilliseconds + i32.const 3 + call $~lib/date/stringify + local.tee $ms + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $year + local.tee $12 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $month + local.tee $13 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $day + local.tee $14 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $hours + local.tee $15 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $mins + local.tee $16 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $secs + local.tee $17 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $ms + local.tee $18 + i32.store offset=60 + i32.const 2592 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + i32.const 0 + local.get $12 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 2592 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + i32.const 2 + local.get $13 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 2592 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + i32.const 4 + local.get $14 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 2592 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + i32.const 6 + local.get $15 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 2592 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + i32.const 8 + local.get $16 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 2592 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + i32.const 10 + local.get $17 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 2592 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + i32.const 12 + local.get $18 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 2592 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + i32.const 2432 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 64 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/date/Date#toDateString (param $this i32) (result i32) + (local $1 i32) + (local $weeks i32) + (local $3 i32) + (local $months i32) + (local $mo i32) + (local $da i32) + (local $yr i32) + (local $wd i32) + (local $9 i32) + (local $10 i32) + (local $year i32) + (local $month i32) + (local $week i32) + (local $day i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + global.get $~lib/memory/__stack_pointer + i32.const 52 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 52 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.const 5 + i32.const 3616 + call $~lib/rt/__newBuffer + local.tee $weeks + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.const 5 + i32.const 4048 + call $~lib/rt/__newBuffer + local.tee $months + i32.store offset=4 + local.get $this + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=8 + local.get $20 + call $~lib/date/Date#get:month + local.set $mo + local.get $this + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=8 + local.get $20 + call $~lib/date/Date#get:day + local.set $da + local.get $this + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=8 + local.get $20 + call $~lib/date/Date#get:year + local.set $yr + local.get $yr + local.get $mo + local.get $da + call $~lib/date/dayOfWeek + local.set $wd + global.get $~lib/memory/__stack_pointer + local.get $yr + local.tee $9 + i32.const 31 + i32.shr_s + local.tee $10 + local.get $9 + i32.add + local.get $10 + i32.xor + i32.const 4 + call $~lib/date/stringify + local.tee $year + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $months + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=8 + local.get $20 + local.get $mo + i32.const 1 + i32.sub + call $~lib/staticarray/StaticArray<~lib/string/String>#__uget + local.tee $month + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $weeks + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=8 + local.get $20 + local.get $wd + call $~lib/staticarray/StaticArray<~lib/string/String>#__uget + local.tee $week + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $da + i32.const 2 + call $~lib/date/stringify + local.tee $day + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $week + local.tee $15 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $month + local.tee $16 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $day + local.tee $17 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $yr + i32.const 0 + i32.lt_s + if (result i32) + i32.const 4176 + else + i32.const 4208 + end + local.tee $18 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $year + local.tee $19 + i32.store offset=44 + i32.const 4128 + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=8 + local.get $20 + i32.const 0 + local.get $15 + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=48 + local.get $20 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4128 + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=8 + local.get $20 + i32.const 1 + local.get $16 + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=48 + local.get $20 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4128 + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=8 + local.get $20 + i32.const 2 + local.get $17 + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=48 + local.get $20 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4128 + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=8 + local.get $20 + i32.const 3 + local.get $18 + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=48 + local.get $20 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4128 + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=8 + local.get $20 + i32.const 4 + local.get $19 + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=48 + local.get $20 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4128 + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=8 + local.get $20 + i32.const 2432 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $20 + global.get $~lib/memory/__stack_pointer + i32.const 52 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $20 + return + ) + (func $~lib/date/Date#toTimeString (param $this i32) (result i32) + (local $hours i32) + (local $mins i32) + (local $secs i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/date/Date#getUTCHours + i32.const 2 + call $~lib/date/stringify + local.tee $hours + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/date/Date#getUTCMinutes + i32.const 2 + call $~lib/date/stringify + local.tee $mins + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/date/Date#getUTCSeconds + i32.const 2 + call $~lib/date/stringify + local.tee $secs + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $hours + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $mins + local.tee $5 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $secs + local.tee $6 + i32.store offset=24 + i32.const 4432 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 0 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=28 + local.get $7 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4432 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 2 + local.get $5 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=28 + local.get $7 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4432 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 4 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=28 + local.get $7 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4432 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 2432 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/date/Date#toUTCString (param $this i32) (result i32) + (local $1 i32) + (local $weeks i32) + (local $3 i32) + (local $months i32) + (local $mo i32) + (local $da i32) + (local $yr i32) + (local $wd i32) + (local $9 i32) + (local $10 i32) + (local $year i32) + (local $month i32) + (local $week i32) + (local $day i32) + (local $hours i32) + (local $mins i32) + (local $secs 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) + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 76 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.const 5 + i32.const 4800 + call $~lib/rt/__newBuffer + local.tee $weeks + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.const 5 + i32.const 5232 + call $~lib/rt/__newBuffer + local.tee $months + i32.store offset=4 + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + call $~lib/date/Date#get:month + local.set $mo + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + call $~lib/date/Date#get:day + local.set $da + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + call $~lib/date/Date#get:year + local.set $yr + local.get $yr + local.get $mo + local.get $da + call $~lib/date/dayOfWeek + local.set $wd + global.get $~lib/memory/__stack_pointer + local.get $yr + local.tee $9 + i32.const 31 + i32.shr_s + local.tee $10 + local.get $9 + i32.add + local.get $10 + i32.xor + i32.const 4 + call $~lib/date/stringify + local.tee $year + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $months + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + local.get $mo + i32.const 1 + i32.sub + call $~lib/staticarray/StaticArray<~lib/string/String>#__uget + local.tee $month + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $weeks + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + local.get $wd + call $~lib/staticarray/StaticArray<~lib/string/String>#__uget + local.tee $week + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $da + i32.const 2 + call $~lib/date/stringify + local.tee $day + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + call $~lib/date/Date#getUTCHours + i32.const 2 + call $~lib/date/stringify + local.tee $hours + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + call $~lib/date/Date#getUTCMinutes + i32.const 2 + call $~lib/date/stringify + local.tee $mins + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + call $~lib/date/Date#getUTCSeconds + i32.const 2 + call $~lib/date/stringify + local.tee $secs + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $week + local.tee $18 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $day + local.tee $19 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $month + local.tee $20 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $yr + i32.const 0 + i32.lt_s + if (result i32) + i32.const 592 + else + i32.const 2432 + end + local.tee $21 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $year + local.tee $22 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $hours + local.tee $23 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $mins + local.tee $24 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $secs + local.tee $25 + i32.store offset=68 + i32.const 5344 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + i32.const 0 + local.get $18 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=72 + local.get $26 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 5344 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + i32.const 1 + local.get $19 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=72 + local.get $26 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 5344 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + i32.const 2 + local.get $20 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=72 + local.get $26 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 5344 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + i32.const 3 + local.get $21 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=72 + local.get $26 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 5344 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + i32.const 4 + local.get $22 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=72 + local.get $26 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 5344 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + i32.const 6 + local.get $23 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=72 + local.get $26 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 5344 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + i32.const 8 + local.get $24 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=72 + local.get $26 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 5344 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + i32.const 10 + local.get $25 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=72 + local.get $26 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 5344 + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store offset=8 + local.get $26 + i32.const 2432 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 + return + ) + (func $~lib/string/String#indexOf (param $this i32) (param $search i32) (param $start i32) (result i32) + (local $searchLen i32) + (local $len i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $searchStart i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $search + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $searchLen + local.get $searchLen + i32.eqz + if + i32.const 0 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $len + local.get $len + i32.eqz + if + i32.const -1 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $start + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.tee $7 + local.get $len + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $searchStart + local.get $len + local.get $searchLen + i32.sub + local.set $len + loop $for-loop|0 + local.get $searchStart + local.get $len + i32.le_s + if + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + local.get $searchStart + local.get $search + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + i32.const 0 + local.get $searchLen + call $~lib/util/string/compareImpl + i32.eqz + if + local.get $searchStart + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $searchStart + i32.const 1 + i32.add + local.set $searchStart + br $for-loop|0 + end + end + i32.const -1 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/string/String#substring (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $finalStart i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $finalEnd i32) + (local $14 i32) + (local $15 i32) + (local $fromPos i32) + (local $17 i32) + (local $18 i32) + (local $toPos i32) + (local $size i32) + (local $out i32) + (local $22 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $22 + global.get $~lib/memory/__stack_pointer + local.get $22 + i32.store + local.get $22 + call $~lib/string/String#get:length + local.set $len + local.get $start + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $finalStart + local.get $end + local.tee $9 + i32.const 0 + local.tee $10 + local.get $9 + local.get $10 + i32.gt_s + select + local.tee $11 + local.get $len + local.tee $12 + local.get $11 + local.get $12 + i32.lt_s + select + local.set $finalEnd + local.get $finalStart + local.tee $14 + local.get $finalEnd + local.tee $15 + local.get $14 + local.get $15 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $fromPos + local.get $finalStart + local.tee $17 + local.get $finalEnd + local.tee $18 + local.get $17 + local.get $18 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $toPos + local.get $toPos + local.get $fromPos + i32.sub + local.set $size + local.get $size + i32.eqz + if + i32.const 2432 + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + end + local.get $fromPos + i32.eqz + if (result i32) + local.get $toPos + local.get $len + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 + end + if + local.get $this + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + end + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $fromPos + i32.add + local.get $size + memory.copy + local.get $out + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + ) + (func $~lib/string/String#substring@varargs (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $start + local.get $end + call $~lib/string/String#substring + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#charCodeAt (param $this i32) (param $pos i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $pos + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/string/String#get:length + i32.ge_u + if + i32.const -1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $this + local.get $pos + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/util/string/strtol (param $str i32) (param $radix i32) (result i32) + (local $len i32) + (local $ptr i32) + (local $code i32) + (local $sign i32) + (local $6 i32) + (local $num i32) + (local $initial i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $len + local.get $len + i32.eqz + if + i32.const 0 + drop + i32.const 0 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $str + local.set $ptr + local.get $ptr + i32.load16_u + local.set $code + loop $while-continue|0 + local.get $code + call $~lib/util/string/isSpace + if + local.get $ptr + i32.const 2 + i32.add + local.tee $ptr + i32.load16_u + local.set $code + local.get $len + i32.const 1 + i32.sub + local.set $len + br $while-continue|0 + end + end + i32.const 1 + local.set $sign + local.get $code + i32.const 45 + i32.eq + if (result i32) + i32.const 1 + else + local.get $code + i32.const 43 + i32.eq + end + if + local.get $len + i32.const 1 + i32.sub + local.tee $len + i32.eqz + if + i32.const 0 + drop + i32.const 0 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $code + i32.const 45 + i32.eq + if + i32.const -1 + local.set $sign + end + local.get $ptr + i32.const 2 + i32.add + local.tee $ptr + i32.load16_u + local.set $code + end + local.get $radix + if + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 0 + drop + i32.const 0 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $radix + i32.const 16 + i32.eq + if + local.get $len + i32.const 2 + i32.gt_s + if (result i32) + local.get $code + i32.const 48 + i32.eq + else + i32.const 0 + end + if (result i32) + local.get $ptr + i32.load16_u offset=2 + i32.const 32 + i32.or + i32.const 120 + i32.eq + else + i32.const 0 + end + if + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + end + end + else + local.get $code + i32.const 48 + i32.eq + if (result i32) + local.get $len + i32.const 2 + i32.gt_s + else + i32.const 0 + end + if + block $break|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $ptr + i32.load16_u offset=2 + i32.const 32 + i32.or + local.set $6 + local.get $6 + i32.const 98 + i32.eq + br_if $case0|1 + local.get $6 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $6 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + i32.const 2 + local.set $radix + br $break|1 + end + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + i32.const 8 + local.set $radix + br $break|1 + end + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + i32.const 16 + local.set $radix + br $break|1 + end + end + local.get $radix + i32.eqz + if + i32.const 10 + local.set $radix + end + end + i32.const 0 + local.set $num + local.get $len + i32.const 1 + i32.sub + local.set $initial + block $while-break|2 + loop $while-continue|2 + local.get $len + local.tee $9 + i32.const 1 + i32.sub + local.set $len + local.get $9 + if + local.get $ptr + i32.load16_u + local.set $code + local.get $code + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if + local.get $code + i32.const 48 + i32.sub + local.set $code + else + local.get $code + i32.const 65 + i32.sub + i32.const 90 + i32.const 65 + i32.sub + i32.le_u + if + local.get $code + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $code + else + local.get $code + i32.const 97 + i32.sub + i32.const 122 + i32.const 97 + i32.sub + i32.le_u + if + local.get $code + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $code + end + end + end + local.get $code + local.get $radix + i32.ge_u + if + local.get $initial + local.get $len + i32.eq + if + i32.const 0 + drop + i32.const 0 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + br $while-break|2 + end + local.get $num + local.get $radix + i32.mul + local.get $code + i32.add + local.set $num + local.get $ptr + i32.const 2 + i32.add + local.set $ptr + br $while-continue|2 + end + end + end + local.get $sign + local.get $num + i32.mul + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 5760 + i32.const 5712 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 368 + i32.const 5712 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<~lib/string/String>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 1 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/string/String#split (param $this i32) (param $separator i32) (param $limit i32) (result i32) + (local $3 i32) + (local $length i32) + (local $sepLen i32) + (local $6 i32) + (local $7 i32) + (local $result i32) + (local $resultStart i32) + (local $i i32) + (local $charStr i32) + (local $result|12 i32) + (local $result|13 i32) + (local $end i32) + (local $start i32) + (local $i|16 i32) + (local $len i32) + (local $out i32) + (local $len|19 i32) + (local $out|20 i32) + (local $21 i32) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + local.get $limit + i32.eqz + if + i32.const 0 + i32.const 2 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + end + local.get $separator + i32.const 0 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $3 + i32.const 0 + local.get $this + call $~lib/array/Array<~lib/string/String>#__set + local.get $3 + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + end + local.get $this + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + call $~lib/string/String#get:length + local.set $length + local.get $separator + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + call $~lib/string/String#get:length + local.set $sepLen + local.get $limit + i32.const 0 + i32.lt_s + if + global.get $~lib/builtins/i32.MAX_VALUE + local.set $limit + end + local.get $sepLen + i32.eqz + if + local.get $length + i32.eqz + if + i32.const 0 + i32.const 2 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + end + local.get $length + local.tee $6 + local.get $limit + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $length + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 2 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result + i32.store offset=8 + local.get $result + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $resultStart + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $charStr + i32.store offset=12 + local.get $charStr + local.get $this + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $resultStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $charStr + i32.store + local.get $result + local.get $charStr + i32.const 1 + call $~lib/rt/itcms/__link + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $result + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + else + local.get $length + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result|12 + i32.store offset=16 + local.get $result|12 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + call $~lib/array/Array<~lib/string/String>#get:dataStart + i32.const 2432 + i32.store + local.get $result|12 + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + end + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result|13 + i32.store offset=20 + i32.const 0 + local.set $end + i32.const 0 + local.set $start + i32.const 0 + local.set $i|16 + loop $while-continue|1 + local.get $this + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + local.get $separator + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=24 + local.get $21 + local.get $start + call $~lib/string/String#indexOf + local.tee $end + i32.const -1 + i32.xor + if + local.get $end + local.get $start + i32.sub + local.set $len + local.get $len + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=28 + local.get $out + local.get $this + local.get $start + i32.const 1 + i32.shl + i32.add + local.get $len + i32.const 1 + i32.shl + memory.copy + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + local.get $out + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=24 + local.get $21 + call $~lib/array/Array<~lib/string/String>#push + drop + else + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + i32.const 2432 + call $~lib/array/Array<~lib/string/String>#push + drop + end + local.get $i|16 + i32.const 1 + i32.add + local.tee $i|16 + local.get $limit + i32.eq + if + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + end + local.get $end + local.get $sepLen + i32.add + local.set $start + br $while-continue|1 + end + end + local.get $start + i32.eqz + if + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + local.get $this + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=24 + local.get $21 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + end + local.get $length + local.get $start + i32.sub + local.set $len|19 + local.get $len|19 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $len|19 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out|20 + i32.store offset=32 + local.get $out|20 + local.get $this + local.get $start + i32.const 1 + i32.shl + i32.add + local.get $len|19 + i32.const 1 + i32.shl + memory.copy + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + local.get $out|20 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=24 + local.get $21 + call $~lib/array/Array<~lib/string/String>#push + drop + else + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + i32.const 2432 + call $~lib/array/Array<~lib/string/String>#push + drop + end + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + ) + (func $~lib/string/String#split@varargs (param $this i32) (param $separator i32) (param $limit i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $separator + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $limit + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $separator + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $limit + call $~lib/string/String#split + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/array/Array<~lib/string/String>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<~lib/string/String>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.ge_u + if + i32.const 368 + i32.const 5712 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 5808 + i32.const 5712 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String#substr (param $this i32) (param $start i32) (param $length i32) (result i32) + (local $intStart i32) + (local $end i32) + (local $len i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $size i32) + (local $out i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $start + local.set $intStart + local.get $length + local.set $end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/string/String#get:length + local.set $len + local.get $intStart + i32.const 0 + i32.lt_s + if + local.get $len + local.get $intStart + i32.add + local.tee $6 + i32.const 0 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + local.set $intStart + end + local.get $end + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.tee $10 + local.get $len + local.get $intStart + i32.sub + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $size + local.get $size + i32.const 0 + i32.le_s + if + i32.const 2432 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $intStart + i32.const 1 + i32.shl + i32.add + local.get $size + memory.copy + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/string/String#padEnd (param $this i32) (param $length i32) (param $pad i32) (result i32) + (local $thisSize i32) + (local $targetSize i32) + (local $padSize i32) + (local $appendSize i32) + (local $out i32) + (local $repeatCount i32) + (local $restBase i32) + (local $restSize i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $length + i32.const 1 + i32.shl + local.set $targetSize + local.get $pad + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $padSize + local.get $targetSize + local.get $thisSize + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $padSize + i32.eqz + end + if + local.get $this + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $targetSize + local.get $thisSize + i32.sub + local.set $appendSize + global.get $~lib/memory/__stack_pointer + local.get $targetSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $appendSize + local.get $padSize + i32.gt_u + if + local.get $appendSize + i32.const 2 + i32.sub + local.get $padSize + i32.div_u + local.set $repeatCount + local.get $repeatCount + local.get $padSize + i32.mul + local.set $restBase + local.get $appendSize + local.get $restBase + i32.sub + local.set $restSize + local.get $out + local.get $thisSize + i32.add + local.get $pad + local.get $padSize + local.get $repeatCount + call $~lib/memory/memory.repeat + local.get $out + local.get $thisSize + i32.add + local.get $restBase + i32.add + local.get $pad + local.get $restSize + memory.copy + else + local.get $out + local.get $thisSize + i32.add + local.get $pad + local.get $appendSize + memory.copy + end + local.get $out + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/date/Date.fromString (param $dateTimeString i32) (result i32) + (local $hour i32) + (local $min i32) + (local $sec i32) + (local $ms i32) + (local $offsetMs i32) + (local $dateString i32) + (local $posT i32) + (local $timeString i32) + (local $i i32) + (local $c i32) + (local $posColon i32) + (local $value i32) + (local $radix i32) + (local $offsetHours i32) + (local $value|15 i32) + (local $radix|16 i32) + (local $offsetMinutes i32) + (local $value|18 i32) + (local $radix|19 i32) + (local $offsetHours|20 i32) + (local $timeParts i32) + (local $len i32) + (local $value|23 i32) + (local $radix|24 i32) + (local $value|25 i32) + (local $radix|26 i32) + (local $secAndFrac i32) + (local $posDot i32) + (local $value|29 i32) + (local $radix|30 i32) + (local $value|31 i32) + (local $radix|32 i32) + (local $value|33 i32) + (local $radix|34 i32) + (local $parts i32) + (local $value|36 i32) + (local $radix|37 i32) + (local $year i32) + (local $month i32) + (local $day i32) + (local $len|41 i32) + (local $value|42 i32) + (local $radix|43 i32) + (local $value|44 i32) + (local $radix|45 i32) + (local $46 i32) + global.get $~lib/memory/__stack_pointer + i32.const 72 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 72 + memory.fill + local.get $dateTimeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + call $~lib/string/String#get:length + i32.eqz + if + i32.const 32 + i32.const 80 + i32.const 50 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $hour + i32.const 0 + local.set $min + i32.const 0 + local.set $sec + i32.const 0 + local.set $ms + i32.const 0 + local.set $offsetMs + global.get $~lib/memory/__stack_pointer + local.get $dateTimeString + local.tee $dateString + i32.store offset=4 + local.get $dateTimeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 2464 + i32.const 0 + call $~lib/string/String#indexOf + local.set $posT + local.get $posT + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $dateTimeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 0 + local.get $posT + call $~lib/string/String#substring + local.tee $dateString + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $dateTimeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $posT + i32.const 1 + i32.add + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#substring@varargs + local.tee $timeString + i32.store offset=8 + local.get $timeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + call $~lib/string/String#get:length + i32.const 1 + i32.sub + local.set $i + block $for-break0 + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $timeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $i + call $~lib/string/String#charCodeAt + local.set $c + local.get $c + i32.const 90 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $timeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 0 + local.get $i + call $~lib/string/String#substring + local.tee $timeString + i32.store offset=8 + br $for-break0 + else + local.get $c + i32.const 43 + i32.eq + if (result i32) + i32.const 1 + else + local.get $c + i32.const 45 + i32.eq + end + if + local.get $i + local.get $timeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + call $~lib/string/String#get:length + i32.const 1 + i32.sub + i32.eq + if + i32.const 32 + i32.const 80 + i32.const 74 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $timeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 2496 + local.get $i + i32.const 1 + i32.add + call $~lib/string/String#indexOf + local.set $posColon + local.get $posColon + i32.const -1 + i32.xor + if + block $~lib/builtins/i32.parse|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $timeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $i + i32.const 1 + i32.add + local.get $posColon + call $~lib/string/String#substring + local.tee $value + i32.store offset=12 + i32.const 0 + local.set $radix + local.get $value + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $radix + call $~lib/util/string/strtol + br $~lib/builtins/i32.parse|inlined.0 + end + local.set $offsetHours + block $~lib/builtins/i32.parse|inlined.1 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $timeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $posColon + i32.const 1 + i32.add + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#substring@varargs + local.tee $value|15 + i32.store offset=16 + i32.const 0 + local.set $radix|16 + local.get $value|15 + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $radix|16 + call $~lib/util/string/strtol + br $~lib/builtins/i32.parse|inlined.1 + end + local.set $offsetMinutes + local.get $offsetHours + i32.const 60 + i32.mul + local.get $offsetMinutes + i32.add + i32.const 60000 + i32.mul + local.set $offsetMs + else + block $~lib/builtins/i32.parse|inlined.2 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $timeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $i + i32.const 1 + i32.add + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#substring@varargs + local.tee $value|18 + i32.store offset=20 + i32.const 0 + local.set $radix|19 + local.get $value|18 + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $radix|19 + call $~lib/util/string/strtol + br $~lib/builtins/i32.parse|inlined.2 + end + local.set $offsetHours|20 + local.get $offsetHours|20 + i32.const 3600000 + i32.mul + local.set $offsetMs + end + local.get $c + i32.const 45 + i32.eq + if + i32.const 0 + local.get $offsetMs + i32.sub + local.set $offsetMs + end + global.get $~lib/memory/__stack_pointer + local.get $timeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 0 + local.get $i + call $~lib/string/String#substring + local.tee $timeString + i32.store offset=8 + br $for-break0 + end + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + end + global.get $~lib/memory/__stack_pointer + local.get $timeString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 2496 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $timeParts + i32.store offset=24 + local.get $timeParts + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $len + local.get $len + i32.const 1 + i32.le_s + if + i32.const 32 + i32.const 80 + i32.const 96 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + block $~lib/builtins/i32.parse|inlined.3 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $timeParts + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $value|23 + i32.store offset=28 + i32.const 0 + local.set $radix|24 + local.get $value|23 + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $radix|24 + call $~lib/util/string/strtol + br $~lib/builtins/i32.parse|inlined.3 + end + local.set $hour + block $~lib/builtins/i32.parse|inlined.4 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $timeParts + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $value|25 + i32.store offset=32 + i32.const 0 + local.set $radix|26 + local.get $value|25 + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $radix|26 + call $~lib/util/string/strtol + br $~lib/builtins/i32.parse|inlined.4 + end + local.set $min + local.get $len + i32.const 3 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $timeParts + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $secAndFrac + i32.store offset=36 + local.get $secAndFrac + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 2528 + i32.const 0 + call $~lib/string/String#indexOf + local.set $posDot + local.get $posDot + i32.const -1 + i32.xor + if + block $~lib/builtins/i32.parse|inlined.5 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $secAndFrac + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 0 + local.get $posDot + call $~lib/string/String#substring + local.tee $value|29 + i32.store offset=40 + i32.const 0 + local.set $radix|30 + local.get $value|29 + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $radix|30 + call $~lib/util/string/strtol + br $~lib/builtins/i32.parse|inlined.5 + end + local.set $sec + block $~lib/builtins/i32.parse|inlined.6 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $secAndFrac + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store offset=44 + local.get $46 + local.get $posDot + i32.const 1 + i32.add + i32.const 3 + call $~lib/string/String#substr + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 3 + i32.const 848 + call $~lib/string/String#padEnd + local.tee $value|31 + i32.store offset=48 + i32.const 0 + local.set $radix|32 + local.get $value|31 + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $radix|32 + call $~lib/util/string/strtol + br $~lib/builtins/i32.parse|inlined.6 + end + local.set $ms + else + block $~lib/builtins/i32.parse|inlined.7 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $secAndFrac + local.tee $value|33 + i32.store offset=52 + i32.const 0 + local.set $radix|34 + local.get $value|33 + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $radix|34 + call $~lib/util/string/strtol + br $~lib/builtins/i32.parse|inlined.7 + end + local.set $sec + end + end + end + global.get $~lib/memory/__stack_pointer + local.get $dateString + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 592 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $parts + i32.store offset=56 + block $~lib/builtins/i32.parse|inlined.8 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $parts + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $value|36 + i32.store offset=60 + i32.const 0 + local.set $radix|37 + local.get $value|36 + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $radix|37 + call $~lib/util/string/strtol + br $~lib/builtins/i32.parse|inlined.8 + end + local.set $year + i32.const 1 + local.set $month + i32.const 1 + local.set $day + local.get $parts + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $len|41 + local.get $len|41 + i32.const 2 + i32.ge_s + if + block $~lib/builtins/i32.parse|inlined.9 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $parts + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $value|42 + i32.store offset=64 + i32.const 0 + local.set $radix|43 + local.get $value|42 + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $radix|43 + call $~lib/util/string/strtol + br $~lib/builtins/i32.parse|inlined.9 + end + local.set $month + local.get $len|41 + i32.const 3 + i32.ge_s + if + block $~lib/builtins/i32.parse|inlined.10 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $parts + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $value|44 + i32.store offset=68 + i32.const 0 + local.set $radix|45 + local.get $value|44 + local.set $46 + global.get $~lib/memory/__stack_pointer + local.get $46 + i32.store + local.get $46 + local.get $radix|45 + call $~lib/util/string/strtol + br $~lib/builtins/i32.parse|inlined.10 + end + local.set $day + end + end + i32.const 0 + local.get $year + local.get $month + local.get $day + local.get $hour + local.get $min + local.get $sec + local.get $ms + call $~lib/date/epochMillis + local.get $offsetMs + i64.extend_i32_s + i64.sub + call $~lib/date/Date#constructor + local.set $46 + global.get $~lib/memory/__stack_pointer + i32.const 72 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $46 + return + ) + (func $start:std/date + (local $0 i32) + (local $1 i32) + (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 i32) + (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 i64) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i32) + (local $30 i32) + (local $31 i64) + (local $32 i32) + (local $33 i32) + (local $34 i32) + (local $35 i32) + (local $36 i32) + (local $37 i32) + (local $38 i32) + (local $39 i64) + (local $40 i32) + (local $41 i32) + (local $42 i32) + (local $43 i32) + (local $44 i32) + (local $45 i32) + (local $46 i32) + (local $47 i64) + (local $48 i32) + (local $49 i32) + (local $50 i32) + (local $51 i32) + (local $52 i32) + (local $53 i32) + (local $54 i32) + (local $55 i64) + (local $56 i64) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 436 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 436 + memory.fill + block $~lib/date/Date.UTC|inlined.0 (result i64) + i32.const 1970 + local.set $0 + i32.const 0 + local.set $1 + i32.const 1 + local.set $2 + i32.const 0 + local.set $3 + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + i32.const 0 + local.set $6 + local.get $0 + i32.const 0 + i32.ge_s + if (result i32) + local.get $0 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $0 + i32.const 1900 + i32.add + local.set $0 + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.get $2 + local.get $3 + local.get $4 + local.get $5 + local.get $6 + call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 36 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 + br $~lib/date/Date.UTC|inlined.0 + end + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date.UTC|inlined.1 (result i64) + i32.const 1970 + local.set $8 + i32.const 0 + local.set $9 + i32.const 1 + local.set $10 + i32.const 0 + local.set $11 + i32.const 0 + local.set $12 + i32.const 0 + local.set $13 + i32.const 0 + local.set $14 + local.get $8 + i32.const 0 + i32.ge_s + if (result i32) + local.get $8 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $8 + i32.const 1900 + i32.add + local.set $8 + end + local.get $8 + local.get $9 + i32.const 1 + i32.add + local.get $10 + local.get $11 + local.get $12 + local.get $13 + local.get $14 + call $~lib/date/epochMillis + local.set $15 + local.get $15 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 36 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $15 + br $~lib/date/Date.UTC|inlined.1 + end + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date.UTC|inlined.2 (result i64) + i32.const 70 + local.set $16 + i32.const 0 + local.set $17 + i32.const 1 + local.set $18 + i32.const 0 + local.set $19 + i32.const 0 + local.set $20 + i32.const 0 + local.set $21 + i32.const 0 + local.set $22 + local.get $16 + i32.const 0 + i32.ge_s + if (result i32) + local.get $16 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $16 + i32.const 1900 + i32.add + local.set $16 + end + local.get $16 + local.get $17 + i32.const 1 + i32.add + local.get $18 + local.get $19 + local.get $20 + local.get $21 + local.get $22 + call $~lib/date/epochMillis + local.set $23 + local.get $23 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 36 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $23 + br $~lib/date/Date.UTC|inlined.2 + end + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 5 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date.UTC|inlined.3 (result i64) + i32.const 90 + local.set $24 + i32.const 0 + local.set $25 + i32.const 1 + local.set $26 + i32.const 0 + local.set $27 + i32.const 0 + local.set $28 + i32.const 0 + local.set $29 + i32.const 0 + local.set $30 + local.get $24 + i32.const 0 + i32.ge_s + if (result i32) + local.get $24 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $24 + i32.const 1900 + i32.add + local.set $24 + end + local.get $24 + local.get $25 + i32.const 1 + i32.add + local.get $26 + local.get $27 + local.get $28 + local.get $29 + local.get $30 + call $~lib/date/epochMillis + local.set $31 + local.get $31 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 36 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $31 + br $~lib/date/Date.UTC|inlined.3 + end + i64.const 631152000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date.UTC|inlined.4 (result i64) + i32.const -90 + local.set $32 + i32.const 0 + local.set $33 + i32.const 1 + local.set $34 + i32.const 0 + local.set $35 + i32.const 0 + local.set $36 + i32.const 0 + local.set $37 + i32.const 0 + local.set $38 + local.get $32 + i32.const 0 + i32.ge_s + if (result i32) + local.get $32 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $32 + i32.const 1900 + i32.add + local.set $32 + end + local.get $32 + local.get $33 + i32.const 1 + i32.add + local.get $34 + local.get $35 + local.get $36 + local.get $37 + local.get $38 + call $~lib/date/epochMillis + local.set $39 + local.get $39 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 36 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $39 + br $~lib/date/Date.UTC|inlined.4 + end + i64.const -65007360000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 7 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date.UTC|inlined.5 (result i64) + i32.const 2018 + local.set $40 + i32.const 10 + local.set $41 + i32.const 10 + local.set $42 + i32.const 11 + local.set $43 + i32.const 0 + local.set $44 + i32.const 0 + local.set $45 + i32.const 1 + local.set $46 + local.get $40 + i32.const 0 + i32.ge_s + if (result i32) + local.get $40 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $40 + i32.const 1900 + i32.add + local.set $40 + end + local.get $40 + local.get $41 + i32.const 1 + i32.add + local.get $42 + local.get $43 + local.get $44 + local.get $45 + local.get $46 + call $~lib/date/epochMillis + local.set $47 + local.get $47 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 36 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $47 + br $~lib/date/Date.UTC|inlined.5 + end + i64.const 1541847600001 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date.UTC|inlined.6 (result i64) + i32.const 275760 + local.set $48 + i32.const 8 + local.set $49 + i32.const 13 + local.set $50 + i32.const 0 + local.set $51 + i32.const 0 + local.set $52 + i32.const 0 + local.set $53 + i32.const 0 + local.set $54 + local.get $48 + i32.const 0 + i32.ge_s + if (result i32) + local.get $48 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $48 + i32.const 1900 + i32.add + local.set $48 + end + local.get $48 + local.get $49 + i32.const 1 + i32.add + local.get $50 + local.get $51 + local.get $52 + local.get $53 + local.get $54 + call $~lib/date/epochMillis + local.set $55 + local.get $55 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 36 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $55 + br $~lib/date/Date.UTC|inlined.6 + end + i64.const 8640000000000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 464 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i64.const 1541847600001 + local.set $56 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $56 + call $~lib/date/Date#constructor + local.tee $57 + i32.store + block $~lib/date/Date#getTime|inlined.0 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $57 + local.tee $58 + i32.store offset=4 + local.get $58 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.0 + end + local.get $56 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $57 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + local.get $56 + i64.const 1 + i64.add + call $~lib/date/Date#setTime + drop + block $~lib/date/Date#getTime|inlined.1 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $57 + local.tee $59 + i32.store offset=12 + local.get $59 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.1 + end + local.get $56 + i64.const 1 + i64.add + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 20 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 5918283958183706 + call $~lib/date/Date#constructor + local.tee $60 + i32.store offset=16 + block $~lib/date/Date#getUTCFullYear|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $60 + local.tee $61 + i32.store offset=20 + local.get $61 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + br $~lib/date/Date#getUTCFullYear|inlined.0 + end + i32.const 189512 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCMonth|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $60 + local.tee $62 + i32.store offset=24 + local.get $62 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + i32.const 1 + i32.sub + br $~lib/date/Date#getUTCMonth|inlined.0 + end + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDate|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $60 + local.tee $63 + i32.store offset=28 + local.get $63 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + br $~lib/date/Date#getUTCDate|inlined.0 + end + i32.const 14 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $60 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCHours + i32.const 22 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $60 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMinutes + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $60 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCSeconds + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $60 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMilliseconds + i32.const 706 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $64 + i32.store offset=32 + block $~lib/date/Date#getUTCFullYear|inlined.1 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $64 + local.tee $65 + i32.store offset=36 + local.get $65 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + br $~lib/date/Date#getUTCFullYear|inlined.1 + end + i32.const 1973 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCMonth|inlined.1 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $64 + local.tee $66 + i32.store offset=40 + local.get $66 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + i32.const 1 + i32.sub + br $~lib/date/Date#getUTCMonth|inlined.1 + end + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 41 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDate|inlined.1 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $64 + local.tee $67 + i32.store offset=44 + local.get $67 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + br $~lib/date/Date#getUTCDate|inlined.1 + end + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $64 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCHours + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $64 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMinutes + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $64 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCSeconds + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $64 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMilliseconds + i32.const 274 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 399464523963984 + call $~lib/date/Date#constructor + local.tee $68 + i32.store offset=48 + local.get $68 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMilliseconds + i32.const 984 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $68 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 12 + call $~lib/date/Date#setUTCMilliseconds + local.get $68 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMilliseconds + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 54 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $68 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 568 + call $~lib/date/Date#setUTCMilliseconds + local.get $68 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMilliseconds + i32.const 568 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $68 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 0 + call $~lib/date/Date#setUTCMilliseconds + block $~lib/date/Date#getTime|inlined.2 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $68 + local.tee $69 + i32.store offset=52 + local.get $69 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.2 + end + i64.const 399464523963000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $68 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 999 + call $~lib/date/Date#setUTCMilliseconds + block $~lib/date/Date#getTime|inlined.3 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $68 + local.tee $70 + i32.store offset=56 + local.get $70 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.3 + end + i64.const 399464523963999 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $68 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 2000 + call $~lib/date/Date#setUTCMilliseconds + local.get $68 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMilliseconds + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getTime|inlined.4 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $68 + local.tee $71 + i32.store offset=60 + local.get $71 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.4 + end + i64.const 399464523965000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $68 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const -2000 + call $~lib/date/Date#setUTCMilliseconds + local.get $68 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMilliseconds + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getTime|inlined.5 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $68 + local.tee $72 + i32.store offset=64 + local.get $72 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.5 + end + i64.const 399464523963000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $73 + i32.store offset=68 + local.get $73 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCSeconds + i32.const 31 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $73 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 12 + call $~lib/date/Date#setUTCSeconds + local.get $73 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCSeconds + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $73 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 50 + call $~lib/date/Date#setUTCSeconds + local.get $73 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCSeconds + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 78 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $73 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 0 + call $~lib/date/Date#setUTCSeconds + block $~lib/date/Date#getTime|inlined.6 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $73 + local.tee $74 + i32.store offset=72 + local.get $74 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.6 + end + i64.const 372027318300986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $73 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 59 + call $~lib/date/Date#setUTCSeconds + block $~lib/date/Date#getTime|inlined.7 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $73 + local.tee $75 + i32.store offset=76 + local.get $75 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.7 + end + i64.const 372027318359986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $76 + i32.store offset=80 + local.get $76 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMinutes + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $76 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 12 + call $~lib/date/Date#setUTCMinutes + local.get $76 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMinutes + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $76 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 50 + call $~lib/date/Date#setUTCMinutes + local.get $76 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMinutes + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 93 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $76 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 0 + call $~lib/date/Date#setUTCMinutes + block $~lib/date/Date#getTime|inlined.8 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $76 + local.tee $77 + i32.store offset=84 + local.get $77 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.8 + end + i64.const 372027315631986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $76 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 59 + call $~lib/date/Date#setUTCMinutes + block $~lib/date/Date#getTime|inlined.9 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $76 + local.tee $78 + i32.store offset=88 + local.get $78 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.9 + end + i64.const 372027319171986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $79 + i32.store offset=92 + local.get $79 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCHours + i32.const 17 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $79 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 12 + call $~lib/date/Date#setUTCHours + local.get $79 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCHours + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $79 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 2 + call $~lib/date/Date#setUTCHours + local.get $79 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCHours + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $79 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 0 + call $~lib/date/Date#setUTCHours + block $~lib/date/Date#getTime|inlined.10 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $79 + local.tee $80 + i32.store offset=96 + local.get $80 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.10 + end + i64.const 372027257131986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $79 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 23 + call $~lib/date/Date#setUTCHours + block $~lib/date/Date#getTime|inlined.11 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $79 + local.tee $81 + i32.store offset=100 + local.get $81 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.11 + end + i64.const 372027339931986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $82 + i32.store offset=104 + block $~lib/date/Date#getUTCFullYear|inlined.2 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $83 + i32.store offset=108 + local.get $83 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + br $~lib/date/Date#getUTCFullYear|inlined.2 + end + i32.const 1973 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 119 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCMonth|inlined.2 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $84 + i32.store offset=112 + local.get $84 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + i32.const 1 + i32.sub + br $~lib/date/Date#getUTCMonth|inlined.2 + end + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 12 + call $~lib/date/Date#setUTCDate + block $~lib/date/Date#getUTCDate|inlined.2 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $85 + i32.store offset=116 + local.get $85 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + br $~lib/date/Date#getUTCDate|inlined.2 + end + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 2 + call $~lib/date/Date#setUTCDate + block $~lib/date/Date#getUTCDate|inlined.3 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $86 + i32.store offset=120 + local.get $86 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + br $~lib/date/Date#getUTCDate|inlined.3 + end + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 30 + call $~lib/date/Date#setUTCDate + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/date/Date#setUTCMonth@varargs + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 31 + call $~lib/date/Date#setUTCDate + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 2024 + call $~lib/date/Date#setUTCFullYear + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/date/Date#setUTCMonth@varargs + block $~lib/date/Date#getUTCMonth|inlined.3 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $87 + i32.store offset=124 + local.get $87 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + i32.const 1 + i32.sub + br $~lib/date/Date#getUTCMonth|inlined.3 + end + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 141 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 29 + call $~lib/date/Date#setUTCDate + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/date/Date#setUTCMonth@varargs + block $~lib/date/Date#getTime|inlined.12 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $88 + i32.store offset=128 + local.get $88 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.12 + end + i64.const 1709168591274 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 146 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCMonth|inlined.4 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $89 + i32.store offset=132 + local.get $89 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + i32.const 1 + i32.sub + br $~lib/date/Date#getUTCMonth|inlined.4 + end + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDate|inlined.4 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $90 + i32.store offset=136 + local.get $90 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + br $~lib/date/Date#getUTCDate|inlined.4 + end + i32.const 29 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 148 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMinutes + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCSeconds + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMilliseconds + i32.const 274 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 151 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1362106799999 + call $~lib/date/Date#constructor + local.tee $82 + i32.store offset=104 + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 20 + call $~lib/date/Date#setUTCDate + block $~lib/date/Date#getTime|inlined.13 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $91 + i32.store offset=140 + local.get $91 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.13 + end + i64.const 1363748399999 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 1 + call $~lib/date/Date#setUTCDate + block $~lib/date/Date#getTime|inlined.14 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $92 + i32.store offset=144 + local.get $92 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.14 + end + i64.const 1362106799999 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 157 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 1000 + call $~lib/date/Date#setUTCMilliseconds + block $~lib/date/Date#getTime|inlined.15 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $93 + i32.store offset=148 + local.get $93 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.15 + end + i64.const 1362106800000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 160 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 60 + i32.const 60 + i32.mul + i32.const 1000 + i32.mul + call $~lib/date/Date#setUTCMilliseconds + block $~lib/date/Date#getTime|inlined.16 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $94 + i32.store offset=152 + local.get $94 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.16 + end + i64.const 1362110400000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 163 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 60 + i32.const 60 + i32.mul + i32.const 1000 + i32.mul + i32.const 1 + i32.add + call $~lib/date/Date#setUTCMilliseconds + block $~lib/date/Date#getTime|inlined.17 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $95 + i32.store offset=156 + local.get $95 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.17 + end + i64.const 1362114000001 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 60 + i32.const 60 + i32.mul + i32.const 1000 + i32.mul + i32.const 1 + i32.add + call $~lib/date/Date#setUTCMilliseconds + block $~lib/date/Date#getTime|inlined.18 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $96 + i32.store offset=160 + local.get $96 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.18 + end + i64.const 1362117600001 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 169 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $82 + i32.store offset=104 + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const -2208 + call $~lib/date/Date#setUTCDate + block $~lib/date/Date#getTime|inlined.19 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $97 + i32.store offset=164 + local.get $97 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.19 + end + i64.const -67301808726 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 173 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $82 + i32.store offset=104 + local.get $82 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 2208 + call $~lib/date/Date#setUTCDate + block $~lib/date/Date#getTime|inlined.20 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $82 + local.tee $98 + i32.store offset=168 + local.get $98 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.20 + end + i64.const 314240591274 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 177 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDay|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1467763200000 + call $~lib/date/Date#constructor + local.tee $99 + i32.store offset=172 + local.get $99 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + local.get $99 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + local.get $99 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + call $~lib/date/dayOfWeek + br $~lib/date/Date#getUTCDay|inlined.0 + end + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDay|inlined.1 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1467763200000 + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.tee $100 + i32.store offset=176 + local.get $100 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + local.get $100 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + local.get $100 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + call $~lib/date/dayOfWeek + br $~lib/date/Date#getUTCDay|inlined.1 + end + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 188 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDay|inlined.2 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1467763200000 + i64.const 86400000 + i64.add + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.tee $101 + i32.store offset=180 + local.get $101 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + local.get $101 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + local.get $101 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + call $~lib/date/dayOfWeek + br $~lib/date/Date#getUTCDay|inlined.2 + end + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 189 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDay|inlined.3 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1467763200000 + i64.const 86400000 + i64.add + call $~lib/date/Date#constructor + local.tee $102 + i32.store offset=184 + local.get $102 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + local.get $102 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + local.get $102 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + call $~lib/date/dayOfWeek + br $~lib/date/Date#getUTCDay|inlined.3 + end + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 190 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDay|inlined.4 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1468022400000 + call $~lib/date/Date#constructor + local.tee $103 + i32.store offset=188 + local.get $103 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + local.get $103 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + local.get $103 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + call $~lib/date/dayOfWeek + br $~lib/date/Date#getUTCDay|inlined.4 + end + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 192 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDay|inlined.5 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1468022400000 + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.tee $104 + i32.store offset=192 + local.get $104 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + local.get $104 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + local.get $104 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + call $~lib/date/dayOfWeek + br $~lib/date/Date#getUTCDay|inlined.5 + end + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDay|inlined.6 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1468022400000 + i64.const 86400000 + i64.add + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.tee $105 + i32.store offset=196 + local.get $105 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + local.get $105 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + local.get $105 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + call $~lib/date/dayOfWeek + br $~lib/date/Date#getUTCDay|inlined.6 + end + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 194 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDay|inlined.7 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1468022400000 + i64.const 86400000 + i64.add + call $~lib/date/Date#constructor + local.tee $106 + i32.store offset=200 + local.get $106 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + local.get $106 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + local.get $106 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + call $~lib/date/dayOfWeek + br $~lib/date/Date#getUTCDay|inlined.7 + end + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 195 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 7899943856218720 + call $~lib/date/Date#constructor + local.tee $107 + i32.store offset=204 + block $~lib/date/Date#getUTCMonth|inlined.5 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $107 + local.tee $108 + i32.store offset=208 + local.get $108 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + i32.const 1 + i32.sub + br $~lib/date/Date#getUTCMonth|inlined.5 + end + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 201 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $107 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 10 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/date/Date#setUTCMonth@varargs + block $~lib/date/Date#getUTCMonth|inlined.6 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $107 + local.tee $109 + i32.store offset=212 + local.get $109 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + i32.const 1 + i32.sub + br $~lib/date/Date#getUTCMonth|inlined.6 + end + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 203 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $107 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 2 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/date/Date#setUTCMonth@varargs + block $~lib/date/Date#getUTCMonth|inlined.7 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $107 + local.tee $110 + i32.store offset=216 + local.get $110 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + i32.const 1 + i32.sub + br $~lib/date/Date#getUTCMonth|inlined.7 + end + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 205 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getTime|inlined.21 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $107 + local.tee $111 + i32.store offset=220 + local.get $111 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.21 + end + i64.const 7899941177818720 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 206 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $107 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/date/Date#setUTCMonth@varargs + block $~lib/date/Date#getTime|inlined.22 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $107 + local.tee $112 + i32.store offset=224 + local.get $112 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.22 + end + i64.const 7899936080218720 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 209 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $107 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/date/Date#setUTCMonth@varargs + block $~lib/date/Date#getTime|inlined.23 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $107 + local.tee $113 + i32.store offset=228 + local.get $113 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.23 + end + i64.const 7899964937818720 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 211 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $107 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/date/Date#setUTCMonth@varargs + block $~lib/date/Date#getUTCMonth|inlined.8 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $107 + local.tee $114 + i32.store offset=232 + local.get $114 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + i32.const 1 + i32.sub + br $~lib/date/Date#getUTCMonth|inlined.8 + end + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 215 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getTime|inlined.24 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $107 + local.tee $115 + i32.store offset=236 + local.get $115 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.24 + end + i64.const 7899933401818720 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 216 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $107 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 12 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/date/Date#setUTCMonth@varargs + block $~lib/date/Date#getUTCMonth|inlined.9 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $107 + local.tee $116 + i32.store offset=240 + local.get $116 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + i32.const 1 + i32.sub + br $~lib/date/Date#getUTCMonth|inlined.9 + end + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 218 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getTime|inlined.25 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $107 + local.tee $117 + i32.store offset=244 + local.get $117 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.25 + end + i64.const 7899936080218720 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 219 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 7941202527925698 + call $~lib/date/Date#constructor + local.tee $118 + i32.store offset=248 + block $~lib/date/Date#getUTCFullYear|inlined.3 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $118 + local.tee $119 + i32.store offset=252 + local.get $119 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + br $~lib/date/Date#getUTCFullYear|inlined.3 + end + i32.const 253616 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $118 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 1976 + call $~lib/date/Date#setUTCFullYear + block $~lib/date/Date#getUTCFullYear|inlined.4 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $118 + local.tee $120 + i32.store offset=256 + local.get $120 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + br $~lib/date/Date#getUTCFullYear|inlined.4 + end + i32.const 1976 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 227 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $118 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 20212 + call $~lib/date/Date#setUTCFullYear + block $~lib/date/Date#getUTCFullYear|inlined.5 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $118 + local.tee $121 + i32.store offset=260 + local.get $121 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + br $~lib/date/Date#getUTCFullYear|inlined.5 + end + i32.const 20212 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 229 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $118 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 71 + call $~lib/date/Date#setUTCFullYear + block $~lib/date/Date#getUTCFullYear|inlined.6 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $118 + local.tee $122 + i32.store offset=264 + local.get $122 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + br $~lib/date/Date#getUTCFullYear|inlined.6 + end + i32.const 71 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 231 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62167219200000 + call $~lib/date/Date#constructor + local.tee $123 + i32.store offset=268 + local.get $123 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toISOString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 2672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62167219200000 + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.tee $123 + i32.store offset=268 + local.get $123 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toISOString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 2752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 239 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62127219200000 + call $~lib/date/Date#constructor + local.tee $123 + i32.store offset=268 + local.get $123 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toISOString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 2832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 241 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1231231231020 + call $~lib/date/Date#constructor + local.tee $123 + i32.store offset=268 + local.get $123 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toISOString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 2912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 243 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1231231231456 + call $~lib/date/Date#constructor + local.tee $123 + i32.store offset=268 + local.get $123 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toISOString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 2992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 245 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 322331231231020 + call $~lib/date/Date#constructor + local.tee $123 + i32.store offset=268 + local.get $123 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toISOString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 3072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 247 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 253402300799999 + call $~lib/date/Date#constructor + local.tee $123 + i32.store offset=268 + local.get $123 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toISOString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 3152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 249 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 253402300800000 + call $~lib/date/Date#constructor + local.tee $123 + i32.store offset=268 + local.get $123 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toISOString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 3232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 251 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62847038769226 + call $~lib/date/Date#constructor + local.tee $123 + i32.store offset=268 + local.get $123 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toISOString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 3312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 253 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -61536067200000 + call $~lib/date/Date#constructor + local.tee $124 + i32.store offset=276 + local.get $124 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toDateString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 4240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 259 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1580601600000 + call $~lib/date/Date#constructor + local.tee $124 + i32.store offset=276 + local.get $124 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toDateString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 4304 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 261 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62183116800000 + call $~lib/date/Date#constructor + local.tee $124 + i32.store offset=276 + local.get $124 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toDateString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 4368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 264 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -61536067200000 + call $~lib/date/Date#constructor + local.tee $125 + i32.store offset=280 + local.get $125 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toTimeString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 4480 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 270 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 253402300799999 + call $~lib/date/Date#constructor + local.tee $125 + i32.store offset=280 + local.get $125 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toTimeString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 4528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 273 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -61536067200000 + call $~lib/date/Date#constructor + local.tee $126 + i32.store offset=284 + local.get $126 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toUTCString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 5424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 279 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1580741613467 + call $~lib/date/Date#constructor + local.tee $126 + i32.store offset=284 + local.get $126 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toUTCString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 5504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 281 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62183116800000 + call $~lib/date/Date#constructor + local.tee $126 + i32.store offset=284 + local.get $126 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toUTCString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 5584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 284 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5664 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.26 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $128 + i32.store offset=292 + local.get $128 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.26 + end + i64.const 192067200000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 291 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5936 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.27 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $129 + i32.store offset=296 + local.get $129 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.27 + end + i64.const 192067200000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 293 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5984 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.28 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $130 + i32.store offset=300 + local.get $130 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.28 + end + i64.const 11860387200000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 295 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6032 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.29 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $131 + i32.store offset=304 + local.get $131 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.29 + end + i64.const 192112496000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 299 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6096 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.30 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $132 + i32.store offset=308 + local.get $132 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.30 + end + i64.const 192112496456 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 303 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6176 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.31 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $133 + i32.store offset=312 + local.get $133 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.31 + end + i64.const 192112496456 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 307 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6256 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.32 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $134 + i32.store offset=316 + local.get $134 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.32 + end + i64.const 192141296456 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 311 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6336 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.33 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $135 + i32.store offset=320 + local.get $135 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.33 + end + i64.const 192092696456 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 315 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6416 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.34 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $136 + i32.store offset=324 + local.get $136 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.34 + end + i64.const 192112496450 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 319 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6480 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.35 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $137 + i32.store offset=328 + local.get $137 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.35 + end + i64.const 192112496450 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6560 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.36 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $138 + i32.store offset=332 + local.get $138 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.36 + end + i64.const 192112496450 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 327 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6640 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.37 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $139 + i32.store offset=336 + local.get $139 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.37 + end + i64.const 192112496456 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 331 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6720 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.38 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $140 + i32.store offset=340 + local.get $140 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.38 + end + i64.const 192112496456 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 335 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6800 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.39 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $141 + i32.store offset=344 + local.get $141 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.39 + end + i64.const 192112496456 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 339 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6896 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.40 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $142 + i32.store offset=348 + local.get $142 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.40 + end + i64.const -62167219200000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 342 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6928 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.41 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $143 + i32.store offset=352 + local.get $143 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.41 + end + i64.const -62135596800000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6960 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.42 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $144 + i32.store offset=356 + local.get $144 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.42 + end + i64.const 189302400000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 348 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6992 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.43 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $145 + i32.store offset=360 + local.get $145 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.43 + end + i64.const 191980800000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 351 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5664 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.44 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $146 + i32.store offset=364 + local.get $146 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.44 + end + i64.const 192067200000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 354 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7040 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.45 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $147 + i32.store offset=368 + local.get $147 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.45 + end + i64.const 192112440000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 357 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6032 + call $~lib/date/Date.fromString + local.tee $127 + i32.store offset=288 + block $~lib/date/Date#getTime|inlined.46 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $127 + local.tee $148 + i32.store offset=372 + local.get $148 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.46 + end + i64.const 192112496000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 360 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -8640000000000000 + call $~lib/date/Date#constructor + local.tee $149 + i32.store offset=376 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 8640000000000000 + call $~lib/date/Date#constructor + local.tee $150 + i32.store offset=380 + block $~lib/date/Date#getTime|inlined.47 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $149 + local.tee $151 + i32.store offset=384 + local.get $151 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.47 + end + i64.const -8640000000000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 378 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getTime|inlined.48 (result i64) + global.get $~lib/memory/__stack_pointer + local.get $150 + local.tee $152 + i32.store offset=388 + local.get $152 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:epochMillis + br $~lib/date/Date#getTime|inlined.48 + end + i64.const 8640000000000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 379 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCFullYear|inlined.7 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $149 + local.tee $153 + i32.store offset=392 + local.get $153 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + br $~lib/date/Date#getUTCFullYear|inlined.7 + end + i32.const -271821 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 381 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCFullYear|inlined.8 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $150 + local.tee $154 + i32.store offset=396 + local.get $154 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + br $~lib/date/Date#getUTCFullYear|inlined.8 + end + i32.const 275760 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 382 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCMonth|inlined.10 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $149 + local.tee $155 + i32.store offset=400 + local.get $155 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + i32.const 1 + i32.sub + br $~lib/date/Date#getUTCMonth|inlined.10 + end + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 384 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCMonth|inlined.11 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $150 + local.tee $156 + i32.store offset=404 + local.get $156 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + i32.const 1 + i32.sub + br $~lib/date/Date#getUTCMonth|inlined.11 + end + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 385 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDate|inlined.5 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $149 + local.tee $157 + i32.store offset=408 + local.get $157 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + br $~lib/date/Date#getUTCDate|inlined.5 + end + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 387 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDate|inlined.6 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $150 + local.tee $158 + i32.store offset=412 + local.get $158 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + br $~lib/date/Date#getUTCDate|inlined.6 + end + i32.const 13 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $149 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toISOString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 7104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $150 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toISOString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 7184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 391 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 8640000000000000 + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.tee $159 + i32.store offset=416 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -8640000000000000 + i64.const 1 + i64.add + call $~lib/date/Date#constructor + local.tee $160 + i32.store offset=420 + block $~lib/date/Date#getUTCFullYear|inlined.9 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $160 + local.tee $161 + i32.store offset=424 + local.get $161 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:year + br $~lib/date/Date#getUTCFullYear|inlined.9 + end + i32.const -271821 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 396 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCMonth|inlined.12 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $160 + local.tee $162 + i32.store offset=428 + local.get $162 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:month + i32.const 1 + i32.sub + br $~lib/date/Date#getUTCMonth|inlined.12 + end + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 397 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $~lib/date/Date#getUTCDate|inlined.7 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $160 + local.tee $163 + i32.store offset=432 + local.get $163 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#get:day + br $~lib/date/Date#getUTCDate|inlined.7 + end + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 398 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $160 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCHours + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 399 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $160 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMinutes + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 400 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $160 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCSeconds + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 401 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $160 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + call $~lib/date/Date#getUTCMilliseconds + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 402 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $159 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toISOString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 7264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 404 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $160 + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=272 + local.get $164 + call $~lib/date/Date#toISOString + local.set $164 + global.get $~lib/memory/__stack_pointer + local.get $164 + i32.store offset=8 + local.get $164 + i32.const 7344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 405 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 436 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i32) + (local $offset|11 i32) + (local $val32 i32) + (local $decimals|13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 656 + i32.const 784 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 848 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + local.get $value + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + i64.extend_i32_u + local.get $offset|11 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.set $val32 + local.get $val32 + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $val32 + i64.extend_i32_u + local.get $decimals|13 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) +) diff --git a/tests/compiler/std/date.json b/tests/compiler/std/date.json index b1da366ff4..d89aa6d3b8 100644 --- a/tests/compiler/std/date.json +++ b/tests/compiler/std/date.json @@ -1,5 +1,5 @@ { "asc_flags": [ - "--runtime none" + "--exportStart", "_start" ] -} \ No newline at end of file +} diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat deleted file mode 100644 index fbe749fb7e..0000000000 --- a/tests/compiler/std/date.optimized.wat +++ /dev/null @@ -1,181 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_f64 (func (result f64))) - (type $i32_i32_i32_i32_i32_i32_f64_=>_f64 (func (param i32 i32 i32 i32 i32 i32 f64) (result f64))) - (import "Date" "UTC" (func $~lib/bindings/Date/UTC (param i32 i32 i32 i32 i32 i32 f64) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "Date" "now" (func $~lib/bindings/Date/now (result f64))) - (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s") - (global $std/date/creationTime (mut i64) (i64.const 0)) - (global $std/date/date (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $start:std/date - (local $0 i32) - (local $1 i32) - (local $2 i64) - i32.const 1970 - i32.const 0 - i32.const 1 - i32.const 0 - i32.const 0 - i32.const 0 - f64.const 0 - call $~lib/bindings/Date/UTC - i64.trunc_f64_s - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1970 - i32.const 0 - i32.const 1 - i32.const 0 - i32.const 0 - i32.const 0 - f64.const 0 - call $~lib/bindings/Date/UTC - i64.trunc_f64_s - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2018 - i32.const 10 - i32.const 10 - i32.const 11 - i32.const 0 - i32.const 0 - f64.const 1 - call $~lib/bindings/Date/UTC - i64.trunc_f64_s - global.set $std/date/creationTime - global.get $std/date/creationTime - i64.const 1541847600001 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/bindings/Date/now - i64.trunc_f64_s - global.get $std/date/creationTime - i64.le_s - if - i32.const 0 - i32.const 1040 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/date/creationTime - local.set $2 - i32.const 1104 - memory.size - local.tee $1 - i32.const 16 - i32.shl - local.tee $0 - i32.gt_u - if - local.get $1 - i32.const 66639 - local.get $0 - i32.sub - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $1 - local.get $0 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - i32.const 1072 - i32.const 16 - i32.store - i32.const 1076 - i32.const 1 - i32.store - i32.const 1080 - i32.const 3 - i32.store - i32.const 1084 - i32.const 8 - i32.store - i32.const 1088 - i64.const 0 - i64.store - i32.const 1088 - local.get $2 - i64.store - i32.const 1088 - global.set $std/date/date - global.get $std/date/creationTime - i32.const 1088 - i64.load - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/date/date - global.get $std/date/creationTime - i64.const 1 - i64.add - i64.store - global.get $std/date/date - i64.load - global.get $std/date/creationTime - i64.const 1 - i64.add - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/date - ) -) diff --git a/tests/compiler/std/date.release.wat b/tests/compiler/std/date.release.wat new file mode 100644 index 0000000000..d97db8a353 --- /dev/null +++ b/tests/compiler/std/date.release.wat @@ -0,0 +1,10636 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func)) + (type $4 (func (param i32))) + (type $5 (func (param i32 i32 i32) (result i32))) + (type $6 (func (param i64) (result i32))) + (type $7 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i64))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i32 i32 i64) (result i64))) + (type $12 (func (param i32 i32 i32))) + (type $13 (func (param i32 i32 i32 i32) (result i32))) + (type $14 (func (param i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/date/_day (mut i32) (i32.const 0)) + (global $~lib/date/_month (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 41236)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\18\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00D\00a\00t\00e") + (data $1 (i32.const 1084) ",") + (data $1.1 (i32.const 1096) "\02\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s") + (data $2 (i32.const 1132) ",") + (data $2.1 (i32.const 1144) "\02\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s") + (data $3 (i32.const 1180) "<") + (data $3.1 (i32.const 1192) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $4 (i32.const 1244) "<") + (data $4.1 (i32.const 1256) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $8 (i32.const 1436) ",") + (data $8.1 (i32.const 1448) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $10 (i32.const 1516) "<") + (data $10.1 (i32.const 1528) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $11 (i32.const 1581) "\03\02\05\00\03\05\01\04\06\02\04") + (data $12 (i32.const 1596) "\1c") + (data $12.1 (i32.const 1608) "\02\00\00\00\02\00\00\00-") + (data $13 (i32.const 1628) "\1c") + (data $13.1 (i32.const 1640) "\02\00\00\00\02\00\00\00+") + (data $14 (i32.const 1660) "|") + (data $14.1 (i32.const 1672) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $15 (i32.const 1788) "<") + (data $15.1 (i32.const 1800) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $16 (i32.const 1852) "\1c") + (data $16.1 (i32.const 1864) "\02\00\00\00\02\00\00\000") + (data $17 (i32.const 1884) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $18 (i32.const 2284) "\1c\04") + (data $18.1 (i32.const 2296) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $19 (i32.const 3340) "\\") + (data $19.1 (i32.const 3352) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $20 (i32.const 3436) "\1c") + (data $20.1 (i32.const 3448) "\02") + (data $21 (i32.const 3468) "\1c") + (data $21.1 (i32.const 3480) "\02\00\00\00\02\00\00\00T") + (data $22 (i32.const 3500) "\1c") + (data $22.1 (i32.const 3512) "\02\00\00\00\02\00\00\00:") + (data $23 (i32.const 3532) "\1c") + (data $23.1 (i32.const 3544) "\02\00\00\00\02\00\00\00.") + (data $24 (i32.const 3564) "\1c") + (data $24.1 (i32.const 3576) "\02\00\00\00\02\00\00\00Z") + (data $25 (i32.const 3596) "L\00\00\00\03\00\00\00\00\00\00\00\05\00\00\008\00\00\00\00\00\00\00P\06\00\00\00\00\00\00P\06\00\00\00\00\00\00\a0\r\00\00\00\00\00\00\c0\r\00\00\00\00\00\00\c0\r\00\00\00\00\00\00\e0\r\00\00\00\00\00\00\00\0e") + (data $26 (i32.const 3676) "L") + (data $26.1 (i32.const 3688) "\02\00\00\000\00\00\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data $27 (i32.const 3756) "L") + (data $27.1 (i32.const 3768) "\02\00\00\006\00\00\00-\000\000\000\000\000\001\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data $28 (i32.const 3836) "L") + (data $28.1 (i32.const 3848) "\02\00\00\000\00\00\000\000\000\001\00-\000\004\00-\000\007\00T\002\003\00:\000\006\00:\004\000\00.\000\000\000\00Z") + (data $29 (i32.const 3916) "L") + (data $29.1 (i32.const 3928) "\02\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z") + (data $30 (i32.const 3996) "L") + (data $30.1 (i32.const 4008) "\02\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z") + (data $31 (i32.const 4076) "L") + (data $31.1 (i32.const 4088) "\02\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z") + (data $32 (i32.const 4156) "L") + (data $32.1 (i32.const 4168) "\02\00\00\000\00\00\009\009\009\009\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data $33 (i32.const 4236) "L") + (data $33.1 (i32.const 4248) "\02\00\00\006\00\00\00+\000\001\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data $34 (i32.const 4316) "L") + (data $34.1 (i32.const 4328) "\02\00\00\006\00\00\00-\000\000\000\000\002\002\00-\000\006\00-\001\006\00T\001\007\00:\001\003\00:\005\000\00.\007\007\004\00Z") + (data $35 (i32.const 4396) "\1c") + (data $35.1 (i32.const 4408) "\02\00\00\00\08\00\00\00S\00u\00n\00 ") + (data $36 (i32.const 4428) "\1c") + (data $36.1 (i32.const 4440) "\02\00\00\00\08\00\00\00M\00o\00n\00 ") + (data $37 (i32.const 4460) "\1c") + (data $37.1 (i32.const 4472) "\02\00\00\00\08\00\00\00T\00u\00e\00 ") + (data $38 (i32.const 4492) "\1c") + (data $38.1 (i32.const 4504) "\02\00\00\00\08\00\00\00W\00e\00d\00 ") + (data $39 (i32.const 4524) "\1c") + (data $39.1 (i32.const 4536) "\02\00\00\00\08\00\00\00T\00h\00u\00 ") + (data $40 (i32.const 4556) "\1c") + (data $40.1 (i32.const 4568) "\02\00\00\00\08\00\00\00F\00r\00i\00 ") + (data $41 (i32.const 4588) "\1c") + (data $41.1 (i32.const 4600) "\02\00\00\00\08\00\00\00S\00a\00t\00 ") + (data $42 (i32.const 4620) ",") + (data $42.1 (i32.const 4632) "\05\00\00\00\1c\00\00\00@\11\00\00`\11\00\00\80\11\00\00\a0\11\00\00\c0\11\00\00\e0\11\00\00\00\12") + (data $43 (i32.const 4668) "\1c") + (data $43.1 (i32.const 4680) "\02\00\00\00\08\00\00\00J\00a\00n\00 ") + (data $44 (i32.const 4700) "\1c") + (data $44.1 (i32.const 4712) "\02\00\00\00\08\00\00\00F\00e\00b\00 ") + (data $45 (i32.const 4732) "\1c") + (data $45.1 (i32.const 4744) "\02\00\00\00\08\00\00\00M\00a\00r\00 ") + (data $46 (i32.const 4764) "\1c") + (data $46.1 (i32.const 4776) "\02\00\00\00\08\00\00\00A\00p\00r\00 ") + (data $47 (i32.const 4796) "\1c") + (data $47.1 (i32.const 4808) "\02\00\00\00\08\00\00\00M\00a\00y\00 ") + (data $48 (i32.const 4828) "\1c") + (data $48.1 (i32.const 4840) "\02\00\00\00\08\00\00\00J\00u\00n\00 ") + (data $49 (i32.const 4860) "\1c") + (data $49.1 (i32.const 4872) "\02\00\00\00\08\00\00\00J\00u\00l\00 ") + (data $50 (i32.const 4892) "\1c") + (data $50.1 (i32.const 4904) "\02\00\00\00\08\00\00\00A\00u\00g\00 ") + (data $51 (i32.const 4924) "\1c") + (data $51.1 (i32.const 4936) "\02\00\00\00\08\00\00\00S\00e\00p\00 ") + (data $52 (i32.const 4956) "\1c") + (data $52.1 (i32.const 4968) "\02\00\00\00\08\00\00\00O\00c\00t\00 ") + (data $53 (i32.const 4988) "\1c") + (data $53.1 (i32.const 5000) "\02\00\00\00\08\00\00\00N\00o\00v\00 ") + (data $54 (i32.const 5020) "\1c") + (data $54.1 (i32.const 5032) "\02\00\00\00\08\00\00\00D\00e\00c\00 ") + (data $55 (i32.const 5052) "L") + (data $55.1 (i32.const 5064) "\05\00\00\000\00\00\00P\12\00\00p\12\00\00\90\12\00\00\b0\12\00\00\d0\12\00\00\f0\12\00\00\10\13\00\000\13\00\00P\13\00\00p\13\00\00\90\13\00\00\b0\13") + (data $56 (i32.const 5132) ",\00\00\00\03\00\00\00\00\00\00\00\05\00\00\00\14") + (data $57 (i32.const 5180) "\1c") + (data $57.1 (i32.const 5192) "\02\00\00\00\04\00\00\00 \00-") + (data $58 (i32.const 5212) "\1c") + (data $58.1 (i32.const 5224) "\02\00\00\00\02\00\00\00 ") + (data $59 (i32.const 5244) "<") + (data $59.1 (i32.const 5256) "\02\00\00\00\1e\00\00\00W\00e\00d\00 \00J\00a\00n\00 \000\001\00 \000\000\002\000") + (data $60 (i32.const 5308) "<") + (data $60.1 (i32.const 5320) "\02\00\00\00\1e\00\00\00S\00u\00n\00 \00F\00e\00b\00 \000\002\00 \002\000\002\000") + (data $61 (i32.const 5372) "<") + (data $61.1 (i32.const 5384) "\02\00\00\00 \00\00\00T\00h\00u\00 \00J\00u\00l\00 \000\001\00 \00-\000\000\000\001") + (data $62 (i32.const 5436) ",\00\00\00\03\00\00\00\00\00\00\00\05\00\00\00\14\00\00\00\00\00\00\00\c0\r\00\00\00\00\00\00\c0\r") + (data $63 (i32.const 5484) ",") + (data $63.1 (i32.const 5496) "\02\00\00\00\10\00\00\000\000\00:\000\000\00:\000\000") + (data $64 (i32.const 5532) ",") + (data $64.1 (i32.const 5544) "\02\00\00\00\10\00\00\002\003\00:\005\009\00:\005\009") + (data $65 (i32.const 5580) "\1c") + (data $65.1 (i32.const 5592) "\02\00\00\00\n\00\00\00S\00u\00n\00,\00 ") + (data $66 (i32.const 5612) "\1c") + (data $66.1 (i32.const 5624) "\02\00\00\00\n\00\00\00M\00o\00n\00,\00 ") + (data $67 (i32.const 5644) "\1c") + (data $67.1 (i32.const 5656) "\02\00\00\00\n\00\00\00T\00u\00e\00,\00 ") + (data $68 (i32.const 5676) "\1c") + (data $68.1 (i32.const 5688) "\02\00\00\00\n\00\00\00W\00e\00d\00,\00 ") + (data $69 (i32.const 5708) "\1c") + (data $69.1 (i32.const 5720) "\02\00\00\00\n\00\00\00T\00h\00u\00,\00 ") + (data $70 (i32.const 5740) "\1c") + (data $70.1 (i32.const 5752) "\02\00\00\00\n\00\00\00F\00r\00i\00,\00 ") + (data $71 (i32.const 5772) "\1c") + (data $71.1 (i32.const 5784) "\02\00\00\00\n\00\00\00S\00a\00t\00,\00 ") + (data $72 (i32.const 5804) ",") + (data $72.1 (i32.const 5816) "\05\00\00\00\1c\00\00\00\e0\15\00\00\00\16\00\00 \16\00\00@\16\00\00`\16\00\00\80\16\00\00\a0\16") + (data $73 (i32.const 5852) "\1c") + (data $73.1 (i32.const 5864) "\02\00\00\00\n\00\00\00 \00J\00a\00n\00 ") + (data $74 (i32.const 5884) "\1c") + (data $74.1 (i32.const 5896) "\02\00\00\00\n\00\00\00 \00F\00e\00b\00 ") + (data $75 (i32.const 5916) "\1c") + (data $75.1 (i32.const 5928) "\02\00\00\00\n\00\00\00 \00M\00a\00r\00 ") + (data $76 (i32.const 5948) "\1c") + (data $76.1 (i32.const 5960) "\02\00\00\00\n\00\00\00 \00A\00p\00r\00 ") + (data $77 (i32.const 5980) "\1c") + (data $77.1 (i32.const 5992) "\02\00\00\00\n\00\00\00 \00M\00a\00y\00 ") + (data $78 (i32.const 6012) "\1c") + (data $78.1 (i32.const 6024) "\02\00\00\00\n\00\00\00 \00J\00u\00n\00 ") + (data $79 (i32.const 6044) "\1c") + (data $79.1 (i32.const 6056) "\02\00\00\00\n\00\00\00 \00J\00u\00l\00 ") + (data $80 (i32.const 6076) "\1c") + (data $80.1 (i32.const 6088) "\02\00\00\00\n\00\00\00 \00A\00u\00g\00 ") + (data $81 (i32.const 6108) "\1c") + (data $81.1 (i32.const 6120) "\02\00\00\00\n\00\00\00 \00S\00e\00p\00 ") + (data $82 (i32.const 6140) "\1c") + (data $82.1 (i32.const 6152) "\02\00\00\00\n\00\00\00 \00O\00c\00t\00 ") + (data $83 (i32.const 6172) "\1c") + (data $83.1 (i32.const 6184) "\02\00\00\00\n\00\00\00 \00N\00o\00v\00 ") + (data $84 (i32.const 6204) "\1c") + (data $84.1 (i32.const 6216) "\02\00\00\00\n\00\00\00 \00D\00e\00c\00 ") + (data $85 (i32.const 6236) "L") + (data $85.1 (i32.const 6248) "\05\00\00\000\00\00\00\f0\16\00\00\10\17\00\000\17\00\00P\17\00\00p\17\00\00\90\17\00\00\b0\17\00\00\d0\17\00\00\f0\17\00\00\10\18\00\000\18\00\00P\18") + (data $86 (i32.const 6316) "\1c") + (data $86.1 (i32.const 6328) "\02\00\00\00\08\00\00\00 \00G\00M\00T") + (data $87 (i32.const 6348) "L\00\00\00\03\00\00\00\00\00\00\00\05\00\00\000") + (data $87.1 (i32.const 6388) "p\14\00\00\00\00\00\00\c0\r\00\00\00\00\00\00\c0\r\00\00\00\00\00\00\c0\18") + (data $88 (i32.const 6428) "L") + (data $88.1 (i32.const 6440) "\02\00\00\00:\00\00\00W\00e\00d\00,\00 \000\001\00 \00J\00a\00n\00 \000\000\002\000\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") + (data $89 (i32.const 6508) "L") + (data $89.1 (i32.const 6520) "\02\00\00\00:\00\00\00M\00o\00n\00,\00 \000\003\00 \00F\00e\00b\00 \002\000\002\000\00 \001\004\00:\005\003\00:\003\003\00 \00G\00M\00T") + (data $90 (i32.const 6588) "L") + (data $90.1 (i32.const 6600) "\02\00\00\00<\00\00\00T\00h\00u\00,\00 \000\001\00 \00J\00u\00l\00 \00-\000\000\000\001\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T") + (data $91 (i32.const 6668) ",") + (data $91.1 (i32.const 6680) "\02\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002") + (data $92 (i32.const 6716) ",") + (data $92.1 (i32.const 6728) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $93 (i32.const 6764) ",") + (data $93.1 (i32.const 6776) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $94 (i32.const 6812) "|") + (data $94.1 (i32.const 6824) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $95 (i32.const 6940) ",") + (data $95.1 (i32.const 6952) "\02\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002") + (data $96 (i32.const 6988) ",") + (data $96.1 (i32.const 7000) "\02\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004") + (data $97 (i32.const 7036) "<") + (data $97.1 (i32.const 7048) "\02\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006") + (data $98 (i32.const 7100) "L") + (data $98.1 (i32.const 7112) "\02\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006") + (data $99 (i32.const 7180) "L") + (data $99.1 (i32.const 7192) "\02\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z") + (data $100 (i32.const 7260) "L") + (data $100.1 (i32.const 7272) "\02\00\00\00:\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00-\000\008\00:\000\000") + (data $101 (i32.const 7340) "L") + (data $101.1 (i32.const 7352) "\02\00\00\00:\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00+\000\005\00:\003\000") + (data $102 (i32.const 7420) "<") + (data $102.1 (i32.const 7432) "\02\00\00\00,\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005") + (data $103 (i32.const 7484) "L") + (data $103.1 (i32.const 7496) "\02\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00Z") + (data $104 (i32.const 7564) "L") + (data $104.1 (i32.const 7576) "\02\00\00\008\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\00+\000\000\00:\000\000") + (data $105 (i32.const 7644) "L") + (data $105.1 (i32.const 7656) "\02\00\00\004\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009") + (data $106 (i32.const 7724) "L") + (data $106.1 (i32.const 7736) "\02\00\00\006\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00Z") + (data $107 (i32.const 7804) "\\") + (data $107.1 (i32.const 7816) "\02\00\00\00@\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\007\008\009\00+\000\000\00:\000\000") + (data $108 (i32.const 7900) "\1c") + (data $108.1 (i32.const 7912) "\02\00\00\00\08\00\00\000\000\000\000") + (data $109 (i32.const 7932) "\1c") + (data $109.1 (i32.const 7944) "\02\00\00\00\08\00\00\000\000\000\001") + (data $110 (i32.const 7964) "\1c") + (data $110.1 (i32.const 7976) "\02\00\00\00\08\00\00\001\009\007\006") + (data $111 (i32.const 7996) ",") + (data $111.1 (i32.const 8008) "\02\00\00\00\0e\00\00\001\009\007\006\00-\000\002") + (data $112 (i32.const 8044) "<") + (data $112.1 (i32.const 8056) "\02\00\00\00 \00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004") + (data $113 (i32.const 8108) "L") + (data $113.1 (i32.const 8120) "\02\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data $114 (i32.const 8188) "L") + (data $114.1 (i32.const 8200) "\02\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\003\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z") + (data $115 (i32.const 8268) "L") + (data $115.1 (i32.const 8280) "\02\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\002\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z") + (data $116 (i32.const 8348) "L") + (data $116.1 (i32.const 8360) "\02\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z") + (data $117 (i32.const 8432) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\04A\00\00\02A\00\00\02\t") + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/date/epochMillis (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i64) + local.get $6 + i64.extend_i32_s + local.get $5 + i32.const 1000 + i32.mul + i64.extend_i32_s + local.get $4 + i32.const 60000 + i32.mul + i64.extend_i32_s + local.get $3 + i32.const 3600000 + i32.mul + i64.extend_i32_s + local.get $0 + local.get $1 + i32.const 2 + i32.le_s + i32.sub + local.tee $0 + i32.const 399 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + select + i32.sub + i32.const 400 + i32.div_s + local.set $3 + local.get $1 + i32.const -3 + i32.const 9 + local.get $1 + i32.const 2 + i32.gt_s + select + i32.add + i32.const 153 + i32.mul + i32.const 2 + i32.add + i32.const 5 + i32.div_u + local.get $2 + i32.add + local.get $0 + local.get $3 + i32.const 400 + i32.mul + i32.sub + local.tee $0 + i32.const 365 + i32.mul + local.get $0 + i32.const 2 + i32.shr_u + i32.add + local.get $0 + i32.const 100 + i32.div_u + i32.sub + i32.add + local.get $3 + i32.const 146097 + i32.mul + i32.add + i32.const 719469 + i32.sub + i64.extend_i32_s + i64.const 86400000 + i64.mul + i64.add + i64.add + i64.add + i64.add + ) + (func $~lib/date/dateFromEpoch (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i64.const 86399999 + i64.const 0 + local.get $0 + i64.const 0 + i64.lt_s + select + i64.sub + i64.const 86400000 + i64.div_s + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 2877872 + i32.add + i32.const 3 + i32.or + local.tee $1 + i32.const 146096 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.sub + i32.const 146097 + i32.div_s + local.set $2 + local.get $1 + local.get $2 + i32.const 146097 + i32.mul + i32.sub + i32.const 3 + i32.or + i64.extend_i32_u + i64.const 2939745 + i64.mul + local.tee $0 + i32.wrap_i64 + i32.const 11758980 + i32.div_u + local.tee $4 + i32.const 2141 + i32.mul + i32.const 197913 + i32.add + local.set $3 + local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.get $2 + i32.const 100 + i32.mul + i32.add + local.set $1 + local.get $3 + i32.const 16 + i32.shr_u + local.set $2 + local.get $3 + i32.const 65535 + i32.and + i32.const 2141 + i32.div_u + i32.const 1 + i32.add + global.set $~lib/date/_day + local.get $4 + i32.const 306 + i32.ge_u + if + local.get $2 + i32.const 12 + i32.sub + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $2 + global.set $~lib/date/_month + local.get $1 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1392 + call $~lib/rt/itcms/__visit + i32.const 6784 + call $~lib/rt/itcms/__visit + i32.const 6832 + call $~lib/rt/itcms/__visit + i32.const 1200 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 2304 + call $~lib/rt/itcms/__visit + i32.const 3360 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$376 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 41236 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$376 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 8432 + i32.load + i32.gt_u + if + i32.const 1392 + i32.const 1456 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 8436 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1536 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1536 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1536 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 41248 + i32.const 0 + i32.store + i32.const 42816 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 41248 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 41248 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 41248 + i32.const 42820 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 41248 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 41236 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 41236 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 41236 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1536 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1200 + i32.const 1264 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1200 + i32.const 1536 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1536 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/date/join (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (result i64) + (local $4 i32) + local.get $0 + local.get $1 + i32.const 2 + i32.le_s + i32.sub + local.tee $0 + i32.const 399 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + select + i32.sub + i32.const 400 + i32.div_s + local.set $4 + i64.const 86400000 + i64.const 0 + local.get $3 + i64.const 86400000 + i64.rem_s + local.tee $3 + i64.const 0 + i64.lt_s + select + local.get $3 + i64.add + local.get $1 + i32.const -3 + i32.const 9 + local.get $1 + i32.const 2 + i32.gt_s + select + i32.add + i32.const 153 + i32.mul + i32.const 2 + i32.add + i32.const 5 + i32.div_u + local.get $2 + i32.add + local.get $0 + local.get $4 + i32.const 400 + i32.mul + i32.sub + local.tee $0 + i32.const 365 + i32.mul + local.get $0 + i32.const 2 + i32.shr_u + i32.add + local.get $0 + i32.const 100 + i32.div_u + i32.sub + i32.add + local.get $4 + i32.const 146097 + i32.mul + i32.add + i32.const 719469 + i32.sub + i64.extend_i32_s + i64.const 86400000 + i64.mul + i64.add + ) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$73 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1872 + local.set $2 + br $__inlined_func$~lib/util/number/itoa32$73 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + select + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $3 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $3 + i32.add + local.set $5 + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $4 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $5 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + i32.const 100 + i32.ge_u + if + local.get $5 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $5 + local.get $1 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i32.load + i32.store + else + local.get $5 + local.get $1 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + if + local.get $2 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $1 + local.get $3 + i32.const 4 + i32.ge_u + if (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $1 + i64.load + local.get $2 + i64.load + i64.eq + if + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $3 + i32.const 4 + i32.sub + local.tee $3 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $3 + local.tee $0 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + if + local.get $1 + i32.load16_u + local.tee $0 + local.get $2 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $0 + local.get $4 + i32.sub + return + end + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String> + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/date/Date + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|01 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|01 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 + end + unreachable + end + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/date + ) + (func $~lib/date/Date#constructor (param $0 i64) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i64.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $0 + i64.const -8640000000000000 + i64.lt_s + local.get $0 + i64.const 8640000000000000 + i64.gt_s + i32.or + if + i32.const 1056 + i32.const 1104 + i32.const 131 + i32.const 35 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/date/dateFromEpoch + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + global.get $~lib/date/_month + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + global.get $~lib/date/_day + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i64.const -8640000000000000 + i64.lt_s + local.get $1 + i64.const 8640000000000000 + i64.gt_s + i32.or + if + i32.const 1056 + i32.const 1104 + i32.const 143 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i64.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/date/dateFromEpoch + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.get $~lib/date/_month + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.get $~lib/date/_day + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#getUTCHours (param $0 i32) (result i32) + (local $1 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i64.const 86400000 + i64.const 0 + local.get $1 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 3600000 + i32.div_s + ) + (func $~lib/date/Date#getUTCMinutes (param $0 i32) (result i32) + (local $1 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i64.const 3600000 + i64.const 0 + local.get $1 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 60000 + i32.div_s + ) + (func $~lib/date/Date#getUTCSeconds (param $0 i32) (result i32) + (local $1 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i64.const 60000 + i64.const 0 + local.get $1 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 1000 + i32.div_s + ) + (func $~lib/date/Date#getUTCMilliseconds (param $0 i32) (result i32) + (local $1 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i64.const 1000 + i64.const 0 + local.get $1 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + ) + (func $~lib/date/Date#setUTCMilliseconds (param $0 i32) (param $1 i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $1 + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.sub + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCSeconds (param $0 i32) (param $1 i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $1 + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.sub + i32.const 1000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCMinutes (param $0 i32) (param $1 i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $1 + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.sub + i32.const 60000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCHours (param $0 i32) (param $1 i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $1 + local.get $0 + call $~lib/date/Date#getUTCHours + i32.sub + i32.const 3600000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + local.get $1 + local.get $0 + i64.load offset=16 + call $~lib/date/join + call $~lib/date/Date#setTime + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCMonth@varargs (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + local.tee $1 + local.get $0 + i32.load offset=4 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $1 + local.get $2 + local.get $0 + i64.load offset=16 + call $~lib/date/join + call $~lib/date/Date#setTime + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/date/Date#setUTCFullYear (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $0 + i64.load offset=16 + call $~lib/date/join + call $~lib/date/Date#setTime + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/stringify (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 1872 + i32.store + block $__inlined_func$~lib/string/String#padStart$384 + i32.const 1868 + i32.load + i32.const -2 + i32.and + local.tee $2 + i32.eqz + local.get $1 + i32.const 1 + i32.shl + local.tee $5 + local.get $3 + i32.lt_u + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#padStart$384 + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $5 + local.get $3 + i32.sub + local.tee $7 + local.get $2 + i32.gt_u + if + local.get $7 + local.get $7 + i32.const 2 + i32.sub + local.get $2 + i32.div_u + local.get $2 + i32.mul + local.tee $6 + i32.sub + local.set $5 + loop $while-continue|0 + local.get $4 + local.get $6 + i32.lt_u + if + local.get $1 + local.get $4 + i32.add + i32.const 1872 + local.get $2 + memory.copy + local.get $2 + local.get $4 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $1 + local.get $6 + i32.add + i32.const 1872 + local.get $5 + memory.copy + else + local.get $1 + i32.const 1872 + local.get $7 + memory.copy + end + local.get $1 + local.get $7 + i32.add + local.get $0 + local.get $3 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3456 + return + end + local.get $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 3456 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + i32.store offset=4 + local.get $5 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $2 + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $2 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 3456 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3452 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + local.get $4 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $6 + i32.const 1 + i32.shl + memory.copy + local.get $3 + local.get $6 + i32.add + local.set $3 + end + local.get $1 + if + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3456 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $3 + i32.add + local.set $3 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 3456 + i32.store + local.get $0 + local.get $1 + call $~lib/util/string/joinStringArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#toISOString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const -64 + i32.add + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 64 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $3 + local.get $1 + i32.const 10000 + i32.ge_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.const 1648 + local.get $3 + select + local.tee $3 + i32.store + local.get $1 + i32.const 31 + i32.shr_s + local.tee $4 + local.get $1 + local.get $4 + i32.add + i32.xor + i32.const 6 + call $~lib/date/stringify + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + block $__inlined_func$~lib/string/String#concat$385 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $6 + local.get $5 + i32.add + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3456 + local.set $1 + br $__inlined_func$~lib/string/String#concat$385 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $3 + local.get $5 + memory.copy + local.get $1 + local.get $5 + i32.add + local.get $4 + local.get $6 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + else + local.get $1 + i32.const 4 + call $~lib/date/stringify + local.set $1 + end + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.const 2 + call $~lib/date/stringify + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + i32.const 2 + call $~lib/date/stringify + local.tee $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 2 + call $~lib/date/stringify + local.tee $4 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 2 + call $~lib/date/stringify + local.tee $5 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 2 + call $~lib/date/stringify + local.tee $6 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 3 + call $~lib/date/stringify + local.tee $0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 3616 + local.get $1 + i32.store + i32.const 3616 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 3624 + local.get $2 + i32.store + i32.const 3616 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 3632 + local.get $3 + i32.store + i32.const 3616 + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 3640 + local.get $4 + i32.store + i32.const 3616 + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 3648 + local.get $5 + i32.store + i32.const 3616 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 3656 + local.get $6 + i32.store + i32.const 3616 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3664 + local.get $0 + i32.store + i32.const 3616 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + i32.const 3616 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const -64 + i32.sub + global.set $~lib/memory/__stack_pointer + return + end + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/date/Date#toDateString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 52 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 52 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 4640 + i32.const 28 + memory.copy + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 5072 + i32.const 48 + memory.copy + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + local.tee $0 + local.get $1 + i32.const 3 + i32.lt_s + i32.sub + local.tee $5 + i32.const 0 + i32.lt_s + local.set $6 + local.get $1 + i32.const 1579 + i32.add + i32.load8_u + local.get $5 + i32.const 3 + i32.const 0 + local.get $6 + select + i32.sub + i32.const 4 + i32.div_s + local.get $5 + i32.const 99 + i32.const 0 + local.get $6 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $5 + i32.const 399 + i32.const 0 + local.get $6 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $5 + i32.add + i32.add + local.get $4 + i32.add + i32.const 7 + i32.rem_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 31 + i32.shr_s + local.tee $6 + local.get $0 + i32.add + local.get $6 + i32.xor + i32.const 4 + call $~lib/date/stringify + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $1 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 7 + i32.const 0 + local.get $5 + i32.const 0 + i32.lt_s + select + local.get $5 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + call $~lib/date/stringify + local.tee $3 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 5200 + i32.const 5232 + local.get $0 + i32.const 0 + i32.lt_s + select + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + i32.const 5152 + local.get $2 + i32.store + i32.const 5152 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=48 + i32.const 5156 + local.get $1 + i32.store + i32.const 5152 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=48 + i32.const 5160 + local.get $3 + i32.store + i32.const 5152 + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + i32.const 5164 + local.get $0 + i32.store + i32.const 5152 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=48 + i32.const 5168 + local.get $6 + i32.store + i32.const 5152 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + i32.const 5152 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const 52 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#toTimeString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 2 + call $~lib/date/stringify + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 2 + call $~lib/date/stringify + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 2 + call $~lib/date/stringify + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=28 + i32.const 5456 + local.get $1 + i32.store + i32.const 5456 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + i32.const 5464 + local.get $2 + i32.store + i32.const 5456 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=28 + i32.const 5472 + local.get $0 + i32.store + i32.const 5456 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store + i32.const 5456 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#toUTCString (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) + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 76 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 5824 + i32.const 28 + memory.copy + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 6256 + i32.const 48 + memory.copy + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + local.tee $5 + local.get $1 + i32.const 3 + i32.lt_s + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + local.set $7 + local.get $1 + i32.const 1579 + i32.add + i32.load8_u + local.get $6 + i32.const 3 + i32.const 0 + local.get $7 + select + i32.sub + i32.const 4 + i32.div_s + local.get $6 + i32.const 99 + i32.const 0 + local.get $7 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $6 + i32.const 399 + i32.const 0 + local.get $7 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $6 + i32.add + i32.add + local.get $4 + i32.add + i32.const 7 + i32.rem_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 31 + i32.shr_s + local.tee $7 + local.get $5 + i32.add + local.get $7 + i32.xor + i32.const 4 + call $~lib/date/stringify + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $1 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 7 + i32.const 0 + local.get $6 + i32.const 0 + i32.lt_s + select + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + call $~lib/date/stringify + local.tee $3 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 2 + call $~lib/date/stringify + local.tee $4 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 2 + call $~lib/date/stringify + local.tee $6 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 2 + call $~lib/date/stringify + local.tee $0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.const 3456 + local.get $5 + i32.const 0 + i32.lt_s + select + local.tee $5 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=72 + i32.const 6368 + local.get $2 + i32.store + i32.const 6368 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=72 + i32.const 6372 + local.get $3 + i32.store + i32.const 6368 + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=72 + i32.const 6376 + local.get $1 + i32.store + i32.const 6368 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=72 + i32.const 6380 + local.get $5 + i32.store + i32.const 6368 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=72 + i32.const 6384 + local.get $7 + i32.store + i32.const 6368 + local.get $7 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=72 + i32.const 6392 + local.get $4 + i32.store + i32.const 6368 + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=72 + i32.const 6400 + local.get $6 + i32.store + i32.const 6368 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=72 + i32.const 6408 + local.get $0 + i32.store + i32.const 6368 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + i32.const 6368 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select + local.set $2 + local.get $4 + local.get $3 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $1 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $3 + i32.gt_s + select + local.tee $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + local.get $2 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $4 + local.get $3 + local.get $2 + local.get $2 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $2 + local.get $4 + i32.sub + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3456 + return + end + local.get $4 + i32.eqz + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $4 + i32.add + local.get $3 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String#substring@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#substring + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/strtol (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $folding-inner0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + i32.eqz + br_if $folding-inner0 + local.get $0 + local.tee $2 + i32.load16_u + local.set $0 + loop $while-continue|0 + block $__inlined_func$~lib/util/string/isSpace$164 (result i32) + local.get $0 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $0 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $0 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$164 + drop + i32.const 1 + local.get $0 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$164 + drop + block $break|0 + block $case0|0 + local.get $0 + i32.const 5760 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 8232 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 8233 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 8239 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 8287 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 12288 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 65279 + i32.eq + br_if $case0|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$164 + end + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|0 + end + end + i32.const 1 + local.set $4 + local.get $0 + i32.const 45 + i32.eq + local.tee $6 + local.get $0 + i32.const 43 + i32.eq + i32.or + if (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.eqz + br_if $folding-inner0 + i32.const -1 + i32.const 1 + local.get $6 + select + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + else + local.get $0 + end + i32.const 48 + i32.eq + local.get $1 + i32.const 2 + i32.gt_s + i32.and + if + block $break|1 + block $case2|1 + block $case1|1 + local.get $2 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $0 + i32.const 98 + i32.ne + if + local.get $0 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $0 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 2 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 8 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 16 + local.set $3 + end + end + local.get $3 + i32.const 10 + local.get $3 + select + local.set $6 + local.get $1 + i32.const 1 + i32.sub + local.set $7 + loop $while-continue|2 + local.get $1 + local.tee $0 + i32.const 1 + i32.sub + local.set $1 + local.get $0 + if + block $while-break|2 + local.get $2 + i32.load16_u + local.tee $3 + i32.const 48 + i32.sub + local.tee $0 + i32.const 10 + i32.ge_u + if + local.get $3 + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + if (result i32) + local.get $3 + i32.const 55 + i32.sub + else + local.get $3 + i32.const 87 + i32.sub + local.get $3 + local.get $3 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + end + local.set $0 + end + local.get $0 + local.get $6 + i32.ge_u + if + local.get $1 + local.get $7 + i32.eq + br_if $folding-inner0 + br $while-break|2 + end + local.get $5 + local.get $6 + i32.mul + local.get $0 + i32.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + i32.mul + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 6784 + i32.const 6736 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$363 + i32.const 1073741820 + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$363 + end + local.get $3 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $3 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#split (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) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner4 + block $folding-inner3 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + local.get $2 + i32.eqz + br_if $folding-inner1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/rt/__newArray + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=12 + i32.eqz + if + local.get $2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 2147483647 + local.get $2 + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $8 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + if + local.get $6 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + i32.const 3456 + i32.store + br $folding-inner4 + end + else + local.get $6 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $6 + local.get $8 + local.get $6 + local.get $8 + i32.lt_s + select + local.tee $3 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + local.get $5 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + local.get $2 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=20 + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $0 + local.get $1 + local.get $3 + call $~lib/string/String#indexOf + local.tee $9 + i32.const -1 + i32.xor + if + local.get $9 + local.get $3 + i32.sub + local.tee $7 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.shl + local.tee $10 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=28 + local.get $7 + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $10 + memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=24 + local.get $2 + local.get $7 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3456 + call $~lib/array/Array<~lib/string/String>#push + end + local.get $5 + i32.const 1 + i32.add + local.tee $5 + local.get $8 + i32.eq + br_if $folding-inner3 + local.get $4 + local.get $9 + i32.add + local.set $3 + br $while-continue|1 + end + end + local.get $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $2 + local.get $0 + call $~lib/array/Array<~lib/string/String>#push + br $folding-inner3 + end + local.get $6 + local.get $3 + i32.sub + local.tee $1 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=32 + local.get $4 + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=24 + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3456 + call $~lib/array/Array<~lib/string/String>#push + end + br $folding-inner4 + end + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/rt/__newArray + local.set $2 + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String#split@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#split + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1392 + i32.const 6736 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 6832 + i32.const 6736 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/date/Date.fromString (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) + global.get $~lib/memory/__stack_pointer + i32.const 72 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 72 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.eqz + if + i32.const 1056 + i32.const 1104 + i32.const 50 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3488 + i32.const 0 + call $~lib/string/String#indexOf + local.tee $2 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + local.get $2 + call $~lib/string/String#substring + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.const 1 + i32.add + call $~lib/string/String#substring@varargs + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|0 + local.get $3 + i32.const 0 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + block $__inlined_func$~lib/string/String#charCodeAt$386 + local.get $3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ge_u + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $0 + br $__inlined_func$~lib/string/String#charCodeAt$386 + end + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + block $for-break0 + local.get $0 + i32.const 90 + i32.eq + br_if $for-break0 + local.get $0 + i32.const 45 + i32.eq + local.get $0 + i32.const 43 + i32.eq + i32.or + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + i32.eq + if + i32.const 1056 + i32.const 1104 + i32.const 74 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + local.get $2 + i32.const 3520 + local.get $3 + i32.const 1 + i32.add + local.tee $5 + call $~lib/string/String#indexOf + local.tee $7 + i32.const -1 + i32.xor + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $5 + local.get $7 + call $~lib/string/String#substring + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/util/string/strtol + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $7 + i32.const 1 + i32.add + call $~lib/string/String#substring@varargs + local.tee $7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/util/string/strtol + local.get $5 + i32.const 60 + i32.mul + i32.add + i32.const 60000 + i32.mul + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.const 1 + i32.add + call $~lib/string/String#substring@varargs + local.tee $5 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/util/string/strtol + i32.const 3600000 + i32.mul + end + local.tee $5 + i32.sub + local.get $5 + local.get $0 + i32.const 45 + i32.eq + select + local.set $5 + br $for-break0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + local.get $3 + call $~lib/string/String#substring + local.tee $2 + i32.store offset=8 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3520 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.tee $2 + i32.const 1 + i32.le_s + if + i32.const 1056 + i32.const 1104 + i32.const 96 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $3 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/util/string/strtol + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $7 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/util/string/strtol + local.set $7 + local.get $2 + i32.const 3 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $2 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 3552 + i32.const 0 + call $~lib/string/String#indexOf + local.tee $0 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + local.get $0 + call $~lib/string/String#substring + local.tee $6 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/util/string/strtol + local.set $6 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/string/String#substr$387 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=44 + local.get $0 + i32.const 1 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $8 + local.get $0 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $8 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $0 + end + local.get $0 + i32.sub + local.tee $8 + local.get $8 + i32.const 3 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $8 + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3456 + br $__inlined_func$~lib/string/String#substr$387 + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $10 + i32.store offset=4 + local.get $10 + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $8 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + end + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 1872 + i32.store + block $__inlined_func$~lib/string/String#padEnd$388 + i32.const 1868 + i32.load + i32.const -2 + i32.and + local.tee $8 + i32.eqz + local.get $10 + i32.const 6 + i32.gt_u + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#padEnd$388 + end + global.get $~lib/memory/__stack_pointer + i32.const 6 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $10 + memory.copy + i32.const 6 + local.get $10 + i32.sub + local.tee $0 + local.get $8 + i32.gt_u + if + local.get $0 + local.get $0 + i32.const 2 + i32.sub + local.get $8 + i32.div_u + local.get $8 + i32.mul + local.tee $0 + i32.sub + local.set $11 + local.get $2 + local.get $10 + i32.add + local.set $12 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.gt_u + if + local.get $4 + local.get $12 + i32.add + i32.const 1872 + local.get $8 + memory.copy + local.get $4 + local.get $8 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $2 + local.get $10 + i32.add + local.get $0 + i32.add + i32.const 1872 + local.get $11 + memory.copy + else + local.get $2 + local.get $10 + i32.add + i32.const 1872 + local.get $0 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.set $0 + end + local.get $0 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/util/string/strtol + local.set $4 + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/strtol + local.set $6 + end + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1616 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $1 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/strtol + i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.tee $8 + i32.const 2 + i32.ge_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $1 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/strtol + local.set $1 + local.get $8 + i32.const 3 + i32.ge_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $0 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/util/string/strtol + else + i32.const 1 + end + else + i32.const 1 + end + local.set $0 + local.get $1 + local.get $0 + local.get $3 + local.get $7 + local.get $6 + local.get $4 + call $~lib/date/epochMillis + local.get $5 + i64.extend_i32_s + i64.sub + call $~lib/date/Date#constructor + global.get $~lib/memory/__stack_pointer + i32.const 72 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $start:std/date + (local $0 i32) + (local $1 i64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 436 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 436 + memory.fill + block $folding-inner0 + i32.const 1970 + i32.const 1 + i32.const 1 + i32.const 0 + i32.const 0 + i32.const 0 + i32.const 0 + call $~lib/date/epochMillis + local.tee $1 + i64.const -8640000000000000 + i64.lt_s + local.get $1 + i64.const 8640000000000000 + i64.gt_s + i32.or + br_if $folding-inner0 + local.get $1 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1970 + i32.const 1 + i32.const 1 + i32.const 0 + i32.const 0 + i32.const 0 + i32.const 0 + call $~lib/date/epochMillis + local.tee $1 + i64.const -8640000000000000 + i64.lt_s + local.get $1 + i64.const 8640000000000000 + i64.gt_s + i32.or + br_if $folding-inner0 + local.get $1 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1970 + i32.const 1 + i32.const 1 + i32.const 0 + i32.const 0 + i32.const 0 + i32.const 0 + call $~lib/date/epochMillis + local.tee $1 + i64.const -8640000000000000 + i64.lt_s + local.get $1 + i64.const 8640000000000000 + i64.gt_s + i32.or + br_if $folding-inner0 + local.get $1 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 5 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1990 + i32.const 1 + i32.const 1 + i32.const 0 + i32.const 0 + i32.const 0 + i32.const 0 + call $~lib/date/epochMillis + local.tee $1 + i64.const -8640000000000000 + i64.lt_s + local.get $1 + i64.const 8640000000000000 + i64.gt_s + i32.or + br_if $folding-inner0 + local.get $1 + i64.const 631152000000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -90 + i32.const 1 + i32.const 1 + i32.const 0 + i32.const 0 + i32.const 0 + i32.const 0 + call $~lib/date/epochMillis + local.tee $1 + i64.const -8640000000000000 + i64.lt_s + local.get $1 + i64.const 8640000000000000 + i64.gt_s + i32.or + br_if $folding-inner0 + local.get $1 + i64.const -65007360000000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 7 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2018 + i32.const 11 + i32.const 10 + i32.const 11 + i32.const 0 + i32.const 0 + i32.const 1 + call $~lib/date/epochMillis + local.tee $1 + i64.const -8640000000000000 + i64.lt_s + local.get $1 + i64.const 8640000000000000 + i64.gt_s + i32.or + br_if $folding-inner0 + local.get $1 + i64.const 1541847600001 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 275760 + i32.const 9 + i32.const 13 + i32.const 0 + i32.const 0 + i32.const 0 + i32.const 0 + call $~lib/date/epochMillis + local.tee $1 + i64.const -8640000000000000 + i64.lt_s + local.get $1 + i64.const 8640000000000000 + i64.gt_s + i32.or + br_if $folding-inner0 + local.get $1 + i64.const 8640000000000000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 41236 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1316 + i32.const 1312 + i32.store + i32.const 1320 + i32.const 1312 + i32.store + i32.const 1312 + global.set $~lib/rt/itcms/pinSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/toSpace + i32.const 1492 + i32.const 1488 + i32.store + i32.const 1496 + i32.const 1488 + i32.store + i32.const 1488 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i64.const 1541847600001 + call $~lib/date/Date#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 1541847600001 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.const 1541847600002 + call $~lib/date/Date#setTime + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 1541847600002 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 20 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 5918283958183706 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + i32.const 189512 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 14 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 22 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 706 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + i32.const 1973 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 41 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 274 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 399464523963984 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 984 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 12 + call $~lib/date/Date#setUTCMilliseconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 54 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 568 + call $~lib/date/Date#setUTCMilliseconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 568 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/date/Date#setUTCMilliseconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 399464523963000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 999 + call $~lib/date/Date#setUTCMilliseconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 399464523963999 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 2000 + call $~lib/date/Date#setUTCMilliseconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + if + i32.const 0 + i32.const 1152 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 399464523965000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const -2000 + call $~lib/date/Date#setUTCMilliseconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + if + i32.const 0 + i32.const 1152 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 399464523963000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 31 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 12 + call $~lib/date/Date#setUTCSeconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 50 + call $~lib/date/Date#setUTCSeconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 78 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/date/Date#setUTCSeconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 372027318300986 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 59 + call $~lib/date/Date#setUTCSeconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=76 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 372027318359986 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=80 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 12 + call $~lib/date/Date#setUTCMinutes + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 50 + call $~lib/date/Date#setUTCMinutes + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 93 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/date/Date#setUTCMinutes + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=84 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 372027315631986 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 59 + call $~lib/date/Date#setUTCMinutes + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 372027319171986 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=92 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 17 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 12 + call $~lib/date/Date#setUTCHours + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 2 + call $~lib/date/Date#setUTCHours + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/date/Date#setUTCHours + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=96 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 372027257131986 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 23 + call $~lib/date/Date#setUTCHours + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=100 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 372027339931986 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=104 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=108 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + i32.const 1973 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 119 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=112 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 12 + call $~lib/date/Date#setUTCDate + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=116 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 2 + call $~lib/date/Date#setUTCDate + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=120 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1 + call $~lib/date/Date#setUTCDate + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 30 + call $~lib/date/Date#setUTCDate + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 0 + call $~lib/date/Date#setUTCMonth@varargs + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1 + call $~lib/date/Date#setUTCDate + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 31 + call $~lib/date/Date#setUTCDate + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 2024 + call $~lib/date/Date#setUTCFullYear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 1 + call $~lib/date/Date#setUTCMonth@varargs + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=124 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 141 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1 + call $~lib/date/Date#setUTCDate + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 29 + call $~lib/date/Date#setUTCDate + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 1 + call $~lib/date/Date#setUTCMonth@varargs + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=128 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 1709168591274 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 146 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=132 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=136 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 29 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 274 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 151 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1362106799999 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=104 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 20 + call $~lib/date/Date#setUTCDate + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=140 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 1363748399999 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1 + call $~lib/date/Date#setUTCDate + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=144 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 1362106799999 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 157 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1000 + call $~lib/date/Date#setUTCMilliseconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=148 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 1362106800000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 3600000 + call $~lib/date/Date#setUTCMilliseconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=152 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 1362110400000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 163 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 3600001 + call $~lib/date/Date#setUTCMilliseconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 1362114000001 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 3600001 + call $~lib/date/Date#setUTCMilliseconds + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=160 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 1362117600001 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 169 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=104 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const -2208 + call $~lib/date/Date#setUTCDate + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=164 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const -67301808726 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 173 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=104 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 2208 + call $~lib/date/Date#setUTCDate + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=168 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 314240591274 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 177 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1467763200000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=172 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + i32.const 0 + local.get $0 + i32.load offset=8 + local.get $3 + i32.const 1579 + i32.add + i32.load8_u + local.get $2 + local.get $3 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 3 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + local.tee $2 + select + i32.sub + i32.const 4 + i32.div_s + local.get $0 + i32.const 99 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $0 + i32.const 399 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $0 + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 0 + i32.lt_s + select + local.get $0 + i32.add + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1467763199999 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=176 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + i32.const 0 + local.get $0 + i32.load offset=8 + local.get $3 + i32.const 1579 + i32.add + i32.load8_u + local.get $2 + local.get $3 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 3 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + local.tee $2 + select + i32.sub + i32.const 4 + i32.div_s + local.get $0 + i32.const 99 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $0 + i32.const 399 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $0 + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 0 + i32.lt_s + select + local.get $0 + i32.add + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 188 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1467849599999 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=180 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + i32.const 0 + local.get $0 + i32.load offset=8 + local.get $3 + i32.const 1579 + i32.add + i32.load8_u + local.get $2 + local.get $3 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 3 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + local.tee $2 + select + i32.sub + i32.const 4 + i32.div_s + local.get $0 + i32.const 99 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $0 + i32.const 399 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $0 + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 0 + i32.lt_s + select + local.get $0 + i32.add + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 189 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1467849600000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=184 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + i32.const 0 + local.get $0 + i32.load offset=8 + local.get $3 + i32.const 1579 + i32.add + i32.load8_u + local.get $2 + local.get $3 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 3 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + local.tee $2 + select + i32.sub + i32.const 4 + i32.div_s + local.get $0 + i32.const 99 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $0 + i32.const 399 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $0 + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 0 + i32.lt_s + select + local.get $0 + i32.add + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 190 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1468022400000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=188 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + i32.const 0 + local.get $0 + i32.load offset=8 + local.get $3 + i32.const 1579 + i32.add + i32.load8_u + local.get $2 + local.get $3 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 3 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + local.tee $2 + select + i32.sub + i32.const 4 + i32.div_s + local.get $0 + i32.const 99 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $0 + i32.const 399 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $0 + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 0 + i32.lt_s + select + local.get $0 + i32.add + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 192 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1468022399999 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=192 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + i32.const 0 + local.get $0 + i32.load offset=8 + local.get $3 + i32.const 1579 + i32.add + i32.load8_u + local.get $2 + local.get $3 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 3 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + local.tee $2 + select + i32.sub + i32.const 4 + i32.div_s + local.get $0 + i32.const 99 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $0 + i32.const 399 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $0 + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 0 + i32.lt_s + select + local.get $0 + i32.add + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1468108799999 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=196 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + i32.const 0 + local.get $0 + i32.load offset=8 + local.get $3 + i32.const 1579 + i32.add + i32.load8_u + local.get $2 + local.get $3 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 3 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + local.tee $2 + select + i32.sub + i32.const 4 + i32.div_s + local.get $0 + i32.const 99 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $0 + i32.const 399 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $0 + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 0 + i32.lt_s + select + local.get $0 + i32.add + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 194 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1468108800000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=200 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + i32.const 0 + local.get $0 + i32.load offset=8 + local.get $3 + i32.const 1579 + i32.add + i32.load8_u + local.get $2 + local.get $3 + i32.const 3 + i32.lt_s + i32.sub + local.tee $0 + i32.const 3 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + local.tee $2 + select + i32.sub + i32.const 4 + i32.div_s + local.get $0 + i32.const 99 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $0 + i32.const 399 + i32.const 0 + local.get $2 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $0 + i32.add + i32.add + i32.add + i32.const 7 + i32.rem_s + local.tee $0 + i32.const 0 + i32.lt_s + select + local.get $0 + i32.add + if + i32.const 0 + i32.const 1152 + i32.const 195 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 7899943856218720 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=204 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=208 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 201 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 10 + call $~lib/date/Date#setUTCMonth@varargs + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=212 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 203 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 2 + call $~lib/date/Date#setUTCMonth@varargs + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=216 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 205 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=220 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 7899941177818720 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 206 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 0 + call $~lib/date/Date#setUTCMonth@varargs + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=224 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 7899936080218720 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 209 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 11 + call $~lib/date/Date#setUTCMonth@varargs + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=228 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 7899964937818720 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 211 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/date/Date#setUTCMonth@varargs + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=232 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 215 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=236 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 7899933401818720 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 216 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 12 + call $~lib/date/Date#setUTCMonth@varargs + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=240 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + if + i32.const 0 + i32.const 1152 + i32.const 218 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=244 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 7899936080218720 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 219 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 7941202527925698 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=248 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=252 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + i32.const 253616 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1976 + call $~lib/date/Date#setUTCFullYear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=256 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + i32.const 1976 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 227 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 20212 + call $~lib/date/Date#setUTCFullYear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=260 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + i32.const 20212 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 71 + call $~lib/date/Date#setUTCFullYear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=264 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + i32.const 71 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 231 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -62167219200000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=268 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 3696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -62167219200001 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=268 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 3776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 239 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -62127219200000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=268 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 3856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 241 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1231231231020 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=268 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 3936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 243 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1231231231456 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=268 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 4016 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 245 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 322331231231020 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=268 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 4096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 247 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 253402300799999 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=268 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 4176 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 249 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 253402300800000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=268 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 4256 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 251 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -62847038769226 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=268 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 4336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 253 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -61536067200000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=276 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toDateString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 5264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 259 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1580601600000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=276 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toDateString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 5328 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 261 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -62183116800000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=276 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toDateString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 5392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 264 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -61536067200000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=280 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toTimeString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 5504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 270 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 253402300799999 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=280 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toTimeString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 5552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 273 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -61536067200000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=284 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toUTCString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 6448 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 279 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 1580741613467 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=284 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toUTCString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 6528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 281 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -62183116800000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=284 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toUTCString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 6608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 284 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6688 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=292 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192067200000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 291 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6960 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=296 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192067200000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 293 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7008 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=300 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 11860387200000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 295 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7056 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=304 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192112496000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 299 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7120 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=308 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192112496456 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 303 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7200 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=312 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192112496456 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 307 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7280 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=316 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192141296456 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 311 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7360 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=320 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192092696456 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 315 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7440 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=324 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192112496450 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 319 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7504 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=328 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192112496450 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7584 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=332 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192112496450 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 327 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7664 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=336 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192112496456 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 331 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7744 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=340 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192112496456 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 335 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7824 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=344 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192112496456 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 339 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7920 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=348 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const -62167219200000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 342 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7952 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=352 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const -62135596800000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7984 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=356 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 189302400000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 348 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8016 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=360 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 191980800000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 351 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6688 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=364 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192067200000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 354 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8064 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=368 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192112440000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 357 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7056 + call $~lib/date/Date.fromString + local.tee $0 + i32.store offset=288 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=372 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const 192112496000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 360 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const -8640000000000000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=376 + global.get $~lib/memory/__stack_pointer + i64.const 8640000000000000 + call $~lib/date/Date#constructor + local.tee $2 + i32.store offset=380 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=384 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i64.load offset=16 + i64.const -8640000000000000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 378 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=388 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i64.load offset=16 + i64.const 8640000000000000 + i64.ne + if + i32.const 0 + i32.const 1152 + i32.const 379 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=392 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + i32.const -271821 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 381 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=396 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load + i32.const 275760 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 382 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=400 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 384 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=404 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 385 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=408 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 387 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=412 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=8 + i32.const 13 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 8128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=272 + local.get $2 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 8208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 391 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 8639999999999999 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=416 + global.get $~lib/memory/__stack_pointer + i64.const -8639999999999999 + call $~lib/date/Date#constructor + local.tee $2 + i32.store offset=420 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=424 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load + i32.const -271821 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 396 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=428 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 397 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=432 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=8 + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 398 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/date/Date#getUTCHours + if + i32.const 0 + i32.const 1152 + i32.const 399 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/date/Date#getUTCMinutes + if + i32.const 0 + i32.const 1152 + i32.const 400 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/date/Date#getUTCSeconds + if + i32.const 0 + i32.const 1152 + i32.const 401 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/date/Date#getUTCMilliseconds + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 402 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=272 + local.get $0 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 8288 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 404 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=272 + local.get $2 + call $~lib/date/Date#toISOString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 8368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 405 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 436 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 1056 + i32.const 1104 + i32.const 36 + i32.const 26 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__newArray (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/std/date.ts b/tests/compiler/std/date.ts index 87ba3a474d..8fddc31121 100644 --- a/tests/compiler/std/date.ts +++ b/tests/compiler/std/date.ts @@ -1,12 +1,409 @@ -assert(Date.UTC(1970, 0, 1) == 0); -assert(Date.UTC(1970, 0, 1, 0, 0, 0, 0) == 0); +// Date UTC /////////////////////////////////////////////////////////////////////////////////////// +{ + assert(Date.UTC(1970, 0, 1) == 0); + assert(Date.UTC(1970, 0, 1, 0, 0, 0, 0) == 0); + assert(Date.UTC(70) == 0); + assert(Date.UTC(90) == 631152000000); + assert(Date.UTC(-90) == -65007360000000); + assert(Date.UTC(2018, 10, 10, 11, 0, 0, 1) == 1541847600001); + assert(Date.UTC(275760, 8, 13, 0, 0, 0, 0) == 8640000000000000); + // Date.UTC(275760, 8, 13, 0, 0, 0, 1); // Invalid Date +} -var creationTime = Date.UTC(2018, 10, 10, 11, 0, 0, 1); -assert(creationTime == 1541847600001); +// Date get / set Time //////////////////////////////////////////////////////////////////////////// -assert(Date.now() > creationTime); +{ + let creationTime = 1541847600001; + let date = new Date(creationTime); + assert(date.getTime() == creationTime); + date.setTime(creationTime + 1); + assert(date.getTime() == creationTime + 1); +} -var date = new Date(creationTime); -assert(date.getTime() == creationTime); -date.setTime(creationTime + 1); -assert(date.getTime() == creationTime + 1); +// Date getters /////////////////////////////////////////////////////////////////////////////////// + +{ + // from +189512-12-14T22:09:43.706Z" + let date = new Date(5918283958183706); + assert(date.getUTCFullYear() == 189512); + assert(date.getUTCMonth() == 11); + assert(date.getUTCDate() == 14); + assert(date.getUTCHours() == 22); + assert(date.getUTCMinutes() == 9); + assert(date.getUTCSeconds() == 43); + assert(date.getUTCMilliseconds() == 706); +} + +{ + // from 1973-12-04T01:03:11.274Z" + let date = new Date(123814991274); + assert(date.getUTCFullYear() == 1973); + assert(date.getUTCMonth() == 11); + assert(date.getUTCDate() == 4); + assert(date.getUTCHours() == 1); + assert(date.getUTCMinutes() == 3); + assert(date.getUTCSeconds() == 11); + assert(date.getUTCMilliseconds() == 274); +} + +// Date#setUTCMilliseconds ///////////////////////////////////////////////////////////////////////// +{ + let date = new Date(399464523963984); + assert(date.getUTCMilliseconds() == 984); + date.setUTCMilliseconds(12); + assert(date.getUTCMilliseconds() == 12); + date.setUTCMilliseconds(568); + assert(date.getUTCMilliseconds() == 568); + // test in boundaries + date.setUTCMilliseconds(0); + assert(date.getTime() == 399464523963000); + date.setUTCMilliseconds(999); + assert(date.getTime() == 399464523963999); + // test out of boundaries + date.setUTCMilliseconds(2000); + assert(date.getUTCMilliseconds() == 0); + assert(date.getTime() == 399464523965000); + date.setUTCMilliseconds(-2000); + assert(date.getUTCMilliseconds() == 0); + assert(date.getTime() == 399464523963000); +} + +// Date#setUTCSeconds ////////////////////////////////////////////////////////////////////////////// +{ + let date = new Date(372027318331986); + assert(date.getUTCSeconds() == 31); + date.setUTCSeconds(12); + assert(date.getUTCSeconds() == 12); + date.setUTCSeconds(50); + assert(date.getUTCSeconds() == 50); + // test boundaries + date.setUTCSeconds(0); + assert(date.getTime() == 372027318300986); + date.setUTCSeconds(59); + assert(date.getTime() == 372027318359986); +} + +// Date#setUTCMinutes ////////////////////////////////////////////////////////////////////////////// +{ + let date = new Date(372027318331986); + assert(date.getUTCMinutes() == 45); + date.setUTCMinutes(12); + assert(date.getUTCMinutes() == 12); + date.setUTCMinutes(50); + assert(date.getUTCMinutes() == 50); + // test boundaries + date.setUTCMinutes(0); + assert(date.getTime() == 372027315631986); + date.setUTCMinutes(59); + assert(date.getTime() == 372027319171986); +} + +// Date#setUTCHours //////////////////////////////////////////////////////////////////////////////// +{ + let date = new Date(372027318331986); + assert(date.getUTCHours() == 17); + date.setUTCHours(12); + assert(date.getUTCHours() == 12); + date.setUTCHours(2); + assert(date.getUTCHours() == 2); + // test boundaries + date.setUTCHours(0); + assert(date.getTime() == 372027257131986); + date.setUTCHours(23); + assert(date.getTime() == 372027339931986); +} + +// Date#setUTCDate ///////////////////////////////////////////////////////////////////////////////// +{ + let date = new Date(123814991274); + assert(date.getUTCFullYear() == 1973); + assert(date.getUTCMonth() == 11); + + // test a few values + date.setUTCDate(12); + assert(date.getUTCDate() == 12); + date.setUTCDate(2); + assert(date.getUTCDate() == 2); + + // test boundaries + // nov has 30 days + date.setUTCDate(1); + date.setUTCDate(30); + + // jan has 31 days + date.setUTCMonth(0); + date.setUTCDate(1); + date.setUTCDate(31); + + // feb on leap year + date.setUTCFullYear(2024); + date.setUTCMonth(1); + assert(date.getUTCMonth() == 2); // overflows to march due to day=31 + date.setUTCDate(1); + date.setUTCDate(29); + date.setUTCMonth(1); + + assert(date.getTime() == 1709168591274); + assert(date.getUTCMonth() == 1); + assert(date.getUTCDate() == 29); + assert(date.getUTCMinutes() == 3); + assert(date.getUTCSeconds() == 11); + assert(date.getUTCMilliseconds() == 274); + + date = new Date(1362106799999); + date.setUTCDate(20); + assert(date.getTime() == 1363748399999); + date.setUTCDate(1); + assert(date.getTime() == 1362106799999); + + date.setUTCMilliseconds(1000); + assert(date.getTime() == 1362106800000); + + date.setUTCMilliseconds(60 * 60 * 1000); + assert(date.getTime() == 1362110400000); + + date.setUTCMilliseconds(60 * 60 * 1000 + 1); + assert(date.getTime() == 1362114000001); + + date.setUTCMilliseconds(60 * 60 * 1000 + 1); + assert(date.getTime() == 1362117600001); + + date = new Date(123814991274); + date.setUTCDate(-2208); + assert(date.getTime() == -67301808726); + + date = new Date(123814991274); + date.setUTCDate(2208); + assert(date.getTime() == 314240591274); +} + +// Date#setUTCDay ////////////////////////////////////////////////////////////////////////////////// +{ + // tests from test262 + const july6: i64 = 1467763200000; + const july9: i64 = 1468022400000; + const dayMs: i64 = 24 * 60 * 60 * 1000; + + assert(new Date(july6 ).getUTCDay() == 3); + assert(new Date(july6 - 1).getUTCDay() == 2); + assert(new Date(july6 + dayMs - 1).getUTCDay() == 3); + assert(new Date(july6 + dayMs ).getUTCDay() == 4); + + assert(new Date(july9 ).getUTCDay() == 6); + assert(new Date(july9 - 1).getUTCDay() == 5); + assert(new Date(july9 + dayMs - 1).getUTCDay() == 6); + assert(new Date(july9 + dayMs ).getUTCDay() == 0); +} + +// Date#setUTCMonth //////////////////////////////////////////////////////////////////////////////// +{ + let date = new Date(7899943856218720); + assert(date.getUTCMonth() == 3); + date.setUTCMonth(10); + assert(date.getUTCMonth() == 10); + date.setUTCMonth(2); + assert(date.getUTCMonth() == 2); + assert(date.getTime() == 7899941177818720); + // test boundaries + date.setUTCMonth(0); + assert(date.getTime() == 7899936080218720); + date.setUTCMonth(11); + assert(date.getTime() == 7899964937818720); + + // test out of boundaries + date.setUTCMonth(-1); + assert(date.getUTCMonth() == 11); + assert(date.getTime() == 7899933401818720); + date.setUTCMonth(12); + assert(date.getUTCMonth() == 0); + assert(date.getTime() == 7899936080218720); +} + +// Date#setUTCFullYear ///////////////////////////////////////////////////////////////////////////// +{ + let date = new Date(7941202527925698); + assert(date.getUTCFullYear() == 253616); + date.setUTCFullYear(1976); + assert(date.getUTCFullYear() == 1976); + date.setUTCFullYear(20212); + assert(date.getUTCFullYear() == 20212); + date.setUTCFullYear(71); + assert(date.getUTCFullYear() == 71); +} + +// Date#toISOString //////////////////////////////////////////////////////////////////////////////// +{ + let date = new Date(-62167219200000); + assert(date.toISOString() == "0000-01-01T00:00:00.000Z"); + date = new Date(-62167219200000 - 1); + assert(date.toISOString() == "-000001-12-31T23:59:59.999Z"); + date = new Date(-62127219200000); + assert(date.toISOString() == "0001-04-07T23:06:40.000Z"); + date = new Date(1231231231020); + assert(date.toISOString() == "2009-01-06T08:40:31.020Z"); + date = new Date(1231231231456); + assert(date.toISOString() == "2009-01-06T08:40:31.456Z"); + date = new Date(322331231231020); + assert(date.toISOString() == "+012184-04-08T13:07:11.020Z"); + date = new Date(253402300799999); + assert(date.toISOString() == "9999-12-31T23:59:59.999Z"); + date = new Date(253402300800000); + assert(date.toISOString() == "+010000-01-01T00:00:00.000Z"); + date = new Date(-62847038769226); + assert(date.toISOString() == "-000022-06-16T17:13:50.774Z"); +} + +// Date#toDateString /////////////////////////////////////////////////////////////////////////////// +{ + let date = new Date(-61536067200000); + assert(date.toDateString() == "Wed Jan 01 0020"); + date = new Date(1580601600000); + assert(date.toDateString() == "Sun Feb 02 2020"); + // negative year + date = new Date(-62183116800000); // '-000001-07-01T00:00Z' + assert(date.toDateString() == "Thu Jul 01 -0001"); +} + +// Date#toTimeString /////////////////////////////////////////////////////////////////////////////// +{ + let date = new Date(-61536067200000); + assert(date.toTimeString() == "00:00:00"); // use UTC time instead local + + date = new Date(253402300799999); + assert(date.toTimeString() == "23:59:59"); // use UTC time instead local +} + +// Date#toUTCString /////////////////////////////////////////////////////////////////////////////// +{ + let date = new Date(-61536067200000); + assert(date.toUTCString() == "Wed, 01 Jan 0020 00:00:00 GMT"); + date = new Date(1580741613467); + assert(date.toUTCString() == "Mon, 03 Feb 2020 14:53:33 GMT"); + // negative year + date = new Date(-62183116800000); // '-000001-07-01T00:00Z' + assert(date.toUTCString() == "Thu, 01 Jul -0001 00:00:00 GMT"); +} + +// Date#fromString ///////////////////////////////////////////////////////////////////////////////// +{ + // supports year / month / day + let date = Date.fromString("1976-02-02"); + assert(date.getTime() == 192067200000); + date = Date.fromString("1976-2-2"); + assert(date.getTime() == 192067200000); + date = Date.fromString("2345-11-04"); + assert(date.getTime() == 11860387200000); + + // supports year / month / day / hour / minute / second + date = Date.fromString("1976-02-02T12:34:56"); + assert(date.getTime() == 192112496000); + + // supports milliseconds + date = Date.fromString("1976-02-02T12:34:56.456"); + assert(date.getTime() == 192112496456); + + // supports 'Z' suffix (UTC) + date = Date.fromString("1976-02-02T12:34:56.456Z"); + assert(date.getTime() == 192112496456); + + // supports negative offset from UTC + date = Date.fromString("1976-02-02T12:34:56.456-08:00"); + assert(date.getTime() == 192141296456); + + // supports positive offset from UTC + date = Date.fromString("1976-02-02T12:34:56.456+05:30"); + assert(date.getTime() == 192092696456); + + // allows fewer than 3 decimal places + date = Date.fromString("1976-02-02T12:34:56.45"); + assert(date.getTime() == 192112496450); + + // allows fewer than 3 decimal places (with Z) + date = Date.fromString("1976-02-02T12:34:56.45Z"); + assert(date.getTime() == 192112496450); + + // allows fewer than 3 decimal places (with offset) + date = Date.fromString("1976-02-02T12:34:56.45+00:00"); + assert(date.getTime() == 192112496450); + + // truncates more than 3 decimal places + date = Date.fromString("1976-02-02T12:34:56.456789"); + assert(date.getTime() == 192112496456); + + // truncates more than 3 decimal places (with Z) + date = Date.fromString("1976-02-02T12:34:56.456789Z"); + assert(date.getTime() == 192112496456); + + // truncates more than 3 decimal places (with offset) + date = Date.fromString("1976-02-02T12:34:56.456789+00:00"); + assert(date.getTime() == 192112496456); + + date = Date.fromString("0000"); + assert(date.getTime() == -62167219200000); + + date = Date.fromString("0001"); + assert(date.getTime() == -62135596800000); + + date = Date.fromString("1976"); + assert(date.getTime() == 189302400000); + + date = Date.fromString("1976-02"); + assert(date.getTime() == 191980800000); + + date = Date.fromString("1976-02-02"); + assert(date.getTime() == 192067200000); + + date = Date.fromString("1976-02-02T12:34"); + assert(date.getTime() == 192112440000); + + date = Date.fromString("1976-02-02T12:34:56"); + assert(date.getTime() == 192112496000); + + // date = Date.fromString('0Z'); + // assert(date.getTime() == 946684800000); // FIXME: fail + + // date = Date.fromString('000Z'); + // assert(date.getTime() == 946684800000); // FIXME: fail + + // Date.fromString(""); // Invalid Date + // Date.fromString("1000000"); // Invalid Date + // Date.fromString("1976-02-02T12"); // Invalid Date +} + +// Minimum / Maximum dates //////////////////////////////////////////////////////////////////////// +{ + let minDate = new Date(-8640000000000000); + let maxDate = new Date( 8640000000000000); + + assert(minDate.getTime() == -8640000000000000); + assert(maxDate.getTime() == 8640000000000000); + + assert(minDate.getUTCFullYear() == -271821); + assert(maxDate.getUTCFullYear() == 275760); + + assert(minDate.getUTCMonth() == 3); + assert(maxDate.getUTCMonth() == 8); + + assert(minDate.getUTCDate() == 20); + assert(maxDate.getUTCDate() == 13); + + assert(minDate.toISOString() == "-271821-04-20T00:00:00.000Z"); + assert(maxDate.toISOString() == "+275760-09-13T00:00:00.000Z"); + + let maxDateDec = new Date( 8640000000000000 - 1); + let minDateInc = new Date(-8640000000000000 + 1); + + assert(minDateInc.getUTCFullYear() == -271821); + assert(minDateInc.getUTCMonth() == 3); + assert(minDateInc.getUTCDate() == 20); + assert(minDateInc.getUTCHours() == 0); + assert(minDateInc.getUTCMinutes() == 0); + assert(minDateInc.getUTCSeconds() == 0); + assert(minDateInc.getUTCMilliseconds() == 1); + + assert(maxDateDec.toISOString() == "+275760-09-12T23:59:59.999Z"); + assert(minDateInc.toISOString() == "-271821-04-20T00:00:00.001Z"); + + // new Date(maxDate.getTime() + 1); // Invalid Date + // new Date(minDate.getTime() - 1); // Invalid Date +} diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 1455f2e847..7d2b34a8ad 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -1,345 +1,11395 @@ (module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i32_=>_i64 (func (param i32) (result i64))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_i32_i32_i32_i32_=>_i64 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i64_=>_i64 (func (param i32 i64) (result i64))) - (type $none_=>_f64 (func (result f64))) - (type $i32_i32_i32_i32_i32_i32_f64_=>_f64 (func (param i32 i32 i32 i32 i32 i32 f64) (result f64))) - (import "Date" "UTC" (func $~lib/bindings/Date/UTC (param i32 i32 i32 i32 i32 i32 f64) (result f64))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) + (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "Date" "now" (func $~lib/bindings/Date/now (result f64))) + (global $~lib/date/_day (mut i32) (i32.const 0)) + (global $~lib/date/_month (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 6480)) + (global $~lib/memory/__data_end i32 (i32.const 6540)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 22924)) + (global $~lib/memory/__heap_base i32 (i32.const 22924)) + (global $~started (mut i32) (i32.const 0)) (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00D\00a\00t\00e\00\00\00\00\00") + (data (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00") + (data (i32.const 108) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data (i32.const 464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 492) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 556) "\00\03\02\05\00\03\05\01\04\06\02\04") + (data (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 636) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data (i32.const 764) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 860) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 1260) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2316) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data (i32.const 2412) "\1c\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") + (data (i32.const 2444) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00T\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00Z\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2572) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2652) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00-\000\000\000\000\000\001\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00") + (data (i32.const 2732) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\000\000\000\001\00-\000\004\00-\000\007\00T\002\003\00:\000\006\00:\004\000\00.\000\000\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2812) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\000\002\000\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2892) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\002\000\000\009\00-\000\001\00-\000\006\00T\000\008\00:\004\000\00:\003\001\00.\004\005\006\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2972) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00+\000\001\002\001\008\004\00-\000\004\00-\000\008\00T\001\003\00:\000\007\00:\001\001\00.\000\002\000\00Z\00\00\00\00\00\00\00") + (data (i32.const 3052) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\009\009\009\009\00-\001\002\00-\003\001\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3132) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00+\000\001\000\000\000\000\00-\000\001\00-\000\001\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") + (data (i32.const 3212) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00-\000\000\000\000\002\002\00-\000\006\00-\001\006\00T\001\007\00:\001\003\00:\005\000\00.\007\007\004\00Z\00\00\00\00\00\00\00") + (data (i32.const 3292) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00S\00u\00n\00 \00\00\00\00\00") + (data (i32.const 3324) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00M\00o\00n\00 \00\00\00\00\00") + (data (i32.const 3356) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00T\00u\00e\00 \00\00\00\00\00") + (data (i32.const 3388) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00W\00e\00d\00 \00\00\00\00\00") + (data (i32.const 3420) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00T\00h\00u\00 \00\00\00\00\00") + (data (i32.const 3452) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00F\00r\00i\00 \00\00\00\00\00") + (data (i32.const 3484) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00S\00a\00t\00 \00\00\00\00\00") + (data (i32.const 3516) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\1c\00\00\00\f0\0c\00\00\10\0d\00\000\0d\00\00P\0d\00\00p\0d\00\00\90\0d\00\00\b0\0d\00\00") + (data (i32.const 3564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00J\00a\00n\00 \00\00\00\00\00") + (data (i32.const 3596) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00F\00e\00b\00 \00\00\00\00\00") + (data (i32.const 3628) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00M\00a\00r\00 \00\00\00\00\00") + (data (i32.const 3660) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00p\00r\00 \00\00\00\00\00") + (data (i32.const 3692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00M\00a\00y\00 \00\00\00\00\00") + (data (i32.const 3724) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00J\00u\00n\00 \00\00\00\00\00") + (data (i32.const 3756) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00J\00u\00l\00 \00\00\00\00\00") + (data (i32.const 3788) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00u\00g\00 \00\00\00\00\00") + (data (i32.const 3820) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00S\00e\00p\00 \00\00\00\00\00") + (data (i32.const 3852) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00O\00c\00t\00 \00\00\00\00\00") + (data (i32.const 3884) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00N\00o\00v\00 \00\00\00\00\00") + (data (i32.const 3916) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00D\00e\00c\00 \00\00\00\00\00") + (data (i32.const 3948) "L\00\00\00\00\00\00\00\00\00\00\00\04\00\00\000\00\00\00\00\0e\00\00 \0e\00\00@\0e\00\00`\0e\00\00\80\0e\00\00\a0\0e\00\00\c0\0e\00\00\e0\0e\00\00\00\0f\00\00 \0f\00\00@\0f\00\00`\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4028) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4060) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00W\00e\00d\00 \00J\00a\00n\00 \000\001\00 \000\000\002\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4124) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00S\00u\00n\00 \00F\00e\00b\00 \000\002\00 \002\000\002\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4188) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00T\00h\00u\00 \00J\00u\00l\00 \000\001\00 \00-\000\000\000\001\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4252) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\000\000\00:\000\000\00:\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4300) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\002\003\00:\005\009\00:\005\009\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00u\00n\00,\00 \00\00\00") + (data (i32.const 4380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00o\00n\00,\00 \00\00\00") + (data (i32.const 4412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00T\00u\00e\00,\00 \00\00\00") + (data (i32.const 4444) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00W\00e\00d\00,\00 \00\00\00") + (data (i32.const 4476) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00T\00h\00u\00,\00 \00\00\00") + (data (i32.const 4508) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00F\00r\00i\00,\00 \00\00\00") + (data (i32.const 4540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00a\00t\00,\00 \00\00\00") + (data (i32.const 4572) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\1c\00\00\00\10\11\00\000\11\00\00P\11\00\00p\11\00\00\90\11\00\00\b0\11\00\00\d0\11\00\00") + (data (i32.const 4620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00J\00a\00n\00 \00\00\00") + (data (i32.const 4652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00F\00e\00b\00 \00\00\00") + (data (i32.const 4684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00M\00a\00r\00 \00\00\00") + (data (i32.const 4716) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00A\00p\00r\00 \00\00\00") + (data (i32.const 4748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00M\00a\00y\00 \00\00\00") + (data (i32.const 4780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00J\00u\00n\00 \00\00\00") + (data (i32.const 4812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00J\00u\00l\00 \00\00\00") + (data (i32.const 4844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00A\00u\00g\00 \00\00\00") + (data (i32.const 4876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00S\00e\00p\00 \00\00\00") + (data (i32.const 4908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00O\00c\00t\00 \00\00\00") + (data (i32.const 4940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00N\00o\00v\00 \00\00\00") + (data (i32.const 4972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00D\00e\00c\00 \00\00\00") + (data (i32.const 5004) "L\00\00\00\00\00\00\00\00\00\00\00\04\00\00\000\00\00\00 \12\00\00@\12\00\00`\12\00\00\80\12\00\00\a0\12\00\00\c0\12\00\00\e0\12\00\00\00\13\00\00 \13\00\00@\13\00\00`\13\00\00\80\13\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5084) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00 \00G\00M\00T\00\00\00\00\00") + (data (i32.const 5116) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00:\00\00\00W\00e\00d\00,\00 \000\001\00 \00J\00a\00n\00 \000\000\002\000\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T\00\00\00") + (data (i32.const 5196) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00:\00\00\00M\00o\00n\00,\00 \000\003\00 \00F\00e\00b\00 \002\000\002\000\00 \001\004\00:\005\003\00:\003\003\00 \00G\00M\00T\00\00\00") + (data (i32.const 5276) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00<\00\00\00T\00h\00u\00,\00 \000\001\00 \00J\00u\00l\00 \00-\000\000\000\001\00 \000\000\00:\000\000\00:\000\000\00 \00G\00M\00T\00") + (data (i32.const 5356) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\001\009\007\006\00-\000\002\00-\000\002\00\00\00\00\00\00\00\00\00") + (data (i32.const 5404) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 5452) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data (i32.const 5500) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5628) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\009\007\006\00-\002\00-\002\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5676) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\002\003\004\005\00-\001\001\00-\000\004\00\00\00\00\00\00\00\00\00") + (data (i32.const 5724) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00\00\00\00\00\00\00") + (data (i32.const 5788) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00.\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5868) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00:\005\006\00.\004\005\006\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\000\000\000\00\00\00\00\00") + (data (i32.const 5980) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\000\000\001\00\00\00\00\00") + (data (i32.const 6012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\009\007\006\00\00\00\00\00") + (data (i32.const 6044) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\009\007\006\00-\000\002\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6092) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\001\009\007\006\00-\000\002\00-\000\002\00T\001\002\00:\003\004\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6156) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") + (data (i32.const 6236) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\003\00T\000\000\00:\000\000\00:\000\000\00.\000\000\000\00Z\00\00\00\00\00\00\00") + (data (i32.const 6316) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00+\002\007\005\007\006\000\00-\000\009\00-\001\002\00T\002\003\00:\005\009\00:\005\009\00.\009\009\009\00Z\00\00\00\00\00\00\00") + (data (i32.const 6396) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00-\002\007\001\008\002\001\00-\000\004\00-\002\000\00T\000\000\00:\000\000\00:\000\000\00.\000\000\001\00Z\00\00\00\00\00\00\00") + (data (i32.const 6480) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\04A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\t\00\00\00\00\00\00") (table $0 1 funcref) - (global $std/date/creationTime (mut i64) (i64.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $std/date/date (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 56)) + (elem $0 (i32.const 1)) (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) + (export "_start" (func $~start)) + (func $~lib/date/daysSinceEpoch (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - memory.size - local.set $1 + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 local.get $1 - i32.const 16 - i32.shl - local.set $2 + i32.const 2 + i32.le_s + i32.sub + local.set $0 local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 + local.set $4 + i32.const 400 + local.set $3 + local.get $4 + i32.const 0 + i32.ge_s + if (result i32) local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 + else local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end + local.get $3 + i32.sub + i32.const 1 + i32.add + end + local.get $3 + i32.div_s + local.set $5 + local.get $0 + local.get $5 + i32.const 400 + i32.mul + i32.sub + local.set $6 + i32.const 153 + local.get $1 + local.get $1 + i32.const 2 + i32.gt_s + if (result i32) + i32.const -3 + else + i32.const 9 end + i32.add + i32.mul + i32.const 2 + i32.add + i32.const 5 + i32.div_u + local.get $2 + i32.add + i32.const 1 + i32.sub + local.set $7 + local.get $6 + i32.const 365 + i32.mul + local.get $6 + i32.const 4 + i32.div_u + i32.add + local.get $6 + i32.const 100 + i32.div_u + i32.sub + local.get $7 + i32.add + local.set $8 + local.get $5 + i32.const 146097 + i32.mul + local.get $8 + i32.add + i32.const 719468 + i32.sub + ) + (func $~lib/date/epochMillis (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i64) + local.get $0 + local.get $1 + local.get $2 + call $~lib/date/daysSinceEpoch + i64.extend_i32_s + i32.const 86400000 + i64.extend_i32_s + i64.mul + local.get $3 + i32.const 3600000 + i32.mul + i64.extend_i32_s + i64.add + local.get $4 + i32.const 60000 + i32.mul + i64.extend_i32_s + i64.add + local.get $5 + i32.const 1000 + i32.mul + i64.extend_i32_s + i64.add + local.get $6 + i64.extend_i32_s + i64.add + ) + (func $~lib/date/invalidDate (param $0 i64) (result i32) local.get $0 - global.set $~lib/rt/stub/offset + i64.const -8640000000000000 + i64.lt_s + local.get $0 + i64.const 8640000000000000 + i64.gt_s + i32.or ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/date/ymdFromEpochDays (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.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 + i32.const 719468 i32.add + local.set $0 + local.get $0 local.set $2 + i32.const 146097 + local.set $1 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + else + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + end + local.get $1 + i32.div_s + local.set $3 local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 local.get $3 + i32.const 146097 + i32.mul + i32.sub + local.set $4 local.get $4 - i32.gt_u - select + local.get $4 + i32.const 1460 + i32.div_u + i32.sub + local.get $4 + i32.const 36524 + i32.div_u + i32.add + local.get $4 + i32.const 146096 + i32.div_u + i32.sub + i32.const 365 + i32.div_u local.set $5 - local.get $2 local.get $5 + local.get $3 + i32.const 400 + i32.mul i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub local.set $6 - local.get $6 + local.get $4 + i32.const 365 local.get $5 - i32.store + i32.mul + local.get $5 + i32.const 4 + i32.div_u + i32.add + local.get $5 + i32.const 100 + i32.div_u + i32.sub + i32.sub + local.set $7 + i32.const 5 + local.get $7 + i32.mul + i32.const 2 + i32.add + i32.const 153 + i32.div_s + local.set $8 + local.get $7 + i32.const 153 + local.get $8 + i32.mul + i32.const 2 + i32.add + i32.const 5 + i32.div_u + i32.sub i32.const 1 - drop + i32.add + global.set $~lib/date/_day + local.get $8 + local.get $8 + i32.const 10 + i32.lt_s + if (result i32) + i32.const 3 + else + i32.const -9 + end + i32.add + local.set $8 + local.get $8 + global.set $~lib/date/_month local.get $6 - i32.const 1 - i32.store offset=4 + local.get $8 + i32.const 2 + i32.le_s + i32.add + local.set $6 local.get $6 + ) + (func $~lib/date/Date#set:year (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/date/Date#set:month (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/date/Date#set:day (param $0 i32) (param $1 i32) + local.get $0 local.get $1 i32.store offset=8 - local.get $6 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.store offset=12 - local.get $2 + local.get $1 + i32.store offset=4 ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + i32.store offset=8 ) - (func $~lib/date/Date#constructor (param $0 i32) (param $1 i64) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.eqz - if - i32.const 8 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end local.get $0 - i64.const 0 - i64.store + call $~lib/rt/itcms/Object#set:nextWithColor local.get $0 - local.get $1 - i64.store + local.get $0 + call $~lib/rt/itcms/Object#set:prev local.get $0 ) - (func $~lib/date/Date#getTime (param $0 i32) (result i64) + (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) local.get $0 - i64.load + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and ) - (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) (result i64) + (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32) local.get $0 - local.get $1 - i64.store - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and ) - (func $start:std/date - (local $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - i32.const 1970 - local.set $2 - i32.const 0 - local.set $1 - i32.const 1 - local.set $0 - i32.const 0 - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - i64.const 0 - local.set $6 - local.get $2 - local.get $1 local.get $0 - local.get $3 - local.get $4 - local.get $5 - local.get $6 - f64.convert_i64_s - call $~lib/bindings/Date/UTC - i64.trunc_f64_s - i64.const 0 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1970 - local.set $5 - i32.const 0 - local.set $4 - i32.const 1 - local.set $3 - i32.const 0 - local.set $2 - i32.const 0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace local.set $1 - i32.const 0 - local.set $0 - i64.const 0 - local.set $6 - local.get $5 - local.get $4 - local.get $3 - local.get $2 local.get $1 - local.get $0 - local.get $6 - f64.convert_i64_s - call $~lib/bindings/Date/UTC - i64.trunc_f64_s - i64.const 0 - i64.eq + call $~lib/rt/itcms/Object#get:next + local.set $2 + loop $while-continue|0 + local.get $2 + local.get $1 + i32.ne + local.set $3 + local.get $3 + if + i32.const 1 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 159 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $2 + call $~lib/rt/itcms/Object#get:next + local.set $2 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 + local.get $1 + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $0 + i32.load offset=8 + i32.const 0 + i32.eq + if (result i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 i32.eqz if i32.const 0 - i32.const 32 - i32.const 2 - i32.const 1 + i32.const 240 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - i32.const 2018 - local.set $5 - i32.const 10 - local.set $4 - i32.const 10 - local.set $3 - i32.const 11 - local.set $2 - i32.const 0 + local.get $1 + local.get $2 + call $~lib/rt/itcms/Object#set:prev + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base local.set $1 - i32.const 0 - local.set $0 - i64.const 1 - local.set $6 - local.get $5 - local.get $4 - local.get $3 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 368 + i32.const 432 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + ) + (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 local.get $2 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + local.get $3 + call $~lib/rt/itcms/Object#set:prev + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next local.get $1 local.get $0 - local.get $6 - f64.convert_i64_s - call $~lib/bindings/Date/UTC - i64.trunc_f64_s - global.set $std/date/creationTime - global.get $std/date/creationTime - i64.const 1541847600001 - i64.eq + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 240 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 32 - i32.const 5 + return + end + local.get $0 + i32.const 20 + i32.sub + local.set $2 + i32.const 0 + drop + local.get $2 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $2 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + global.set $~lib/rt/itcms/visitCount end - call $~lib/bindings/Date/now - i64.trunc_f64_s - global.get $std/date/creationTime - i64.gt_s + ) + (func $~lib/rt/itcms/visitStack (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/memory/__heap_base + i32.lt_u + local.set $2 + local.get $2 + if + local.get $1 + i32.load + local.get $0 + call $~lib/rt/itcms/__visit + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) + i32.const 4 + local.get $0 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/tlsf/removeBlock (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 $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and i32.eqz if i32.const 0 - i32.const 32 - i32.const 7 - i32.const 1 + i32.const 512 + i32.const 268 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 + local.get $2 + i32.const 3 i32.const -1 i32.xor i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - global.get $std/date/creationTime - call $~lib/date/Date#constructor - global.set $std/date/date - global.get $std/date/date - call $~lib/date/Date#getTime - global.get $std/date/creationTime - i64.eq + local.set $3 + i32.const 1 + drop + local.get $3 + i32.const 12 + i32.ge_u i32.eqz if i32.const 0 - i32.const 32 - i32.const 10 - i32.const 1 + i32.const 512 + i32.const 270 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $std/date/date - global.get $std/date/creationTime - i64.const 1 - i64.add - call $~lib/date/Date#setTime + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + local.get $3 + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $6 + i32.const 31 + local.get $6 + i32.clz + i32.sub + local.set $4 + local.get $6 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + i32.const 1 drop - global.get $std/date/date - call $~lib/date/Date#getTime - global.get $std/date/creationTime - i64.const 1 - i64.add - i64.eq + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 32 - i32.const 12 - i32.const 1 + i32.const 512 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:std/date + local.get $1 + i32.load offset=4 + local.set $8 + local.get $1 + i32.load offset=8 + local.set $9 + local.get $8 + if + local.get $8 + local.get $9 + call $~lib/rt/tlsf/Block#set:next + end + local.get $9 + if + local.get $9 + local.get $8 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $6 + local.get $5 + local.set $7 + local.get $10 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $6 + local.get $9 + local.set $7 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + local.get $9 + i32.eqz + if + local.get $0 + local.set $6 + local.get $4 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + local.get $0 + local.set $7 + local.get $4 + local.set $11 + local.get $6 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $6 + local.set $10 + local.get $7 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (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 $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 1 + drop + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + local.set $3 + local.get $3 + i32.load + local.set $6 + i32.const 1 + drop + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.set $1 + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $2 + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $7 + i32.const 1 + drop + local.get $7 + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $7 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $8 + local.get $7 + i32.const 4 + i32.shr_u + local.set $9 + else + local.get $7 + local.tee $3 + i32.const 1073741820 + local.tee $6 + local.get $3 + local.get $6 + i32.lt_u + select + local.set $3 + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $8 + local.get $3 + local.get $8 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $9 + local.get $8 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $8 + end + i32.const 1 + drop + local.get $8 + i32.const 23 + i32.lt_u + if (result i32) + local.get $9 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $10 + local.get $8 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $1 + local.get $11 + call $~lib/rt/tlsf/Block#set:next + local.get $11 + if + local.get $11 + local.get $1 + call $~lib/rt/tlsf/Block#set:prev + end + local.get $0 + local.set $12 + local.get $8 + local.set $10 + local.get $9 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $10 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $8 + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $0 + local.set $13 + local.get $8 + local.set $12 + local.get $0 + local.set $3 + local.get $8 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $9 + i32.shl + i32.or + local.set $10 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (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) + i32.const 1 + drop + local.get $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 377 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $2 + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $2 + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + i32.const 1 + drop + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 384 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + i32.const 1 + drop + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 397 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $1 + i32.const 4 + i32.add + local.get $7 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initialize + (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) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $0 + memory.size + local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $3 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $3 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + i32.const 1572 + i32.add + local.set $12 + i32.const 0 + drop + local.get $3 + local.get $12 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $0 i32) + local.get $0 + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $0 + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $0 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#get:color + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + local.get $0 + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $2 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $2 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $2 + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $0 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $0 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + ) + (func $~lib/rt/itcms/interrupt + (local $0 i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + ) + (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 176 + i32.const 512 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/computeSize + ) + (func $~lib/rt/tlsf/searchBlock (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.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + i32.const 1 + drop + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 330 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + i32.const 1 + drop + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 343 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 0 + drop + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 4 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + i32.const 1 + drop + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 4 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 512 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + ) + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + block $~lib/util/memory/memset|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + i32.const 0 + i32.const 1 + i32.gt_s + drop + local.get $3 + i32.eqz + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + local.get $3 + i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 + i32.const 1 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 2 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + local.get $4 + i32.store8 offset=1 + local.get $5 + local.get $4 + i32.store8 offset=2 + local.get $6 + i32.const 2 + i32.sub + local.get $4 + i32.store8 + local.get $6 + i32.const 3 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 6 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + local.get $4 + i32.store8 offset=3 + local.get $6 + i32.const 4 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + i32.const 0 + local.get $5 + i32.sub + i32.const 3 + i32.and + local.set $7 + local.get $5 + local.get $7 + i32.add + local.set $5 + local.get $3 + local.get $7 + i32.sub + local.set $3 + local.get $3 + i32.const -4 + i32.and + local.set $3 + i32.const -1 + i32.const 255 + i32.div_u + local.get $4 + i32.const 255 + i32.and + i32.mul + local.set $8 + local.get $5 + local.get $3 + i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 + i32.const 4 + i32.sub + local.get $8 + i32.store + local.get $3 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + local.get $8 + i32.store offset=4 + local.get $5 + local.get $8 + i32.store offset=8 + local.get $6 + i32.const 12 + i32.sub + local.get $8 + i32.store + local.get $6 + i32.const 8 + i32.sub + local.get $8 + i32.store + local.get $3 + i32.const 24 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + local.get $8 + i32.store offset=12 + local.get $5 + local.get $8 + i32.store offset=16 + local.get $5 + local.get $8 + i32.store offset=20 + local.get $5 + local.get $8 + i32.store offset=24 + local.get $6 + i32.const 28 + i32.sub + local.get $8 + i32.store + local.get $6 + i32.const 24 + i32.sub + local.get $8 + i32.store + local.get $6 + i32.const 20 + i32.sub + local.get $8 + i32.store + local.get $6 + i32.const 16 + i32.sub + local.get $8 + i32.store + i32.const 24 + local.get $5 + i32.const 4 + i32.and + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.add + local.set $5 + local.get $3 + local.get $7 + i32.sub + local.set $3 + local.get $8 + i64.extend_i32_u + local.get $8 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + local.set $9 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $10 + local.get $10 + if + local.get $5 + local.get $9 + i64.store + local.get $5 + local.get $9 + i64.store offset=8 + local.get $5 + local.get $9 + i64.store offset=16 + local.get $5 + local.get $9 + i64.store offset=24 + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $while-continue|0 + end + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 176 + i32.const 240 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $2 + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 + i32.const 0 + local.get $0 + call $~lib/memory/memory.fill + local.get $3 + ) + (func $~lib/date/Date#set:epochMillis (param $0 i32) (param $1 i64) + local.get $0 + local.get $1 + i64.store offset=16 + ) + (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) (result i64) + (local $2 i64) + (local $3 i64) + local.get $1 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 107 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/date/Date#set:epochMillis + local.get $0 + local.get $1 + local.set $3 + i32.const 86400000 + i64.extend_i32_s + local.set $2 + local.get $3 + i64.const 0 + i64.ge_s + if (result i64) + local.get $3 + else + local.get $3 + local.get $2 + i64.sub + i64.const 1 + i64.add + end + local.get $2 + i64.div_s + i32.wrap_i64 + call $~lib/date/ymdFromEpochDays + call $~lib/date/Date#set:year + local.get $0 + global.get $~lib/date/_month + call $~lib/date/Date#set:month + local.get $0 + global.get $~lib/date/_day + call $~lib/date/Date#set:day + local.get $1 + ) + (func $~lib/date/Date#getUTCHours (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.load offset=16 + local.set $2 + i32.const 86400000 + i64.extend_i32_s + local.set $1 + local.get $2 + local.get $1 + i64.rem_s + local.set $3 + local.get $3 + local.get $3 + i64.const 0 + i64.lt_s + if (result i64) + local.get $1 + else + i64.const 0 + end + i64.add + i32.wrap_i64 + i32.const 3600000 + i32.div_s + ) + (func $~lib/date/Date#getUTCMinutes (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.load offset=16 + local.set $2 + i32.const 3600000 + i64.extend_i32_s + local.set $1 + local.get $2 + local.get $1 + i64.rem_s + local.set $3 + local.get $3 + local.get $3 + i64.const 0 + i64.lt_s + if (result i64) + local.get $1 + else + i64.const 0 + end + i64.add + i32.wrap_i64 + i32.const 60000 + i32.div_s + ) + (func $~lib/date/Date#getUTCSeconds (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.load offset=16 + local.set $2 + i32.const 60000 + i64.extend_i32_s + local.set $1 + local.get $2 + local.get $1 + i64.rem_s + local.set $3 + local.get $3 + local.get $3 + i64.const 0 + i64.lt_s + if (result i64) + local.get $1 + else + i64.const 0 + end + i64.add + i32.wrap_i64 + i32.const 1000 + i32.div_s + ) + (func $~lib/date/Date#getUTCMilliseconds (param $0 i32) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.load offset=16 + local.set $2 + i32.const 1000 + i64.extend_i32_s + local.set $1 + local.get $2 + local.get $1 + i64.rem_s + local.set $3 + local.get $3 + local.get $3 + i64.const 0 + i64.lt_s + if (result i64) + local.get $1 + else + i64.const 0 + end + i64.add + i32.wrap_i64 + ) + (func $~lib/date/Date#setUTCMilliseconds (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i64.load offset=16 + local.get $1 + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.sub + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + drop + ) + (func $~lib/date/Date#setUTCSeconds (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i64.load offset=16 + local.get $1 + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.sub + i32.const 1000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + drop + ) + (func $~lib/date/Date#setUTCMinutes (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i64.load offset=16 + local.get $1 + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.sub + i32.const 60000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + drop + ) + (func $~lib/date/Date#setUTCHours (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i64.load offset=16 + local.get $1 + local.get $0 + call $~lib/date/Date#getUTCHours + i32.sub + i32.const 3600000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + drop + ) + (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i64) + local.get $0 + i32.load offset=8 + local.get $1 + i32.eq + if + return + end + local.get $0 + i64.load offset=16 + local.set $3 + i32.const 86400000 + i64.extend_i32_s + local.set $2 + local.get $3 + local.get $2 + i64.rem_s + local.set $4 + local.get $4 + local.get $4 + i64.const 0 + i64.lt_s + if (result i64) + local.get $2 + else + i64.const 0 + end + i64.add + local.set $5 + local.get $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/date/daysSinceEpoch + i64.extend_i32_s + i32.const 86400000 + i64.extend_i32_s + i64.mul + local.get $5 + i64.add + call $~lib/date/Date#setTime + drop + ) + (func $~lib/date/Date#setUTCMonth (param $0 i32) (param $1 i32) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.eq + if + return + end + local.get $0 + i64.load offset=16 + local.set $3 + i32.const 86400000 + i64.extend_i32_s + local.set $2 + local.get $3 + local.get $2 + i64.rem_s + local.set $4 + local.get $4 + local.get $4 + i64.const 0 + i64.lt_s + if (result i64) + local.get $2 + else + i64.const 0 + end + i64.add + local.set $5 + local.get $0 + local.get $0 + i32.load + local.get $1 + i32.const 1 + i32.add + local.get $0 + i32.load offset=8 + call $~lib/date/daysSinceEpoch + i64.extend_i32_s + i32.const 86400000 + i64.extend_i32_s + i64.mul + local.get $5 + i64.add + call $~lib/date/Date#setTime + drop + ) + (func $~lib/date/Date#setUTCFullYear (param $0 i32) (param $1 i32) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i64) + local.get $0 + i32.load + local.get $1 + i32.eq + if + return + end + local.get $0 + i64.load offset=16 + local.set $3 + i32.const 86400000 + i64.extend_i32_s + local.set $2 + local.get $3 + local.get $2 + i64.rem_s + local.set $4 + local.get $4 + local.get $4 + i64.const 0 + i64.lt_s + if (result i64) + local.get $2 + else + i64.const 0 + end + i64.add + local.set $5 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + call $~lib/date/daysSinceEpoch + i64.extend_i32_s + i32.const 86400000 + i64.extend_i32_s + i64.mul + local.get $5 + i64.add + call $~lib/date/Date#setTime + drop + ) + (func $~lib/date/dayOfWeek (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + i32.const 3 + i32.lt_s + i32.sub + local.set $0 + local.get $0 + local.get $0 + local.set $4 + i32.const 4 + local.set $3 + local.get $4 + i32.const 0 + i32.ge_s + if (result i32) + local.get $4 + else + local.get $4 + local.get $3 + i32.sub + i32.const 1 + i32.add + end + local.get $3 + i32.div_s + local.get $0 + local.set $4 + i32.const 100 + local.set $3 + local.get $4 + i32.const 0 + i32.ge_s + if (result i32) + local.get $4 + else + local.get $4 + local.get $3 + i32.sub + i32.const 1 + i32.add + end + local.get $3 + i32.div_s + i32.sub + local.get $0 + local.set $4 + i32.const 400 + local.set $3 + local.get $4 + i32.const 0 + i32.ge_s + if (result i32) + local.get $4 + else + local.get $4 + local.get $3 + i32.sub + i32.const 1 + i32.add + end + local.get $3 + i32.div_s + i32.add + i32.add + local.set $0 + i32.const 556 + local.get $1 + i32.add + i32.const 1 + i32.sub + i32.load8_u + local.set $1 + local.get $0 + local.get $1 + i32.add + local.get $2 + i32.add + local.set $4 + i32.const 7 + local.set $3 + local.get $4 + local.get $3 + i32.rem_s + local.set $5 + local.get $5 + local.get $5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + else + i32.const 0 + end + i32.add + ) + (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) + local.get $0 + i32.const 100000 + i32.lt_u + if + local.get $0 + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $0 + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $0 + i32.const 10000 + i32.ge_u + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $0 + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $0 + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $3 + local.get $3 + if + local.get $1 + i32.const 10000 + i32.div_u + local.set $4 + local.get $1 + i32.const 10000 + i32.rem_u + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $7 + i32.const 860 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + i32.const 860 + local.get $7 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $9 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $9 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $1 + i32.const 100 + i32.div_u + local.set $3 + local.get $1 + i32.const 100 + i32.rem_u + local.set $10 + local.get $3 + local.set $1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 860 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $11 + i32.store + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 860 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $11 + i32.store + else + local.get $2 + i32.const 1 + i32.sub + local.set $2 + i32.const 48 + local.get $1 + i32.add + local.set $11 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $11 + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $2 + i32.const 2 + i32.ge_u + local.set $3 + local.get $3 + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 1280 + local.get $1 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i64.const 8 + i64.shr_u + local.set $1 + br $while-continue|0 + end + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + i32.const 1280 + local.get $1 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i64) + (local $5 i32) + local.get $1 + local.set $2 + local.get $2 + i32.popcnt + i32.const 1 + i32.eq + if + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $1 + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $1 + i64.extend_i32_s + local.set $3 + local.get $3 + local.set $4 + i32.const 1 + local.set $5 + loop $while-continue|0 + local.get $0 + local.get $4 + i64.ge_u + local.set $2 + local.get $2 + if + local.get $0 + local.get $4 + i64.div_u + local.set $0 + local.get $4 + local.get $4 + i64.mul + local.set $4 + local.get $5 + i32.const 1 + i32.shl + local.set $5 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $0 + i64.const 1 + i64.ge_u + local.set $2 + local.get $2 + if + local.get $0 + local.get $3 + i64.div_u + local.set $0 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $while-continue|1 + end + end + local.get $5 + i32.const 1 + i32.sub + ) + (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) + (local $4 i64) + (local $5 i64) + (local $6 i64) + local.get $3 + i64.extend_i32_s + local.set $4 + local.get $3 + local.get $3 + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $3 + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $5 + local.get $4 + i64.const 1 + i64.sub + local.set $6 + loop $do-loop|0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 2336 + local.get $1 + local.get $6 + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $1 + local.get $5 + i64.shr_u + local.set $1 + local.get $1 + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $1 + local.get $4 + i64.div_u + local.set $6 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 2336 + local.get $1 + local.get $6 + local.get $4 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $6 + local.set $1 + local.get $1 + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/I32#toString (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/util/number/itoa32 + ) + (func $~lib/string/String#get:length (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + ) + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.const 3 + i32.and + i32.const 0 + i32.eq + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + br $break|2 + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $4 + local.get $5 + i32.sub + local.get $3 + i32.sub + i32.const 0 + local.get $3 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/memory/memory.repeat (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + i32.const 0 + local.set $4 + local.get $2 + local.get $3 + i32.mul + local.set $5 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.lt_u + local.set $6 + local.get $6 + if + local.get $0 + local.get $4 + i32.add + local.get $1 + local.get $2 + call $~lib/memory/memory.copy + local.get $4 + local.get $2 + i32.add + local.set $4 + br $while-continue|0 + end + end + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String#concat + ) + (func $~lib/util/string/compareImpl (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) + (local $8 i32) + (local $9 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/itcms/__new + local.set $3 + local.get $2 + if + local.get $3 + local.get $2 + local.get $0 + call $~lib/memory/memory.copy + end + local.get $3 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__uget (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/string/String#indexOf (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.get $1 + call $~lib/string/String#get:length + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $4 + local.get $4 + i32.eqz + if + i32.const -1 + return + end + local.get $2 + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.tee $6 + local.get $4 + local.tee $5 + local.get $6 + local.get $5 + i32.lt_s + select + local.set $7 + local.get $4 + local.get $3 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $7 + local.get $4 + i32.le_s + local.set $6 + local.get $6 + if + local.get $0 + local.get $7 + local.get $1 + i32.const 0 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + if + local.get $7 + return + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end + i32.const -1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.eqz + if + return + end + i32.const 1 + drop + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 240 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 20 + i32.sub + local.set $3 + local.get $3 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.set $4 + local.get $4 + call $~lib/rt/itcms/Object#get:color + local.set $5 + local.get $5 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $4 + call $~lib/rt/itcms/Object#makeGray + else + local.get $3 + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $5 + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $3 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array<~lib/string/String>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $1 + local.get $2 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtSize + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + local.get $0 + local.get $1 + local.tee $4 + local.get $2 + i32.load offset=16 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + call $~lib/memory/memory.copy + local.get $3 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $1 + local.get $4 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 5424 + i32.const 5472 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $5 + local.get $1 + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $2 + i32.shl + local.set $6 + local.get $3 + if + local.get $4 + i32.const 1 + i32.shl + local.tee $7 + i32.const 1073741820 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_u + select + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.gt_u + select + local.set $6 + end + local.get $5 + local.get $6 + call $~lib/rt/itcms/__renew + local.set $8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $8 + local.get $5 + i32.ne + if + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + i32.store offset=4 + local.get $0 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $6 + i32.store offset=8 + end + ) + (func $~lib/array/Array<~lib/string/String>#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $3 + call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $3 + ) + (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/util/string/isSpace (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 5760 + i32.lt_u + if + local.get $0 + i32.const 128 + i32.or + i32.const 160 + i32.eq + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 9 + i32.sub + i32.const 13 + i32.const 9 + i32.sub + i32.le_u + end + return + end + local.get $0 + i32.const 8192 + i32.sub + i32.const 8202 + i32.const 8192 + i32.sub + i32.le_u + if + i32.const 1 + return + end + block $break|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + local.set $1 + local.get $1 + i32.const 5760 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 8232 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 8233 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 8239 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 8287 + i32.eq + br_if $case4|0 + local.get $1 + i32.const 12288 + i32.eq + br_if $case5|0 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + end + end + end + end + end + end + i32.const 1 + return + end + i32.const 0 + ) + (func $~lib/util/string/strtol (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.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + i32.eqz + if + i32.const 0 + drop + i32.const 0 + return + end + local.get $0 + local.set $3 + local.get $3 + i32.load16_u + local.set $4 + loop $while-continue|0 + local.get $4 + call $~lib/util/string/isSpace + local.set $5 + local.get $5 + if + local.get $3 + i32.const 2 + i32.add + local.tee $3 + i32.load16_u + local.set $4 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const 1 + local.set $6 + local.get $4 + i32.const 45 + i32.eq + if (result i32) + i32.const 1 + else + local.get $4 + i32.const 43 + i32.eq + end + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + if + i32.const 0 + drop + i32.const 0 + return + end + local.get $4 + i32.const 45 + i32.eq + if + i32.const -1 + local.set $6 + end + local.get $3 + i32.const 2 + i32.add + local.tee $3 + i32.load16_u + local.set $4 + end + local.get $1 + if + local.get $1 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + i32.const 0 + drop + i32.const 0 + return + end + local.get $1 + i32.const 16 + i32.eq + if + local.get $2 + i32.const 2 + i32.gt_s + if (result i32) + local.get $4 + i32.const 48 + i32.eq + else + i32.const 0 + end + if (result i32) + local.get $3 + i32.load16_u offset=2 + i32.const 32 + i32.or + i32.const 120 + i32.eq + else + i32.const 0 + end + if + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + end + end + else + local.get $4 + i32.const 48 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.gt_s + else + i32.const 0 + end + if + block $break|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $3 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.set $5 + local.get $5 + i32.const 98 + i32.eq + br_if $case0|1 + local.get $5 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $5 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + br $break|1 + end + end + local.get $1 + i32.eqz + if + i32.const 10 + local.set $1 + end + end + i32.const 0 + local.set $7 + local.get $2 + i32.const 1 + i32.sub + local.set $8 + block $while-break|2 + loop $while-continue|2 + local.get $2 + local.tee $5 + i32.const 1 + i32.sub + local.set $2 + local.get $5 + local.set $5 + local.get $5 + if + local.get $3 + i32.load16_u + local.set $4 + local.get $4 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if + local.get $4 + i32.const 48 + i32.sub + local.set $4 + else + local.get $4 + i32.const 65 + i32.sub + i32.const 90 + i32.const 65 + i32.sub + i32.le_u + if + local.get $4 + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $4 + else + local.get $4 + i32.const 97 + i32.sub + i32.const 122 + i32.const 97 + i32.sub + i32.le_u + if + local.get $4 + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $4 + end + end + end + local.get $4 + local.get $1 + i32.ge_u + if + local.get $8 + local.get $2 + i32.eq + if + i32.const 0 + drop + i32.const 0 + return + end + br $while-break|2 + end + local.get $7 + local.get $1 + i32.mul + local.get $4 + i32.add + local.set $7 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $while-continue|2 + end + end + end + local.get $6 + local.get $7 + i32.mul + ) + (func $~lib/number/I32.parseInt (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/util/string/strtol + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 368 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 5424 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 5520 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 176 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1280 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2336 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + local.set $2 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__visit + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String> + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/date/Date + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/date + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 22944 + i32.const 22992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/date/Date#toISOString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 112 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=16 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=24 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=32 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=40 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=48 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=56 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=64 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=72 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=80 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=88 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=96 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=104 + local.get $0 + i32.load + local.set $2 + local.get $2 + i32.const 0 + i32.lt_s + local.set $3 + local.get $3 + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 10000 + i32.ge_s + end + if + global.get $~lib/memory/__stack_pointer + local.get $3 + if (result i32) + i32.const 592 + else + i32.const 624 + end + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $2 + local.tee $4 + i32.const 31 + i32.shr_s + local.tee $5 + local.get $4 + i32.add + local.get $5 + i32.xor + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 6 + i32.const 848 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/string/String#padStart + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=16 + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 4 + i32.const 848 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/string/String#padStart + local.tee $1 + i32.store offset=16 + end + local.get $1 + i32.const 592 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=100 + local.get $6 + call $~lib/string/String.__concat + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=92 + local.get $6 + local.get $0 + i32.load offset=4 + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=104 + local.get $6 + i32.const 2 + i32.const 848 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=108 + local.get $6 + call $~lib/string/String#padStart + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=96 + local.get $6 + call $~lib/string/String.__concat + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=84 + local.get $6 + i32.const 592 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=88 + local.get $6 + call $~lib/string/String.__concat + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=76 + local.get $6 + local.get $0 + i32.load offset=8 + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=84 + local.get $6 + i32.const 2 + i32.const 848 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=92 + local.get $6 + call $~lib/string/String#padStart + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=80 + local.get $6 + call $~lib/string/String.__concat + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=68 + local.get $6 + i32.const 2464 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=72 + local.get $6 + call $~lib/string/String.__concat + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + local.get $6 + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=68 + local.get $6 + i32.const 2 + i32.const 848 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=76 + local.get $6 + call $~lib/string/String#padStart + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=64 + local.get $6 + call $~lib/string/String.__concat + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=52 + local.get $6 + i32.const 2496 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=56 + local.get $6 + call $~lib/string/String.__concat + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=44 + local.get $6 + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=52 + local.get $6 + i32.const 2 + i32.const 848 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + local.get $6 + call $~lib/string/String#padStart + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=48 + local.get $6 + call $~lib/string/String.__concat + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=36 + local.get $6 + i32.const 2496 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=40 + local.get $6 + call $~lib/string/String.__concat + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=28 + local.get $6 + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=36 + local.get $6 + i32.const 2 + i32.const 848 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=44 + local.get $6 + call $~lib/string/String#padStart + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=32 + local.get $6 + call $~lib/string/String.__concat + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + i32.const 2528 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=24 + local.get $6 + call $~lib/string/String.__concat + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 10 + call $~lib/number/I32#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + i32.const 3 + i32.const 848 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=28 + local.get $6 + call $~lib/string/String#padStart + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $~lib/string/String.__concat + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2560 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String.__concat + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 112 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/date/Date#toDateString (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) + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=16 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=24 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=32 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.const 4 + i32.const 3536 + call $~lib/rt/__newBuffer + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.const 4 + i32.const 3968 + call $~lib/rt/__newBuffer + local.tee $2 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load + local.set $5 + local.get $5 + local.get $3 + local.get $4 + call $~lib/date/dayOfWeek + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $5 + local.tee $7 + i32.const 31 + i32.shr_s + local.tee $8 + local.get $7 + i32.add + local.get $8 + i32.xor + i32.const 10 + call $~lib/number/I32#toString + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 4 + i32.const 848 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + call $~lib/string/String#padStart + local.tee $9 + i32.store offset=16 + local.get $5 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 592 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + local.get $9 + call $~lib/string/String.__concat + local.tee $9 + i32.store offset=16 + end + local.get $1 + local.get $6 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uget + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=32 + local.get $10 + local.get $2 + local.get $3 + i32.const 1 + i32.sub + call $~lib/staticarray/StaticArray<~lib/string/String>#__uget + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=36 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=24 + local.get $10 + local.get $4 + i32.const 10 + call $~lib/number/I32#toString + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=32 + local.get $10 + i32.const 2 + i32.const 848 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=40 + local.get $10 + call $~lib/string/String#padStart + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=28 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=20 + local.get $10 + i32.const 4048 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + local.get $9 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + ) + (func $~lib/date/Date#toTimeString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=16 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=24 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=32 + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + i32.const 2 + i32.const 848 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + local.get $1 + call $~lib/string/String#padStart + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 2496 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=28 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 2 + i32.const 848 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + local.get $1 + call $~lib/string/String#padStart + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2496 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + i32.const 848 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + call $~lib/string/String#padStart + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/date/Date#toUTCString (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) + global.get $~lib/memory/__stack_pointer + i32.const 96 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=16 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=24 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=32 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=40 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=48 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=56 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=64 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=72 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=80 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=88 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.const 4 + i32.const 4592 + call $~lib/rt/__newBuffer + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.const 4 + i32.const 5024 + call $~lib/rt/__newBuffer + local.tee $2 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load + local.set $5 + local.get $5 + local.get $3 + local.get $4 + call $~lib/date/dayOfWeek + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $5 + local.tee $7 + i32.const 31 + i32.shr_s + local.tee $8 + local.get $7 + i32.add + local.get $8 + i32.xor + i32.const 10 + call $~lib/number/I32#toString + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 4 + i32.const 848 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + call $~lib/string/String#padStart + local.tee $9 + i32.store offset=16 + local.get $5 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 592 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + local.get $9 + call $~lib/string/String.__concat + local.tee $9 + i32.store offset=16 + end + local.get $1 + local.get $6 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uget + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=80 + local.get $10 + local.get $4 + i32.const 10 + call $~lib/number/I32#toString + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=88 + local.get $10 + i32.const 2 + i32.const 848 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=92 + local.get $10 + call $~lib/string/String#padStart + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=84 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=72 + local.get $10 + local.get $2 + local.get $3 + i32.const 1 + i32.sub + call $~lib/staticarray/StaticArray<~lib/string/String>#__uget + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=76 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=68 + local.get $10 + local.get $9 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=60 + local.get $10 + i32.const 4048 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=64 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=52 + local.get $10 + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 10 + call $~lib/number/I32#toString + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=60 + local.get $10 + i32.const 2 + i32.const 848 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=68 + local.get $10 + call $~lib/string/String#padStart + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=56 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=44 + local.get $10 + i32.const 2496 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=48 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=36 + local.get $10 + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 10 + call $~lib/number/I32#toString + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=44 + local.get $10 + i32.const 2 + i32.const 848 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=52 + local.get $10 + call $~lib/string/String#padStart + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=40 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=28 + local.get $10 + i32.const 2496 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=32 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 10 + call $~lib/number/I32#toString + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=28 + local.get $10 + i32.const 2 + i32.const 848 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=36 + local.get $10 + call $~lib/string/String#padStart + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=24 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 5104 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=20 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 96 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + ) + (func $~lib/string/String#split (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 $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=16 + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + end + local.get $1 + i32.const 0 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $4 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $0 + call $~lib/array/Array<~lib/string/String>#__uset + local.get $3 + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $5 + local.get $1 + call $~lib/string/String#get:length + local.set $6 + local.get $2 + i32.const 0 + i32.lt_s + if + global.get $~lib/builtins/i32.MAX_VALUE + local.set $2 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.eqz + if + i32.const 0 + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + end + local.get $5 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $7 + loop $for-loop|0 + local.get $7 + local.get $5 + i32.lt_s + local.set $8 + local.get $8 + if + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store offset=8 + local.get $9 + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $9 + i32.store + local.get $3 + local.get $9 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end + local.get $3 + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + else + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + i32.const 2432 + i32.store + local.get $4 + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + end + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $10 + i32.store offset=12 + i32.const 0 + local.set $11 + i32.const 0 + local.set $12 + i32.const 0 + local.set $13 + loop $while-continue|1 + local.get $0 + local.get $1 + local.get $12 + call $~lib/string/String#indexOf + local.tee $11 + i32.const -1 + i32.xor + local.set $4 + local.get $4 + if + local.get $11 + local.get $12 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=16 + local.get $7 + local.get $0 + local.get $12 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $10 + local.get $7 + call $~lib/array/Array<~lib/string/String>#push + drop + else + local.get $10 + i32.const 2432 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=20 + local.get $15 + call $~lib/array/Array<~lib/string/String>#push + drop + end + local.get $13 + i32.const 1 + i32.add + local.tee $13 + local.get $2 + i32.eq + if + local.get $10 + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + end + local.get $11 + local.get $6 + i32.add + local.set $12 + br $while-continue|1 + end + end + local.get $12 + i32.eqz + if + local.get $10 + local.get $0 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $10 + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + end + local.get $5 + local.get $12 + i32.sub + local.set $14 + local.get $14 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $0 + local.get $12 + i32.const 1 + i32.shl + i32.add + local.get $14 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $10 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + else + local.get $10 + i32.const 2432 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=20 + local.get $15 + call $~lib/array/Array<~lib/string/String>#push + drop + end + local.get $10 + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + ) + (func $~lib/date/Date.fromString (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) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=24 + local.get $0 + call $~lib/string/String#get:length + i32.eqz + if + i32.const 32 + i32.const 80 + i32.const 45 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + i32.const 0 + local.set $3 + i32.const 0 + local.set $4 + local.get $0 + local.set $5 + local.get $0 + i32.const 2464 + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + i32.const 0 + call $~lib/string/String#indexOf + local.set $6 + local.get $6 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + local.get $6 + call $~lib/string/String#substring + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $6 + i32.const 1 + i32.add + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substring + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 2496 + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.tee $8 + i32.store offset=12 + local.get $8 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $9 + local.get $9 + i32.const 1 + i32.le_s + if + i32.const 32 + i32.const 80 + i32.const 62 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=16 + local.get $17 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $1 + local.get $8 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=16 + local.get $17 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $2 + local.get $9 + i32.const 3 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $10 + i32.store offset=20 + local.get $10 + i32.const 2528 + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + i32.const 0 + call $~lib/string/String#indexOf + local.set $11 + local.get $11 + i32.const -1 + i32.xor + if + local.get $10 + i32.const 0 + local.get $11 + call $~lib/string/String#substring + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=16 + local.get $17 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $3 + local.get $10 + local.get $11 + i32.const 1 + i32.add + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substring + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=16 + local.get $17 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $4 + else + local.get $10 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $3 + end + end + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 592 + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.tee $12 + i32.store offset=24 + local.get $12 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=16 + local.get $17 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $13 + i32.const 1 + local.set $14 + i32.const 1 + local.set $15 + local.get $12 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $16 + local.get $16 + i32.const 2 + i32.ge_s + if + local.get $12 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=16 + local.get $17 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $14 + local.get $16 + i32.const 3 + i32.ge_s + if + local.get $12 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=16 + local.get $17 + i32.const 0 + call $~lib/number/I32.parseInt + local.set $15 + end + end + i32.const 0 + local.get $13 + local.get $14 + local.get $15 + local.get $1 + local.get $2 + local.get $3 + local.get $4 + call $~lib/date/epochMillis + call $~lib/date/Date#constructor + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + ) + (func $start:std/date + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=16 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=32 + i32.const 1970 + local.set $2 + i32.const 0 + local.set $1 + i32.const 1 + local.set $0 + i32.const 0 + local.set $3 + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + i32.const 0 + local.set $6 + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $2 + i32.const 1900 + i32.add + local.set $2 + end + local.get $2 + local.get $1 + i32.const 1 + i32.add + local.get $0 + local.get $3 + local.get $4 + local.get $5 + local.get $6 + call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1970 + local.set $6 + i32.const 0 + local.set $5 + i32.const 1 + local.set $4 + i32.const 0 + local.set $3 + i32.const 0 + local.set $2 + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 + local.get $6 + i32.const 0 + i32.ge_s + if (result i32) + local.get $6 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $6 + i32.const 1900 + i32.add + local.set $6 + end + local.get $6 + local.get $5 + i32.const 1 + i32.add + local.get $4 + local.get $3 + local.get $2 + local.get $1 + local.get $0 + call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 70 + local.set $0 + i32.const 0 + local.set $6 + i32.const 1 + local.set $5 + i32.const 0 + local.set $4 + i32.const 0 + local.set $3 + i32.const 0 + local.set $2 + i32.const 0 + local.set $1 + local.get $0 + i32.const 0 + i32.ge_s + if (result i32) + local.get $0 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $0 + i32.const 1900 + i32.add + local.set $0 + end + local.get $0 + local.get $6 + i32.const 1 + i32.add + local.get $5 + local.get $4 + local.get $3 + local.get $2 + local.get $1 + call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 5 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 90 + local.set $0 + i32.const 0 + local.set $1 + i32.const 1 + local.set $2 + i32.const 0 + local.set $3 + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + i32.const 0 + local.set $6 + local.get $0 + i32.const 0 + i32.ge_s + if (result i32) + local.get $0 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $0 + i32.const 1900 + i32.add + local.set $0 + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.get $2 + local.get $3 + local.get $4 + local.get $5 + local.get $6 + call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i64.const 631152000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -90 + local.set $0 + i32.const 0 + local.set $6 + i32.const 1 + local.set $5 + i32.const 0 + local.set $4 + i32.const 0 + local.set $3 + i32.const 0 + local.set $2 + i32.const 0 + local.set $1 + local.get $0 + i32.const 0 + i32.ge_s + if (result i32) + local.get $0 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $0 + i32.const 1900 + i32.add + local.set $0 + end + local.get $0 + local.get $6 + i32.const 1 + i32.add + local.get $5 + local.get $4 + local.get $3 + local.get $2 + local.get $1 + call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i64.const -65007360000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 7 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2018 + local.set $1 + i32.const 10 + local.set $2 + i32.const 10 + local.set $3 + i32.const 11 + local.set $4 + i32.const 0 + local.set $5 + i32.const 0 + local.set $6 + i32.const 1 + local.set $0 + local.get $1 + i32.const 0 + i32.ge_s + if (result i32) + local.get $1 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $1 + i32.const 1900 + i32.add + local.set $1 + end + local.get $1 + local.get $2 + i32.const 1 + i32.add + local.get $3 + local.get $4 + local.get $5 + local.get $6 + local.get $0 + call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i64.const 1541847600001 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 275760 + local.set $1 + i32.const 8 + local.set $2 + i32.const 13 + local.set $3 + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + i32.const 0 + local.set $6 + i32.const 0 + local.set $0 + local.get $1 + i32.const 0 + i32.ge_s + if (result i32) + local.get $1 + i32.const 99 + i32.le_s + else + i32.const 0 + end + if + local.get $1 + i32.const 1900 + i32.add + local.set $1 + end + local.get $1 + local.get $2 + i32.const 1 + i32.add + local.get $3 + local.get $4 + local.get $5 + local.get $6 + local.get $0 + call $~lib/date/epochMillis + local.set $7 + local.get $7 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 31 + i32.const 26 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i64.const 8640000000000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 464 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i64.const 1541847600001 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $7 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + local.set $0 + local.get $0 + i64.load offset=16 + local.get $7 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $7 + i64.const 1 + i64.add + call $~lib/date/Date#setTime + drop + local.get $1 + local.set $6 + local.get $6 + i64.load offset=16 + local.get $7 + i64.const 1 + i64.add + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 20 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 5918283958183706 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + local.set $5 + local.get $5 + i32.load + i32.const 189512 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $4 + local.get $4 + i32.load offset=4 + i32.const 1 + i32.sub + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.load offset=8 + i32.const 14 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCHours + i32.const 22 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMinutes + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCSeconds + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 706 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + local.set $2 + local.get $2 + i32.load + i32.const 1973 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 41 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCHours + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMinutes + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCSeconds + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 274 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 399464523963984 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 984 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 54 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 568 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 568 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + local.set $5 + local.get $5 + i64.load offset=16 + i64.const 399464523963000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 999 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + local.set $4 + local.get $4 + i64.load offset=16 + i64.const 399464523963999 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2000 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i64.load offset=16 + i64.const 399464523965000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const -2000 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + local.get $2 + i64.load offset=16 + i64.const 399464523963000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getUTCSeconds + i32.const 31 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + call $~lib/date/Date#setUTCSeconds + local.get $1 + call $~lib/date/Date#getUTCSeconds + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 50 + call $~lib/date/Date#setUTCSeconds + local.get $1 + call $~lib/date/Date#getUTCSeconds + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 78 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/date/Date#setUTCSeconds + local.get $1 + local.set $0 + local.get $0 + i64.load offset=16 + i64.const 372027318300986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 59 + call $~lib/date/Date#setUTCSeconds + local.get $1 + local.set $6 + local.get $6 + i64.load offset=16 + i64.const 372027318359986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getUTCMinutes + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + call $~lib/date/Date#setUTCMinutes + local.get $1 + call $~lib/date/Date#getUTCMinutes + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 50 + call $~lib/date/Date#setUTCMinutes + local.get $1 + call $~lib/date/Date#getUTCMinutes + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 93 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/date/Date#setUTCMinutes + local.get $1 + local.set $5 + local.get $5 + i64.load offset=16 + i64.const 372027315631986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 59 + call $~lib/date/Date#setUTCMinutes + local.get $1 + local.set $4 + local.get $4 + i64.load offset=16 + i64.const 372027319171986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 372027318331986 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + call $~lib/date/Date#getUTCHours + i32.const 17 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + call $~lib/date/Date#setUTCHours + local.get $1 + call $~lib/date/Date#getUTCHours + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/date/Date#setUTCHours + local.get $1 + call $~lib/date/Date#getUTCHours + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/date/Date#setUTCHours + local.get $1 + local.set $3 + local.get $3 + i64.load offset=16 + i64.const 372027257131986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 23 + call $~lib/date/Date#setUTCHours + local.get $1 + local.set $2 + local.get $2 + i64.load offset=16 + i64.const 372027339931986 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + local.set $0 + local.get $0 + i32.load + i32.const 1973 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 119 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $6 + local.get $6 + i32.load offset=4 + i32.const 1 + i32.sub + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + call $~lib/date/Date#setUTCDate + local.get $1 + local.set $5 + local.get $5 + i32.load offset=8 + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/date/Date#setUTCDate + local.get $1 + local.set $4 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $1 + i32.const 30 + call $~lib/date/Date#setUTCDate + local.get $1 + i32.const 1 + call $~lib/date/Date#setUTCMonth + local.get $1 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $1 + i32.const 31 + call $~lib/date/Date#setUTCDate + local.get $1 + i32.const 2024 + call $~lib/date/Date#setUTCFullYear + local.get $1 + i32.const 2 + call $~lib/date/Date#setUTCMonth + local.get $1 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $1 + i32.const 29 + call $~lib/date/Date#setUTCDate + local.get $1 + local.set $3 + local.get $3 + i64.load offset=16 + i64.const 1711674191274 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 144 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + local.get $2 + i32.load offset=8 + i32.const 29 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 145 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMinutes + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 146 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCSeconds + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#getUTCMilliseconds + i32.const 274 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 148 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1362106799999 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + i32.const 20 + call $~lib/date/Date#setUTCDate + local.get $1 + local.set $0 + local.get $0 + i64.load offset=16 + i64.const 1363748399999 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/date/Date#setUTCDate + local.get $1 + local.set $6 + local.get $6 + i64.load offset=16 + i64.const 1362106799999 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 154 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1000 + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + local.set $5 + local.get $5 + i64.load offset=16 + i64.const 1362106800000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 157 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 60 + i32.const 60 + i32.mul + i32.const 1000 + i32.mul + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + local.set $4 + local.get $4 + i64.load offset=16 + i64.const 1362110400000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 160 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 60 + i32.const 60 + i32.mul + i32.const 1000 + i32.mul + i32.const 1 + i32.add + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + local.set $3 + local.get $3 + i64.load offset=16 + i64.const 1362114000001 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 163 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 60 + i32.const 60 + i32.mul + i32.const 1000 + i32.mul + i32.const 1 + i32.add + call $~lib/date/Date#setUTCMilliseconds + local.get $1 + local.set $2 + local.get $2 + i64.load offset=16 + i64.const 1362117600001 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + i32.const -2208 + call $~lib/date/Date#setUTCDate + local.get $1 + local.set $0 + local.get $0 + i64.load offset=16 + i64.const -67301808726 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 170 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 123814991274 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + i32.const 2208 + call $~lib/date/Date#setUTCDate + local.get $1 + local.set $6 + local.get $6 + i64.load offset=16 + i64.const 314240591274 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 174 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1467763200000 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load + local.get $5 + i32.load offset=4 + local.get $5 + i32.load offset=8 + call $~lib/date/dayOfWeek + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1467763200000 + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $4 + i32.load offset=8 + call $~lib/date/dayOfWeek + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 185 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1467763200000 + i64.const 86400000 + i64.add + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.tee $3 + i32.store offset=12 + local.get $3 + i32.load + local.get $3 + i32.load offset=4 + local.get $3 + i32.load offset=8 + call $~lib/date/dayOfWeek + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 186 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1467763200000 + i64.const 86400000 + i64.add + call $~lib/date/Date#constructor + local.tee $2 + i32.store offset=16 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 + call $~lib/date/dayOfWeek + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1468022400000 + call $~lib/date/Date#constructor + local.tee $0 + i32.store offset=20 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + call $~lib/date/dayOfWeek + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 189 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1468022400000 + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.tee $6 + i32.store offset=24 + local.get $6 + i32.load + local.get $6 + i32.load offset=4 + local.get $6 + i32.load offset=8 + call $~lib/date/dayOfWeek + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 190 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1468022400000 + i64.const 86400000 + i64.add + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $1 + i32.load + local.get $1 + i32.load offset=4 + local.get $1 + i32.load offset=8 + call $~lib/date/dayOfWeek + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 191 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1468022400000 + i64.const 86400000 + i64.add + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load + local.get $5 + i32.load offset=4 + local.get $5 + i32.load offset=8 + call $~lib/date/dayOfWeek + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 192 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 7899943856218720 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $4 + local.get $4 + i32.load offset=4 + i32.const 1 + i32.sub + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 10 + call $~lib/date/Date#setUTCMonth + local.get $5 + local.set $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.sub + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 2 + call $~lib/date/Date#setUTCMonth + local.get $5 + local.set $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 202 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $0 + local.get $0 + i64.load offset=16 + i64.const 7899941177818720 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 203 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + call $~lib/date/Date#setUTCMonth + local.get $5 + i32.const 12 + call $~lib/date/Date#setUTCMonth + local.get $5 + local.set $6 + local.get $6 + i64.load offset=16 + i64.const 7899967616218720 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 207 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 0 + call $~lib/date/Date#setUTCMonth + local.get $5 + local.set $1 + local.get $1 + i64.load offset=16 + i64.const 7899967616218720 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 211 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 13 + call $~lib/date/Date#setUTCMonth + local.get $5 + local.set $4 + local.get $4 + i64.load offset=16 + i64.const 7900001830618720 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 213 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 7941202527925698 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $3 + local.get $3 + i32.load + i32.const 253616 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 219 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1976 + call $~lib/date/Date#setUTCFullYear + local.get $5 + local.set $2 + local.get $2 + i32.load + i32.const 1976 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 221 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 20212 + call $~lib/date/Date#setUTCFullYear + local.get $5 + local.set $0 + local.get $0 + i32.load + i32.const 20212 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 71 + call $~lib/date/Date#setUTCFullYear + local.get $5 + local.set $6 + local.get $6 + i32.load + i32.const 71 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62167219200000 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 2592 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 231 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62167219200000 + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 2672 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 233 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62127219200000 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 2752 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1231231231020 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 2832 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1231231231456 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 2912 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 239 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 322331231231020 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 2992 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 241 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 253402300799999 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 3072 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 243 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 253402300800000 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 3152 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 245 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62847038769226 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 3232 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 247 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -61536067200000 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toDateString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 4080 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 253 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1580601600000 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toDateString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 4144 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 255 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62183116800000 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toDateString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 4208 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 258 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -61536067200000 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toTimeString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 4272 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 264 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 253402300799999 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toTimeString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 4320 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 267 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -61536067200000 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toUTCString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 5136 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 273 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 1580741613467 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toUTCString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 5216 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 275 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -62183116800000 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + call $~lib/date/Date#toUTCString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 5296 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 278 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5376 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + call $~lib/date/Date.fromString + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $1 + local.get $1 + i64.load offset=16 + i64.const 192067200000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 285 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5648 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + call $~lib/date/Date.fromString + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $4 + local.get $4 + i64.load offset=16 + i64.const 192067200000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 287 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5696 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + call $~lib/date/Date.fromString + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $3 + local.get $3 + i64.load offset=16 + i64.const 11860387200000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 289 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5744 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + call $~lib/date/Date.fromString + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $2 + local.get $2 + i64.load offset=16 + i64.const 192112496000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 293 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5808 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + call $~lib/date/Date.fromString + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $0 + local.get $0 + i64.load offset=16 + i64.const 192112496456 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 297 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5888 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + call $~lib/date/Date.fromString + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $6 + local.get $6 + i64.load offset=16 + i64.const 192112496456 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 301 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5968 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + call $~lib/date/Date.fromString + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $1 + local.get $1 + i64.load offset=16 + i64.const -62167219200000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 304 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6000 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + call $~lib/date/Date.fromString + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $4 + local.get $4 + i64.load offset=16 + i64.const -62135596800000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 307 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6032 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + call $~lib/date/Date.fromString + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $3 + local.get $3 + i64.load offset=16 + i64.const 189302400000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 310 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6064 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + call $~lib/date/Date.fromString + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $2 + local.get $2 + i64.load offset=16 + i64.const 191980800000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 313 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5376 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + call $~lib/date/Date.fromString + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $0 + local.get $0 + i64.load offset=16 + i64.const 192067200000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 316 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6112 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + call $~lib/date/Date.fromString + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $6 + local.get $6 + i64.load offset=16 + i64.const 192112440000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 319 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5744 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + call $~lib/date/Date.fromString + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $1 + local.get $1 + i64.load offset=16 + i64.const 192112496000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 322 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -8640000000000000 + call $~lib/date/Date#constructor + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 8640000000000000 + call $~lib/date/Date#constructor + local.tee $1 + i32.store + local.get $5 + local.set $4 + local.get $4 + i64.load offset=16 + i64.const -8640000000000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 340 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i64.load offset=16 + i64.const 8640000000000000 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 341 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $2 + local.get $2 + i32.load + i32.const -271821 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 343 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $0 + local.get $0 + i32.load + i32.const 275760 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + local.get $6 + i32.load offset=4 + i32.const 1 + i32.sub + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $4 + local.get $4 + i32.load offset=4 + i32.const 1 + i32.sub + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 347 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $3 + local.get $3 + i32.load offset=8 + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 349 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + local.get $2 + i32.load offset=8 + i32.const 13 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 350 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 6176 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 352 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 6256 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 353 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const 8640000000000000 + i64.const 1 + i64.sub + call $~lib/date/Date#constructor + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i64.const -8640000000000000 + i64.const 1 + i64.add + call $~lib/date/Date#constructor + local.tee $3 + i32.store offset=12 + local.get $3 + local.set $0 + local.get $0 + i32.load + i32.const -271821 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 358 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $6 + local.get $6 + i32.load offset=4 + i32.const 1 + i32.sub + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 359 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $4 + local.get $4 + i32.load offset=8 + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 360 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/date/Date#getUTCHours + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 361 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/date/Date#getUTCMinutes + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 362 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/date/Date#getUTCSeconds + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 363 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/date/Date#getUTCMilliseconds + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 364 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 6336 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 366 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/date/Date#toISOString + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=28 + local.get $8 + i32.const 6416 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=32 + local.get $8 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#constructor (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (local $3 i64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + local.get $1 + call $~lib/date/Date#set:epochMillis + local.get $0 + i32.const 0 + call $~lib/date/Date#set:year + local.get $0 + i32.const 0 + call $~lib/date/Date#set:month + local.get $0 + i32.const 0 + call $~lib/date/Date#set:day + local.get $1 + call $~lib/date/invalidDate + if + i32.const 32 + i32.const 80 + i32.const 95 + i32.const 35 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + local.set $3 + i32.const 86400000 + i64.extend_i32_s + local.set $2 + local.get $3 + i64.const 0 + i64.ge_s + if (result i64) + local.get $3 + else + local.get $3 + local.get $2 + i64.sub + i64.const 1 + i64.add + end + local.get $2 + i64.div_s + i32.wrap_i64 + call $~lib/date/ymdFromEpochDays + call $~lib/date/Date#set:year + local.get $0 + global.get $~lib/date/_month + call $~lib/date/Date#set:month + local.get $0 + global.get $~lib/date/_day + call $~lib/date/Date#set:day + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/number/itoa32 (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + i32.const 656 + i32.const 784 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.eqz + if + i32.const 848 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.set $2 + local.get $2 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $1 + i32.const 10 + i32.eq + if + local.get $0 + call $~lib/util/number/decimalCount32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + local.get $2 + i32.add + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $2 + i32.add + local.set $7 + local.get $0 + local.set $6 + local.get $4 + local.set $5 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_dec_lut + else + local.get $1 + i32.const 16 + i32.eq + if + i32.const 31 + local.get $0 + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + local.get $2 + i32.add + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $2 + i32.add + local.set $7 + local.get $0 + local.set $6 + local.get $4 + local.set $5 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $7 + local.get $6 + i64.extend_i32_u + local.get $5 + call $~lib/util/number/utoa_hex_lut + else + local.get $0 + local.set $4 + local.get $4 + i64.extend_i32_u + local.get $1 + call $~lib/util/number/ulog_base + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.shl + local.get $2 + i32.add + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $2 + i32.add + local.get $4 + i64.extend_i32_u + local.get $7 + local.get $1 + call $~lib/util/number/utoa64_any_core + end + end + local.get $2 + if + local.get $3 + i32.const 45 + i32.store16 + end + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $~lib/string/String#padStart (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 + local.get $1 + i32.const 1 + i32.shl + local.set $4 + local.get $2 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $5 + local.get $4 + local.get $3 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $5 + i32.eqz + end + if + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $4 + local.get $3 + i32.sub + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + local.get $6 + local.get $5 + i32.gt_u + if + local.get $6 + i32.const 2 + i32.sub + local.get $5 + i32.div_u + local.set $8 + local.get $8 + local.get $5 + i32.mul + local.set $9 + local.get $6 + local.get $9 + i32.sub + local.set $10 + local.get $7 + local.get $2 + local.get $5 + local.get $8 + call $~lib/memory/memory.repeat + local.get $7 + local.get $9 + i32.add + local.get $2 + local.get $10 + call $~lib/memory/memory.copy + else + local.get $7 + local.get $2 + local.get $6 + call $~lib/memory/memory.copy + end + local.get $7 + local.get $6 + i32.add + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $2 + local.get $1 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 + local.get $2 + local.get $3 + i32.add + local.set $4 + local.get $4 + i32.const 0 + i32.eq + if + i32.const 2432 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + local.get $5 + local.get $0 + local.get $2 + call $~lib/memory/memory.copy + local.get $5 + local.get $2 + i32.add + local.get $1 + local.get $3 + call $~lib/memory/memory.copy + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/string/String#substring (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + call $~lib/string/String#get:length + local.set $3 + local.get $1 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 + local.get $4 + i32.lt_s + select + local.set $6 + local.get $2 + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 + local.get $4 + i32.lt_s + select + local.set $7 + local.get $6 + local.tee $4 + local.get $7 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $8 + local.get $6 + local.tee $5 + local.get $7 + local.tee $4 + local.get $5 + local.get $4 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $9 + local.get $9 + local.get $8 + i32.sub + local.set $10 + local.get $10 + i32.eqz + if + i32.const 2432 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $8 + i32.eqz + if (result i32) + local.get $9 + local.get $3 + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 + end + if + local.get $0 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store + local.get $11 + local.get $0 + local.get $8 + i32.add + local.get $10 + call $~lib/memory/memory.copy + local.get $11 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + ) + (func $~lib/rt/__newArray (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.shl + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + local.get $3 + call $~lib/rt/__newBuffer + local.tee $5 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + local.get $5 + i32.store + local.get $6 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $6 + local.get $5 + i32.store offset=4 + local.get $6 + local.get $4 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=12 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 368 + i32.const 5472 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 5520 + i32.const 5472 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) ) diff --git a/tests/compiler/std/hash.debug.wat b/tests/compiler/std/hash.debug.wat new file mode 100644 index 0000000000..12f679f2a3 --- /dev/null +++ b/tests/compiler/std/hash.debug.wat @@ -0,0 +1,889 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param f32) (result i32))) + (type $3 (func (param f64) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/memory/__data_end i32 (i32.const 380)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33148)) + (global $~lib/memory/__heap_base i32 (i32.const 33148)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00c\00\00\00\00\00\00\00") + (data $4 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00b\00c\00d\00\00\00\00\00") + (data $5 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00c\00d\00e\00\00\00") + (data $6 (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00a\00b\00c\00d\00e\00f\00") + (data $7 (i32.const 236) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00a\00b\00c\00d\00e\00f\00g\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 284) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $std/hash/check (param $hash i32) (result i32) + i32.const 1 + return + ) + (func $~lib/util/hash/HASH (param $key f32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + block $~lib/util/hash/hash32|inlined.0 (result i32) + local.get $key + i32.reinterpret_f32 + local.set $key|1 + i32.const 4 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.0 + end + return + ) + (func $~lib/util/hash/HASH (param $key f64) (result i32) + (local $key|1 i64) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + block $~lib/util/hash/hash64|inlined.0 (result i32) + local.get $key + i64.reinterpret_f64 + local.set $key|1 + i32.const 0 + i32.const 374761393 + i32.add + i32.const 8 + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $key|1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash64|inlined.0 + end + return + ) + (func $start:std/hash + i32.const 0 + call $~lib/util/hash/HASH<~lib/string/String|null> + call $std/hash/check + drop + i32.const 32 + call $~lib/util/hash/HASH<~lib/string/String> + call $std/hash/check + drop + i32.const 64 + call $~lib/util/hash/HASH<~lib/string/String> + call $std/hash/check + drop + i32.const 96 + call $~lib/util/hash/HASH<~lib/string/String> + call $std/hash/check + drop + i32.const 128 + call $~lib/util/hash/HASH<~lib/string/String> + call $std/hash/check + drop + i32.const 160 + call $~lib/util/hash/HASH<~lib/string/String> + call $std/hash/check + drop + i32.const 192 + call $~lib/util/hash/HASH<~lib/string/String> + call $std/hash/check + drop + i32.const 224 + call $~lib/util/hash/HASH<~lib/string/String> + call $std/hash/check + drop + i32.const 256 + call $~lib/util/hash/HASH<~lib/string/String> + call $std/hash/check + drop + i32.const 304 + call $~lib/util/hash/HASH<~lib/string/String> + call $std/hash/check + drop + i32.const 352 + call $~lib/util/hash/HASH<~lib/string/String> + call $std/hash/check + drop + f32.const 0 + call $~lib/util/hash/HASH + call $std/hash/check + drop + f32.const 1 + call $~lib/util/hash/HASH + call $std/hash/check + drop + f32.const 1.100000023841858 + call $~lib/util/hash/HASH + call $std/hash/check + drop + f32.const -0 + call $~lib/util/hash/HASH + call $std/hash/check + drop + f32.const inf + call $~lib/util/hash/HASH + call $std/hash/check + drop + f32.const nan:0x400000 + call $~lib/util/hash/HASH + call $std/hash/check + drop + f64.const 0 + call $~lib/util/hash/HASH + call $std/hash/check + drop + f64.const 1 + call $~lib/util/hash/HASH + call $std/hash/check + drop + f64.const 1.1 + call $~lib/util/hash/HASH + call $std/hash/check + drop + f64.const -0 + call $~lib/util/hash/HASH + call $std/hash/check + drop + f64.const inf + call $~lib/util/hash/HASH + call $std/hash/check + drop + f64.const nan:0x8000000000000 + call $~lib/util/hash/HASH + call $std/hash/check + drop + ) + (func $~start + call $start:std/hash + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33168 + i32.const 33216 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/util/hash/HASH<~lib/string/String|null> (param $key i32) (result i32) + (local $key|1 i32) + (local $h i32) + (local $len i32) + (local $pos i32) + (local $s1 i32) + (local $s2 i32) + (local $s3 i32) + (local $s4 i32) + (local $end i32) + (local $h|10 i32) + (local $key|11 i32) + (local $h|12 i32) + (local $key|13 i32) + (local $h|14 i32) + (local $key|15 i32) + (local $h|16 i32) + (local $key|17 i32) + (local $end|18 i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1 + drop + block $~lib/util/hash/hashStr|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $key + local.tee $key|1 + i32.store + local.get $key|1 + i32.const 0 + i32.eq + if + i32.const 0 + br $~lib/util/hash/hashStr|inlined.0 + end + local.get $key|1 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $h + local.get $h + local.set $len + local.get $key|1 + local.set $pos + local.get $len + i32.const 16 + i32.ge_u + if + i32.const 0 + i32.const -1640531535 + i32.add + i32.const -2048144777 + i32.add + local.set $s1 + i32.const 0 + i32.const -2048144777 + i32.add + local.set $s2 + i32.const 0 + local.set $s3 + i32.const 0 + i32.const -1640531535 + i32.sub + local.set $s4 + local.get $len + local.get $pos + i32.add + i32.const 16 + i32.sub + local.set $end + loop $while-continue|0 + local.get $pos + local.get $end + i32.le_u + if + block $~lib/util/hash/mix|inlined.0 (result i32) + local.get $s1 + local.set $h|10 + local.get $pos + i32.load + local.set $key|11 + local.get $h|10 + local.get $key|11 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + br $~lib/util/hash/mix|inlined.0 + end + local.set $s1 + block $~lib/util/hash/mix|inlined.1 (result i32) + local.get $s2 + local.set $h|12 + local.get $pos + i32.load offset=4 + local.set $key|13 + local.get $h|12 + local.get $key|13 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + br $~lib/util/hash/mix|inlined.1 + end + local.set $s2 + block $~lib/util/hash/mix|inlined.2 (result i32) + local.get $s3 + local.set $h|14 + local.get $pos + i32.load offset=8 + local.set $key|15 + local.get $h|14 + local.get $key|15 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + br $~lib/util/hash/mix|inlined.2 + end + local.set $s3 + block $~lib/util/hash/mix|inlined.3 (result i32) + local.get $s4 + local.set $h|16 + local.get $pos + i32.load offset=12 + local.set $key|17 + local.get $h|16 + local.get $key|17 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + br $~lib/util/hash/mix|inlined.3 + end + local.set $s4 + local.get $pos + i32.const 16 + i32.add + local.set $pos + br $while-continue|0 + end + end + local.get $h + local.get $s1 + i32.const 1 + i32.rotl + local.get $s2 + i32.const 7 + i32.rotl + i32.add + local.get $s3 + i32.const 12 + i32.rotl + i32.add + local.get $s4 + i32.const 18 + i32.rotl + i32.add + i32.add + local.set $h + else + local.get $h + i32.const 0 + i32.const 374761393 + i32.add + i32.add + local.set $h + end + local.get $key|1 + local.get $len + i32.add + i32.const 4 + i32.sub + local.set $end|18 + loop $while-continue|1 + local.get $pos + local.get $end|18 + i32.le_u + if + local.get $h + local.get $pos + i32.load + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $pos + i32.const 4 + i32.add + local.set $pos + br $while-continue|1 + end + end + local.get $key|1 + local.get $len + i32.add + local.set $end|18 + loop $while-continue|2 + local.get $pos + local.get $end|18 + i32.lt_u + if + local.get $h + local.get $pos + i32.load8_u + i32.const 374761393 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 11 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $h + local.get $pos + i32.const 1 + i32.add + local.set $pos + br $while-continue|2 + end + end + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hashStr|inlined.0 + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $~lib/util/hash/HASH<~lib/string/String> (param $key i32) (result i32) + (local $key|1 i32) + (local $h i32) + (local $len i32) + (local $pos i32) + (local $s1 i32) + (local $s2 i32) + (local $s3 i32) + (local $s4 i32) + (local $end i32) + (local $h|10 i32) + (local $key|11 i32) + (local $h|12 i32) + (local $key|13 i32) + (local $h|14 i32) + (local $key|15 i32) + (local $h|16 i32) + (local $key|17 i32) + (local $end|18 i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1 + drop + block $~lib/util/hash/hashStr|inlined.1 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $key + local.tee $key|1 + i32.store + local.get $key|1 + i32.const 0 + i32.eq + if + i32.const 0 + br $~lib/util/hash/hashStr|inlined.1 + end + local.get $key|1 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $h + local.get $h + local.set $len + local.get $key|1 + local.set $pos + local.get $len + i32.const 16 + i32.ge_u + if + i32.const 0 + i32.const -1640531535 + i32.add + i32.const -2048144777 + i32.add + local.set $s1 + i32.const 0 + i32.const -2048144777 + i32.add + local.set $s2 + i32.const 0 + local.set $s3 + i32.const 0 + i32.const -1640531535 + i32.sub + local.set $s4 + local.get $len + local.get $pos + i32.add + i32.const 16 + i32.sub + local.set $end + loop $while-continue|0 + local.get $pos + local.get $end + i32.le_u + if + block $~lib/util/hash/mix|inlined.4 (result i32) + local.get $s1 + local.set $h|10 + local.get $pos + i32.load + local.set $key|11 + local.get $h|10 + local.get $key|11 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + br $~lib/util/hash/mix|inlined.4 + end + local.set $s1 + block $~lib/util/hash/mix|inlined.5 (result i32) + local.get $s2 + local.set $h|12 + local.get $pos + i32.load offset=4 + local.set $key|13 + local.get $h|12 + local.get $key|13 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + br $~lib/util/hash/mix|inlined.5 + end + local.set $s2 + block $~lib/util/hash/mix|inlined.6 (result i32) + local.get $s3 + local.set $h|14 + local.get $pos + i32.load offset=8 + local.set $key|15 + local.get $h|14 + local.get $key|15 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + br $~lib/util/hash/mix|inlined.6 + end + local.set $s3 + block $~lib/util/hash/mix|inlined.7 (result i32) + local.get $s4 + local.set $h|16 + local.get $pos + i32.load offset=12 + local.set $key|17 + local.get $h|16 + local.get $key|17 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + br $~lib/util/hash/mix|inlined.7 + end + local.set $s4 + local.get $pos + i32.const 16 + i32.add + local.set $pos + br $while-continue|0 + end + end + local.get $h + local.get $s1 + i32.const 1 + i32.rotl + local.get $s2 + i32.const 7 + i32.rotl + i32.add + local.get $s3 + i32.const 12 + i32.rotl + i32.add + local.get $s4 + i32.const 18 + i32.rotl + i32.add + i32.add + local.set $h + else + local.get $h + i32.const 0 + i32.const 374761393 + i32.add + i32.add + local.set $h + end + local.get $key|1 + local.get $len + i32.add + i32.const 4 + i32.sub + local.set $end|18 + loop $while-continue|1 + local.get $pos + local.get $end|18 + i32.le_u + if + local.get $h + local.get $pos + i32.load + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $pos + i32.const 4 + i32.add + local.set $pos + br $while-continue|1 + end + end + local.get $key|1 + local.get $len + i32.add + local.set $end|18 + loop $while-continue|2 + local.get $pos + local.get $end|18 + i32.lt_u + if + local.get $h + local.get $pos + i32.load8_u + i32.const 374761393 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 11 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $h + local.get $pos + i32.const 1 + i32.add + local.set $pos + br $while-continue|2 + end + end + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hashStr|inlined.1 + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) +) diff --git a/tests/compiler/std/hash.json b/tests/compiler/std/hash.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/std/hash.json +++ b/tests/compiler/std/hash.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/std/hash.optimized.wat b/tests/compiler/std/hash.optimized.wat deleted file mode 100644 index fa88fcc653..0000000000 --- a/tests/compiler/std/hash.optimized.wat +++ /dev/null @@ -1,63 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (memory $0 1) - (data (i32.const 1028) "\01\00\00\00\01") - (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1072) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 1104) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (export "memory" (memory $0)) - (start $~start) - (func $~lib/util/hash/hashStr (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const -2128831035 - local.set $2 - local.get $0 - if - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.set $3 - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $2 - local.get $0 - local.get $1 - i32.add - i32.load8_u - i32.xor - i32.const 16777619 - i32.mul - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - end - ) - (func $~start - i32.const 0 - call $~lib/util/hash/hashStr - i32.const 1040 - call $~lib/util/hash/hashStr - i32.const 1056 - call $~lib/util/hash/hashStr - i32.const 1088 - call $~lib/util/hash/hashStr - i32.const 1120 - call $~lib/util/hash/hashStr - ) -) diff --git a/tests/compiler/std/hash.release.wat b/tests/compiler/std/hash.release.wat new file mode 100644 index 0000000000..1620d1e03e --- /dev/null +++ b/tests/compiler/std/hash.release.wat @@ -0,0 +1,252 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34172)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\02\00\00\00a") + (data $2 (i32.const 1100) "\1c") + (data $2.1 (i32.const 1112) "\02\00\00\00\04\00\00\00a\00b") + (data $3 (i32.const 1132) "\1c") + (data $3.1 (i32.const 1144) "\02\00\00\00\06\00\00\00a\00b\00c") + (data $4 (i32.const 1164) "\1c") + (data $4.1 (i32.const 1176) "\02\00\00\00\08\00\00\00a\00b\00c\00d") + (data $5 (i32.const 1196) "\1c") + (data $5.1 (i32.const 1208) "\02\00\00\00\n\00\00\00a\00b\00c\00d\00e") + (data $6 (i32.const 1228) "\1c") + (data $6.1 (i32.const 1240) "\02\00\00\00\0c\00\00\00a\00b\00c\00d\00e\00f") + (data $7 (i32.const 1260) ",") + (data $7.1 (i32.const 1272) "\02\00\00\00\0e\00\00\00a\00b\00c\00d\00e\00f\00g") + (data $8 (i32.const 1308) ",") + (data $8.1 (i32.const 1320) "\02\00\00\00\10\00\00\00a\00b\00c\00d\00e\00f\00g\00h") + (data $9 (i32.const 1356) ",") + (data $9.1 (i32.const 1368) "\02\00\00\00\12\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i") + (export "memory" (memory $0)) + (start $~start) + (func $~start + i32.const 0 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1056 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1088 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1120 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1152 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1184 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1216 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1248 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1280 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1328 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1376 + call $~lib/util/hash/HASH<~lib/string/String|null> + ) + (func $~lib/util/hash/HASH<~lib/string/String|null> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + if + i32.const 34192 + i32.const 34240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + i32.const 16 + i32.ge_u + if (result i32) + i32.const 606290984 + local.set $2 + i32.const -2048144777 + local.set $4 + i32.const 1640531535 + local.set $5 + local.get $1 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.set $7 + loop $while-continue|0 + local.get $1 + local.get $7 + i32.le_u + if + local.get $2 + local.get $1 + i32.load + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $2 + local.get $4 + local.get $1 + i32.load offset=4 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $4 + local.get $6 + local.get $1 + i32.load offset=8 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $6 + local.get $5 + local.get $1 + i32.load offset=12 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $5 + local.get $1 + i32.const 16 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $3 + local.get $2 + i32.const 1 + i32.rotl + local.get $4 + i32.const 7 + i32.rotl + i32.add + local.get $6 + i32.const 12 + i32.rotl + i32.add + local.get $5 + i32.const 18 + i32.rotl + i32.add + i32.add + else + local.get $3 + i32.const 374761393 + i32.add + end + local.set $2 + local.get $0 + local.get $3 + i32.add + i32.const 4 + i32.sub + local.set $4 + loop $while-continue|1 + local.get $1 + local.get $4 + i32.le_u + if + local.get $2 + local.get $1 + i32.load + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $2 + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|1 + end + end + local.get $0 + local.get $3 + i32.add + local.set $0 + loop $while-continue|2 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $2 + local.get $1 + i32.load8_u + i32.const 374761393 + i32.mul + i32.add + i32.const 11 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/std/hash.ts b/tests/compiler/std/hash.ts index b46889ba88..e253bb6f5a 100644 --- a/tests/compiler/std/hash.ts +++ b/tests/compiler/std/hash.ts @@ -9,17 +9,23 @@ check(HASH("")); check(HASH("a")); check(HASH("ab")); check(HASH("abc")); +check(HASH("abcd")); +check(HASH("abcde")); +check(HASH("abcdef")); +check(HASH("abcdefg")); +check(HASH("abcdefgh")); +check(HASH("abcdefghi")); check(HASH(0.0)); check(HASH(1.0)); check(HASH(1.1)); -check(HASH(-0)); +check(HASH(-0.0)); check(HASH(Infinity)); check(HASH(NaN)); check(HASH(0.0)); check(HASH(1.0)); check(HASH(1.1)); -check(HASH(-0)); +check(HASH(-0.0)); check(HASH(Infinity)); check(HASH(NaN)); diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat deleted file mode 100644 index 91e00d5a33..0000000000 --- a/tests/compiler/std/hash.untouched.wat +++ /dev/null @@ -1,561 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 32) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 64) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b\00") - (data (i32.const 96) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") - (table $0 1 funcref) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/util/hash/hashStr (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const -2128831035 - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $1 - local.get $0 - local.get $2 - i32.add - i32.load8_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - end - local.get $1 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $std/hash/check (param $0 i32) (result i32) - i32.const 1 - ) - (func $~lib/util/hash/hash32 (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/util/hash/hash64 (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.wrap_i64 - local.set $1 - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - i32.const -2128831035 - local.set $3 - local.get $3 - local.get $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - ) - (func $start:std/hash - (local $0 i32) - (local $1 i32) - (local $2 f32) - (local $3 f64) - block $~lib/util/hash/HASH<~lib/string/String|null>|inlined.0 (result i32) - i32.const 0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 1 - drop - local.get $0 - call $~lib/util/hash/hashStr - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - br $~lib/util/hash/HASH<~lib/string/String|null>|inlined.0 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) - i32.const 32 - local.set $1 - i32.const 1 - drop - local.get $1 - call $~lib/util/hash/hashStr - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.0 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) - i32.const 48 - local.set $0 - i32.const 1 - drop - local.get $0 - call $~lib/util/hash/hashStr - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.1 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) - i32.const 80 - local.set $1 - i32.const 1 - drop - local.get $1 - call $~lib/util/hash/hashStr - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.2 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) - i32.const 112 - local.set $0 - i32.const 1 - drop - local.get $0 - call $~lib/util/hash/hashStr - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH|inlined.0 (result i32) - f32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH|inlined.1 (result i32) - f32.const 1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH|inlined.2 (result i32) - f32.const 1.100000023841858 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH|inlined.3 (result i32) - f32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH|inlined.4 (result i32) - f32.const inf - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH|inlined.5 (result i32) - f32.const nan:0x400000 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.5 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH|inlined.0 (result i32) - f64.const 0 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $3 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH|inlined.1 (result i32) - f64.const 1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $3 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH|inlined.2 (result i32) - f64.const 1.1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $3 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH|inlined.3 (result i32) - f64.const 0 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $3 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH|inlined.4 (result i32) - f64.const inf - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $3 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 - end - call $std/hash/check - drop - block $~lib/util/hash/HASH|inlined.5 (result i32) - f64.const nan:0x8000000000000 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $3 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.5 - end - call $std/hash/check - drop - ) - (func $~start - call $start:std/hash - ) -) diff --git a/tests/compiler/std/map.debug.wat b/tests/compiler/std/map.debug.wat new file mode 100644 index 0000000000..13432055e5 --- /dev/null +++ b/tests/compiler/std/map.debug.wat @@ -0,0 +1,33018 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32) (result i64))) + (type $8 (func (param i32 i64))) + (type $9 (func (param i32 i64 i32) (result i32))) + (type $10 (func (param i32 i64) (result i32))) + (type $11 (func (param i32) (result f32))) + (type $12 (func (param i32 f32))) + (type $13 (func (param i32) (result f64))) + (type $14 (func (param i32 f64))) + (type $15 (func (param i32 f32 i32) (result i32))) + (type $16 (func (param i32 f32) (result i32))) + (type $17 (func (param i32 f64 i32) (result i32))) + (type $18 (func (param i32 f64) (result i32))) + (type $19 (func (param i32 i32 i32 i32))) + (type $20 (func (param i64) (result i32))) + (type $21 (func (param i32 i32 i64))) + (type $22 (func (param i32 i32) (result i64))) + (type $23 (func (param i32 i64 i64) (result i32))) + (type $24 (func (param i32 i32 i64) (result i32))) + (type $25 (func (result i32))) + (type $26 (func (param f32) (result i32))) + (type $27 (func (param f64) (result i32))) + (type $28 (func (param i32 i32 f32))) + (type $29 (func (param i32 i32) (result f32))) + (type $30 (func (param i32 f32 f32) (result i32))) + (type $31 (func (param i32 i32 f64))) + (type $32 (func (param i32 i32) (result f64))) + (type $33 (func (param i32 f64 f64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 736)) + (global $~lib/memory/__data_end i32 (i32.const 872)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33640)) + (global $~lib/memory/__heap_base i32 (i32.const 33640)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $9 (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $10 (i32.const 524) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 636) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00") + (data $13 (i32.const 684) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $14 (i32.const 736) "!\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\89\10\00B\08\00\00\02\t\00\00P\88\10\00\10\t\12\00\10\89\00\00B\00\00\00P\80\00\00\10\t\11\00\82\08\00\00\90\08\11\00\10\t\01\00\82\00\00\00\90\00\01\00\10\t\02\00\02\01\00\00\10\01\02\00\10\t\14\00\02\n\00\00\10\n\14\00\10\t\04\00\02\02\00\00\10\02\04\00\10\t2\00\02\19\00\00\10\192\00\10\t4\00\02\1a\00\00\10\1a4\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.0 (result i32) + local.get $key + i32.extend8_s + local.set $key|1 + i32.const 1 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.0 + end + return + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load8_s + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=4 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store8 + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load8_s + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store8 offset=1 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store8 + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load8_s offset=1 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=4 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.1 (result i32) + local.get $key + local.set $key|1 + i32.const 4 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.1 + end + return + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=4 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.2 (result i32) + local.get $key + i32.const 255 + i32.and + local.set $key|1 + i32.const 1 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.2 + end + return + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load8_u + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=4 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store8 + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load8_u + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store8 offset=1 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store8 + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load8_u offset=1 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=4 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.3 (result i32) + local.get $key + i32.extend16_s + local.set $key|1 + i32.const 2 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.3 + end + return + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load16_s + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=4 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store16 + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load16_s + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store16 offset=2 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store16 + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load16_s offset=2 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=4 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.4 (result i32) + local.get $key + i32.const 65535 + i32.and + local.set $key|1 + i32.const 2 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.4 + end + return + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load16_u + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=4 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store16 + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load16_u + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store16 offset=2 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store16 + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load16_u offset=2 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=4 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.5 (result i32) + local.get $key + local.set $key|1 + i32.const 4 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.5 + end + return + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=4 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=4 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i64) (result i32) + (local $key|1 i64) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + i32.const 8 + i32.const 8 + i32.eq + drop + block $~lib/util/hash/hash64|inlined.0 (result i32) + local.get $key + local.set $key|1 + i32.const 0 + i32.const 374761393 + i32.add + i32.const 8 + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $key|1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash64|inlined.0 + end + return + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i64) + local.get $this + i64.load + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=8 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i64) + local.get $this + local.get $key + i64.store + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=12 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i64) + local.get $this + i64.load + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i64) + local.get $this + local.get $value + i64.store offset=8 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i64) + local.get $this + local.get $key + i64.store + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i64) + local.get $this + i64.load offset=8 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=16 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i64) (result i32) + (local $key|1 i64) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + i32.const 8 + i32.const 8 + i32.eq + drop + block $~lib/util/hash/hash64|inlined.1 (result i32) + local.get $key + local.set $key|1 + i32.const 0 + i32.const 374761393 + i32.add + i32.const 8 + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $key|1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash64|inlined.1 + end + return + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i64) + local.get $this + i64.load + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=8 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i64) + local.get $this + local.get $key + i64.store + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=12 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i64) + local.get $this + i64.load + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i64) + local.get $this + local.get $value + i64.store offset=8 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i64) + local.get $this + local.get $key + i64.store + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i64) + local.get $this + i64.load offset=8 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=16 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key f32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + block $~lib/util/hash/hash32|inlined.6 (result i32) + local.get $key + i32.reinterpret_f32 + local.set $key|1 + i32.const 4 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.6 + end + return + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result f32) + local.get $this + f32.load + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=4 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key f32) + local.get $this + local.get $key + f32.store + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result f32) + local.get $this + f32.load + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value f32) + local.get $this + local.get $value + f32.store offset=4 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key f32) + local.get $this + local.get $key + f32.store + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result f32) + local.get $this + f32.load offset=4 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key f64) (result i32) + (local $key|1 i64) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + block $~lib/util/hash/hash64|inlined.2 (result i32) + local.get $key + i64.reinterpret_f64 + local.set $key|1 + i32.const 0 + i32.const 374761393 + i32.add + i32.const 8 + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $key|1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash64|inlined.2 + end + return + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result f64) + local.get $this + f64.load + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=8 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key f64) + local.get $this + local.get $key + f64.store + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=12 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result f64) + local.get $this + f64.load + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value f64) + local.get $this + local.get $value + f64.store offset=8 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key f64) + local.get $this + local.get $key + f64.store + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result f64) + local.get $this + f64.load offset=8 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=16 + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $start:std/map + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $~lib/rt/itcms/__collect + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 432 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 592 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $"~lib/map/Map" + block $"~lib/map/Map" + block $"~lib/map/Map" + block $~lib/array/Array + block $~lib/array/Array + block $"~lib/map/Map" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"~lib/map/Map" $~lib/array/Array $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $"~lib/map/Map" $~lib/array/Array $"~lib/map/Map" $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + unreachable + ) + (func $~start + call $start:std/map + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33664 + i32.const 33712 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + i32.extend8_s + local.get $key + i32.extend8_s + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#has" (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 0 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 0 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 0 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + local.get $value + i32.store8 + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#keys" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $keys i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $keys + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.6" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.6" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:key" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#values" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.7" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.7" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:value" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 704 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 704 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + i32.extend8_s + local.get $key + i32.extend8_s + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"~lib/map/Map#delete" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.or + call $"~lib/map/MapEntry#set:taggedNext" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.sub + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $"~lib/map/Map#rehash" + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"~lib/map/Map#clear" (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.8" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.8" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $map i32) + (local $k i32) + (local $k|2 i32) + (local $keys i32) + (local $vals i32) + (local $keyMap i32) + (local $valMap i32) + (local $index i32) + (local $key i32) + (local $value i32) + (local $k|10 i32) + (local $k|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $map + i32.store + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 100 + i32.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + i32.const 10 + local.get $k + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#get" + i32.const 10 + local.get $k + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i32.const 100 + i32.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 10 + local.get $k|2 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + i32.const 20 + local.get $k|2 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|2 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i32.const 1 + i32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#keys" + local.tee $keys + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#values" + local.tee $vals + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $keyMap + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $valMap + i32.store offset=20 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $key + local.get $vals + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $value + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + local.get $key + call $"~lib/map/Map#set" + drop + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#set" + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|10 + loop $for-loop|3 + local.get $k|10 + i32.const 50 + i32.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|10 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|10 + i32.const 1 + i32.add + local.set $k|10 + br $for-loop|3 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|11 + loop $for-loop|4 + local.get $k|11 + i32.const 50 + i32.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + i32.const 10 + local.get $k|11 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|11 + i32.const 1 + i32.add + local.set $k|11 + br $for-loop|4 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#clear" + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + i32.const 255 + i32.and + local.get $key + i32.const 255 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#has" (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 0 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 0 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 0 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + local.get $value + i32.store8 + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#keys" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $keys i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $keys + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.6" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.6" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:key" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#values" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.7" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.7" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:value" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 704 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + i32.const 255 + i32.and + local.get $key + i32.const 255 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"~lib/map/Map#delete" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.or + call $"~lib/map/MapEntry#set:taggedNext" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.sub + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $"~lib/map/Map#rehash" + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"~lib/map/Map#clear" (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.8" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.8" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $map i32) + (local $k i32) + (local $k|2 i32) + (local $keys i32) + (local $vals i32) + (local $keyMap i32) + (local $valMap i32) + (local $index i32) + (local $key i32) + (local $value i32) + (local $k|10 i32) + (local $k|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $map + i32.store + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 100 + i32.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + i32.const 10 + local.get $k + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#get" + i32.const 10 + local.get $k + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i32.const 100 + i32.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 10 + local.get $k|2 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + i32.const 20 + local.get $k|2 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|2 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i32.const 1 + i32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#keys" + local.tee $keys + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#values" + local.tee $vals + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $keyMap + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $valMap + i32.store offset=20 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $key + local.get $vals + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $value + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + local.get $key + call $"~lib/map/Map#set" + drop + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#set" + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|10 + loop $for-loop|3 + local.get $k|10 + i32.const 50 + i32.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|10 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|10 + i32.const 1 + i32.add + local.set $k|10 + br $for-loop|3 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|11 + loop $for-loop|4 + local.get $k|11 + i32.const 50 + i32.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + i32.const 10 + local.get $k|11 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|11 + i32.const 1 + i32.add + local.set $k|11 + br $for-loop|4 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#clear" + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + i32.extend16_s + local.get $key + i32.extend16_s + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#has" (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 1 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 1 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 1 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + local.get $value + i32.store16 + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#keys" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $keys i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $keys + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.6" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.6" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:key" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#values" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.7" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.7" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:value" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 704 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + i32.extend16_s + local.get $key + i32.extend16_s + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"~lib/map/Map#delete" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.or + call $"~lib/map/MapEntry#set:taggedNext" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.sub + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $"~lib/map/Map#rehash" + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"~lib/map/Map#clear" (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.8" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.8" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $map i32) + (local $k i32) + (local $k|2 i32) + (local $keys i32) + (local $vals i32) + (local $keyMap i32) + (local $valMap i32) + (local $index i32) + (local $key i32) + (local $value i32) + (local $k|10 i32) + (local $k|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $map + i32.store + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 100 + i32.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + i32.const 10 + local.get $k + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#get" + i32.const 10 + local.get $k + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i32.const 100 + i32.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 10 + local.get $k|2 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + i32.const 20 + local.get $k|2 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|2 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i32.const 1 + i32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#keys" + local.tee $keys + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#values" + local.tee $vals + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $keyMap + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $valMap + i32.store offset=20 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $key + local.get $vals + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $value + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + local.get $key + call $"~lib/map/Map#set" + drop + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#set" + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|10 + loop $for-loop|3 + local.get $k|10 + i32.const 50 + i32.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|10 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|10 + i32.const 1 + i32.add + local.set $k|10 + br $for-loop|3 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|11 + loop $for-loop|4 + local.get $k|11 + i32.const 50 + i32.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + i32.const 10 + local.get $k|11 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|11 + i32.const 1 + i32.add + local.set $k|11 + br $for-loop|4 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#clear" + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + i32.const 65535 + i32.and + local.get $key + i32.const 65535 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#has" (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 1 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 1 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 1 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + local.get $value + i32.store16 + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#keys" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $keys i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $keys + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.6" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.6" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:key" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#values" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.7" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.7" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:value" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 704 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + i32.const 65535 + i32.and + local.get $key + i32.const 65535 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 8 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"~lib/map/Map#delete" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.or + call $"~lib/map/MapEntry#set:taggedNext" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.sub + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $"~lib/map/Map#rehash" + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"~lib/map/Map#clear" (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.8" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.8" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $map i32) + (local $k i32) + (local $k|2 i32) + (local $keys i32) + (local $vals i32) + (local $keyMap i32) + (local $valMap i32) + (local $index i32) + (local $key i32) + (local $value i32) + (local $k|10 i32) + (local $k|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $map + i32.store + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 100 + i32.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + i32.const 10 + local.get $k + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#get" + i32.const 10 + local.get $k + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i32.const 100 + i32.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 10 + local.get $k|2 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + i32.const 20 + local.get $k|2 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|2 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i32.const 1 + i32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#keys" + local.tee $keys + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#values" + local.tee $vals + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $keyMap + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $valMap + i32.store offset=20 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $key + local.get $vals + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $value + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + local.get $key + call $"~lib/map/Map#set" + drop + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#set" + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|10 + loop $for-loop|3 + local.get $k|10 + i32.const 50 + i32.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|10 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|10 + i32.const 1 + i32.add + local.set $k|10 + br $for-loop|3 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|11 + loop $for-loop|4 + local.get $k|11 + i32.const 50 + i32.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + i32.const 10 + local.get $k|11 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|11 + i32.const 1 + i32.add + local.set $k|11 + br $for-loop|4 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#clear" + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map#get" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#keys" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $keys i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $keys + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.6" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.6" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:key" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#values" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.7" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.7" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:value" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"~lib/map/Map#delete" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.or + call $"~lib/map/MapEntry#set:taggedNext" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.sub + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $"~lib/map/Map#rehash" + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"~lib/map/Map#clear" (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.8" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.8" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $map i32) + (local $k i32) + (local $k|2 i32) + (local $keys i32) + (local $vals i32) + (local $keyMap i32) + (local $valMap i32) + (local $index i32) + (local $key i32) + (local $value i32) + (local $k|10 i32) + (local $k|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $map + i32.store + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 100 + i32.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + i32.const 10 + local.get $k + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#get" + i32.const 10 + local.get $k + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i32.const 100 + i32.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 10 + local.get $k|2 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + i32.const 20 + local.get $k|2 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|2 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i32.const 1 + i32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#keys" + local.tee $keys + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#values" + local.tee $vals + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $keyMap + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $valMap + i32.store offset=20 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $key + local.get $vals + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $value + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + local.get $key + call $"~lib/map/Map#set" + drop + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#set" + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|10 + loop $for-loop|3 + local.get $k|10 + i32.const 50 + i32.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|10 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|10 + i32.const 1 + i32.add + local.set $k|10 + br $for-loop|3 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|11 + loop $for-loop|4 + local.get $k|11 + i32.const 50 + i32.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + i32.const 10 + local.get $k|11 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|11 + i32.const 1 + i32.add + local.set $k|11 + br $for-loop|4 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#clear" + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#has" (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#keys" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $keys i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $keys + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.6" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.6" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:key" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#values" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.7" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.7" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:value" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 704 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"~lib/map/Map#delete" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.or + call $"~lib/map/MapEntry#set:taggedNext" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.sub + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $"~lib/map/Map#rehash" + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"~lib/map/Map#clear" (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.8" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.8" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $map i32) + (local $k i32) + (local $k|2 i32) + (local $keys i32) + (local $vals i32) + (local $keyMap i32) + (local $valMap i32) + (local $index i32) + (local $key i32) + (local $value i32) + (local $k|10 i32) + (local $k|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $map + i32.store + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 100 + i32.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + i32.const 10 + local.get $k + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#get" + i32.const 10 + local.get $k + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i32.const 100 + i32.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 10 + local.get $k|2 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + i32.const 20 + local.get $k|2 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|2 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i32.const 1 + i32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#keys" + local.tee $keys + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#values" + local.tee $vals + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $keyMap + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $valMap + i32.store offset=20 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $key + local.get $vals + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $value + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + local.get $key + call $"~lib/map/Map#set" + drop + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#set" + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|10 + loop $for-loop|3 + local.get $k|10 + i32.const 50 + i32.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|10 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|10 + i32.const 1 + i32.add + local.set $k|10 + br $for-loop|3 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|11 + loop $for-loop|4 + local.get $k|11 + i32.const 50 + i32.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + i32.const 10 + local.get $k|11 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|11 + i32.const 1 + i32.add + local.set $k|11 + br $for-loop|4 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#clear" + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i64) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + i64.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#has" (param $this i32) (param $key i64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i64) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i64) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get" (param $this i32) (param $key i64) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 3 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 3 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + local.get $value + i64.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 3 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#keys" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $keys i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $keys + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.6" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.6" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:key" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#values" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.7" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.7" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:value" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i64) + (local $value i64) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 704 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i64) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + i64.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i64) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i64) (param $value i64) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"~lib/map/Map#delete" (param $this i32) (param $key i64) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.or + call $"~lib/map/MapEntry#set:taggedNext" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.sub + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $"~lib/map/Map#rehash" + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"~lib/map/Map#clear" (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.8" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.8" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $map i32) + (local $k i64) + (local $k|2 i64) + (local $keys i32) + (local $vals i32) + (local $keyMap i32) + (local $valMap i32) + (local $index i32) + (local $key i64) + (local $value i32) + (local $k|10 i64) + (local $k|11 i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $map + i32.store + i64.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i64.const 100 + i64.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + i32.const 10 + local.get $k + i32.wrap_i64 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#get" + i32.const 10 + local.get $k + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i64.const 1 + i64.add + local.set $k + br $for-loop|0 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i64.const 100 + i64.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 10 + local.get $k|2 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + i32.const 20 + local.get $k|2 + i32.wrap_i64 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|2 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i64.const 1 + i64.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#keys" + local.tee $keys + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#values" + local.tee $vals + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $keyMap + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $valMap + i32.store offset=20 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $key + local.get $vals + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $value + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + i64.extend_i32_s + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + local.get $key + call $"~lib/map/Map#set" + drop + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#set" + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $k|10 + loop $for-loop|3 + local.get $k|10 + i64.const 50 + i64.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|10 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|10 + i64.const 1 + i64.add + local.set $k|10 + br $for-loop|3 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $k|11 + loop $for-loop|4 + local.get $k|11 + i64.const 50 + i64.lt_s + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + i32.const 10 + local.get $k|11 + i32.wrap_i64 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|11 + i64.const 1 + i64.add + local.set $k|11 + br $for-loop|4 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#clear" + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i64) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + i64.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#has" (param $this i32) (param $key i64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i64) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i64) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get" (param $this i32) (param $key i64) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 25 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 3 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 3 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + local.get $value + i64.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 3 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#keys" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $keys i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $keys + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.6" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.6" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:key" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#values" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.7" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.7" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:value" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 26 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i64) + (local $value i64) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 704 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i64) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + i64.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i64) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i64) (param $value i64) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"~lib/map/Map#delete" (param $this i32) (param $key i64) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.or + call $"~lib/map/MapEntry#set:taggedNext" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.sub + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $"~lib/map/Map#rehash" + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"~lib/map/Map#clear" (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.8" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.8" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $map i32) + (local $k i64) + (local $k|2 i64) + (local $keys i32) + (local $vals i32) + (local $keyMap i32) + (local $valMap i32) + (local $index i32) + (local $key i64) + (local $value i32) + (local $k|10 i64) + (local $k|11 i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $map + i32.store + i64.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i64.const 100 + i64.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + i32.const 10 + local.get $k + i32.wrap_i64 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#get" + i32.const 10 + local.get $k + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i64.const 1 + i64.add + local.set $k + br $for-loop|0 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i64.const 100 + i64.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 10 + local.get $k|2 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + i32.const 20 + local.get $k|2 + i32.wrap_i64 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|2 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i64.const 1 + i64.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#keys" + local.tee $keys + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#values" + local.tee $vals + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $keyMap + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $valMap + i32.store offset=20 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $key + local.get $vals + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $value + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + i64.extend_i32_s + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + local.get $key + call $"~lib/map/Map#set" + drop + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#set" + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $k|10 + loop $for-loop|3 + local.get $k|10 + i64.const 50 + i64.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|10 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|10 + i64.const 1 + i64.add + local.set $k|10 + br $for-loop|3 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $k|11 + loop $for-loop|4 + local.get $k|11 + i64.const 50 + i64.lt_u + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + i32.const 10 + local.get $k|11 + i32.wrap_i64 + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|11 + i64.const 1 + i64.add + local.set $k|11 + br $for-loop|4 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#clear" + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 27 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key f32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + f32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#has" (param $this i32) (param $key f32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey f32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key f32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get" (param $this i32) (param $key f32) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 28 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value f32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + f32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#keys" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $keys i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $keys + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.6" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.6" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:key" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#values" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.7" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.7" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:value" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f32) + (local $value f32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 704 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key f32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + f32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey f32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key f32) (param $value f32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"~lib/map/Map#delete" (param $this i32) (param $key f32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.or + call $"~lib/map/MapEntry#set:taggedNext" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.sub + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $"~lib/map/Map#rehash" + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"~lib/map/Map#clear" (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.8" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.8" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $map i32) + (local $k f32) + (local $k|2 f32) + (local $keys i32) + (local $vals i32) + (local $keyMap i32) + (local $valMap i32) + (local $index i32) + (local $key f32) + (local $value i32) + (local $k|10 f32) + (local $k|11 f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $map + i32.store + f32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + f32.const 100 + f32.lt + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + i32.const 10 + local.get $k + i32.trunc_sat_f32_s + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#get" + i32.const 10 + local.get $k + i32.trunc_sat_f32_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + f32.const 1 + f32.add + local.set $k + br $for-loop|0 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + f32.const 100 + f32.lt + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 10 + local.get $k|2 + i32.trunc_sat_f32_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + i32.const 20 + local.get $k|2 + i32.trunc_sat_f32_s + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|2 + i32.trunc_sat_f32_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + f32.const 1 + f32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#keys" + local.tee $keys + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#values" + local.tee $vals + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $keyMap + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $valMap + i32.store offset=20 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $key + local.get $vals + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $value + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + f32.convert_i32_s + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + local.get $key + call $"~lib/map/Map#set" + drop + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#set" + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $k|10 + loop $for-loop|3 + local.get $k|10 + f32.const 50 + f32.lt + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|10 + i32.trunc_sat_f32_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|10 + f32.const 1 + f32.add + local.set $k|10 + br $for-loop|3 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $k|11 + loop $for-loop|4 + local.get $k|11 + f32.const 50 + f32.lt + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + i32.const 10 + local.get $k|11 + i32.trunc_sat_f32_s + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|11 + f32.const 1 + f32.add + local.set $k|11 + br $for-loop|4 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#clear" + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 30 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key f64) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + f64.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#has" (param $this i32) (param $key f64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey f64) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key f64) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get" (param $this i32) (param $key f64) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 31 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 3 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 3 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value f64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + local.get $value + f64.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 3 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#keys" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $keys i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $keys + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.6" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.6" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:key" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $keys + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#values" (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $"~lib/map/ENTRY_SIZE|inlined.7" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.7" + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $"~lib/map/MapEntry#get:value" + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 32 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f64) + (local $value f64) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 704 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key f64) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + f64.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey f64) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key f64) (param $value f64) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 24 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#get:size" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $"~lib/map/Map#get:entriesCount" + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"~lib/map/Map#delete" (param $this i32) (param $key f64) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.or + call $"~lib/map/MapEntry#set:taggedNext" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.sub + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $"~lib/map/Map#rehash" + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"~lib/map/Map#clear" (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.8" (result i32) + i32.const 16 + br $"~lib/map/ENTRY_SIZE|inlined.8" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $map i32) + (local $k f64) + (local $k|2 f64) + (local $keys i32) + (local $vals i32) + (local $keyMap i32) + (local $valMap i32) + (local $index i32) + (local $key f64) + (local $value i32) + (local $k|10 f64) + (local $k|11 f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $map + i32.store + f64.const 0 + local.set $k + loop $for-loop|0 + local.get $k + f64.const 100 + f64.lt + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + i32.const 10 + local.get $k + i32.trunc_sat_f64_s + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k + call $"~lib/map/Map#get" + i32.const 10 + local.get $k + i32.trunc_sat_f64_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + f64.const 1 + f64.add + local.set $k + br $for-loop|0 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + f64.const 100 + f64.lt + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 10 + local.get $k|2 + i32.trunc_sat_f64_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + i32.const 20 + local.get $k|2 + i32.trunc_sat_f64_s + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|2 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|2 + i32.trunc_sat_f64_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + f64.const 1 + f64.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#keys" + local.tee $keys + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#values" + local.tee $vals + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $keyMap + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $"~lib/map/Map#constructor" + local.tee $valMap + i32.store offset=20 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $keys + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $key + local.get $vals + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $index + call $~lib/array/Array#__get + local.set $value + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + f64.convert_i32_s + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $key + local.get $key + call $"~lib/map/Map#set" + drop + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $value + i32.const 20 + i32.sub + local.get $value + i32.const 20 + i32.sub + call $"~lib/map/Map#set" + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $keyMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $valMap + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $k|10 + loop $for-loop|3 + local.get $k|10 + f64.const 50 + f64.lt + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#get" + i32.const 20 + local.get $k|10 + i32.trunc_sat_f64_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|10 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|10 + f64.const 1 + f64.add + local.set $k|10 + br $for-loop|3 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $k|11 + loop $for-loop|4 + local.get $k|11 + f64.const 50 + f64.lt + if + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + i32.const 10 + local.get $k|11 + i32.trunc_sat_f64_s + i32.add + call $"~lib/map/Map#set" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#delete" + drop + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + local.get $k|11 + call $"~lib/map/Map#has" + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|11 + f64.const 1 + f64.add + local.set $k|11 + br $for-loop|4 + end + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#clear" + local.get $map + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $"~lib/map/Map#get:size" + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 432 + i32.const 480 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) +) diff --git a/tests/compiler/std/map.json b/tests/compiler/std/map.json index 9f7878d475..b83788465e 100644 --- a/tests/compiler/std/map.json +++ b/tests/compiler/std/map.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + ], + "asc_rtrace": true +} diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat deleted file mode 100644 index ca6ae81d81..0000000000 --- a/tests/compiler/std/map.optimized.wat +++ /dev/null @@ -1,13130 +0,0 @@ -(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_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i32_i64_=>_none (func (param i32 i64))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_f64_=>_none (func (param i32 f64))) - (type $i32_i64_i64_=>_i32 (func (param i32 i64 i64) (result i32))) - (type $i32_f32_f32_=>_i32 (func (param i32 f32 f32) (result i32))) - (type $i32_f64_f64_=>_i32 (func (param i32 f64 f64) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1232) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1296) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") - (data (i32.const 1344) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") - (data (i32.const 1408) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") - (data (i32.const 1456) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1504) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1568 - local.set $1 - i32.const 1568 - i32.const 0 - i32.store - i32.const 3136 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1568 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1568 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1568 - i32.const 3152 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1568 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 1088 - i32.const 1040 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1040 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - call $~lib/rt/rtrace/onalloc - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1556 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1556 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 28 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - i32.const 1200 - i32.const 1248 - i32.const 49 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/hash/hash8 (param $0 i32) (result i32) - local.get $0 - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - i32.load8_s - i32.store8 - local.get $2 - local.get $5 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $4 - local.get $5 - i32.load8_s - call $~lib/util/hash/hash8 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - local.tee $5 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store8 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=8 - local.get $1 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1360 - i32.const 1424 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - local.get $1 - i32.load - local.tee $5 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $4 - i32.const 1 - i32.and - if - local.get $5 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 1556 - i32.ge_u - if - local.get $1 - local.get $3 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1200 - i32.const 1472 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $3 - call $~lib/rt/tlsf/maybeInitialize - local.get $3 - i32.const 16 - i32.sub - local.set $4 - local.get $3 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $3 - select - if (result i32) - local.get $4 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $4 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $2 - i32.shl - local.tee $2 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - local.tee $1 - local.get $5 - i32.add - local.get $2 - local.get $5 - i32.sub - call $~lib/memory/memory.fill - local.get $1 - local.get $3 - i32.ne - if - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $2 - i32.store offset=8 - end - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1520 - i32.const 1472 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $6 - local.get $0 - i32.load offset=16 - local.tee $7 - local.set $4 - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 1073741808 - i32.gt_u - if - i32.const 1200 - i32.const 1472 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $3 - local.get $2 - local.get $0 - i32.load - local.tee $8 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $8 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - loop $for-loop|0 - local.get $5 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $2 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $2 - i32.load8_s - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/array/Array#constructor (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 16 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $5 - i32.const 0 - i32.store - local.get $5 - i32.const 0 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 268435452 - i32.gt_u - if - i32.const 1200 - i32.const 1472 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - local.tee $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 - local.get $5 - i32.load - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $0 - i32.store offset=12 - local.get $5 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1520 - i32.const 1472 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=8 - local.set $3 - local.get $0 - i32.load offset=16 - local.tee $4 - call $~lib/array/Array#constructor - local.set $0 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 12 - i32.mul - i32.add - local.tee $5 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/map/Map#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1520 - i32.const 1472 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - i32.load8_s - i32.store8 - local.get $2 - local.get $5 - i32.load8_s offset=1 - i32.store8 offset=1 - local.get $2 - local.get $4 - local.get $5 - i32.load8_s - call $~lib/util/hash/hash8 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=4 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - local.tee $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - local.set $4 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $1 - if - local.get $1 - i32.load offset=4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $1 - i32.load offset=4 - i32.const -2 - i32.and - local.set $1 - br $while-continue|0 - end - end - i32.const 0 - local.set $1 - end - local.get $1 - if - local.get $1 - local.get $2 - i32.store8 offset=1 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $5 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $1 - local.get $3 - i32.store8 - local.get $1 - local.get $2 - i32.store8 offset=1 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $1 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $1 - i32.store - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/hash/hash32 (param $0 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - i32.load - i32.store - local.get $2 - local.get $5 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $4 - local.get $5 - i32.load - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - local.tee $5 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=8 - local.get $1 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 24 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - loop $for-loop|1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 20 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $4 - local.get $0 - call $~lib/map/Map#values - local.set $6 - i32.const 24 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $1 - i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - call $~lib/map/Map#constructor - local.set $5 - loop $for-loop|4 - local.get $2 - local.get $4 - i32.load offset=12 - i32.lt_s - if - local.get $2 - local.get $4 - i32.load offset=12 - i32.ge_u - if - i32.const 1520 - i32.const 1472 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $4 - i32.load offset=4 - i32.add - i32.load8_s - local.set $3 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - local.set $7 - local.get $0 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - local.get $3 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $3 - local.get $3 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|4 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|6 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#delete - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|6 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|8 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#delete - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|8 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - local.get $5 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $4 - local.get $5 - i32.load8_u - call $~lib/util/hash/hash8 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - local.tee $5 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store8 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=8 - local.get $1 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1360 - i32.const 1424 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $6 - local.get $0 - i32.load offset=16 - local.tee $7 - local.set $4 - i32.const 16 - i32.const 9 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 1073741808 - i32.gt_u - if - i32.const 1200 - i32.const 1472 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $3 - local.get $2 - local.get $0 - i32.load - local.tee $8 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $8 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - loop $for-loop|0 - local.get $5 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $2 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $2 - i32.load8_u - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - local.get $5 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - local.get $4 - local.get $5 - i32.load8_u - call $~lib/util/hash/hash8 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=4 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - local.tee $3 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - local.set $4 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $1 - if - local.get $1 - i32.load offset=4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $1 - i32.load offset=4 - i32.const -2 - i32.and - local.set $1 - br $while-continue|0 - end - end - i32.const 0 - local.set $1 - end - local.get $1 - if - local.get $1 - local.get $2 - i32.store8 offset=1 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $5 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $1 - local.get $3 - i32.store8 - local.get $1 - local.get $2 - i32.store8 offset=1 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $1 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $1 - i32.store - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 24 - i32.const 8 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - loop $for-loop|1 - local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const 20 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 255 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $4 - local.get $0 - call $~lib/map/Map#values - local.set $6 - i32.const 24 - i32.const 10 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $1 - i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - call $~lib/map/Map#constructor - local.set $5 - loop $for-loop|4 - local.get $2 - local.get $4 - i32.load offset=12 - i32.lt_s - if - local.get $2 - local.get $4 - i32.load offset=12 - i32.ge_u - if - i32.const 1520 - i32.const 1472 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $4 - i32.load offset=4 - i32.add - i32.load8_u - local.set $3 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - local.set $7 - local.get $0 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - local.get $3 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $3 - local.get $3 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|4 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|6 - local.get $2 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 255 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#delete - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|6 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|8 - local.get $2 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - local.get $2 - i32.const 255 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#delete - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|8 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/hash/hash16 (param $0 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - i32.load16_s - i32.store16 - local.get $2 - local.get $5 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $4 - local.get $5 - i32.load16_s - call $~lib/util/hash/hash16 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - local.tee $5 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store16 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=8 - local.get $1 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1360 - i32.const 1424 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1520 - i32.const 1472 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $8 - i32.const 536870904 - i32.gt_u - if - i32.const 1200 - i32.const 1472 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $9 - i32.const 12 - i32.mul - i32.add - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $3 - i32.load16_s - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - i32.load16_s - i32.store16 - local.get $2 - local.get $5 - i32.load16_s offset=2 - i32.store16 offset=2 - local.get $2 - local.get $4 - local.get $5 - i32.load16_s - call $~lib/util/hash/hash16 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=4 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - local.set $4 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $1 - if - local.get $1 - i32.load offset=4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - i32.load16_u - local.get $3 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $1 - i32.load offset=4 - i32.const -2 - i32.and - local.set $1 - br $while-continue|0 - end - end - i32.const 0 - local.set $1 - end - local.get $1 - if - local.get $1 - local.get $2 - i32.store16 offset=2 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $5 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $1 - local.get $3 - i32.store16 - local.get $1 - local.get $2 - i32.store16 offset=2 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $1 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $1 - i32.store - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 24 - i32.const 11 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 20 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $4 - local.get $0 - call $~lib/map/Map#values - local.set $6 - i32.const 24 - i32.const 13 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $3 - i32.const 3 - i32.store offset=4 - local.get $3 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $3 - i32.const 4 - i32.store offset=12 - local.get $3 - i32.const 0 - i32.store offset=16 - local.get $3 - i32.const 0 - i32.store offset=20 - call $~lib/map/Map#constructor - local.set $5 - loop $for-loop|4 - local.get $2 - local.get $4 - i32.load offset=12 - i32.lt_s - if - local.get $2 - local.get $4 - i32.load offset=12 - i32.ge_u - if - i32.const 1520 - i32.const 1472 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $1 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - local.set $7 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - local.get $1 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $1 - local.get $1 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|4 - end - end - local.get $3 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|6 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#delete - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|6 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|8 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#delete - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|8 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - i32.load16_u - i32.store16 - local.get $2 - local.get $5 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $4 - local.get $5 - i32.load16_u - call $~lib/util/hash/hash16 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - local.tee $5 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store16 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=8 - local.get $1 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1360 - i32.const 1424 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 15 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $8 - i32.const 536870904 - i32.gt_u - if - i32.const 1200 - i32.const 1472 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $9 - i32.const 12 - i32.mul - i32.add - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $3 - i32.load16_u - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - i32.load16_u - i32.store16 - local.get $2 - local.get $5 - i32.load16_u offset=2 - i32.store16 offset=2 - local.get $2 - local.get $4 - local.get $5 - i32.load16_u - call $~lib/util/hash/hash16 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=4 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - local.tee $3 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - local.set $4 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $1 - if - local.get $1 - i32.load offset=4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - i32.load16_u - local.get $3 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $1 - i32.load offset=4 - i32.const -2 - i32.and - local.set $1 - br $while-continue|0 - end - end - i32.const 0 - local.set $1 - end - local.get $1 - if - local.get $1 - local.get $2 - i32.store16 offset=2 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $5 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $1 - local.get $3 - i32.store16 - local.get $1 - local.get $2 - i32.store16 offset=2 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $1 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $1 - i32.store - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 24 - i32.const 14 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - loop $for-loop|1 - local.get $1 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - i32.const 20 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 65535 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $4 - local.get $0 - call $~lib/map/Map#values - local.set $6 - i32.const 24 - i32.const 16 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $3 - i32.const 3 - i32.store offset=4 - local.get $3 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $3 - i32.const 4 - i32.store offset=12 - local.get $3 - i32.const 0 - i32.store offset=16 - local.get $3 - i32.const 0 - i32.store offset=20 - call $~lib/map/Map#constructor - local.set $5 - loop $for-loop|4 - local.get $2 - local.get $4 - i32.load offset=12 - i32.lt_s - if - local.get $2 - local.get $4 - i32.load offset=12 - i32.ge_u - if - i32.const 1520 - i32.const 1472 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $1 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - local.set $7 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - local.get $1 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $1 - local.get $1 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|4 - end - end - local.get $3 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|6 - local.get $2 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 65535 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#delete - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|6 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|8 - local.get $2 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - local.get $2 - i32.const 65535 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#delete - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|8 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1360 - i32.const 1424 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $for-loop|0 - local.get $2 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - local.get $2 - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - local.get $2 - i32.const 20 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=16 - local.tee $6 - call $~lib/array/Array#constructor - local.set $2 - loop $for-loop|01 - local.get $4 - local.get $6 - i32.lt_s - if - local.get $5 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $0 - local.get $7 - i32.load - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|01 - end - end - local.get $2 - local.get $0 - call $~lib/array/Array#set:length - local.get $1 - call $~lib/map/Map#values - local.set $6 - call $~lib/map/Map#constructor - local.set $0 - call $~lib/map/Map#constructor - local.set $4 - loop $for-loop|2 - local.get $3 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $2 - local.get $3 - call $~lib/array/Array#__get - local.set $5 - local.get $6 - local.get $3 - call $~lib/array/Array#__get - local.set $7 - local.get $1 - local.get $5 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $7 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - local.get $5 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $4 - local.get $7 - i32.const 20 - i32.sub - local.tee $5 - local.get $5 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#get - local.get $3 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|3 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|4 - local.get $3 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - local.get $3 - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - call $~lib/map/Map#delete - local.get $1 - local.get $3 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 18 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $8 - i32.const 268435452 - i32.gt_u - if - i32.const 1200 - i32.const 1472 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 2 - i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $9 - i32.const 12 - i32.mul - i32.add - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $3 - i32.load - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 24 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - loop $for-loop|0 - local.get $1 - i32.const 100 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $1 - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 100 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $1 - i32.const 20 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - local.get $1 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $4 - local.get $0 - call $~lib/map/Map#values - local.set $6 - i32.const 24 - i32.const 19 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $1 - i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - call $~lib/map/Map#constructor - local.set $5 - loop $for-loop|2 - local.get $2 - local.get $4 - i32.load offset=12 - i32.lt_s - if - local.get $4 - local.get $2 - call $~lib/array/Array#__get - local.set $3 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - local.set $7 - local.get $0 - local.get $3 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - local.get $3 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $3 - local.get $3 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 - local.get $2 - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#delete - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|4 - local.get $2 - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - local.get $2 - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/map/Map#delete - local.get $0 - local.get $2 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|4 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/hash/hash64 (param $0 i64) (result i32) - (local $1 i32) - local.get $0 - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=12 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i64.load - i64.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=12 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - i64.load - i64.store - local.get $2 - local.get $5 - i32.load offset=8 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $5 - i64.load - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=12 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 16 - i32.add - local.set $2 - end - local.get $6 - i32.const 16 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - local.tee $5 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - local.get $3 - i32.const 4 - i32.shl - i32.add - local.tee $3 - local.get $1 - i64.store - local.get $3 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store offset=12 - local.get $2 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1360 - i32.const 1424 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1520 - i32.const 1472 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 21 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $8 - i32.const 134217726 - i32.gt_u - if - i32.const 1200 - i32.const 1472 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 3 - i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $9 - i32.const 4 - i32.shl - i32.add - local.tee $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $3 - i64.load - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/map/Map#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=8 - local.set $3 - local.get $0 - i32.load offset=16 - local.tee $4 - call $~lib/array/Array#constructor - local.set $0 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 4 - i32.shl - i32.add - local.tee $5 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $5 - i32.load offset=8 - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1520 - i32.const 1472 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - i64.load - i64.store - local.get $2 - local.get $5 - i64.load offset=8 - i64.store offset=8 - local.get $2 - local.get $4 - local.get $5 - i64.load - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=16 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 24 - i32.add - local.set $2 - end - local.get $6 - i32.const 24 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/util/hash/hash64 - local.set $4 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=16 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $3 - i64.load - i64.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $3 - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - local.set $3 - end - local.get $3 - if - local.get $3 - local.get $2 - i64.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $5 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - local.get $3 - i32.const 24 - i32.mul - i32.add - local.tee $3 - local.get $1 - i64.store - local.get $3 - local.get $2 - i64.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store offset=16 - local.get $4 - local.get $3 - i32.store - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - i32.const 4 - local.get $2 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/map/Map#rehash - end - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 24 - i32.const 20 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $1 - i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - loop $for-loop|0 - local.get $0 - i64.const 100 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - i64.const 100 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#keys - local.set $5 - local.get $1 - call $~lib/map/Map#values - local.set $7 - i32.const 24 - i32.const 22 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $2 - i32.const 3 - i32.store offset=4 - local.get $2 - i32.const 96 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $2 - i32.const 4 - i32.store offset=12 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 0 - i32.store offset=20 - call $~lib/map/Map#constructor - local.set $6 - loop $for-loop|2 - local.get $3 - local.get $5 - i32.load offset=12 - i32.lt_s - if - local.get $5 - local.get $3 - call $~lib/array/Array#__get - local.set $0 - local.get $7 - local.get $3 - call $~lib/array/Array#__get - local.set $4 - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $4 - i32.const 20 - i32.sub - i64.extend_i32_s - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $0 - local.get $0 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 - local.get $4 - i32.const 20 - i32.sub - local.tee $4 - local.get $4 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i64.const 50 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|3 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i64.const 50 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|4 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 24 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $8 - i32.const 134217726 - i32.gt_u - if - i32.const 1200 - i32.const 1472 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 3 - i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $9 - i32.const 4 - i32.shl - i32.add - local.tee $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $3 - i64.load - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $std/map/testNumeric - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 24 - i32.const 23 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $1 - i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - loop $for-loop|0 - local.get $0 - i64.const 100 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - i64.const 100 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#keys - local.set $5 - local.get $1 - call $~lib/map/Map#values - local.set $7 - i32.const 24 - i32.const 25 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $2 - i32.const 3 - i32.store offset=4 - local.get $2 - i32.const 96 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $2 - i32.const 4 - i32.store offset=12 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 0 - i32.store offset=20 - call $~lib/map/Map#constructor - local.set $6 - loop $for-loop|2 - local.get $3 - local.get $5 - i32.load offset=12 - i32.lt_s - if - local.get $5 - local.get $3 - call $~lib/array/Array#__get - local.set $0 - local.get $7 - local.get $3 - call $~lib/array/Array#__get - local.set $4 - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $4 - i32.const 20 - i32.sub - i64.extend_i32_s - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $0 - local.get $0 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 - local.get $4 - i32.const 20 - i32.sub - local.tee $4 - local.get $4 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i64.const 50 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|3 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i64.const 50 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|4 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - f32.load - local.get $1 - f32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - f32.load - f32.store - local.get $2 - local.get $5 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $4 - local.get $5 - f32.load - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.tee $5 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - f32.store - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store offset=8 - local.get $2 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1360 - i32.const 1424 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - ) - (func $~lib/map/Map#keys (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - i32.load offset=8 - local.set $6 - local.get $0 - i32.load offset=16 - local.tee $9 - local.set $8 - i32.const 16 - i32.const 27 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $9 - i32.const 268435452 - i32.gt_u - if - i32.const 1200 - i32.const 1472 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $7 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $7 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - loop $for-loop|0 - local.get $10 - local.get $9 - i32.lt_s - if - local.get $6 - local.get $10 - i32.const 12 - i32.mul - i32.add - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - f32.load - local.set $4 - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1520 - i32.const 1472 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $4 - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $10 - i32.const 1 - i32.add - local.set $10 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - f32.load - f32.store - local.get $2 - local.get $5 - f32.load offset=4 - f32.store offset=4 - local.get $2 - local.get $4 - local.get $5 - f32.load - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.tee $4 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - f32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $5 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - f32.store - local.get $3 - local.get $2 - f32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store offset=8 - local.get $4 - local.get $3 - i32.store - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 f32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - i32.const 4 - local.get $2 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric - (local $0 f32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 24 - i32.const 26 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $1 - i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - loop $for-loop|0 - local.get $0 - f32.const 100 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f32_s - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f32_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - f32.const 100 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f32_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f32_s - i32.const 20 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f32_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#keys - local.set $4 - local.get $1 - call $~lib/map/Map#values - local.set $7 - i32.const 24 - i32.const 28 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $2 - i32.const 3 - i32.store offset=4 - local.get $2 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $2 - i32.const 4 - i32.store offset=12 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 0 - i32.store offset=20 - call $~lib/map/Map#constructor - local.set $6 - loop $for-loop|2 - local.get $3 - local.get $4 - i32.load offset=12 - i32.lt_s - if - local.get $3 - local.get $4 - i32.load offset=12 - i32.ge_u - if - i32.const 1520 - i32.const 1472 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $0 - local.get $7 - local.get $3 - call $~lib/array/Array#__get - local.set $5 - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $5 - i32.const 20 - i32.sub - f32.convert_i32_s - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $0 - local.get $0 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 - local.get $5 - i32.const 20 - i32.sub - local.tee $5 - local.get $5 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - f32.const 50 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f32_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $for-loop|3 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - f32.const 50 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f32_s - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $for-loop|4 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=12 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - f64.load - local.get $1 - f64.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=12 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 f64) (result i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - f64.load - f64.store - local.get $2 - local.get $5 - i32.load offset=8 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $5 - f64.load - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=12 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 16 - i32.add - local.set $2 - end - local.get $6 - i32.const 16 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.tee $5 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - local.get $3 - i32.const 4 - i32.shl - i32.add - local.tee $3 - local.get $1 - f64.store - local.get $3 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store offset=12 - local.get $2 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 f64) (result i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1360 - i32.const 1424 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - ) - (func $~lib/map/Map#keys (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - i32.load offset=8 - local.set $6 - local.get $0 - i32.load offset=16 - local.tee $9 - local.set $8 - i32.const 16 - i32.const 30 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $9 - i32.const 134217726 - i32.gt_u - if - i32.const 1200 - i32.const 1472 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $7 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $7 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - loop $for-loop|0 - local.get $10 - local.get $9 - i32.lt_s - if - local.get $6 - local.get $10 - i32.const 4 - i32.shl - i32.add - local.tee $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - f64.load - local.set $4 - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1520 - i32.const 1472 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $10 - i32.const 1 - i32.add - local.set $10 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $8 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $6 - local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $5 - local.get $6 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $5 - f64.load - f64.store - local.get $2 - local.get $5 - f64.load offset=8 - f64.store offset=8 - local.get $2 - local.get $4 - local.get $5 - f64.load - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - i32.store offset=16 - local.get $5 - local.get $2 - i32.store - local.get $2 - i32.const 24 - i32.add - local.set $2 - end - local.get $6 - i32.const 24 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 f64) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.set $4 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=16 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $3 - f64.load - local.get $1 - f64.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $3 - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - local.set $3 - end - local.get $3 - if - local.get $3 - local.get $2 - f64.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $5 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - local.get $3 - i32.const 24 - i32.mul - i32.add - local.tee $3 - local.get $1 - f64.store - local.get $3 - local.get $2 - f64.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store offset=16 - local.get $4 - local.get $3 - i32.store - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 f64) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - i32.const 4 - local.get $2 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric - (local $0 f64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 24 - i32.const 29 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $1 - i32.const 3 - i32.store offset=4 - local.get $1 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $1 - i32.const 4 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - loop $for-loop|0 - local.get $0 - f64.const 100 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f64_s - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f64_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - f64.const 100 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f64_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f64_s - i32.const 20 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f64_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#keys - local.set $4 - local.get $1 - call $~lib/map/Map#values - local.set $7 - i32.const 24 - i32.const 31 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $2 - i32.const 3 - i32.store offset=4 - local.get $2 - i32.const 96 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $2 - i32.const 4 - i32.store offset=12 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 0 - i32.store offset=20 - call $~lib/map/Map#constructor - local.set $6 - loop $for-loop|2 - local.get $3 - local.get $4 - i32.load offset=12 - i32.lt_s - if - local.get $3 - local.get $4 - i32.load offset=12 - i32.ge_u - if - i32.const 1520 - i32.const 1472 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $0 - local.get $7 - local.get $3 - call $~lib/array/Array#__get - local.set $5 - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $5 - i32.const 20 - i32.sub - f64.convert_i32_s - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $0 - local.get $0 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 - local.get $5 - i32.const 20 - i32.sub - local.tee $5 - local.get $5 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $2 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - f64.const 50 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f64_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $for-loop|3 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - f64.const 50 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f64_s - i32.const 10 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 1312 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $for-loop|4 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~start - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $folding-inner1 - block $folding-inner0 - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $0 - i32.load offset=16 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=24 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=16 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 1556 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) -) diff --git a/tests/compiler/std/map.release.wat b/tests/compiler/std/map.release.wat new file mode 100644 index 0000000000..835670c17a --- /dev/null +++ b/tests/compiler/std/map.release.wat @@ -0,0 +1,23311 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32 i32))) + (type $3 (func)) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i64) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i64))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i64 i32) (result i32))) + (type $12 (func (param i32 i64 i32))) + (type $13 (func (param i32 i64 i64))) + (type $14 (func (param i32 i64))) + (type $15 (func (param i32 f32) (result i32))) + (type $16 (func (param i32 f64) (result i32))) + (type $17 (func (param i32 f32 i32) (result i32))) + (type $18 (func (param i32 f32 i32))) + (type $19 (func (param i32 f32 f32))) + (type $20 (func (param i32 f32))) + (type $21 (func (param i32 f64 i32) (result i32))) + (type $22 (func (param i32 f64 i32))) + (type $23 (func (param i32 f64 f64))) + (type $24 (func (param i32 f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34664)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) ",") + (data $8.1 (i32.const 1448) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $9 (i32.const 1484) "<") + (data $9.1 (i32.const 1496) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $10 (i32.const 1548) ",") + (data $10.1 (i32.const 1560) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") + (data $11 (i32.const 1596) "<") + (data $11.1 (i32.const 1608) "\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") + (data $12 (i32.const 1660) ",") + (data $12.1 (i32.const 1672) "\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data $13 (i32.const 1708) ",") + (data $13.1 (i32.const 1720) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $14 (i32.const 1760) "!\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\89\10\00B\08\00\00\02\t\00\00P\88\10\00\10\t\12\00\10\89\00\00B\00\00\00P\80\00\00\10\t\11\00\82\08\00\00\90\08\11\00\10\t\01\00\82\00\00\00\90\00\01\00\10\t\02\00\02\01\00\00\10\01\02\00\10\t\14\00\02\n\00\00\10\n\14\00\10\t\04\00\02\02\00\00\10\02\04\00\10\t2\00\02\19\00\00\10\192\00\10\t4\00\02\1a\00\00\10\1a4") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1616 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$1422 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34664 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$1422 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1760 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1764 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34672 + i32.const 0 + i32.store + i32.const 36240 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34672 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34672 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34672 + i32.const 36244 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34672 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34664 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34664 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34664 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34664 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $7 + i32.load8_s + local.tee $8 + i32.store8 + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store8 + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#get:size" (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $5 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + local.get $2 + i32.shl + local.set $1 + local.get $3 + if + i32.const 1073741820 + local.get $5 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $1 + end + block $__inlined_func$~lib/rt/itcms/__renew$1377 + local.get $4 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u + if + local.get $3 + local.get $1 + i32.store offset=16 + local.get $4 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$1377 + end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $4 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $1 + local.get $3 + i32.lt_u + select + memory.copy + end + local.get $2 + local.get $4 + i32.ne + if + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $1 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 0 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#constructor (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $0 + local.get $0 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#values" (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.tee $0 + call $~lib/array/Array#constructor + local.tee $5 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $3 + local.get $2 + i32.const 12 + i32.mul + i32.add + local.tee $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $1 + local.get $4 + i32.load offset=4 + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $"~lib/map/Map#constructor" (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $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) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $8 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1378" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1378" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $3 + end + local.get $3 + if + local.get $3 + local.get $2 + i32.store8 offset=1 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $9 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $10 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $5 + local.get $10 + i32.ne + if + local.get $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $5 + i32.load8_s + local.tee $11 + i32.store8 + local.get $3 + local.get $5 + i32.load8_s offset=1 + i32.store8 offset=1 + local.get $3 + local.get $6 + local.get $7 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $11 + local.get $11 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + local.get $11 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + local.get $11 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $11 + i32.load + i32.store offset=4 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $3 + local.get $1 + i32.store8 + local.get $3 + local.get $2 + i32.store8 offset=1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#rehash" (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $7 + i32.load + local.tee $8 + i32.store + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#clear" (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $5 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.get $8 + i32.load8_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $3 + i32.store offset=20 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=4 + i32.add + i32.load8_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $5 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $6 + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $5 + local.get $5 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $5 + local.get $5 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $7 + i32.load8_u + local.tee $8 + i32.store8 + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store8 + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $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) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $8 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1383" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1383" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $3 + end + local.get $3 + if + local.get $3 + local.get $2 + i32.store8 offset=1 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $9 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $10 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $5 + local.get $10 + i32.ne + if + local.get $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $5 + i32.load8_u + local.tee $11 + i32.store8 + local.get $3 + local.get $5 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $3 + local.get $6 + local.get $7 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $11 + local.get $11 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + local.get $11 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + local.get $11 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $11 + i32.load + i32.store offset=4 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $3 + local.get $1 + i32.store8 + local.get $3 + local.get $2 + i32.store8 offset=1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $5 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.get $8 + i32.load8_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $3 + i32.store offset=20 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=4 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $5 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $6 + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $5 + local.get $5 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $5 + local.get $5 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $7 + i32.load16_s + local.tee $8 + i32.store16 + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $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) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $8 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1388" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1388" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $3 + end + local.get $3 + if + local.get $3 + local.get $2 + i32.store16 offset=2 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $9 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $10 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $5 + local.get $10 + i32.ne + if + local.get $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $5 + i32.load16_s + local.tee $11 + i32.store16 + local.get $3 + local.get $5 + i32.load16_s offset=2 + i32.store16 offset=2 + local.get $3 + local.get $6 + local.get $7 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $11 + local.get $11 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + local.get $11 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + local.get $11 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $11 + i32.load + i32.store offset=4 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + i32.const 1 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $5 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.get $8 + i32.load16_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $3 + i32.store offset=20 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.load offset=4 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $5 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $6 + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $5 + local.get $5 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $5 + local.get $5 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $7 + i32.load16_u + local.tee $8 + i32.store16 + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $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) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $8 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1393" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1393" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $3 + end + local.get $3 + if + local.get $3 + local.get $2 + i32.store16 offset=2 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $9 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $10 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $5 + local.get $10 + i32.ne + if + local.get $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $5 + i32.load16_u + local.tee $11 + i32.store16 + local.get $3 + local.get $5 + i32.load16_u offset=2 + i32.store16 offset=2 + local.get $3 + local.get $6 + local.get $7 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $11 + local.get $11 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + local.get $11 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + local.get $11 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $11 + i32.load + i32.store offset=4 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + i32.const 1 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $5 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.get $8 + i32.load16_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $3 + i32.store offset=20 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.load offset=4 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $5 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $6 + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $5 + local.get $5 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $5 + local.get $5 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=16 + local.tee $6 + call $~lib/array/Array#constructor + local.tee $2 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $5 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + local.get $7 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $5 + i32.store offset=20 + i32.const 0 + local.set $3 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $6 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $7 + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $6 + local.get $6 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $6 + local.get $6 + call $"~lib/map/Map#set" + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $7 + i32.load + local.tee $8 + i32.store + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $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) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $7 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $10 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $4 + local.set $3 + loop $while-continue|0 + local.get $5 + local.get $10 + i32.ne + if + local.get $10 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $10 + i32.load + local.tee $11 + i32.store + local.get $3 + local.get $10 + i32.load offset=4 + i32.store offset=4 + local.get $3 + local.get $9 + local.get $8 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $11 + local.get $11 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + local.get $11 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + local.get $11 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $11 + i32.load + i32.store offset=8 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 12 + i32.add + local.set $3 + end + local.get $10 + i32.const 12 + i32.add + local.set $10 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $0 + local.get $9 + i32.store + local.get $0 + local.get $9 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $7 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $5 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.get $8 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $3 + i32.store offset=20 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $5 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $6 + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $5 + local.get $5 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $5 + local.get $5 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $8 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne + if + local.get $8 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i64.load + local.tee $6 + i64.store + local.get $2 + local.get $8 + i32.load offset=8 + i32.store offset=8 + local.get $2 + local.get $7 + local.get $1 + local.get $6 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $9 + i32.const 15 + i32.shr_u + local.get $9 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + i32.const 13 + i32.shr_u + local.get $9 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + i32.const 16 + i32.shr_u + local.get $9 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $9 + i32.load + i32.store offset=12 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $8 + i32.const 16 + i32.add + local.set $8 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $0 + local.get $7 + i32.store + local.get $0 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=8 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 4 + i32.shl + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=12 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.const 3 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#values" (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.tee $0 + call $~lib/array/Array#constructor + local.tee $5 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $3 + local.get $2 + i32.const 4 + i32.shl + i32.add + local.tee $4 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $1 + local.get $4 + i32.load offset=8 + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + local.get $3 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 + i32.const 16 + i32.shr_u + i32.xor + local.tee $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1403" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $3 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1403" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $3 + end + local.get $3 + if + local.get $3 + local.get $2 + i64.store offset=8 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $11 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $6 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $6 + local.get $11 + i32.ne + if + local.get $11 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $11 + i64.load + local.tee $9 + i64.store + local.get $3 + local.get $11 + i64.load offset=8 + i64.store offset=8 + local.get $3 + local.get $10 + local.get $5 + local.get $9 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $9 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $12 + local.get $12 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $12 + local.get $12 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $12 + local.get $12 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $12 + i32.load + i32.store offset=16 + local.get $12 + local.get $3 + i32.store + local.get $3 + i32.const 24 + i32.add + local.set $3 + end + local.get $11 + i32.const 24 + i32.add + local.set $11 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $0 + local.get $10 + i32.store + local.get $0 + local.get $10 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 24 + i32.mul + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=16 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $"~lib/map/Map#find" + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#clear" (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + loop $for-loop|0 + local.get $2 + i64.const 100 + i64.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + local.get $2 + i32.wrap_i64 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + i64.const 100 + i64.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + local.get $2 + i32.wrap_i64 + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $7 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=12 + local.get $7 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $7 + local.get $7 + i32.const 8 + i32.le_u + select + i32.const 3 + i32.shl + local.tee $9 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $8 + local.get $4 + i32.store + local.get $8 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $9 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + loop $for-loop|00 + local.get $3 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 4 + i32.shl + i32.add + local.tee $4 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i64.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 96 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $5 + i32.store offset=20 + i32.const 0 + local.set $3 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $3 + local.get $8 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $6 + i32.const 20 + i32.sub + i64.extend_i32_s + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $2 + local.get $2 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $6 + i32.const 20 + i32.sub + local.tee $6 + local.get $6 + call $"~lib/map/Map#set" + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|3 + local.get $2 + i64.const 50 + i64.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|4 + local.get $2 + i64.const 50 + i64.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + local.get $2 + i32.wrap_i64 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $8 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne + if + local.get $8 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i64.load + local.tee $6 + i64.store + local.get $2 + local.get $8 + i32.load offset=8 + i32.store offset=8 + local.get $2 + local.get $7 + local.get $1 + local.get $6 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $9 + i32.const 15 + i32.shr_u + local.get $9 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + i32.const 13 + i32.shr_u + local.get $9 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + i32.const 16 + i32.shr_u + local.get $9 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $9 + i32.load + i32.store offset=12 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $8 + i32.const 16 + i32.add + local.set $8 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $0 + local.get $7 + i32.store + local.get $0 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=8 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 4 + i32.shl + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=12 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + local.get $3 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 + i32.const 16 + i32.shr_u + i32.xor + local.tee $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1408" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $3 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1408" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $3 + end + local.get $3 + if + local.get $3 + local.get $2 + i64.store offset=8 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $11 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $6 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $6 + local.get $11 + i32.ne + if + local.get $11 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $11 + i64.load + local.tee $9 + i64.store + local.get $3 + local.get $11 + i64.load offset=8 + i64.store offset=8 + local.get $3 + local.get $10 + local.get $5 + local.get $9 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $9 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $12 + local.get $12 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $12 + local.get $12 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $12 + local.get $12 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $12 + i32.load + i32.store offset=16 + local.get $12 + local.get $3 + i32.store + local.get $3 + i32.const 24 + i32.add + local.set $3 + end + local.get $11 + i32.const 24 + i32.add + local.set $11 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $0 + local.get $10 + i32.store + local.get $0 + local.get $10 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 24 + i32.mul + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=16 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $"~lib/map/Map#find" + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + loop $for-loop|0 + local.get $2 + i64.const 100 + i64.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + local.get $2 + i32.wrap_i64 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + i64.const 100 + i64.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + local.get $2 + i32.wrap_i64 + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $7 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 25 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=12 + local.get $7 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $7 + local.get $7 + i32.const 8 + i32.le_u + select + i32.const 3 + i32.shl + local.tee $9 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $8 + local.get $4 + i32.store + local.get $8 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $9 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + loop $for-loop|00 + local.get $3 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 4 + i32.shl + i32.add + local.tee $4 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i64.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 26 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 96 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $5 + i32.store offset=20 + i32.const 0 + local.set $3 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $3 + local.get $8 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $6 + i32.const 20 + i32.sub + i64.extend_i32_s + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $2 + local.get $2 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $6 + i32.const 20 + i32.sub + local.tee $6 + local.get $6 + call $"~lib/map/Map#set" + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|3 + local.get $2 + i64.const 50 + i64.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|4 + local.get $2 + i64.const 50 + i64.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + local.get $2 + i32.wrap_i64 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f32.load + f32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 f32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $8 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $5 + local.get $8 + i32.ne + if + local.get $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + f32.load + local.tee $4 + f32.store + local.get $2 + local.get $8 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $7 + local.get $1 + local.get $4 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $9 + local.get $9 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + local.get $9 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + local.get $9 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $9 + i32.load + i32.store offset=8 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $8 + i32.const 12 + i32.add + local.set $8 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $0 + local.get $7 + i32.store + local.get $0 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 f32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + f32.store + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 f32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#keys" (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 28 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 12 + i32.mul + i32.add + local.tee $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $1 + local.tee $0 + i32.const 1 + i32.add + local.set $1 + local.get $7 + f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $0 + local.get $6 + i32.load offset=12 + i32.ge_u + if + local.get $0 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $0 + i32.const 1 + i32.add + local.tee $7 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $4 + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 f32) (param $2 f32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $8 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + f32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $11 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $4 + local.set $3 + loop $while-continue|0 + local.get $6 + local.get $11 + i32.ne + if + local.get $11 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $11 + f32.load + local.tee $5 + f32.store + local.get $3 + local.get $11 + f32.load offset=4 + f32.store offset=4 + local.get $3 + local.get $10 + local.get $9 + local.get $5 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $12 + local.get $12 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $12 + local.get $12 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $12 + local.get $12 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $3 + i32.store + local.get $3 + i32.const 12 + i32.add + local.set $3 + end + local.get $11 + i32.const 12 + i32.add + local.set $11 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $0 + local.get $10 + i32.store + local.get $0 + local.get $10 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $9 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + f32.store + local.get $3 + local.get $2 + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 f32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $"~lib/map/Map#find" + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $0 i32) + (local $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 27 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + loop $for-loop|0 + local.get $1 + f32.const 100 + f32.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $1 + i32.trunc_sat_f32_s + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_f32_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + f32.const 100 + f32.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_f32_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $1 + i32.trunc_sat_f32_s + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_f32_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $"~lib/map/Map#keys" + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $"~lib/map/Map#values" + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $6 + local.get $7 + i32.store offset=8 + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $5 + i32.store offset=20 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $2 + local.get $4 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $2 + call $~lib/array/Array#__get + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $7 + i32.const 20 + i32.sub + f32.convert_i32_s + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + local.get $1 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $7 + local.get $7 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f32.const 50 + f32.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_f32_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f32.const 50 + f32.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $1 + i32.trunc_sat_f32_s + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f64.load + f64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $9 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $6 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $6 + local.get $9 + i32.ne + if + local.get $9 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $9 + f64.load + local.tee $5 + f64.store + local.get $2 + local.get $9 + i32.load offset=8 + i32.store offset=8 + local.get $2 + local.get $8 + local.get $1 + local.get $5 + i64.reinterpret_f64 + local.tee $4 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $10 + i32.const 15 + i32.shr_u + local.get $10 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $10 + i32.const 13 + i32.shr_u + local.get $10 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $10 + i32.const 16 + i32.shr_u + local.get $10 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $10 + i32.load + i32.store offset=12 + local.get $10 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $9 + i32.const 16 + i32.add + local.set $9 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 f64) (param $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + i32.const 15 + i32.shr_u + local.get $4 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + i32.const 13 + i32.shr_u + local.get $4 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + i32.const 16 + i32.shr_u + local.get $4 + i32.xor + local.tee $5 + call $"~lib/map/Map#find" + local.tee $4 + if + local.get $4 + local.get $2 + i32.store offset=8 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + local.get $6 + i32.const 4 + i32.shl + i32.add + local.tee $4 + local.get $1 + f64.store + local.get $4 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $4 + local.get $2 + local.get $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=12 + local.get $0 + local.get $4 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#keys" (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 31 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 3 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 4 + i32.shl + i32.add + local.tee $7 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $1 + local.tee $0 + i32.const 1 + i32.add + local.set $1 + local.get $7 + f64.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $0 + local.get $6 + i32.load offset=12 + i32.ge_u + if + local.get $0 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $0 + i32.const 1 + i32.add + local.tee $7 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $4 + f64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 f64) (param $2 f64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 f64) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i64.reinterpret_f64 + local.tee $5 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + local.get $3 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 + i32.const 16 + i32.shr_u + i32.xor + local.tee $10 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1418" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $3 + f64.load + f64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1418" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $3 + end + local.get $3 + if + local.get $3 + local.get $2 + f64.store offset=8 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $9 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $12 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $8 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $8 + local.get $12 + i32.ne + if + local.get $12 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $12 + f64.load + local.tee $7 + f64.store + local.get $3 + local.get $12 + f64.load offset=8 + f64.store offset=8 + local.get $3 + local.get $11 + local.get $6 + local.get $7 + i64.reinterpret_f64 + local.tee $5 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $13 + local.get $13 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $13 + local.get $13 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $13 + local.get $13 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $13 + i32.load + i32.store offset=16 + local.get $13 + local.get $3 + i32.store + local.get $3 + i32.const 24 + i32.add + local.set $3 + end + local.get $12 + i32.const 24 + i32.add + local.set $12 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=12 + local.get $0 + local.get $11 + i32.store + local.get $0 + local.get $11 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 24 + i32.mul + i32.add + local.tee $3 + local.get $1 + f64.store + local.get $3 + local.get $2 + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $10 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=16 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 f64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + call $"~lib/map/Map#find" + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $3 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $4 + local.get $4 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/map/testNumeric" + (local $0 i32) + (local $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 30 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + loop $for-loop|0 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $1 + i32.trunc_sat_f64_s + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_f64_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_f64_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $1 + i32.trunc_sat_f64_s + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_f64_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $"~lib/map/Map#keys" + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $"~lib/map/Map#values" + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 32 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 96 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $6 + local.get $7 + i32.store offset=8 + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $5 + i32.store offset=20 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $2 + local.get $4 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $2 + call $~lib/array/Array#__get + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $7 + i32.const 20 + i32.sub + f64.convert_i32_s + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + local.get $1 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $7 + local.get $7 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f64.const 50 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_f64_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f64.const 50 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $1 + i32.trunc_sat_f64_s + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1504 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/std/map.ts b/tests/compiler/std/map.ts index 4feaa40c45..baf1bee536 100644 --- a/tests/compiler/std/map.ts +++ b/tests/compiler/std/map.ts @@ -70,3 +70,5 @@ testNumeric(); testNumeric(); testNumeric(); testNumeric(); + +__collect(); diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat deleted file mode 100644 index 0d84e733ec..0000000000 --- a/tests/compiler/std/map.untouched.wat +++ /dev/null @@ -1,21665 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 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_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $i32_i64_i64_=>_i32 (func (param i32 i64 i64) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_f32_f32_=>_i32 (func (param i32 f32 f32) (result i32))) - (type $i32_f64_f64_=>_i32 (func (param i32 f64 f64) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 224) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 288) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00") - (data (i32.const 336) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00") - (data (i32.const 400) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00") - (data (i32.const 448) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 496) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 548)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 80 - i32.const 32 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.const 1073741808 - i32.gt_u - if - i32.const 192 - i32.const 240 - i32.const 49 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $2 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/util/hash/hash8 (param $0 i32) (result i32) - i32.const -2128831035 - local.get $0 - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_s - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load8_s - i32.store8 - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i32.load8_s - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 12 - i32.add - local.set $8 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store8 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 0 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 464 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (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.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $3 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $6 - local.get $6 - i32.load - local.set $7 - local.get $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $5 - local.get $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $8 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u - if - i32.const 1 - drop - local.get $1 - local.get $8 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $8 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=8 - local.set $3 - local.get $1 - local.get $3 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 464 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $4 - local.get $1 - local.get $2 - i32.shl - local.set $5 - local.get $4 - local.get $5 - call $~lib/rt/tlsf/__realloc - local.set $6 - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $5 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $6 - local.get $4 - i32.ne - if - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.store offset=8 - end - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 512 - i32.const 464 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load8_s - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 464 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 512 - i32.const 464 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=4 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_s - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 512 - i32.const 464 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 512 - i32.const 464 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_s - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load8_s - i32.store8 - local.get $11 - local.get $10 - i32.load8_s offset=1 - i32.store8 offset=1 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $10 - i32.load8_s - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.5 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=4 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.4 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store8 offset=1 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 8 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store8 - local.get $5 - local.get $2 - i32.store8 offset=1 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=4 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/hash/hash32 (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load - i32.store - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $10 - i32.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 12 - i32.add - local.set $8 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (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) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $1 - local.get $0 - call $~lib/map/Map#values - local.set $4 - i32.const 0 - call $~lib/map/Map#constructor - local.set $5 - i32.const 0 - call $~lib/map/Map#constructor - local.set $6 - i32.const 0 - local.set $7 - loop $for-loop|4 - local.get $7 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $8 - local.get $8 - if - local.get $1 - local.get $7 - call $~lib/array/Array#__get - local.set $9 - local.get $4 - local.get $7 - call $~lib/array/Array#__get - local.set $10 - local.get $0 - local.get $9 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $9 - local.get $9 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 - local.get $10 - i32.const 20 - i32.sub - local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|4 - end - end - local.get $5 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $7 - loop $for-loop|6 - local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#get - i32.const 20 - local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|6 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $7 - loop $for-loop|8 - local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.const 10 - local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|8 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 8 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load8_u - i32.store8 - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i32.load8_u - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 12 - i32.add - local.set $8 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $3 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store8 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 9 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 0 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 464 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 512 - i32.const 464 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load8_u - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=4 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 10 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_u - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 512 - i32.const 464 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load8_u - i32.store8 - local.get $11 - local.get $10 - i32.load8_u offset=1 - i32.store8 offset=1 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $10 - i32.load8_u - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.5 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=4 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $3 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.4 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store8 offset=1 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 8 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store8 - local.get $5 - local.get $2 - i32.store8 offset=1 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=4 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (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) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - local.set $3 - local.get $3 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 255 - i32.and - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 255 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 255 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 255 - i32.and - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 255 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $1 - local.get $0 - call $~lib/map/Map#values - local.set $4 - i32.const 0 - call $~lib/map/Map#constructor - local.set $5 - i32.const 0 - call $~lib/map/Map#constructor - local.set $6 - i32.const 0 - local.set $7 - loop $for-loop|4 - local.get $7 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $8 - local.get $8 - if - local.get $1 - local.get $7 - call $~lib/array/Array#__get - local.set $9 - local.get $4 - local.get $7 - call $~lib/array/Array#__get - local.set $10 - local.get $0 - local.get $9 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $9 - local.get $9 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 - local.get $10 - i32.const 20 - i32.sub - local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|4 - end - end - local.get $5 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $7 - loop $for-loop|6 - local.get $7 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - local.set $10 - local.get $10 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#get - i32.const 20 - local.get $7 - i32.const 255 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|6 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $7 - loop $for-loop|8 - local.get $7 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - local.set $9 - local.get $9 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.const 10 - local.get $7 - i32.const 255 - i32.and - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|8 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 11 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/util/hash/hash16 (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_s - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load16_s - i32.store16 - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i32.load16_s - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 12 - i32.add - local.set $8 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store16 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 1 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 464 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 512 - i32.const 464 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load16_s - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=4 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 13 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 512 - i32.const 464 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_s - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load16_s - i32.store16 - local.get $11 - local.get $10 - i32.load16_s offset=2 - i32.store16 offset=2 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $10 - i32.load16_s - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.5 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=4 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.4 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store16 offset=2 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 8 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store16 - local.get $5 - local.get $2 - i32.store16 offset=2 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=4 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (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) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $1 - local.get $0 - call $~lib/map/Map#values - local.set $4 - i32.const 0 - call $~lib/map/Map#constructor - local.set $5 - i32.const 0 - call $~lib/map/Map#constructor - local.set $6 - i32.const 0 - local.set $7 - loop $for-loop|4 - local.get $7 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $8 - local.get $8 - if - local.get $1 - local.get $7 - call $~lib/array/Array#__get - local.set $9 - local.get $4 - local.get $7 - call $~lib/array/Array#__get - local.set $10 - local.get $0 - local.get $9 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $9 - local.get $9 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 - local.get $10 - i32.const 20 - i32.sub - local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|4 - end - end - local.get $5 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $7 - loop $for-loop|6 - local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#get - i32.const 20 - local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|6 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $7 - loop $for-loop|8 - local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.const 10 - local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|8 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 14 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load16_u - i32.store16 - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i32.load16_u - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 12 - i32.add - local.set $8 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $3 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store16 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 15 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 1 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 464 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 512 - i32.const 464 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load16_u - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=4 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 16 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 512 - i32.const 464 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load16_u - i32.store16 - local.get $11 - local.get $10 - i32.load16_u offset=2 - i32.store16 offset=2 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $10 - i32.load16_u - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.5 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=4 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $3 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.4 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store16 offset=2 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 8 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store16 - local.get $5 - local.get $2 - i32.store16 offset=2 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=4 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (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) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - local.set $3 - local.get $3 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 65535 - i32.and - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 65535 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 65535 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 65535 - i32.and - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 65535 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $1 - local.get $0 - call $~lib/map/Map#values - local.set $4 - i32.const 0 - call $~lib/map/Map#constructor - local.set $5 - i32.const 0 - call $~lib/map/Map#constructor - local.set $6 - i32.const 0 - local.set $7 - loop $for-loop|4 - local.get $7 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $8 - local.get $8 - if - local.get $1 - local.get $7 - call $~lib/array/Array#__get - local.set $9 - local.get $4 - local.get $7 - call $~lib/array/Array#__get - local.set $10 - local.get $0 - local.get $9 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $9 - local.get $9 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 - local.get $10 - i32.const 20 - i32.sub - local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|4 - end - end - local.get $5 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $7 - loop $for-loop|6 - local.get $7 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - local.set $10 - local.get $10 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#get - i32.const 20 - local.get $7 - i32.const 65535 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|6 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $7 - loop $for-loop|8 - local.get $7 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - local.set $9 - local.get $9 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.const 10 - local.get $7 - i32.const 65535 - i32.and - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|8 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=4 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (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) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - i32.const 100 - i32.lt_s - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 100 - i32.lt_s - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $1 - local.get $0 - call $~lib/map/Map#values - local.set $2 - i32.const 0 - call $~lib/map/Map#constructor - local.set $3 - i32.const 0 - call $~lib/map/Map#constructor - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|2 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - call $~lib/array/Array#__get - local.set $7 - local.get $2 - local.get $5 - call $~lib/array/Array#__get - local.set $8 - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $7 - local.get $7 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $4 - local.get $8 - i32.const 20 - i32.sub - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|2 - end - end - local.get $3 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|3 - local.get $5 - i32.const 50 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/map/Map#get - i32.const 20 - local.get $5 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|3 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|4 - local.get $5 - i32.const 50 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 10 - local.get $5 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|4 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load - i32.store - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i32.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 12 - i32.add - local.set $8 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 18 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 464 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 512 - i32.const 464 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=4 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 19 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 512 - i32.const 464 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load - i32.store - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $10 - i32.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.5 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 12 - i32.add - local.set $8 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (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) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - i32.const 100 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 100 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $1 - local.get $0 - call $~lib/map/Map#values - local.set $2 - i32.const 0 - call $~lib/map/Map#constructor - local.set $3 - i32.const 0 - call $~lib/map/Map#constructor - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|2 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - call $~lib/array/Array#__get - local.set $7 - local.get $2 - local.get $5 - call $~lib/array/Array#__get - local.set $8 - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $7 - local.get $7 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $4 - local.get $8 - i32.const 20 - i32.sub - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|2 - end - end - local.get $3 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|3 - local.get $5 - i32.const 50 - i32.lt_u - local.set $6 - local.get $6 - if - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/map/Map#get - i32.const 20 - local.get $5 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|3 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|4 - local.get $5 - i32.const 50 - i32.lt_u - local.set $6 - local.get $6 - if - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 10 - local.get $5 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|4 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 20 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/util/hash/hash64 (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.wrap_i64 - local.set $1 - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - i32.const -2128831035 - local.set $3 - local.get $3 - local.get $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=12 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i64.load - i64.store - local.get $11 - local.get $10 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i64.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $13 - local.get $3 - local.get $13 - i32.const 4 - i32.mul - i32.add - local.set $14 - local.get $11 - local.get $14 - i32.load - i32.store offset=12 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 16 - i32.add - local.set $8 - end - local.get $6 - i32.const 16 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $13 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $13 - call $~lib/rt/pure/__retain - local.set $13 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $13 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $14 - local.get $5 - local.tee $9 - local.get $14 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - i32.const 16 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i64.store - local.get $5 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=12 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 21 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 3 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 464 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 512 - i32.const 464 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i64.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=8 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 22 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 512 - i32.const 464 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=16 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i64.load - i64.store - local.get $11 - local.get $10 - i64.load offset=8 - i64.store offset=8 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $10 - i64.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.5 - end - local.get $1 - i32.and - local.set $13 - local.get $3 - local.get $13 - i32.const 4 - i32.mul - i32.add - local.set $14 - local.get $11 - local.get $14 - i32.load - i32.store offset=16 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 24 - i32.add - local.set $8 - end - local.get $6 - i32.const 24 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $13 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $13 - call $~lib/rt/pure/__retain - local.set $13 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $13 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $14 - local.get $5 - local.tee $9 - local.get $14 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) (result i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i64.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - i32.const 24 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i64.store - local.get $5 - local.get $2 - i64.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=16 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - i64.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - i64.const 100 - i64.lt_s - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i64.const 100 - i64.lt_s - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $2 - local.get $0 - call $~lib/map/Map#values - local.set $3 - i32.const 0 - call $~lib/map/Map#constructor - local.set $4 - i32.const 0 - call $~lib/map/Map#constructor - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|2 - local.get $6 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - local.set $7 - local.get $7 - if - local.get $2 - local.get $6 - call $~lib/array/Array#__get - local.set $1 - local.get $3 - local.get $6 - call $~lib/array/Array#__get - local.set $8 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $8 - i32.const 20 - i32.sub - i64.extend_i32_s - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $1 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $5 - local.get $8 - i32.const 20 - i32.sub - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|2 - end - end - local.get $4 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i64.const 50 - i64.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - i64.const 50 - i64.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|4 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 23 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=12 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i64.load - i64.store - local.get $11 - local.get $10 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i64.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $13 - local.get $3 - local.get $13 - i32.const 4 - i32.mul - i32.add - local.set $14 - local.get $11 - local.get $14 - i32.load - i32.store offset=12 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 16 - i32.add - local.set $8 - end - local.get $6 - i32.const 16 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $13 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $13 - call $~lib/rt/pure/__retain - local.set $13 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $13 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $14 - local.get $5 - local.tee $9 - local.get $14 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - i32.const 16 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i64.store - local.get $5 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=12 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 24 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 3 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 464 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 512 - i32.const 464 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i64.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=8 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 25 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 512 - i32.const 464 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=16 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i64.load - i64.store - local.get $11 - local.get $10 - i64.load offset=8 - i64.store offset=8 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $10 - i64.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.5 - end - local.get $1 - i32.and - local.set $13 - local.get $3 - local.get $13 - i32.const 4 - i32.mul - i32.add - local.set $14 - local.get $11 - local.get $14 - i32.load - i32.store offset=16 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 24 - i32.add - local.set $8 - end - local.get $6 - i32.const 24 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $13 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $13 - call $~lib/rt/pure/__retain - local.set $13 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $13 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $14 - local.get $5 - local.tee $9 - local.get $14 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) (result i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i64.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - i32.const 24 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i64.store - local.get $5 - local.get $2 - i64.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=16 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - i64.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - i64.const 100 - i64.lt_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i64.const 100 - i64.lt_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $2 - local.get $0 - call $~lib/map/Map#values - local.set $3 - i32.const 0 - call $~lib/map/Map#constructor - local.set $4 - i32.const 0 - call $~lib/map/Map#constructor - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|2 - local.get $6 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - local.set $7 - local.get $7 - if - local.get $2 - local.get $6 - call $~lib/array/Array#__get - local.set $1 - local.get $3 - local.get $6 - call $~lib/array/Array#__get - local.set $8 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $8 - i32.const 20 - i32.sub - i64.extend_i32_s - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $1 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $5 - local.get $8 - i32.const 20 - i32.sub - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|2 - end - end - local.get $4 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i64.const 50 - i64.lt_u - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - i64.const 50 - i64.lt_u - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|4 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 26 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f32.load - local.get $1 - f32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 f32) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - f32.load - f32.store - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - f32.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $12 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $13 - local.get $3 - local.get $13 - i32.const 4 - i32.mul - i32.add - local.set $14 - local.get $11 - local.get $14 - i32.load - i32.store offset=8 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 12 - i32.add - local.set $8 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $13 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $13 - call $~lib/rt/pure/__retain - local.set $13 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $13 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $14 - local.get $5 - local.tee $9 - local.get $14 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $3 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - f32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=8 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 27 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 464 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 f32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - f32.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 512 - i32.const 464 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - f32.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=4 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 28 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 512 - i32.const 464 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f32.load - local.get $1 - f32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 f32) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - f32.load - f32.store - local.get $11 - local.get $10 - f32.load offset=4 - f32.store offset=4 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $10 - f32.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $12 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.5 - end - local.get $1 - i32.and - local.set $13 - local.get $3 - local.get $13 - i32.const 4 - i32.mul - i32.add - local.set $14 - local.get $11 - local.get $14 - i32.load - i32.store offset=8 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 12 - i32.add - local.set $8 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $13 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $13 - call $~lib/rt/pure/__retain - local.set $13 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $13 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $14 - local.get $5 - local.tee $9 - local.get $14 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $3 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - f32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - f32.store - local.get $5 - local.get $2 - f32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=8 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - f32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - f32.const 100 - f32.lt - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f32_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.trunc_f32_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - f32.const 100 - f32.lt - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.trunc_f32_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.trunc_f32_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.trunc_f32_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $2 - local.get $0 - call $~lib/map/Map#values - local.set $3 - i32.const 0 - call $~lib/map/Map#constructor - local.set $4 - i32.const 0 - call $~lib/map/Map#constructor - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|2 - local.get $6 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - local.set $7 - local.get $7 - if - local.get $2 - local.get $6 - call $~lib/array/Array#__get - local.set $1 - local.get $3 - local.get $6 - call $~lib/array/Array#__get - local.set $8 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $8 - i32.const 20 - i32.sub - f32.convert_i32_s - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $1 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $5 - local.get $8 - i32.const 20 - i32.sub - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|2 - end - end - local.get $4 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - f32.const 50 - f32.lt - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.trunc_f32_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - f32.const 50 - f32.lt - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f32_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|4 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 29 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f64.load - local.get $1 - f64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=12 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 f64) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - f64.load - f64.store - local.get $11 - local.get $10 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - f64.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $12 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $13 - local.get $3 - local.get $13 - i32.const 4 - i32.mul - i32.add - local.set $14 - local.get $11 - local.get $14 - i32.load - i32.store offset=12 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 16 - i32.add - local.set $8 - end - local.get $6 - i32.const 16 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $13 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $13 - call $~lib/rt/pure/__retain - local.set $13 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $13 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $14 - local.get $5 - local.tee $9 - local.get $14 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $3 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - i32.const 16 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - f64.store - local.get $5 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=12 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 30 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 3 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 464 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 f64) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - f64.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 512 - i32.const 464 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - f64.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=8 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 31 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 512 - i32.const 464 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f64.load - local.get $1 - f64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=16 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 f64) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - f64.load - f64.store - local.get $11 - local.get $10 - f64.load offset=8 - f64.store offset=8 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $10 - f64.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $12 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.5 - end - local.get $1 - i32.and - local.set $13 - local.get $3 - local.get $13 - i32.const 4 - i32.mul - i32.add - local.set $14 - local.get $11 - local.get $14 - i32.load - i32.store offset=16 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 24 - i32.add - local.set $8 - end - local.get $6 - i32.const 24 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $13 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $13 - call $~lib/rt/pure/__retain - local.set $13 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $13 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $14 - local.get $5 - local.tee $9 - local.get $14 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $3 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - f64.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - i32.const 24 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - f64.store - local.get $5 - local.get $2 - f64.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=16 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - f64.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - f64.const 100 - f64.lt - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f64_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.trunc_f64_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - f64.const 100 - f64.lt - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.trunc_f64_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.trunc_f64_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.trunc_f64_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $2 - local.get $0 - call $~lib/map/Map#values - local.set $3 - i32.const 0 - call $~lib/map/Map#constructor - local.set $4 - i32.const 0 - call $~lib/map/Map#constructor - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|2 - local.get $6 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - local.set $7 - local.get $7 - if - local.get $2 - local.get $6 - call $~lib/array/Array#__get - local.set $1 - local.get $3 - local.get $6 - call $~lib/array/Array#__get - local.set $8 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $8 - i32.const 20 - i32.sub - f64.convert_i32_s - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $1 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $5 - local.get $8 - i32.const 20 - i32.sub - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|2 - end - end - local.get $4 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - f64.const 50 - f64.lt - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.trunc_f64_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - f64.const 50 - f64.lt - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f64_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|4 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $start:std/map - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - ) - (func $~start - call $start:std/map - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$33 - block $switch$1$case$32 - block $switch$1$case$31 - block $switch$1$case$30 - block $switch$1$case$29 - block $switch$1$case$28 - block $switch$1$case$27 - block $switch$1$case$26 - block $switch$1$case$25 - block $switch$1$case$24 - block $switch$1$case$23 - block $switch$1$case$22 - block $switch$1$case$21 - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$18 - block $switch$1$case$17 - block $switch$1$case$16 - block $switch$1$case$15 - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$15 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$case$28 $switch$1$case$29 $switch$1$case$30 $switch$1$case$31 $switch$1$case$32 $switch$1$case$33 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/std/math.debug.wat b/tests/compiler/std/math.debug.wat new file mode 100644 index 0000000000..5589c2107b --- /dev/null +++ b/tests/compiler/std/math.debug.wat @@ -0,0 +1,60246 @@ +(module + (type $0 (func (param f64) (result f64))) + (type $1 (func (param f64 f64 f64 i32) (result i32))) + (type $2 (func (param f32 f32 f32 i32) (result i32))) + (type $3 (func (param f32) (result f32))) + (type $4 (func (param f64 f64) (result f64))) + (type $5 (func (param f64 f64 f64 f64 i32) (result i32))) + (type $6 (func (param f32 f32 f32 f32 i32) (result i32))) + (type $7 (func (param f32 f32) (result f32))) + (type $8 (func (result f64))) + (type $9 (func (param f64) (result i32))) + (type $10 (func)) + (type $11 (func (param f64 i32) (result f64))) + (type $12 (func (param f64 f64 f64) (result f64))) + (type $13 (func (param i32 i32 i32 i32))) + (type $14 (func (param f32) (result i32))) + (type $15 (func (param f32 i32) (result f32))) + (type $16 (func (param f32 f32 f32) (result f32))) + (type $17 (func (param f64 i32 f64 f64 i32) (result i32))) + (type $18 (func (param f32 i32 f32 f32 i32) (result i32))) + (type $19 (func (param f64 i64) (result i32))) + (type $20 (func (param f64 f64) (result i32))) + (type $21 (func (param i64) (result i64))) + (type $22 (func (param i32) (result i32))) + (type $23 (func (param i64))) + (type $24 (func (result f32))) + (type $25 (func (param f64 f64 i32) (result f64))) + (type $26 (func (param f64))) + (type $27 (func (param i64 i64 i64 i64 i64 i32) (result i32))) + (type $28 (func (param i64 i64) (result i64))) + (type $29 (func (param i32 i32) (result i32))) + (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) + (import "env" "Math.LN2" (global $~lib/bindings/dom/Math.LN2 f64)) + (import "env" "Math.LN10" (global $~lib/bindings/dom/Math.LN10 f64)) + (import "env" "Math.LOG2E" (global $~lib/bindings/dom/Math.LOG2E f64)) + (import "env" "Math.PI" (global $~lib/bindings/dom/Math.PI f64)) + (import "env" "Math.SQRT1_2" (global $~lib/bindings/dom/Math.SQRT1_2 f64)) + (import "env" "Math.SQRT2" (global $~lib/bindings/dom/Math.SQRT2 f64)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "env" "Math.abs" (func $~lib/bindings/dom/Math.abs (param f64) (result f64))) + (import "env" "Math.acos" (func $~lib/bindings/dom/Math.acos (param f64) (result f64))) + (import "env" "Math.acosh" (func $~lib/bindings/dom/Math.acosh (param f64) (result f64))) + (import "env" "Math.asin" (func $~lib/bindings/dom/Math.asin (param f64) (result f64))) + (import "env" "Math.asinh" (func $~lib/bindings/dom/Math.asinh (param f64) (result f64))) + (import "env" "Math.atan" (func $~lib/bindings/dom/Math.atan (param f64) (result f64))) + (import "env" "Math.atanh" (func $~lib/bindings/dom/Math.atanh (param f64) (result f64))) + (import "env" "Math.atan2" (func $~lib/bindings/dom/Math.atan2 (param f64 f64) (result f64))) + (import "env" "Math.cbrt" (func $~lib/bindings/dom/Math.cbrt (param f64) (result f64))) + (import "env" "Math.ceil" (func $~lib/bindings/dom/Math.ceil (param f64) (result f64))) + (import "env" "Math.cos" (func $~lib/bindings/dom/Math.cos (param f64) (result f64))) + (import "env" "Math.cosh" (func $~lib/bindings/dom/Math.cosh (param f64) (result f64))) + (import "env" "Math.exp" (func $~lib/bindings/dom/Math.exp (param f64) (result f64))) + (import "env" "Math.expm1" (func $~lib/bindings/dom/Math.expm1 (param f64) (result f64))) + (import "env" "Math.pow" (func $~lib/bindings/dom/Math.pow (param f64 f64) (result f64))) + (import "env" "Math.floor" (func $~lib/bindings/dom/Math.floor (param f64) (result f64))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Math.log10" (func $~lib/bindings/dom/Math.log10 (param f64) (result f64))) + (import "env" "Math.log1p" (func $~lib/bindings/dom/Math.log1p (param f64) (result f64))) + (import "env" "Math.log2" (func $~lib/bindings/dom/Math.log2 (param f64) (result f64))) + (import "env" "Math.max" (func $~lib/bindings/dom/Math.max (param f64 f64) (result f64))) + (import "env" "Math.min" (func $~lib/bindings/dom/Math.min (param f64 f64) (result f64))) + (import "math" "mod" (func $std/math/mod (param f64 f64) (result f64))) + (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) + (import "env" "seed" (func $~lib/builtins/seed (result f64))) + (import "env" "Math.sign" (func $~lib/bindings/dom/Math.sign (param f64) (result f64))) + (import "env" "Math.sin" (func $~lib/bindings/dom/Math.sin (param f64) (result f64))) + (import "env" "Math.sinh" (func $~lib/bindings/dom/Math.sinh (param f64) (result f64))) + (import "env" "Math.sqrt" (func $~lib/bindings/dom/Math.sqrt (param f64) (result f64))) + (import "env" "Math.tan" (func $~lib/bindings/dom/Math.tan (param f64) (result f64))) + (import "env" "Math.tanh" (func $~lib/bindings/dom/Math.tanh (param f64) (result f64))) + (import "env" "Math.trunc" (func $~lib/bindings/dom/Math.trunc (param f64) (result f64))) + (global $std/math/js i32 (i32.const 1)) + (global $std/math/INEXACT i32 (i32.const 1)) + (global $std/math/INVALID i32 (i32.const 2)) + (global $std/math/DIVBYZERO i32 (i32.const 4)) + (global $std/math/UNDERFLOW i32 (i32.const 8)) + (global $std/math/OVERFLOW i32 (i32.const 16)) + (global $std/math/kPI f64 (f64.const 3.141592653589793)) + (global $std/math/kTwo120 f64 (f64.const 1329227995784915872903807e12)) + (global $~lib/math/NativeMath.E f64 (f64.const 2.718281828459045)) + (global $~lib/math/NativeMathf.E f32 (f32.const 2.7182817459106445)) + (global $~lib/math/NativeMath.LN2 f64 (f64.const 0.6931471805599453)) + (global $~lib/math/NativeMath.LN10 f64 (f64.const 2.302585092994046)) + (global $~lib/math/NativeMath.LOG2E f64 (f64.const 1.4426950408889634)) + (global $~lib/math/NativeMath.PI f64 (f64.const 3.141592653589793)) + (global $~lib/math/NativeMath.SQRT1_2 f64 (f64.const 0.7071067811865476)) + (global $~lib/math/NativeMath.SQRT2 f64 (f64.const 1.4142135623730951)) + (global $~lib/math/NativeMathf.LN2 f32 (f32.const 0.6931471824645996)) + (global $~lib/math/NativeMathf.LN10 f32 (f32.const 2.3025851249694824)) + (global $~lib/math/NativeMathf.LOG2E f32 (f32.const 1.4426950216293335)) + (global $~lib/math/NativeMathf.PI f32 (f32.const 3.1415927410125732)) + (global $~lib/math/NativeMathf.SQRT1_2 f32 (f32.const 0.7071067690849304)) + (global $~lib/math/NativeMathf.SQRT2 f32 (f32.const 1.4142135381698608)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/math/rempio2_y0 (mut f64) (f64.const 0)) + (global $~lib/math/rempio2_y1 (mut f64) (f64.const 0)) + (global $~lib/math/res128_hi (mut i64) (i64.const 0)) + (global $~lib/math/rempio2f_y (mut f64) (f64.const 0)) + (global $~lib/builtins/f32.MAX_VALUE f32 (f32.const 3402823466385288598117041e14)) + (global $~lib/builtins/f64.MIN_VALUE f64 (f64.const 5e-324)) + (global $~lib/util/math/log_tail (mut f64) (f64.const 0)) + (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) + (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) + (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) + (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) + (global $~lib/math/random_seeded (mut i32) (i32.const 0)) + (global $~lib/math/NativeMath.sincos_sin (mut f64) (f64.const 0)) + (global $~lib/math/NativeMath.sincos_cos (mut f64) (f64.const 0)) + (global $~lib/builtins/f64.MAX_VALUE f64 (f64.const 1797693134862315708145274e284)) + (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) + (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) + (global $~lib/memory/__data_end i32 (i32.const 13344)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 46112)) + (global $~lib/memory/__heap_base i32 (i32.const 46112)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s\00\00\00\00\00\00\00") + (data $1 (i32.const 64) "\9f\de\e0\c3\f04\f7?\00\90\e6y\7f\cc\d7\bf\1f\e9,jx\13\f7?\00\00\r\c2\eeo\d7\bf\a0\b5\fa\08`\f2\f6?\00\e0Q\13\e3\13\d7\bf}\8c\13\1f\a6\d1\f6?\00x(8[\b8\d6\bf\d1\b4\c5\0bI\b1\f6?\00x\80\90U]\d6\bf\ba\0c/3G\91\f6?\00\00\18v\d0\02\d6\bf#B\"\18\9fq\f6?\00\90\90\86\ca\a8\d5\bf\d9\1e\a5\99OR\f6?\00P\03VCO\d5\bf\c4$\8f\aaV3\f6?\00@k\c37\f6\d4\bf\14\dc\9dk\b3\14\f6?\00P\a8\fd\a7\9d\d4\bfL\\\c6Rd\f6\f5?\00\a8\899\92E\d4\bfO,\91\b5g\d8\f5?\00\b8\b09\f4\ed\d3\bf\de\90[\cb\bc\ba\f5?\00p\8fD\ce\96\d3\bfx\1a\d9\f2a\9d\f5?\00\a0\bd\17\1e@\d3\bf\87VF\12V\80\f5?\00\80F\ef\e2\e9\d2\bf\d3k\e7\ce\97c\f5?\00\e008\1b\94\d2\bf\93\7f\a7\e2%G\f5?\00\88\da\8c\c5>\d2\bf\83E\06B\ff*\f5?\00\90\')\e1\e9\d1\bf\df\bd\b2\db\"\0f\f5?\00\f8H+m\95\d1\bf\d7\de4G\8f\f3\f4?\00\f8\b9\9agA\d1\bf@(\de\cfC\d8\f4?\00\98\ef\94\d0\ed\d0\bf\c8\a3x\c0>\bd\f4?\00\10\db\18\a5\9a\d0\bf\8a%\e0\c3\7f\a2\f4?\00\b8cR\e6G\d0\bf4\84\d4$\05\88\f4?\00\f0\86E\"\eb\cf\bf\0b-\19\1b\cem\f4?\00\b0\17uJG\cf\bfT\189\d3\d9S\f4?\000\10=D\a4\ce\bfZ\84\b4D\':\f4?\00\b0\e9D\r\02\ce\bf\fb\f8\15A\b5 \f4?\00\f0w)\a2`\cd\bf\b1\f4>\da\82\07\f4?\00\90\95\04\01\c0\cc\bf\8f\feW]\8f\ee\f3?\00\10\89V) \cc\bf\e9L\0b\a0\d9\d5\f3?\00\10\81\8d\17\81\cb\bf+\c1\10\c0`\bd\f3?\00\d0\d3\cc\c9\e2\ca\bf\b8\dau+$\a5\f3?\00\90\12.@E\ca\bf\02\d0\9f\cd\"\8d\f3?\00\f0\1dhw\a8\c9\bf\1cz\84\c5[u\f3?\000Him\0c\c9\bf\e26\adI\ce]\f3?\00\c0E\a6 q\c8\bf@\d4M\98yF\f3?\000\14\b4\8f\d6\c7\bf$\cb\ff\ce\\/\f3?\00pb<\b8<\c7\bfI\r\a1uw\18\f3?\00`7\9b\9a\a3\c6\bf\909>7\c8\01\f3?\00\a0\b7T1\0b\c6\bfA\f8\95\bbN\eb\f2?\000$v}s\c5\bf\d1\a9\19\02\n\d5\f2?\000\c2\8f{\dc\c4\bf*\fd\b7\a8\f9\be\f2?\00\00\d2Q,F\c4\bf\ab\1b\0cz\1c\a9\f2?\00\00\83\bc\8a\b0\c3\bf0\b5\14`r\93\f2?\00\00Ik\99\1b\c3\bf\f5\a1WW\fa}\f2?\00@\a4\90T\87\c2\bf\bf;\1d\9b\b3h\f2?\00\a0y\f8\b9\f3\c1\bf\bd\f5\8f\83\9dS\f2?\00\a0,%\c8`\c1\bf;\08\c9\aa\b7>\f2?\00 \f7W\7f\ce\c0\bf\b6@\a9+\01*\f2?\00\a0\feI\dc<\c0\bf2A\cc\96y\15\f2?\00\80K\bc\bdW\bf\bf\9b\fc\d2\1d \01\f2?\00@@\96\087\be\bf\0bHMI\f4\ec\f1?\00@\f9>\98\17\bd\bfie\8fR\f5\d8\f1?\00\a0\d8Ng\f9\bb\bf|~W\11#\c5\f1?\00`/ y\dc\ba\bf\e9&\cbt|\b1\f1?\00\80(\e7\c3\c0\b9\bf\b6\1a,\0c\01\9e\f1?\00\c0r\b3F\a6\b8\bf\bdp\b6{\b0\8a\f1?\00\00\ac\b3\01\8d\b7\bf\b6\bc\ef%\8aw\f1?\00\008E\f1t\b6\bf\da1L5\8dd\f1?\00\80\87m\0e^\b5\bf\dd_\'\90\b9Q\f1?\00\e0\a1\de\\H\b4\bfL\d22\a4\0e?\f1?\00\a0jM\d93\b3\bf\da\f9\10r\8b,\f1?\00`\c5\f8y \b2\bf1\b5\ec(0\1a\f1?\00 b\98F\0e\b1\bf\af4\84\da\fb\07\f1?\00\00\d2jl\fa\af\bf\b3kN\0f\ee\f5\f0?\00@wJ\8d\da\ad\bf\ce\9f*]\06\e4\f0?\00\00\85\e4\ec\bc\ab\bf!\a5,cD\d2\f0?\00\c0\12@\89\a1\a9\bf\1a\98\e2|\a7\c0\f0?\00\c0\023X\88\a7\bf\d16\c6\83/\af\f0?\00\80\d6g^q\a5\bf9\13\a0\98\db\9d\f0?\00\80eI\8a\\\a3\bf\df\e7R\af\ab\8c\f0?\00@\15d\e3I\a1\bf\fb(N/\9f{\f0?\00\80\eb\82\c0r\9e\bf\19\8f5\8c\b5j\f0?\00\80RR\f1U\9a\bf,\f9\ec\a5\eeY\f0?\00\80\81\cfb=\96\bf\90,\d1\cdII\f0?\00\00\aa\8c\fb(\92\bf\a9\ad\f0\c6\c68\f0?\00\00\f9 {1\8c\bf\a92y\13e(\f0?\00\00\aa]5\19\84\bfHs\ea\'$\18\f0?\00\00\ec\c2\03\12x\bf\95\b1\14\06\04\08\f0?\00\00$y\t\04`\bf\1a\fa&\f7\1f\e0\ef?\00\00\90\84\f3\efo?t\eaa\c2\1c\a1\ef?\00\00=5A\dc\87?.\99\81\b0\10c\ef?\00\80\c2\c4\a3\ce\93?\cd\ad\ee<\f6%\ef?\00\00\89\14\c1\9f\9b?\e7\13\91\03\c8\e9\ee?\00\00\11\ce\d8\b0\a1?\ab\b1\cbx\80\ae\ee?\00\c0\01\d0[\8a\a5?\9b\0c\9d\a2\1at\ee?\00\80\d8@\83\\\a9?\b5\99\n\83\91:\ee?\00\80W\efj\'\ad?V\9a`\t\e0\01\ee?\00\c0\98\e5\98u\b0?\98\bbw\e5\01\ca\ed?\00 \r\e3\f5S\b2?\03\91|\0b\f2\92\ed?\00\008\8b\dd.\b4?\ce\\\fbf\ac\\\ed?\00\c0W\87Y\06\b6?\9d\de^\aa,\'\ed?\00\00j5v\da\b7?\cd,k>n\f2\ec?\00`\1cNC\ab\b9?\02y\a7\a2m\be\ec?\00`\r\bb\c7x\bb?m\087m&\8b\ec?\00 \e72\13C\bd?\04X]\bd\94X\ec?\00`\deq1\n\bf?\8c\9f\bb3\b5&\ec?\00@\91+\15g\c0??\e7\ec\ee\83\f5\eb?\00\b0\92\82\85G\c1?\c1\96\dbu\fd\c4\eb?\000\ca\cdn&\c2?(J\86\0c\1e\95\eb?\00P\c5\a6\d7\03\c3?,>\ef\c5\e2e\eb?\00\103<\c3\df\c3?\8b\88\c9gH7\eb?\00\80zk6\ba\c4?J0\1d!K\t\eb?\00\f0\d1(9\93\c5?~\ef\f2\85\e8\db\ea?\00\f0\18$\cdj\c6?\a2=`1\1d\af\ea?\00\90f\ec\f8@\c7?\a7X\d3?\e6\82\ea?\00\f0\1a\f5\c0\15\c8?\8bs\t\ef@W\ea?\00\80\f6T)\e9\c8?\'K\ab\90*,\ea?\00@\f8\026\bb\c9?\d1\f2\93\13\a0\01\ea?\00\00,\1c\ed\8b\ca?\1b<\db$\9f\d7\e9?\00\d0\01\\Q[\cb?\90\b1\c7\05%\ae\e9?\00\c0\bc\ccg)\cc?/\ce\97\f2.\85\e9?\00`H\d55\f6\cc?uK\a4\ee\ba\\\e9?\00\c0F4\bd\c1\cd?8H\e7\9d\c64\e9?\00\e0\cf\b8\01\8c\ce?\e6Rg/O\r\e9?\00\90\17\c0\tU\cf?\9d\d7\ff\8eR\e6\e8?\00\b8\1f\12l\0e\d0?|\00\cc\9f\ce\bf\e8?\00\d0\93\0e\b8q\d0?\0e\c3\be\da\c0\99\e8?\00p\86\9ek\d4\d0?\fb\17#\aa\'t\e8?\00\d0K3\876\d1?\08\9a\b3\ac\00O\e8?\00H#g\r\98\d1?U>e\e8I*\e8?\00\80\cc\e0\ff\f8\d1?`\02\f4\95\01\06\e8?\00hc\d7_Y\d2?)\a3\e0c%\e2\e7?\00\a8\14\t0\b9\d2?\ad\b5\dcw\b3\be\e7?\00`C\10r\18\d3?\c2%\97g\aa\9b\e7?\00\18\ecm&w\d3?W\06\17\f2\07y\e7?\000\af\fbO\d5\d3?\0c\13\d6\db\caV\e7?\00\e0/\e3\ee2\d4?") + (data $2 (i32.const 2112) "k\b6O\01\00\10\e6?<[B\91l\02~<\95\b4M\03\000\e6?A]\00H\ea\bf\8d\f6\05\eb\ff\ef\e6?S-\e2\1a\04\80~\bc\80\97\86\0e\00\10\e7?Ry\tqf\ff{<\12\e9g\fc\ff/\e7?$\87\bd&\e2\00\8c\89<\b9{F\13\000\e9?v\02\98KN\80\7f.\98\dd\ff\af\e9?7\93Z\8a\e0@\87\bcf\fbI\ed\ff\cf\e9?\00\e0\9b\c1\08\ce?O*\00\b0\ea?_?\ff<\04\fdi\bc\d1\1e\ae\d7\ff\cf\ea?\b4p\90\12\e7>\82\bcx\04Q\ee\ff\ef\ea?\a3\de\0e\e0>\06j<[\re\db\ff\0f\eb?\b9\n\1f8\c8\06ZO\86\d0E\ff\8a<@\16\87\f9\ff\8f\eb?\f9\c3\c2\96w\fe|\f0\0f\00\f0\f4?\1cS\85\0b\89\7f\97<\d1K\dc\12\00\10\f5?6\a4fqe\04`\c9\03\00\b0\f5?\c0\0c\bf\n\08A\9f\bc\bc\19I\1d\00\d0\f5?)G%\fb*\81\98\bc\89z\b8\e7\ff\ef\f5?\04i\ed\80\b7~\94\bc") + (data $3 (i32.const 4160) "\be\f3\f8y\eca\f6?\de\aa\8c\80\f7{\d5\bf=\88\afJ\edq\f5?\dbm\c0\a7\f0\be\d2\bf\b0\10\f0\f09\95\f4?g:Q\7f\ae\1e\d0\bf\85\03\b8\b0\95\c9\f3?\e9$\82\a6\d81\cb\bf\a5d\88\0c\19\r\f3?Xw\c0\nOW\c6\bf\a0\8e\0b{\"^\f2?\00\81\9c\c7+\aa\c1\bf?4\1aJJ\bb\f1?^\0e\8c\cevN\ba\bf\ba\e5\8a\f0X#\f1?\cc\1caZ<\97\b1\bf\a7\00\99A?\95\f0?\1e\0c\e18\f4R\a2\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?\84Y\f2]\aa\a5\aa?\a0j\02\1f\b3\a4\ec?\b4.6\aaS^\bc?\e6\fcjW6 \eb?\08\db w\e5&\c5?-\aa\a1c\d1\c2\e9?pG\"\r\86\c2\cb?\edAx\03\e6\86\e8?\e1~\a0\c8\8b\05\d1?bHS\f5\dcg\e7?\t\ee\b6W0\04\d4?") + (data $4 (i32.const 4416) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") + (data $5 (i32.const 4608) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") + (data $6 (i32.const 4640) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data $7 (i32.const 6688) "\00\00\00\00\00\00\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") + (data $8 (i32.const 6944) "\f8\ac\b1k($\f7?\00\b0\cd\ee_\t\e1\bf\a1\cc\d2f\f7\e1\f6?\00\d0v\bd\94\84\e0\bf\8a\d40\0e=\a1\f6?\00\f8\e8\aeC\01\e0\bf\85l\d02\eca\f6?\00@\0b6\c5\fe\de\bf\f8\98\11\95\fa#\f6?\00\e0\b7\1a\d9\fd\dd\bfl\02\cf\a4[\e7\f5?\00\90\c7\0c\ae\ff\dc\bf\b8O!Z\05\ac\f5?\00\a0\fd\118\04\dc\bf\1en\16\0f\edq\f5?\00\e0:2g\0b\db\bf5\f8\0bY\t9\f5?\00\b0-Z/\15\da\bf\dd\ada\edO\01\f5?\00`\f8Z\7f!\d9\bf\d0{H\8e\b8\ca\f4?\00\90q\b0M0\d8\bf\eeO3\b49\95\f4?\00\e0\a9\f9\89A\d7\bfi\d5\af\df\cb`\f4?\00\90\19\b5+U\d6\bfS\b9\e4Nf-\f4?\00\10\9b\a2#k\d5\bf\a6\d8\1d\11\01\fb\f3?\00\a0_\0fe\83\d4\bf6X\0c\b7\95\c9\f3?\00\a0\f67\e9\9d\d3\bfJ\fd\b6J\1c\99\f3?\00`\8dS\a1\ba\d2\bf\b5\99\e0\0c\8ei\f3?\00@\ca@\83\d9\d1\bf\b2\e7\13\82\e4:\f3?\00\e0@:\85\fa\d0\bf\b1\bd\85\19\19\r\f3?\000\e72\9c\1d\d0\bf\d7q\b2\ca%\e0\f2?\00`\fa\a2}\85\ce\bf\82\cd\13\cf\04\b4\f2?\00\80=c\c8\d3\cc\bfP\cb|,\b0\88\f2?\00\a0\14L\03&\cb\bf\e5M\94c\"^\f2?\00\e0O/\1c|\c9\bf\b1\15\86=V4\f2?\00\00\80?\02\d6\c7\bf8\af>\e3F\0b\f2?\00\e0\05\1a\a73\c6\bf\dd\a3\cd\fd\ee\e2\f1?\00\00W\e9\f5\94\c4\bf09\0bXJ\bb\f1?\00\a0\e0$\e4\f9\c2\bf\00\"\7f\84S\94\f1?\00\c0\fdZYb\c1\bf<\d7\d5\c0\06n\f1?\00\80\bdu\9a\9c\bf\bf\c2\e4\b7G_H\f1?\00\c0\f9[W{\bc\bf\d1\85\00\adX#\f1?\00\80\f4\0f\c6`\b9\bf\'\"S\0f\f0\fe\f0?\00\00\b6G\e2L\b6\bf\8f:\d0w \db\f0?\00@\01\b2x?\b3\bf\d9\80Y\d6\e6\b7\f0?\00\c0B\1a}8\b0\bf\8d@{\fe>\95\f0?\00\00\b5\08\92o\aa\bf\83;\c5\ca%s\f0?\00\00wO\95z\a4\bf\\\1b\r\e4\97Q\f0?\00\00\0c\c5\a8#\9d\bf\a2\8e \c1\910\f0?\00\00x)&j\91\bf!~\b3%\10\10\f0?\00\00\e8\d8\f8 w\bfk\a7\ca\f9~\c0\ef?\00\00P\b1S\fe\86?\84\f1\f6\d3eD\ef?\00\80\0f\e1\cc\1c\a1?\7f\10\84\9f\07\cc\ee?\00\80\8b\8c\fcM\ac?\e8Z\97\99:W\ee?\00@W\1e2\aa\b3?\e6=\bd\f0\d6\e5\ed?\00\80\8b\d0\a0\18\b9?\b38\ff\81\b6w\ed?\00@\04\da\e9r\be?C\e9Mr\b5\0c\ed?\00`\7fP\d2\dc\c1?cu\0e\dc\b2\a4\ec?\00\a0\de\03\abv\c4?Q\cb\d6\e8\8e?\ec?\00 \e2wC\07\c7?L\0c\02O+\dd\eb?\00@\a9\8b\de\8e\c9?\ca\15`\00l}\eb?\00\e0\d2j\b8\r\cc?\8f3.n6 \eb?\00\e0\ce\af\n\84\ce?9P)&p\c5\ea?\00\80g\b4\ny\d0?\dd1\'\bc\01m\ea?\00\c0\01h\05\ac\d1?\8b\f1?\bc\d3\16\ea?\00\e0\fe\d4\11\db\d2?\ad\fegI\d1\c2\e9?\00\80\c5NF\06\d4?\02\99|\f4\e4p\e9?\00\f0:\t\be-\d5?\f2\bc\829\fb \e9?\00\d0P \90Q\d6?\f1Y\f7\87\01\d3\e8?\00\f0\ea\cd\d2q\d7?m\f6\b9\eb\e5\86\e8?\00\90}\85\9c\8e\d8?\94\b9X\b6\97<\e8?\00`\e1U\01\a8\d9?\"\10\c6\ff\05\f4\e7?\00\d0\d3n\18\be\da?\ca\15\14\18\"\ad\e7?\00\e0\a0\ae\f2\d0\db?\8c\ff\9e\f9\dcg\e7?\00@\bf=\a4\e0\dc?") + (data $9 (i32.const 7968) "\8e\n\b9\12\00 \e6?\05\b6D\06\ab\04\89<\a64W\04\00`\e6?\a9\f7b\ea\9b\ffa<\c5\f2%\c3\ff\9f\e6?\ba\90<\cb\cf~\82<\04Z\b98\00\e0\e6?&\93sV\88\ff\88<\e3\94\99\e0\ff\1f\e7?\b1\82_\'@\fd\8a<\10\0eY\15\00`\e7?A\83#\b4u\fdr\bc\d5[e\12\00\a0\e7?v+$|\e6\08x<\a6\e9Y2\00\e0\e7?\b7\"\f6&\e4\08b\bc\d2\b2\b4\ed\ff\1f\e8?/\c9\a5\1eF\02\84\bc\c3\fc\fa-\00`\e8?\1f\9a\f2\a2\f4\f7m)\e0\ff\df\f2?\f9\a6\b2\da9|\9b<\82\f0\dc\f7\ff\1f\f3?TR\dcn3\f1}<`\8bZ\f0\ff_\f3?\eb1\cdLV\03\9e\bc\cc\ae\0e.\00\a0\f3?w\a4\d3K\e7\f0u<6\b2;\04\00\e0\f3?3\88\9d\14\cb}\9c<\ff\87\d1\02\00 \f4?(=-\cf\af\08~<\b1|8\r\00`\f4?\a6\99e\857\08\82<\89\9fV\04\00\a0\f4?\d2\bcO\90\\\fa\89\bc\f3C5\04\00\e0\f4?)S\17\ed%\11x\bc\0f\7f\02\cc\ff\1f\f5?\dcTw\84\d8\83\98\e90.\90\80\91\bc") + (data $10 (i32.const 8992) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\r\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") + (data $11 (i32.const 9248) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8 (param $actual f64) (param $expected f64) (param $dy f64) (param $flags i32) (result i32) + (local $d f64) + local.get $actual + local.get $expected + f64.eq + if + i32.const 1 + return + end + local.get $expected + local.get $expected + f64.ne + if + local.get $actual + local.get $actual + f64.ne + return + end + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $actual + local.get $expected + local.get $dy + call $std/math/ulperr + local.set $d + local.get $d + f64.abs + f64.const 1.5 + f64.ge + if + i32.const 0 + return + end + i32.const 1 + return + ) + (func $std/math/eulpf (param $x f32) (result i32) + (local $u i32) + (local $e i32) + local.get $x + i32.reinterpret_f32 + local.set $u + local.get $u + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $e + local.get $e + i32.eqz + if + local.get $e + i32.const 1 + i32.add + local.set $e + end + local.get $e + i32.const 127 + i32.sub + i32.const 23 + i32.sub + return + ) + (func $~lib/math/NativeMathf.scalbn (param $x f32) (param $n i32) (result f32) + (local $y f32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $x + local.set $y + local.get $n + i32.const 127 + i32.gt_s + if + local.get $y + f32.const 1701411834604692317316873e14 + f32.mul + local.set $y + local.get $n + i32.const 127 + i32.sub + local.set $n + local.get $n + i32.const 127 + i32.gt_s + if + local.get $y + f32.const 1701411834604692317316873e14 + f32.mul + local.set $y + local.get $n + i32.const 127 + i32.sub + local.tee $3 + i32.const 127 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.set $n + end + else + local.get $n + i32.const -126 + i32.lt_s + if + local.get $y + f32.const 1.1754943508222875e-38 + f32.const 16777216 + f32.mul + f32.mul + local.set $y + local.get $n + i32.const 126 + i32.const 24 + i32.sub + i32.add + local.set $n + local.get $n + i32.const -126 + i32.lt_s + if + local.get $y + f32.const 1.1754943508222875e-38 + f32.const 16777216 + f32.mul + f32.mul + local.set $y + local.get $n + i32.const 126 + i32.add + i32.const 24 + i32.sub + local.tee $5 + i32.const -126 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $n + end + end + end + local.get $y + i32.const 127 + local.get $n + i32.add + i32.const 23 + i32.shl + f32.reinterpret_i32 + f32.mul + return + ) + (func $std/math/ulperrf (param $got f32) (param $want f32) (param $dwant f32) (result f32) + (local $x f32) + (local $x|4 f32) + local.get $got + local.get $got + f32.ne + if (result i32) + local.get $want + local.get $want + f32.ne + else + i32.const 0 + end + if + f32.const 0 + return + end + local.get $got + local.get $want + f32.eq + if + block $~lib/math/NativeMathf.signbit|inlined.0 (result i32) + local.get $got + local.set $x + local.get $x + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + br $~lib/math/NativeMathf.signbit|inlined.0 + end + i32.const 0 + i32.ne + block $~lib/math/NativeMathf.signbit|inlined.1 (result i32) + local.get $want + local.set $x|4 + local.get $x|4 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + br $~lib/math/NativeMathf.signbit|inlined.1 + end + i32.const 0 + i32.ne + i32.eq + if + local.get $dwant + return + end + f32.const inf + return + end + local.get $got + local.get $got + f32.sub + f32.const 0 + f32.eq + i32.eqz + if + f32.const 1701411834604692317316873e14 + local.get $got + f32.copysign + local.set $got + local.get $want + f32.const 0.5 + f32.mul + local.set $want + end + local.get $got + local.get $want + f32.sub + i32.const 0 + local.get $want + call $std/math/eulpf + i32.sub + call $~lib/math/NativeMathf.scalbn + local.get $dwant + f32.add + return + ) + (func $std/math/check (param $actual f32) (param $expected f32) (param $dy f32) (param $flags i32) (result i32) + (local $d f32) + local.get $actual + local.get $expected + f32.eq + if + i32.const 1 + return + end + local.get $expected + local.get $expected + f32.ne + if + local.get $actual + local.get $actual + f32.ne + return + end + i32.const 4 + i32.const 8 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $actual + local.get $expected + local.get $dy + call $std/math/ulperrf + local.set $d + local.get $d + f32.abs + f32.const 1.5 + f32.ge + if + i32.const 0 + return + end + i32.const 1 + return + ) + (func $std/math/test_scalbn (param $value f64) (param $n i32) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + local.get $n + call $~lib/math/NativeMath.scalbn + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $std/math/test_scalbnf (param $value f32) (param $n i32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + local.get $n + call $~lib/math/NativeMathf.scalbn + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $std/math/test_abs (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + (local $x f64) + block $~lib/math/NativeMath.abs|inlined.0 (result f64) + local.get $value + local.set $x + local.get $x + f64.abs + br $~lib/math/NativeMath.abs|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.abs + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $std/math/test_absf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + (local $x f32) + block $~lib/math/NativeMathf.abs|inlined.0 (result f32) + local.get $value + local.set $x + local.get $x + f32.abs + br $~lib/math/NativeMathf.abs|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/R (param $z f64) (result f64) + (local $p f64) + (local $q f64) + local.get $z + f64.const 0.16666666666666666 + local.get $z + f64.const -0.3255658186224009 + local.get $z + f64.const 0.20121253213486293 + local.get $z + f64.const -0.04005553450067941 + local.get $z + f64.const 7.915349942898145e-04 + local.get $z + f64.const 3.479331075960212e-05 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $p + f64.const 1 + local.get $z + f64.const -2.403394911734414 + local.get $z + f64.const 2.0209457602335057 + local.get $z + f64.const -0.6882839716054533 + local.get $z + f64.const 0.07703815055590194 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.set $q + local.get $p + local.get $q + f64.div + return + ) + (func $~lib/math/NativeMath.acos (param $x f64) (result f64) + (local $hx i32) + (local $ix i32) + (local $lx i32) + (local $s f64) + (local $w f64) + (local $z f64) + (local $df f64) + (local $c f64) + local.get $x + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hx + local.get $hx + i32.const 2147483647 + i32.and + local.set $ix + local.get $ix + i32.const 1072693248 + i32.ge_u + if + local.get $x + i64.reinterpret_f64 + i32.wrap_i64 + local.set $lx + local.get $ix + i32.const 1072693248 + i32.sub + local.get $lx + i32.or + i32.const 0 + i32.eq + if + local.get $hx + i32.const 0 + i32.lt_s + if + f64.const 2 + f64.const 1.5707963267948966 + f64.mul + f32.const 7.52316384526264e-37 + f64.promote_f32 + f64.add + return + end + f64.const 0 + return + end + f64.const 0 + local.get $x + local.get $x + f64.sub + f64.div + return + end + local.get $ix + i32.const 1071644672 + i32.lt_u + if + local.get $ix + i32.const 1012924416 + i32.le_u + if + f64.const 1.5707963267948966 + f32.const 7.52316384526264e-37 + f64.promote_f32 + f64.add + return + end + f64.const 1.5707963267948966 + local.get $x + f64.const 6.123233995736766e-17 + local.get $x + local.get $x + local.get $x + f64.mul + call $~lib/math/R + f64.mul + f64.sub + f64.sub + f64.sub + return + end + local.get $hx + i32.const 0 + i32.lt_s + if + f64.const 0.5 + local.get $x + f64.const 0.5 + f64.mul + f64.add + local.set $z + local.get $z + f64.sqrt + local.set $s + local.get $z + call $~lib/math/R + local.get $s + f64.mul + f64.const 6.123233995736766e-17 + f64.sub + local.set $w + f64.const 2 + f64.const 1.5707963267948966 + local.get $s + local.get $w + f64.add + f64.sub + f64.mul + return + end + f64.const 0.5 + local.get $x + f64.const 0.5 + f64.mul + f64.sub + local.set $z + local.get $z + f64.sqrt + local.set $s + local.get $s + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.set $df + local.get $z + local.get $df + local.get $df + f64.mul + f64.sub + local.get $s + local.get $df + f64.add + f64.div + local.set $c + local.get $z + call $~lib/math/R + local.get $s + f64.mul + local.get $c + f64.add + local.set $w + f64.const 2 + local.get $df + local.get $w + f64.add + f64.mul + return + ) + (func $std/math/test_acos (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.acos + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.acos + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/Rf (param $z f32) (result f32) + (local $p f32) + (local $q f32) + local.get $z + f32.const 0.16666586697101593 + local.get $z + f32.const -0.04274342209100723 + local.get $z + f32.const -0.008656363002955914 + f32.mul + f32.add + f32.mul + f32.add + f32.mul + local.set $p + f32.const 1 + local.get $z + f32.const -0.7066296339035034 + f32.mul + f32.add + local.set $q + local.get $p + local.get $q + f32.div + return + ) + (func $~lib/math/NativeMathf.acos (param $x f32) (result f32) + (local $hx i32) + (local $ix i32) + (local $z f32) + (local $w f32) + (local $s f32) + (local $df f32) + (local $c f32) + local.get $x + i32.reinterpret_f32 + local.set $hx + local.get $hx + i32.const 2147483647 + i32.and + local.set $ix + local.get $ix + i32.const 1065353216 + i32.ge_u + if + local.get $ix + i32.const 1065353216 + i32.eq + if + f32.const 2 + f32.const 1.570796251296997 + f32.mul + f32.const 7.52316384526264e-37 + f32.add + f32.const 0 + local.get $hx + i32.const 0 + i32.lt_s + select + return + end + f32.const 0 + local.get $x + local.get $x + f32.sub + f32.div + return + end + local.get $ix + i32.const 1056964608 + i32.lt_u + if + local.get $ix + i32.const 847249408 + i32.le_u + if + f32.const 1.570796251296997 + f32.const 7.52316384526264e-37 + f32.add + return + end + f32.const 1.570796251296997 + local.get $x + f32.const 7.549789415861596e-08 + local.get $x + local.get $x + local.get $x + f32.mul + call $~lib/math/Rf + f32.mul + f32.sub + f32.sub + f32.sub + return + end + local.get $hx + i32.const 0 + i32.lt_s + if + f32.const 0.5 + local.get $x + f32.const 0.5 + f32.mul + f32.add + local.set $z + local.get $z + f32.sqrt + local.set $s + local.get $z + call $~lib/math/Rf + local.get $s + f32.mul + f32.const 7.549789415861596e-08 + f32.sub + local.set $w + f32.const 2 + f32.const 1.570796251296997 + local.get $s + local.get $w + f32.add + f32.sub + f32.mul + return + end + f32.const 0.5 + local.get $x + f32.const 0.5 + f32.mul + f32.sub + local.set $z + local.get $z + f32.sqrt + local.set $s + local.get $s + i32.reinterpret_f32 + local.set $hx + local.get $hx + i32.const -4096 + i32.and + f32.reinterpret_i32 + local.set $df + local.get $z + local.get $df + local.get $df + f32.mul + f32.sub + local.get $s + local.get $df + f32.add + f32.div + local.set $c + local.get $z + call $~lib/math/Rf + local.get $s + f32.mul + local.get $c + f32.add + local.set $w + f32.const 2 + local.get $df + local.get $w + f32.add + f32.mul + return + ) + (func $std/math/test_acosf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.acos + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.log1p (param $x f64) (result f64) + (local $u i64) + (local $hx i32) + (local $k i32) + (local $c f64) + (local $f f64) + (local $hu i32) + (local $uf f64) + (local $hfsq f64) + (local $s f64) + (local $z f64) + (local $w f64) + (local $t1 f64) + (local $t2 f64) + (local $r f64) + (local $dk f64) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hx + i32.const 1 + local.set $k + f64.const 0 + local.set $c + f64.const 0 + local.set $f + local.get $hx + i32.const 1071284858 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $hx + i32.const 31 + i32.shr_u + end + if + local.get $hx + i32.const -1074790400 + i32.ge_u + if + local.get $x + f64.const -1 + f64.eq + if + local.get $x + f64.const 0 + f64.div + return + end + local.get $x + local.get $x + f64.sub + f64.const 0 + f64.div + return + end + local.get $hx + i32.const 1 + i32.shl + i32.const 1017118720 + i32.const 1 + i32.shl + i32.lt_u + if + local.get $x + return + end + local.get $hx + i32.const -1076707644 + i32.le_u + if + i32.const 0 + local.set $k + f64.const 0 + local.set $c + local.get $x + local.set $f + end + else + local.get $hx + i32.const 2146435072 + i32.ge_u + if + local.get $x + return + end + end + local.get $k + if + f64.const 1 + local.get $x + f64.add + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hu + local.get $hu + i32.const 1072693248 + i32.const 1072079006 + i32.sub + i32.add + local.set $hu + local.get $hu + i32.const 20 + i32.shr_u + i32.const 1023 + i32.sub + local.set $k + local.get $k + i32.const 54 + i32.lt_s + if + local.get $u + f64.reinterpret_i64 + local.set $uf + local.get $k + i32.const 2 + i32.ge_s + if (result f64) + f64.const 1 + local.get $uf + local.get $x + f64.sub + f64.sub + else + local.get $x + local.get $uf + f64.const 1 + f64.sub + f64.sub + end + local.set $c + local.get $c + local.get $uf + f64.div + local.set $c + else + f64.const 0 + local.set $c + end + local.get $hu + i32.const 1048575 + i32.and + i32.const 1072079006 + i32.add + local.set $hu + local.get $hu + i64.extend_i32_u + i64.const 32 + i64.shl + local.get $u + i64.const 4294967295 + i64.and + i64.or + local.set $u + local.get $u + f64.reinterpret_i64 + f64.const 1 + f64.sub + local.set $f + end + f64.const 0.5 + local.get $f + f64.mul + local.get $f + f64.mul + local.set $hfsq + local.get $f + f64.const 2 + local.get $f + f64.add + f64.div + local.set $s + local.get $s + local.get $s + f64.mul + local.set $z + local.get $z + local.get $z + f64.mul + local.set $w + local.get $w + f64.const 0.3999999999940942 + local.get $w + f64.const 0.22222198432149784 + local.get $w + f64.const 0.15313837699209373 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $t1 + local.get $z + f64.const 0.6666666666666735 + local.get $w + f64.const 0.2857142874366239 + local.get $w + f64.const 0.1818357216161805 + local.get $w + f64.const 0.14798198605116586 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $t2 + local.get $t2 + local.get $t1 + f64.add + local.set $r + local.get $k + f64.convert_i32_s + local.set $dk + local.get $s + local.get $hfsq + local.get $r + f64.add + f64.mul + local.get $dk + f64.const 1.9082149292705877e-10 + f64.mul + local.get $c + f64.add + f64.add + local.get $hfsq + f64.sub + local.get $f + f64.add + local.get $dk + f64.const 0.6931471803691238 + f64.mul + f64.add + return + ) + (func $~lib/math/NativeMath.log (param $x f64) (result f64) + (local $x|1 f64) + (local $ix i64) + (local $r f64) + (local $r2 f64) + (local $r3 f64) + (local $y f64) + (local $w f64) + (local $rhi f64) + (local $rlo f64) + (local $hi f64) + (local $lo f64) + (local $top i32) + (local $tmp i64) + (local $i i32) + (local $k i64) + (local $iz i64) + (local $invc f64) + (local $logc f64) + (local $z f64) + (local $chi f64) + (local $clo f64) + (local $r|22 f64) + (local $kd f64) + (local $w|24 f64) + (local $hi|25 f64) + (local $lo|26 f64) + (local $r2|27 f64) + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $~lib/util/math/log_lut|inlined.0 (result f64) + local.get $x + local.set $x|1 + local.get $x|1 + i64.reinterpret_f64 + local.set $ix + local.get $ix + i64.const 4606619468846596096 + i64.sub + i64.const 4607473789381378048 + i64.const 4606619468846596096 + i64.sub + i64.lt_u + if + local.get $x|1 + f64.const 1 + f64.sub + local.set $r + local.get $r + local.get $r + f64.mul + local.set $r2 + local.get $r2 + local.get $r + f64.mul + local.set $r3 + local.get $r3 + f64.const 0.3333333333333352 + local.get $r + f64.const -0.24999999999998432 + f64.mul + f64.add + local.get $r2 + f64.const 0.19999999999320328 + f64.mul + f64.add + local.get $r3 + f64.const -0.16666666669929706 + local.get $r + f64.const 0.14285715076560868 + f64.mul + f64.add + local.get $r2 + f64.const -0.12499997863982555 + f64.mul + f64.add + local.get $r3 + f64.const 0.11110712032936046 + local.get $r + f64.const -0.10000486757818193 + f64.mul + f64.add + local.get $r2 + f64.const 0.09181994006195467 + f64.mul + f64.add + local.get $r3 + f64.const -0.08328363062289341 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $y + local.get $r + f64.const 134217728 + f64.mul + local.set $w + local.get $r + local.get $w + f64.add + local.get $w + f64.sub + local.set $rhi + local.get $r + local.get $rhi + f64.sub + local.set $rlo + local.get $rhi + local.get $rhi + f64.mul + f64.const -0.5 + f64.mul + local.set $w + local.get $r + local.get $w + f64.add + local.set $hi + local.get $r + local.get $hi + f64.sub + local.get $w + f64.add + local.set $lo + local.get $lo + f64.const -0.5 + local.get $rlo + f64.mul + local.get $rhi + local.get $r + f64.add + f64.mul + f64.add + local.set $lo + local.get $y + local.get $lo + f64.add + local.get $hi + f64.add + br $~lib/util/math/log_lut|inlined.0 + end + local.get $ix + i64.const 48 + i64.shr_u + i32.wrap_i64 + local.set $top + local.get $top + i32.const 16 + i32.sub + i32.const 32752 + i32.const 16 + i32.sub + i32.ge_u + if + local.get $ix + i64.const 1 + i64.shl + i64.const 0 + i64.eq + if + f64.const -1 + local.get $x|1 + local.get $x|1 + f64.mul + f64.div + br $~lib/util/math/log_lut|inlined.0 + end + local.get $ix + f64.const inf + i64.reinterpret_f64 + i64.eq + if + local.get $x|1 + br $~lib/util/math/log_lut|inlined.0 + end + local.get $top + i32.const 32768 + i32.and + if (result i32) + i32.const 1 + else + local.get $top + i32.const 32752 + i32.and + i32.const 32752 + i32.eq + end + if + local.get $x|1 + local.get $x|1 + f64.sub + local.get $x|1 + local.get $x|1 + f64.sub + f64.div + br $~lib/util/math/log_lut|inlined.0 + end + local.get $x|1 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + local.set $ix + local.get $ix + i64.const 52 + i64.const 52 + i64.shl + i64.sub + local.set $ix + end + local.get $ix + i64.const 4604367669032910848 + i64.sub + local.set $tmp + local.get $tmp + i64.const 52 + i32.const 7 + i64.extend_i32_s + i64.sub + i64.shr_u + i32.const 127 + i64.extend_i32_s + i64.and + i32.wrap_i64 + local.set $i + local.get $tmp + i64.const 52 + i64.shr_s + local.set $k + local.get $ix + local.get $tmp + i64.const 4095 + i64.const 52 + i64.shl + i64.and + i64.sub + local.set $iz + i32.const 64 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load + local.set $invc + i32.const 64 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=8 + local.set $logc + local.get $iz + f64.reinterpret_i64 + local.set $z + i32.const 2112 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load + local.set $chi + i32.const 2112 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=8 + local.set $clo + local.get $z + local.get $chi + f64.sub + local.get $clo + f64.sub + local.get $invc + f64.mul + local.set $r|22 + local.get $k + f64.convert_i64_s + local.set $kd + local.get $kd + f64.const 0.6931471805598903 + f64.mul + local.get $logc + f64.add + local.set $w|24 + local.get $w|24 + local.get $r|22 + f64.add + local.set $hi|25 + local.get $w|24 + local.get $hi|25 + f64.sub + local.get $r|22 + f64.add + local.get $kd + f64.const 5.497923018708371e-14 + f64.mul + f64.add + local.set $lo|26 + local.get $r|22 + local.get $r|22 + f64.mul + local.set $r2|27 + local.get $lo|26 + local.get $r2|27 + f64.const -0.5000000000000001 + f64.mul + f64.add + local.get $r|22 + local.get $r2|27 + f64.mul + f64.const 0.33333333331825593 + local.get $r|22 + f64.const -0.2499999999622955 + f64.mul + f64.add + local.get $r2|27 + f64.const 0.20000304511814496 + local.get $r|22 + f64.const -0.16667054827627667 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.get $hi|25 + f64.add + br $~lib/util/math/log_lut|inlined.0 + end + return + ) + (func $~lib/math/NativeMath.acosh (param $x f64) (result f64) + (local $u i64) + (local $e i64) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 4607182418800017408 + i64.lt_s + if + local.get $x + local.get $x + f64.sub + f64.const 0 + f64.div + return + end + local.get $u + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $e + local.get $e + i64.const 1023 + i64.const 1 + i64.add + i64.lt_u + if + local.get $x + f64.const 1 + f64.sub + local.get $x + f64.const 1 + f64.sub + local.get $x + f64.const 1 + f64.sub + f64.mul + f64.const 2 + local.get $x + f64.const 1 + f64.sub + f64.mul + f64.add + f64.sqrt + f64.add + call $~lib/math/NativeMath.log1p + return + end + local.get $e + i64.const 1023 + i64.const 26 + i64.add + i64.lt_u + if + f64.const 2 + local.get $x + f64.mul + f64.const 1 + local.get $x + local.get $x + local.get $x + f64.mul + f64.const 1 + f64.sub + f64.sqrt + f64.add + f64.div + f64.sub + call $~lib/math/NativeMath.log + return + end + local.get $x + call $~lib/math/NativeMath.log + f64.const 0.6931471805599453 + f64.add + return + ) + (func $std/math/test_acosh (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.acosh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.acosh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.log1p (param $x f32) (result f32) + (local $ix i32) + (local $c f32) + (local $f f32) + (local $k i32) + (local $uf f32) + (local $iu i32) + (local $s f32) + (local $z f32) + (local $w f32) + (local $t1 f32) + (local $t2 f32) + (local $r f32) + (local $hfsq f32) + (local $dk f32) + local.get $x + i32.reinterpret_f32 + local.set $ix + f32.const 0 + local.set $c + f32.const 0 + local.set $f + i32.const 1 + local.set $k + local.get $ix + i32.const 1054086096 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $ix + i32.const 31 + i32.shr_u + end + if + local.get $ix + i32.const -1082130432 + i32.ge_u + if + local.get $x + f32.const -1 + f32.eq + if + local.get $x + f32.const 0 + f32.div + return + end + local.get $x + local.get $x + f32.sub + f32.const 0 + f32.div + return + end + local.get $ix + i32.const 1 + i32.shl + i32.const 864026624 + i32.const 1 + i32.shl + i32.lt_u + if + local.get $x + return + end + local.get $ix + i32.const -1097468391 + i32.le_u + if + i32.const 0 + local.set $k + f32.const 0 + local.set $c + local.get $x + local.set $f + end + else + local.get $ix + i32.const 2139095040 + i32.ge_u + if + local.get $x + return + end + end + local.get $k + if + f32.const 1 + local.get $x + f32.add + local.set $uf + local.get $uf + i32.reinterpret_f32 + local.set $iu + local.get $iu + i32.const 1065353216 + i32.const 1060439283 + i32.sub + i32.add + local.set $iu + local.get $iu + i32.const 23 + i32.shr_u + i32.const 127 + i32.sub + local.set $k + local.get $k + i32.const 25 + i32.lt_s + if + local.get $k + i32.const 2 + i32.ge_s + if (result f32) + f32.const 1 + local.get $uf + local.get $x + f32.sub + f32.sub + else + local.get $x + local.get $uf + f32.const 1 + f32.sub + f32.sub + end + local.set $c + local.get $c + local.get $uf + f32.div + local.set $c + else + f32.const 0 + local.set $c + end + local.get $iu + i32.const 8388607 + i32.and + i32.const 1060439283 + i32.add + local.set $iu + local.get $iu + f32.reinterpret_i32 + f32.const 1 + f32.sub + local.set $f + end + local.get $f + f32.const 2 + local.get $f + f32.add + f32.div + local.set $s + local.get $s + local.get $s + f32.mul + local.set $z + local.get $z + local.get $z + f32.mul + local.set $w + local.get $w + f32.const 0.40000972151756287 + local.get $w + f32.const 0.24279078841209412 + f32.mul + f32.add + f32.mul + local.set $t1 + local.get $z + f32.const 0.6666666269302368 + local.get $w + f32.const 0.2849878668785095 + f32.mul + f32.add + f32.mul + local.set $t2 + local.get $t2 + local.get $t1 + f32.add + local.set $r + f32.const 0.5 + local.get $f + f32.mul + local.get $f + f32.mul + local.set $hfsq + local.get $k + f32.convert_i32_s + local.set $dk + local.get $s + local.get $hfsq + local.get $r + f32.add + f32.mul + local.get $dk + f32.const 9.05800061445916e-06 + f32.mul + local.get $c + f32.add + f32.add + local.get $hfsq + f32.sub + local.get $f + f32.add + local.get $dk + f32.const 0.6931381225585938 + f32.mul + f32.add + return + ) + (func $~lib/math/NativeMathf.log (param $x f32) (result f32) + (local $x|1 f32) + (local $ux i32) + (local $tmp i32) + (local $i i32) + (local $k i32) + (local $iz i32) + (local $invc f64) + (local $logc f64) + (local $z f64) + (local $r f64) + (local $y0 f64) + (local $r2 f64) + (local $y f64) + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $~lib/util/math/logf_lut|inlined.0 (result f32) + local.get $x + local.set $x|1 + local.get $x|1 + i32.reinterpret_f32 + local.set $ux + local.get $ux + i32.const 8388608 + i32.sub + i32.const 2139095040 + i32.const 8388608 + i32.sub + i32.ge_u + if + local.get $ux + i32.const 1 + i32.shl + i32.const 0 + i32.eq + if + f32.const inf + f32.neg + br $~lib/util/math/logf_lut|inlined.0 + end + local.get $ux + i32.const 2139095040 + i32.eq + if + local.get $x|1 + br $~lib/util/math/logf_lut|inlined.0 + end + local.get $ux + i32.const 31 + i32.shr_u + if (result i32) + i32.const 1 + else + local.get $ux + i32.const 1 + i32.shl + i32.const -16777216 + i32.ge_u + end + if + local.get $x|1 + local.get $x|1 + f32.sub + local.get $x|1 + local.get $x|1 + f32.sub + f32.div + br $~lib/util/math/logf_lut|inlined.0 + end + local.get $x|1 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + local.set $ux + local.get $ux + i32.const 23 + i32.const 23 + i32.shl + i32.sub + local.set $ux + end + local.get $ux + i32.const 1060306944 + i32.sub + local.set $tmp + local.get $tmp + i32.const 23 + i32.const 4 + i32.sub + i32.shr_u + i32.const 15 + i32.and + local.set $i + local.get $tmp + i32.const 23 + i32.shr_s + local.set $k + local.get $ux + local.get $tmp + i32.const 511 + i32.const 23 + i32.shl + i32.and + i32.sub + local.set $iz + i32.const 4160 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load + local.set $invc + i32.const 4160 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=8 + local.set $logc + local.get $iz + f32.reinterpret_i32 + f64.promote_f32 + local.set $z + local.get $z + local.get $invc + f64.mul + f64.const 1 + f64.sub + local.set $r + local.get $logc + local.get $k + f64.convert_i32_s + f64.const 0.6931471805599453 + f64.mul + f64.add + local.set $y0 + local.get $r + local.get $r + f64.mul + local.set $r2 + f64.const 0.333456765744066 + local.get $r + f64.mul + f64.const -0.4999997485802103 + f64.add + local.set $y + local.get $y + f64.const -0.25089342214237154 + local.get $r2 + f64.mul + f64.add + local.set $y + local.get $y + local.get $r2 + f64.mul + local.get $y0 + local.get $r + f64.add + f64.add + local.set $y + local.get $y + f32.demote_f64 + br $~lib/util/math/logf_lut|inlined.0 + end + return + ) + (func $~lib/math/NativeMathf.acosh (param $x f32) (result f32) + (local $u i32) + (local $a i32) + (local $xm1 f32) + local.get $x + i32.reinterpret_f32 + local.set $u + local.get $u + i32.const 2147483647 + i32.and + local.set $a + local.get $a + i32.const 1065353216 + i32.const 1 + i32.const 23 + i32.shl + i32.add + i32.lt_u + if + local.get $x + f32.const 1 + f32.sub + local.set $xm1 + local.get $xm1 + local.get $xm1 + local.get $xm1 + f32.const 2 + f32.add + f32.mul + f32.sqrt + f32.add + call $~lib/math/NativeMathf.log1p + return + end + local.get $u + i32.const 1065353216 + i32.const 12 + i32.const 23 + i32.shl + i32.add + i32.lt_u + if + f32.const 2 + local.get $x + f32.mul + f32.const 1 + local.get $x + local.get $x + local.get $x + f32.mul + f32.const 1 + f32.sub + f32.sqrt + f32.add + f32.div + f32.sub + call $~lib/math/NativeMathf.log + return + end + local.get $x + call $~lib/math/NativeMathf.log + f32.const 0.6931471824645996 + f32.add + return + ) + (func $std/math/test_acoshf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.acosh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.asin (param $x f64) (result f64) + (local $hx i32) + (local $ix i32) + (local $lx i32) + (local $z f64) + (local $s f64) + (local $r f64) + (local $f f64) + (local $c f64) + local.get $x + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hx + local.get $hx + i32.const 2147483647 + i32.and + local.set $ix + local.get $ix + i32.const 1072693248 + i32.ge_u + if + local.get $x + i64.reinterpret_f64 + i32.wrap_i64 + local.set $lx + local.get $ix + i32.const 1072693248 + i32.sub + local.get $lx + i32.or + i32.const 0 + i32.eq + if + local.get $x + f64.const 1.5707963267948966 + f64.mul + f32.const 7.52316384526264e-37 + f64.promote_f32 + f64.add + return + end + f64.const 0 + local.get $x + local.get $x + f64.sub + f64.div + return + end + local.get $ix + i32.const 1071644672 + i32.lt_u + if + local.get $ix + i32.const 1045430272 + i32.lt_u + if (result i32) + local.get $ix + i32.const 1048576 + i32.ge_u + else + i32.const 0 + end + if + local.get $x + return + end + local.get $x + local.get $x + local.get $x + local.get $x + f64.mul + call $~lib/math/R + f64.mul + f64.add + return + end + f64.const 0.5 + local.get $x + f64.abs + f64.const 0.5 + f64.mul + f64.sub + local.set $z + local.get $z + f64.sqrt + local.set $s + local.get $z + call $~lib/math/R + local.set $r + local.get $ix + i32.const 1072640819 + i32.ge_u + if + f64.const 1.5707963267948966 + f64.const 2 + local.get $s + local.get $s + local.get $r + f64.mul + f64.add + f64.mul + f64.const 6.123233995736766e-17 + f64.sub + f64.sub + local.set $x + else + local.get $s + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.set $f + local.get $z + local.get $f + local.get $f + f64.mul + f64.sub + local.get $s + local.get $f + f64.add + f64.div + local.set $c + f64.const 0.5 + f64.const 1.5707963267948966 + f64.mul + f64.const 2 + local.get $s + f64.mul + local.get $r + f64.mul + f64.const 6.123233995736766e-17 + f64.const 2 + local.get $c + f64.mul + f64.sub + f64.sub + f64.const 0.5 + f64.const 1.5707963267948966 + f64.mul + f64.const 2 + local.get $f + f64.mul + f64.sub + f64.sub + f64.sub + local.set $x + end + local.get $x + f64.neg + local.get $x + local.get $hx + i32.const 0 + i32.lt_s + select + return + ) + (func $std/math/test_asin (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.asin + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.asin + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.asin (param $x f32) (result f32) + (local $sx f32) + (local $hx i32) + (local $z f32) + (local $s f64) + local.get $x + local.set $sx + local.get $x + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.set $hx + local.get $hx + i32.const 1065353216 + i32.ge_u + if + local.get $hx + i32.const 1065353216 + i32.eq + if + local.get $x + f32.const 1.5707963705062866 + f32.mul + f32.const 7.52316384526264e-37 + f32.add + return + end + f32.const 0 + local.get $x + local.get $x + f32.sub + f32.div + return + end + local.get $hx + i32.const 1056964608 + i32.lt_u + if + local.get $hx + i32.const 964689920 + i32.lt_u + if (result i32) + local.get $hx + i32.const 8388608 + i32.ge_u + else + i32.const 0 + end + if + local.get $x + return + end + local.get $x + local.get $x + local.get $x + local.get $x + f32.mul + call $~lib/math/Rf + f32.mul + f32.add + return + end + f32.const 0.5 + local.get $x + f32.abs + f32.const 0.5 + f32.mul + f32.sub + local.set $z + local.get $z + f64.promote_f32 + f64.sqrt + local.set $s + f32.const 1.5707963705062866 + f64.promote_f32 + f32.const 2 + f64.promote_f32 + local.get $s + local.get $s + local.get $z + call $~lib/math/Rf + f64.promote_f32 + f64.mul + f64.add + f64.mul + f64.sub + f32.demote_f64 + local.set $x + local.get $x + local.get $sx + f32.copysign + return + ) + (func $std/math/test_asinf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.asin + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.asinh (param $x f64) (result f64) + (local $u i64) + (local $e i64) + (local $y f64) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $e + local.get $u + i64.const 9223372036854775807 + i64.and + f64.reinterpret_i64 + local.set $y + local.get $e + i64.const 1023 + i64.const 26 + i64.add + i64.ge_u + if + local.get $y + call $~lib/math/NativeMath.log + f64.const 0.6931471805599453 + f64.add + local.set $y + else + local.get $e + i64.const 1023 + i64.const 1 + i64.add + i64.ge_u + if + f64.const 2 + local.get $y + f64.mul + f64.const 1 + local.get $y + local.get $y + f64.mul + f64.const 1 + f64.add + f64.sqrt + local.get $y + f64.add + f64.div + f64.add + call $~lib/math/NativeMath.log + local.set $y + else + local.get $e + i64.const 1023 + i64.const 26 + i64.sub + i64.ge_u + if + local.get $y + local.get $y + local.get $y + f64.mul + local.get $y + local.get $y + f64.mul + f64.const 1 + f64.add + f64.sqrt + f64.const 1 + f64.add + f64.div + f64.add + call $~lib/math/NativeMath.log1p + local.set $y + end + end + end + local.get $y + local.get $x + f64.copysign + return + ) + (func $std/math/test_asinh (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.asinh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.asinh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.asinh (param $x f32) (result f32) + (local $u i32) + (local $y f32) + local.get $x + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.set $u + local.get $u + f32.reinterpret_i32 + local.set $y + local.get $u + i32.const 1065353216 + i32.const 12 + i32.const 23 + i32.shl + i32.add + i32.ge_u + if + local.get $y + call $~lib/math/NativeMathf.log + f32.const 0.6931471824645996 + f32.add + local.set $y + else + local.get $u + i32.const 1065353216 + i32.const 1 + i32.const 23 + i32.shl + i32.add + i32.ge_u + if + f32.const 2 + local.get $y + f32.mul + f32.const 1 + local.get $y + local.get $y + f32.mul + f32.const 1 + f32.add + f32.sqrt + local.get $y + f32.add + f32.div + f32.add + call $~lib/math/NativeMathf.log + local.set $y + else + local.get $u + i32.const 1065353216 + i32.const 12 + i32.const 23 + i32.shl + i32.sub + i32.ge_u + if + local.get $y + local.get $y + local.get $y + f32.mul + local.get $y + local.get $y + f32.mul + f32.const 1 + f32.add + f32.sqrt + f32.const 1 + f32.add + f32.div + f32.add + call $~lib/math/NativeMathf.log1p + local.set $y + end + end + end + local.get $y + local.get $x + f32.copysign + return + ) + (func $std/math/test_asinhf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.asinh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.atan (param $x f64) (result f64) + (local $ix i32) + (local $sx f64) + (local $z f64) + (local $id i32) + (local $w f64) + (local $s1 f64) + (local $s2 f64) + (local $s3 f64) + (local $9 i32) + local.get $x + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $ix + local.get $x + local.set $sx + local.get $ix + i32.const 2147483647 + i32.and + local.set $ix + local.get $ix + i32.const 1141899264 + i32.ge_u + if + local.get $x + local.get $x + f64.ne + if + local.get $x + return + end + f64.const 1.5707963267948966 + f32.const 7.52316384526264e-37 + f64.promote_f32 + f64.add + local.set $z + local.get $z + local.get $sx + f64.copysign + return + end + local.get $ix + i32.const 1071382528 + i32.lt_u + if + local.get $ix + i32.const 1044381696 + i32.lt_u + if + local.get $x + return + end + i32.const -1 + local.set $id + else + local.get $x + f64.abs + local.set $x + local.get $ix + i32.const 1072889856 + i32.lt_u + if + local.get $ix + i32.const 1072037888 + i32.lt_u + if + i32.const 0 + local.set $id + f64.const 2 + local.get $x + f64.mul + f64.const 1 + f64.sub + f64.const 2 + local.get $x + f64.add + f64.div + local.set $x + else + i32.const 1 + local.set $id + local.get $x + f64.const 1 + f64.sub + local.get $x + f64.const 1 + f64.add + f64.div + local.set $x + end + else + local.get $ix + i32.const 1073971200 + i32.lt_u + if + i32.const 2 + local.set $id + local.get $x + f64.const 1.5 + f64.sub + f64.const 1 + f64.const 1.5 + local.get $x + f64.mul + f64.add + f64.div + local.set $x + else + i32.const 3 + local.set $id + f64.const -1 + local.get $x + f64.div + local.set $x + end + end + end + local.get $x + local.get $x + f64.mul + local.set $z + local.get $z + local.get $z + f64.mul + local.set $w + local.get $z + f64.const 0.3333333333333293 + local.get $w + f64.const 0.14285714272503466 + local.get $w + f64.const 0.09090887133436507 + local.get $w + f64.const 0.06661073137387531 + local.get $w + f64.const 0.049768779946159324 + local.get $w + f64.const 0.016285820115365782 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $s1 + local.get $w + f64.const -0.19999999999876483 + local.get $w + f64.const -0.11111110405462356 + local.get $w + f64.const -0.0769187620504483 + local.get $w + f64.const -0.058335701337905735 + local.get $w + f64.const -0.036531572744216916 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $s2 + local.get $x + local.get $s1 + local.get $s2 + f64.add + f64.mul + local.set $s3 + local.get $id + i32.const 0 + i32.lt_s + if + local.get $x + local.get $s3 + f64.sub + return + end + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $id + local.set $9 + local.get $9 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $9 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $9 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $9 + i32.const 3 + i32.eq + br_if $case3|0 + br $case4|0 + end + f64.const 0.4636476090008061 + local.get $s3 + f64.const 2.2698777452961687e-17 + f64.sub + local.get $x + f64.sub + f64.sub + local.set $z + br $break|0 + end + f64.const 0.7853981633974483 + local.get $s3 + f64.const 3.061616997868383e-17 + f64.sub + local.get $x + f64.sub + f64.sub + local.set $z + br $break|0 + end + f64.const 0.982793723247329 + local.get $s3 + f64.const 1.3903311031230998e-17 + f64.sub + local.get $x + f64.sub + f64.sub + local.set $z + br $break|0 + end + f64.const 1.5707963267948966 + local.get $s3 + f64.const 6.123233995736766e-17 + f64.sub + local.get $x + f64.sub + f64.sub + local.set $z + br $break|0 + end + unreachable + end + local.get $z + local.get $sx + f64.copysign + return + ) + (func $std/math/test_atan (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.atan + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.atan + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.atan (param $x f32) (result f32) + (local $ix i32) + (local $sx f32) + (local $z f32) + (local $id i32) + (local $w f32) + (local $s1 f32) + (local $s2 f32) + (local $s3 f32) + (local $9 i32) + local.get $x + i32.reinterpret_f32 + local.set $ix + local.get $x + local.set $sx + local.get $ix + i32.const 2147483647 + i32.and + local.set $ix + local.get $ix + i32.const 1283457024 + i32.ge_u + if + local.get $x + local.get $x + f32.ne + if + local.get $x + return + end + f32.const 1.570796251296997 + f32.const 7.52316384526264e-37 + f32.add + local.set $z + local.get $z + local.get $sx + f32.copysign + return + end + local.get $ix + i32.const 1054867456 + i32.lt_u + if + local.get $ix + i32.const 964689920 + i32.lt_u + if + local.get $x + return + end + i32.const -1 + local.set $id + else + local.get $x + f32.abs + local.set $x + local.get $ix + i32.const 1066926080 + i32.lt_u + if + local.get $ix + i32.const 1060110336 + i32.lt_u + if + i32.const 0 + local.set $id + f32.const 2 + local.get $x + f32.mul + f32.const 1 + f32.sub + f32.const 2 + local.get $x + f32.add + f32.div + local.set $x + else + i32.const 1 + local.set $id + local.get $x + f32.const 1 + f32.sub + local.get $x + f32.const 1 + f32.add + f32.div + local.set $x + end + else + local.get $ix + i32.const 1075576832 + i32.lt_u + if + i32.const 2 + local.set $id + local.get $x + f32.const 1.5 + f32.sub + f32.const 1 + f32.const 1.5 + local.get $x + f32.mul + f32.add + f32.div + local.set $x + else + i32.const 3 + local.set $id + f32.const -1 + local.get $x + f32.div + local.set $x + end + end + end + local.get $x + local.get $x + f32.mul + local.set $z + local.get $z + local.get $z + f32.mul + local.set $w + local.get $z + f32.const 0.333333283662796 + local.get $w + f32.const 0.14253635704517365 + local.get $w + f32.const 0.06168760731816292 + f32.mul + f32.add + f32.mul + f32.add + f32.mul + local.set $s1 + local.get $w + f32.const -0.19999158382415771 + local.get $w + f32.const -0.106480173766613 + f32.mul + f32.add + f32.mul + local.set $s2 + local.get $x + local.get $s1 + local.get $s2 + f32.add + f32.mul + local.set $s3 + local.get $id + i32.const 0 + i32.lt_s + if + local.get $x + local.get $s3 + f32.sub + return + end + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $id + local.set $9 + local.get $9 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $9 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $9 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $9 + i32.const 3 + i32.eq + br_if $case3|0 + br $case4|0 + end + f32.const 0.46364760398864746 + local.get $s3 + f32.const 5.01215824399992e-09 + f32.sub + local.get $x + f32.sub + f32.sub + local.set $z + br $break|0 + end + f32.const 0.7853981256484985 + local.get $s3 + f32.const 3.774894707930798e-08 + f32.sub + local.get $x + f32.sub + f32.sub + local.set $z + br $break|0 + end + f32.const 0.9827936887741089 + local.get $s3 + f32.const 3.447321716976148e-08 + f32.sub + local.get $x + f32.sub + f32.sub + local.set $z + br $break|0 + end + f32.const 1.570796251296997 + local.get $s3 + f32.const 7.549789415861596e-08 + f32.sub + local.get $x + f32.sub + f32.sub + local.set $z + br $break|0 + end + unreachable + end + local.get $z + local.get $sx + f32.copysign + return + ) + (func $std/math/test_atanf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.atan + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.atanh (param $x f64) (result f64) + (local $u i64) + (local $e i64) + (local $y f64) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $e + local.get $x + f64.abs + local.set $y + local.get $e + i64.const 1023 + i64.const 1 + i64.sub + i64.lt_u + if + local.get $e + i64.const 1023 + i64.const 32 + i64.sub + i64.ge_u + if + f64.const 0.5 + f64.const 2 + local.get $y + f64.mul + f64.const 2 + local.get $y + f64.mul + local.get $y + f64.mul + f64.const 1 + local.get $y + f64.sub + f64.div + f64.add + call $~lib/math/NativeMath.log1p + f64.mul + local.set $y + end + else + f64.const 0.5 + f64.const 2 + local.get $y + f64.const 1 + local.get $y + f64.sub + f64.div + f64.mul + call $~lib/math/NativeMath.log1p + f64.mul + local.set $y + end + local.get $y + local.get $x + f64.copysign + return + ) + (func $std/math/test_atanh (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.atanh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.atanh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.atanh (param $x f32) (result f32) + (local $u i32) + (local $y f32) + local.get $x + i32.reinterpret_f32 + local.set $u + local.get $x + f32.abs + local.set $y + local.get $u + i32.const 1065353216 + i32.const 1 + i32.const 23 + i32.shl + i32.sub + i32.lt_u + if + local.get $u + i32.const 1065353216 + i32.const 32 + i32.const 23 + i32.shl + i32.sub + i32.ge_u + if + f32.const 0.5 + f32.const 2 + local.get $y + f32.mul + f32.const 1 + local.get $y + f32.const 1 + local.get $y + f32.sub + f32.div + f32.add + f32.mul + call $~lib/math/NativeMathf.log1p + f32.mul + local.set $y + end + else + f32.const 0.5 + f32.const 2 + local.get $y + f32.const 1 + local.get $y + f32.sub + f32.div + f32.mul + call $~lib/math/NativeMathf.log1p + f32.mul + local.set $y + end + local.get $y + local.get $x + f32.copysign + return + ) + (func $std/math/test_atanhf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.atanh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.atan2 (param $y f64) (param $x f64) (result f64) + (local $u i64) + (local $ix i32) + (local $lx i32) + (local $iy i32) + (local $ly i32) + (local $m i32) + (local $8 i32) + (local $t f64) + (local $t|10 f64) + (local $z f64) + (local $12 i32) + local.get $x + local.get $x + f64.ne + if (result i32) + i32.const 1 + else + local.get $y + local.get $y + f64.ne + end + if + local.get $x + local.get $y + f64.add + return + end + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $ix + local.get $u + i32.wrap_i64 + local.set $lx + local.get $y + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $iy + local.get $u + i32.wrap_i64 + local.set $ly + local.get $ix + i32.const 1072693248 + i32.sub + local.get $lx + i32.or + i32.const 0 + i32.eq + if + local.get $y + call $~lib/math/NativeMath.atan + return + end + local.get $iy + i32.const 31 + i32.shr_u + i32.const 1 + i32.and + local.get $ix + i32.const 30 + i32.shr_u + i32.const 2 + i32.and + i32.or + local.set $m + local.get $ix + i32.const 2147483647 + i32.and + local.set $ix + local.get $iy + i32.const 2147483647 + i32.and + local.set $iy + local.get $iy + local.get $ly + i32.or + i32.const 0 + i32.eq + if + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $m + local.set $8 + local.get $8 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $8 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $8 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $8 + i32.const 3 + i32.eq + br_if $case3|0 + br $break|0 + end + end + local.get $y + return + end + global.get $~lib/math/NativeMath.PI + return + end + global.get $~lib/math/NativeMath.PI + f64.neg + return + end + end + local.get $ix + local.get $lx + i32.or + i32.const 0 + i32.eq + if + local.get $m + i32.const 1 + i32.and + if (result f64) + global.get $~lib/math/NativeMath.PI + f64.neg + f64.const 2 + f64.div + else + global.get $~lib/math/NativeMath.PI + f64.const 2 + f64.div + end + return + end + local.get $ix + i32.const 2146435072 + i32.eq + if + local.get $iy + i32.const 2146435072 + i32.eq + if + local.get $m + i32.const 2 + i32.and + if (result f64) + i32.const 3 + f64.convert_i32_s + global.get $~lib/math/NativeMath.PI + f64.mul + f64.const 4 + f64.div + else + global.get $~lib/math/NativeMath.PI + f64.const 4 + f64.div + end + local.set $t + local.get $m + i32.const 1 + i32.and + if (result f64) + local.get $t + f64.neg + else + local.get $t + end + return + else + local.get $m + i32.const 2 + i32.and + if (result f64) + global.get $~lib/math/NativeMath.PI + else + f64.const 0 + end + local.set $t|10 + local.get $m + i32.const 1 + i32.and + if (result f64) + local.get $t|10 + f64.neg + else + local.get $t|10 + end + return + end + unreachable + end + local.get $ix + i32.const 64 + i32.const 20 + i32.shl + i32.add + local.get $iy + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $iy + i32.const 2146435072 + i32.eq + end + if + local.get $m + i32.const 1 + i32.and + if (result f64) + global.get $~lib/math/NativeMath.PI + f64.neg + f64.const 2 + f64.div + else + global.get $~lib/math/NativeMath.PI + f64.const 2 + f64.div + end + return + end + local.get $m + i32.const 2 + i32.and + if (result i32) + local.get $iy + i32.const 64 + i32.const 20 + i32.shl + i32.add + local.get $ix + i32.lt_u + else + i32.const 0 + end + if + f64.const 0 + local.set $z + else + local.get $y + local.get $x + f64.div + f64.abs + call $~lib/math/NativeMath.atan + local.set $z + end + block $break|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $m + local.set $12 + local.get $12 + i32.const 0 + i32.eq + br_if $case0|1 + local.get $12 + i32.const 1 + i32.eq + br_if $case1|1 + local.get $12 + i32.const 2 + i32.eq + br_if $case2|1 + local.get $12 + i32.const 3 + i32.eq + br_if $case3|1 + br $break|1 + end + local.get $z + return + end + local.get $z + f64.neg + return + end + global.get $~lib/math/NativeMath.PI + local.get $z + f64.const 1.2246467991473532e-16 + f64.sub + f64.sub + return + end + local.get $z + f64.const 1.2246467991473532e-16 + f64.sub + global.get $~lib/math/NativeMath.PI + f64.sub + return + end + unreachable + ) + (func $std/math/test_atan2 (param $value1 f64) (param $value2 f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value1 + local.get $value2 + call $~lib/math/NativeMath.atan2 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value1 + local.get $value2 + call $~lib/bindings/dom/Math.atan2 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.atan2 (param $y f32) (param $x f32) (result f32) + (local $ix i32) + (local $iy i32) + (local $m i32) + (local $5 i32) + (local $t f32) + (local $t|7 f32) + (local $z f32) + (local $9 i32) + local.get $x + local.get $x + f32.ne + if (result i32) + i32.const 1 + else + local.get $y + local.get $y + f32.ne + end + if + local.get $x + local.get $y + f32.add + return + end + local.get $x + i32.reinterpret_f32 + local.set $ix + local.get $y + i32.reinterpret_f32 + local.set $iy + local.get $ix + i32.const 1065353216 + i32.eq + if + local.get $y + call $~lib/math/NativeMathf.atan + return + end + local.get $iy + i32.const 31 + i32.shr_u + i32.const 1 + i32.and + local.get $ix + i32.const 30 + i32.shr_u + i32.const 2 + i32.and + i32.or + local.set $m + local.get $ix + i32.const 2147483647 + i32.and + local.set $ix + local.get $iy + i32.const 2147483647 + i32.and + local.set $iy + local.get $iy + i32.const 0 + i32.eq + if + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $m + local.set $5 + local.get $5 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 3 + i32.eq + br_if $case3|0 + br $break|0 + end + end + local.get $y + return + end + f32.const 3.1415927410125732 + return + end + f32.const 3.1415927410125732 + f32.neg + return + end + end + local.get $ix + i32.const 0 + i32.eq + if + local.get $m + i32.const 1 + i32.and + if (result f32) + f32.const 3.1415927410125732 + f32.neg + f32.const 2 + f32.div + else + f32.const 3.1415927410125732 + f32.const 2 + f32.div + end + return + end + local.get $ix + i32.const 2139095040 + i32.eq + if + local.get $iy + i32.const 2139095040 + i32.eq + if + local.get $m + i32.const 2 + i32.and + if (result f32) + f32.const 3 + f32.const 3.1415927410125732 + f32.mul + f32.const 4 + f32.div + else + f32.const 3.1415927410125732 + f32.const 4 + f32.div + end + local.set $t + local.get $m + i32.const 1 + i32.and + if (result f32) + local.get $t + f32.neg + else + local.get $t + end + return + else + local.get $m + i32.const 2 + i32.and + if (result f32) + f32.const 3.1415927410125732 + else + f32.const 0 + end + local.set $t|7 + local.get $m + i32.const 1 + i32.and + if (result f32) + local.get $t|7 + f32.neg + else + local.get $t|7 + end + return + end + unreachable + end + local.get $ix + i32.const 26 + i32.const 23 + i32.shl + i32.add + local.get $iy + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $iy + i32.const 2139095040 + i32.eq + end + if + local.get $m + i32.const 1 + i32.and + if (result f32) + f32.const 3.1415927410125732 + f32.neg + f32.const 2 + f32.div + else + f32.const 3.1415927410125732 + f32.const 2 + f32.div + end + return + end + local.get $m + i32.const 2 + i32.and + if (result i32) + local.get $iy + i32.const 26 + i32.const 23 + i32.shl + i32.add + local.get $ix + i32.lt_u + else + i32.const 0 + end + if + f32.const 0 + local.set $z + else + local.get $y + local.get $x + f32.div + f32.abs + call $~lib/math/NativeMathf.atan + local.set $z + end + block $break|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $m + local.set $9 + local.get $9 + i32.const 0 + i32.eq + br_if $case0|1 + local.get $9 + i32.const 1 + i32.eq + br_if $case1|1 + local.get $9 + i32.const 2 + i32.eq + br_if $case2|1 + local.get $9 + i32.const 3 + i32.eq + br_if $case3|1 + br $break|1 + end + local.get $z + return + end + local.get $z + f32.neg + return + end + f32.const 3.1415927410125732 + local.get $z + f32.const -8.742277657347586e-08 + f32.sub + f32.sub + return + end + local.get $z + f32.const -8.742277657347586e-08 + f32.sub + f32.const 3.1415927410125732 + f32.sub + return + end + unreachable + ) + (func $std/math/test_atan2f (param $value1 f32) (param $value2 f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value1 + local.get $value2 + call $~lib/math/NativeMathf.atan2 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.cbrt (param $x f64) (result f64) + (local $u i64) + (local $hx i32) + (local $t f64) + (local $r f64) + (local $s f64) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.set $hx + local.get $hx + i32.const 2146435072 + i32.ge_u + if + local.get $x + local.get $x + f64.add + return + end + local.get $hx + i32.const 1048576 + i32.lt_u + if + local.get $x + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.set $hx + local.get $hx + i32.const 0 + i32.eq + if + local.get $x + return + end + local.get $hx + i32.const 3 + i32.div_u + i32.const 696219795 + i32.add + local.set $hx + else + local.get $hx + i32.const 3 + i32.div_u + i32.const 715094163 + i32.add + local.set $hx + end + local.get $u + i64.const 1 + i64.const 63 + i64.shl + i64.and + local.set $u + local.get $u + local.get $hx + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + local.set $u + local.get $u + f64.reinterpret_i64 + local.set $t + local.get $t + local.get $t + f64.mul + local.get $t + local.get $x + f64.div + f64.mul + local.set $r + local.get $t + f64.const 1.87595182427177 + local.get $r + f64.const -1.8849797954337717 + local.get $r + f64.const 1.6214297201053545 + f64.mul + f64.add + f64.mul + f64.add + local.get $r + local.get $r + f64.mul + local.get $r + f64.mul + f64.const -0.758397934778766 + local.get $r + f64.const 0.14599619288661245 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $t + local.get $t + i64.reinterpret_f64 + i64.const 2147483648 + i64.add + i64.const -1073741824 + i64.and + f64.reinterpret_i64 + local.set $t + local.get $t + local.get $t + f64.mul + local.set $s + local.get $x + local.get $s + f64.div + local.set $r + local.get $r + local.get $t + f64.sub + f64.const 2 + local.get $t + f64.mul + local.get $r + f64.add + f64.div + local.set $r + local.get $t + local.get $t + local.get $r + f64.mul + f64.add + local.set $t + local.get $t + return + ) + (func $std/math/test_cbrt (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.cbrt + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.cbrt + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.cbrt (param $x f32) (result f32) + (local $u i32) + (local $hx i32) + (local $t f64) + (local $r f64) + local.get $x + i32.reinterpret_f32 + local.set $u + local.get $u + i32.const 2147483647 + i32.and + local.set $hx + local.get $hx + i32.const 2139095040 + i32.ge_u + if + local.get $x + local.get $x + f32.add + return + end + local.get $hx + i32.const 8388608 + i32.lt_u + if + local.get $hx + i32.const 0 + i32.eq + if + local.get $x + return + end + local.get $x + f32.const 16777216 + f32.mul + i32.reinterpret_f32 + local.set $u + local.get $u + i32.const 2147483647 + i32.and + local.set $hx + local.get $hx + i32.const 3 + i32.div_u + i32.const 642849266 + i32.add + local.set $hx + else + local.get $hx + i32.const 3 + i32.div_u + i32.const 709958130 + i32.add + local.set $hx + end + local.get $u + i32.const -2147483648 + i32.and + local.set $u + local.get $u + local.get $hx + i32.or + local.set $u + local.get $u + f32.reinterpret_i32 + f64.promote_f32 + local.set $t + local.get $t + local.get $t + f64.mul + local.get $t + f64.mul + local.set $r + local.get $t + local.get $x + f64.promote_f32 + local.get $x + f64.promote_f32 + f64.add + local.get $r + f64.add + f64.mul + local.get $x + f64.promote_f32 + local.get $r + f64.add + local.get $r + f64.add + f64.div + local.set $t + local.get $t + local.get $t + f64.mul + local.get $t + f64.mul + local.set $r + local.get $t + local.get $x + f64.promote_f32 + local.get $x + f64.promote_f32 + f64.add + local.get $r + f64.add + f64.mul + local.get $x + f64.promote_f32 + local.get $r + f64.add + local.get $r + f64.add + f64.div + local.set $t + local.get $t + f32.demote_f64 + return + ) + (func $std/math/test_cbrtf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.cbrt + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $std/math/test_ceil (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + (local $x f64) + block $~lib/math/NativeMath.ceil|inlined.0 (result f64) + local.get $value + local.set $x + local.get $x + f64.ceil + br $~lib/math/NativeMath.ceil|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.ceil + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $std/math/test_ceilf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + (local $x f32) + block $~lib/math/NativeMathf.ceil|inlined.0 (result f32) + local.get $value + local.set $x + local.get $x + f32.ceil + br $~lib/math/NativeMathf.ceil|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/pio2_large_quot (param $x f64) (param $u i64) (result i32) + (local $magnitude i64) + (local $offset i64) + (local $shift i64) + (local $tblPtr i32) + (local $s0 i64) + (local $s1 i64) + (local $s2 i64) + (local $b0 i64) + (local $b1 i64) + (local $b2 i64) + (local $rshift i64) + (local $b3 i64) + (local $significand i64) + (local $u|15 i64) + (local $v i64) + (local $u1 i64) + (local $v1 i64) + (local $w0 i64) + (local $w1 i64) + (local $t i64) + (local $blo i64) + (local $bhi i64) + (local $ahi i64) + (local $clo i64) + (local $plo i64) + (local $phi i64) + (local $rlo i64) + (local $rhi i64) + (local $slo i64) + (local $shi i64) + (local $q i64) + (local $q0 i64) + (local $q1 i64) + (local $shift|35 i64) + (local $u|36 i64) + (local $v|37 i64) + (local $u1|38 i64) + (local $v1|39 i64) + (local $w0|40 i64) + (local $w1|41 i64) + (local $t|42 i64) + (local $lo i64) + (local $hi i64) + (local $ahi|45 i64) + (local $alo i64) + (local $blo|47 i64) + (local $shifter i64) + (local $signbit i64) + (local $coeff f64) + local.get $u + i64.const 9223372036854775807 + i64.and + local.set $magnitude + local.get $magnitude + i64.const 52 + i64.shr_s + i64.const 1045 + i64.sub + local.set $offset + local.get $offset + i64.const 63 + i64.and + local.set $shift + i32.const 4416 + local.get $offset + i64.const 6 + i64.shr_s + i32.wrap_i64 + i32.const 3 + i32.shl + i32.add + local.set $tblPtr + local.get $tblPtr + i64.load + local.set $b0 + local.get $tblPtr + i64.load offset=8 + local.set $b1 + local.get $tblPtr + i64.load offset=16 + local.set $b2 + local.get $shift + i64.const 0 + i64.ne + if + i32.const 64 + i64.extend_i32_s + local.get $shift + i64.sub + local.set $rshift + local.get $tblPtr + i64.load offset=24 + local.set $b3 + local.get $b1 + local.get $rshift + i64.shr_u + local.get $b0 + local.get $shift + i64.shl + i64.or + local.set $s0 + local.get $b2 + local.get $rshift + i64.shr_u + local.get $b1 + local.get $shift + i64.shl + i64.or + local.set $s1 + local.get $b3 + local.get $rshift + i64.shr_u + local.get $b2 + local.get $shift + i64.shl + i64.or + local.set $s2 + else + local.get $b0 + local.set $s0 + local.get $b1 + local.set $s1 + local.get $b2 + local.set $s2 + end + local.get $u + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + local.set $significand + block $~lib/math/umuldi|inlined.0 (result i64) + local.get $s1 + local.set $u|15 + local.get $significand + local.set $v + local.get $u|15 + i64.const 4294967295 + i64.and + local.set $u1 + local.get $v + i64.const 4294967295 + i64.and + local.set $v1 + local.get $u|15 + i64.const 32 + i64.shr_u + local.set $u|15 + local.get $v + i64.const 32 + i64.shr_u + local.set $v + local.get $u1 + local.get $v1 + i64.mul + local.set $t + local.get $t + i64.const 4294967295 + i64.and + local.set $w0 + local.get $u|15 + local.get $v1 + i64.mul + local.get $t + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $t + i64.const 32 + i64.shr_u + local.set $w1 + local.get $u1 + local.get $v + i64.mul + local.get $t + i64.const 4294967295 + i64.and + i64.add + local.set $t + local.get $u|15 + local.get $v + i64.mul + local.get $w1 + i64.add + local.get $t + i64.const 32 + i64.shr_u + i64.add + global.set $~lib/math/res128_hi + local.get $t + i64.const 32 + i64.shl + local.get $w0 + i64.add + br $~lib/math/umuldi|inlined.0 + end + local.set $blo + global.get $~lib/math/res128_hi + local.set $bhi + local.get $s0 + local.get $significand + i64.mul + local.set $ahi + local.get $s2 + i64.const 32 + i64.shr_u + local.get $significand + i64.const 32 + i64.shr_s + i64.mul + local.set $clo + local.get $blo + local.get $clo + i64.add + local.set $plo + local.get $ahi + local.get $bhi + i64.add + local.get $plo + local.get $clo + i64.lt_u + i64.extend_i32_u + i64.add + local.set $phi + local.get $plo + i64.const 2 + i64.shl + local.set $rlo + local.get $phi + i64.const 2 + i64.shl + local.get $plo + i64.const 62 + i64.shr_u + i64.or + local.set $rhi + local.get $rhi + i64.const 63 + i64.shr_s + local.set $slo + local.get $slo + i64.const 1 + i64.shr_s + local.set $shi + local.get $phi + i64.const 62 + i64.shr_s + local.get $slo + i64.sub + local.set $q + i64.const 4372995238176751616 + block $~lib/math/pio2_right|inlined.0 (result i64) + local.get $rlo + local.get $slo + i64.xor + local.set $q0 + local.get $rhi + local.get $shi + i64.xor + local.set $q1 + local.get $q1 + i64.clz + local.set $shift|35 + local.get $q1 + local.get $shift|35 + i64.shl + local.get $q0 + i64.const 64 + local.get $shift|35 + i64.sub + i64.shr_u + i64.or + local.set $q1 + local.get $q0 + local.get $shift|35 + i64.shl + local.set $q0 + block $~lib/math/umuldi|inlined.1 (result i64) + i64.const -3958705157555305932 + local.set $u|36 + local.get $q1 + local.set $v|37 + local.get $u|36 + i64.const 4294967295 + i64.and + local.set $u1|38 + local.get $v|37 + i64.const 4294967295 + i64.and + local.set $v1|39 + local.get $u|36 + i64.const 32 + i64.shr_u + local.set $u|36 + local.get $v|37 + i64.const 32 + i64.shr_u + local.set $v|37 + local.get $u1|38 + local.get $v1|39 + i64.mul + local.set $t|42 + local.get $t|42 + i64.const 4294967295 + i64.and + local.set $w0|40 + local.get $u|36 + local.get $v1|39 + i64.mul + local.get $t|42 + i64.const 32 + i64.shr_u + i64.add + local.set $t|42 + local.get $t|42 + i64.const 32 + i64.shr_u + local.set $w1|41 + local.get $u1|38 + local.get $v|37 + i64.mul + local.get $t|42 + i64.const 4294967295 + i64.and + i64.add + local.set $t|42 + local.get $u|36 + local.get $v|37 + i64.mul + local.get $w1|41 + i64.add + local.get $t|42 + i64.const 32 + i64.shr_u + i64.add + global.set $~lib/math/res128_hi + local.get $t|42 + i64.const 32 + i64.shl + local.get $w0|40 + i64.add + br $~lib/math/umuldi|inlined.1 + end + local.set $lo + global.get $~lib/math/res128_hi + local.set $hi + local.get $hi + i64.const 11 + i64.shr_u + local.set $ahi|45 + local.get $lo + i64.const 11 + i64.shr_u + local.get $hi + i64.const 53 + i64.shl + i64.or + local.set $alo + f64.const 2.6469779601696886e-23 + i64.const -4267615245585081135 + f64.convert_i64_u + f64.mul + local.get $q1 + f64.convert_i64_u + f64.mul + f64.const 2.6469779601696886e-23 + i64.const -3958705157555305932 + f64.convert_i64_u + f64.mul + local.get $q0 + f64.convert_i64_u + f64.mul + f64.add + i64.trunc_sat_f64_u + local.set $blo|47 + local.get $ahi|45 + local.get $lo + local.get $blo|47 + i64.lt_u + i64.extend_i32_u + i64.add + f64.convert_i64_u + global.set $~lib/math/rempio2_y0 + f64.const 5.421010862427522e-20 + local.get $alo + local.get $blo|47 + i64.add + f64.convert_i64_u + f64.mul + global.set $~lib/math/rempio2_y1 + local.get $shift|35 + br $~lib/math/pio2_right|inlined.0 + end + i64.const 52 + i64.shl + i64.sub + local.set $shifter + local.get $u + local.get $rhi + i64.xor + i64.const -9223372036854775808 + i64.and + local.set $signbit + local.get $shifter + local.get $signbit + i64.or + f64.reinterpret_i64 + local.set $coeff + global.get $~lib/math/rempio2_y0 + local.get $coeff + f64.mul + global.set $~lib/math/rempio2_y0 + global.get $~lib/math/rempio2_y1 + local.get $coeff + f64.mul + global.set $~lib/math/rempio2_y1 + local.get $q + i32.wrap_i64 + return + ) + (func $~lib/math/NativeMath.cos (param $x f64) (result f64) + (local $u i64) + (local $ux i32) + (local $sign i32) + (local $x|4 f64) + (local $y f64) + (local $z f64) + (local $w f64) + (local $r f64) + (local $hz f64) + (local $x|10 f64) + (local $u|11 i64) + (local $sign|12 i32) + (local $ix i32) + (local $q i32) + (local $z|15 f64) + (local $y0 f64) + (local $y1 f64) + (local $q|18 f64) + (local $r|19 f64) + (local $w|20 f64) + (local $j i32) + (local $y0|22 f64) + (local $hi i32) + (local $i i32) + (local $t f64) + (local $t|26 f64) + (local $y1|27 f64) + (local $q|28 i32) + (local $n i32) + (local $y0|30 f64) + (local $y1|31 f64) + (local $x|32 f64) + (local $y|33 f64) + (local $iy i32) + (local $z|35 f64) + (local $w|36 f64) + (local $r|37 f64) + (local $v f64) + (local $x|39 f64) + (local $y|40 f64) + (local $z|41 f64) + (local $w|42 f64) + (local $r|43 f64) + (local $hz|44 f64) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $ux + local.get $ux + i32.const 31 + i32.shr_u + local.set $sign + local.get $ux + i32.const 2147483647 + i32.and + local.set $ux + local.get $ux + i32.const 1072243195 + i32.le_u + if + local.get $ux + i32.const 1044816030 + i32.lt_u + if + f64.const 1 + return + end + block $~lib/math/cos_kern|inlined.0 (result f64) + local.get $x + local.set $x|4 + f64.const 0 + local.set $y + local.get $x|4 + local.get $x|4 + f64.mul + local.set $z + local.get $z + local.get $z + f64.mul + local.set $w + local.get $z + f64.const 0.0416666666666666 + local.get $z + f64.const -0.001388888888887411 + local.get $z + f64.const 2.480158728947673e-05 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.get $w + local.get $w + f64.mul + f64.const -2.7557314351390663e-07 + local.get $z + f64.const 2.087572321298175e-09 + local.get $z + f64.const -1.1359647557788195e-11 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.set $r + f64.const 0.5 + local.get $z + f64.mul + local.set $hz + f64.const 1 + local.get $hz + f64.sub + local.set $w + local.get $w + f64.const 1 + local.get $w + f64.sub + local.get $hz + f64.sub + local.get $z + local.get $r + f64.mul + local.get $x|4 + local.get $y + f64.mul + f64.sub + f64.add + f64.add + br $~lib/math/cos_kern|inlined.0 + end + return + end + local.get $ux + i32.const 2146435072 + i32.ge_u + if + local.get $x + local.get $x + f64.sub + return + end + block $~lib/math/rempio2|inlined.0 (result i32) + local.get $x + local.set $x|10 + local.get $u + local.set $u|11 + local.get $sign + local.set $sign|12 + local.get $u|11 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.set $ix + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $ix + i32.const 1073928572 + i32.lt_u + if + i32.const 1 + local.set $q + local.get $sign|12 + i32.eqz + if + local.get $x|10 + f64.const 1.5707963267341256 + f64.sub + local.set $z|15 + local.get $ix + i32.const 1073291771 + i32.ne + if + local.get $z|15 + f64.const 6.077100506506192e-11 + f64.sub + local.set $y0 + local.get $z|15 + local.get $y0 + f64.sub + f64.const 6.077100506506192e-11 + f64.sub + local.set $y1 + else + local.get $z|15 + f64.const 6.077100506303966e-11 + f64.sub + local.set $z|15 + local.get $z|15 + f64.const 2.0222662487959506e-21 + f64.sub + local.set $y0 + local.get $z|15 + local.get $y0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.sub + local.set $y1 + end + else + local.get $x|10 + f64.const 1.5707963267341256 + f64.add + local.set $z|15 + local.get $ix + i32.const 1073291771 + i32.ne + if + local.get $z|15 + f64.const 6.077100506506192e-11 + f64.add + local.set $y0 + local.get $z|15 + local.get $y0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add + local.set $y1 + else + local.get $z|15 + f64.const 6.077100506303966e-11 + f64.add + local.set $z|15 + local.get $z|15 + f64.const 2.0222662487959506e-21 + f64.add + local.set $y0 + local.get $z|15 + local.get $y0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + local.set $y1 + end + i32.const -1 + local.set $q + end + local.get $y0 + global.set $~lib/math/rempio2_y0 + local.get $y1 + global.set $~lib/math/rempio2_y1 + local.get $q + br $~lib/math/rempio2|inlined.0 + end + local.get $ix + i32.const 1094263291 + i32.lt_u + if + local.get $x|10 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $q|18 + local.get $x|10 + local.get $q|18 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.set $r|19 + local.get $q|18 + f64.const 6.077100506506192e-11 + f64.mul + local.set $w|20 + local.get $ix + i32.const 20 + i32.shr_u + local.set $j + local.get $r|19 + local.get $w|20 + f64.sub + local.set $y0|22 + local.get $y0|22 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hi + local.get $j + local.get $hi + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + local.set $i + local.get $i + i32.const 16 + i32.gt_u + if + local.get $r|19 + local.set $t + local.get $q|18 + f64.const 6.077100506303966e-11 + f64.mul + local.set $w|20 + local.get $t + local.get $w|20 + f64.sub + local.set $r|19 + local.get $q|18 + f64.const 2.0222662487959506e-21 + f64.mul + local.get $t + local.get $r|19 + f64.sub + local.get $w|20 + f64.sub + f64.sub + local.set $w|20 + local.get $r|19 + local.get $w|20 + f64.sub + local.set $y0|22 + local.get $y0|22 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hi + local.get $j + local.get $hi + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + local.set $i + local.get $i + i32.const 49 + i32.gt_u + if + local.get $r|19 + local.set $t|26 + local.get $q|18 + f64.const 2.0222662487111665e-21 + f64.mul + local.set $w|20 + local.get $t|26 + local.get $w|20 + f64.sub + local.set $r|19 + local.get $q|18 + f64.const 8.4784276603689e-32 + f64.mul + local.get $t|26 + local.get $r|19 + f64.sub + local.get $w|20 + f64.sub + f64.sub + local.set $w|20 + local.get $r|19 + local.get $w|20 + f64.sub + local.set $y0|22 + end + end + local.get $r|19 + local.get $y0|22 + f64.sub + local.get $w|20 + f64.sub + local.set $y1|27 + local.get $y0|22 + global.set $~lib/math/rempio2_y0 + local.get $y1|27 + global.set $~lib/math/rempio2_y1 + local.get $q|18 + i32.trunc_sat_f64_s + br $~lib/math/rempio2|inlined.0 + end + local.get $x|10 + local.get $u|11 + call $~lib/math/pio2_large_quot + local.set $q|28 + i32.const 0 + local.get $q|28 + i32.sub + local.get $q|28 + local.get $sign|12 + select + br $~lib/math/rempio2|inlined.0 + end + local.set $n + global.get $~lib/math/rempio2_y0 + local.set $y0|30 + global.get $~lib/math/rempio2_y1 + local.set $y1|31 + local.get $n + i32.const 1 + i32.and + if (result f64) + block $~lib/math/sin_kern|inlined.0 (result f64) + local.get $y0|30 + local.set $x|32 + local.get $y1|31 + local.set $y|33 + i32.const 1 + local.set $iy + local.get $x|32 + local.get $x|32 + f64.mul + local.set $z|35 + local.get $z|35 + local.get $z|35 + f64.mul + local.set $w|36 + f64.const 0.00833333333332249 + local.get $z|35 + f64.const -1.984126982985795e-04 + local.get $z|35 + f64.const 2.7557313707070068e-06 + f64.mul + f64.add + f64.mul + f64.add + local.get $z|35 + local.get $w|36 + f64.mul + f64.const -2.5050760253406863e-08 + local.get $z|35 + f64.const 1.58969099521155e-10 + f64.mul + f64.add + f64.mul + f64.add + local.set $r|37 + local.get $z|35 + local.get $x|32 + f64.mul + local.set $v + local.get $iy + i32.eqz + if + local.get $x|32 + local.get $v + f64.const -0.16666666666666632 + local.get $z|35 + local.get $r|37 + f64.mul + f64.add + f64.mul + f64.add + br $~lib/math/sin_kern|inlined.0 + else + local.get $x|32 + local.get $z|35 + f64.const 0.5 + local.get $y|33 + f64.mul + local.get $v + local.get $r|37 + f64.mul + f64.sub + f64.mul + local.get $y|33 + f64.sub + local.get $v + f64.const -0.16666666666666632 + f64.mul + f64.sub + f64.sub + br $~lib/math/sin_kern|inlined.0 + end + unreachable + end + else + block $~lib/math/cos_kern|inlined.1 (result f64) + local.get $y0|30 + local.set $x|39 + local.get $y1|31 + local.set $y|40 + local.get $x|39 + local.get $x|39 + f64.mul + local.set $z|41 + local.get $z|41 + local.get $z|41 + f64.mul + local.set $w|42 + local.get $z|41 + f64.const 0.0416666666666666 + local.get $z|41 + f64.const -0.001388888888887411 + local.get $z|41 + f64.const 2.480158728947673e-05 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.get $w|42 + local.get $w|42 + f64.mul + f64.const -2.7557314351390663e-07 + local.get $z|41 + f64.const 2.087572321298175e-09 + local.get $z|41 + f64.const -1.1359647557788195e-11 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.set $r|43 + f64.const 0.5 + local.get $z|41 + f64.mul + local.set $hz|44 + f64.const 1 + local.get $hz|44 + f64.sub + local.set $w|42 + local.get $w|42 + f64.const 1 + local.get $w|42 + f64.sub + local.get $hz|44 + f64.sub + local.get $z|41 + local.get $r|43 + f64.mul + local.get $x|39 + local.get $y|40 + f64.mul + f64.sub + f64.add + f64.add + br $~lib/math/cos_kern|inlined.1 + end + end + local.set $x + local.get $n + i32.const 1 + i32.add + i32.const 2 + i32.and + if (result f64) + local.get $x + f64.neg + else + local.get $x + end + return + ) + (func $std/math/test_cos (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.cos + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.cos + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.cos (param $x f32) (result f32) + (local $ux i32) + (local $sign i32) + (local $x|3 f64) + (local $z f64) + (local $w f64) + (local $r f64) + (local $x|7 f64) + (local $z|8 f64) + (local $w|9 f64) + (local $r|10 f64) + (local $x|11 f64) + (local $z|12 f64) + (local $w|13 f64) + (local $r|14 f64) + (local $s f64) + (local $x|16 f64) + (local $z|17 f64) + (local $w|18 f64) + (local $r|19 f64) + (local $s|20 f64) + (local $x|21 f64) + (local $z|22 f64) + (local $w|23 f64) + (local $r|24 f64) + (local $x|25 f64) + (local $z|26 f64) + (local $w|27 f64) + (local $r|28 f64) + (local $s|29 f64) + (local $x|30 f64) + (local $z|31 f64) + (local $w|32 f64) + (local $r|33 f64) + (local $s|34 f64) + (local $x|35 f32) + (local $u i32) + (local $sign|37 i32) + (local $q f64) + (local $x|39 f32) + (local $u|40 i32) + (local $offset i32) + (local $shift i64) + (local $tblPtr i32) + (local $b0 i64) + (local $b1 i64) + (local $lo i64) + (local $b2 i64) + (local $hi i64) + (local $mantissa i64) + (local $product i64) + (local $r|51 i64) + (local $q|52 i32) + (local $q|53 i32) + (local $n i32) + (local $y f64) + (local $x|56 f64) + (local $z|57 f64) + (local $w|58 f64) + (local $r|59 f64) + (local $s|60 f64) + (local $x|61 f64) + (local $z|62 f64) + (local $w|63 f64) + (local $r|64 f64) + (local $t f32) + local.get $x + i32.reinterpret_f32 + local.set $ux + local.get $ux + i32.const 31 + i32.shr_u + local.set $sign + local.get $ux + i32.const 2147483647 + i32.and + local.set $ux + local.get $ux + i32.const 1061752794 + i32.le_u + if + local.get $ux + i32.const 964689920 + i32.lt_u + if + f32.const 1 + return + end + block $~lib/math/cos_kernf|inlined.0 (result f32) + local.get $x + f64.promote_f32 + local.set $x|3 + local.get $x|3 + local.get $x|3 + f64.mul + local.set $z + local.get $z + local.get $z + f64.mul + local.set $w + f64.const -0.001388676377460993 + local.get $z + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $r + f32.const 1 + f64.promote_f32 + local.get $z + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $w + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $w + local.get $z + f64.mul + local.get $r + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/cos_kernf|inlined.0 + end + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $ux + i32.const 1081824209 + i32.le_u + if + local.get $ux + i32.const 1075235811 + i32.gt_u + if + block $~lib/math/cos_kernf|inlined.1 (result f32) + local.get $sign + if (result f64) + local.get $x + f64.promote_f32 + f64.const 3.141592653589793 + f64.add + else + local.get $x + f64.promote_f32 + f64.const 3.141592653589793 + f64.sub + end + local.set $x|7 + local.get $x|7 + local.get $x|7 + f64.mul + local.set $z|8 + local.get $z|8 + local.get $z|8 + f64.mul + local.set $w|9 + f64.const -0.001388676377460993 + local.get $z|8 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $r|10 + f32.const 1 + f64.promote_f32 + local.get $z|8 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $w|9 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $w|9 + local.get $z|8 + f64.mul + local.get $r|10 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/cos_kernf|inlined.1 + end + f32.neg + return + else + local.get $sign + if (result f32) + block $~lib/math/sin_kernf|inlined.0 (result f32) + local.get $x + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + local.set $x|11 + local.get $x|11 + local.get $x|11 + f64.mul + local.set $z|12 + local.get $z|12 + local.get $z|12 + f64.mul + local.set $w|13 + f64.const -1.9839334836096632e-04 + local.get $z|12 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $r|14 + local.get $z|12 + local.get $x|11 + f64.mul + local.set $s + local.get $x|11 + local.get $s + f64.const -0.16666666641626524 + local.get $z|12 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $s + local.get $w|13 + f64.mul + local.get $r|14 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/sin_kernf|inlined.0 + end + else + block $~lib/math/sin_kernf|inlined.1 (result f32) + f64.const 1.5707963267948966 + local.get $x + f64.promote_f32 + f64.sub + local.set $x|16 + local.get $x|16 + local.get $x|16 + f64.mul + local.set $z|17 + local.get $z|17 + local.get $z|17 + f64.mul + local.set $w|18 + f64.const -1.9839334836096632e-04 + local.get $z|17 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $r|19 + local.get $z|17 + local.get $x|16 + f64.mul + local.set $s|20 + local.get $x|16 + local.get $s|20 + f64.const -0.16666666641626524 + local.get $z|17 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $s|20 + local.get $w|18 + f64.mul + local.get $r|19 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/sin_kernf|inlined.1 + end + end + return + end + unreachable + end + local.get $ux + i32.const 1088565717 + i32.le_u + if + local.get $ux + i32.const 1085271519 + i32.gt_u + if + block $~lib/math/cos_kernf|inlined.2 (result f32) + local.get $sign + if (result f64) + local.get $x + f64.promote_f32 + f64.const 6.283185307179586 + f64.add + else + local.get $x + f64.promote_f32 + f64.const 6.283185307179586 + f64.sub + end + local.set $x|21 + local.get $x|21 + local.get $x|21 + f64.mul + local.set $z|22 + local.get $z|22 + local.get $z|22 + f64.mul + local.set $w|23 + f64.const -0.001388676377460993 + local.get $z|22 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $r|24 + f32.const 1 + f64.promote_f32 + local.get $z|22 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $w|23 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $w|23 + local.get $z|22 + f64.mul + local.get $r|24 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/cos_kernf|inlined.2 + end + return + else + local.get $sign + if (result f32) + block $~lib/math/sin_kernf|inlined.2 (result f32) + local.get $x + f32.neg + f64.promote_f32 + f64.const 4.71238898038469 + f64.sub + local.set $x|25 + local.get $x|25 + local.get $x|25 + f64.mul + local.set $z|26 + local.get $z|26 + local.get $z|26 + f64.mul + local.set $w|27 + f64.const -1.9839334836096632e-04 + local.get $z|26 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $r|28 + local.get $z|26 + local.get $x|25 + f64.mul + local.set $s|29 + local.get $x|25 + local.get $s|29 + f64.const -0.16666666641626524 + local.get $z|26 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $s|29 + local.get $w|27 + f64.mul + local.get $r|28 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/sin_kernf|inlined.2 + end + else + block $~lib/math/sin_kernf|inlined.3 (result f32) + local.get $x + f64.promote_f32 + f64.const 4.71238898038469 + f64.sub + local.set $x|30 + local.get $x|30 + local.get $x|30 + f64.mul + local.set $z|31 + local.get $z|31 + local.get $z|31 + f64.mul + local.set $w|32 + f64.const -1.9839334836096632e-04 + local.get $z|31 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $r|33 + local.get $z|31 + local.get $x|30 + f64.mul + local.set $s|34 + local.get $x|30 + local.get $s|34 + f64.const -0.16666666641626524 + local.get $z|31 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $s|34 + local.get $w|32 + f64.mul + local.get $r|33 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/sin_kernf|inlined.3 + end + end + return + end + unreachable + end + local.get $ux + i32.const 2139095040 + i32.ge_u + if + local.get $x + local.get $x + f32.sub + return + end + block $~lib/math/rempio2f|inlined.0 (result i32) + local.get $x + local.set $x|35 + local.get $ux + local.set $u + local.get $sign + local.set $sign|37 + local.get $u + i32.const 1305022427 + i32.lt_u + if + local.get $x|35 + f64.promote_f32 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $q + local.get $x|35 + f64.promote_f32 + local.get $q + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $q + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $q + i32.trunc_sat_f64_s + br $~lib/math/rempio2f|inlined.0 + end + block $~lib/math/pio2f_large_quot|inlined.0 (result i32) + local.get $x|35 + local.set $x|39 + local.get $u + local.set $u|40 + local.get $u|40 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.set $offset + local.get $offset + i32.const 63 + i32.and + i64.extend_i32_s + local.set $shift + i32.const 4608 + local.get $offset + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.add + local.set $tblPtr + local.get $tblPtr + i64.load + local.set $b0 + local.get $tblPtr + i64.load offset=8 + local.set $b1 + local.get $shift + i64.const 32 + i64.gt_u + if + local.get $tblPtr + i64.load offset=16 + local.set $b2 + local.get $b2 + i64.const 96 + local.get $shift + i64.sub + i64.shr_u + local.set $lo + local.get $lo + local.get $b1 + local.get $shift + i64.const 32 + i64.sub + i64.shl + i64.or + local.set $lo + else + local.get $b1 + i64.const 32 + local.get $shift + i64.sub + i64.shr_u + local.set $lo + end + local.get $b1 + i64.const 64 + local.get $shift + i64.sub + i64.shr_u + local.get $b0 + local.get $shift + i64.shl + i64.or + local.set $hi + local.get $u|40 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.set $mantissa + local.get $mantissa + local.get $hi + i64.mul + local.get $mantissa + local.get $lo + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $product + local.get $product + i64.const 2 + i64.shl + local.set $r|51 + local.get $product + i64.const 62 + i64.shr_u + local.get $r|51 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.set $q|52 + f64.const 8.515303950216386e-20 + local.get $x|39 + f64.promote_f32 + f64.copysign + local.get $r|51 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + local.get $q|52 + br $~lib/math/pio2f_large_quot|inlined.0 + end + local.set $q|53 + i32.const 0 + local.get $q|53 + i32.sub + local.get $q|53 + local.get $sign|37 + select + br $~lib/math/rempio2f|inlined.0 + end + local.set $n + global.get $~lib/math/rempio2f_y + local.set $y + local.get $n + i32.const 1 + i32.and + if (result f32) + block $~lib/math/sin_kernf|inlined.4 (result f32) + local.get $y + local.set $x|56 + local.get $x|56 + local.get $x|56 + f64.mul + local.set $z|57 + local.get $z|57 + local.get $z|57 + f64.mul + local.set $w|58 + f64.const -1.9839334836096632e-04 + local.get $z|57 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $r|59 + local.get $z|57 + local.get $x|56 + f64.mul + local.set $s|60 + local.get $x|56 + local.get $s|60 + f64.const -0.16666666641626524 + local.get $z|57 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $s|60 + local.get $w|58 + f64.mul + local.get $r|59 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/sin_kernf|inlined.4 + end + else + block $~lib/math/cos_kernf|inlined.3 (result f32) + local.get $y + local.set $x|61 + local.get $x|61 + local.get $x|61 + f64.mul + local.set $z|62 + local.get $z|62 + local.get $z|62 + f64.mul + local.set $w|63 + f64.const -0.001388676377460993 + local.get $z|62 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $r|64 + f32.const 1 + f64.promote_f32 + local.get $z|62 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $w|63 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $w|63 + local.get $z|62 + f64.mul + local.get $r|64 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/cos_kernf|inlined.3 + end + end + local.set $t + local.get $n + i32.const 1 + i32.add + i32.const 2 + i32.and + if (result f32) + local.get $t + f32.neg + else + local.get $t + end + return + ) + (func $std/math/test_cosf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.cos + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.expm1 (param $x f64) (result f64) + (local $u i64) + (local $hx i32) + (local $sign i32) + (local $k i32) + (local $c f64) + (local $t f64) + (local $hi f64) + (local $lo f64) + (local $hfx f64) + (local $hxs f64) + (local $hxq f64) + (local $r1 f64) + (local $e f64) + (local $twopk f64) + (local $y f64) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.set $hx + local.get $u + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.set $sign + i32.const 0 + local.set $k + local.get $hx + i32.const 1078159482 + i32.ge_u + if + local.get $x + local.get $x + f64.ne + if + local.get $x + return + end + local.get $sign + if + f64.const -1 + return + end + local.get $x + f64.const 709.782712893384 + f64.gt + if + local.get $x + f64.const 8988465674311579538646525e283 + f64.mul + return + end + end + f64.const 0 + local.set $c + local.get $hx + i32.const 1071001154 + i32.gt_u + if + i32.const 1 + local.get $sign + i32.const 1 + i32.shl + i32.sub + f64.const 1.4426950408889634 + local.get $x + f64.mul + f64.const 0.5 + local.get $x + f64.copysign + f64.add + i32.trunc_sat_f64_s + local.get $hx + i32.const 1072734898 + i32.lt_u + select + local.set $k + local.get $k + f64.convert_i32_s + local.set $t + local.get $x + local.get $t + f64.const 0.6931471803691238 + f64.mul + f64.sub + local.set $hi + local.get $t + f64.const 1.9082149292705877e-10 + f64.mul + local.set $lo + local.get $hi + local.get $lo + f64.sub + local.set $x + local.get $hi + local.get $x + f64.sub + local.get $lo + f64.sub + local.set $c + else + local.get $hx + i32.const 1016070144 + i32.lt_u + if + local.get $x + return + end + end + f64.const 0.5 + local.get $x + f64.mul + local.set $hfx + local.get $x + local.get $hfx + f64.mul + local.set $hxs + local.get $hxs + local.get $hxs + f64.mul + local.set $hxq + f64.const 1 + local.get $hxs + f64.const -0.03333333333333313 + f64.mul + f64.add + local.get $hxq + f64.const 1.5873015872548146e-03 + local.get $hxs + f64.const -7.93650757867488e-05 + f64.mul + f64.add + local.get $hxq + f64.const 4.008217827329362e-06 + local.get $hxs + f64.const -2.0109921818362437e-07 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.set $r1 + f64.const 3 + local.get $r1 + local.get $hfx + f64.mul + f64.sub + local.set $t + local.get $hxs + local.get $r1 + local.get $t + f64.sub + f64.const 6 + local.get $x + local.get $t + f64.mul + f64.sub + f64.div + f64.mul + local.set $e + local.get $k + i32.const 0 + i32.eq + if + local.get $x + local.get $x + local.get $e + f64.mul + local.get $hxs + f64.sub + f64.sub + return + end + local.get $x + local.get $e + local.get $c + f64.sub + f64.mul + local.get $c + f64.sub + local.set $e + local.get $e + local.get $hxs + f64.sub + local.set $e + local.get $k + i32.const -1 + i32.eq + if + f64.const 0.5 + local.get $x + local.get $e + f64.sub + f64.mul + f64.const 0.5 + f64.sub + return + end + local.get $k + i32.const 1 + i32.eq + if + local.get $x + f64.const -0.25 + f64.lt + if + f64.const -2 + local.get $e + local.get $x + f64.const 0.5 + f64.add + f64.sub + f64.mul + return + end + f64.const 1 + f64.const 2 + local.get $x + local.get $e + f64.sub + f64.mul + f64.add + return + end + i64.const 1023 + local.get $k + i64.extend_i32_s + i64.add + i64.const 52 + i64.shl + local.set $u + local.get $u + f64.reinterpret_i64 + local.set $twopk + local.get $k + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $k + i32.const 56 + i32.gt_s + end + if + local.get $x + local.get $e + f64.sub + f64.const 1 + f64.add + local.set $y + local.get $k + i32.const 1024 + i32.eq + if + local.get $y + f64.const 2 + f64.mul + f64.const 8988465674311579538646525e283 + f64.mul + local.set $y + else + local.get $y + local.get $twopk + f64.mul + local.set $y + end + local.get $y + f64.const 1 + f64.sub + return + end + i64.const 1023 + local.get $k + i64.extend_i32_s + i64.sub + i64.const 52 + i64.shl + local.set $u + local.get $u + f64.reinterpret_i64 + local.set $y + local.get $k + i32.const 20 + i32.lt_s + if + f64.const 1 + local.get $y + f64.sub + local.get $e + f64.sub + local.set $y + else + f64.const 1 + local.get $e + local.get $y + f64.add + f64.sub + local.set $y + end + local.get $x + local.get $y + f64.add + local.get $twopk + f64.mul + return + ) + (func $~lib/math/NativeMath.exp (param $x f64) (result f64) + (local $x|1 f64) + (local $ux i64) + (local $abstop i32) + (local $z f64) + (local $kd f64) + (local $ki i64) + (local $r f64) + (local $idx i32) + (local $top i64) + (local $tail f64) + (local $sbits i64) + (local $r2 f64) + (local $tmp f64) + (local $tmp|14 f64) + (local $sbits|15 i64) + (local $ki|16 i64) + (local $scale f64) + (local $y f64) + (local $one f64) + (local $lo f64) + (local $hi f64) + (local $scale|22 f64) + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $~lib/util/math/exp_lut|inlined.0 (result f64) + local.get $x + local.set $x|1 + local.get $x|1 + i64.reinterpret_f64 + local.set $ux + local.get $ux + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.set $abstop + local.get $abstop + i32.const 969 + i32.sub + i32.const 63 + i32.ge_u + if + local.get $abstop + i32.const 969 + i32.sub + i32.const -2147483648 + i32.ge_u + if + f64.const 1 + br $~lib/util/math/exp_lut|inlined.0 + end + local.get $abstop + i32.const 1033 + i32.ge_u + if + local.get $ux + i64.const -4503599627370496 + i64.eq + if + f64.const 0 + br $~lib/util/math/exp_lut|inlined.0 + end + local.get $abstop + i32.const 2047 + i32.ge_u + if + f64.const 1 + local.get $x|1 + f64.add + br $~lib/util/math/exp_lut|inlined.0 + else + f64.const 0 + f64.const inf + local.get $ux + i64.const 0 + i64.lt_s + select + br $~lib/util/math/exp_lut|inlined.0 + end + unreachable + end + i32.const 0 + local.set $abstop + end + f64.const 184.6649652337873 + local.get $x|1 + f64.mul + local.set $z + local.get $z + f64.const 6755399441055744 + f64.add + local.set $kd + local.get $kd + i64.reinterpret_f64 + local.set $ki + local.get $kd + f64.const 6755399441055744 + f64.sub + local.set $kd + local.get $x|1 + local.get $kd + f64.const -0.005415212348111709 + f64.mul + f64.add + local.get $kd + f64.const -1.2864023111638346e-14 + f64.mul + f64.add + local.set $r + local.get $ki + i32.const 127 + i64.extend_i32_s + i64.and + i64.const 1 + i64.shl + i32.wrap_i64 + local.set $idx + local.get $ki + i64.const 52 + i32.const 7 + i64.extend_i32_s + i64.sub + i64.shl + local.set $top + i32.const 4640 + local.get $idx + i32.const 3 + i32.shl + i32.add + i64.load + f64.reinterpret_i64 + local.set $tail + i32.const 4640 + local.get $idx + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $top + i64.add + local.set $sbits + local.get $r + local.get $r + f64.mul + local.set $r2 + local.get $tail + local.get $r + f64.add + local.get $r2 + f64.const 0.49999999999996786 + local.get $r + f64.const 0.16666666666665886 + f64.mul + f64.add + f64.mul + f64.add + local.get $r2 + local.get $r2 + f64.mul + f64.const 0.0416666808410674 + local.get $r + f64.const 0.008333335853059549 + f64.mul + f64.add + f64.mul + f64.add + local.set $tmp + local.get $abstop + i32.const 0 + i32.eq + if + block $~lib/util/math/specialcase|inlined.0 (result f64) + local.get $tmp + local.set $tmp|14 + local.get $sbits + local.set $sbits|15 + local.get $ki + local.set $ki|16 + local.get $ki|16 + i64.const 2147483648 + i64.and + i64.const 0 + i64.ne + i32.eqz + if + local.get $sbits|15 + i64.const 1009 + i64.const 52 + i64.shl + i64.sub + local.set $sbits|15 + local.get $sbits|15 + f64.reinterpret_i64 + local.set $scale + f64.const 5486124068793688683255936e279 + local.get $scale + local.get $scale + local.get $tmp|14 + f64.mul + f64.add + f64.mul + br $~lib/util/math/specialcase|inlined.0 + end + local.get $sbits|15 + i64.const 1022 + i64.const 52 + i64.shl + i64.add + local.set $sbits|15 + local.get $sbits|15 + f64.reinterpret_i64 + local.set $scale + local.get $scale + local.get $scale + local.get $tmp|14 + f64.mul + f64.add + local.set $y + local.get $y + f64.abs + f64.const 1 + f64.lt + if + f64.const 1 + local.get $y + f64.copysign + local.set $one + local.get $scale + local.get $y + f64.sub + local.get $scale + local.get $tmp|14 + f64.mul + f64.add + local.set $lo + local.get $one + local.get $y + f64.add + local.set $hi + local.get $one + local.get $hi + f64.sub + local.get $y + f64.add + local.get $lo + f64.add + local.set $lo + local.get $hi + local.get $lo + f64.add + local.get $one + f64.sub + local.set $y + local.get $y + f64.const 0 + f64.eq + if + local.get $sbits|15 + i64.const -9223372036854775808 + i64.and + f64.reinterpret_i64 + local.set $y + end + end + local.get $y + f64.const 2.2250738585072014e-308 + f64.mul + br $~lib/util/math/specialcase|inlined.0 + end + br $~lib/util/math/exp_lut|inlined.0 + end + local.get $sbits + f64.reinterpret_i64 + local.set $scale|22 + local.get $scale|22 + local.get $scale|22 + local.get $tmp + f64.mul + f64.add + br $~lib/util/math/exp_lut|inlined.0 + end + return + ) + (func $~lib/math/NativeMath.cosh (param $x f64) (result f64) + (local $u i64) + (local $w i32) + (local $t f64) + (local $x|4 f64) + (local $sign f64) + (local $scale f64) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 9223372036854775807 + i64.and + local.set $u + local.get $u + f64.reinterpret_i64 + local.set $x + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $w + local.get $w + i32.const 1072049730 + i32.lt_u + if + local.get $w + i32.const 1072693248 + i32.const 26 + i32.const 20 + i32.shl + i32.sub + i32.lt_u + if + f64.const 1 + return + end + local.get $x + call $~lib/math/NativeMath.expm1 + local.set $t + f64.const 1 + local.get $t + local.get $t + f64.mul + f64.const 2 + f64.const 2 + local.get $t + f64.mul + f64.add + f64.div + f64.add + return + end + local.get $w + i32.const 1082535490 + i32.lt_u + if + local.get $x + call $~lib/math/NativeMath.exp + local.set $t + f64.const 0.5 + local.get $t + f64.const 1 + local.get $t + f64.div + f64.add + f64.mul + return + end + block $~lib/math/expo2|inlined.0 (result f64) + local.get $x + local.set $x|4 + f64.const 1 + local.set $sign + i32.const 1023 + i32.const 2043 + i32.const 2 + i32.div_u + i32.add + i32.const 20 + i32.shl + i64.extend_i32_u + i64.const 32 + i64.shl + f64.reinterpret_i64 + local.set $scale + local.get $x|4 + f64.const 1416.0996898839683 + f64.sub + call $~lib/math/NativeMath.exp + local.get $sign + local.get $scale + f64.mul + f64.mul + local.get $scale + f64.mul + br $~lib/math/expo2|inlined.0 + end + local.set $t + local.get $t + return + ) + (func $std/math/test_cosh (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.cosh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.cosh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.expm1 (param $x f32) (result f32) + (local $u i32) + (local $hx i32) + (local $sign i32) + (local $c f32) + (local $t f32) + (local $k i32) + (local $hi f32) + (local $lo f32) + (local $hfx f32) + (local $hxs f32) + (local $r1 f32) + (local $e f32) + (local $twopk f32) + (local $y f32) + local.get $x + i32.reinterpret_f32 + local.set $u + local.get $u + i32.const 2147483647 + i32.and + local.set $hx + local.get $u + i32.const 31 + i32.shr_u + local.set $sign + local.get $hx + i32.const 1100331076 + i32.ge_u + if + local.get $hx + i32.const 2139095040 + i32.gt_u + if + local.get $x + return + end + local.get $sign + if + f32.const -1 + return + end + local.get $hx + i32.const 1118925335 + i32.gt_u + if + local.get $x + f32.const 1701411834604692317316873e14 + f32.mul + local.set $x + local.get $x + return + end + end + f32.const 0 + local.set $c + local.get $hx + i32.const 1051816472 + i32.gt_u + if + i32.const 1 + local.get $sign + i32.const 1 + i32.shl + i32.sub + f32.const 1.4426950216293335 + local.get $x + f32.mul + f32.const 0.5 + local.get $x + f32.copysign + f32.add + i32.trunc_sat_f32_s + local.get $hx + i32.const 1065686418 + i32.lt_u + select + local.set $k + local.get $k + f32.convert_i32_s + local.set $t + local.get $x + local.get $t + f32.const 0.6931381225585938 + f32.mul + f32.sub + local.set $hi + local.get $t + f32.const 9.05800061445916e-06 + f32.mul + local.set $lo + local.get $hi + local.get $lo + f32.sub + local.set $x + local.get $hi + local.get $x + f32.sub + local.get $lo + f32.sub + local.set $c + else + local.get $hx + i32.const 855638016 + i32.lt_u + if + local.get $x + return + else + i32.const 0 + local.set $k + end + end + f32.const 0.5 + local.get $x + f32.mul + local.set $hfx + local.get $x + local.get $hfx + f32.mul + local.set $hxs + f32.const 1 + local.get $hxs + f32.const -0.03333321213722229 + local.get $hxs + f32.const 1.5807170420885086e-03 + f32.mul + f32.add + f32.mul + f32.add + local.set $r1 + f32.const 3 + local.get $r1 + local.get $hfx + f32.mul + f32.sub + local.set $t + local.get $hxs + local.get $r1 + local.get $t + f32.sub + f32.const 6 + local.get $x + local.get $t + f32.mul + f32.sub + f32.div + f32.mul + local.set $e + local.get $k + i32.const 0 + i32.eq + if + local.get $x + local.get $x + local.get $e + f32.mul + local.get $hxs + f32.sub + f32.sub + return + end + local.get $x + local.get $e + local.get $c + f32.sub + f32.mul + local.get $c + f32.sub + local.set $e + local.get $e + local.get $hxs + f32.sub + local.set $e + local.get $k + i32.const -1 + i32.eq + if + f32.const 0.5 + local.get $x + local.get $e + f32.sub + f32.mul + f32.const 0.5 + f32.sub + return + end + local.get $k + i32.const 1 + i32.eq + if + local.get $x + f32.const -0.25 + f32.lt + if + f32.const -2 + local.get $e + local.get $x + f32.const 0.5 + f32.add + f32.sub + f32.mul + return + end + f32.const 1 + f32.const 2 + local.get $x + local.get $e + f32.sub + f32.mul + f32.add + return + end + i32.const 127 + local.get $k + i32.add + i32.const 23 + i32.shl + local.set $u + local.get $u + f32.reinterpret_i32 + local.set $twopk + local.get $k + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $k + i32.const 56 + i32.gt_s + end + if + local.get $x + local.get $e + f32.sub + f32.const 1 + f32.add + local.set $y + local.get $k + i32.const 128 + i32.eq + if + local.get $y + f32.const 2 + f32.mul + f32.const 1701411834604692317316873e14 + f32.mul + local.set $y + else + local.get $y + local.get $twopk + f32.mul + local.set $y + end + local.get $y + f32.const 1 + f32.sub + return + end + i32.const 127 + local.get $k + i32.sub + i32.const 23 + i32.shl + local.set $u + local.get $u + f32.reinterpret_i32 + local.set $y + local.get $k + i32.const 20 + i32.lt_s + if + f32.const 1 + local.get $y + f32.sub + local.get $e + f32.sub + local.set $y + else + f32.const 1 + local.get $e + local.get $y + f32.add + f32.sub + local.set $y + end + local.get $x + local.get $y + f32.add + local.get $twopk + f32.mul + return + ) + (func $~lib/math/NativeMathf.exp (param $x f32) (result f32) + (local $x|1 f32) + (local $xd f64) + (local $ix i32) + (local $ux i32) + (local $z f64) + (local $kd f64) + (local $ki i64) + (local $r f64) + (local $s f64) + (local $y f64) + (local $t i64) + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $~lib/util/math/expf_lut|inlined.0 (result f32) + local.get $x + local.set $x|1 + local.get $x|1 + f64.promote_f32 + local.set $xd + local.get $x|1 + i32.reinterpret_f32 + local.set $ix + local.get $ix + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + local.set $ux + local.get $ux + i32.const 1067 + i32.ge_u + if + local.get $ix + i32.const -8388608 + i32.eq + if + f32.const 0 + br $~lib/util/math/expf_lut|inlined.0 + end + local.get $ux + i32.const 2040 + i32.ge_u + if + local.get $x|1 + local.get $x|1 + f32.add + br $~lib/util/math/expf_lut|inlined.0 + end + local.get $x|1 + i32.const 1118925335 + f32.reinterpret_i32 + f32.gt + if + local.get $x|1 + f32.const 1701411834604692317316873e14 + f32.mul + br $~lib/util/math/expf_lut|inlined.0 + end + local.get $x|1 + i32.const -1026559564 + f32.reinterpret_i32 + f32.lt + if + f32.const 0 + br $~lib/util/math/expf_lut|inlined.0 + end + end + f64.const 46.16624130844683 + local.get $xd + f64.mul + local.set $z + local.get $z + f64.const 6755399441055744 + f64.add + local.set $kd + local.get $kd + i64.reinterpret_f64 + local.set $ki + local.get $z + local.get $kd + f64.const 6755399441055744 + f64.sub + f64.sub + local.set $r + i32.const 6688 + local.get $ki + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.add + i64.load + local.set $t + local.get $t + local.get $ki + i64.const 52 + i32.const 5 + i64.extend_i32_s + i64.sub + i64.shl + i64.add + local.set $t + local.get $t + f64.reinterpret_i64 + local.set $s + f64.const 1.6938359250920212e-06 + local.get $r + f64.mul + f64.const 2.3459809789509004e-04 + f64.add + local.set $z + f64.const 0.021660849396613134 + local.get $r + f64.mul + f64.const 1 + f64.add + local.set $y + local.get $y + local.get $z + local.get $r + local.get $r + f64.mul + f64.mul + f64.add + local.set $y + local.get $y + local.get $s + f64.mul + local.set $y + local.get $y + f32.demote_f64 + br $~lib/util/math/expf_lut|inlined.0 + end + return + ) + (func $~lib/math/NativeMathf.cosh (param $x f32) (result f32) + (local $u i32) + (local $t f32) + (local $t|3 f32) + (local $x|4 f32) + (local $sign f32) + (local $scale f32) + local.get $x + i32.reinterpret_f32 + local.set $u + local.get $u + i32.const 2147483647 + i32.and + local.set $u + local.get $u + f32.reinterpret_i32 + local.set $x + local.get $u + i32.const 1060205079 + i32.lt_u + if + local.get $u + i32.const 1065353216 + i32.const 12 + i32.const 23 + i32.shl + i32.sub + i32.lt_u + if + f32.const 1 + return + end + local.get $x + call $~lib/math/NativeMathf.expm1 + local.set $t + f32.const 1 + local.get $t + local.get $t + f32.mul + f32.const 2 + f32.const 2 + local.get $t + f32.mul + f32.add + f32.div + f32.add + return + end + local.get $u + i32.const 1118925335 + i32.lt_u + if + local.get $x + call $~lib/math/NativeMathf.exp + local.set $t|3 + f32.const 0.5 + local.get $t|3 + f32.mul + f32.const 0.5 + local.get $t|3 + f32.div + f32.add + return + end + block $~lib/math/expo2f|inlined.0 (result f32) + local.get $x + local.set $x|4 + f32.const 1 + local.set $sign + i32.const 127 + i32.const 235 + i32.const 1 + i32.shr_u + i32.add + i32.const 23 + i32.shl + f32.reinterpret_i32 + local.set $scale + local.get $x|4 + f32.const 162.88958740234375 + f32.sub + call $~lib/math/NativeMathf.exp + local.get $sign + local.get $scale + f32.mul + f32.mul + local.get $scale + f32.mul + br $~lib/math/expo2f|inlined.0 + end + return + ) + (func $std/math/test_coshf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.cosh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $std/math/test_exp (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.exp + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.exp + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $std/math/test_expf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.exp + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $std/math/test_expm1 (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.expm1 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.expm1 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $std/math/test_expm1f (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.expm1 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.exp2 (param $x f64) (result f64) + (local $x|1 f64) + (local $ux i64) + (local $abstop i32) + (local $kd f64) + (local $ki i64) + (local $r f64) + (local $idx i32) + (local $top i64) + (local $tail f64) + (local $sbits i64) + (local $r2 f64) + (local $tmp f64) + (local $tmp|13 f64) + (local $sbits|14 i64) + (local $ki|15 i64) + (local $scale f64) + (local $y f64) + (local $hi f64) + (local $lo f64) + (local $scale|20 f64) + block $~lib/util/math/exp2_lut|inlined.0 (result f64) + local.get $x + local.set $x|1 + local.get $x|1 + i64.reinterpret_f64 + local.set $ux + local.get $ux + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.set $abstop + local.get $abstop + i32.const 969 + i32.sub + i32.const 63 + i32.ge_u + if + local.get $abstop + i32.const 969 + i32.sub + i32.const -2147483648 + i32.ge_u + if + f64.const 1 + br $~lib/util/math/exp2_lut|inlined.0 + end + local.get $abstop + i32.const 1033 + i32.ge_u + if + local.get $ux + i64.const -4503599627370496 + i64.eq + if + f64.const 0 + br $~lib/util/math/exp2_lut|inlined.0 + end + local.get $abstop + i32.const 2047 + i32.ge_u + if + f64.const 1 + local.get $x|1 + f64.add + br $~lib/util/math/exp2_lut|inlined.0 + end + local.get $ux + i64.const 0 + i64.ge_s + if + f64.const inf + br $~lib/util/math/exp2_lut|inlined.0 + else + local.get $ux + i64.const -4570929321408987136 + i64.ge_u + if + f64.const 0 + br $~lib/util/math/exp2_lut|inlined.0 + end + end + end + local.get $ux + i64.const 1 + i64.shl + i64.const -9143996093422370816 + i64.gt_u + if + i32.const 0 + local.set $abstop + end + end + local.get $x|1 + f64.const 52776558133248 + f64.add + local.set $kd + local.get $kd + i64.reinterpret_f64 + local.set $ki + local.get $kd + f64.const 52776558133248 + f64.sub + local.set $kd + local.get $x|1 + local.get $kd + f64.sub + local.set $r + local.get $ki + i32.const 127 + i64.extend_i32_s + i64.and + i64.const 1 + i64.shl + i32.wrap_i64 + local.set $idx + local.get $ki + i64.const 52 + i32.const 7 + i64.extend_i32_s + i64.sub + i64.shl + local.set $top + i32.const 4640 + local.get $idx + i32.const 3 + i32.shl + i32.add + i64.load + f64.reinterpret_i64 + local.set $tail + i32.const 4640 + local.get $idx + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $top + i64.add + local.set $sbits + local.get $r + local.get $r + f64.mul + local.set $r2 + local.get $tail + local.get $r + f64.const 0.6931471805599453 + f64.mul + f64.add + local.get $r2 + f64.const 0.24022650695909065 + local.get $r + f64.const 0.0555041086686087 + f64.mul + f64.add + f64.mul + f64.add + local.get $r2 + local.get $r2 + f64.mul + f64.const 0.009618131975721055 + local.get $r + f64.const 1.3332074570119598e-03 + f64.mul + f64.add + f64.mul + f64.add + local.set $tmp + local.get $abstop + i32.const 0 + i32.eq + if + block $~lib/util/math/specialcase2|inlined.0 (result f64) + local.get $tmp + local.set $tmp|13 + local.get $sbits + local.set $sbits|14 + local.get $ki + local.set $ki|15 + local.get $ki|15 + i64.const 2147483648 + i64.and + i64.const 0 + i64.eq + if + local.get $sbits|14 + i64.const 1 + i64.const 52 + i64.shl + i64.sub + local.set $sbits|14 + local.get $sbits|14 + f64.reinterpret_i64 + local.set $scale + f64.const 2 + local.get $scale + local.get $tmp|13 + f64.mul + local.get $scale + f64.add + f64.mul + br $~lib/util/math/specialcase2|inlined.0 + end + local.get $sbits|14 + i64.const 1022 + i64.const 52 + i64.shl + i64.add + local.set $sbits|14 + local.get $sbits|14 + f64.reinterpret_i64 + local.set $scale + local.get $scale + local.get $tmp|13 + f64.mul + local.get $scale + f64.add + local.set $y + local.get $y + f64.const 1 + f64.lt + if + local.get $scale + local.get $y + f64.sub + local.get $scale + local.get $tmp|13 + f64.mul + f64.add + local.set $lo + f64.const 1 + local.get $y + f64.add + local.set $hi + f64.const 1 + local.get $hi + f64.sub + local.get $y + f64.add + local.get $lo + f64.add + local.set $lo + local.get $hi + local.get $lo + f64.add + f64.const 1 + f64.sub + local.set $y + end + local.get $y + f64.const 2.2250738585072014e-308 + f64.mul + br $~lib/util/math/specialcase2|inlined.0 + end + br $~lib/util/math/exp2_lut|inlined.0 + end + local.get $sbits + f64.reinterpret_i64 + local.set $scale|20 + local.get $scale|20 + local.get $tmp + f64.mul + local.get $scale|20 + f64.add + br $~lib/util/math/exp2_lut|inlined.0 + end + return + ) + (func $std/math/test_exp2 (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.exp2 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + f64.const 2 + local.get $value + call $~lib/bindings/dom/Math.pow + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.exp2 (param $x f32) (result f32) + (local $x|1 f32) + (local $xd f64) + (local $ix i32) + (local $ux i32) + (local $kd f64) + (local $ki i64) + (local $r f64) + (local $t i64) + (local $y f64) + (local $s f64) + block $~lib/util/math/exp2f_lut|inlined.0 (result f32) + local.get $x + local.set $x|1 + local.get $x|1 + f64.promote_f32 + local.set $xd + local.get $x|1 + i32.reinterpret_f32 + local.set $ix + local.get $ix + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + local.set $ux + local.get $ux + i32.const 1072 + i32.ge_u + if + local.get $ix + i32.const -8388608 + i32.eq + if + f32.const 0 + br $~lib/util/math/exp2f_lut|inlined.0 + end + local.get $ux + i32.const 2040 + i32.ge_u + if + local.get $x|1 + local.get $x|1 + f32.add + br $~lib/util/math/exp2f_lut|inlined.0 + end + local.get $x|1 + f32.const 0 + f32.gt + if + local.get $x|1 + f32.const 1701411834604692317316873e14 + f32.mul + br $~lib/util/math/exp2f_lut|inlined.0 + end + local.get $x|1 + f32.const -150 + f32.le + if + f32.const 0 + br $~lib/util/math/exp2f_lut|inlined.0 + end + end + local.get $xd + f64.const 211106232532992 + f64.add + local.set $kd + local.get $kd + i64.reinterpret_f64 + local.set $ki + local.get $xd + local.get $kd + f64.const 211106232532992 + f64.sub + f64.sub + local.set $r + i32.const 6688 + local.get $ki + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.add + i64.load + local.set $t + local.get $t + local.get $ki + i64.const 52 + i32.const 5 + i64.extend_i32_s + i64.sub + i64.shl + i64.add + local.set $t + local.get $t + f64.reinterpret_i64 + local.set $s + f64.const 0.6931471806916203 + local.get $r + f64.mul + f64.const 1 + f64.add + local.set $y + local.get $y + f64.const 0.05550361559341535 + local.get $r + f64.mul + f64.const 0.2402284522445722 + f64.add + local.get $r + local.get $r + f64.mul + f64.mul + f64.add + local.set $y + local.get $y + local.get $s + f64.mul + local.set $y + local.get $y + f32.demote_f64 + br $~lib/util/math/exp2f_lut|inlined.0 + end + return + ) + (func $std/math/test_exp2f (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.exp2 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $std/math/test_floor (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + (local $x f64) + block $~lib/math/NativeMath.floor|inlined.0 (result f64) + local.get $value + local.set $x + local.get $x + f64.floor + br $~lib/math/NativeMath.floor|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.floor + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $std/math/test_floorf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + (local $x f32) + block $~lib/math/NativeMathf.floor|inlined.0 (result f32) + local.get $value + local.set $x + local.get $x + f32.floor + br $~lib/math/NativeMathf.floor|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.hypot (param $x f64) (param $y f64) (result f64) + (local $ux i64) + (local $uy i64) + (local $ut i64) + (local $ex i32) + (local $ey i32) + (local $z f64) + (local $c f64) + (local $h f64) + (local $l f64) + (local $hx f64) + (local $lx f64) + (local $hy f64) + (local $ly f64) + local.get $x + i64.reinterpret_f64 + local.set $ux + local.get $y + i64.reinterpret_f64 + local.set $uy + local.get $ux + i64.const 9223372036854775807 + i64.and + local.set $ux + local.get $uy + i64.const 9223372036854775807 + i64.and + local.set $uy + local.get $ux + local.get $uy + i64.lt_u + if + local.get $ux + local.set $ut + local.get $uy + local.set $ux + local.get $ut + local.set $uy + end + local.get $ux + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $ex + local.get $uy + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $ey + local.get $uy + f64.reinterpret_i64 + local.set $y + local.get $ey + i32.const 2047 + i32.eq + if + local.get $y + return + end + local.get $ux + f64.reinterpret_i64 + local.set $x + local.get $ex + i32.const 2047 + i32.eq + if (result i32) + i32.const 1 + else + local.get $uy + i64.const 0 + i64.eq + end + if + local.get $x + return + end + local.get $ex + local.get $ey + i32.sub + i32.const 64 + i32.gt_s + if + local.get $x + local.get $y + f64.add + return + end + f64.const 1 + local.set $z + local.get $ex + i32.const 1023 + i32.const 510 + i32.add + i32.gt_s + if + f64.const 5260135901548373507240989e186 + local.set $z + local.get $x + f64.const 1.90109156629516e-211 + f64.mul + local.set $x + local.get $y + f64.const 1.90109156629516e-211 + f64.mul + local.set $y + else + local.get $ey + i32.const 1023 + i32.const 450 + i32.sub + i32.lt_s + if + f64.const 1.90109156629516e-211 + local.set $z + local.get $x + f64.const 5260135901548373507240989e186 + f64.mul + local.set $x + local.get $y + f64.const 5260135901548373507240989e186 + f64.mul + local.set $y + end + end + local.get $x + f64.const 134217729 + f64.mul + local.set $c + local.get $x + local.get $c + f64.sub + local.get $c + f64.add + local.set $h + local.get $x + local.get $h + f64.sub + local.set $l + local.get $x + local.get $x + f64.mul + local.set $hx + local.get $h + local.get $h + f64.mul + local.get $hx + f64.sub + f64.const 2 + local.get $h + f64.mul + local.get $l + f64.add + local.get $l + f64.mul + f64.add + local.set $lx + local.get $y + f64.const 134217729 + f64.mul + local.set $c + local.get $y + local.get $c + f64.sub + local.get $c + f64.add + local.set $h + local.get $y + local.get $h + f64.sub + local.set $l + local.get $y + local.get $y + f64.mul + local.set $hy + local.get $h + local.get $h + f64.mul + local.get $hy + f64.sub + f64.const 2 + local.get $h + f64.mul + local.get $l + f64.add + local.get $l + f64.mul + f64.add + local.set $ly + local.get $z + local.get $ly + local.get $lx + f64.add + local.get $hy + f64.add + local.get $hx + f64.add + f64.sqrt + f64.mul + return + ) + (func $std/math/test_hypot (param $value1 f64) (param $value2 f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value1 + local.get $value2 + call $~lib/math/NativeMath.hypot + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMathf.hypot (param $x f32) (param $y f32) (result f32) + (local $ux i32) + (local $uy i32) + (local $ut i32) + (local $z f32) + local.get $x + i32.reinterpret_f32 + local.set $ux + local.get $y + i32.reinterpret_f32 + local.set $uy + local.get $ux + i32.const 2147483647 + i32.and + local.set $ux + local.get $uy + i32.const 2147483647 + i32.and + local.set $uy + local.get $ux + local.get $uy + i32.lt_u + if + local.get $ux + local.set $ut + local.get $uy + local.set $ux + local.get $ut + local.set $uy + end + local.get $ux + f32.reinterpret_i32 + local.set $x + local.get $uy + f32.reinterpret_i32 + local.set $y + local.get $uy + i32.const 255 + i32.const 23 + i32.shl + i32.eq + if + local.get $y + return + end + local.get $ux + i32.const 255 + i32.const 23 + i32.shl + i32.ge_u + if (result i32) + i32.const 1 + else + local.get $uy + i32.const 0 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $ux + local.get $uy + i32.sub + i32.const 25 + i32.const 23 + i32.shl + i32.ge_u + end + if + local.get $x + local.get $y + f32.add + return + end + f32.const 1 + local.set $z + local.get $ux + i32.const 127 + i32.const 60 + i32.add + i32.const 23 + i32.shl + i32.ge_u + if + f32.const 1237940039285380274899124e3 + local.set $z + local.get $x + f32.const 8.077935669463161e-28 + f32.mul + local.set $x + local.get $y + f32.const 8.077935669463161e-28 + f32.mul + local.set $y + else + local.get $uy + i32.const 127 + i32.const 60 + i32.sub + i32.const 23 + i32.shl + i32.lt_u + if + f32.const 8.077935669463161e-28 + local.set $z + local.get $x + f32.const 1237940039285380274899124e3 + f32.mul + local.set $x + local.get $y + f32.const 1237940039285380274899124e3 + f32.mul + local.set $y + end + end + local.get $z + local.get $x + f64.promote_f32 + local.get $x + f64.promote_f32 + f64.mul + local.get $y + f64.promote_f32 + local.get $y + f64.promote_f32 + f64.mul + f64.add + f32.demote_f64 + f32.sqrt + f32.mul + return + ) + (func $std/math/test_hypotf (param $value1 f32) (param $value2 f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value1 + local.get $value2 + call $~lib/math/NativeMathf.hypot + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $std/math/test_log (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.log + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.log + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $std/math/test_logf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.log + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.log10 (param $x f64) (result f64) + (local $u i64) + (local $hx i32) + (local $k i32) + (local $sign i32) + (local $f f64) + (local $hfsq f64) + (local $s f64) + (local $z f64) + (local $w f64) + (local $t1 f64) + (local $t2 f64) + (local $r f64) + (local $hi f64) + (local $lo f64) + (local $val_hi f64) + (local $dk f64) + (local $y f64) + (local $val_lo f64) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hx + i32.const 0 + local.set $k + local.get $hx + i32.const 31 + i32.shr_u + local.set $sign + local.get $sign + if (result i32) + i32.const 1 + else + local.get $hx + i32.const 1048576 + i32.lt_u + end + if + local.get $u + i64.const 1 + i64.shl + i64.const 0 + i64.eq + if + f64.const -1 + local.get $x + local.get $x + f64.mul + f64.div + return + end + local.get $sign + if + local.get $x + local.get $x + f64.sub + f64.const 0 + f64.div + return + end + local.get $k + i32.const 54 + i32.sub + local.set $k + local.get $x + f64.const 18014398509481984 + f64.mul + local.set $x + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hx + else + local.get $hx + i32.const 2146435072 + i32.ge_u + if + local.get $x + return + else + local.get $hx + i32.const 1072693248 + i32.eq + if (result i32) + local.get $u + i64.const 32 + i64.shl + i64.const 0 + i64.eq + else + i32.const 0 + end + if + f64.const 0 + return + end + end + end + local.get $hx + i32.const 1072693248 + i32.const 1072079006 + i32.sub + i32.add + local.set $hx + local.get $k + local.get $hx + i32.const 20 + i32.shr_u + i32.const 1023 + i32.sub + i32.add + local.set $k + local.get $hx + i32.const 1048575 + i32.and + i32.const 1072079006 + i32.add + local.set $hx + local.get $hx + i64.extend_i32_u + i64.const 32 + i64.shl + local.get $u + i64.const 4294967295 + i64.and + i64.or + local.set $u + local.get $u + f64.reinterpret_i64 + local.set $x + local.get $x + f64.const 1 + f64.sub + local.set $f + f64.const 0.5 + local.get $f + f64.mul + local.get $f + f64.mul + local.set $hfsq + local.get $f + f64.const 2 + local.get $f + f64.add + f64.div + local.set $s + local.get $s + local.get $s + f64.mul + local.set $z + local.get $z + local.get $z + f64.mul + local.set $w + local.get $w + f64.const 0.3999999999940942 + local.get $w + f64.const 0.22222198432149784 + local.get $w + f64.const 0.15313837699209373 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $t1 + local.get $z + f64.const 0.6666666666666735 + local.get $w + f64.const 0.2857142874366239 + local.get $w + f64.const 0.1818357216161805 + local.get $w + f64.const 0.14798198605116586 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $t2 + local.get $t2 + local.get $t1 + f64.add + local.set $r + local.get $f + local.get $hfsq + f64.sub + local.set $hi + local.get $hi + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const -4294967296 + i64.and + local.set $u + local.get $u + f64.reinterpret_i64 + local.set $hi + local.get $f + local.get $hi + f64.sub + local.get $hfsq + f64.sub + local.get $s + local.get $hfsq + local.get $r + f64.add + f64.mul + f64.add + local.set $lo + local.get $hi + f64.const 0.4342944818781689 + f64.mul + local.set $val_hi + local.get $k + f64.convert_i32_s + local.set $dk + local.get $dk + f64.const 0.30102999566361177 + f64.mul + local.set $y + local.get $dk + f64.const 3.694239077158931e-13 + f64.mul + local.get $lo + local.get $hi + f64.add + f64.const 2.5082946711645275e-11 + f64.mul + f64.add + local.get $lo + f64.const 0.4342944818781689 + f64.mul + f64.add + local.set $val_lo + local.get $y + local.get $val_hi + f64.add + local.set $w + local.get $val_lo + local.get $y + local.get $w + f64.sub + local.get $val_hi + f64.add + f64.add + local.set $val_lo + local.get $val_lo + local.get $w + f64.add + return + ) + (func $std/math/test_log10 (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.log10 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.log10 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.log10 (param $x f32) (result f32) + (local $ux i32) + (local $k i32) + (local $sign i32) + (local $f f32) + (local $s f32) + (local $z f32) + (local $w f32) + (local $t1 f32) + (local $t2 f32) + (local $r f32) + (local $hfsq f32) + (local $hi f32) + (local $lo f32) + (local $dk f32) + local.get $x + i32.reinterpret_f32 + local.set $ux + i32.const 0 + local.set $k + local.get $ux + i32.const 31 + i32.shr_u + local.set $sign + local.get $sign + if (result i32) + i32.const 1 + else + local.get $ux + i32.const 8388608 + i32.lt_u + end + if + local.get $ux + i32.const 1 + i32.shl + i32.const 0 + i32.eq + if + f32.const -1 + local.get $x + local.get $x + f32.mul + f32.div + return + end + local.get $sign + if + local.get $x + local.get $x + f32.sub + f32.const 0 + f32.div + return + end + local.get $k + i32.const 25 + i32.sub + local.set $k + local.get $x + f32.const 33554432 + f32.mul + local.set $x + local.get $x + i32.reinterpret_f32 + local.set $ux + else + local.get $ux + i32.const 2139095040 + i32.ge_u + if + local.get $x + return + else + local.get $ux + i32.const 1065353216 + i32.eq + if + f32.const 0 + return + end + end + end + local.get $ux + i32.const 1065353216 + i32.const 1060439283 + i32.sub + i32.add + local.set $ux + local.get $k + local.get $ux + i32.const 23 + i32.shr_u + i32.const 127 + i32.sub + i32.add + local.set $k + local.get $ux + i32.const 8388607 + i32.and + i32.const 1060439283 + i32.add + local.set $ux + local.get $ux + f32.reinterpret_i32 + local.set $x + local.get $x + f32.const 1 + f32.sub + local.set $f + local.get $f + f32.const 2 + local.get $f + f32.add + f32.div + local.set $s + local.get $s + local.get $s + f32.mul + local.set $z + local.get $z + local.get $z + f32.mul + local.set $w + local.get $w + f32.const 0.40000972151756287 + local.get $w + f32.const 0.24279078841209412 + f32.mul + f32.add + f32.mul + local.set $t1 + local.get $z + f32.const 0.6666666269302368 + local.get $w + f32.const 0.2849878668785095 + f32.mul + f32.add + f32.mul + local.set $t2 + local.get $t2 + local.get $t1 + f32.add + local.set $r + f32.const 0.5 + local.get $f + f32.mul + local.get $f + f32.mul + local.set $hfsq + local.get $f + local.get $hfsq + f32.sub + local.set $hi + local.get $hi + i32.reinterpret_f32 + local.set $ux + local.get $ux + i32.const -4096 + i32.and + local.set $ux + local.get $ux + f32.reinterpret_i32 + local.set $hi + local.get $f + local.get $hi + f32.sub + local.get $hfsq + f32.sub + local.get $s + local.get $hfsq + local.get $r + f32.add + f32.mul + f32.add + local.set $lo + local.get $k + f32.convert_i32_s + local.set $dk + local.get $dk + f32.const 7.903415166765626e-07 + f32.mul + local.get $lo + local.get $hi + f32.add + f32.const -3.168997136526741e-05 + f32.mul + f32.add + local.get $lo + f32.const 0.434326171875 + f32.mul + f32.add + local.get $hi + f32.const 0.434326171875 + f32.mul + f32.add + local.get $dk + f32.const 0.3010292053222656 + f32.mul + f32.add + return + ) + (func $std/math/test_log10f (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.log10 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $std/math/test_log1p (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.log1p + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.log1p + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $std/math/test_log1pf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.log1p + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.log2 (param $x f64) (result f64) + (local $x|1 f64) + (local $ix i64) + (local $r f64) + (local $rhi f64) + (local $rlo f64) + (local $hi f64) + (local $lo f64) + (local $r2 f64) + (local $r4 f64) + (local $p f64) + (local $y f64) + (local $top i32) + (local $tmp i64) + (local $i i32) + (local $k i64) + (local $iz i64) + (local $invc f64) + (local $logc f64) + (local $z f64) + (local $kd f64) + (local $chi f64) + (local $clo f64) + (local $r|23 f64) + (local $rhi|24 f64) + (local $rlo|25 f64) + (local $t1 f64) + (local $t2 f64) + (local $t3 f64) + (local $hi|29 f64) + (local $lo|30 f64) + (local $r2|31 f64) + (local $p|32 f64) + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $~lib/util/math/log2_lut|inlined.0 (result f64) + local.get $x + local.set $x|1 + local.get $x|1 + i64.reinterpret_f64 + local.set $ix + local.get $ix + i64.const 4606800540372828160 + i64.sub + i64.const 4607381812656734208 + i64.const 4606800540372828160 + i64.sub + i64.lt_u + if + local.get $x|1 + f64.const 1 + f64.sub + local.set $r + local.get $r + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.set $rhi + local.get $r + local.get $rhi + f64.sub + local.set $rlo + local.get $rhi + f64.const 1.4426950407214463 + f64.mul + local.set $hi + local.get $rlo + f64.const 1.4426950407214463 + f64.mul + local.get $r + f64.const 1.6751713164886512e-10 + f64.mul + f64.add + local.set $lo + local.get $r + local.get $r + f64.mul + local.set $r2 + local.get $r2 + local.get $r2 + f64.mul + local.set $r4 + local.get $r2 + f64.const -0.7213475204444817 + local.get $r + f64.const 0.48089834696298744 + f64.mul + f64.add + f64.mul + local.set $p + local.get $hi + local.get $p + f64.add + local.set $y + local.get $lo + local.get $hi + local.get $y + f64.sub + local.get $p + f64.add + f64.add + local.set $lo + local.get $lo + local.get $r4 + f64.const -0.360673760222145 + local.get $r + f64.const 0.2885390081805197 + f64.mul + f64.add + local.get $r2 + f64.const -0.24044917405728863 + local.get $r + f64.const 0.2060992861022954 + f64.mul + f64.add + f64.mul + f64.add + local.get $r4 + f64.const -0.18033596705327856 + local.get $r + f64.const 0.1603032746063156 + f64.mul + f64.add + local.get $r2 + f64.const -0.14483316576701266 + local.get $r + f64.const 0.13046826811283835 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.set $lo + local.get $y + local.get $lo + f64.add + br $~lib/util/math/log2_lut|inlined.0 + end + local.get $ix + i64.const 48 + i64.shr_u + i32.wrap_i64 + local.set $top + local.get $top + i32.const 16 + i32.sub + i32.const 32752 + i32.const 16 + i32.sub + i32.ge_u + if + local.get $ix + i64.const 1 + i64.shl + i64.const 0 + i64.eq + if + f64.const -1 + local.get $x|1 + local.get $x|1 + f64.mul + f64.div + br $~lib/util/math/log2_lut|inlined.0 + end + local.get $ix + i64.const 9218868437227405312 + i64.eq + if + local.get $x|1 + br $~lib/util/math/log2_lut|inlined.0 + end + local.get $top + i32.const 32768 + i32.and + if (result i32) + i32.const 1 + else + local.get $top + i32.const 32752 + i32.and + i32.const 32752 + i32.eq + end + if + local.get $x|1 + local.get $x|1 + f64.sub + local.get $x|1 + local.get $x|1 + f64.sub + f64.div + br $~lib/util/math/log2_lut|inlined.0 + end + local.get $x|1 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + local.set $ix + local.get $ix + i64.const 52 + i64.const 52 + i64.shl + i64.sub + local.set $ix + end + local.get $ix + i64.const 4604367669032910848 + i64.sub + local.set $tmp + local.get $tmp + i64.const 52 + i32.const 6 + i64.extend_i32_s + i64.sub + i64.shr_u + i32.const 63 + i64.extend_i32_s + i64.and + i32.wrap_i64 + local.set $i + local.get $tmp + i64.const 52 + i64.shr_s + local.set $k + local.get $ix + local.get $tmp + i64.const -4503599627370496 + i64.and + i64.sub + local.set $iz + i32.const 6944 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load + local.set $invc + i32.const 6944 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=8 + local.set $logc + local.get $iz + f64.reinterpret_i64 + local.set $z + local.get $k + f64.convert_i64_s + local.set $kd + i32.const 7968 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load + local.set $chi + i32.const 7968 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=8 + local.set $clo + local.get $z + local.get $chi + f64.sub + local.get $clo + f64.sub + local.get $invc + f64.mul + local.set $r|23 + local.get $r|23 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.set $rhi|24 + local.get $r|23 + local.get $rhi|24 + f64.sub + local.set $rlo|25 + local.get $rhi|24 + f64.const 1.4426950407214463 + f64.mul + local.set $t1 + local.get $rlo|25 + f64.const 1.4426950407214463 + f64.mul + local.get $r|23 + f64.const 1.6751713164886512e-10 + f64.mul + f64.add + local.set $t2 + local.get $kd + local.get $logc + f64.add + local.set $t3 + local.get $t3 + local.get $t1 + f64.add + local.set $hi|29 + local.get $t3 + local.get $hi|29 + f64.sub + local.get $t1 + f64.add + local.get $t2 + f64.add + local.set $lo|30 + local.get $r|23 + local.get $r|23 + f64.mul + local.set $r2|31 + f64.const -0.7213475204444882 + local.get $r|23 + f64.const 0.4808983469629985 + f64.mul + f64.add + local.get $r2|31 + f64.const -0.36067375954075914 + local.get $r|23 + f64.const 0.2885390073180969 + f64.mul + f64.add + f64.mul + f64.add + local.get $r2|31 + local.get $r2|31 + f64.mul + f64.const -0.2404693555628422 + local.get $r|23 + f64.const 0.2061202382173603 + f64.mul + f64.add + f64.mul + f64.add + local.set $p|32 + local.get $lo|30 + local.get $r2|31 + local.get $p|32 + f64.mul + f64.add + local.get $hi|29 + f64.add + br $~lib/util/math/log2_lut|inlined.0 + end + return + ) + (func $std/math/test_log2 (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.log2 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.log2 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.log2 (param $x f32) (result f32) + (local $x|1 f32) + (local $ux i32) + (local $tmp i32) + (local $i i32) + (local $top i32) + (local $iz i32) + (local $k i32) + (local $invc f64) + (local $logc f64) + (local $z f64) + (local $r f64) + (local $y0 f64) + (local $y f64) + (local $p f64) + (local $r2 f64) + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $~lib/util/math/log2f_lut|inlined.0 (result f32) + local.get $x + local.set $x|1 + local.get $x|1 + i32.reinterpret_f32 + local.set $ux + local.get $ux + i32.const 8388608 + i32.sub + i32.const 2139095040 + i32.const 8388608 + i32.sub + i32.ge_u + if + local.get $ux + i32.const 2 + i32.mul + i32.const 0 + i32.eq + if + f32.const inf + f32.neg + br $~lib/util/math/log2f_lut|inlined.0 + end + local.get $ux + i32.const 2139095040 + i32.eq + if + local.get $x|1 + br $~lib/util/math/log2f_lut|inlined.0 + end + local.get $ux + i32.const 31 + i32.shr_u + if (result i32) + i32.const 1 + else + local.get $ux + i32.const 2 + i32.mul + i32.const -16777216 + i32.ge_u + end + if + local.get $x|1 + local.get $x|1 + f32.sub + local.get $x|1 + local.get $x|1 + f32.sub + f32.div + br $~lib/util/math/log2f_lut|inlined.0 + end + local.get $x|1 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + local.set $ux + local.get $ux + i32.const 23 + i32.const 23 + i32.shl + i32.sub + local.set $ux + end + local.get $ux + i32.const 1060306944 + i32.sub + local.set $tmp + local.get $tmp + i32.const 23 + i32.const 4 + i32.sub + i32.shr_u + i32.const 15 + i32.and + local.set $i + local.get $tmp + i32.const -8388608 + i32.and + local.set $top + local.get $ux + local.get $top + i32.sub + local.set $iz + local.get $tmp + i32.const 23 + i32.shr_s + local.set $k + i32.const 8992 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load + local.set $invc + i32.const 8992 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=8 + local.set $logc + local.get $iz + f32.reinterpret_i32 + f64.promote_f32 + local.set $z + local.get $z + local.get $invc + f64.mul + f64.const 1 + f64.sub + local.set $r + local.get $logc + local.get $k + f64.convert_i32_s + f64.add + local.set $y0 + f64.const 0.4811247078767291 + local.get $r + f64.mul + f64.const -0.7213476299867769 + f64.add + local.set $y + f64.const 1.4426950186867042 + local.get $r + f64.mul + local.get $y0 + f64.add + local.set $p + local.get $r + local.get $r + f64.mul + local.set $r2 + local.get $y + f64.const -0.36051725506874704 + local.get $r2 + f64.mul + f64.add + local.set $y + local.get $y + local.get $r2 + f64.mul + local.get $p + f64.add + local.set $y + local.get $y + f32.demote_f64 + br $~lib/util/math/log2f_lut|inlined.0 + end + return + ) + (func $std/math/test_log2f (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.log2 + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $std/math/test_max (param $left f64) (param $right f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + (local $value1 f64) + (local $value2 f64) + block $~lib/math/NativeMath.max|inlined.0 (result f64) + local.get $left + local.set $value1 + local.get $right + local.set $value2 + local.get $value1 + local.get $value2 + f64.max + br $~lib/math/NativeMath.max|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $left + local.get $right + call $~lib/bindings/dom/Math.max + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $std/math/test_maxf (param $left f32) (param $right f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + (local $value1 f32) + (local $value2 f32) + block $~lib/math/NativeMathf.max|inlined.0 (result f32) + local.get $left + local.set $value1 + local.get $right + local.set $value2 + local.get $value1 + local.get $value2 + f32.max + br $~lib/math/NativeMathf.max|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $std/math/test_min (param $left f64) (param $right f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + (local $value1 f64) + (local $value2 f64) + block $~lib/math/NativeMath.min|inlined.0 (result f64) + local.get $left + local.set $value1 + local.get $right + local.set $value2 + local.get $value1 + local.get $value2 + f64.min + br $~lib/math/NativeMath.min|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $left + local.get $right + call $~lib/bindings/dom/Math.min + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $std/math/test_minf (param $left f32) (param $right f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + (local $value1 f32) + (local $value2 f32) + block $~lib/math/NativeMathf.min|inlined.0 (result f32) + local.get $left + local.set $value1 + local.get $right + local.set $value2 + local.get $value1 + local.get $value2 + f32.min + br $~lib/math/NativeMathf.min|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.mod (param $x f64) (param $y f64) (result f64) + (local $ux i64) + (local $uy i64) + (local $ex i64) + (local $ey i64) + (local $sx i64) + (local $uy1 i64) + (local $m f64) + (local $ux1 i64) + (local $shift i64) + local.get $y + f64.abs + f64.const 1 + f64.eq + if + local.get $x + local.get $x + f64.trunc + f64.sub + local.get $x + f64.copysign + return + end + local.get $x + i64.reinterpret_f64 + local.set $ux + local.get $y + i64.reinterpret_f64 + local.set $uy + local.get $ux + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $ex + local.get $uy + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $ey + local.get $ux + i64.const 63 + i64.shr_u + local.set $sx + local.get $uy + i64.const 1 + i64.shl + local.set $uy1 + local.get $uy1 + i64.const 0 + i64.eq + if (result i32) + i32.const 1 + else + local.get $ex + i64.const 2047 + i64.eq + end + if (result i32) + i32.const 1 + else + local.get $y + local.get $y + f64.ne + end + if + local.get $x + local.get $y + f64.mul + local.set $m + local.get $m + local.get $m + f64.div + return + end + local.get $ux + i64.const 1 + i64.shl + local.set $ux1 + local.get $ux1 + local.get $uy1 + i64.le_u + if + local.get $x + local.get $ux1 + local.get $uy1 + i64.ne + f64.convert_i32_u + f64.mul + return + end + local.get $ex + i64.const 0 + i64.ne + i32.eqz + if + local.get $ex + local.get $ux + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $ex + local.get $ux + i64.const 1 + local.get $ex + i64.sub + i64.shl + local.set $ux + else + local.get $ux + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $ux + local.get $ux + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $ux + end + local.get $ey + i64.const 0 + i64.ne + i32.eqz + if + local.get $ey + local.get $uy + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $ey + local.get $uy + i64.const 1 + local.get $ey + i64.sub + i64.shl + local.set $uy + else + local.get $uy + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $uy + local.get $uy + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $uy + end + loop $while-continue|0 + local.get $ex + local.get $ey + i64.gt_s + if + local.get $ux + local.get $uy + i64.ge_u + if + local.get $ux + local.get $uy + i64.eq + if + f64.const 0 + local.get $x + f64.mul + return + end + local.get $ux + local.get $uy + i64.sub + local.set $ux + end + local.get $ux + i64.const 1 + i64.shl + local.set $ux + local.get $ex + i64.const 1 + i64.sub + local.set $ex + br $while-continue|0 + end + end + local.get $ux + local.get $uy + i64.ge_u + if + local.get $ux + local.get $uy + i64.eq + if + f64.const 0 + local.get $x + f64.mul + return + end + local.get $ux + local.get $uy + i64.sub + local.set $ux + end + local.get $ux + i64.const 11 + i64.shl + i64.clz + local.set $shift + local.get $ex + local.get $shift + i64.sub + local.set $ex + local.get $ux + local.get $shift + i64.shl + local.set $ux + local.get $ex + i64.const 0 + i64.gt_s + if + local.get $ux + i64.const 1 + i64.const 52 + i64.shl + i64.sub + local.set $ux + local.get $ux + local.get $ex + i64.const 52 + i64.shl + i64.or + local.set $ux + else + local.get $ux + i64.const 0 + local.get $ex + i64.sub + i64.const 1 + i64.add + i64.shr_u + local.set $ux + end + local.get $ux + local.get $sx + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + return + ) + (func $std/math/test_mod (param $left f64) (param $right f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $left + local.get $right + call $~lib/math/NativeMath.mod + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $left + local.get $right + call $std/math/mod + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.mod (param $x f32) (param $y f32) (result f32) + (local $ux i32) + (local $uy i32) + (local $ex i32) + (local $ey i32) + (local $sm i32) + (local $uy1 i32) + (local $m f32) + (local $ux1 i32) + (local $shift i32) + local.get $y + f32.abs + f32.const 1 + f32.eq + if + local.get $x + local.get $x + f32.trunc + f32.sub + local.get $x + f32.copysign + return + end + local.get $x + i32.reinterpret_f32 + local.set $ux + local.get $y + i32.reinterpret_f32 + local.set $uy + local.get $ux + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $ex + local.get $uy + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $ey + local.get $ux + i32.const -2147483648 + i32.and + local.set $sm + local.get $uy + i32.const 1 + i32.shl + local.set $uy1 + local.get $uy1 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $ex + i32.const 255 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $y + local.get $y + f32.ne + end + if + local.get $x + local.get $y + f32.mul + local.set $m + local.get $m + local.get $m + f32.div + return + end + local.get $ux + i32.const 1 + i32.shl + local.set $ux1 + local.get $ux1 + local.get $uy1 + i32.le_u + if + local.get $x + local.get $ux1 + local.get $uy1 + i32.ne + f32.convert_i32_u + f32.mul + return + end + local.get $ex + i32.eqz + if + local.get $ex + local.get $ux + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $ex + local.get $ux + i32.const 1 + local.get $ex + i32.sub + i32.shl + local.set $ux + else + local.get $ux + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $ux + local.get $ux + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $ux + end + local.get $ey + i32.eqz + if + local.get $ey + local.get $uy + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $ey + local.get $uy + i32.const 1 + local.get $ey + i32.sub + i32.shl + local.set $uy + else + local.get $uy + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $uy + local.get $uy + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $uy + end + loop $while-continue|0 + local.get $ex + local.get $ey + i32.gt_s + if + local.get $ux + local.get $uy + i32.ge_u + if + local.get $ux + local.get $uy + i32.eq + if + f32.const 0 + local.get $x + f32.mul + return + end + local.get $ux + local.get $uy + i32.sub + local.set $ux + end + local.get $ux + i32.const 1 + i32.shl + local.set $ux + local.get $ex + i32.const 1 + i32.sub + local.set $ex + br $while-continue|0 + end + end + local.get $ux + local.get $uy + i32.ge_u + if + local.get $ux + local.get $uy + i32.eq + if + f32.const 0 + local.get $x + f32.mul + return + end + local.get $ux + local.get $uy + i32.sub + local.set $ux + end + local.get $ux + i32.const 8 + i32.shl + i32.clz + local.set $shift + local.get $ex + local.get $shift + i32.sub + local.set $ex + local.get $ux + local.get $shift + i32.shl + local.set $ux + local.get $ex + i32.const 0 + i32.gt_s + if + local.get $ux + i32.const 1 + i32.const 23 + i32.shl + i32.sub + local.set $ux + local.get $ux + local.get $ex + i32.const 23 + i32.shl + i32.or + local.set $ux + else + local.get $ux + i32.const 0 + local.get $ex + i32.sub + i32.const 1 + i32.add + i32.shr_u + local.set $ux + end + local.get $ux + local.get $sm + i32.or + f32.reinterpret_i32 + return + ) + (func $std/math/test_modf (param $left f32) (param $right f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $left + local.get $right + call $~lib/math/NativeMathf.mod + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.pow (param $x f64) (param $y f64) (result f64) + (local $x|2 f64) + (local $y|3 f64) + (local $sign_bias i32) + (local $ix i64) + (local $iy i64) + (local $topx i64) + (local $topy i64) + (local $u i64) + (local $u|10 i64) + (local $x2 f64) + (local $iy|12 i64) + (local $e i64) + (local $iy|14 i64) + (local $e|15 i64) + (local $yint i32) + (local $ix|17 i64) + (local $tmp i64) + (local $i i32) + (local $k i64) + (local $iz i64) + (local $z f64) + (local $kd f64) + (local $invc f64) + (local $logc f64) + (local $logctail f64) + (local $zhi f64) + (local $zlo f64) + (local $rhi f64) + (local $rlo f64) + (local $r f64) + (local $t1 f64) + (local $t2 f64) + (local $lo1 f64) + (local $lo2 f64) + (local $ar f64) + (local $ar2 f64) + (local $ar3 f64) + (local $arhi f64) + (local $arhi2 f64) + (local $hi f64) + (local $lo3 f64) + (local $lo4 f64) + (local $p f64) + (local $lo f64) + (local $y|46 f64) + (local $hi|47 f64) + (local $lo|48 f64) + (local $ehi f64) + (local $elo f64) + (local $yhi f64) + (local $ylo f64) + (local $lhi f64) + (local $llo f64) + (local $x|55 f64) + (local $xtail f64) + (local $sign_bias|57 i32) + (local $abstop i32) + (local $ki i64) + (local $top i64) + (local $sbits i64) + (local $idx i32) + (local $kd|63 f64) + (local $z|64 f64) + (local $r|65 f64) + (local $r2 f64) + (local $scale f64) + (local $tail f64) + (local $tmp|69 f64) + (local $ux i64) + (local $sign i32) + (local $sign|72 i32) + (local $y|73 f64) + (local $sign|74 i32) + (local $sign|75 i32) + (local $y|76 f64) + (local $tmp|77 f64) + (local $sbits|78 i64) + (local $ki|79 i64) + (local $scale|80 f64) + (local $y|81 f64) + (local $one f64) + (local $lo|83 f64) + (local $hi|84 f64) + local.get $y + f64.abs + f64.const 2 + f64.le + if + local.get $y + f64.const 2 + f64.eq + if + local.get $x + local.get $x + f64.mul + return + end + local.get $y + f64.const 0.5 + f64.eq + if + local.get $x + f64.sqrt + f64.abs + f64.const inf + local.get $x + f64.const inf + f64.neg + f64.ne + select + return + end + local.get $y + f64.const -1 + f64.eq + if + f64.const 1 + local.get $x + f64.div + return + end + local.get $y + f64.const 1 + f64.eq + if + local.get $x + return + end + local.get $y + f64.const 0 + f64.eq + if + f64.const 1 + return + end + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $~lib/util/math/pow_lut|inlined.0 (result f64) + local.get $x + local.set $x|2 + local.get $y + local.set $y|3 + i32.const 0 + local.set $sign_bias + local.get $x|2 + i64.reinterpret_f64 + local.set $ix + local.get $y|3 + i64.reinterpret_f64 + local.set $iy + local.get $ix + i64.const 52 + i64.shr_u + local.set $topx + local.get $iy + i64.const 52 + i64.shr_u + local.set $topy + local.get $topx + i64.const 1 + i64.sub + i64.const 2047 + i64.const 1 + i64.sub + i64.ge_u + if (result i32) + i32.const 1 + else + local.get $topy + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 1086 + i64.const 958 + i64.sub + i64.ge_u + end + if + block $~lib/util/math/zeroinfnan|inlined.0 (result i32) + local.get $iy + local.set $u + local.get $u + i64.const 1 + i64.shl + i64.const 1 + i64.sub + i64.const -9007199254740992 + i64.const 1 + i64.sub + i64.ge_u + br $~lib/util/math/zeroinfnan|inlined.0 + end + if + local.get $iy + i64.const 1 + i64.shl + i64.const 0 + i64.eq + if + f64.const 1 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 4607182418800017408 + i64.eq + if + f64.const nan:0x8000000000000 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 1 + i64.shl + i64.const -9007199254740992 + i64.gt_u + if (result i32) + i32.const 1 + else + local.get $iy + i64.const 1 + i64.shl + i64.const -9007199254740992 + i64.gt_u + end + if + local.get $x|2 + local.get $y|3 + f64.add + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 1 + i64.shl + i64.const 9214364837600034816 + i64.eq + if + f64.const nan:0x8000000000000 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 1 + i64.shl + i64.const 9214364837600034816 + i64.lt_u + local.get $iy + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + i32.eqz + i32.eq + if + f64.const 0 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $y|3 + local.get $y|3 + f64.mul + br $~lib/util/math/pow_lut|inlined.0 + end + block $~lib/util/math/zeroinfnan|inlined.1 (result i32) + local.get $ix + local.set $u|10 + local.get $u|10 + i64.const 1 + i64.shl + i64.const 1 + i64.sub + i64.const -9007199254740992 + i64.const 1 + i64.sub + i64.ge_u + br $~lib/util/math/zeroinfnan|inlined.1 + end + if + local.get $x|2 + local.get $x|2 + f64.mul + local.set $x2 + local.get $ix + i64.const 63 + i64.shr_u + i32.wrap_i64 + if (result i32) + block $~lib/util/math/checkint|inlined.0 (result i32) + local.get $iy + local.set $iy|12 + local.get $iy|12 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $e + local.get $e + i64.const 1023 + i64.lt_u + if + i32.const 0 + br $~lib/util/math/checkint|inlined.0 + end + local.get $e + i64.const 1023 + i64.const 52 + i64.add + i64.gt_u + if + i32.const 2 + br $~lib/util/math/checkint|inlined.0 + end + i64.const 1 + i64.const 1023 + i64.const 52 + i64.add + local.get $e + i64.sub + i64.shl + local.set $e + local.get $iy|12 + local.get $e + i64.const 1 + i64.sub + i64.and + i64.const 0 + i64.ne + if + i32.const 0 + br $~lib/util/math/checkint|inlined.0 + end + local.get $iy|12 + local.get $e + i64.and + i64.const 0 + i64.ne + if + i32.const 1 + br $~lib/util/math/checkint|inlined.0 + end + i32.const 2 + br $~lib/util/math/checkint|inlined.0 + end + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $x2 + f64.neg + local.set $x2 + end + local.get $iy + i64.const 0 + i64.lt_s + if (result f64) + f64.const 1 + local.get $x2 + f64.div + else + local.get $x2 + end + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 0 + i64.lt_s + if + block $~lib/util/math/checkint|inlined.1 (result i32) + local.get $iy + local.set $iy|14 + local.get $iy|14 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $e|15 + local.get $e|15 + i64.const 1023 + i64.lt_u + if + i32.const 0 + br $~lib/util/math/checkint|inlined.1 + end + local.get $e|15 + i64.const 1023 + i64.const 52 + i64.add + i64.gt_u + if + i32.const 2 + br $~lib/util/math/checkint|inlined.1 + end + i64.const 1 + i64.const 1023 + i64.const 52 + i64.add + local.get $e|15 + i64.sub + i64.shl + local.set $e|15 + local.get $iy|14 + local.get $e|15 + i64.const 1 + i64.sub + i64.and + i64.const 0 + i64.ne + if + i32.const 0 + br $~lib/util/math/checkint|inlined.1 + end + local.get $iy|14 + local.get $e|15 + i64.and + i64.const 0 + i64.ne + if + i32.const 1 + br $~lib/util/math/checkint|inlined.1 + end + i32.const 2 + br $~lib/util/math/checkint|inlined.1 + end + local.set $yint + local.get $yint + i32.const 0 + i32.eq + if + local.get $x|2 + local.get $x|2 + f64.sub + local.get $x|2 + local.get $x|2 + f64.sub + f64.div + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $yint + i32.const 1 + i32.eq + if + i32.const 262144 + local.set $sign_bias + end + local.get $ix + i64.const 9223372036854775807 + i64.and + local.set $ix + local.get $topx + i64.const 2047 + i64.and + local.set $topx + end + local.get $topy + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 1086 + i64.const 958 + i64.sub + i64.ge_u + if + local.get $ix + i64.const 4607182418800017408 + i64.eq + if + f64.const 1 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $topy + i64.const 2047 + i64.and + i64.const 958 + i64.lt_u + if + f64.const 1 + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $ix + i64.const 4607182418800017408 + i64.gt_u + local.get $topy + i64.const 2048 + i64.lt_u + i32.eq + if (result f64) + f64.const inf + else + f64.const 0 + end + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $topx + i64.const 0 + i64.eq + if + local.get $x|2 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + local.set $ix + local.get $ix + i64.const 9223372036854775807 + i64.and + local.set $ix + local.get $ix + i64.const 52 + i64.const 52 + i64.shl + i64.sub + local.set $ix + end + end + block $~lib/util/math/log_inline|inlined.0 (result f64) + local.get $ix + local.set $ix|17 + local.get $ix|17 + i64.const 4604531861337669632 + i64.sub + local.set $tmp + local.get $tmp + i64.const 52 + i32.const 7 + i64.extend_i32_s + i64.sub + i64.shr_u + i32.const 127 + i64.extend_i32_s + i64.and + i32.wrap_i64 + local.set $i + local.get $tmp + i64.const 52 + i64.shr_s + local.set $k + local.get $ix|17 + local.get $tmp + i64.const 4095 + i64.const 52 + i64.shl + i64.and + i64.sub + local.set $iz + local.get $iz + f64.reinterpret_i64 + local.set $z + local.get $k + f64.convert_i64_s + local.set $kd + i32.const 9248 + local.get $i + i32.const 2 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load + local.set $invc + i32.const 9248 + local.get $i + i32.const 2 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=16 + local.set $logc + i32.const 9248 + local.get $i + i32.const 2 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=24 + local.set $logctail + local.get $iz + i64.const 2147483648 + i64.add + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.set $zhi + local.get $z + local.get $zhi + f64.sub + local.set $zlo + local.get $zhi + local.get $invc + f64.mul + f64.const 1 + f64.sub + local.set $rhi + local.get $zlo + local.get $invc + f64.mul + local.set $rlo + local.get $rhi + local.get $rlo + f64.add + local.set $r + local.get $kd + f64.const 0.6931471805598903 + f64.mul + local.get $logc + f64.add + local.set $t1 + local.get $t1 + local.get $r + f64.add + local.set $t2 + local.get $kd + f64.const 5.497923018708371e-14 + f64.mul + local.get $logctail + f64.add + local.set $lo1 + local.get $t1 + local.get $t2 + f64.sub + local.get $r + f64.add + local.set $lo2 + f64.const -0.5 + local.get $r + f64.mul + local.set $ar + local.get $r + local.get $ar + f64.mul + local.set $ar2 + local.get $r + local.get $ar2 + f64.mul + local.set $ar3 + f64.const -0.5 + local.get $rhi + f64.mul + local.set $arhi + local.get $rhi + local.get $arhi + f64.mul + local.set $arhi2 + local.get $t2 + local.get $arhi2 + f64.add + local.set $hi + local.get $rlo + local.get $ar + local.get $arhi + f64.add + f64.mul + local.set $lo3 + local.get $t2 + local.get $hi + f64.sub + local.get $arhi2 + f64.add + local.set $lo4 + local.get $ar3 + f64.const -0.6666666666666679 + local.get $r + f64.const 0.5000000000000007 + f64.mul + f64.add + local.get $ar2 + f64.const 0.7999999995323976 + local.get $r + f64.const -0.6666666663487739 + f64.mul + f64.add + local.get $ar2 + f64.const -1.142909628459501 + local.get $r + f64.const 1.0000415263675542 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $p + local.get $lo1 + local.get $lo2 + f64.add + local.get $lo3 + f64.add + local.get $lo4 + f64.add + local.get $p + f64.add + local.set $lo + local.get $hi + local.get $lo + f64.add + local.set $y|46 + local.get $hi + local.get $y|46 + f64.sub + local.get $lo + f64.add + global.set $~lib/util/math/log_tail + local.get $y|46 + br $~lib/util/math/log_inline|inlined.0 + end + local.set $hi|47 + global.get $~lib/util/math/log_tail + local.set $lo|48 + local.get $iy + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.set $yhi + local.get $y|3 + local.get $yhi + f64.sub + local.set $ylo + local.get $hi|47 + i64.reinterpret_f64 + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.set $lhi + local.get $hi|47 + local.get $lhi + f64.sub + local.get $lo|48 + f64.add + local.set $llo + local.get $yhi + local.get $lhi + f64.mul + local.set $ehi + local.get $ylo + local.get $lhi + f64.mul + local.get $y|3 + local.get $llo + f64.mul + f64.add + local.set $elo + block $~lib/util/math/exp_inline|inlined.0 (result f64) + local.get $ehi + local.set $x|55 + local.get $elo + local.set $xtail + local.get $sign_bias + local.set $sign_bias|57 + local.get $x|55 + i64.reinterpret_f64 + local.set $ux + local.get $ux + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.set $abstop + local.get $abstop + i32.const 969 + i32.sub + i32.const 63 + i32.ge_u + if + local.get $abstop + i32.const 969 + i32.sub + i32.const -2147483648 + i32.ge_u + if + f64.const -1 + f64.const 1 + local.get $sign_bias|57 + select + br $~lib/util/math/exp_inline|inlined.0 + end + local.get $abstop + i32.const 1033 + i32.ge_u + if + local.get $ux + i64.const 0 + i64.lt_s + if (result f64) + block $~lib/util/math/uflow|inlined.0 (result f64) + local.get $sign_bias|57 + local.set $sign + block $~lib/util/math/xflow|inlined.0 (result f64) + local.get $sign + local.set $sign|72 + i64.const 1152921504606846976 + f64.reinterpret_i64 + local.set $y|73 + local.get $y|73 + f64.neg + local.get $y|73 + local.get $sign|72 + select + local.get $y|73 + f64.mul + br $~lib/util/math/xflow|inlined.0 + end + br $~lib/util/math/uflow|inlined.0 + end + else + block $~lib/util/math/oflow|inlined.0 (result f64) + local.get $sign_bias|57 + local.set $sign|74 + block $~lib/util/math/xflow|inlined.1 (result f64) + local.get $sign|74 + local.set $sign|75 + i64.const 8070450532247928832 + f64.reinterpret_i64 + local.set $y|76 + local.get $y|76 + f64.neg + local.get $y|76 + local.get $sign|75 + select + local.get $y|76 + f64.mul + br $~lib/util/math/xflow|inlined.1 + end + br $~lib/util/math/oflow|inlined.0 + end + end + br $~lib/util/math/exp_inline|inlined.0 + end + i32.const 0 + local.set $abstop + end + f64.const 184.6649652337873 + local.get $x|55 + f64.mul + local.set $z|64 + local.get $z|64 + f64.const 6755399441055744 + f64.add + local.set $kd|63 + local.get $kd|63 + i64.reinterpret_f64 + local.set $ki + local.get $kd|63 + f64.const 6755399441055744 + f64.sub + local.set $kd|63 + local.get $x|55 + local.get $kd|63 + f64.const -0.005415212348111709 + f64.mul + f64.add + local.get $kd|63 + f64.const -1.2864023111638346e-14 + f64.mul + f64.add + local.set $r|65 + local.get $r|65 + local.get $xtail + f64.add + local.set $r|65 + local.get $ki + i32.const 127 + i64.extend_i32_s + i64.and + i64.const 1 + i64.shl + i32.wrap_i64 + local.set $idx + local.get $ki + local.get $sign_bias|57 + i64.extend_i32_u + i64.add + i64.const 52 + i32.const 7 + i64.extend_i32_s + i64.sub + i64.shl + local.set $top + i32.const 4640 + local.get $idx + i32.const 3 + i32.shl + i32.add + i64.load + f64.reinterpret_i64 + local.set $tail + i32.const 4640 + local.get $idx + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $top + i64.add + local.set $sbits + local.get $r|65 + local.get $r|65 + f64.mul + local.set $r2 + local.get $tail + local.get $r|65 + f64.add + local.get $r2 + f64.const 0.49999999999996786 + local.get $r|65 + f64.const 0.16666666666665886 + f64.mul + f64.add + f64.mul + f64.add + local.get $r2 + local.get $r2 + f64.mul + f64.const 0.0416666808410674 + local.get $r|65 + f64.const 0.008333335853059549 + f64.mul + f64.add + f64.mul + f64.add + local.set $tmp|69 + local.get $abstop + i32.const 0 + i32.eq + if + block $~lib/util/math/specialcase|inlined.1 (result f64) + local.get $tmp|69 + local.set $tmp|77 + local.get $sbits + local.set $sbits|78 + local.get $ki + local.set $ki|79 + local.get $ki|79 + i64.const 2147483648 + i64.and + i64.const 0 + i64.ne + i32.eqz + if + local.get $sbits|78 + i64.const 1009 + i64.const 52 + i64.shl + i64.sub + local.set $sbits|78 + local.get $sbits|78 + f64.reinterpret_i64 + local.set $scale|80 + f64.const 5486124068793688683255936e279 + local.get $scale|80 + local.get $scale|80 + local.get $tmp|77 + f64.mul + f64.add + f64.mul + br $~lib/util/math/specialcase|inlined.1 + end + local.get $sbits|78 + i64.const 1022 + i64.const 52 + i64.shl + i64.add + local.set $sbits|78 + local.get $sbits|78 + f64.reinterpret_i64 + local.set $scale|80 + local.get $scale|80 + local.get $scale|80 + local.get $tmp|77 + f64.mul + f64.add + local.set $y|81 + local.get $y|81 + f64.abs + f64.const 1 + f64.lt + if + f64.const 1 + local.get $y|81 + f64.copysign + local.set $one + local.get $scale|80 + local.get $y|81 + f64.sub + local.get $scale|80 + local.get $tmp|77 + f64.mul + f64.add + local.set $lo|83 + local.get $one + local.get $y|81 + f64.add + local.set $hi|84 + local.get $one + local.get $hi|84 + f64.sub + local.get $y|81 + f64.add + local.get $lo|83 + f64.add + local.set $lo|83 + local.get $hi|84 + local.get $lo|83 + f64.add + local.get $one + f64.sub + local.set $y|81 + local.get $y|81 + f64.const 0 + f64.eq + if + local.get $sbits|78 + i64.const -9223372036854775808 + i64.and + f64.reinterpret_i64 + local.set $y|81 + end + end + local.get $y|81 + f64.const 2.2250738585072014e-308 + f64.mul + br $~lib/util/math/specialcase|inlined.1 + end + br $~lib/util/math/exp_inline|inlined.0 + end + local.get $sbits + f64.reinterpret_i64 + local.set $scale + local.get $scale + local.get $scale + local.get $tmp|69 + f64.mul + f64.add + br $~lib/util/math/exp_inline|inlined.0 + end + br $~lib/util/math/pow_lut|inlined.0 + end + return + ) + (func $std/math/test_pow (param $left f64) (param $right f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $left + local.get $right + call $~lib/math/NativeMath.pow + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $left + local.get $right + call $~lib/bindings/dom/Math.pow + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/object/Object.is (param $x f64) (param $y f64) (result i32) + i32.const 1 + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $x + local.get $x + f64.ne + local.get $y + local.get $y + f64.ne + i32.and + local.get $x + i64.reinterpret_f64 + local.get $y + i64.reinterpret_f64 + i64.eq + i32.or + return + ) + (func $~lib/math/NativeMathf.pow (param $x f32) (param $y f32) (result f32) + (local $x|2 f32) + (local $y|3 f32) + (local $signBias i32) + (local $ix i32) + (local $iy i32) + (local $ny i32) + (local $ux i32) + (local $ux|9 i32) + (local $x2 f32) + (local $iy|11 i32) + (local $e i32) + (local $iy|13 i32) + (local $e|14 i32) + (local $yint i32) + (local $ux|16 i32) + (local $tmp i32) + (local $i i32) + (local $top i32) + (local $uz i32) + (local $k i32) + (local $invc f64) + (local $logc f64) + (local $z f64) + (local $r f64) + (local $y0 f64) + (local $y|27 f64) + (local $p f64) + (local $q f64) + (local $logx f64) + (local $ylogx f64) + (local $sign i32) + (local $sign|33 i32) + (local $y|34 f32) + (local $sign|35 i32) + (local $sign|36 i32) + (local $y|37 f32) + (local $xd f64) + (local $signBias|39 i32) + (local $kd f64) + (local $ki i64) + (local $r|42 f64) + (local $t i64) + (local $z|44 f64) + (local $y|45 f64) + (local $s f64) + local.get $y + f32.abs + f32.const 2 + f32.le + if + local.get $y + f32.const 2 + f32.eq + if + local.get $x + local.get $x + f32.mul + return + end + local.get $y + f32.const 0.5 + f32.eq + if + local.get $x + f32.sqrt + f32.abs + f32.const inf + local.get $x + f32.const inf + f32.neg + f32.ne + select + return + end + local.get $y + f32.const -1 + f32.eq + if + f32.const 1 + local.get $x + f32.div + return + end + local.get $y + f32.const 1 + f32.eq + if + local.get $x + return + end + local.get $y + f32.const 0 + f32.eq + if + f32.const 1 + return + end + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $~lib/util/math/powf_lut|inlined.0 (result f32) + local.get $x + local.set $x|2 + local.get $y + local.set $y|3 + i32.const 0 + local.set $signBias + local.get $x|2 + i32.reinterpret_f32 + local.set $ix + local.get $y|3 + i32.reinterpret_f32 + local.set $iy + i32.const 0 + local.set $ny + local.get $ix + i32.const 8388608 + i32.sub + i32.const 2139095040 + i32.const 8388608 + i32.sub + i32.ge_u + block $~lib/util/math/zeroinfnanf|inlined.0 (result i32) + local.get $iy + local.set $ux + local.get $ux + i32.const 1 + i32.shl + i32.const 1 + i32.sub + i32.const 2139095040 + i32.const 1 + i32.shl + i32.const 1 + i32.sub + i32.ge_u + br $~lib/util/math/zeroinfnanf|inlined.0 + end + i32.const 0 + i32.ne + local.tee $ny + i32.or + if + local.get $ny + if + local.get $iy + i32.const 1 + i32.shl + i32.const 0 + i32.eq + if + f32.const 1 + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $ix + i32.const 1065353216 + i32.eq + if + f32.const nan:0x400000 + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $ix + i32.const 1 + i32.shl + i32.const 2139095040 + i32.const 1 + i32.shl + i32.gt_u + if (result i32) + i32.const 1 + else + local.get $iy + i32.const 1 + i32.shl + i32.const 2139095040 + i32.const 1 + i32.shl + i32.gt_u + end + if + local.get $x|2 + local.get $y|3 + f32.add + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $ix + i32.const 1 + i32.shl + i32.const 1065353216 + i32.const 1 + i32.shl + i32.eq + if + f32.const nan:0x400000 + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $ix + i32.const 1 + i32.shl + i32.const 1065353216 + i32.const 1 + i32.shl + i32.lt_u + local.get $iy + i32.const 31 + i32.shr_u + i32.eqz + i32.eq + if + f32.const 0 + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $y|3 + local.get $y|3 + f32.mul + br $~lib/util/math/powf_lut|inlined.0 + end + block $~lib/util/math/zeroinfnanf|inlined.1 (result i32) + local.get $ix + local.set $ux|9 + local.get $ux|9 + i32.const 1 + i32.shl + i32.const 1 + i32.sub + i32.const 2139095040 + i32.const 1 + i32.shl + i32.const 1 + i32.sub + i32.ge_u + br $~lib/util/math/zeroinfnanf|inlined.1 + end + if + local.get $x|2 + local.get $x|2 + f32.mul + local.set $x2 + local.get $ix + i32.const 31 + i32.shr_u + if (result i32) + block $~lib/util/math/checkintf|inlined.0 (result i32) + local.get $iy + local.set $iy|11 + local.get $iy|11 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $e + local.get $e + i32.const 127 + i32.lt_u + if + i32.const 0 + br $~lib/util/math/checkintf|inlined.0 + end + local.get $e + i32.const 127 + i32.const 23 + i32.add + i32.gt_u + if + i32.const 2 + br $~lib/util/math/checkintf|inlined.0 + end + i32.const 1 + i32.const 127 + i32.const 23 + i32.add + local.get $e + i32.sub + i32.shl + local.set $e + local.get $iy|11 + local.get $e + i32.const 1 + i32.sub + i32.and + if + i32.const 0 + br $~lib/util/math/checkintf|inlined.0 + end + local.get $iy|11 + local.get $e + i32.and + if + i32.const 1 + br $~lib/util/math/checkintf|inlined.0 + end + i32.const 2 + br $~lib/util/math/checkintf|inlined.0 + end + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $x2 + f32.neg + local.set $x2 + end + local.get $iy + i32.const 0 + i32.lt_s + if (result f32) + f32.const 1 + local.get $x2 + f32.div + else + local.get $x2 + end + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $ix + i32.const 0 + i32.lt_s + if + block $~lib/util/math/checkintf|inlined.1 (result i32) + local.get $iy + local.set $iy|13 + local.get $iy|13 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $e|14 + local.get $e|14 + i32.const 127 + i32.lt_u + if + i32.const 0 + br $~lib/util/math/checkintf|inlined.1 + end + local.get $e|14 + i32.const 127 + i32.const 23 + i32.add + i32.gt_u + if + i32.const 2 + br $~lib/util/math/checkintf|inlined.1 + end + i32.const 1 + i32.const 127 + i32.const 23 + i32.add + local.get $e|14 + i32.sub + i32.shl + local.set $e|14 + local.get $iy|13 + local.get $e|14 + i32.const 1 + i32.sub + i32.and + if + i32.const 0 + br $~lib/util/math/checkintf|inlined.1 + end + local.get $iy|13 + local.get $e|14 + i32.and + if + i32.const 1 + br $~lib/util/math/checkintf|inlined.1 + end + i32.const 2 + br $~lib/util/math/checkintf|inlined.1 + end + local.set $yint + local.get $yint + i32.const 0 + i32.eq + if + local.get $x|2 + local.get $x|2 + f32.sub + local.get $x|2 + local.get $x|2 + f32.sub + f32.div + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $yint + i32.const 1 + i32.eq + if + i32.const 65536 + local.set $signBias + end + local.get $ix + i32.const 2147483647 + i32.and + local.set $ix + end + local.get $ix + i32.const 8388608 + i32.lt_u + if + local.get $x|2 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + local.set $ix + local.get $ix + i32.const 2147483647 + i32.and + local.set $ix + local.get $ix + i32.const 23 + i32.const 23 + i32.shl + i32.sub + local.set $ix + end + end + block $~lib/util/math/log2f_inline|inlined.0 (result f64) + local.get $ix + local.set $ux|16 + local.get $ux|16 + i32.const 1060306944 + i32.sub + local.set $tmp + local.get $tmp + i32.const 23 + i32.const 4 + i32.sub + i32.shr_u + i32.const 15 + i32.and + local.set $i + local.get $tmp + i32.const -8388608 + i32.and + local.set $top + local.get $ux|16 + local.get $top + i32.sub + local.set $uz + local.get $top + i32.const 23 + i32.shr_s + local.set $k + i32.const 8992 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load + local.set $invc + i32.const 8992 + local.get $i + i32.const 1 + i32.const 3 + i32.add + i32.shl + i32.add + f64.load offset=8 + local.set $logc + local.get $uz + f32.reinterpret_i32 + f64.promote_f32 + local.set $z + local.get $z + local.get $invc + f64.mul + f64.const 1 + f64.sub + local.set $r + local.get $logc + local.get $k + f64.convert_i32_s + f64.add + local.set $y0 + f64.const 0.288457581109214 + local.get $r + f64.mul + f64.const -0.36092606229713164 + f64.add + local.set $y|27 + f64.const 0.480898481472577 + local.get $r + f64.mul + f64.const -0.7213474675006291 + f64.add + local.set $p + f64.const 1.4426950408774342 + local.get $r + f64.mul + local.get $y0 + f64.add + local.set $q + local.get $r + local.get $r + f64.mul + local.set $r + local.get $q + local.get $p + local.get $r + f64.mul + f64.add + local.set $q + local.get $y|27 + local.get $r + local.get $r + f64.mul + f64.mul + local.get $q + f64.add + local.set $y|27 + local.get $y|27 + br $~lib/util/math/log2f_inline|inlined.0 + end + local.set $logx + local.get $y|3 + f64.promote_f32 + local.get $logx + f64.mul + local.set $ylogx + local.get $ylogx + i64.reinterpret_f64 + i64.const 47 + i64.shr_u + i64.const 65535 + i64.and + i64.const 32959 + i64.ge_u + if + local.get $ylogx + f64.const 127.99999995700433 + f64.gt + if + block $~lib/util/math/oflowf|inlined.0 (result f32) + local.get $signBias + local.set $sign + block $~lib/util/math/xflowf|inlined.0 (result f32) + local.get $sign + local.set $sign|33 + i32.const 1879048192 + f32.reinterpret_i32 + local.set $y|34 + local.get $y|34 + f32.neg + local.get $y|34 + local.get $sign|33 + select + local.get $y|34 + f32.mul + br $~lib/util/math/xflowf|inlined.0 + end + br $~lib/util/math/oflowf|inlined.0 + end + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $ylogx + f64.const -150 + f64.le + if + block $~lib/util/math/uflowf|inlined.0 (result f32) + local.get $signBias + local.set $sign|35 + block $~lib/util/math/xflowf|inlined.1 (result f32) + local.get $sign|35 + local.set $sign|36 + i32.const 268435456 + f32.reinterpret_i32 + local.set $y|37 + local.get $y|37 + f32.neg + local.get $y|37 + local.get $sign|36 + select + local.get $y|37 + f32.mul + br $~lib/util/math/xflowf|inlined.1 + end + br $~lib/util/math/uflowf|inlined.0 + end + br $~lib/util/math/powf_lut|inlined.0 + end + end + block $~lib/util/math/exp2f_inline|inlined.0 (result f32) + local.get $ylogx + local.set $xd + local.get $signBias + local.set $signBias|39 + local.get $xd + f64.const 211106232532992 + f64.add + local.set $kd + local.get $kd + i64.reinterpret_f64 + local.set $ki + local.get $xd + local.get $kd + f64.const 211106232532992 + f64.sub + f64.sub + local.set $r|42 + i32.const 6688 + local.get $ki + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.add + i64.load + local.set $t + local.get $t + local.get $ki + local.get $signBias|39 + i64.extend_i32_u + i64.add + i64.const 52 + i32.const 5 + i64.extend_i32_s + i64.sub + i64.shl + i64.add + local.set $t + local.get $t + f64.reinterpret_i64 + local.set $s + f64.const 0.05550361559341535 + local.get $r|42 + f64.mul + f64.const 0.2402284522445722 + f64.add + local.set $z|44 + f64.const 0.6931471806916203 + local.get $r|42 + f64.mul + f64.const 1 + f64.add + local.set $y|45 + local.get $y|45 + local.get $z|44 + local.get $r|42 + local.get $r|42 + f64.mul + f64.mul + f64.add + local.set $y|45 + local.get $y|45 + local.get $s + f64.mul + local.set $y|45 + local.get $y|45 + f32.demote_f64 + br $~lib/util/math/exp2f_inline|inlined.0 + end + br $~lib/util/math/powf_lut|inlined.0 + end + return + ) + (func $std/math/test_powf (param $left f32) (param $right f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $left + local.get $right + call $~lib/math/NativeMathf.pow + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/murmurHash3 (param $h i64) (result i64) + local.get $h + local.get $h + i64.const 33 + i64.shr_u + i64.xor + local.set $h + local.get $h + i64.const -49064778989728563 + i64.mul + local.set $h + local.get $h + local.get $h + i64.const 33 + i64.shr_u + i64.xor + local.set $h + local.get $h + i64.const -4265267296055464877 + i64.mul + local.set $h + local.get $h + local.get $h + i64.const 33 + i64.shr_u + i64.xor + local.set $h + local.get $h + return + ) + (func $~lib/math/splitMix32 (param $h i32) (result i32) + local.get $h + i32.const 1831565813 + i32.add + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.get $h + i32.const 1 + i32.or + i32.mul + local.set $h + local.get $h + local.get $h + local.get $h + local.get $h + i32.const 7 + i32.shr_u + i32.xor + local.get $h + i32.const 61 + i32.or + i32.mul + i32.add + i32.xor + local.set $h + local.get $h + local.get $h + i32.const 14 + i32.shr_u + i32.xor + return + ) + (func $~lib/math/NativeMath.seedRandom (param $value i64) + local.get $value + i64.const 0 + i64.eq + if + i64.const -7046029254386353131 + local.set $value + end + local.get $value + call $~lib/math/murmurHash3 + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + call $~lib/math/murmurHash3 + global.set $~lib/math/random_state1_64 + local.get $value + i32.wrap_i64 + call $~lib/math/splitMix32 + global.set $~lib/math/random_state0_32 + global.get $~lib/math/random_state0_32 + call $~lib/math/splitMix32 + global.set $~lib/math/random_state1_32 + i32.const 1 + global.set $~lib/math/random_seeded + ) + (func $~lib/math/NativeMath.random (result f64) + (local $s1 i64) + (local $s0 i64) + (local $r i64) + global.get $~lib/math/random_seeded + i32.eqz + if + call $~lib/builtins/seed + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + end + global.get $~lib/math/random_state0_64 + local.set $s1 + global.get $~lib/math/random_state1_64 + local.set $s0 + local.get $s0 + global.set $~lib/math/random_state0_64 + local.get $s1 + local.get $s1 + i64.const 23 + i64.shl + i64.xor + local.set $s1 + local.get $s1 + local.get $s1 + i64.const 17 + i64.shr_u + i64.xor + local.set $s1 + local.get $s1 + local.get $s0 + i64.xor + local.set $s1 + local.get $s1 + local.get $s0 + i64.const 26 + i64.shr_u + i64.xor + local.set $s1 + local.get $s1 + global.set $~lib/math/random_state1_64 + local.get $s0 + i64.const 12 + i64.shr_u + i64.const 4607182418800017408 + i64.or + local.set $r + local.get $r + f64.reinterpret_i64 + f64.const 1 + f64.sub + return + ) + (func $~lib/math/NativeMathf.random (result f32) + (local $value i64) + (local $s0 i32) + (local $s1 i32) + (local $r i32) + global.get $~lib/math/random_seeded + i32.eqz + if + call $~lib/builtins/seed + i64.reinterpret_f64 + local.set $value + local.get $value + call $~lib/math/NativeMath.seedRandom + end + global.get $~lib/math/random_state0_32 + local.set $s0 + global.get $~lib/math/random_state1_32 + local.set $s1 + local.get $s0 + i32.const -1640531525 + i32.mul + i32.const 5 + i32.rotl + i32.const 5 + i32.mul + local.set $r + local.get $s1 + local.get $s0 + i32.xor + local.set $s1 + local.get $s0 + i32.const 26 + i32.rotl + local.get $s1 + i32.xor + local.get $s1 + i32.const 9 + i32.shl + i32.xor + global.set $~lib/math/random_state0_32 + local.get $s1 + i32.const 13 + i32.rotl + global.set $~lib/math/random_state1_32 + local.get $r + i32.const 9 + i32.shr_u + i32.const 127 + i32.const 23 + i32.shl + i32.or + f32.reinterpret_i32 + f32.const 1 + f32.sub + return + ) + (func $~lib/math/NativeMath.round (param $x f64) (result f64) + (local $roundUp f64) + i32.const 0 + i32.const 0 + i32.gt_s + drop + local.get $x + f64.ceil + local.set $roundUp + local.get $roundUp + local.get $roundUp + f64.const 1 + f64.sub + local.get $roundUp + f64.const 0.5 + f64.sub + local.get $x + f64.le + select + return + ) + (func $std/math/test_round (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.round + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMathf.round (param $x f32) (result f32) + (local $roundUp f32) + i32.const 0 + i32.const 0 + i32.gt_s + drop + local.get $x + f32.ceil + local.set $roundUp + local.get $roundUp + local.get $roundUp + f32.const 1 + f32.sub + local.get $roundUp + f32.const 0.5 + f32.sub + local.get $x + f32.le + select + return + ) + (func $std/math/test_roundf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.round + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.sign (param $x f64) (result f64) + i32.const 0 + i32.const 0 + i32.gt_s + drop + f64.const 1 + f64.const -1 + local.get $x + local.get $x + f64.const 0 + f64.lt + select + local.get $x + f64.const 0 + f64.gt + select + return + ) + (func $std/math/test_sign (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.sign + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.sign + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.sign (param $x f32) (result f32) + i32.const 0 + i32.const 0 + i32.gt_s + drop + f32.const 1 + f32.const -1 + local.get $x + local.get $x + f32.const 0 + f32.lt + select + local.get $x + f32.const 0 + f32.gt + select + return + ) + (func $std/math/test_signf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.sign + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.rem (param $x f64) (param $y f64) (result f64) + (local $ux i64) + (local $uy i64) + (local $ex i64) + (local $ey i64) + (local $m f64) + (local $uxi i64) + (local $q i32) + (local $shift i64) + (local $x2 f64) + local.get $x + i64.reinterpret_f64 + local.set $ux + local.get $y + i64.reinterpret_f64 + local.set $uy + local.get $ux + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $ex + local.get $uy + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $ey + local.get $uy + i64.const 1 + i64.shl + i64.const 0 + i64.eq + if (result i32) + i32.const 1 + else + local.get $ex + i64.const 2047 + i64.eq + end + if (result i32) + i32.const 1 + else + local.get $y + local.get $y + f64.ne + end + if + local.get $x + local.get $y + f64.mul + local.set $m + local.get $m + local.get $m + f64.div + return + end + local.get $ux + i64.const 1 + i64.shl + i64.const 0 + i64.eq + if + local.get $x + return + end + local.get $ux + local.set $uxi + local.get $ex + i64.const 0 + i64.ne + i32.eqz + if + local.get $ex + local.get $uxi + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $ex + local.get $uxi + i64.const 1 + local.get $ex + i64.sub + i64.shl + local.set $uxi + else + local.get $uxi + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $uxi + local.get $uxi + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $uxi + end + local.get $ey + i64.const 0 + i64.ne + i32.eqz + if + local.get $ey + local.get $uy + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $ey + local.get $uy + i64.const 1 + local.get $ey + i64.sub + i64.shl + local.set $uy + else + local.get $uy + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $uy + local.get $uy + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $uy + end + i32.const 0 + local.set $q + block $do-break|0 + loop $do-loop|0 + local.get $ex + local.get $ey + i64.lt_s + if + local.get $ex + i64.const 1 + i64.add + local.get $ey + i64.eq + if + br $do-break|0 + end + local.get $x + return + end + loop $while-continue|1 + local.get $ex + local.get $ey + i64.gt_s + if + local.get $uxi + local.get $uy + i64.ge_u + if + local.get $uxi + local.get $uy + i64.sub + local.set $uxi + local.get $q + i32.const 1 + i32.add + local.set $q + end + local.get $uxi + i64.const 1 + i64.shl + local.set $uxi + local.get $q + i32.const 1 + i32.shl + local.set $q + local.get $ex + i64.const 1 + i64.sub + local.set $ex + br $while-continue|1 + end + end + local.get $uxi + local.get $uy + i64.ge_u + if + local.get $uxi + local.get $uy + i64.sub + local.set $uxi + local.get $q + i32.const 1 + i32.add + local.set $q + end + local.get $uxi + i64.const 0 + i64.eq + if + i64.const -60 + local.set $ex + else + local.get $uxi + i64.const 11 + i64.shl + i64.clz + local.set $shift + local.get $ex + local.get $shift + i64.sub + local.set $ex + local.get $uxi + local.get $shift + i64.shl + local.set $uxi + end + br $do-break|0 + end + unreachable + end + local.get $ex + i64.const 0 + i64.gt_s + if + local.get $uxi + i64.const 1 + i64.const 52 + i64.shl + i64.sub + local.set $uxi + local.get $uxi + local.get $ex + i64.const 52 + i64.shl + i64.or + local.set $uxi + else + local.get $uxi + i64.const 0 + local.get $ex + i64.sub + i64.const 1 + i64.add + i64.shr_u + local.set $uxi + end + local.get $uxi + f64.reinterpret_i64 + local.set $x + local.get $y + f64.abs + local.set $y + local.get $x + local.get $x + f64.add + local.set $x2 + local.get $ex + local.get $ey + i64.eq + if (result i32) + i32.const 1 + else + local.get $ex + i64.const 1 + i64.add + local.get $ey + i64.eq + if (result i32) + local.get $x2 + local.get $y + f64.gt + if (result i32) + i32.const 1 + else + local.get $x2 + local.get $y + f64.eq + if (result i32) + local.get $q + i32.const 1 + i32.and + else + i32.const 0 + end + end + else + i32.const 0 + end + end + if + local.get $x + local.get $y + f64.sub + local.set $x + end + local.get $ux + i64.const 0 + i64.lt_s + if (result f64) + local.get $x + f64.neg + else + local.get $x + end + return + ) + (func $std/math/test_rem (param $left f64) (param $right f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $left + local.get $right + call $~lib/math/NativeMath.rem + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMathf.rem (param $x f32) (param $y f32) (result f32) + (local $ux i32) + (local $uy i32) + (local $ex i32) + (local $ey i32) + (local $uxi i32) + (local $q i32) + (local $shift i32) + (local $x2 f32) + local.get $x + i32.reinterpret_f32 + local.set $ux + local.get $y + i32.reinterpret_f32 + local.set $uy + local.get $ux + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $ex + local.get $uy + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $ey + local.get $ux + local.set $uxi + local.get $uy + i32.const 1 + i32.shl + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $ex + i32.const 255 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $y + local.get $y + f32.ne + end + if + local.get $x + local.get $y + f32.mul + local.get $x + local.get $y + f32.mul + f32.div + return + end + local.get $ux + i32.const 1 + i32.shl + i32.const 0 + i32.eq + if + local.get $x + return + end + local.get $ex + i32.eqz + if + local.get $ex + local.get $uxi + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $ex + local.get $uxi + i32.const 1 + local.get $ex + i32.sub + i32.shl + local.set $uxi + else + local.get $uxi + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $uxi + local.get $uxi + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $uxi + end + local.get $ey + i32.eqz + if + local.get $ey + local.get $uy + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $ey + local.get $uy + i32.const 1 + local.get $ey + i32.sub + i32.shl + local.set $uy + else + local.get $uy + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $uy + local.get $uy + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $uy + end + i32.const 0 + local.set $q + block $do-break|0 + loop $do-loop|0 + local.get $ex + local.get $ey + i32.lt_s + if + local.get $ex + i32.const 1 + i32.add + local.get $ey + i32.eq + if + br $do-break|0 + end + local.get $x + return + end + loop $while-continue|1 + local.get $ex + local.get $ey + i32.gt_s + if + local.get $uxi + local.get $uy + i32.ge_u + if + local.get $uxi + local.get $uy + i32.sub + local.set $uxi + local.get $q + i32.const 1 + i32.add + local.set $q + end + local.get $uxi + i32.const 1 + i32.shl + local.set $uxi + local.get $q + i32.const 1 + i32.shl + local.set $q + local.get $ex + i32.const 1 + i32.sub + local.set $ex + br $while-continue|1 + end + end + local.get $uxi + local.get $uy + i32.ge_u + if + local.get $uxi + local.get $uy + i32.sub + local.set $uxi + local.get $q + i32.const 1 + i32.add + local.set $q + end + local.get $uxi + i32.const 0 + i32.eq + if + i32.const -30 + local.set $ex + else + local.get $uxi + i32.const 8 + i32.shl + i32.clz + local.set $shift + local.get $ex + local.get $shift + i32.sub + local.set $ex + local.get $uxi + local.get $shift + i32.shl + local.set $uxi + end + br $do-break|0 + end + unreachable + end + local.get $ex + i32.const 0 + i32.gt_s + if + local.get $uxi + i32.const 1 + i32.const 23 + i32.shl + i32.sub + local.set $uxi + local.get $uxi + local.get $ex + i32.const 23 + i32.shl + i32.or + local.set $uxi + else + local.get $uxi + i32.const 0 + local.get $ex + i32.sub + i32.const 1 + i32.add + i32.shr_u + local.set $uxi + end + local.get $uxi + f32.reinterpret_i32 + local.set $x + local.get $y + f32.abs + local.set $y + local.get $x + local.get $x + f32.add + local.set $x2 + local.get $ex + local.get $ey + i32.eq + if (result i32) + i32.const 1 + else + local.get $ex + i32.const 1 + i32.add + local.get $ey + i32.eq + if (result i32) + local.get $x2 + local.get $y + f32.gt + if (result i32) + i32.const 1 + else + local.get $x2 + local.get $y + f32.eq + if (result i32) + local.get $q + i32.const 1 + i32.and + else + i32.const 0 + end + end + else + i32.const 0 + end + end + if + local.get $x + local.get $y + f32.sub + local.set $x + end + local.get $ux + i32.const 0 + i32.lt_s + if (result f32) + local.get $x + f32.neg + else + local.get $x + end + return + ) + (func $std/math/test_remf (param $left f32) (param $right f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $left + local.get $right + call $~lib/math/NativeMathf.rem + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.sin (param $x f64) (result f64) + (local $u i64) + (local $ux i32) + (local $sign i32) + (local $x|4 f64) + (local $y f64) + (local $iy i32) + (local $z f64) + (local $w f64) + (local $r f64) + (local $v f64) + (local $x|11 f64) + (local $u|12 i64) + (local $sign|13 i32) + (local $ix i32) + (local $q i32) + (local $z|16 f64) + (local $y0 f64) + (local $y1 f64) + (local $q|19 f64) + (local $r|20 f64) + (local $w|21 f64) + (local $j i32) + (local $y0|23 f64) + (local $hi i32) + (local $i i32) + (local $t f64) + (local $t|27 f64) + (local $y1|28 f64) + (local $q|29 i32) + (local $n i32) + (local $y0|31 f64) + (local $y1|32 f64) + (local $x|33 f64) + (local $y|34 f64) + (local $z|35 f64) + (local $w|36 f64) + (local $r|37 f64) + (local $hz f64) + (local $x|39 f64) + (local $y|40 f64) + (local $iy|41 i32) + (local $z|42 f64) + (local $w|43 f64) + (local $r|44 f64) + (local $v|45 f64) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $ux + local.get $ux + i32.const 31 + i32.shr_u + local.set $sign + local.get $ux + i32.const 2147483647 + i32.and + local.set $ux + local.get $ux + i32.const 1072243195 + i32.le_u + if + local.get $ux + i32.const 1045430272 + i32.lt_u + if + local.get $x + return + end + block $~lib/math/sin_kern|inlined.1 (result f64) + local.get $x + local.set $x|4 + f64.const 0 + local.set $y + i32.const 0 + local.set $iy + local.get $x|4 + local.get $x|4 + f64.mul + local.set $z + local.get $z + local.get $z + f64.mul + local.set $w + f64.const 0.00833333333332249 + local.get $z + f64.const -1.984126982985795e-04 + local.get $z + f64.const 2.7557313707070068e-06 + f64.mul + f64.add + f64.mul + f64.add + local.get $z + local.get $w + f64.mul + f64.const -2.5050760253406863e-08 + local.get $z + f64.const 1.58969099521155e-10 + f64.mul + f64.add + f64.mul + f64.add + local.set $r + local.get $z + local.get $x|4 + f64.mul + local.set $v + local.get $iy + i32.eqz + if + local.get $x|4 + local.get $v + f64.const -0.16666666666666632 + local.get $z + local.get $r + f64.mul + f64.add + f64.mul + f64.add + br $~lib/math/sin_kern|inlined.1 + else + local.get $x|4 + local.get $z + f64.const 0.5 + local.get $y + f64.mul + local.get $v + local.get $r + f64.mul + f64.sub + f64.mul + local.get $y + f64.sub + local.get $v + f64.const -0.16666666666666632 + f64.mul + f64.sub + f64.sub + br $~lib/math/sin_kern|inlined.1 + end + unreachable + end + return + end + local.get $ux + i32.const 2146435072 + i32.ge_u + if + local.get $x + local.get $x + f64.sub + return + end + block $~lib/math/rempio2|inlined.1 (result i32) + local.get $x + local.set $x|11 + local.get $u + local.set $u|12 + local.get $sign + local.set $sign|13 + local.get $u|12 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.set $ix + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $ix + i32.const 1073928572 + i32.lt_u + if + i32.const 1 + local.set $q + local.get $sign|13 + i32.eqz + if + local.get $x|11 + f64.const 1.5707963267341256 + f64.sub + local.set $z|16 + local.get $ix + i32.const 1073291771 + i32.ne + if + local.get $z|16 + f64.const 6.077100506506192e-11 + f64.sub + local.set $y0 + local.get $z|16 + local.get $y0 + f64.sub + f64.const 6.077100506506192e-11 + f64.sub + local.set $y1 + else + local.get $z|16 + f64.const 6.077100506303966e-11 + f64.sub + local.set $z|16 + local.get $z|16 + f64.const 2.0222662487959506e-21 + f64.sub + local.set $y0 + local.get $z|16 + local.get $y0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.sub + local.set $y1 + end + else + local.get $x|11 + f64.const 1.5707963267341256 + f64.add + local.set $z|16 + local.get $ix + i32.const 1073291771 + i32.ne + if + local.get $z|16 + f64.const 6.077100506506192e-11 + f64.add + local.set $y0 + local.get $z|16 + local.get $y0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add + local.set $y1 + else + local.get $z|16 + f64.const 6.077100506303966e-11 + f64.add + local.set $z|16 + local.get $z|16 + f64.const 2.0222662487959506e-21 + f64.add + local.set $y0 + local.get $z|16 + local.get $y0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + local.set $y1 + end + i32.const -1 + local.set $q + end + local.get $y0 + global.set $~lib/math/rempio2_y0 + local.get $y1 + global.set $~lib/math/rempio2_y1 + local.get $q + br $~lib/math/rempio2|inlined.1 + end + local.get $ix + i32.const 1094263291 + i32.lt_u + if + local.get $x|11 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $q|19 + local.get $x|11 + local.get $q|19 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.set $r|20 + local.get $q|19 + f64.const 6.077100506506192e-11 + f64.mul + local.set $w|21 + local.get $ix + i32.const 20 + i32.shr_u + local.set $j + local.get $r|20 + local.get $w|21 + f64.sub + local.set $y0|23 + local.get $y0|23 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hi + local.get $j + local.get $hi + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + local.set $i + local.get $i + i32.const 16 + i32.gt_u + if + local.get $r|20 + local.set $t + local.get $q|19 + f64.const 6.077100506303966e-11 + f64.mul + local.set $w|21 + local.get $t + local.get $w|21 + f64.sub + local.set $r|20 + local.get $q|19 + f64.const 2.0222662487959506e-21 + f64.mul + local.get $t + local.get $r|20 + f64.sub + local.get $w|21 + f64.sub + f64.sub + local.set $w|21 + local.get $r|20 + local.get $w|21 + f64.sub + local.set $y0|23 + local.get $y0|23 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hi + local.get $j + local.get $hi + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + local.set $i + local.get $i + i32.const 49 + i32.gt_u + if + local.get $r|20 + local.set $t|27 + local.get $q|19 + f64.const 2.0222662487111665e-21 + f64.mul + local.set $w|21 + local.get $t|27 + local.get $w|21 + f64.sub + local.set $r|20 + local.get $q|19 + f64.const 8.4784276603689e-32 + f64.mul + local.get $t|27 + local.get $r|20 + f64.sub + local.get $w|21 + f64.sub + f64.sub + local.set $w|21 + local.get $r|20 + local.get $w|21 + f64.sub + local.set $y0|23 + end + end + local.get $r|20 + local.get $y0|23 + f64.sub + local.get $w|21 + f64.sub + local.set $y1|28 + local.get $y0|23 + global.set $~lib/math/rempio2_y0 + local.get $y1|28 + global.set $~lib/math/rempio2_y1 + local.get $q|19 + i32.trunc_sat_f64_s + br $~lib/math/rempio2|inlined.1 + end + local.get $x|11 + local.get $u|12 + call $~lib/math/pio2_large_quot + local.set $q|29 + i32.const 0 + local.get $q|29 + i32.sub + local.get $q|29 + local.get $sign|13 + select + br $~lib/math/rempio2|inlined.1 + end + local.set $n + global.get $~lib/math/rempio2_y0 + local.set $y0|31 + global.get $~lib/math/rempio2_y1 + local.set $y1|32 + local.get $n + i32.const 1 + i32.and + if (result f64) + block $~lib/math/cos_kern|inlined.2 (result f64) + local.get $y0|31 + local.set $x|33 + local.get $y1|32 + local.set $y|34 + local.get $x|33 + local.get $x|33 + f64.mul + local.set $z|35 + local.get $z|35 + local.get $z|35 + f64.mul + local.set $w|36 + local.get $z|35 + f64.const 0.0416666666666666 + local.get $z|35 + f64.const -0.001388888888887411 + local.get $z|35 + f64.const 2.480158728947673e-05 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.get $w|36 + local.get $w|36 + f64.mul + f64.const -2.7557314351390663e-07 + local.get $z|35 + f64.const 2.087572321298175e-09 + local.get $z|35 + f64.const -1.1359647557788195e-11 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.set $r|37 + f64.const 0.5 + local.get $z|35 + f64.mul + local.set $hz + f64.const 1 + local.get $hz + f64.sub + local.set $w|36 + local.get $w|36 + f64.const 1 + local.get $w|36 + f64.sub + local.get $hz + f64.sub + local.get $z|35 + local.get $r|37 + f64.mul + local.get $x|33 + local.get $y|34 + f64.mul + f64.sub + f64.add + f64.add + br $~lib/math/cos_kern|inlined.2 + end + else + block $~lib/math/sin_kern|inlined.2 (result f64) + local.get $y0|31 + local.set $x|39 + local.get $y1|32 + local.set $y|40 + i32.const 1 + local.set $iy|41 + local.get $x|39 + local.get $x|39 + f64.mul + local.set $z|42 + local.get $z|42 + local.get $z|42 + f64.mul + local.set $w|43 + f64.const 0.00833333333332249 + local.get $z|42 + f64.const -1.984126982985795e-04 + local.get $z|42 + f64.const 2.7557313707070068e-06 + f64.mul + f64.add + f64.mul + f64.add + local.get $z|42 + local.get $w|43 + f64.mul + f64.const -2.5050760253406863e-08 + local.get $z|42 + f64.const 1.58969099521155e-10 + f64.mul + f64.add + f64.mul + f64.add + local.set $r|44 + local.get $z|42 + local.get $x|39 + f64.mul + local.set $v|45 + local.get $iy|41 + i32.eqz + if + local.get $x|39 + local.get $v|45 + f64.const -0.16666666666666632 + local.get $z|42 + local.get $r|44 + f64.mul + f64.add + f64.mul + f64.add + br $~lib/math/sin_kern|inlined.2 + else + local.get $x|39 + local.get $z|42 + f64.const 0.5 + local.get $y|40 + f64.mul + local.get $v|45 + local.get $r|44 + f64.mul + f64.sub + f64.mul + local.get $y|40 + f64.sub + local.get $v|45 + f64.const -0.16666666666666632 + f64.mul + f64.sub + f64.sub + br $~lib/math/sin_kern|inlined.2 + end + unreachable + end + end + local.set $x + local.get $n + i32.const 2 + i32.and + if (result f64) + local.get $x + f64.neg + else + local.get $x + end + return + ) + (func $std/math/test_sin (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.sin + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.sin + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.sin (param $x f32) (result f32) + (local $ux i32) + (local $sign i32) + (local $x|3 f64) + (local $z f64) + (local $w f64) + (local $r f64) + (local $s f64) + (local $x|8 f64) + (local $z|9 f64) + (local $w|10 f64) + (local $r|11 f64) + (local $x|12 f64) + (local $z|13 f64) + (local $w|14 f64) + (local $r|15 f64) + (local $x|16 f64) + (local $z|17 f64) + (local $w|18 f64) + (local $r|19 f64) + (local $s|20 f64) + (local $x|21 f64) + (local $z|22 f64) + (local $w|23 f64) + (local $r|24 f64) + (local $x|25 f64) + (local $z|26 f64) + (local $w|27 f64) + (local $r|28 f64) + (local $x|29 f64) + (local $z|30 f64) + (local $w|31 f64) + (local $r|32 f64) + (local $s|33 f64) + (local $x|34 f32) + (local $u i32) + (local $sign|36 i32) + (local $q f64) + (local $x|38 f32) + (local $u|39 i32) + (local $offset i32) + (local $shift i64) + (local $tblPtr i32) + (local $b0 i64) + (local $b1 i64) + (local $lo i64) + (local $b2 i64) + (local $hi i64) + (local $mantissa i64) + (local $product i64) + (local $r|50 i64) + (local $q|51 i32) + (local $q|52 i32) + (local $n i32) + (local $y f64) + (local $x|55 f64) + (local $z|56 f64) + (local $w|57 f64) + (local $r|58 f64) + (local $x|59 f64) + (local $z|60 f64) + (local $w|61 f64) + (local $r|62 f64) + (local $s|63 f64) + (local $t f32) + local.get $x + i32.reinterpret_f32 + local.set $ux + local.get $ux + i32.const 31 + i32.shr_u + local.set $sign + local.get $ux + i32.const 2147483647 + i32.and + local.set $ux + local.get $ux + i32.const 1061752794 + i32.le_u + if + local.get $ux + i32.const 964689920 + i32.lt_u + if + local.get $x + return + end + block $~lib/math/sin_kernf|inlined.5 (result f32) + local.get $x + f64.promote_f32 + local.set $x|3 + local.get $x|3 + local.get $x|3 + f64.mul + local.set $z + local.get $z + local.get $z + f64.mul + local.set $w + f64.const -1.9839334836096632e-04 + local.get $z + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $r + local.get $z + local.get $x|3 + f64.mul + local.set $s + local.get $x|3 + local.get $s + f64.const -0.16666666641626524 + local.get $z + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $s + local.get $w + f64.mul + local.get $r + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/sin_kernf|inlined.5 + end + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $ux + i32.const 1081824209 + i32.le_u + if + local.get $ux + i32.const 1075235811 + i32.le_u + if + local.get $sign + if (result f32) + block $~lib/math/cos_kernf|inlined.4 (result f32) + local.get $x + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + local.set $x|8 + local.get $x|8 + local.get $x|8 + f64.mul + local.set $z|9 + local.get $z|9 + local.get $z|9 + f64.mul + local.set $w|10 + f64.const -0.001388676377460993 + local.get $z|9 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $r|11 + f32.const 1 + f64.promote_f32 + local.get $z|9 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $w|10 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $w|10 + local.get $z|9 + f64.mul + local.get $r|11 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/cos_kernf|inlined.4 + end + f32.neg + else + block $~lib/math/cos_kernf|inlined.5 (result f32) + local.get $x + f64.promote_f32 + f64.const 1.5707963267948966 + f64.sub + local.set $x|12 + local.get $x|12 + local.get $x|12 + f64.mul + local.set $z|13 + local.get $z|13 + local.get $z|13 + f64.mul + local.set $w|14 + f64.const -0.001388676377460993 + local.get $z|13 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $r|15 + f32.const 1 + f64.promote_f32 + local.get $z|13 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $w|14 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $w|14 + local.get $z|13 + f64.mul + local.get $r|15 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/cos_kernf|inlined.5 + end + end + return + end + block $~lib/math/sin_kernf|inlined.6 (result f32) + local.get $sign + if (result f64) + local.get $x + f64.promote_f32 + f64.const 3.141592653589793 + f64.add + else + local.get $x + f64.promote_f32 + f64.const 3.141592653589793 + f64.sub + end + f64.neg + local.set $x|16 + local.get $x|16 + local.get $x|16 + f64.mul + local.set $z|17 + local.get $z|17 + local.get $z|17 + f64.mul + local.set $w|18 + f64.const -1.9839334836096632e-04 + local.get $z|17 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $r|19 + local.get $z|17 + local.get $x|16 + f64.mul + local.set $s|20 + local.get $x|16 + local.get $s|20 + f64.const -0.16666666641626524 + local.get $z|17 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $s|20 + local.get $w|18 + f64.mul + local.get $r|19 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/sin_kernf|inlined.6 + end + return + end + local.get $ux + i32.const 1088565717 + i32.le_u + if + local.get $ux + i32.const 1085271519 + i32.le_u + if + local.get $sign + if (result f32) + block $~lib/math/cos_kernf|inlined.6 (result f32) + local.get $x + f64.promote_f32 + f64.const 4.71238898038469 + f64.add + local.set $x|21 + local.get $x|21 + local.get $x|21 + f64.mul + local.set $z|22 + local.get $z|22 + local.get $z|22 + f64.mul + local.set $w|23 + f64.const -0.001388676377460993 + local.get $z|22 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $r|24 + f32.const 1 + f64.promote_f32 + local.get $z|22 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $w|23 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $w|23 + local.get $z|22 + f64.mul + local.get $r|24 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/cos_kernf|inlined.6 + end + else + block $~lib/math/cos_kernf|inlined.7 (result f32) + local.get $x + f64.promote_f32 + f64.const 4.71238898038469 + f64.sub + local.set $x|25 + local.get $x|25 + local.get $x|25 + f64.mul + local.set $z|26 + local.get $z|26 + local.get $z|26 + f64.mul + local.set $w|27 + f64.const -0.001388676377460993 + local.get $z|26 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $r|28 + f32.const 1 + f64.promote_f32 + local.get $z|26 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $w|27 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $w|27 + local.get $z|26 + f64.mul + local.get $r|28 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/cos_kernf|inlined.7 + end + f32.neg + end + return + end + block $~lib/math/sin_kernf|inlined.7 (result f32) + local.get $sign + if (result f64) + local.get $x + f64.promote_f32 + f64.const 6.283185307179586 + f64.add + else + local.get $x + f64.promote_f32 + f64.const 6.283185307179586 + f64.sub + end + local.set $x|29 + local.get $x|29 + local.get $x|29 + f64.mul + local.set $z|30 + local.get $z|30 + local.get $z|30 + f64.mul + local.set $w|31 + f64.const -1.9839334836096632e-04 + local.get $z|30 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $r|32 + local.get $z|30 + local.get $x|29 + f64.mul + local.set $s|33 + local.get $x|29 + local.get $s|33 + f64.const -0.16666666641626524 + local.get $z|30 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $s|33 + local.get $w|31 + f64.mul + local.get $r|32 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/sin_kernf|inlined.7 + end + return + end + local.get $ux + i32.const 2139095040 + i32.ge_u + if + local.get $x + local.get $x + f32.sub + return + end + block $~lib/math/rempio2f|inlined.1 (result i32) + local.get $x + local.set $x|34 + local.get $ux + local.set $u + local.get $sign + local.set $sign|36 + local.get $u + i32.const 1305022427 + i32.lt_u + if + local.get $x|34 + f64.promote_f32 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $q + local.get $x|34 + f64.promote_f32 + local.get $q + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $q + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $q + i32.trunc_sat_f64_s + br $~lib/math/rempio2f|inlined.1 + end + block $~lib/math/pio2f_large_quot|inlined.1 (result i32) + local.get $x|34 + local.set $x|38 + local.get $u + local.set $u|39 + local.get $u|39 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.set $offset + local.get $offset + i32.const 63 + i32.and + i64.extend_i32_s + local.set $shift + i32.const 4608 + local.get $offset + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.add + local.set $tblPtr + local.get $tblPtr + i64.load + local.set $b0 + local.get $tblPtr + i64.load offset=8 + local.set $b1 + local.get $shift + i64.const 32 + i64.gt_u + if + local.get $tblPtr + i64.load offset=16 + local.set $b2 + local.get $b2 + i64.const 96 + local.get $shift + i64.sub + i64.shr_u + local.set $lo + local.get $lo + local.get $b1 + local.get $shift + i64.const 32 + i64.sub + i64.shl + i64.or + local.set $lo + else + local.get $b1 + i64.const 32 + local.get $shift + i64.sub + i64.shr_u + local.set $lo + end + local.get $b1 + i64.const 64 + local.get $shift + i64.sub + i64.shr_u + local.get $b0 + local.get $shift + i64.shl + i64.or + local.set $hi + local.get $u|39 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.set $mantissa + local.get $mantissa + local.get $hi + i64.mul + local.get $mantissa + local.get $lo + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $product + local.get $product + i64.const 2 + i64.shl + local.set $r|50 + local.get $product + i64.const 62 + i64.shr_u + local.get $r|50 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.set $q|51 + f64.const 8.515303950216386e-20 + local.get $x|38 + f64.promote_f32 + f64.copysign + local.get $r|50 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + local.get $q|51 + br $~lib/math/pio2f_large_quot|inlined.1 + end + local.set $q|52 + i32.const 0 + local.get $q|52 + i32.sub + local.get $q|52 + local.get $sign|36 + select + br $~lib/math/rempio2f|inlined.1 + end + local.set $n + global.get $~lib/math/rempio2f_y + local.set $y + local.get $n + i32.const 1 + i32.and + if (result f32) + block $~lib/math/cos_kernf|inlined.8 (result f32) + local.get $y + local.set $x|55 + local.get $x|55 + local.get $x|55 + f64.mul + local.set $z|56 + local.get $z|56 + local.get $z|56 + f64.mul + local.set $w|57 + f64.const -0.001388676377460993 + local.get $z|56 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $r|58 + f32.const 1 + f64.promote_f32 + local.get $z|56 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $w|57 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $w|57 + local.get $z|56 + f64.mul + local.get $r|58 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/cos_kernf|inlined.8 + end + else + block $~lib/math/sin_kernf|inlined.8 (result f32) + local.get $y + local.set $x|59 + local.get $x|59 + local.get $x|59 + f64.mul + local.set $z|60 + local.get $z|60 + local.get $z|60 + f64.mul + local.set $w|61 + f64.const -1.9839334836096632e-04 + local.get $z|60 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $r|62 + local.get $z|60 + local.get $x|59 + f64.mul + local.set $s|63 + local.get $x|59 + local.get $s|63 + f64.const -0.16666666641626524 + local.get $z|60 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $s|63 + local.get $w|61 + f64.mul + local.get $r|62 + f64.mul + f64.add + f32.demote_f64 + br $~lib/math/sin_kernf|inlined.8 + end + end + local.set $t + local.get $n + i32.const 2 + i32.and + if (result f32) + local.get $t + f32.neg + else + local.get $t + end + return + ) + (func $std/math/test_sinf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.sin + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.sinh (param $x f64) (result f64) + (local $u i64) + (local $a f64) + (local $w i32) + (local $h f64) + (local $t f64) + (local $x|6 f64) + (local $sign f64) + (local $scale f64) + local.get $x + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.set $u + local.get $u + f64.reinterpret_i64 + local.set $a + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $w + f64.const 0.5 + local.get $x + f64.copysign + local.set $h + local.get $w + i32.const 1082535490 + i32.lt_u + if + local.get $a + call $~lib/math/NativeMath.expm1 + local.set $t + local.get $w + i32.const 1072693248 + i32.lt_u + if + local.get $w + i32.const 1072693248 + i32.const 26 + i32.const 20 + i32.shl + i32.sub + i32.lt_u + if + local.get $x + return + end + local.get $h + f64.const 2 + local.get $t + f64.mul + local.get $t + local.get $t + f64.mul + local.get $t + f64.const 1 + f64.add + f64.div + f64.sub + f64.mul + return + end + local.get $h + local.get $t + local.get $t + local.get $t + f64.const 1 + f64.add + f64.div + f64.add + f64.mul + return + end + block $~lib/math/expo2|inlined.1 (result f64) + local.get $a + local.set $x|6 + f64.const 2 + local.get $h + f64.mul + local.set $sign + i32.const 1023 + i32.const 2043 + i32.const 2 + i32.div_u + i32.add + i32.const 20 + i32.shl + i64.extend_i32_u + i64.const 32 + i64.shl + f64.reinterpret_i64 + local.set $scale + local.get $x|6 + f64.const 1416.0996898839683 + f64.sub + call $~lib/math/NativeMath.exp + local.get $sign + local.get $scale + f64.mul + f64.mul + local.get $scale + f64.mul + br $~lib/math/expo2|inlined.1 + end + return + ) + (func $std/math/test_sinh (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.sinh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.sinh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.sinh (param $x f32) (result f32) + (local $u i32) + (local $a f32) + (local $h f32) + (local $t f32) + (local $x|5 f32) + (local $sign f32) + (local $scale f32) + local.get $x + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.set $u + local.get $u + f32.reinterpret_i32 + local.set $a + f32.const 0.5 + local.get $x + f32.copysign + local.set $h + local.get $u + i32.const 1118925335 + i32.lt_u + if + local.get $a + call $~lib/math/NativeMathf.expm1 + local.set $t + local.get $u + i32.const 1065353216 + i32.lt_u + if + local.get $u + i32.const 1065353216 + i32.const 12 + i32.const 23 + i32.shl + i32.sub + i32.lt_u + if + local.get $x + return + end + local.get $h + f32.const 2 + local.get $t + f32.mul + local.get $t + local.get $t + f32.mul + local.get $t + f32.const 1 + f32.add + f32.div + f32.sub + f32.mul + return + end + local.get $h + local.get $t + local.get $t + local.get $t + f32.const 1 + f32.add + f32.div + f32.add + f32.mul + return + end + block $~lib/math/expo2f|inlined.1 (result f32) + local.get $a + local.set $x|5 + f32.const 2 + local.get $h + f32.mul + local.set $sign + i32.const 127 + i32.const 235 + i32.const 1 + i32.shr_u + i32.add + i32.const 23 + i32.shl + f32.reinterpret_i32 + local.set $scale + local.get $x|5 + f32.const 162.88958740234375 + f32.sub + call $~lib/math/NativeMathf.exp + local.get $sign + local.get $scale + f32.mul + f32.mul + local.get $scale + f32.mul + br $~lib/math/expo2f|inlined.1 + end + return + ) + (func $std/math/test_sinhf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.sinh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $std/math/test_sqrt (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + (local $x f64) + block $~lib/math/NativeMath.sqrt|inlined.0 (result f64) + local.get $value + local.set $x + local.get $x + f64.sqrt + br $~lib/math/NativeMath.sqrt|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.sqrt + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $std/math/test_sqrtf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + (local $x f32) + block $~lib/math/NativeMathf.sqrt|inlined.0 (result f32) + local.get $value + local.set $x + local.get $x + f32.sqrt + br $~lib/math/NativeMathf.sqrt|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/tan_kern (param $x f64) (param $y f64) (param $iy i32) (result f64) + (local $z f64) + (local $r f64) + (local $v f64) + (local $w f64) + (local $s f64) + (local $hx i32) + (local $ix i32) + (local $big i32) + (local $a f64) + (local $t f64) + local.get $x + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hx + local.get $hx + i32.const 2147483647 + i32.and + local.set $ix + local.get $ix + i32.const 1072010280 + i32.ge_s + local.set $big + local.get $big + if + local.get $hx + i32.const 0 + i32.lt_s + if + local.get $x + f64.neg + local.set $x + local.get $y + f64.neg + local.set $y + end + f64.const 0.7853981633974483 + local.get $x + f64.sub + local.set $z + f64.const 3.061616997868383e-17 + local.get $y + f64.sub + local.set $w + local.get $z + local.get $w + f64.add + local.set $x + f64.const 0 + local.set $y + end + local.get $x + local.get $x + f64.mul + local.set $z + local.get $z + local.get $z + f64.mul + local.set $w + f64.const 0.13333333333320124 + local.get $w + f64.const 0.021869488294859542 + local.get $w + f64.const 3.5920791075913124e-03 + local.get $w + f64.const 5.880412408202641e-04 + local.get $w + f64.const 7.817944429395571e-05 + local.get $w + f64.const -1.8558637485527546e-05 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.set $r + local.get $z + f64.const 0.05396825397622605 + local.get $w + f64.const 0.0088632398235993 + local.get $w + f64.const 1.4562094543252903e-03 + local.get $w + f64.const 2.464631348184699e-04 + local.get $w + f64.const 7.140724913826082e-05 + local.get $w + f64.const 2.590730518636337e-05 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.set $v + local.get $z + local.get $x + f64.mul + local.set $s + local.get $y + local.get $z + local.get $s + local.get $r + local.get $v + f64.add + f64.mul + local.get $y + f64.add + f64.mul + f64.add + local.set $r + local.get $r + f64.const 0.3333333333333341 + local.get $s + f64.mul + f64.add + local.set $r + local.get $x + local.get $r + f64.add + local.set $w + local.get $big + if + local.get $iy + f64.convert_i32_s + local.set $v + f64.const 1 + local.get $hx + i32.const 30 + i32.shr_s + i32.const 2 + i32.and + f64.convert_i32_s + f64.sub + local.get $v + f64.const 2 + local.get $x + local.get $w + local.get $w + f64.mul + local.get $w + local.get $v + f64.add + f64.div + local.get $r + f64.sub + f64.sub + f64.mul + f64.sub + f64.mul + return + end + local.get $iy + i32.const 1 + i32.eq + if + local.get $w + return + end + local.get $w + local.set $z + local.get $z + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.set $z + local.get $r + local.get $z + local.get $x + f64.sub + f64.sub + local.set $v + f64.const 1 + f64.neg + local.get $w + f64.div + local.tee $a + local.set $t + local.get $t + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.set $t + f64.const 1 + local.get $t + local.get $z + f64.mul + f64.add + local.set $s + local.get $t + local.get $a + local.get $s + local.get $t + local.get $v + f64.mul + f64.add + f64.mul + f64.add + return + ) + (func $~lib/math/NativeMath.tan (param $x f64) (result f64) + (local $u i64) + (local $ux i32) + (local $sign i32) + (local $x|4 f64) + (local $u|5 i64) + (local $sign|6 i32) + (local $ix i32) + (local $q i32) + (local $z f64) + (local $y0 f64) + (local $y1 f64) + (local $q|12 f64) + (local $r f64) + (local $w f64) + (local $j i32) + (local $y0|16 f64) + (local $hi i32) + (local $i i32) + (local $t f64) + (local $t|20 f64) + (local $y1|21 f64) + (local $q|22 i32) + (local $n i32) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $ux + local.get $ux + i32.const 31 + i32.shr_u + local.set $sign + local.get $ux + i32.const 2147483647 + i32.and + local.set $ux + local.get $ux + i32.const 1072243195 + i32.le_u + if + local.get $ux + i32.const 1044381696 + i32.lt_u + if + local.get $x + return + end + local.get $x + f64.const 0 + i32.const 1 + call $~lib/math/tan_kern + return + end + local.get $ux + i32.const 2146435072 + i32.ge_u + if + local.get $x + local.get $x + f64.sub + return + end + block $~lib/math/rempio2|inlined.2 (result i32) + local.get $x + local.set $x|4 + local.get $u + local.set $u|5 + local.get $sign + local.set $sign|6 + local.get $u|5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.set $ix + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $ix + i32.const 1073928572 + i32.lt_u + if + i32.const 1 + local.set $q + local.get $sign|6 + i32.eqz + if + local.get $x|4 + f64.const 1.5707963267341256 + f64.sub + local.set $z + local.get $ix + i32.const 1073291771 + i32.ne + if + local.get $z + f64.const 6.077100506506192e-11 + f64.sub + local.set $y0 + local.get $z + local.get $y0 + f64.sub + f64.const 6.077100506506192e-11 + f64.sub + local.set $y1 + else + local.get $z + f64.const 6.077100506303966e-11 + f64.sub + local.set $z + local.get $z + f64.const 2.0222662487959506e-21 + f64.sub + local.set $y0 + local.get $z + local.get $y0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.sub + local.set $y1 + end + else + local.get $x|4 + f64.const 1.5707963267341256 + f64.add + local.set $z + local.get $ix + i32.const 1073291771 + i32.ne + if + local.get $z + f64.const 6.077100506506192e-11 + f64.add + local.set $y0 + local.get $z + local.get $y0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add + local.set $y1 + else + local.get $z + f64.const 6.077100506303966e-11 + f64.add + local.set $z + local.get $z + f64.const 2.0222662487959506e-21 + f64.add + local.set $y0 + local.get $z + local.get $y0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + local.set $y1 + end + i32.const -1 + local.set $q + end + local.get $y0 + global.set $~lib/math/rempio2_y0 + local.get $y1 + global.set $~lib/math/rempio2_y1 + local.get $q + br $~lib/math/rempio2|inlined.2 + end + local.get $ix + i32.const 1094263291 + i32.lt_u + if + local.get $x|4 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $q|12 + local.get $x|4 + local.get $q|12 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.set $r + local.get $q|12 + f64.const 6.077100506506192e-11 + f64.mul + local.set $w + local.get $ix + i32.const 20 + i32.shr_u + local.set $j + local.get $r + local.get $w + f64.sub + local.set $y0|16 + local.get $y0|16 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hi + local.get $j + local.get $hi + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + local.set $i + local.get $i + i32.const 16 + i32.gt_u + if + local.get $r + local.set $t + local.get $q|12 + f64.const 6.077100506303966e-11 + f64.mul + local.set $w + local.get $t + local.get $w + f64.sub + local.set $r + local.get $q|12 + f64.const 2.0222662487959506e-21 + f64.mul + local.get $t + local.get $r + f64.sub + local.get $w + f64.sub + f64.sub + local.set $w + local.get $r + local.get $w + f64.sub + local.set $y0|16 + local.get $y0|16 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hi + local.get $j + local.get $hi + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + local.set $i + local.get $i + i32.const 49 + i32.gt_u + if + local.get $r + local.set $t|20 + local.get $q|12 + f64.const 2.0222662487111665e-21 + f64.mul + local.set $w + local.get $t|20 + local.get $w + f64.sub + local.set $r + local.get $q|12 + f64.const 8.4784276603689e-32 + f64.mul + local.get $t|20 + local.get $r + f64.sub + local.get $w + f64.sub + f64.sub + local.set $w + local.get $r + local.get $w + f64.sub + local.set $y0|16 + end + end + local.get $r + local.get $y0|16 + f64.sub + local.get $w + f64.sub + local.set $y1|21 + local.get $y0|16 + global.set $~lib/math/rempio2_y0 + local.get $y1|21 + global.set $~lib/math/rempio2_y1 + local.get $q|12 + i32.trunc_sat_f64_s + br $~lib/math/rempio2|inlined.2 + end + local.get $x|4 + local.get $u|5 + call $~lib/math/pio2_large_quot + local.set $q|22 + i32.const 0 + local.get $q|22 + i32.sub + local.get $q|22 + local.get $sign|6 + select + br $~lib/math/rempio2|inlined.2 + end + local.set $n + global.get $~lib/math/rempio2_y0 + global.get $~lib/math/rempio2_y1 + i32.const 1 + local.get $n + i32.const 1 + i32.and + i32.const 1 + i32.shl + i32.sub + call $~lib/math/tan_kern + return + ) + (func $std/math/test_tan (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.tan + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.tan + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.tan (param $x f32) (result f32) + (local $ux i32) + (local $sign i32) + (local $x|3 f64) + (local $odd i32) + (local $z f64) + (local $r f64) + (local $t f64) + (local $w f64) + (local $s f64) + (local $u f64) + (local $x|11 f64) + (local $odd|12 i32) + (local $z|13 f64) + (local $r|14 f64) + (local $t|15 f64) + (local $w|16 f64) + (local $s|17 f64) + (local $u|18 f64) + (local $x|19 f64) + (local $odd|20 i32) + (local $z|21 f64) + (local $r|22 f64) + (local $t|23 f64) + (local $w|24 f64) + (local $s|25 f64) + (local $u|26 f64) + (local $x|27 f64) + (local $odd|28 i32) + (local $z|29 f64) + (local $r|30 f64) + (local $t|31 f64) + (local $w|32 f64) + (local $s|33 f64) + (local $u|34 f64) + (local $x|35 f64) + (local $odd|36 i32) + (local $z|37 f64) + (local $r|38 f64) + (local $t|39 f64) + (local $w|40 f64) + (local $s|41 f64) + (local $u|42 f64) + (local $x|43 f32) + (local $u|44 i32) + (local $sign|45 i32) + (local $q f64) + (local $x|47 f32) + (local $u|48 i32) + (local $offset i32) + (local $shift i64) + (local $tblPtr i32) + (local $b0 i64) + (local $b1 i64) + (local $lo i64) + (local $b2 i64) + (local $hi i64) + (local $mantissa i64) + (local $product i64) + (local $r|59 i64) + (local $q|60 i32) + (local $q|61 i32) + (local $n i32) + (local $y f64) + (local $x|64 f64) + (local $odd|65 i32) + (local $z|66 f64) + (local $r|67 f64) + (local $t|68 f64) + (local $w|69 f64) + (local $s|70 f64) + (local $u|71 f64) + local.get $x + i32.reinterpret_f32 + local.set $ux + local.get $ux + i32.const 31 + i32.shr_u + local.set $sign + local.get $ux + i32.const 2147483647 + i32.and + local.set $ux + local.get $ux + i32.const 1061752794 + i32.le_u + if + local.get $ux + i32.const 964689920 + i32.lt_u + if + local.get $x + return + end + block $~lib/math/tan_kernf|inlined.0 (result f32) + local.get $x + f64.promote_f32 + local.set $x|3 + i32.const 0 + local.set $odd + local.get $x|3 + local.get $x|3 + f64.mul + local.set $z + f64.const 0.002974357433599673 + local.get $z + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $r + f64.const 0.05338123784456704 + local.get $z + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $t + local.get $z + local.get $z + f64.mul + local.set $w + local.get $z + local.get $x|3 + f64.mul + local.set $s + f64.const 0.3333313950307914 + local.get $z + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $u + local.get $x|3 + local.get $s + local.get $u + f64.mul + f64.add + local.get $s + local.get $w + f64.mul + local.get $t + local.get $w + local.get $r + f64.mul + f64.add + f64.mul + f64.add + local.set $r + local.get $odd + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $r + f64.div + else + local.get $r + end + f32.demote_f64 + br $~lib/math/tan_kernf|inlined.0 + end + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $ux + i32.const 1081824209 + i32.le_u + if + local.get $ux + i32.const 1075235811 + i32.le_u + if + block $~lib/math/tan_kernf|inlined.1 (result f32) + local.get $sign + if (result f64) + local.get $x + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + else + local.get $x + f64.promote_f32 + f64.const 1.5707963267948966 + f64.sub + end + local.set $x|11 + i32.const 1 + local.set $odd|12 + local.get $x|11 + local.get $x|11 + f64.mul + local.set $z|13 + f64.const 0.002974357433599673 + local.get $z|13 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $r|14 + f64.const 0.05338123784456704 + local.get $z|13 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $t|15 + local.get $z|13 + local.get $z|13 + f64.mul + local.set $w|16 + local.get $z|13 + local.get $x|11 + f64.mul + local.set $s|17 + f64.const 0.3333313950307914 + local.get $z|13 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $u|18 + local.get $x|11 + local.get $s|17 + local.get $u|18 + f64.mul + f64.add + local.get $s|17 + local.get $w|16 + f64.mul + local.get $t|15 + local.get $w|16 + local.get $r|14 + f64.mul + f64.add + f64.mul + f64.add + local.set $r|14 + local.get $odd|12 + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $r|14 + f64.div + else + local.get $r|14 + end + f32.demote_f64 + br $~lib/math/tan_kernf|inlined.1 + end + return + else + block $~lib/math/tan_kernf|inlined.2 (result f32) + local.get $sign + if (result f64) + local.get $x + f64.promote_f32 + f64.const 3.141592653589793 + f64.add + else + local.get $x + f64.promote_f32 + f64.const 3.141592653589793 + f64.sub + end + local.set $x|19 + i32.const 0 + local.set $odd|20 + local.get $x|19 + local.get $x|19 + f64.mul + local.set $z|21 + f64.const 0.002974357433599673 + local.get $z|21 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $r|22 + f64.const 0.05338123784456704 + local.get $z|21 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $t|23 + local.get $z|21 + local.get $z|21 + f64.mul + local.set $w|24 + local.get $z|21 + local.get $x|19 + f64.mul + local.set $s|25 + f64.const 0.3333313950307914 + local.get $z|21 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $u|26 + local.get $x|19 + local.get $s|25 + local.get $u|26 + f64.mul + f64.add + local.get $s|25 + local.get $w|24 + f64.mul + local.get $t|23 + local.get $w|24 + local.get $r|22 + f64.mul + f64.add + f64.mul + f64.add + local.set $r|22 + local.get $odd|20 + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $r|22 + f64.div + else + local.get $r|22 + end + f32.demote_f64 + br $~lib/math/tan_kernf|inlined.2 + end + return + end + unreachable + end + local.get $ux + i32.const 1088565717 + i32.le_u + if + local.get $ux + i32.const 1085271519 + i32.le_u + if + block $~lib/math/tan_kernf|inlined.3 (result f32) + local.get $sign + if (result f64) + local.get $x + f64.promote_f32 + f64.const 4.71238898038469 + f64.add + else + local.get $x + f64.promote_f32 + f64.const 4.71238898038469 + f64.sub + end + local.set $x|27 + i32.const 1 + local.set $odd|28 + local.get $x|27 + local.get $x|27 + f64.mul + local.set $z|29 + f64.const 0.002974357433599673 + local.get $z|29 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $r|30 + f64.const 0.05338123784456704 + local.get $z|29 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $t|31 + local.get $z|29 + local.get $z|29 + f64.mul + local.set $w|32 + local.get $z|29 + local.get $x|27 + f64.mul + local.set $s|33 + f64.const 0.3333313950307914 + local.get $z|29 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $u|34 + local.get $x|27 + local.get $s|33 + local.get $u|34 + f64.mul + f64.add + local.get $s|33 + local.get $w|32 + f64.mul + local.get $t|31 + local.get $w|32 + local.get $r|30 + f64.mul + f64.add + f64.mul + f64.add + local.set $r|30 + local.get $odd|28 + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $r|30 + f64.div + else + local.get $r|30 + end + f32.demote_f64 + br $~lib/math/tan_kernf|inlined.3 + end + return + else + block $~lib/math/tan_kernf|inlined.4 (result f32) + local.get $sign + if (result f64) + local.get $x + f64.promote_f32 + f64.const 6.283185307179586 + f64.add + else + local.get $x + f64.promote_f32 + f64.const 6.283185307179586 + f64.sub + end + local.set $x|35 + i32.const 0 + local.set $odd|36 + local.get $x|35 + local.get $x|35 + f64.mul + local.set $z|37 + f64.const 0.002974357433599673 + local.get $z|37 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $r|38 + f64.const 0.05338123784456704 + local.get $z|37 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $t|39 + local.get $z|37 + local.get $z|37 + f64.mul + local.set $w|40 + local.get $z|37 + local.get $x|35 + f64.mul + local.set $s|41 + f64.const 0.3333313950307914 + local.get $z|37 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $u|42 + local.get $x|35 + local.get $s|41 + local.get $u|42 + f64.mul + f64.add + local.get $s|41 + local.get $w|40 + f64.mul + local.get $t|39 + local.get $w|40 + local.get $r|38 + f64.mul + f64.add + f64.mul + f64.add + local.set $r|38 + local.get $odd|36 + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $r|38 + f64.div + else + local.get $r|38 + end + f32.demote_f64 + br $~lib/math/tan_kernf|inlined.4 + end + return + end + unreachable + end + local.get $ux + i32.const 2139095040 + i32.ge_u + if + local.get $x + local.get $x + f32.sub + return + end + block $~lib/math/rempio2f|inlined.2 (result i32) + local.get $x + local.set $x|43 + local.get $ux + local.set $u|44 + local.get $sign + local.set $sign|45 + local.get $u|44 + i32.const 1305022427 + i32.lt_u + if + local.get $x|43 + f64.promote_f32 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $q + local.get $x|43 + f64.promote_f32 + local.get $q + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $q + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $q + i32.trunc_sat_f64_s + br $~lib/math/rempio2f|inlined.2 + end + block $~lib/math/pio2f_large_quot|inlined.2 (result i32) + local.get $x|43 + local.set $x|47 + local.get $u|44 + local.set $u|48 + local.get $u|48 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.set $offset + local.get $offset + i32.const 63 + i32.and + i64.extend_i32_s + local.set $shift + i32.const 4608 + local.get $offset + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.add + local.set $tblPtr + local.get $tblPtr + i64.load + local.set $b0 + local.get $tblPtr + i64.load offset=8 + local.set $b1 + local.get $shift + i64.const 32 + i64.gt_u + if + local.get $tblPtr + i64.load offset=16 + local.set $b2 + local.get $b2 + i64.const 96 + local.get $shift + i64.sub + i64.shr_u + local.set $lo + local.get $lo + local.get $b1 + local.get $shift + i64.const 32 + i64.sub + i64.shl + i64.or + local.set $lo + else + local.get $b1 + i64.const 32 + local.get $shift + i64.sub + i64.shr_u + local.set $lo + end + local.get $b1 + i64.const 64 + local.get $shift + i64.sub + i64.shr_u + local.get $b0 + local.get $shift + i64.shl + i64.or + local.set $hi + local.get $u|48 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.set $mantissa + local.get $mantissa + local.get $hi + i64.mul + local.get $mantissa + local.get $lo + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $product + local.get $product + i64.const 2 + i64.shl + local.set $r|59 + local.get $product + i64.const 62 + i64.shr_u + local.get $r|59 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.set $q|60 + f64.const 8.515303950216386e-20 + local.get $x|47 + f64.promote_f32 + f64.copysign + local.get $r|59 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + local.get $q|60 + br $~lib/math/pio2f_large_quot|inlined.2 + end + local.set $q|61 + i32.const 0 + local.get $q|61 + i32.sub + local.get $q|61 + local.get $sign|45 + select + br $~lib/math/rempio2f|inlined.2 + end + local.set $n + global.get $~lib/math/rempio2f_y + local.set $y + block $~lib/math/tan_kernf|inlined.5 (result f32) + local.get $y + local.set $x|64 + local.get $n + i32.const 1 + i32.and + local.set $odd|65 + local.get $x|64 + local.get $x|64 + f64.mul + local.set $z|66 + f64.const 0.002974357433599673 + local.get $z|66 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $r|67 + f64.const 0.05338123784456704 + local.get $z|66 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $t|68 + local.get $z|66 + local.get $z|66 + f64.mul + local.set $w|69 + local.get $z|66 + local.get $x|64 + f64.mul + local.set $s|70 + f64.const 0.3333313950307914 + local.get $z|66 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $u|71 + local.get $x|64 + local.get $s|70 + local.get $u|71 + f64.mul + f64.add + local.get $s|70 + local.get $w|69 + f64.mul + local.get $t|68 + local.get $w|69 + local.get $r|67 + f64.mul + f64.add + f64.mul + f64.add + local.set $r|67 + local.get $odd|65 + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $r|67 + f64.div + else + local.get $r|67 + end + f32.demote_f64 + br $~lib/math/tan_kernf|inlined.5 + end + return + ) + (func $std/math/test_tanf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.tan + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.tanh (param $x f64) (result f64) + (local $u i64) + (local $y f64) + (local $w i32) + (local $t f64) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 9223372036854775807 + i64.and + local.set $u + local.get $u + f64.reinterpret_i64 + local.set $y + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $w + local.get $w + i32.const 1071748074 + i32.gt_u + if + local.get $w + i32.const 1077149696 + i32.gt_u + if + f64.const 1 + f64.const 0 + local.get $y + f64.div + f64.sub + local.set $t + else + f64.const 2 + local.get $y + f64.mul + call $~lib/math/NativeMath.expm1 + local.set $t + f64.const 1 + f64.const 2 + local.get $t + f64.const 2 + f64.add + f64.div + f64.sub + local.set $t + end + else + local.get $w + i32.const 1070618798 + i32.gt_u + if + f64.const 2 + local.get $y + f64.mul + call $~lib/math/NativeMath.expm1 + local.set $t + local.get $t + local.get $t + f64.const 2 + f64.add + f64.div + local.set $t + else + local.get $w + i32.const 1048576 + i32.ge_u + if + f64.const -2 + local.get $y + f64.mul + call $~lib/math/NativeMath.expm1 + local.set $t + local.get $t + f64.neg + local.get $t + f64.const 2 + f64.add + f64.div + local.set $t + else + local.get $y + local.set $t + end + end + end + local.get $t + local.get $x + f64.copysign + return + ) + (func $std/math/test_tanh (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMath.tanh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.tanh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.tanh (param $x f32) (result f32) + (local $u i32) + (local $y f32) + (local $t f32) + local.get $x + i32.reinterpret_f32 + local.set $u + local.get $u + i32.const 2147483647 + i32.and + local.set $u + local.get $u + f32.reinterpret_i32 + local.set $y + local.get $u + i32.const 1057791828 + i32.gt_u + if + local.get $u + i32.const 1092616192 + i32.gt_u + if + f32.const 1 + f32.const 0 + local.get $y + f32.div + f32.add + local.set $t + else + f32.const 2 + local.get $y + f32.mul + call $~lib/math/NativeMathf.expm1 + local.set $t + f32.const 1 + f32.const 2 + local.get $t + f32.const 2 + f32.add + f32.div + f32.sub + local.set $t + end + else + local.get $u + i32.const 1048757624 + i32.gt_u + if + f32.const 2 + local.get $y + f32.mul + call $~lib/math/NativeMathf.expm1 + local.set $t + local.get $t + local.get $t + f32.const 2 + f32.add + f32.div + local.set $t + else + local.get $u + i32.const 8388608 + i32.ge_u + if + f32.const -2 + local.get $y + f32.mul + call $~lib/math/NativeMathf.expm1 + local.set $t + local.get $t + f32.neg + local.get $t + f32.const 2 + f32.add + f32.div + local.set $t + else + local.get $y + local.set $t + end + end + end + local.get $t + local.get $x + f32.copysign + return + ) + (func $std/math/test_tanhf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + local.get $value + call $~lib/math/NativeMathf.tanh + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $std/math/test_trunc (param $value f64) (param $expected f64) (param $error f64) (param $flags i32) (result i32) + (local $x f64) + block $~lib/math/NativeMath.trunc|inlined.0 (result f64) + local.get $value + local.set $x + local.get $x + f64.trunc + br $~lib/math/NativeMath.trunc|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + if (result i32) + local.get $value + call $~lib/bindings/dom/Math.trunc + local.get $expected + local.get $error + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $std/math/test_truncf (param $value f32) (param $expected f32) (param $error f32) (param $flags i32) (result i32) + (local $x f32) + block $~lib/math/NativeMathf.trunc|inlined.0 (result f32) + local.get $value + local.set $x + local.get $x + f32.trunc + br $~lib/math/NativeMathf.trunc|inlined.0 + end + local.get $expected + local.get $error + local.get $flags + call $std/math/check + return + ) + (func $~lib/math/NativeMath.sincos (param $x f64) + (local $u i64) + (local $ux i32) + (local $sign i32) + (local $x|4 f64) + (local $y f64) + (local $iy i32) + (local $z f64) + (local $w f64) + (local $r f64) + (local $v f64) + (local $x|11 f64) + (local $y|12 f64) + (local $z|13 f64) + (local $w|14 f64) + (local $r|15 f64) + (local $hz f64) + (local $xx f64) + (local $x|18 f64) + (local $u|19 i64) + (local $sign|20 i32) + (local $ix i32) + (local $q i32) + (local $z|23 f64) + (local $y0 f64) + (local $y1 f64) + (local $q|26 f64) + (local $r|27 f64) + (local $w|28 f64) + (local $j i32) + (local $y0|30 f64) + (local $hi i32) + (local $i i32) + (local $t f64) + (local $t|34 f64) + (local $y1|35 f64) + (local $q|36 i32) + (local $n i32) + (local $y0|38 f64) + (local $y1|39 f64) + (local $x|40 f64) + (local $y|41 f64) + (local $iy|42 i32) + (local $z|43 f64) + (local $w|44 f64) + (local $r|45 f64) + (local $v|46 f64) + (local $s f64) + (local $x|48 f64) + (local $y|49 f64) + (local $z|50 f64) + (local $w|51 f64) + (local $r|52 f64) + (local $hz|53 f64) + (local $c f64) + (local $sin f64) + (local $cos f64) + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $ux + local.get $ux + i32.const 31 + i32.shr_u + local.set $sign + local.get $ux + i32.const 2147483647 + i32.and + local.set $ux + local.get $ux + i32.const 1072243195 + i32.le_u + if + local.get $ux + i32.const 1044816030 + i32.lt_u + if + local.get $x + global.set $~lib/math/NativeMath.sincos_sin + f64.const 1 + global.set $~lib/math/NativeMath.sincos_cos + return + end + block $~lib/math/sin_kern|inlined.3 (result f64) + local.get $x + local.set $x|4 + f64.const 0 + local.set $y + i32.const 0 + local.set $iy + local.get $x|4 + local.get $x|4 + f64.mul + local.set $z + local.get $z + local.get $z + f64.mul + local.set $w + f64.const 0.00833333333332249 + local.get $z + f64.const -1.984126982985795e-04 + local.get $z + f64.const 2.7557313707070068e-06 + f64.mul + f64.add + f64.mul + f64.add + local.get $z + local.get $w + f64.mul + f64.const -2.5050760253406863e-08 + local.get $z + f64.const 1.58969099521155e-10 + f64.mul + f64.add + f64.mul + f64.add + local.set $r + local.get $z + local.get $x|4 + f64.mul + local.set $v + local.get $iy + i32.eqz + if + local.get $x|4 + local.get $v + f64.const -0.16666666666666632 + local.get $z + local.get $r + f64.mul + f64.add + f64.mul + f64.add + br $~lib/math/sin_kern|inlined.3 + else + local.get $x|4 + local.get $z + f64.const 0.5 + local.get $y + f64.mul + local.get $v + local.get $r + f64.mul + f64.sub + f64.mul + local.get $y + f64.sub + local.get $v + f64.const -0.16666666666666632 + f64.mul + f64.sub + f64.sub + br $~lib/math/sin_kern|inlined.3 + end + unreachable + end + global.set $~lib/math/NativeMath.sincos_sin + block $~lib/math/cos_kern|inlined.3 (result f64) + local.get $x + local.set $x|11 + f64.const 0 + local.set $y|12 + local.get $x|11 + local.get $x|11 + f64.mul + local.set $z|13 + local.get $z|13 + local.get $z|13 + f64.mul + local.set $w|14 + local.get $z|13 + f64.const 0.0416666666666666 + local.get $z|13 + f64.const -0.001388888888887411 + local.get $z|13 + f64.const 2.480158728947673e-05 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.get $w|14 + local.get $w|14 + f64.mul + f64.const -2.7557314351390663e-07 + local.get $z|13 + f64.const 2.087572321298175e-09 + local.get $z|13 + f64.const -1.1359647557788195e-11 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.set $r|15 + f64.const 0.5 + local.get $z|13 + f64.mul + local.set $hz + f64.const 1 + local.get $hz + f64.sub + local.set $w|14 + local.get $w|14 + f64.const 1 + local.get $w|14 + f64.sub + local.get $hz + f64.sub + local.get $z|13 + local.get $r|15 + f64.mul + local.get $x|11 + local.get $y|12 + f64.mul + f64.sub + f64.add + f64.add + br $~lib/math/cos_kern|inlined.3 + end + global.set $~lib/math/NativeMath.sincos_cos + return + end + local.get $ux + i32.const 2139095040 + i32.ge_u + if + local.get $x + local.get $x + f64.sub + local.set $xx + local.get $xx + global.set $~lib/math/NativeMath.sincos_sin + local.get $xx + global.set $~lib/math/NativeMath.sincos_cos + return + end + block $~lib/math/rempio2|inlined.3 (result i32) + local.get $x + local.set $x|18 + local.get $u + local.set $u|19 + local.get $sign + local.set $sign|20 + local.get $u|19 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.set $ix + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $ix + i32.const 1073928572 + i32.lt_u + if + i32.const 1 + local.set $q + local.get $sign|20 + i32.eqz + if + local.get $x|18 + f64.const 1.5707963267341256 + f64.sub + local.set $z|23 + local.get $ix + i32.const 1073291771 + i32.ne + if + local.get $z|23 + f64.const 6.077100506506192e-11 + f64.sub + local.set $y0 + local.get $z|23 + local.get $y0 + f64.sub + f64.const 6.077100506506192e-11 + f64.sub + local.set $y1 + else + local.get $z|23 + f64.const 6.077100506303966e-11 + f64.sub + local.set $z|23 + local.get $z|23 + f64.const 2.0222662487959506e-21 + f64.sub + local.set $y0 + local.get $z|23 + local.get $y0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.sub + local.set $y1 + end + else + local.get $x|18 + f64.const 1.5707963267341256 + f64.add + local.set $z|23 + local.get $ix + i32.const 1073291771 + i32.ne + if + local.get $z|23 + f64.const 6.077100506506192e-11 + f64.add + local.set $y0 + local.get $z|23 + local.get $y0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add + local.set $y1 + else + local.get $z|23 + f64.const 6.077100506303966e-11 + f64.add + local.set $z|23 + local.get $z|23 + f64.const 2.0222662487959506e-21 + f64.add + local.set $y0 + local.get $z|23 + local.get $y0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + local.set $y1 + end + i32.const -1 + local.set $q + end + local.get $y0 + global.set $~lib/math/rempio2_y0 + local.get $y1 + global.set $~lib/math/rempio2_y1 + local.get $q + br $~lib/math/rempio2|inlined.3 + end + local.get $ix + i32.const 1094263291 + i32.lt_u + if + local.get $x|18 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $q|26 + local.get $x|18 + local.get $q|26 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.set $r|27 + local.get $q|26 + f64.const 6.077100506506192e-11 + f64.mul + local.set $w|28 + local.get $ix + i32.const 20 + i32.shr_u + local.set $j + local.get $r|27 + local.get $w|28 + f64.sub + local.set $y0|30 + local.get $y0|30 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hi + local.get $j + local.get $hi + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + local.set $i + local.get $i + i32.const 16 + i32.gt_u + if + local.get $r|27 + local.set $t + local.get $q|26 + f64.const 6.077100506303966e-11 + f64.mul + local.set $w|28 + local.get $t + local.get $w|28 + f64.sub + local.set $r|27 + local.get $q|26 + f64.const 2.0222662487959506e-21 + f64.mul + local.get $t + local.get $r|27 + f64.sub + local.get $w|28 + f64.sub + f64.sub + local.set $w|28 + local.get $r|27 + local.get $w|28 + f64.sub + local.set $y0|30 + local.get $y0|30 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $hi + local.get $j + local.get $hi + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + local.set $i + local.get $i + i32.const 49 + i32.gt_u + if + local.get $r|27 + local.set $t|34 + local.get $q|26 + f64.const 2.0222662487111665e-21 + f64.mul + local.set $w|28 + local.get $t|34 + local.get $w|28 + f64.sub + local.set $r|27 + local.get $q|26 + f64.const 8.4784276603689e-32 + f64.mul + local.get $t|34 + local.get $r|27 + f64.sub + local.get $w|28 + f64.sub + f64.sub + local.set $w|28 + local.get $r|27 + local.get $w|28 + f64.sub + local.set $y0|30 + end + end + local.get $r|27 + local.get $y0|30 + f64.sub + local.get $w|28 + f64.sub + local.set $y1|35 + local.get $y0|30 + global.set $~lib/math/rempio2_y0 + local.get $y1|35 + global.set $~lib/math/rempio2_y1 + local.get $q|26 + i32.trunc_sat_f64_s + br $~lib/math/rempio2|inlined.3 + end + local.get $x|18 + local.get $u|19 + call $~lib/math/pio2_large_quot + local.set $q|36 + i32.const 0 + local.get $q|36 + i32.sub + local.get $q|36 + local.get $sign|20 + select + br $~lib/math/rempio2|inlined.3 + end + local.set $n + global.get $~lib/math/rempio2_y0 + local.set $y0|38 + global.get $~lib/math/rempio2_y1 + local.set $y1|39 + block $~lib/math/sin_kern|inlined.4 (result f64) + local.get $y0|38 + local.set $x|40 + local.get $y1|39 + local.set $y|41 + i32.const 1 + local.set $iy|42 + local.get $x|40 + local.get $x|40 + f64.mul + local.set $z|43 + local.get $z|43 + local.get $z|43 + f64.mul + local.set $w|44 + f64.const 0.00833333333332249 + local.get $z|43 + f64.const -1.984126982985795e-04 + local.get $z|43 + f64.const 2.7557313707070068e-06 + f64.mul + f64.add + f64.mul + f64.add + local.get $z|43 + local.get $w|44 + f64.mul + f64.const -2.5050760253406863e-08 + local.get $z|43 + f64.const 1.58969099521155e-10 + f64.mul + f64.add + f64.mul + f64.add + local.set $r|45 + local.get $z|43 + local.get $x|40 + f64.mul + local.set $v|46 + local.get $iy|42 + i32.eqz + if + local.get $x|40 + local.get $v|46 + f64.const -0.16666666666666632 + local.get $z|43 + local.get $r|45 + f64.mul + f64.add + f64.mul + f64.add + br $~lib/math/sin_kern|inlined.4 + else + local.get $x|40 + local.get $z|43 + f64.const 0.5 + local.get $y|41 + f64.mul + local.get $v|46 + local.get $r|45 + f64.mul + f64.sub + f64.mul + local.get $y|41 + f64.sub + local.get $v|46 + f64.const -0.16666666666666632 + f64.mul + f64.sub + f64.sub + br $~lib/math/sin_kern|inlined.4 + end + unreachable + end + local.set $s + block $~lib/math/cos_kern|inlined.4 (result f64) + local.get $y0|38 + local.set $x|48 + local.get $y1|39 + local.set $y|49 + local.get $x|48 + local.get $x|48 + f64.mul + local.set $z|50 + local.get $z|50 + local.get $z|50 + f64.mul + local.set $w|51 + local.get $z|50 + f64.const 0.0416666666666666 + local.get $z|50 + f64.const -0.001388888888887411 + local.get $z|50 + f64.const 2.480158728947673e-05 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.get $w|51 + local.get $w|51 + f64.mul + f64.const -2.7557314351390663e-07 + local.get $z|50 + f64.const 2.087572321298175e-09 + local.get $z|50 + f64.const -1.1359647557788195e-11 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.set $r|52 + f64.const 0.5 + local.get $z|50 + f64.mul + local.set $hz|53 + f64.const 1 + local.get $hz|53 + f64.sub + local.set $w|51 + local.get $w|51 + f64.const 1 + local.get $w|51 + f64.sub + local.get $hz|53 + f64.sub + local.get $z|50 + local.get $r|52 + f64.mul + local.get $x|48 + local.get $y|49 + f64.mul + f64.sub + f64.add + f64.add + br $~lib/math/cos_kern|inlined.4 + end + local.set $c + local.get $s + local.set $sin + local.get $c + local.set $cos + local.get $n + i32.const 1 + i32.and + if + local.get $c + local.set $sin + local.get $s + f64.neg + local.set $cos + end + local.get $n + i32.const 2 + i32.and + if + local.get $sin + f64.neg + local.set $sin + local.get $cos + f64.neg + local.set $cos + end + local.get $sin + global.set $~lib/math/NativeMath.sincos_sin + local.get $cos + global.set $~lib/math/NativeMath.sincos_cos + ) + (func $std/math/test_sincos (param $value i64) (param $expected_sin i64) (param $error_sin i64) (param $expected_cos i64) (param $error_cos i64) (param $flags i32) (result i32) + (local $arg f64) + (local $expsin f64) + (local $expcos f64) + (local $errsin f64) + (local $errcos f64) + local.get $value + f64.reinterpret_i64 + local.set $arg + local.get $expected_sin + f64.reinterpret_i64 + local.set $expsin + local.get $expected_cos + f64.reinterpret_i64 + local.set $expcos + local.get $error_sin + f64.reinterpret_i64 + local.set $errsin + local.get $error_cos + f64.reinterpret_i64 + local.set $errcos + local.get $arg + call $~lib/math/NativeMath.sincos + global.get $~lib/math/NativeMath.sincos_sin + local.get $expsin + local.get $errsin + local.get $flags + call $std/math/check + if (result i32) + global.get $~lib/math/NativeMath.sincos_cos + local.get $expcos + local.get $errcos + local.get $flags + call $std/math/check + else + i32.const 0 + end + return + ) + (func $~lib/math/dtoi32 (param $x f64) (result i32) + (local $result i32) + (local $u i64) + (local $e i64) + (local $v i64) + i32.const 0 + i32.const 0 + i32.gt_s + drop + i32.const 0 + local.set $result + local.get $x + i64.reinterpret_f64 + local.set $u + local.get $u + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $e + local.get $e + i64.const 1023 + i64.const 30 + i64.add + i64.le_u + if + local.get $x + i32.trunc_sat_f64_s + local.set $result + else + local.get $e + i64.const 1023 + i64.const 30 + i64.add + i64.const 53 + i64.add + i64.le_u + if + local.get $u + i64.const 1 + i64.const 52 + i64.shl + i64.const 1 + i64.sub + i64.and + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $v + local.get $v + local.get $e + i64.const 1023 + i64.sub + i64.const 52 + i64.sub + i64.const 32 + i64.add + i64.shl + local.set $v + local.get $v + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $result + i32.const 0 + local.get $result + i32.sub + local.get $result + local.get $u + i64.const 0 + i64.lt_s + select + local.set $result + end + end + local.get $result + return + ) + (func $~lib/math/NativeMath.imul (param $x f64) (param $y f64) (result f64) + (local $2 f64) + local.get $x + local.get $y + f64.add + local.tee $2 + local.get $2 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + f64.const 0 + return + end + local.get $x + call $~lib/math/dtoi32 + local.get $y + call $~lib/math/dtoi32 + i32.mul + f64.convert_i32_s + return + ) + (func $~lib/math/NativeMath.clz32 (param $x f64) (result f64) + local.get $x + local.get $x + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + f64.const 32 + return + end + local.get $x + call $~lib/math/dtoi32 + i32.clz + f64.convert_i32_s + return + ) + (func $~lib/math/ipow64 (param $x i64) (param $e i64) (result i64) + (local $out i64) + (local $log i32) + (local $4 i32) + i64.const 1 + local.set $out + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $x + i64.const 2 + i64.eq + if + i64.const 1 + local.get $e + i64.shl + i64.const 0 + local.get $e + i64.const 64 + i64.lt_u + select + return + end + local.get $e + i64.const 0 + i64.le_s + if + local.get $x + i64.const -1 + i64.eq + if + i64.const -1 + i64.const 1 + local.get $e + i64.const 1 + i64.and + i64.const 0 + i64.ne + select + return + end + local.get $e + i64.const 0 + i64.eq + i64.extend_i32_u + local.get $x + i64.const 1 + i64.eq + i64.extend_i32_u + i64.or + return + else + local.get $e + i64.const 1 + i64.eq + if + local.get $x + return + else + local.get $e + i64.const 2 + i64.eq + if + local.get $x + local.get $x + i64.mul + return + else + local.get $e + i64.const 64 + i64.lt_s + if + i32.const 64 + local.get $e + i64.clz + i32.wrap_i64 + i32.sub + local.set $log + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $log + local.set $4 + local.get $4 + i32.const 6 + i32.eq + br_if $case0|0 + local.get $4 + i32.const 5 + i32.eq + br_if $case1|0 + local.get $4 + i32.const 4 + i32.eq + br_if $case2|0 + local.get $4 + i32.const 3 + i32.eq + br_if $case3|0 + local.get $4 + i32.const 2 + i32.eq + br_if $case4|0 + local.get $4 + i32.const 1 + i32.eq + br_if $case5|0 + br $break|0 + end + local.get $e + i64.const 1 + i64.and + i64.const 0 + i64.ne + if + local.get $out + local.get $x + i64.mul + local.set $out + end + local.get $e + i64.const 1 + i64.shr_u + local.set $e + local.get $x + local.get $x + i64.mul + local.set $x + end + local.get $e + i64.const 1 + i64.and + i64.const 0 + i64.ne + if + local.get $out + local.get $x + i64.mul + local.set $out + end + local.get $e + i64.const 1 + i64.shr_u + local.set $e + local.get $x + local.get $x + i64.mul + local.set $x + end + local.get $e + i64.const 1 + i64.and + i64.const 0 + i64.ne + if + local.get $out + local.get $x + i64.mul + local.set $out + end + local.get $e + i64.const 1 + i64.shr_u + local.set $e + local.get $x + local.get $x + i64.mul + local.set $x + end + local.get $e + i64.const 1 + i64.and + i64.const 0 + i64.ne + if + local.get $out + local.get $x + i64.mul + local.set $out + end + local.get $e + i64.const 1 + i64.shr_u + local.set $e + local.get $x + local.get $x + i64.mul + local.set $x + end + local.get $e + i64.const 1 + i64.and + i64.const 0 + i64.ne + if + local.get $out + local.get $x + i64.mul + local.set $out + end + local.get $e + i64.const 1 + i64.shr_u + local.set $e + local.get $x + local.get $x + i64.mul + local.set $x + end + local.get $e + i64.const 1 + i64.and + i64.const 0 + i64.ne + if + local.get $out + local.get $x + i64.mul + local.set $out + end + end + local.get $out + return + end + end + end + end + loop $while-continue|1 + local.get $e + i64.const 0 + i64.ne + if + local.get $e + i64.const 1 + i64.and + i64.const 0 + i64.ne + if + local.get $out + local.get $x + i64.mul + local.set $out + end + local.get $e + i64.const 1 + i64.shr_u + local.set $e + local.get $x + local.get $x + i64.mul + local.set $x + br $while-continue|1 + end + end + local.get $out + return + ) + (func $~lib/math/ipow32 (param $x i32) (param $e i32) (result i32) + (local $out i32) + (local $log i32) + (local $4 i32) + i32.const 1 + local.set $out + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $x + i32.const 2 + i32.eq + if + i32.const 1 + local.get $e + i32.shl + i32.const 0 + local.get $e + i32.const 32 + i32.lt_u + select + return + end + local.get $e + i32.const 0 + i32.le_s + if + local.get $x + i32.const -1 + i32.eq + if + i32.const -1 + i32.const 1 + local.get $e + i32.const 1 + i32.and + select + return + end + local.get $e + i32.const 0 + i32.eq + local.get $x + i32.const 1 + i32.eq + i32.or + return + else + local.get $e + i32.const 1 + i32.eq + if + local.get $x + return + else + local.get $e + i32.const 2 + i32.eq + if + local.get $x + local.get $x + i32.mul + return + else + local.get $e + i32.const 32 + i32.lt_s + if + i32.const 32 + local.get $e + i32.clz + i32.sub + local.set $log + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $log + local.set $4 + local.get $4 + i32.const 5 + i32.eq + br_if $case0|0 + local.get $4 + i32.const 4 + i32.eq + br_if $case1|0 + local.get $4 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $4 + i32.const 2 + i32.eq + br_if $case3|0 + local.get $4 + i32.const 1 + i32.eq + br_if $case4|0 + br $break|0 + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + end + local.get $out + return + end + end + end + end + loop $while-continue|1 + local.get $e + if + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + br $while-continue|1 + end + end + local.get $out + return + ) + (func $start:std/math + (local $0 f64) + (local $1 f64) + (local $2 f64) + (local $3 f64) + (local $4 f64) + (local $i i32) + (local $r f64) + (local $value i64) + (local $i|8 i32) + (local $r|9 f32) + (local $x f64) + (local $x|11 f64) + (local $x|12 f64) + (local $x|13 f64) + (local $x|14 f64) + (local $x|15 f64) + (local $x|16 f64) + (local $x|17 f64) + (local $x|18 f32) + (local $x|19 f32) + (local $x|20 f32) + (local $x|21 f32) + (local $x|22 f32) + (local $x|23 f32) + (local $x|24 f32) + (local $x|25 f32) + global.get $~lib/math/NativeMath.E + global.get $~lib/math/NativeMath.E + f64.eq + drop + global.get $~lib/math/NativeMathf.E + global.get $~lib/math/NativeMathf.E + f32.eq + drop + global.get $~lib/math/NativeMath.E + global.get $~lib/bindings/dom/Math.E + f64.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/math/NativeMath.LN2 + global.get $~lib/bindings/dom/Math.LN2 + f64.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/math/NativeMath.LN10 + global.get $~lib/bindings/dom/Math.LN10 + f64.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/math/NativeMath.LOG2E + global.get $~lib/bindings/dom/Math.LOG2E + f64.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/math/NativeMath.PI + global.get $~lib/bindings/dom/Math.PI + f64.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/math/NativeMath.SQRT1_2 + global.get $~lib/bindings/dom/Math.SQRT1_2 + f64.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/math/NativeMath.SQRT2 + global.get $~lib/bindings/dom/Math.SQRT2 + f64.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/math/NativeMathf.E + global.get $~lib/bindings/dom/Math.E + f32.demote_f64 + f32.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/math/NativeMathf.LN2 + global.get $~lib/bindings/dom/Math.LN2 + f32.demote_f64 + f32.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/math/NativeMathf.LN10 + global.get $~lib/bindings/dom/Math.LN10 + f32.demote_f64 + f32.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/math/NativeMathf.LOG2E + global.get $~lib/bindings/dom/Math.LOG2E + f32.demote_f64 + f32.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 122 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/math/NativeMathf.PI + global.get $~lib/bindings/dom/Math.PI + f32.demote_f64 + f32.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/math/NativeMathf.SQRT1_2 + global.get $~lib/bindings/dom/Math.SQRT1_2 + f32.demote_f64 + f32.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/math/NativeMathf.SQRT2 + global.get $~lib/bindings/dom/Math.SQRT2 + f32.demote_f64 + f32.const 0 + i32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + i32.const -2 + f64.const -2.01671209764492 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 136 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + i32.const -1 + f64.const 2.1726199246691524 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + i32.const 0 + f64.const -8.38143342755525 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 138 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + i32.const 1 + f64.const -13.063347163826968 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 139 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + i32.const 2 + f64.const 37.06822786789034 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + i32.const 3 + f64.const 5.295887184796036 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 141 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + i32.const 4 + f64.const -6.505662758165685 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + i32.const 5 + f64.const 17.97631187906317 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + i32.const 6 + f64.const 49.545746981843436 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + i32.const 7 + f64.const -86.88175393784351 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 145 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + i32.const 2147483647 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 148 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + i32.const -2147483647 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 149 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + i32.const 2147483647 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 150 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + i32.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + i32.const 0 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + i32.const 0 + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + i32.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + i32.const 1 + f64.const 2 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + i32.const -1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + i32.const 2147483647 + f64.const inf + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/OVERFLOW + i32.or + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + i32.const 1 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + i32.const 2147483647 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 159 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + i32.const -2147483647 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 160 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + i32.const 2147483647 + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8988465674311579538646525e283 + i32.const -2097 + f64.const 5e-324 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + i32.const 2097 + f64.const 8988465674311579538646525e283 + f64.const 0 + i32.const 0 + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.000244140625 + i32.const -1074 + f64.const 5e-324 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 164 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7499999999999999 + i32.const -1073 + f64.const 5e-324 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 165 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5000000000000012 + i32.const -1024 + f64.const 2.781342323134007e-309 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_scalbn + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + i32.const -2 + f32.const -2.016712188720703 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + i32.const -1 + f32.const 2.1726198196411133 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 176 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + i32.const 0 + f32.const -8.381433486938477 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + i32.const 1 + f32.const -13.063346862792969 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 178 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + i32.const 2 + f32.const 37.06822967529297 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 179 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + i32.const 3 + f32.const 5.295886993408203 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 180 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + i32.const 4 + f32.const -6.50566291809082 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + i32.const 5 + f32.const 17.9763126373291 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 182 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + i32.const 6 + f32.const 49.545745849609375 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + i32.const 7 + f32.const -86.88175201416016 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 184 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + i32.const 2147483647 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + i32.const -2147483647 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 188 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + i32.const 2147483647 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 189 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + i32.const 0 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 190 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + i32.const 0 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 191 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + i32.const 0 + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 192 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + i32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + i32.const 1 + f32.const 2 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 194 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + i32.const -1 + f32.const 0.5 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 195 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + i32.const 2147483647 + f32.const inf + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/OVERFLOW + i32.or + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 196 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + i32.const 1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 197 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + i32.const 2147483647 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 198 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + i32.const -2147483647 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + i32.const 2147483647 + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1701411834604692317316873e14 + i32.const -276 + f32.const 1.401298464324817e-45 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 201 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + i32.const 276 + f32.const 1701411834604692317316873e14 + f32.const 0 + i32.const 0 + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 202 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.000244140625 + i32.const -149 + f32.const 1.401298464324817e-45 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 203 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7499999403953552 + i32.const -148 + f32.const 1.401298464324817e-45 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 204 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5000006556510925 + i32.const -128 + f32.const 1.4693693398263237e-39 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_scalbnf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 205 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 8.06684839057968 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 217 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 4.345239849338305 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 218 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const 8.38143342755525 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 6.531673581913484 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 220 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 9.267056966972586 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 221 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.6619858980995045 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 222 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const 0.4066039223853553 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 223 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.5617597462207241 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 224 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.7741522965913037 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 225 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const 0.6787637026394024 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 226 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 229 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 230 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 231 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 232 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 233 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 234 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_abs + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 235 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 8.066848754882812 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 244 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 4.345239639282227 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 245 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const 8.381433486938477 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 246 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 6.531673431396484 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 247 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 9.267057418823242 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 248 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.6619858741760254 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 249 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const 0.40660393238067627 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 250 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.5617597699165344 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 251 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.7741522789001465 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 252 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const 0.6787636876106262 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 253 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 256 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 258 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 259 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 260 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 261 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_absf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 262 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 274 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 275 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 276 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 277 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 278 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.8473310828433507 + f64.const -0.41553276777267456 + global.get $std/math/INEXACT + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 279 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const 1.989530071088669 + f64.const 0.4973946213722229 + global.get $std/math/INEXACT + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 280 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.9742849645674904 + f64.const -0.4428897500038147 + global.get $std/math/INEXACT + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 281 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.6854215158636222 + f64.const -0.12589527666568756 + global.get $std/math/INEXACT + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 282 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const 2.316874138205964 + f64.const -0.17284949123859406 + global.get $std/math/INEXACT + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 283 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 286 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 3.141592653589793 + f64.const -0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 287 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000000000000002 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 289 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0000000000000002 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 290 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 291 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 292 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 293 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5309227209592985 + f64.const 2.1304853799705463 + f64.const 0.1391008496284485 + global.get $std/math/INEXACT + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 294 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.4939556746399746 + f64.const 1.0541629875851946 + f64.const 0.22054767608642578 + global.get $std/math/INEXACT + call $std/math/test_acos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 295 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 304 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 305 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 306 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 307 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 308 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.8473311066627502 + f32.const -0.13588131964206696 + global.get $std/math/INEXACT + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 309 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const 1.989530086517334 + f32.const 0.03764917701482773 + global.get $std/math/INEXACT + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 310 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.9742849469184875 + f32.const 0.18443739414215088 + global.get $std/math/INEXACT + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 311 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.6854215264320374 + f32.const -0.29158344864845276 + global.get $std/math/INEXACT + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 312 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const 2.3168740272521973 + f32.const -0.3795364499092102 + global.get $std/math/INEXACT + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 313 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1.5707963705062866 + f32.const 0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 316 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 3.1415927410125732 + f32.const 0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 317 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 318 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000001192092896 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 319 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000001192092896 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 320 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 321 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 322 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 323 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.49965065717697144 + f32.const 1.0476008653640747 + f32.const -0.21161814033985138 + global.get $std/math/INEXACT + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 324 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5051405429840088 + f32.const 2.1003410816192627 + f32.const -0.20852705836296082 + global.get $std/math/INEXACT + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 325 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5189794898033142 + f32.const 2.116452932357788 + f32.const -0.14600826799869537 + global.get $std/math/INEXACT + call $std/math/test_acosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 326 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 338 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 2.1487163980597503 + f64.const -0.291634738445282 + global.get $std/math/INEXACT + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 339 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 340 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 341 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 2.91668914109908 + f64.const -0.24191908538341522 + global.get $std/math/INEXACT + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 342 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 343 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 344 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 345 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 346 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 347 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 350 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 351 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 352 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999923706054688 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 353 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9784.820766473835 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 354 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 355 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 356 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 357 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1060831199926429 + f64.const 0.4566373404384803 + f64.const -0.29381608963012695 + global.get $std/math/INEXACT + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 373 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1089809557628658 + f64.const 0.4627246859959428 + f64.const -0.3990095555782318 + global.get $std/math/INEXACT + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 375 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1169429159875521 + f64.const 0.47902433134075284 + f64.const -0.321674108505249 + global.get $std/math/INEXACT + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 376 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 385 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 2.148716449737549 + f32.const 0.4251045286655426 + global.get $std/math/INEXACT + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 386 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 387 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 388 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 2.916689157485962 + f32.const -0.1369788944721222 + global.get $std/math/INEXACT + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 389 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 390 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 391 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 392 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 393 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 394 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 397 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 398 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 399 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999923706054688 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 400 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 401 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 402 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 403 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1125899906842624 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 404 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 416 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 417 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 418 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 419 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 420 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.7234652439515459 + f64.const -0.13599912822246552 + global.get $std/math/INEXACT + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 421 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.41873374429377225 + f64.const -0.09264230728149414 + global.get $std/math/INEXACT + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 422 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.5965113622274062 + f64.const -0.10864213854074478 + global.get $std/math/INEXACT + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 423 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.8853748109312743 + f64.const -0.4256366193294525 + global.get $std/math/INEXACT + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 424 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.7460778114110673 + f64.const 0.13986606895923615 + global.get $std/math/INEXACT + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 425 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 428 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 429 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 430 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 431 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000000000000002 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 432 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0000000000000002 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 433 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 434 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 435 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 436 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5073043929119148 + f64.const 0.5320538997772349 + f64.const -0.16157317161560059 + global.get $std/math/INEXACT + call $std/math/test_asin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 437 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 446 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 447 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 448 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 449 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 450 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.7234652042388916 + f32.const -0.1307632476091385 + global.get $std/math/INEXACT + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 451 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.41873374581336975 + f32.const 0.3161141574382782 + global.get $std/math/INEXACT + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 452 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.5965113639831543 + f32.const -0.4510819613933563 + global.get $std/math/INEXACT + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 453 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.8853747844696045 + f32.const 0.02493886835873127 + global.get $std/math/INEXACT + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 454 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.7460777759552002 + f32.const 0.2515012323856354 + global.get $std/math/INEXACT + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 455 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1.5707963705062866 + f32.const 0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 458 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1.5707963705062866 + f32.const -0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 459 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 460 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 461 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000001192092896 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 462 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000001192092896 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 463 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 464 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 465 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 466 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5004770159721375 + f32.const 0.5241496562957764 + f32.const -0.29427099227905273 + global.get $std/math/INEXACT + call $std/math/test_asinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -2.784729878387861 + f64.const -0.4762189984321594 + global.get $std/math/INEXACT + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 479 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 2.175213389013164 + f64.const -0.02728751301765442 + global.get $std/math/INEXACT + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 480 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.822706083697696 + f64.const 0.20985257625579834 + global.get $std/math/INEXACT + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 481 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -2.575619446591922 + f64.const 0.3113134205341339 + global.get $std/math/INEXACT + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 482 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 2.9225114951048674 + f64.const 0.4991756081581116 + global.get $std/math/INEXACT + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 483 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.6212462762707166 + f64.const -0.4697347581386566 + global.get $std/math/INEXACT + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 484 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.39615990393192035 + f64.const -0.40814438462257385 + global.get $std/math/INEXACT + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 485 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.5357588870255474 + f64.const 0.3520713150501251 + global.get $std/math/INEXACT + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 486 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.7123571263197349 + f64.const 0.13371451199054718 + global.get $std/math/INEXACT + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 487 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.635182348903198 + f64.const 0.04749670997262001 + global.get $std/math/INEXACT + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 488 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 491 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 492 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 493 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 494 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 495 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -2.7847299575805664 + f32.const -0.14418013393878937 + global.get $std/math/INEXACT + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 524 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 2.17521333694458 + f32.const -0.020796965807676315 + global.get $std/math/INEXACT + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 525 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.8227059841156006 + f32.const 0.44718533754348755 + global.get $std/math/INEXACT + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 526 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -2.5756194591522217 + f32.const -0.14822272956371307 + global.get $std/math/INEXACT + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 527 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 2.922511577606201 + f32.const 0.14270681142807007 + global.get $std/math/INEXACT + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 528 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.6212462782859802 + f32.const 0.3684912919998169 + global.get $std/math/INEXACT + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 529 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.39615991711616516 + f32.const -0.13170306384563446 + global.get $std/math/INEXACT + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 530 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.535758912563324 + f32.const 0.08184859901666641 + global.get $std/math/INEXACT + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 531 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.7123571038246155 + f32.const -0.14270737767219543 + global.get $std/math/INEXACT + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 532 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.6351823210716248 + f32.const 0.2583143711090088 + global.get $std/math/INEXACT + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 533 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 536 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 537 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 538 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 539 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 540 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -1.4474613762633468 + f64.const 0.14857111871242523 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 552 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 1.344597927114538 + f64.const -0.08170335739850998 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 553 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -1.4520463463295539 + f64.const -0.07505480200052261 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 554 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -1.4188758658752532 + f64.const -0.057633496820926666 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 555 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 1.463303145448706 + f64.const 0.1606956422328949 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 556 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.5847550670238325 + f64.const 0.4582556486129761 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 557 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.3861864177552131 + f64.const -0.2574281692504883 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 558 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.5118269531628881 + f64.const -0.11444277316331863 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 559 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.6587802431653822 + f64.const -0.11286488175392151 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 560 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.5963307826973472 + f64.const -0.2182842344045639 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 561 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 564 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 565 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0.7853981633974483 + f64.const -0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 566 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0.7853981633974483 + f64.const 0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 567 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 568 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 569 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 570 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6929821535674624 + f64.const 0.6060004555152562 + f64.const -0.17075790464878082 + global.get $std/math/INEXACT + call $std/math/test_atan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 571 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -1.4474613666534424 + f32.const 0.12686480581760406 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 580 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 1.3445979356765747 + f32.const 0.16045434772968292 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 581 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -1.4520463943481445 + f32.const -0.39581751823425293 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 582 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -1.418875813484192 + f32.const 0.410570353269577 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 583 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 1.4633032083511353 + f32.const 0.48403501510620117 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 584 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.5847550630569458 + f32.const 0.2125193476676941 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.386186420917511 + f32.const 0.18169628083705902 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 586 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.5118269920349121 + f32.const 0.3499770760536194 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 587 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.6587802171707153 + f32.const -0.2505330741405487 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 588 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.5963307619094849 + f32.const 0.17614826560020447 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 589 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 592 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 593 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0.7853981852531433 + f32.const 0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 594 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0.7853981852531433 + f32.const -0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 595 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1.5707963705062866 + f32.const 0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 596 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -1.5707963705062866 + f32.const -0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_atanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 598 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 610 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 611 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 612 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 613 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 614 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.7963404371347943 + f64.const 0.21338365972042084 + global.get $std/math/INEXACT + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 615 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.43153570730602897 + f64.const -0.4325666129589081 + global.get $std/math/INEXACT + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 616 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.6354006111644578 + f64.const -0.06527865678071976 + global.get $std/math/INEXACT + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 617 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 1.0306085575277995 + f64.const 0.14632052183151245 + global.get $std/math/INEXACT + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 618 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.8268179645205255 + f64.const 0.1397128701210022 + global.get $std/math/INEXACT + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 619 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 622 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 623 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 624 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 625 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 626 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 627 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.neg + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 628 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000152587890625 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 629 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0000152587890625 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 630 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.3552527156068805e-20 + f64.const 1.3552527156068805e-20 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 631 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.332636185032189e-302 + f64.const 9.332636185032189e-302 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 632 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.562684646268003e-309 + f64.const 5.562684646268003e-309 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 633 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5.562684646268003e-309 + f64.const -5.562684646268003e-309 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 634 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8988465674311579538646525e283 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 635 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 644 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 645 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 646 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 647 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 648 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.7963404059410095 + f32.const 0.19112196564674377 + global.get $std/math/INEXACT + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 649 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.4315357208251953 + f32.const -0.05180925130844116 + global.get $std/math/INEXACT + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 650 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.635400652885437 + f32.const 0.11911056190729141 + global.get $std/math/INEXACT + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 651 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 1.0306085348129272 + f32.const 0.1798270344734192 + global.get $std/math/INEXACT + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 652 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.8268179297447205 + f32.const 0.11588983237743378 + global.get $std/math/INEXACT + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 653 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 656 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 657 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 658 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 659 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 660 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 661 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 662 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000152587890625 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 663 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000152587890625 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 664 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.3552527156068805e-20 + f32.const 1.3552527156068805e-20 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 665 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.888609052210118e-31 + f32.const 7.888609052210118e-31 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 666 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.938735877055719e-39 + f32.const 2.938735877055719e-39 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 667 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.938735877055719e-39 + f32.const -2.938735877055719e-39 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 668 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1701411834604692317316873e14 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 669 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.535662560676869 + f64.const -1.0585895402489023 + f64.const 0.09766263514757156 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 681 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + f64.const 2.6868734126013067 + f64.const 0.35833948850631714 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 682 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + f64.const -1.889300091849528 + f64.const -0.46235957741737366 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 683 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + f64.const -0.9605469021111489 + f64.const -0.21524477005004883 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 684 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + f64.const 1.0919123946142109 + f64.const 0.3894443213939667 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 685 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + f64.const -1.468508500616424 + f64.const -0.448591411113739 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 686 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + f64.const 1.5641600512601268 + f64.const 0.3784842789173126 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 687 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + f64.const -0.10281658910678508 + f64.const -0.13993260264396667 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 688 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + f64.const 0.29697974004493516 + f64.const 0.44753071665763855 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 689 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + f64.const -1.5131612053303916 + f64.const 0.39708876609802246 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 690 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 693 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + f64.const 3.141592653589793 + f64.const -0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 694 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + f64.const 3.141592653589793 + f64.const -0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 695 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.neg + f64.const 3.141592653589793 + f64.const -0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 696 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 697 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 698 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 699 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const -3.141592653589793 + f64.const 0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 700 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + f64.const -3.141592653589793 + f64.const 0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 701 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.neg + f64.const -3.141592653589793 + f64.const 0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 702 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 703 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 704 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 705 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 706 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 707 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -0 + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 708 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 709 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 710 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.neg + f64.const -3.141592653589793 + f64.const 0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 711 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.neg + f64.const 3.141592653589793 + f64.const -0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 712 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 713 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 0 + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 714 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0.7853981633974483 + f64.const -0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 715 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.neg + f64.const 2.356194490192345 + f64.const -0.20682445168495178 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 716 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.const -0.7853981633974483 + f64.const 0.27576595544815063 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 717 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const -2.356194490192345 + f64.const 0.20682445168495178 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 718 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1125369292536007e-308 + f64.const 1 + f64.const 1.1125369292536007e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 719 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 8988465674311579538646525e283 + f64.const 1.1125369292536007e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 720 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 8988465674311579538646525e283 + f64.const 1.668805393880401e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 721 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const -8988465674311579538646525e283 + f64.const 3.141592653589793 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 722 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 4.535662651062012 + f32.const -1.0585895776748657 + f32.const -0.22352588176727295 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 731 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -8.887990951538086 + f32.const 2.686873435974121 + f32.const 0.09464472532272339 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 732 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.7636072635650635 + f32.const -1.8893001079559326 + f32.const -0.21941901743412018 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 733 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 4.567535400390625 + f32.const -0.9605468511581421 + f32.const 0.46015575528144836 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 734 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 4.811392307281494 + f32.const 1.0919123888015747 + f32.const -0.05708503723144531 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 735 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.450045585632324 + f32.const 0.6620717644691467 + f32.const -1.4685084819793701 + f32.const 0.19611206650733948 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 736 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.858890056610107 + f32.const 0.052154526114463806 + f32.const 1.5641601085662842 + f32.const 0.48143187165260315 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 737 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.7920545339584351 + f32.const 7.676402568817139 + f32.const -0.10281659662723541 + f32.const -0.4216274917125702 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 738 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6157026886940002 + f32.const 2.0119025707244873 + f32.const 0.29697975516319275 + f32.const 0.2322007566690445 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 739 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5587586760520935 + f32.const 0.03223983198404312 + f32.const -1.5131611824035645 + f32.const 0.16620726883411407 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 740 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 743 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0 + f32.const 3.1415927410125732 + f32.const 0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 744 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -1 + f32.const 3.1415927410125732 + f32.const 0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 745 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.neg + f32.const 3.1415927410125732 + f32.const 0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 746 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 747 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 748 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 749 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const -3.1415927410125732 + f32.const -0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 750 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -1 + f32.const -3.1415927410125732 + f32.const -0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 751 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.neg + f32.const -3.1415927410125732 + f32.const -0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 752 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 753 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 754 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0 + f32.const -1.5707963705062866 + f32.const -0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 755 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0 + f32.const -1.5707963705062866 + f32.const -0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 756 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const 1.5707963705062866 + f32.const 0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 757 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -0 + f32.const 1.5707963705062866 + f32.const 0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 758 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 759 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 760 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.neg + f32.const -3.1415927410125732 + f32.const -0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 761 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.neg + f32.const 3.1415927410125732 + f32.const 0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 762 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + f32.const 1.5707963705062866 + f32.const 0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 763 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 0 + f32.const -1.5707963705062866 + f32.const -0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 764 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0.7853981852531433 + f32.const 0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 765 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.neg + f32.const 2.356194496154785 + f32.const 0.02500828728079796 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 766 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.const -0.7853981852531433 + f32.const -0.3666777014732361 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 767 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const -2.356194496154785 + f32.const -0.02500828728079796 + global.get $std/math/INEXACT + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 768 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.877471754111438e-39 + f32.const 1 + f32.const 5.877471754111438e-39 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 769 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1701411834604692317316873e14 + f32.const 5.877471754111438e-39 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_atan2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 770 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -2.0055552545020245 + f64.const 0.46667951345443726 + global.get $std/math/INEXACT + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 782 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 1.6318162410515635 + f64.const -0.08160271495580673 + global.get $std/math/INEXACT + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 783 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.031293910673361 + f64.const -0.048101816326379776 + global.get $std/math/INEXACT + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 784 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -1.8692820012204925 + f64.const 0.08624018728733063 + global.get $std/math/INEXACT + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 785 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 2.100457720859702 + f64.const -0.2722989022731781 + global.get $std/math/INEXACT + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 786 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.8715311470455973 + f64.const 0.4414918124675751 + global.get $std/math/INEXACT + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 787 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.740839030300223 + f64.const 0.016453813761472702 + global.get $std/math/INEXACT + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 788 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.8251195400559286 + f64.const 0.30680638551712036 + global.get $std/math/INEXACT + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 789 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.9182102478959914 + f64.const 0.06543998420238495 + global.get $std/math/INEXACT + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 790 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.8788326906580094 + f64.const -0.2016713172197342 + global.get $std/math/INEXACT + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 791 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 794 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 795 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 796 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 797 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 798 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.313225746154785e-10 + f64.const 0.0009765625 + f64.const 0 + i32.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 799 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9.313225746154785e-10 + f64.const -0.0009765625 + f64.const 0 + i32.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 800 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 801 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 802 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8 + f64.const 2 + f64.const 0 + i32.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 803 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -2.0055553913116455 + f32.const -0.44719240069389343 + global.get $std/math/INEXACT + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 812 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 1.6318162679672241 + f32.const 0.44636252522468567 + global.get $std/math/INEXACT + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 813 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.0312938690185547 + f32.const 0.19483426213264465 + global.get $std/math/INEXACT + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 814 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -1.8692820072174072 + f32.const -0.17075514793395996 + global.get $std/math/INEXACT + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 815 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 2.1004576683044434 + f32.const -0.36362043023109436 + global.get $std/math/INEXACT + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 816 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.8715311288833618 + f32.const -0.12857209146022797 + global.get $std/math/INEXACT + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 817 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.7408390641212463 + f32.const -0.4655757546424866 + global.get $std/math/INEXACT + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 818 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.8251195549964905 + f32.const 0.05601907894015312 + global.get $std/math/INEXACT + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 819 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.9182102680206299 + f32.const 0.45498204231262207 + global.get $std/math/INEXACT + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 820 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.8788326978683472 + f32.const -0.22978967428207397 + global.get $std/math/INEXACT + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 821 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 824 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 825 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 826 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 827 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 828 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.313225746154785e-10 + f32.const 0.0009765625 + f32.const 0 + i32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 829 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -9.313225746154785e-10 + f32.const -0.0009765625 + f32.const 0 + i32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 830 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 831 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 832 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 8 + f32.const 2 + f32.const 0 + i32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 833 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -8 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 845 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 5 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 846 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -8 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 847 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -6 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 848 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 10 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 849 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 850 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 851 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 852 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 853 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 854 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 857 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 858 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 859 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 860 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 861 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 862 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 863 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 864 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 865 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000152587890625 + f64.const 2 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 866 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0000152587890625 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 867 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999923706054688 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 868 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.9999923706054688 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 869 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.888609052210118e-31 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 870 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 871 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 872 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 873 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 874 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 875 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 876 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 877 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 878 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 879 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 880 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000152587890625 + f64.const 2 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 881 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0000152587890625 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 882 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999923706054688 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 883 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.9999923706054688 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 884 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.888609052210118e-31 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 885 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 886 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 887 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 888 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 889 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 890 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 891 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 892 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 893 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 894 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 895 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000152587890625 + f64.const 2 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 896 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0000152587890625 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 897 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999923706054688 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 898 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.9999923706054688 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 899 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.888609052210118e-31 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 900 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceil + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 901 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -8 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 910 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 5 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 911 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -8 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 912 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -6 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 913 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 10 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 914 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 915 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 916 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 917 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 918 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 919 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 922 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 923 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 924 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 925 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 926 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 927 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 928 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 929 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 930 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000152587890625 + f32.const 2 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 931 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000152587890625 + f32.const -1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 932 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999923706054688 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 933 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.9999923706054688 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 934 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.888609052210118e-31 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 935 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 936 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 937 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 938 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 939 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 940 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 941 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 942 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 943 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 944 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 945 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000152587890625 + f32.const 2 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 946 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000152587890625 + f32.const -1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 947 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999923706054688 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 948 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.9999923706054688 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 949 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.888609052210118e-31 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 950 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 951 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 952 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 953 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 954 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 955 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 956 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 957 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 958 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 959 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 960 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000152587890625 + f32.const 2 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 961 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000152587890625 + f32.const -1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 962 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999923706054688 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 963 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.9999923706054688 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 964 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.888609052210118e-31 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 965 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_ceilf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 966 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -0.21126281599887137 + f64.const -0.10962469130754471 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 977 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -0.35895602297578955 + f64.const -0.10759828239679337 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 978 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -0.503333091765516 + f64.const -0.021430473774671555 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 979 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 0.9692853212503283 + f64.const -0.4787876307964325 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 980 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const -0.9875878064788627 + f64.const 0.4880668818950653 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 981 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.7887730869248576 + f64.const 0.12708666920661926 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 982 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const 0.9184692397007294 + f64.const -0.26120713353157043 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 983 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.8463190467415896 + f64.const -0.302586168050766 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 984 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.7150139289952383 + f64.const -0.08537746220827103 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 985 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const 0.7783494994757447 + f64.const 0.30890750885009766 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 986 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 989 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 990 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 991 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 992 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 993 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0.5403023058681398 + f64.const 0.4288286566734314 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 994 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const -0.4161468365471424 + f64.const -0.35859397053718567 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 995 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3 + f64.const -0.9899924966004454 + f64.const 0.3788451552391052 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 996 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4 + f64.const -0.6536436208636119 + f64.const -0.23280560970306396 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 997 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5 + f64.const 0.28366218546322625 + f64.const -0.3277357816696167 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 998 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.1 + f64.const 0.9950041652780258 + f64.const 0.49558526277542114 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 999 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.2 + f64.const 0.9800665778412416 + f64.const -0.02407640963792801 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1000 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.3 + f64.const 0.955336489125606 + f64.const -0.37772229313850403 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1001 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.4 + f64.const 0.9210609940028851 + f64.const 0.25818485021591187 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1002 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 0.8775825618903728 + f64.const 0.3839152157306671 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1003 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3641409746639015e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1004 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1820704873319507e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1005 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1006 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5e-324 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1007 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3.14 + f64.const -0.9999987317275395 + f64.const 0.3855516016483307 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1008 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8988465674311579538646525e283 + f64.const -0.826369834614148 + f64.const -0.3695965111255646 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1009 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + f64.const -0.9999876894265599 + f64.const 0.23448343575000763 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1010 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8988465674311579538646525e283 + f64.const -0.826369834614148 + f64.const -0.3695965111255646 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1011 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.14 + f64.const -0.9999987317275395 + f64.const 0.3855516016483307 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1012 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.1415 + f64.const -0.9999999957076562 + f64.const -0.30608975887298584 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1013 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.141592 + f64.const -0.9999999999997864 + f64.const 0.15403328835964203 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1014 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.14159265 + f64.const -1 + f64.const -0.02901807427406311 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1015 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.1415926535 + f64.const -1 + f64.const -1.8155848010792397e-05 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1016 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.141592653589 + f64.const -1 + f64.const -1.4169914130945926e-09 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1017 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.14159265358979 + f64.const -1 + f64.const -2.350864897985184e-14 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1018 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.141592653589793 + f64.const -1 + f64.const -3.377158741883318e-17 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1019 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.57 + f64.const 7.963267107332633e-04 + f64.const 0.2968159317970276 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1020 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.570796 + f64.const 3.2679489653813835e-07 + f64.const -0.32570895552635193 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1021 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5707963267 + f64.const 9.489659630678013e-11 + f64.const -0.27245646715164185 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1022 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.57079632679489 + f64.const 6.722570487708307e-15 + f64.const -0.10747683793306351 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1023 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5707963267948966 + f64.const 6.123233995736766e-17 + f64.const 0.12148229777812958 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1024 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6700635199486106 + f64.const 0.7837822193016158 + f64.const -0.07278502732515335 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1025 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5343890189437553 + f64.const 0.8605799719039517 + f64.const -0.48434028029441833 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1026 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.43999702754890085 + f64.const 0.9047529293001976 + f64.const 0.029777472838759422 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1027 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9902840844687313 + f64.const 0.5484523364480768 + f64.const 0.19765280187129974 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1028 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.45381447534338915 + f64.const 0.8987813902263783 + f64.const -0.017724866047501564 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1029 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.4609888813583589 + f64.const 0.8956130474713057 + f64.const 0.36449819803237915 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1030 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9285434097956422 + f64.const 0.5990009794292984 + f64.const -0.2899416387081146 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1031 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9109092124488352 + f64.const 0.6130276692774378 + f64.const -0.49353134632110596 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1032 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.8328600650359556 + f64.const 0.6727624710046357 + f64.const -0.36606088280677795 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1033 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9536201252203433 + f64.const 0.5787346183487084 + f64.const -0.17089833319187164 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1034 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.8726590065457699 + f64.const 0.6427919144259047 + f64.const -0.2744986116886139 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1035 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.18100447535968447 + f64.const 0.9836633656884893 + f64.const 3.0195272993296385e-03 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1036 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.356194490349839 + f64.const -0.7071067812979126 + f64.const -0.48278746008872986 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1037 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.356194490372272 + f64.const -0.7071067813137752 + f64.const -0.4866050183773041 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1038 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3561944902251115 + f64.const -0.707106781209717 + f64.const -0.3533952236175537 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1039 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3561944903149996 + f64.const -0.7071067812732775 + f64.const -0.41911986470222473 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1040 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3561944903603527 + f64.const -0.707106781305347 + f64.const -0.4706200063228607 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1041 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3561944903826197 + f64.const -0.7071067813210922 + f64.const -0.30618351697921753 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1042 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.356194490371803 + f64.const -0.7071067813134436 + f64.const -0.30564820766448975 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1043 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.356194490399931 + f64.const -0.7071067813333329 + f64.const -0.38845571875572205 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1044 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.356194490260191 + f64.const -0.707106781234522 + f64.const -0.23796851933002472 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1045 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3561944904043153 + f64.const -0.7071067813364332 + f64.const -0.3274589478969574 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1046 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0943951024759446 + f64.const -0.5000000000716629 + f64.const -0.41711342334747314 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1047 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.09439510243324 + f64.const -0.5000000000346797 + f64.const -0.3566164970397949 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1048 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0943951025133885 + f64.const -0.5000000001040902 + f64.const -0.2253485918045044 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1049 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0943951025466707 + f64.const -0.5000000001329135 + f64.const -0.12982259690761566 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1050 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.094395102413896 + f64.const -0.5000000000179272 + f64.const -0.15886764228343964 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1051 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0943951024223404 + f64.const -0.5000000000252403 + f64.const -0.266656756401062 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1052 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0943951024960477 + f64.const -0.5000000000890726 + f64.const -0.4652077853679657 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1053 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0943951025173315 + f64.const -0.500000000107505 + f64.const -0.46710994839668274 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1054 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.094395102405924 + f64.const -0.5000000000110234 + f64.const -0.2469603717327118 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1055 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.094395102428558 + f64.const -0.500000000030625 + f64.const -0.3799441158771515 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1056 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.513210770864056 + f64.const -0.6125076939987759 + f64.const 0.4989966154098511 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1057 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 6.802886129801017 + f64.const 0.8679677961345452 + f64.const 0.4972165524959564 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1058 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.171925393086408 + f64.const -0.9682027440424544 + f64.const -0.49827584624290466 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1059 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.854690112888573 + f64.const -0.8418535663818527 + f64.const 0.4974979758262634 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1060 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.213510813859608 + f64.const -0.9777659802838506 + f64.const -0.4995604455471039 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1061 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.782449081542151 + f64.const 0.07147156381293339 + f64.const 0.49858126044273376 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1062 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.500261332273616 + f64.const 0.34639017633458113 + f64.const -0.4996210038661957 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1063 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.121739418731588 + f64.const -0.9544341297541811 + f64.const 0.4982815086841583 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1064 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 6.784954020476316 + f64.const 0.8767332233166646 + f64.const -0.4988083839416504 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1065 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.770846542666664 + f64.const -0.7936984117400705 + f64.const 0.4999682903289795 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1066 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.313225746154785e-10 + f64.const 1 + f64.const 0.001953125 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1069 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9.313225746154785e-10 + f64.const 1 + f64.const 0.001953125 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1070 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1071 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072014e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1072 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1073 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5e-324 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1074 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1075 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1076 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-323 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1077 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.4e-323 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1078 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.562684646268003e-309 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1079 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1125369292536007e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1080 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072004e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1081 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507201e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1082 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507202e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1083 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072024e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1084 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.4501477170144003e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1085 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.450147717014403e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1086 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.450147717014406e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1087 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.900295434028806e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1088 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.450580596923828e-09 + f64.const 1 + f64.const 0.125 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1089 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4901161193847656e-08 + f64.const 0.9999999999999999 + f64.const -1.850372590034581e-17 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1090 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.470348358154297e-08 + f64.const 0.999999999999999 + f64.const -1.4988010832439613e-15 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1091 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-323 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1092 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.4e-323 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1093 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5.562684646268003e-309 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1094 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.1125369292536007e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1095 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072004e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1096 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507201e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1097 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507202e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1098 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072024e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1099 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.4501477170144003e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.450147717014403e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.450147717014406e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.900295434028806e-308 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1103 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.450580596923828e-09 + f64.const 1 + f64.const 0.125 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1104 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.4901161193847656e-08 + f64.const 0.9999999999999999 + f64.const -1.850372590034581e-17 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.470348358154297e-08 + f64.const 0.999999999999999 + f64.const -1.4988010832439613e-15 + global.get $std/math/INEXACT + call $std/math/test_cos + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/math/kPI + f64.const 2 + f64.div + call $~lib/math/NativeMath.cos + global.get $std/math/kPI + f64.const 2 + f64.div + call $~lib/bindings/dom/Math.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + global.get $std/math/kPI + f64.mul + f64.const 2 + f64.div + call $~lib/math/NativeMath.cos + f64.const 2 + global.get $std/math/kPI + f64.mul + f64.const 2 + f64.div + call $~lib/bindings/dom/Math.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.e+90 + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.cos + f64.const 1.e+90 + global.get $std/math/kPI + f64.mul + call $~lib/bindings/dom/Math.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3283064365386963e-10 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.3283064365386963e-10 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.15707963267948966 + call $~lib/math/NativeMath.cos + f64.const 0.9876883405951378 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1118 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7812504768371582 + call $~lib/math/NativeMath.cos + f64.const 0.7100335477927638 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.78125 + call $~lib/math/NativeMath.cos + f64.const 0.7100338835660797 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9238795325112867 + f64.const 0.39269908169872414 + call $~lib/math/NativeMath.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9238795325112867 + f64.const -0.39269908169872414 + call $~lib/math/NativeMath.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.725290298461914e-09 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9689124217106447 + f64.const 0.25 + call $~lib/math/NativeMath.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.8775825618903728 + f64.const 0.5 + call $~lib/math/NativeMath.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1132 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7073882691671998 + f64.const 0.785 + call $~lib/math/NativeMath.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1133 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 6.123233995736766e-17 + f64.const 1.5707963267948966 + call $~lib/math/NativeMath.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1135 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7071067811865474 + f64.const 7 + f64.const 4 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7071067811865477 + f64.const 9 + f64.const 4 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1138 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.7071067811865467 + f64.const 11 + f64.const 4 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1139 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.7071067811865471 + f64.const 13 + f64.const 4 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9367521275331447 + f64.const 1e6 + call $~lib/math/NativeMath.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1141 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3.435757038074824e-12 + f64.const 1048575 + f64.const 2 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.cos + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -0.21126316487789154 + f32.const 0.48328569531440735 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -0.3589562177658081 + f32.const 0.042505208402872086 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -0.5033331513404846 + f32.const -0.1386195719242096 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 0.9692853689193726 + f32.const 0.1786951720714569 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const -0.9875878691673279 + f32.const 0.1389600932598114 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.7887731194496155 + f32.const 0.2989593744277954 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const 0.918469250202179 + f32.const 0.24250665307044983 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.8463190197944641 + f32.const -0.24033240973949432 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.7150139212608337 + f32.const -0.3372635245323181 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1159 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const 0.7783495187759399 + f32.const 0.16550153493881226 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1160 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1164 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1165 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1167 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.862645149230957e-09 + f32.const 1 + f32.const 1.4551915228366852e-11 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1170 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.862645149230957e-09 + f32.const 1 + f32.const 1.4551915228366852e-11 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1171 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754943508222875e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1172 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754943508222875e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1173 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1174 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.401298464324817e-45 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.802596928649634e-45 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1176 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.2611686178923354e-44 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.938735877055719e-39 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1178 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.877471754111438e-39 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1179 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754940705625946e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1180 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754942106924411e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.175494490952134e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1182 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754946310819804e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3509880009953429e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1184 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.350988701644575e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1185 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3509895424236536e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1186 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.70197740328915e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.450580596923828e-09 + f32.const 1 + f32.const 2.3283064365386963e-10 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1188 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.000244140625 + f32.const 1 + f32.const 0.25 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1189 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.00048828125 + f32.const 0.9999998807907104 + f32.const -3.973643103449831e-08 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1190 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.0009765625 + f32.const 0.9999995231628418 + f32.const -6.357828397085541e-07 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1191 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.802596928649634e-45 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1192 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.2611686178923354e-44 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.938735877055719e-39 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1194 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -5.877471754111438e-39 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1195 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754940705625946e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1196 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754942106924411e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1197 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.175494490952134e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1198 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754946310819804e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.3509880009953429e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.350988701644575e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1201 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.3509895424236536e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1202 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -4.70197740328915e-38 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1203 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.450580596923828e-09 + f32.const 1 + f32.const 2.3283064365386963e-10 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1204 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.000244140625 + f32.const 1 + f32.const 0.25 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1205 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.00048828125 + f32.const 0.9999998807907104 + f32.const -3.973643103449831e-08 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1206 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.0009765625 + f32.const 0.9999995231628418 + f32.const -6.357828397085541e-07 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1207 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 255.99993896484375 + f32.const -0.03985174745321274 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1210 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5033165 + f32.const 0.8471871614456177 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1211 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 421657440 + f32.const 0.6728929281234741 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1212 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2147483392 + f32.const 0.9610780477523804 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1213 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 68719476736 + f32.const 0.1694190502166748 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1214 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 549755813888 + f32.const 0.20735950767993927 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1215 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MAX_VALUE + f32.const 0.8530210256576538 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -255.99993896484375 + f32.const -0.03985174745321274 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1217 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -5033165 + f32.const 0.8471871614456177 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1218 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -421657440 + f32.const 0.6728929281234741 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2147483392 + f32.const 0.9610780477523804 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1220 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -68719476736 + f32.const 0.1694190502166748 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1221 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -549755813888 + f32.const 0.20735950767993927 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1222 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MAX_VALUE + f32.neg + f32.const 0.8530210256576538 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_cosf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1223 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 1593.5209938862329 + f64.const -0.38098856806755066 + global.get $std/math/INEXACT + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1234 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 38.56174928426729 + f64.const -0.2712278366088867 + global.get $std/math/INEXACT + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1235 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const 2182.630979595893 + f64.const 0.0817827582359314 + global.get $std/math/INEXACT + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1236 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 343.273849250879 + f64.const -0.429940402507782 + global.get $std/math/INEXACT + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 5291.779170005587 + f64.const -0.1592995822429657 + global.get $std/math/INEXACT + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1238 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 1.2272321957342842 + f64.const 0.23280741274356842 + global.get $std/math/INEXACT + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1239 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const 1.083808541871197 + f64.const -0.3960916996002197 + global.get $std/math/INEXACT + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1240 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 1.1619803583175077 + f64.const 0.37748390436172485 + global.get $std/math/INEXACT + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1241 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 1.3149236876276706 + f64.const 0.43587008118629456 + global.get $std/math/INEXACT + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1242 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const 1.2393413245934533 + f64.const 0.10201606154441833 + global.get $std/math/INEXACT + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1243 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1246 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1247 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1248 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1249 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1250 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 1593.5216064453125 + f32.const 0.26242581009864807 + global.get $std/math/INEXACT + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1259 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 38.56174087524414 + f32.const -0.08168885856866837 + global.get $std/math/INEXACT + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1260 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const 2182.631103515625 + f32.const -0.02331414446234703 + global.get $std/math/INEXACT + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1261 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 343.2738037109375 + f32.const 0.20081493258476257 + global.get $std/math/INEXACT + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1262 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 5291.78173828125 + f32.const 0.36286723613739014 + global.get $std/math/INEXACT + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1263 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 1.2272322177886963 + f32.const 0.32777416706085205 + global.get $std/math/INEXACT + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1264 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const 1.0838085412979126 + f32.const -0.039848703891038895 + global.get $std/math/INEXACT + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1265 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 1.161980390548706 + f32.const 0.15274477005004883 + global.get $std/math/INEXACT + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1266 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 1.314923644065857 + f32.const -0.2387111485004425 + global.get $std/math/INEXACT + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1267 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const 1.2393412590026855 + f32.const -0.45791932940483093 + global.get $std/math/INEXACT + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1268 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1271 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1272 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1273 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1274 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1275 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 3.137706068161745e-04 + f64.const -0.2599197328090668 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1287 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 77.11053017112141 + f64.const -0.02792675793170929 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const 2.290813384916323e-04 + f64.const -0.24974334239959717 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1289 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 1.4565661260931588e-03 + f64.const -0.4816822409629822 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1290 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 10583.558245524993 + f64.const 0.17696762084960938 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1291 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 1.9386384525571998 + f64.const -0.4964246451854706 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1292 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const 0.6659078892838025 + f64.const -0.10608318448066711 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1293 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 1.7537559518626311 + f64.const -0.39162111282348633 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1294 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 2.1687528885129246 + f64.const -0.2996125817298889 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1295 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const 0.5072437089402843 + f64.const 0.47261738777160645 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1296 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1299 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1300 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 2.718281828459045 + f64.const -0.3255307376384735 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1301 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0.36787944117144233 + f64.const 0.22389651834964752 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1302 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1303 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1304 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1305 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0397214889526365 + f64.const 2.828429155876411 + f64.const 0.18803080916404724 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1306 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0397214889526365 + f64.const 0.35355313670217847 + f64.const 0.2527272403240204 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1307 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0397210121154785 + f64.const 2.8284278071766122 + f64.const -0.4184139370918274 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1308 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0397214889526367 + f64.const 2.8284291558764116 + f64.const -0.22618377208709717 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1309 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MIN_VALUE + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1312 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MIN_VALUE + f64.neg + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1313 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4649454530587146735 + f64.reinterpret_i64 + i64.const 9218868437227405098 + f64.reinterpret_i64 + i64.const -4631092234375135232 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1315 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4649454530587146736 + f64.reinterpret_i64 + f64.const inf + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/OVERFLOW + i32.or + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1322 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4573606559926636463 + f64.reinterpret_i64 + global.get $~lib/builtins/f64.MIN_VALUE + i64.const 4602678819172646912 + f64.reinterpret_i64 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1323 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4573606559926636462 + f64.reinterpret_i64 + f64.const 0 + i64.const -4620693217682128896 + f64.reinterpret_i64 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1330 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4573929700241785646 + f64.reinterpret_i64 + i64.const 4503599627370620 + f64.reinterpret_i64 + i64.const 4598386411140284416 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1337 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4573929700241785645 + f64.reinterpret_i64 + i64.const 4503599627370108 + f64.reinterpret_i64 + i64.const 4503599627370108 + f64.reinterpret_i64 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1344 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4602685064124656555 + f64.reinterpret_i64 + i64.const 4610109149550689567 + f64.reinterpret_i64 + i64.const 4602678819172646912 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1351 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4603836184166978885 + f64.reinterpret_i64 + i64.const 4611122094629841017 + f64.reinterpret_i64 + i64.const 4602678819172646912 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1358 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4605718951180848880 + f64.reinterpret_i64 + i64.const 4612385506662149744 + f64.reinterpret_i64 + i64.const -4620693217682128896 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1365 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4605835761386121865 + f64.reinterpret_i64 + i64.const 4612453422537445296 + f64.reinterpret_i64 + i64.const 4602678819172646912 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1371 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4610006203169397430 + f64.reinterpret_i64 + i64.const 4617415291835269761 + f64.reinterpret_i64 + i64.const 4602678819172646912 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1377 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4610219797808568955 + f64.reinterpret_i64 + i64.const 4617693563882825047 + f64.reinterpret_i64 + i64.const 4602678819172646912 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1383 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4619182163989041060 + f64.reinterpret_i64 + i64.const 4650062712266849886 + f64.reinterpret_i64 + i64.const 4602678819172646912 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1390 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4622394943780502425 + f64.reinterpret_i64 + i64.const 4678652243157503230 + f64.reinterpret_i64 + i64.const 4602678819172646912 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1397 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4622613550143616215 + f64.reinterpret_i64 + i64.const 4680943662238555301 + f64.reinterpret_i64 + i64.const 4602678819172646912 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1404 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4622829325869063755 + f64.reinterpret_i64 + i64.const 4683793372338329074 + f64.reinterpret_i64 + i64.const 4602678819172646912 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1411 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4645970351893354075 + f64.reinterpret_i64 + i64.const 7289148599681560140 + f64.reinterpret_i64 + i64.const 4602678819172646912 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1418 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4647695036380671130 + f64.reinterpret_i64 + i64.const 7926454981994343700 + f64.reinterpret_i64 + i64.const -4620693217682128896 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1425 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4819432143425896336 + f64.reinterpret_i64 + i64.const 4607182418800017169 + f64.reinterpret_i64 + i64.const 4602678819172646912 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1432 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4819256221565452171 + f64.reinterpret_i64 + i64.const 4607182418800017163 + f64.reinterpret_i64 + i64.const -4620693217682128896 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1439 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 3.1377049162983894e-04 + f32.const -0.030193336308002472 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1453 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 77.11051177978516 + f32.const -0.2875460684299469 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1454 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const 2.2908132814336568e-04 + f32.const 0.2237040400505066 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1455 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 1.4565663877874613e-03 + f32.const 0.36469703912734985 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1456 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 10583.5634765625 + f32.const 0.45962104201316833 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1457 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 1.93863844871521 + f32.const 0.3568260967731476 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1458 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const 0.6659078598022461 + f32.const -0.38294991850852966 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1459 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 1.753756046295166 + f32.const 0.44355490803718567 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1460 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 2.168752908706665 + f32.const 0.24562469124794006 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1461 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const 0.5072436928749084 + f32.const -0.3974292278289795 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1462 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1465 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1466 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 2.7182817459106445 + f32.const -0.3462330996990204 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0.3678794503211975 + f32.const 0.3070148527622223 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1468 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1469 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1470 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1471 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 88.72283172607422 + f32.const 340279851902147610656242e15 + f32.const -0.09067153930664062 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1472 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 88.72283935546875 + f32.const inf + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/OVERFLOW + i32.or + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1473 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -103.97207641601562 + f32.const 1.401298464324817e-45 + f32.const 0.49999967217445374 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1474 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -103.97208404541016 + f32.const 0 + f32.const -0.49999651312828064 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1475 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.3465735614299774 + f32.const 1.4142135381698608 + f32.const 0.13922421634197235 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1476 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.3465735912322998 + f32.const 1.4142135381698608 + f32.const -0.21432916820049286 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1477 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.3465736210346222 + f32.const 1.4142136573791504 + f32.const 0.43211743235588074 + global.get $std/math/INEXACT + call $std/math/test_expf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1478 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -0.9996862293931839 + f64.const -0.2760058343410492 + global.get $std/math/INEXACT + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1490 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 76.11053017112141 + f64.const -0.02792675793170929 + global.get $std/math/INEXACT + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1491 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -0.9997709186615084 + f64.const 0.10052496194839478 + global.get $std/math/INEXACT + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1492 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -0.9985434338739069 + f64.const -0.27437829971313477 + global.get $std/math/INEXACT + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1493 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 10582.558245524993 + f64.const 0.17696762084960938 + global.get $std/math/INEXACT + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1494 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.9386384525571999 + f64.const 0.007150684483349323 + global.get $std/math/INEXACT + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1495 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.3340921107161975 + f64.const -0.21216636896133423 + global.get $std/math/INEXACT + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1496 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.7537559518626312 + f64.const 0.21675777435302734 + global.get $std/math/INEXACT + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1497 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 1.1687528885129248 + f64.const 0.4007748067378998 + global.get $std/math/INEXACT + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1498 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.4927562910597158 + f64.const -0.05476519837975502 + global.get $std/math/INEXACT + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1499 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1502 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1503 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1.7182818284590453 + f64.const 0.348938524723053 + global.get $std/math/INEXACT + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1504 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0.6321205588285577 + f64.const 0.11194825917482376 + global.get $std/math/INEXACT + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1505 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1506 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1507 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1508 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507201e-308 + f64.const 2.225073858507201e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1509 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507201e-308 + f64.const -2.225073858507201e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_expm1 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1510 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -0.9996862411499023 + f32.const -0.19532723724842072 + global.get $std/math/INEXACT + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1519 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 76.11051177978516 + f32.const -0.2875460684299469 + global.get $std/math/INEXACT + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1520 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -0.9997709393501282 + f32.const -0.34686920046806335 + global.get $std/math/INEXACT + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1521 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -0.9985434412956238 + f32.const -0.1281939446926117 + global.get $std/math/INEXACT + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1522 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 10582.5634765625 + f32.const 0.45962104201316833 + global.get $std/math/INEXACT + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1523 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.9386383891105652 + f32.const -0.28634780645370483 + global.get $std/math/INEXACT + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1524 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.3340921103954315 + f32.const 0.23410017788410187 + global.get $std/math/INEXACT + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1525 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.7537559866905212 + f32.const -0.11289017647504807 + global.get $std/math/INEXACT + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1526 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 1.168752908706665 + f32.const 0.4912493824958801 + global.get $std/math/INEXACT + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1527 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.49275627732276917 + f32.const 0.20514154434204102 + global.get $std/math/INEXACT + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1528 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1531 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1532 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1.718281865119934 + f32.const 0.3075338304042816 + global.get $std/math/INEXACT + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1533 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0.6321205496788025 + f32.const 0.15350742638111115 + global.get $std/math/INEXACT + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1534 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1535 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1536 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_expm1f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1537 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4602641186874283791 + f64.reinterpret_i64 + i64.const 4570745787852977234 + f64.reinterpret_i64 + i64.const 4593785391990964224 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1549 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4616578323568966759 + f64.reinterpret_i64 + i64.const 4626414420249767698 + f64.reinterpret_i64 + i64.const 4584516730696499200 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1550 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4602464091242371353 + f64.reinterpret_i64 + i64.const 4569061019426535842 + f64.reinterpret_i64 + i64.const -4624115860477313024 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1551 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4604332007749985084 + f64.reinterpret_i64 + i64.const 4577384368165340865 + f64.reinterpret_i64 + i64.const -4624546881383432192 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1552 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4621406507342668262 + f64.reinterpret_i64 + i64.const 4648630624867737726 + f64.reinterpret_i64 + i64.const -4632306693286395904 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1553 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4604137858433287319 + f64.reinterpret_i64 + i64.const 4609804680828834897 + f64.reinterpret_i64 + i64.const -4629668059727003648 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1554 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4622375691843501615 + f64.reinterpret_i64 + i64.const 4604970224741804156 + f64.reinterpret_i64 + i64.const -4625474567475822592 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1555 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4603235101512779211 + f64.reinterpret_i64 + i64.const 4609326441051132446 + f64.reinterpret_i64 + i64.const 4598566683265728512 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1556 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4605148163534189634 + f64.reinterpret_i64 + i64.const 4610380807161541490 + f64.reinterpret_i64 + i64.const -4641791869250961408 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1557 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4619083057392940530 + f64.reinterpret_i64 + i64.const 4603802020283029177 + f64.reinterpret_i64 + i64.const -4624080701338157056 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1558 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + i64.const 4607182418800017408 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1561 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + i64.const 4607182418800017408 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1562 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + i64.const 4611686018427387904 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1563 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + i64.const 4602678819172646912 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1564 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1565 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1566 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1567 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4611677222334365696 + f64.reinterpret_i64 + i64.const 4616177432330998198 + f64.reinterpret_i64 + i64.const 4594487510695936000 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1568 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4571172093576400077 + f64.reinterpret_i64 + i64.const 4826838566504112 + f64.reinterpret_i64 + i64.const -4626215863798726656 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1569 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4571171213967097856 + f64.reinterpret_i64 + i64.const 4503599627370496 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1570 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4571170334357795635 + f64.reinterpret_i64 + i64.const 4202007033009479 + f64.reinterpret_i64 + i64.const 4596318005893267456 + f64.reinterpret_i64 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1571 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4571162417874075648 + f64.reinterpret_i64 + i64.const 2251799813685248 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1572 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4652217535464420147 + f64.reinterpret_i64 + i64.const 9218265252038683278 + f64.reinterpret_i64 + i64.const 4600821605520637952 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1573 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4652218415073722368 + f64.reinterpret_i64 + f64.const inf + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1574 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4652218854878373478 + f64.reinterpret_i64 + f64.const inf + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1575 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4614253070214989087 + f64.reinterpret_i64 + i64.const 4621152157524017948 + f64.reinterpret_i64 + i64.const 4600753005229244416 + f64.reinterpret_i64 + global.get $std/math/INEXACT + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1576 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4571166815920586752 + f64.reinterpret_i64 + i64.const 3184525836262886 + f64.reinterpret_i64 + i64.const -4624614737571741696 + f64.reinterpret_i64 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1577 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4571162417874075648 + f64.reinterpret_i64 + i64.const 2251799813685248 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1578 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4571158019827564544 + f64.reinterpret_i64 + i64.const 1592262918131443 + f64.reinterpret_i64 + i64.const -4629118337199112192 + f64.reinterpret_i64 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1579 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4571153621781053440 + f64.reinterpret_i64 + i64.const 1125899906842624 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1580 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4571149223734542336 + f64.reinterpret_i64 + i64.const 562949953421312 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1581 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4570933719455498240 + f64.reinterpret_i64 + i64.const 1 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1582 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4570931520432242688 + f64.reinterpret_i64 + i64.const 1 + f64.reinterpret_i64 + i64.const 4598947915300339712 + f64.reinterpret_i64 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1583 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4570929321408987136 + f64.reinterpret_i64 + f64.const 0 + i64.const -4620693217682128896 + f64.reinterpret_i64 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1584 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4566650022153682944 + f64.reinterpret_i64 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4602641186669199360 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4570745785645268992 + f64.reinterpret_i64 + f32.demote_f64 + i64.const -4633844389825740800 + f64.reinterpret_i64 + f32.demote_f64 + global.get $std/math/INEXACT + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1596 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4616578323332464640 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4626414419599949824 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4599818385449025536 + f64.reinterpret_i64 + f32.demote_f64 + global.get $std/math/INEXACT + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4602464091208941568 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4569061019225161728 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4594754148171251712 + f64.reinterpret_i64 + f32.demote_f64 + global.get $std/math/INEXACT + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1598 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4604332007919452160 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4577384368955195392 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4598362462939512832 + f64.reinterpret_i64 + f32.demote_f64 + global.get $std/math/INEXACT + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1599 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4621406507597037568 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4648630626491039744 + f64.reinterpret_i64 + f32.demote_f64 + i64.const -4629234484925956096 + f64.reinterpret_i64 + f32.demote_f64 + global.get $std/math/INEXACT + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1600 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4604137858217803776 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4609804680480948224 + f64.reinterpret_i64 + f32.demote_f64 + i64.const -4621992221413998592 + f64.reinterpret_i64 + f32.demote_f64 + global.get $std/math/INEXACT + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1601 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4622375691663441920 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4604970224490381312 + f64.reinterpret_i64 + f32.demote_f64 + i64.const -4622843720155267072 + f64.reinterpret_i64 + f32.demote_f64 + global.get $std/math/INEXACT + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1602 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4603235101726212096 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4609326441241247744 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4594599154612699136 + f64.reinterpret_i64 + f32.demote_f64 + global.get $std/math/INEXACT + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1603 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4605148163374841856 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4610380806857162752 + f64.reinterpret_i64 + f32.demote_f64 + i64.const -4622656250201505792 + f64.reinterpret_i64 + f32.demote_f64 + global.get $std/math/INEXACT + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1604 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4619083057528307712 + f64.reinterpret_i64 + f32.demote_f64 + i64.const 4603802020229414912 + f64.reinterpret_i64 + f32.demote_f64 + i64.const -4626672421506646016 + f64.reinterpret_i64 + f32.demote_f64 + global.get $std/math/INEXACT + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1605 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -9 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1617 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 4 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1618 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -9 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1619 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -7 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1620 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 9 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1621 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1622 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1623 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1624 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1625 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1626 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1629 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1630 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1631 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1632 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1633 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1634 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1635 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1636 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1637 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000152587890625 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1638 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0000152587890625 + f64.const -2 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1639 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999923706054688 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1640 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.9999923706054688 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1641 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.888609052210118e-31 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1642 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_floor + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1643 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -9 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1652 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 4 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1653 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -9 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1654 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -7 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1655 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 9 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1656 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1657 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1658 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1659 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1660 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1661 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1664 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1665 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1666 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1667 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1668 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1669 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1670 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1671 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1672 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000152587890625 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1673 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000152587890625 + f32.const -2 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1674 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999923706054688 + f32.const 0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1675 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.9999923706054688 + f32.const -1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1676 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.888609052210118e-31 + f32.const 0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1677 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const -1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_floorf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1678 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.535662560676869 + f64.const 9.25452742288464 + f64.const -0.31188681721687317 + global.get $std/math/INEXACT + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1692 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + f64.const 9.893305808328252 + f64.const 0.4593673348426819 + global.get $std/math/INEXACT + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1693 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + f64.const 8.825301797432132 + f64.const -0.1701754331588745 + global.get $std/math/INEXACT + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1694 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + f64.const 7.970265885519092 + f64.const -0.3176782727241516 + global.get $std/math/INEXACT + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1695 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + f64.const 10.441639651824575 + f64.const -0.2693633437156677 + global.get $std/math/INEXACT + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1696 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + f64.const 6.483936052542593 + f64.const 0.35618898272514343 + global.get $std/math/INEXACT + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1697 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + f64.const 7.859063309581766 + f64.const 0.08044655621051788 + global.get $std/math/INEXACT + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1698 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + f64.const 7.717156764899584 + f64.const 0.05178084969520569 + global.get $std/math/INEXACT + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1699 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + f64.const 2.104006123874314 + f64.const -0.0918039008975029 + global.get $std/math/INEXACT + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1700 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + f64.const 0.5596880129062913 + f64.const 0.1383407711982727 + global.get $std/math/INEXACT + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1701 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3 + f64.const 4 + f64.const 5 + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1704 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3 + f64.const 4 + f64.const 5 + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1705 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4 + f64.const 3 + f64.const 5 + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1706 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4 + f64.const -3 + f64.const 5 + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1707 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3 + f64.const -4 + f64.const 5 + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1708 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + f64.const 0 + f64.const 1797693134862315708145274e284 + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1709 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + f64.const -0 + f64.const 1797693134862315708145274e284 + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1710 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + f64.const 0 + f64.const 5e-324 + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1711 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + f64.const -0 + f64.const 5e-324 + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1712 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1713 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1714 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1715 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1716 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 1 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1717 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.neg + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1718 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1719 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const inf + f64.neg + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1720 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1721 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1722 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1723 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1724 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 4.535662651062012 + f32.const 9.254528045654297 + f32.const 0.2735958993434906 + global.get $std/math/INEXACT + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1733 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -8.887990951538086 + f32.const 9.893305778503418 + f32.const 0.4530770778656006 + global.get $std/math/INEXACT + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1734 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.7636072635650635 + f32.const 8.825302124023438 + f32.const 0.30755728483200073 + global.get $std/math/INEXACT + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1735 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 4.567535400390625 + f32.const 7.970265865325928 + f32.const 0.06785223633050919 + global.get $std/math/INEXACT + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1736 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 4.811392307281494 + f32.const 10.44163990020752 + f32.const -0.26776307821273804 + global.get $std/math/INEXACT + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1737 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.450045585632324 + f32.const 0.6620717644691467 + f32.const 6.483936309814453 + f32.const 0.48381292819976807 + global.get $std/math/INEXACT + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1738 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.858890056610107 + f32.const 0.052154526114463806 + f32.const 7.859063148498535 + f32.const 0.07413065433502197 + global.get $std/math/INEXACT + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1739 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.7920545339584351 + f32.const 7.676402568817139 + f32.const 7.717156887054443 + f32.const 0.4940592646598816 + global.get $std/math/INEXACT + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1740 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6157026886940002 + f32.const 2.0119025707244873 + f32.const 2.104006052017212 + f32.const -0.287089467048645 + global.get $std/math/INEXACT + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1741 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5587586760520935 + f32.const 0.03223983198404312 + f32.const 0.5596880316734314 + f32.const 0.4191940724849701 + global.get $std/math/INEXACT + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1742 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3 + f32.const 4 + f32.const 5 + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1745 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3 + f32.const 4 + f32.const 5 + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1746 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4 + f32.const 3 + f32.const 5 + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1747 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4 + f32.const -3 + f32.const 5 + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1748 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3 + f32.const -4 + f32.const 5 + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1749 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3402823466385288598117041e14 + f32.const 0 + f32.const 3402823466385288598117041e14 + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1750 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3402823466385288598117041e14 + f32.const -0 + f32.const 3402823466385288598117041e14 + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1751 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + f32.const 0 + f32.const 1.401298464324817e-45 + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1752 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + f32.const -0 + f32.const 1.401298464324817e-45 + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1753 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1754 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1755 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1756 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1757 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 1 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1758 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.neg + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1759 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1760 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const inf + f32.neg + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1761 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1762 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1763 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1775 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 1.4690809584224322 + f64.const -0.3412533402442932 + global.get $std/math/INEXACT + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1776 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1777 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1778 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 2.2264658498795615 + f64.const 0.3638114035129547 + global.get $std/math/INEXACT + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1779 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const -0.4125110252365137 + f64.const -0.29108747839927673 + global.get $std/math/INEXACT + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1780 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1781 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const -0.5766810183195862 + f64.const -0.10983199626207352 + global.get $std/math/INEXACT + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1782 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const -0.2559866591263865 + f64.const -0.057990044355392456 + global.get $std/math/INEXACT + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1783 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1784 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.neg + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1787 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.neg + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1788 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1789 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1790 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1791 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1792 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1793 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_log + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1794 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1803 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1804 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1805 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1806 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1807 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1808 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1809 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1810 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1813 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1814 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1815 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1816 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1817 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1818 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1819 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_logf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1820 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1832 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 0.6380137537120029 + f64.const -0.2088824063539505 + global.get $std/math/INEXACT + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1833 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1834 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1835 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 0.9669418327487274 + f64.const -0.06120431795716286 + global.get $std/math/INEXACT + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1836 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const -0.17915126198447093 + f64.const 0.39090874791145325 + global.get $std/math/INEXACT + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1837 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1838 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const -0.25044938407454437 + f64.const -0.3046841621398926 + global.get $std/math/INEXACT + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1839 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const -0.11117359349943837 + f64.const -0.31503361463546753 + global.get $std/math/INEXACT + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1840 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1841 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.neg + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1844 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.neg + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1845 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1846 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1847 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1848 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1849 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1850 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1851 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1860 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 0.6380137205123901 + f32.const -0.20476758480072021 + global.get $std/math/INEXACT + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1861 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1862 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1863 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 0.9669418334960938 + f32.const -0.34273025393486023 + global.get $std/math/INEXACT + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1864 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const -0.1791512817144394 + f32.const -0.27078554034233093 + global.get $std/math/INEXACT + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1865 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1866 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const -0.25044935941696167 + f32.const 0.2126826047897339 + global.get $std/math/INEXACT + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1867 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const -0.1111735999584198 + f32.const 0.46515095233917236 + global.get $std/math/INEXACT + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1868 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1869 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1872 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1873 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1874 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1875 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1876 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1877 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1878 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1879 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1891 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 1.6762064170601734 + f64.const 0.46188199520111084 + global.get $std/math/INEXACT + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1892 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1893 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1894 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 2.3289404168523826 + f64.const -0.411114901304245 + global.get $std/math/INEXACT + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1895 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.5080132114992477 + f64.const -0.29306045174598694 + global.get $std/math/INEXACT + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1896 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.5218931811663979 + f64.const -0.25825726985931396 + global.get $std/math/INEXACT + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1897 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.4458132279488102 + f64.const -0.13274887204170227 + global.get $std/math/INEXACT + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1898 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.5733227294648414 + f64.const 0.02716583013534546 + global.get $std/math/INEXACT + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1899 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -1.1355782978128564 + f64.const 0.2713092863559723 + global.get $std/math/INEXACT + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1900 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1903 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1904 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + f64.const -7.888609052210118e-31 + f64.const 1.7763568394002505e-15 + global.get $std/math/INEXACT + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1905 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0.6931471805599453 + f64.const -0.2088811695575714 + global.get $std/math/INEXACT + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1906 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.neg + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1907 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1908 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1909 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_log1p + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1910 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1919 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 1.676206350326538 + f32.const -0.23014859855175018 + global.get $std/math/INEXACT + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1920 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1921 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1922 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 2.3289403915405273 + f32.const -0.29075589776039124 + global.get $std/math/INEXACT + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1923 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.5080131888389587 + f32.const -0.1386766880750656 + global.get $std/math/INEXACT + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1924 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.5218932032585144 + f32.const -0.08804433047771454 + global.get $std/math/INEXACT + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1925 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.44581323862075806 + f32.const -0.15101368725299835 + global.get $std/math/INEXACT + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1926 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.5733227133750916 + f32.const -0.10264533013105392 + global.get $std/math/INEXACT + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1927 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -1.1355782747268677 + f32.const -0.19879481196403503 + global.get $std/math/INEXACT + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1928 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1931 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1932 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const -7.888609052210118e-31 + f32.const 3.308722450212111e-24 + global.get $std/math/INEXACT + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1933 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0.6931471824645996 + f32.const 0.031954795122146606 + global.get $std/math/INEXACT + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1934 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1935 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1936 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1937 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1938 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754942106924411e-38 + f32.const -1.1754942106924411e-38 + f32.const 4.930380657631324e-32 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_log1pf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1939 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1951 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 2.1194358133804485 + f64.const -0.10164877772331238 + global.get $std/math/INEXACT + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1952 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1953 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1954 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 3.2121112403298744 + f64.const -0.15739446878433228 + global.get $std/math/INEXACT + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1955 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const -0.5951276104207402 + f64.const 0.3321485221385956 + global.get $std/math/INEXACT + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1956 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1957 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const -0.8319748453044644 + f64.const 0.057555437088012695 + global.get $std/math/INEXACT + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1958 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const -0.36931068365537134 + f64.const -0.19838279485702515 + global.get $std/math/INEXACT + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1959 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1960 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.neg + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1963 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.neg + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1964 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1965 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1966 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1967 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1968 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1969 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_log2 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1970 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1979 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 2.1194357872009277 + f32.const 0.18271538615226746 + global.get $std/math/INEXACT + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1980 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1981 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1982 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 3.212111234664917 + f32.const -0.3188050389289856 + global.get $std/math/INEXACT + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1983 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const -0.5951276421546936 + f32.const 0.34231460094451904 + global.get $std/math/INEXACT + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1984 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1985 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const -0.8319748044013977 + f32.const -0.33473604917526245 + global.get $std/math/INEXACT + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1986 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const -0.3693107068538666 + f32.const 0.3278401792049408 + global.get $std/math/INEXACT + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1987 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1988 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1991 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1992 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1993 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1994 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1995 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1996 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1997 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1998 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.535662560676869 + f64.const 4.535662560676869 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2010 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + f64.const 4.345239849338305 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2011 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + f64.const -2.763607337379588 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2012 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + f64.const 4.567535276842744 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2013 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + f64.const 9.267056966972586 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2014 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + f64.const 0.6620717923376739 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2015 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + f64.const 7.858890253041697 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2016 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + f64.const 7.67640268511754 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2017 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + f64.const 2.0119025790324803 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2018 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + f64.const 0.03223983060263804 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2019 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2022 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2023 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2024 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2025 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2026 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2027 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2028 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2029 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2030 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2031 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2032 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const -1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2033 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2034 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2035 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2036 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2037 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2038 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2039 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2040 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2041 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2042 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.neg + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2043 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2044 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2045 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2046 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2047 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.neg + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2048 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2049 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2050 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2051 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2052 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2053 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2054 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2055 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2056 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2057 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2058 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 2 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2059 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0.5 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2060 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2061 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 2 + f64.const 2 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2062 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -0.5 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2063 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2064 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2065 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2066 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2067 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2068 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2069 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2070 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2071 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.neg + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2072 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.neg + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2073 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.neg + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2074 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2075 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const 0.5 + f64.const 1.75 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2076 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const 0.5 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2077 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const -0.5 + f64.const 1.75 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2078 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const -0.5 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2079 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 4.535662651062012 + f32.const 4.535662651062012 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2088 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -8.887990951538086 + f32.const 4.345239639282227 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2089 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.7636072635650635 + f32.const -2.7636072635650635 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2090 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 4.567535400390625 + f32.const 4.567535400390625 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2091 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 4.811392307281494 + f32.const 9.267057418823242 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2092 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.450045585632324 + f32.const 0.6620717644691467 + f32.const 0.6620717644691467 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2093 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.858890056610107 + f32.const 0.052154526114463806 + f32.const 7.858890056610107 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2094 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.7920545339584351 + f32.const 7.676402568817139 + f32.const 7.676402568817139 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2095 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6157026886940002 + f32.const 2.0119025707244873 + f32.const 2.0119025707244873 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2096 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5587586760520935 + f32.const 0.03223983198404312 + f32.const 0.03223983198404312 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2097 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2103 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2104 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const -1 + f32.const 0.5 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -1 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -1 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2118 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2122 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.neg + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2130 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2132 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2133 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2134 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2135 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2136 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 2 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0.5 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2138 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2139 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 2 + f32.const 2 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -0.5 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2141 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2145 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2146 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2147 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2148 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2149 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.neg + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2150 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.neg + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.neg + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const 0.5 + f32.const 1.75 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const 0.5 + f32.const 0.5 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const -0.5 + f32.const 1.75 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const -0.5 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_maxf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.535662560676869 + f64.const -8.06684839057968 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2169 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + f64.const -8.88799136300345 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2170 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + f64.const -8.38143342755525 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2171 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + f64.const -6.531673581913484 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2172 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + f64.const 4.811392084359796 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2173 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + f64.const -6.450045556060236 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2174 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + f64.const 0.05215452675006225 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + f64.const -0.792054511984896 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2176 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + f64.const 0.615702673197924 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + f64.const -0.5587586823609152 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2178 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2182 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2184 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2185 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2186 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 1 + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2188 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2189 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2190 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2191 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2192 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2194 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2195 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2196 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -1 + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2197 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2198 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2201 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2202 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2203 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2204 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2205 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2206 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2207 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2208 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2210 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2211 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 0 + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2212 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2213 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2214 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2215 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -0 + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2217 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 2 + f64.const 2 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2218 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0.5 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2220 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 2 + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2221 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -0.5 + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2222 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2223 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2224 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2225 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2226 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2227 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2228 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2229 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2230 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2231 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2232 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2233 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2234 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const 0.5 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2235 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const 0.5 + f64.const -1.75 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2236 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const -0.5 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const -0.5 + f64.const -1.75 + f64.const 0 + i32.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2238 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 4.535662651062012 + f32.const -8.066848754882812 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2247 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -8.887990951538086 + f32.const -8.887990951538086 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2248 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.7636072635650635 + f32.const -8.381433486938477 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2249 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 4.567535400390625 + f32.const -6.531673431396484 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2250 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 4.811392307281494 + f32.const 4.811392307281494 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2251 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.450045585632324 + f32.const 0.6620717644691467 + f32.const -6.450045585632324 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2252 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.858890056610107 + f32.const 0.052154526114463806 + f32.const 0.052154526114463806 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2253 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.7920545339584351 + f32.const 7.676402568817139 + f32.const -0.7920545339584351 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2254 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6157026886940002 + f32.const 2.0119025707244873 + f32.const 0.6157026886940002 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2255 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5587586760520935 + f32.const 0.03223983198404312 + f32.const -0.5587586760520935 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2256 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2259 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2260 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 1 + f32.const 0.5 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2261 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 1 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2262 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2263 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2264 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2265 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 1 + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2266 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2267 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2268 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2269 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2270 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2271 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2272 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2273 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2274 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -1 + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2275 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2276 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2277 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2278 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2279 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2280 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2281 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2282 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2283 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2284 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2285 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2286 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2287 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2289 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 0 + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2290 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2291 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2292 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2293 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -0 + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2294 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2295 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 2 + f32.const 2 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2296 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0.5 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2297 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2298 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 2 + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2299 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -0.5 + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2300 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2301 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2302 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2303 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2304 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2305 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2306 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2307 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2308 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2309 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2310 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2311 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2312 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const 0.5 + f32.const 0.5 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2313 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const 0.5 + f32.const -1.75 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2314 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const -0.5 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2315 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const -0.5 + f32.const -1.75 + f32.const 0 + i32.const 0 + call $std/math/test_minf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2316 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.535662560676869 + f64.const -3.531185829902812 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2330 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + f64.const 4.345239849338305 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2331 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + f64.const -0.09061141541648476 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2332 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + f64.const -1.9641383050707404 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2333 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + f64.const 4.45566488261279 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2334 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + f64.const -0.4913994250211714 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2335 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + f64.const 0.035711240532359426 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2336 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + f64.const -0.792054511984896 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2337 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + f64.const 0.615702673197924 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2338 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + f64.const -0.0106815621160685 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2339 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2342 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2343 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2344 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2345 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2346 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2347 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2348 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const 1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2349 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2350 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const 1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2351 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2352 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 1 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2353 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2354 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2355 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2356 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const -1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2357 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2358 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2359 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2360 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const -1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2361 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const -1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2362 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const -1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2363 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const -1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2364 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2365 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2366 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2367 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2368 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2370 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.neg + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2371 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2372 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2373 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2374 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2375 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.neg + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2376 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2377 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2378 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2379 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2380 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2381 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2382 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2383 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2384 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2385 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2386 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 2 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2387 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0.5 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2388 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2389 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 2 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2390 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -0.5 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2391 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2392 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2393 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2394 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2395 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2396 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2397 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2398 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2399 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.neg + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2400 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.neg + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2401 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2402 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2403 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const 0.5 + f64.const 0.25 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2404 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const 0.5 + f64.const -0.25 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2405 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const -0.5 + f64.const 0.25 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2406 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const -0.5 + f64.const -0.25 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2407 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370496 + f64.reinterpret_i64 + i64.const 4503599627370496 + f64.reinterpret_i64 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2410 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370496 + f64.reinterpret_i64 + i64.const -9218868437227405312 + f64.reinterpret_i64 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2411 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9218868437227405312 + f64.reinterpret_i64 + i64.const 4503599627370496 + f64.reinterpret_i64 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2412 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9218868437227405312 + f64.reinterpret_i64 + i64.const -9218868437227405312 + f64.reinterpret_i64 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2413 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9218868437227405311 + f64.reinterpret_i64 + i64.const 9218868437227405311 + f64.reinterpret_i64 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2414 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9218868437227405311 + f64.reinterpret_i64 + i64.const -4503599627370497 + f64.reinterpret_i64 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2415 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4503599627370497 + f64.reinterpret_i64 + i64.const 9218868437227405311 + f64.reinterpret_i64 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2416 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4503599627370497 + f64.reinterpret_i64 + i64.const -4503599627370497 + f64.reinterpret_i64 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2417 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + f64.reinterpret_i64 + i64.const 4503599627370496 + f64.reinterpret_i64 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2420 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + f64.reinterpret_i64 + i64.const 9218868437227405311 + f64.reinterpret_i64 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2421 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + f64.reinterpret_i64 + i64.const -9218868437227405312 + f64.reinterpret_i64 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2422 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + f64.reinterpret_i64 + i64.const -4503599627370497 + f64.reinterpret_i64 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2423 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9223372036854775808 + f64.reinterpret_i64 + i64.const 4503599627370496 + f64.reinterpret_i64 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2424 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9223372036854775808 + f64.reinterpret_i64 + i64.const 9218868437227405311 + f64.reinterpret_i64 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2425 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9223372036854775808 + f64.reinterpret_i64 + i64.const -9218868437227405312 + f64.reinterpret_i64 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2426 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9223372036854775808 + f64.reinterpret_i64 + i64.const -4503599627370497 + f64.reinterpret_i64 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2427 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9218868437227405311 + f64.reinterpret_i64 + i64.const 9218868437227405310 + f64.reinterpret_i64 + i64.const 8980177656976769024 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2430 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4503599627370497 + f64.reinterpret_i64 + i64.const 9218868437227405310 + f64.reinterpret_i64 + i64.const -243194379878006784 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2431 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9218868437227405311 + f64.reinterpret_i64 + i64.const -9007199254740992 + f64.reinterpret_i64 + i64.const 9214364837600034814 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2433 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4503599627370497 + f64.reinterpret_i64 + i64.const -9007199254740992 + f64.reinterpret_i64 + i64.const -9007199254740994 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2434 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9218868437227405311 + f64.reinterpret_i64 + i64.const 9214364837600034815 + f64.reinterpret_i64 + i64.const 0 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2436 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4503599627370497 + f64.reinterpret_i64 + i64.const 9214364837600034815 + f64.reinterpret_i64 + i64.const -9223372036854775808 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2437 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9218868437227405311 + f64.reinterpret_i64 + i64.const -9007199254740994 + f64.reinterpret_i64 + i64.const 8980177656976769024 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2439 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4503599627370497 + f64.reinterpret_i64 + i64.const -9007199254740994 + f64.reinterpret_i64 + i64.const -243194379878006784 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2440 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9214364837600034816 + f64.reinterpret_i64 + i64.const 9218868437227405311 + f64.reinterpret_i64 + i64.const 9214364837600034816 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2442 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9007199254740992 + f64.reinterpret_i64 + i64.const 9218868437227405311 + f64.reinterpret_i64 + i64.const -9007199254740992 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2443 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9214364837600034815 + f64.reinterpret_i64 + i64.const -4503599627370497 + f64.reinterpret_i64 + i64.const 9214364837600034815 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2445 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9007199254740993 + f64.reinterpret_i64 + i64.const -4503599627370497 + f64.reinterpret_i64 + i64.const -9007199254740993 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2446 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9214364837600034814 + f64.reinterpret_i64 + i64.const 9218868437227405311 + f64.reinterpret_i64 + i64.const 9214364837600034814 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2448 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9007199254740994 + f64.reinterpret_i64 + i64.const 9218868437227405311 + f64.reinterpret_i64 + i64.const -9007199254740994 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2449 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9218868437227405310 + f64.reinterpret_i64 + i64.const -4503599627370497 + f64.reinterpret_i64 + i64.const 9218868437227405310 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2451 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4503599627370498 + f64.reinterpret_i64 + i64.const -4503599627370497 + f64.reinterpret_i64 + i64.const -4503599627370498 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2452 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9218868437227405310 + f64.reinterpret_i64 + i64.const 9214364837600034815 + f64.reinterpret_i64 + i64.const 9214364837600034813 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2454 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4503599627370498 + f64.reinterpret_i64 + i64.const 9214364837600034815 + f64.reinterpret_i64 + i64.const -9007199254740995 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2455 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4620130267728707584 + f64.reinterpret_i64 + f64.const 1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2457 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4619004367821864960 + f64.reinterpret_i64 + f64.const 1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2458 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4617878467915022336 + f64.reinterpret_i64 + f64.const 1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2459 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4616752568008179712 + f64.reinterpret_i64 + f64.const 1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2460 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4603241769126068224 + f64.reinterpret_i64 + f64.const 1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2461 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4604367669032910848 + f64.reinterpret_i64 + f64.const 1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2462 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4605493568939753472 + f64.reinterpret_i64 + f64.const 1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2463 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4606619468846596096 + f64.reinterpret_i64 + f64.const 1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2464 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370492 + f64.reinterpret_i64 + i64.const 4503599627370494 + f64.reinterpret_i64 + i64.const 4503599627370492 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2466 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370492 + f64.reinterpret_i64 + i64.const -9218868437227405314 + f64.reinterpret_i64 + i64.const 4503599627370492 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370495 + f64.reinterpret_i64 + i64.const 3 + f64.reinterpret_i64 + i64.const 0 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2468 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370495 + f64.reinterpret_i64 + i64.const 9007199254740991 + f64.reinterpret_i64 + i64.const 4503599627370495 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2469 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370495 + f64.reinterpret_i64 + i64.const 9218868437227405312 + f64.reinterpret_i64 + i64.const 4503599627370495 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2470 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370495 + f64.reinterpret_i64 + i64.const -9223372036854775805 + f64.reinterpret_i64 + i64.const 0 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2471 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370496 + f64.reinterpret_i64 + i64.const 3 + f64.reinterpret_i64 + i64.const 1 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2472 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370496 + f64.reinterpret_i64 + i64.const 4503599627370494 + f64.reinterpret_i64 + i64.const 2 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2473 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370496 + f64.reinterpret_i64 + i64.const 9007199254740991 + f64.reinterpret_i64 + i64.const 4503599627370496 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2474 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370496 + f64.reinterpret_i64 + i64.const -9223372036854775805 + f64.reinterpret_i64 + i64.const 1 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2475 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370497 + f64.reinterpret_i64 + i64.const 4503599627370494 + f64.reinterpret_i64 + i64.const 3 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2476 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370498 + f64.reinterpret_i64 + i64.const 3 + f64.reinterpret_i64 + i64.const 0 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2477 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370498 + f64.reinterpret_i64 + i64.const -9223372036854775805 + f64.reinterpret_i64 + i64.const 0 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2478 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370499 + f64.reinterpret_i64 + i64.const 3 + f64.reinterpret_i64 + i64.const 1 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2479 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370499 + f64.reinterpret_i64 + i64.const 4503599627370501 + f64.reinterpret_i64 + i64.const 4503599627370499 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2480 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370499 + f64.reinterpret_i64 + i64.const -9223372036854775805 + f64.reinterpret_i64 + i64.const 1 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2481 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370500 + f64.reinterpret_i64 + i64.const 4503599627370501 + f64.reinterpret_i64 + i64.const 4503599627370500 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2482 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4503599627370502 + f64.reinterpret_i64 + i64.const 4503599627370501 + f64.reinterpret_i64 + i64.const 1 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2483 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9007199254740991 + f64.reinterpret_i64 + i64.const 9007199254740992 + f64.reinterpret_i64 + i64.const 9007199254740991 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2484 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 45035996273704959 + f64.reinterpret_i64 + i64.const 40532396646334464 + f64.reinterpret_i64 + i64.const 40532396646334462 + f64.reinterpret_i64 + f64.const 0 + i32.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2485 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 4.535662651062012 + f32.const -3.531186103820801 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2494 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -8.887990951538086 + f32.const 4.345239639282227 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2495 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.7636072635650635 + f32.const -0.09061169624328613 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2496 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 4.567535400390625 + f32.const -1.9641380310058594 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2497 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 4.811392307281494 + f32.const 4.455665111541748 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2498 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.450045585632324 + f32.const 0.6620717644691467 + f32.const -0.49139970541000366 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2499 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.858890056610107 + f32.const 0.052154526114463806 + f32.const 0.0357111394405365 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2500 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.7920545339584351 + f32.const 7.676402568817139 + f32.const -0.7920545339584351 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2501 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6157026886940002 + f32.const 2.0119025707244873 + f32.const 0.6157026886940002 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2502 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5587586760520935 + f32.const 0.03223983198404312 + f32.const -0.010681532323360443 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2503 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2506 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2507 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 1 + f32.const 0.5 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2508 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 1 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2509 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2510 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2511 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const 1 + f32.const 0.5 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2512 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + f32.const 1 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2513 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2514 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const 1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2515 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2516 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 1 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2517 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2518 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2519 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2520 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const -1 + f32.const 0.5 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2521 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -1 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2522 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2523 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2524 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const -1 + f32.const 0.5 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2525 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + f32.const -1 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2526 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const -1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2527 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const -1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2528 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2529 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2530 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2531 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2532 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2533 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2534 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2535 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2536 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2537 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2538 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2539 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.neg + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2540 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2541 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2542 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2543 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2544 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2545 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2546 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2547 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2548 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2549 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2550 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 2 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2551 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0.5 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2552 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2553 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 2 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2554 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -0.5 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2555 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2556 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2557 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2558 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2559 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2560 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2561 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2562 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2563 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.neg + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2564 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.neg + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2565 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2566 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2567 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const 0.5 + f32.const 0.25 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2568 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const 0.5 + f32.const -0.25 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2569 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const -0.5 + f32.const 0.25 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2570 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const -0.5 + f32.const -0.25 + f32.const 0 + i32.const 0 + call $std/math/test_modf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2571 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.535662560676869 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2583 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + f64.const 2.1347118825587285e-06 + f64.const 0.3250160217285156 + global.get $std/math/INEXACT + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2584 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2586 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + f64.const 44909.29941512966 + f64.const -0.26659080386161804 + global.get $std/math/INEXACT + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2587 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2588 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + f64.const 1.1135177413458652 + f64.const -0.37168607115745544 + global.get $std/math/INEXACT + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2589 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2590 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + f64.const 0.37690773521380183 + f64.const 0.32473301887512207 + global.get $std/math/INEXACT + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2591 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2592 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2595 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2596 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 3 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 2 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2598 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2599 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0.5 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2600 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2601 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2602 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0.5 + f64.const inf + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2603 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + f64.const inf + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2604 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -2 + f64.const inf + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2605 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -3 + f64.const inf + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2606 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -4 + f64.const inf + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2607 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.neg + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2608 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2609 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2610 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 3 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2611 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 2 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2612 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2613 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0.5 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2614 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2615 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2616 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0.5 + f64.const inf + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2617 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + f64.const inf + f64.neg + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2618 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -2 + f64.const inf + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2619 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -3 + f64.const inf + f64.neg + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2620 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -4 + f64.const inf + f64.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2621 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.neg + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2622 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2623 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2624 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2625 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2626 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2627 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2628 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2629 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2630 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2631 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2632 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2633 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -0 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2634 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2635 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2636 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2637 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 2 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2638 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2639 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -2 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2640 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -3 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2641 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0.5 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2642 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2643 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2644 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2645 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 3 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2646 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0.5 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2647 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -0.5 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2648 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -3 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2649 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 0.5 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2650 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 1.5 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2651 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 2 + f64.const 0.25 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2652 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 3 + f64.const -0.125 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2653 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const inf + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2654 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const inf + f64.neg + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2655 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2656 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const inf + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2657 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const inf + f64.neg + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2658 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2659 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2660 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const inf + f64.neg + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2661 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2662 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2663 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2664 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.neg + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2665 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 3 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2666 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 2 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2667 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2668 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0.5 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2669 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0.5 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2670 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2671 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -2 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2672 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2673 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2674 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2675 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 3 + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2676 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 2 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2677 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 1 + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2678 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 0.5 + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2679 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -0.5 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2680 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2681 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -2 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2682 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2683 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2684 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const 1 + f64.const -2 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2685 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const -1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2686 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2689 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2690 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2691 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2692 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2693 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2694 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2695 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2696 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + call $~lib/math/NativeMath.pow + f64.const 0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2698 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + call $~lib/math/NativeMath.pow + f64.const -0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2699 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 1 + call $~lib/math/NativeMath.pow + f64.const -1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2700 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + call $~lib/math/NativeMath.pow + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2701 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 1 + call $~lib/math/NativeMath.pow + f64.const inf + f64.neg + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2702 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + call $~lib/math/NativeMath.pow + local.tee $0 + local.get $0 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2703 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2705 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const inf + f64.neg + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2706 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const -1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2707 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const 2 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2708 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2709 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const 0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2710 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const -0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2711 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + call $~lib/math/NativeMath.pow + local.tee $1 + local.get $1 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2712 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2714 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2715 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2716 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const 0.25 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2717 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2718 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2719 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2720 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 2 + call $~lib/math/NativeMath.pow + local.tee $2 + local.get $2 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2721 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2723 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2724 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0.5 + call $~lib/math/NativeMath.pow + local.tee $3 + local.get $3 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2725 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4 + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const 2 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2726 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2727 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2728 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2729 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0.5 + call $~lib/math/NativeMath.pow + local.tee $4 + local.get $4 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2730 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 4.535662651062012 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2739 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -8.887990951538086 + f32.const 2.134714122803416e-06 + f32.const 0.1436440795660019 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2740 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.7636072635650635 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2741 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 4.567535400390625 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2742 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 4.811392307281494 + f32.const 44909.33203125 + f32.const -0.05356409028172493 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2743 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.450045585632324 + f32.const 0.6620717644691467 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2744 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.858890056610107 + f32.const 0.052154526114463806 + f32.const 1.1135177612304688 + f32.const 0.19122089445590973 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2745 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.7920545339584351 + f32.const 7.676402568817139 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2746 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6157026886940002 + f32.const 2.0119025707244873 + f32.const 0.3769077658653259 + f32.const 0.337149053812027 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2747 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5587586760520935 + f32.const 0.03223983198404312 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2748 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2751 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2752 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 3 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2753 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 2 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2754 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2755 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0.5 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2756 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2757 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2758 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0.5 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2759 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -1 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2760 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -2 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2761 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -3 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2762 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -4 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2763 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.neg + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2764 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2765 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2766 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 3 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2767 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 2 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2768 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2769 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0.5 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2770 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2771 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2772 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0.5 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2773 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -1 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2774 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -2 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2775 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -3 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2776 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -4 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2777 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.neg + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2778 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2779 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2780 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2781 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2782 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2783 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2784 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2785 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2786 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2787 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2788 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2789 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2790 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2791 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2792 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2793 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 2 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2794 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2795 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -2 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2796 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -3 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2797 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0.5 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2798 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2799 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2800 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2801 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 3 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2802 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0.5 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2803 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -0.5 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2804 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -3 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2805 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 0.5 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2806 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 1.5 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2807 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 2 + f32.const 0.25 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2808 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 3 + f32.const -0.125 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2809 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2810 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const inf + f32.neg + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2811 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2812 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2813 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const inf + f32.neg + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2814 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2815 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2816 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2817 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2818 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2819 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2820 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2821 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 3 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2822 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 2 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2823 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2824 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0.5 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2825 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0.5 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2826 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2827 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -2 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2828 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2829 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2830 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2831 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 3 + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2832 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 2 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2833 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 1 + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2834 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 0.5 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2835 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -0.5 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2836 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2837 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -2 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2838 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2839 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2840 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const 1 + f32.const -2 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2841 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const -1 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2842 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2845 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2846 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8388608 + f32.reinterpret_i32 + f32.const 1 + i32.const 8388608 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2847 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2139095040 + f32.reinterpret_i32 + f32.const 1 + i32.const -2139095040 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2848 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2139095039 + f32.reinterpret_i32 + f32.const 1 + i32.const 2139095039 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2849 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -8388609 + f32.reinterpret_i32 + f32.const 1 + i32.const -8388609 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2850 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + i32.const 2139095039 + f32.reinterpret_i32 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2852 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + i32.const 8388608 + f32.reinterpret_i32 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2853 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + i32.const 2139095039 + f32.reinterpret_i32 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2854 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + i32.const 1099431936 + f32.reinterpret_i32 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2855 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 2 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2856 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + i32.const 8388608 + f32.reinterpret_i32 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2857 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1081291571 + f32.reinterpret_i32 + i32.const 1120534528 + f32.reinterpret_i32 + i32.const -965944620 + f32.reinterpret_i32 + i32.const -1097905258 + f32.reinterpret_i32 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2859 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1100480512 + f32.reinterpret_i32 + i32.const 1084227584 + f32.reinterpret_i32 + i32.const 1243029772 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2861 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1047003136 + f32.reinterpret_i32 + i32.const 1084227584 + f32.reinterpret_i32 + i32.const -904453876 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2862 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1019150336 + f32.reinterpret_i32 + i32.const 1077936128 + f32.reinterpret_i32 + i32.const -891591550 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2863 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -996794368 + f32.reinterpret_i32 + i32.const 1073741824 + f32.reinterpret_i32 + i32.const 1236275976 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2864 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1089078126 + f32.reinterpret_i32 + i32.const 1099496040 + f32.reinterpret_i32 + i32.const 1477304923 + f32.reinterpret_i32 + i32.const -1105621615 + f32.reinterpret_i32 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2866 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1100378008 + f32.reinterpret_i32 + i32.const 1079284384 + f32.reinterpret_i32 + i32.const 1183148212 + f32.reinterpret_i32 + i32.const 1050397989 + f32.reinterpret_i32 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2867 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1089032095 + f32.reinterpret_i32 + i32.const 1092204185 + f32.reinterpret_i32 + i32.const 1295611234 + f32.reinterpret_i32 + i32.const -1109674586 + f32.reinterpret_i32 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2868 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1098680439 + f32.reinterpret_i32 + i32.const 1100245042 + f32.reinterpret_i32 + i32.const 1684334277 + f32.reinterpret_i32 + i32.const 1035731698 + f32.reinterpret_i32 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2869 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1090853857 + f32.reinterpret_i32 + i32.const 1054272066 + f32.reinterpret_i32 + i32.const 1075559602 + f32.reinterpret_i32 + i32.const 1008617886 + f32.reinterpret_i32 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2870 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1085970832 + f32.reinterpret_i32 + i32.const 1093100817 + f32.reinterpret_i32 + i32.const 1287904676 + f32.reinterpret_i32 + i32.const -1162174975 + f32.reinterpret_i32 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2871 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1075485704 + f32.reinterpret_i32 + i32.const 1099495801 + f32.reinterpret_i32 + i32.const 1247602305 + f32.reinterpret_i32 + i32.const 1050126003 + f32.reinterpret_i32 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2872 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1025308839 + f32.reinterpret_i32 + i32.const 1010328623 + f32.reinterpret_i32 + i32.const 1064748518 + f32.reinterpret_i32 + i32.const -1091052619 + f32.reinterpret_i32 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2873 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1085163537 + f32.reinterpret_i32 + i32.const 1098713353 + f32.reinterpret_i32 + i32.const 1389090779 + f32.reinterpret_i32 + i32.const -1093771829 + f32.reinterpret_i32 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2874 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1095625895 + f32.reinterpret_i32 + i32.const 1097793372 + f32.reinterpret_i32 + i32.const 1527074508 + f32.reinterpret_i32 + i32.const 1037429592 + f32.reinterpret_i32 + global.get $std/math/INEXACT + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2875 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2877 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2878 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2879 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2880 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + f32.reinterpret_i32 + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2881 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483647 + f32.reinterpret_i32 + f32.const 0 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2882 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2884 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2885 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2886 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 1 + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2887 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2889 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2890 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2891 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2892 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2893 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2894 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2895 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1065353217 + f32.reinterpret_i32 + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2897 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2898 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1082130431 + f32.reinterpret_i32 + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2899 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2900 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1065353217 + f32.reinterpret_i32 + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2902 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2903 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1082130431 + f32.reinterpret_i32 + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2904 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2905 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1065353215 + f32.reinterpret_i32 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2907 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + f32.reinterpret_i32 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2908 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2909 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1082130433 + f32.reinterpret_i32 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2910 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483647 + f32.reinterpret_i32 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2911 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2912 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + i32.const 1 + f32.reinterpret_i32 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2914 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + i32.const 1 + f32.reinterpret_i32 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2915 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + i32.const -8388609 + f32.reinterpret_i32 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2917 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + i32.const -2147483647 + f32.reinterpret_i32 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2918 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + i32.const -8388609 + f32.reinterpret_i32 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2919 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -2 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2920 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + i32.const -2147483647 + f32.reinterpret_i32 + f32.const inf + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2921 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -1 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2922 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + i32.const -1048051712 + f32.reinterpret_i32 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/DIVBYZERO + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2923 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + i32.const 1 + f32.reinterpret_i32 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2925 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + i32.const -2147483647 + f32.reinterpret_i32 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2926 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + i32.const 2139095039 + f32.reinterpret_i32 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2928 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + i32.const 1 + f32.reinterpret_i32 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2929 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + i32.const -8388609 + f32.reinterpret_i32 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2930 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + i32.const -2147483647 + f32.reinterpret_i32 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2931 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + i32.const 1084227584 + f32.reinterpret_i32 + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2932 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + i32.const -1063256064 + f32.reinterpret_i32 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2933 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + i32.const 1086324736 + f32.reinterpret_i32 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2934 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + i32.const -1061158912 + f32.reinterpret_i32 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2935 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + i32.const 1073741825 + f32.reinterpret_i32 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2937 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + i32.const 1065353217 + f32.reinterpret_i32 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2938 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483647 + f32.reinterpret_i32 + i32.const -1073741825 + f32.reinterpret_i32 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2939 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1054867456 + f32.reinterpret_i32 + i32.const 1134198784 + f32.reinterpret_i32 + f32.const inf + f32.neg + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/OVERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2941 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 0.5 + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2942 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + f32.reinterpret_i32 + f32.const 0.5 + i32.const 444596224 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2944 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + f32.reinterpret_i32 + f32.const 0.5 + i32.const 452984832 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2945 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2097152 + f32.reinterpret_i32 + f32.const 0.5 + i32.const 528482304 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2946 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4194304 + f32.reinterpret_i32 + f32.const -1 + i32.const 2130706432 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2947 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8388608 + f32.reinterpret_i32 + f32.const 0.5 + i32.const 536870912 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2948 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8388608 + f32.reinterpret_i32 + f32.const -1 + i32.const 2122317824 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2949 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16777216 + f32.reinterpret_i32 + f32.const -1 + i32.const 2113929216 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2950 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 25165824 + f32.reinterpret_i32 + f32.const 0.5 + i32.const 545259520 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2951 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 25165824 + f32.reinterpret_i32 + f32.const -1 + i32.const 2105540608 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2952 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 444596224 + f32.reinterpret_i32 + f32.const 2 + i32.const 2 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2953 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 545259520 + f32.reinterpret_i32 + f32.const 0.5 + i32.const 805306368 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2954 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 796917760 + f32.reinterpret_i32 + f32.const 2 + i32.const 528482304 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2955 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 805306368 + f32.reinterpret_i32 + f32.const 2 + i32.const 545259520 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2956 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 872415232 + f32.reinterpret_i32 + f32.const -1 + i32.const 1258291200 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2957 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 940572672 + f32.reinterpret_i32 + f32.const 0.5 + i32.const 1002438656 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2958 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 947912704 + f32.reinterpret_i32 + f32.const 0.5 + i32.const 1006632960 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2959 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 998244352 + f32.reinterpret_i32 + f32.const 0.5 + i32.const 1031798784 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2960 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1024458752 + f32.reinterpret_i32 + f32.const 0.5 + i32.const 1044381696 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2961 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.0625 + f32.const 0.5 + f32.const 0.25 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2962 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.25 + f32.const 2 + f32.const 0.0625 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2963 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2105540608 + f32.reinterpret_i32 + f32.const 0.5 + i32.const 1585446912 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2965 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2105540608 + f32.reinterpret_i32 + f32.const -1 + i32.const 25165824 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2966 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2113929216 + f32.reinterpret_i32 + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2967 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2113929216 + f32.reinterpret_i32 + f32.const -1 + i32.const 16777216 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2968 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2113929216 + f32.reinterpret_i32 + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2969 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2122317824 + f32.reinterpret_i32 + f32.const 0.5 + i32.const 1593835520 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2970 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2122317824 + f32.reinterpret_i32 + f32.const -1 + i32.const 8388608 + f32.reinterpret_i32 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2971 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2139095039 + f32.reinterpret_i32 + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2973 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2139095039 + f32.reinterpret_i32 + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2974 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2130706432 + f32.reinterpret_i32 + f32.const -2 + f32.const 0 + i32.const -1962934272 + f32.reinterpret_i32 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2976 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2130706432 + f32.reinterpret_i32 + i32.const -1069547520 + f32.reinterpret_i32 + f32.const 0 + f32.const -0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2977 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2130706432 + f32.reinterpret_i32 + i32.const -1015087104 + f32.reinterpret_i32 + f32.const 0 + f32.const -0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2978 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2130706432 + f32.reinterpret_i32 + f32.const -256 + f32.const 0 + f32.const -0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2979 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2130706432 + f32.reinterpret_i32 + i32.const -1014988800 + f32.reinterpret_i32 + f32.const 0 + f32.const -0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2980 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2130706432 + f32.reinterpret_i32 + i32.const -1014890496 + f32.reinterpret_i32 + f32.const 0 + f32.const -0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2981 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2130706432 + f32.reinterpret_i32 + i32.const -1014857728 + f32.reinterpret_i32 + f32.const 0 + f32.const -0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2982 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2130706432 + f32.reinterpret_i32 + i32.const -956301824 + f32.reinterpret_i32 + f32.const 0 + f32.const -0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2983 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2130706432 + f32.reinterpret_i32 + f32.const -32768 + f32.const 0 + f32.const -0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2984 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2139095032 + f32.reinterpret_i32 + f32.const -1 + i32.const 2097153 + f32.reinterpret_i32 + i32.const -1258291196 + f32.reinterpret_i32 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2985 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2139095032 + f32.reinterpret_i32 + f32.const -2 + f32.const 0 + i32.const -1979711480 + f32.reinterpret_i32 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2986 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -16777216 + f32.reinterpret_i32 + i32.const -956301824 + f32.reinterpret_i32 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2988 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -16777216 + f32.reinterpret_i32 + f32.const -32768 + f32.const 0 + f32.const -0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2989 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -8388616 + f32.reinterpret_i32 + f32.const -1 + i32.const -2145386495 + f32.reinterpret_i32 + i32.const 889192452 + f32.reinterpret_i32 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2990 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -8388616 + f32.reinterpret_i32 + f32.const -2 + f32.const 0 + i32.const -1979711480 + f32.reinterpret_i32 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_powf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 2991 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $~lib/bindings/dom/Math.random + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + f64.convert_i32_s + f64.const 1e6 + f64.lt + if + call $~lib/math/NativeMath.random + local.set $r + local.get $r + f64.const 0 + f64.ge + if (result i32) + local.get $r + f64.const 1 + f64.lt + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3000 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + call $~lib/bindings/dom/Math.random + i64.reinterpret_f64 + local.set $value + local.get $value + call $~lib/math/NativeMath.seedRandom + i32.const 0 + local.set $i|8 + loop $for-loop|1 + local.get $i|8 + f64.convert_i32_s + f64.const 1e6 + f64.lt + if + call $~lib/math/NativeMathf.random + local.set $r|9 + local.get $r|9 + f32.const 0 + f32.ge + if (result i32) + local.get $r|9 + f32.const 1 + f32.lt + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3008 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $i|8 + i32.const 1 + i32.add + local.set $i|8 + br $for-loop|1 + end + end + f64.const -8.06684839057968 + f64.const -8 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3022 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 4 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3023 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -8 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3024 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -7 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3025 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 9 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3026 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3027 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3028 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3029 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3030 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3031 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3034 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3035 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3036 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3037 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3038 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3039 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3040 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3041 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3042 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 2 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3043 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3044 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000152587890625 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3045 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0000152587890625 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3046 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999923706054688 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3047 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.9999923706054688 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3048 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.888609052210118e-31 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3049 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3050 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9007199254740990 + call $~lib/math/NativeMath.round + f64.const 9007199254740990 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3052 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9007199254740990 + call $~lib/math/NativeMath.round + f64.const -9007199254740990 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3053 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9007199254740991 + call $~lib/math/NativeMath.round + f64.const 9007199254740991 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3054 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9007199254740991 + call $~lib/math/NativeMath.round + f64.const -9007199254740991 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3055 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1797693134862315708145274e284 + call $~lib/math/NativeMath.round + f64.const -1797693134862315708145274e284 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3056 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -8 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3065 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 4 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3066 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -8 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3067 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -7 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3068 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 9 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3069 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3070 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3071 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3072 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3073 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3074 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3077 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3078 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3079 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3080 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3081 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3082 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3083 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3084 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3085 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 2 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3086 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3087 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000152587890625 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3088 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000152587890625 + f32.const -1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3089 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999923706054688 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3090 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.9999923706054688 + f32.const -1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3091 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.888609052210118e-31 + f32.const 0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3092 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3093 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3104 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3122 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $~lib/math/NativeMath.signbit|inlined.2 (result i32) + f64.const 0 + local.set $x + local.get $x + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.2 + end + i32.const 0 + i32.ne + i32.const 0 + i32.eq + drop + block $~lib/math/NativeMath.signbit|inlined.3 (result i32) + f64.const -0 + local.set $x|11 + local.get $x|11 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.3 + end + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + block $~lib/math/NativeMath.signbit|inlined.4 (result i32) + f64.const 1 + local.set $x|12 + local.get $x|12 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.4 + end + i32.const 0 + i32.ne + i32.const 0 + i32.eq + drop + block $~lib/math/NativeMath.signbit|inlined.5 (result i32) + f64.const -1 + local.set $x|13 + local.get $x|13 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.5 + end + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + block $~lib/math/NativeMath.signbit|inlined.6 (result i32) + f64.const nan:0x8000000000000 + local.set $x|14 + local.get $x|14 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.6 + end + i32.const 0 + i32.ne + i32.const 0 + i32.eq + drop + block $~lib/math/NativeMath.signbit|inlined.7 (result i32) + f64.const nan:0x8000000000000 + f64.neg + local.set $x|15 + local.get $x|15 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.7 + end + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + block $~lib/math/NativeMath.signbit|inlined.8 (result i32) + f64.const inf + local.set $x|16 + local.get $x|16 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.8 + end + i32.const 0 + i32.ne + i32.const 0 + i32.eq + drop + block $~lib/math/NativeMath.signbit|inlined.9 (result i32) + f64.const inf + f64.neg + local.set $x|17 + local.get $x|17 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.9 + end + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + block $~lib/math/NativeMathf.signbit|inlined.2 (result i32) + f32.const 0 + local.set $x|18 + local.get $x|18 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + br $~lib/math/NativeMathf.signbit|inlined.2 + end + i32.const 0 + i32.ne + i32.const 0 + i32.eq + drop + block $~lib/math/NativeMathf.signbit|inlined.3 (result i32) + f32.const -0 + local.set $x|19 + local.get $x|19 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + br $~lib/math/NativeMathf.signbit|inlined.3 + end + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + block $~lib/math/NativeMathf.signbit|inlined.4 (result i32) + f32.const 1 + local.set $x|20 + local.get $x|20 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + br $~lib/math/NativeMathf.signbit|inlined.4 + end + i32.const 0 + i32.ne + i32.const 0 + i32.eq + drop + block $~lib/math/NativeMathf.signbit|inlined.5 (result i32) + f32.const -1 + local.set $x|21 + local.get $x|21 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + br $~lib/math/NativeMathf.signbit|inlined.5 + end + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + block $~lib/math/NativeMathf.signbit|inlined.6 (result i32) + f32.const nan:0x400000 + local.set $x|22 + local.get $x|22 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + br $~lib/math/NativeMathf.signbit|inlined.6 + end + i32.const 0 + i32.ne + i32.const 0 + i32.eq + drop + block $~lib/math/NativeMathf.signbit|inlined.7 (result i32) + f32.const nan:0x400000 + f32.neg + local.set $x|23 + local.get $x|23 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + br $~lib/math/NativeMathf.signbit|inlined.7 + end + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + block $~lib/math/NativeMathf.signbit|inlined.8 (result i32) + f32.const inf + local.set $x|24 + local.get $x|24 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + br $~lib/math/NativeMathf.signbit|inlined.8 + end + i32.const 0 + i32.ne + i32.const 0 + i32.eq + drop + block $~lib/math/NativeMathf.signbit|inlined.9 (result i32) + f32.const inf + f32.neg + local.set $x|25 + local.get $x|25 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + br $~lib/math/NativeMathf.signbit|inlined.9 + end + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + f64.const -8.06684839057968 + f64.const 4.535662560676869 + f64.const 1.0044767307740567 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3165 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + f64.const 4.345239849338305 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + f64.const -0.09061141541648476 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3167 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + f64.const -1.9641383050707404 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3168 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + f64.const -0.35572720174700656 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3169 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + f64.const 0.17067236731650248 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3170 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + f64.const -0.016443286217702822 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3171 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + f64.const -0.792054511984896 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3172 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + f64.const 0.615702673197924 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3173 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + f64.const -0.0106815621160685 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3174 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3178 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3179 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3180 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3182 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const 1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3184 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const 1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3185 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const 1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3186 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 1 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3188 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3189 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3190 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3191 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const -1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3192 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3194 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3195 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const -1 + f64.const -0.5 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3196 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const -1 + f64.const 0.5 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3197 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const -1 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3198 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const -1 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3201 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3202 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3203 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3204 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3205 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.neg + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3206 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3207 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3208 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3210 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.neg + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3211 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3212 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3213 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3214 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3215 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3217 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3218 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3220 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3221 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 2 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3222 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0.5 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3223 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3224 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 2 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3225 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -0.5 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3226 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3227 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3228 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3229 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3230 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3231 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3232 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3233 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3234 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.neg + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3235 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.neg + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3236 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3238 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const 0.5 + f64.const -0.25 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3239 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const 0.5 + f64.const 0.25 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3240 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const -0.5 + f64.const -0.25 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3241 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const -0.5 + f64.const 0.25 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3242 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8e-323 + f64.const inf + f64.const 8e-323 + f64.const 0 + i32.const 0 + call $std/math/test_rem + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3243 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 4.535662651062012 + f32.const 1.004476547241211 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3252 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -8.887990951538086 + f32.const 4.345239639282227 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3253 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.7636072635650635 + f32.const -0.09061169624328613 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3254 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 4.567535400390625 + f32.const -1.9641380310058594 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3255 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 4.811392307281494 + f32.const -0.3557271957397461 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3256 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.450045585632324 + f32.const 0.6620717644691467 + f32.const 0.17067205905914307 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.858890056610107 + f32.const 0.052154526114463806 + f32.const -0.016443386673927307 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3258 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.7920545339584351 + f32.const 7.676402568817139 + f32.const -0.7920545339584351 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3259 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6157026886940002 + f32.const 2.0119025707244873 + f32.const 0.6157026886940002 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3260 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5587586760520935 + f32.const 0.03223983198404312 + f32.const -0.010681532323360443 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3261 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3264 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3265 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 1 + f32.const 0.5 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3266 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 1 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3267 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3268 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3269 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const 1 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3270 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + f32.const 1 + f32.const 0.5 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3271 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const 1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3272 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const 1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3273 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3274 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 1 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3275 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3276 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3277 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3278 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const -1 + f32.const 0.5 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3279 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -1 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3280 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3281 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3282 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const -1 + f32.const -0.5 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3283 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + f32.const -1 + f32.const 0.5 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3284 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const -1 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3285 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const -1 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3286 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3287 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3289 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3290 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3291 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3292 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.neg + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3293 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3294 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3295 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3296 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3297 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.neg + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3298 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3299 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3300 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3301 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3302 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3303 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3304 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3305 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3306 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3307 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3308 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 2 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3309 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0.5 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3310 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3311 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 2 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3312 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -0.5 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3313 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3314 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3315 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3316 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3317 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3318 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3319 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3320 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3321 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.neg + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3322 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.neg + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3323 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3324 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3325 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const 0.5 + f32.const -0.25 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3326 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const 0.5 + f32.const 0.25 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3327 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const -0.5 + f32.const -0.25 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3328 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const -0.5 + f32.const 0.25 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3329 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.877471754111438e-39 + f32.const inf + f32.const 5.877471754111438e-39 + f32.const 0 + i32.const 0 + call $std/math/test_remf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3330 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -0.9774292928781227 + f64.const -0.14564912021160126 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3342 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -0.9333544736965718 + f64.const -0.08813747018575668 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3343 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -0.8640924711706304 + f64.const -0.11743883043527603 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3344 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -0.24593894772615374 + f64.const -0.12697851657867432 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3345 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 0.15706789772028007 + f64.const -0.029550159350037575 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3346 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.6146844860113447 + f64.const -0.09976737946271896 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3347 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.39549242182823696 + f64.const -0.3668774962425232 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3348 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.5326763286672376 + f64.const -0.3550407588481903 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3349 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.6991102068649779 + f64.const -0.427672415971756 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3350 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.6278312326301215 + f64.const -0.3828115463256836 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3351 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.313225746154785e-10 + f64.const 9.313225746154785e-10 + f64.const 6.510416860692203e-04 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3354 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9.313225746154785e-10 + f64.const -9.313225746154785e-10 + f64.const -6.510416860692203e-04 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3355 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + f64.const 2.2250738585072014e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3356 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072014e-308 + f64.const -2.2250738585072014e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3357 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + f64.const 5e-324 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3358 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5e-324 + f64.const -5e-324 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3359 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3360 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3361 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507202e-308 + f64.const 2.225073858507202e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3362 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072024e-308 + f64.const 2.2250738585072024e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3363 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.4501477170144003e-308 + f64.const 4.4501477170144003e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3364 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.450147717014403e-308 + f64.const 4.450147717014403e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3365 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.450147717014406e-308 + f64.const 4.450147717014406e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3366 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.900295434028806e-308 + f64.const 8.900295434028806e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3367 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1175870895385742e-08 + f64.const 1.1175870895385742e-08 + f64.const 0.140625 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3368 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4901161193847656e-08 + f64.const 1.4901161193847656e-08 + f64.const 0.1666666716337204 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507202e-308 + f64.const -2.225073858507202e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3370 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072024e-308 + f64.const -2.2250738585072024e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3371 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.4501477170144003e-308 + f64.const -4.4501477170144003e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3372 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.450147717014403e-308 + f64.const -4.450147717014403e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3373 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.450147717014406e-308 + f64.const -4.450147717014406e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3374 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.900295434028806e-308 + f64.const -8.900295434028806e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3375 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.1175870895385742e-08 + f64.const -1.1175870895385742e-08 + f64.const -0.140625 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3376 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.4901161193847656e-08 + f64.const -1.4901161193847656e-08 + f64.const -0.1666666716337204 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3377 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.4901161193847656e-08 + f64.const -1.4901161193847656e-08 + f64.const -0.1666666716337204 + global.get $std/math/INEXACT + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3378 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-323 + f64.const 1e-323 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3379 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.4e-323 + f64.const 4.4e-323 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3380 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.562684646268003e-309 + f64.const 5.562684646268003e-309 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3381 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1125369292536007e-308 + f64.const 1.1125369292536007e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3382 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072004e-308 + f64.const 2.2250738585072004e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3383 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507201e-308 + f64.const 2.225073858507201e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3384 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-323 + f64.const -1e-323 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3385 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.4e-323 + f64.const -4.4e-323 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3386 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5.562684646268003e-309 + f64.const -5.562684646268003e-309 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3387 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.1125369292536007e-308 + f64.const -1.1125369292536007e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3388 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072004e-308 + f64.const -2.2250738585072004e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3389 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507201e-308 + f64.const -2.225073858507201e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3390 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3393 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3394 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3395 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3396 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_sin + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3397 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/math/kPI + f64.const 2 + f64.div + call $~lib/math/NativeMath.sin + global.get $std/math/kPI + f64.const 2 + f64.div + call $~lib/bindings/dom/Math.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3400 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + global.get $std/math/kPI + f64.mul + f64.const 2 + f64.div + call $~lib/math/NativeMath.sin + f64.const 2 + global.get $std/math/kPI + f64.mul + f64.const 2 + f64.div + call $~lib/bindings/dom/Math.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3401 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3283064365386963e-10 + f64.const 2.3283064365386963e-10 + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3404 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.3283064365386963e-10 + f64.const -2.3283064365386963e-10 + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3405 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.3826834323650898 + f64.const 0.39269908169872414 + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3407 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.3826834323650898 + f64.const -0.39269908169872414 + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3408 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.479425538604203 + f64.const 0.5 + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3411 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.479425538604203 + f64.const -0.5 + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3412 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + global.get $std/math/kPI + f64.const 2 + f64.div + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3413 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + global.get $std/math/kPI + f64.neg + f64.const 2 + f64.div + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3414 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.2246467991473532e-16 + global.get $std/math/kPI + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3416 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.047032979958965e-14 + f64.const 2200 + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3417 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.7071067811865477 + f64.const 7 + f64.const 4 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3419 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7071067811865474 + f64.const 9 + f64.const 4 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3420 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7071067811865483 + f64.const 11 + f64.const 4 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3421 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.7071067811865479 + f64.const 13 + f64.const 4 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3422 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3.2103381051568376e-11 + f64.const 1048576 + f64.const 4 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3423 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.377820109360752 + global.get $std/math/kTwo120 + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3426 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.377820109360752 + global.get $std/math/kTwo120 + f64.neg + call $~lib/math/NativeMath.sin + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3427 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -0.977429211139679 + f32.const 0.0801057294011116 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3436 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -0.933354377746582 + f32.const 0.34475627541542053 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3437 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -0.8640924692153931 + f32.const -0.468659907579422 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3438 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -0.24593880772590637 + f32.const -0.3955177664756775 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3439 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 0.1570674479007721 + f32.const -0.24006809294223785 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3440 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.6146844625473022 + f32.const -0.07707194238901138 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3441 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.39549243450164795 + f32.const -0.11720617115497589 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3442 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.5326763391494751 + f32.const -0.16059114038944244 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3443 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.699110209941864 + f32.const 0.26384368538856506 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3444 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.627831220626831 + f32.const 0.005127954296767712 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3445 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3448 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3449 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3450 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3451 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3452 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.862645149230957e-09 + f32.const 1.862645149230957e-09 + f32.const 4.850638554015907e-12 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3455 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.862645149230957e-09 + f32.const -1.862645149230957e-09 + f32.const -4.850638554015907e-12 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3456 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754943508222875e-38 + f32.const 1.1754943508222875e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3457 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754943508222875e-38 + f32.const -1.1754943508222875e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3458 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + f32.const 1.401298464324817e-45 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3459 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.401298464324817e-45 + f32.const -1.401298464324817e-45 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3460 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.175494490952134e-38 + f32.const 1.175494490952134e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3461 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754946310819804e-38 + f32.const 1.1754946310819804e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3462 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3509880009953429e-38 + f32.const 2.3509880009953429e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3463 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.350988701644575e-38 + f32.const 2.350988701644575e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3464 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3509895424236536e-38 + f32.const 2.3509895424236536e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3465 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.70197740328915e-38 + f32.const 4.70197740328915e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3466 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1175870895385742e-08 + f32.const 1.1175870895385742e-08 + f32.const 2.6193447411060333e-10 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.4901161193847656e-08 + f32.const 1.4901161193847656e-08 + f32.const 3.1044086745701804e-10 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3468 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.000244140625 + f32.const 0.000244140625 + f32.const 0.0833333358168602 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3469 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.0003662109375 + f32.const 0.0003662109375 + f32.const 0.28125 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3470 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.175494490952134e-38 + f32.const -1.175494490952134e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3471 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754946310819804e-38 + f32.const -1.1754946310819804e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3472 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.3509880009953429e-38 + f32.const -2.3509880009953429e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3473 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.350988701644575e-38 + f32.const -2.350988701644575e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3474 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.3509895424236536e-38 + f32.const -2.3509895424236536e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3475 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -4.70197740328915e-38 + f32.const -4.70197740328915e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3476 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1175870895385742e-08 + f32.const -1.1175870895385742e-08 + f32.const -2.6193447411060333e-10 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3477 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.4901161193847656e-08 + f32.const -1.4901161193847656e-08 + f32.const -3.1044086745701804e-10 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3478 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.000244140625 + f32.const -0.000244140625 + f32.const -0.0833333358168602 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3479 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.0003662109375 + f32.const -0.0003662109375 + f32.const -0.28125 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3480 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.802596928649634e-45 + f32.const 2.802596928649634e-45 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3481 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.2611686178923354e-44 + f32.const 1.2611686178923354e-44 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3482 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.938735877055719e-39 + f32.const 2.938735877055719e-39 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3483 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.877471754111438e-39 + f32.const 5.877471754111438e-39 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3484 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754940705625946e-38 + f32.const 1.1754940705625946e-38 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3485 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754942106924411e-38 + f32.const 1.1754942106924411e-38 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3486 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.802596928649634e-45 + f32.const -2.802596928649634e-45 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3487 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.2611686178923354e-44 + f32.const -1.2611686178923354e-44 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3488 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.938735877055719e-39 + f32.const -2.938735877055719e-39 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3489 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -5.877471754111438e-39 + f32.const -5.877471754111438e-39 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3490 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754940705625946e-38 + f32.const -1.1754940705625946e-38 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3491 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754942106924411e-38 + f32.const -1.1754942106924411e-38 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3492 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 255.99993896484375 + f32.const -0.9992055892944336 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3495 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5033165 + f32.const 0.5312945246696472 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3496 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 421657440 + f32.const -0.7397398948669434 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3497 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2147483392 + f32.const 0.2762770354747772 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3498 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 68719476736 + f32.const 0.9855440855026245 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3499 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 549755813888 + f32.const -0.9782648086547852 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3500 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MAX_VALUE + f32.const -0.5218765139579773 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3501 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -255.99993896484375 + f32.const 0.9992055892944336 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3502 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -5033165 + f32.const -0.5312945246696472 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3503 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -421657440 + f32.const 0.7397398948669434 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3504 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2147483392 + f32.const -0.2762770354747772 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3505 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -68719476736 + f32.const -0.9855440855026245 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3506 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -549755813888 + f32.const 0.9782648086547852 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3507 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MAX_VALUE + f32.neg + f32.const 0.5218765139579773 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_sinf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3508 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -1593.5206801156262 + f64.const -0.2138727605342865 + global.get $std/math/INEXACT + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3520 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 38.54878088685412 + f64.const 0.21537430584430695 + global.get $std/math/INEXACT + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3521 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2182.6307505145546 + f64.const 0.16213826835155487 + global.get $std/math/INEXACT + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3522 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -343.2723926847529 + f64.const 0.20479513704776764 + global.get $std/math/INEXACT + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3523 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 5291.7790755194055 + f64.const -0.48676517605781555 + global.get $std/math/INEXACT + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3524 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.7114062568229157 + f64.const -0.4584641456604004 + global.get $std/math/INEXACT + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3525 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.41790065258739445 + f64.const 0.37220045924186707 + global.get $std/math/INEXACT + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3526 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.5917755935451237 + f64.const 0.46178996562957764 + global.get $std/math/INEXACT + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3527 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.8538292008852542 + f64.const -0.07019051909446716 + global.get $std/math/INEXACT + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3528 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.732097615653169 + f64.const 0.26858529448509216 + global.get $std/math/INEXACT + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3529 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3532 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3533 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3534 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3535 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3536 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -1593.521240234375 + f32.const 0.1671663224697113 + global.get $std/math/INEXACT + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3545 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 38.548770904541016 + f32.const -0.49340328574180603 + global.get $std/math/INEXACT + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3546 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2182.630859375 + f32.const 0.0849970355629921 + global.get $std/math/INEXACT + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3547 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -343.2723388671875 + f32.const 0.0704190656542778 + global.get $std/math/INEXACT + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3548 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 5291.78125 + f32.const -0.44362515211105347 + global.get $std/math/INEXACT + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3549 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.7114062309265137 + f32.const 0.058103885501623154 + global.get $std/math/INEXACT + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3550 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.4179006516933441 + f32.const 0.39349499344825745 + global.get $std/math/INEXACT + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3551 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.5917755961418152 + f32.const -0.4183797240257263 + global.get $std/math/INEXACT + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3552 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.8538292050361633 + f32.const 0.45992106199264526 + global.get $std/math/INEXACT + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3553 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.7320976257324219 + f32.const -0.48159059882164 + global.get $std/math/INEXACT + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3554 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3557 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3558 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3559 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3560 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3561 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3573 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 2.0845238903256313 + f64.const -0.07180261611938477 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3574 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3575 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3576 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 3.0441841217266385 + f64.const -0.01546262577176094 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3577 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.8136251582267503 + f64.const -0.08618157356977463 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3578 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3579 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.7495063350104014 + f64.const -0.0981396734714508 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3580 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.879859248170583 + f64.const -0.37124353647232056 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3581 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3582 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3586 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3587 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3588 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3589 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3590 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3591 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4 + f64.const 2 + f64.const 0 + i32.const 0 + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3592 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-323 + f64.const 3.1434555694052576e-162 + f64.const 0.43537619709968567 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3593 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5e-323 + f64.const 3.849931087076416e-162 + f64.const -0.45194002985954285 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3594 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + f64.const 2.2227587494850775e-162 + f64.const 0 + i32.const 0 + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3595 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5e-324 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3596 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999999999999999 + f64.const 0.9999999999999999 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.9999999999999998 + f64.const 1.414213562373095 + f64.const -0.21107041835784912 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3598 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000000000000002 + f64.const 1 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3599 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0000000000000004 + f64.const 1.4142135623730951 + f64.const -0.27173060178756714 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3600 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000000000000002 + f64.const 1 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3601 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999999999999999 + f64.const 0.9999999999999999 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3602 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1797693134862315708145274e284 + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3603 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + f64.const 1340780792994259561100831e130 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3604 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 179769313486231490980915e285 + f64.const 134078079299425926338769e131 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3605 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862314111473026e284 + f64.const 1340780792994258965674548e130 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3606 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862313313136902e284 + f64.const 1340780792994258667961407e130 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3607 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862312514800778e284 + f64.const 1340780792994258370248265e130 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3608 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862311716464655e284 + f64.const 1340780792994258072535124e130 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3609 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862310918128531e284 + f64.const 1340780792994257774821982e130 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3610 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862310119792407e284 + f64.const 1340780792994257477108841e130 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3611 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862309321456283e284 + f64.const 1340780792994257179395699e130 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3612 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862308523120159e284 + f64.const 1340780792994256881682558e130 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3613 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862307724784036e284 + f64.const 1340780792994256583969417e130 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3614 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507203e-308 + f64.const 1.4916681462400417e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3615 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507205e-308 + f64.const 1.4916681462400423e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3616 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507207e-308 + f64.const 1.491668146240043e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3617 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507209e-308 + f64.const 1.4916681462400437e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3618 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507211e-308 + f64.const 1.4916681462400443e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3619 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072127e-308 + f64.const 1.491668146240045e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3620 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072147e-308 + f64.const 1.4916681462400457e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3621 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072167e-308 + f64.const 1.4916681462400463e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3622 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072187e-308 + f64.const 1.491668146240047e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3623 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072207e-308 + f64.const 1.4916681462400476e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3624 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072226e-308 + f64.const 1.4916681462400483e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3625 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072246e-308 + f64.const 1.491668146240049e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3626 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072266e-308 + f64.const 1.4916681462400496e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3627 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072286e-308 + f64.const 1.4916681462400503e-154 + f64.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3628 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 92.35130391890645 + f64.const 9.609958580499006 + f64.const 0.4998137056827545 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3629 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 93.3599596388916 + f64.const 9.662295774757238 + f64.const -0.49979978799819946 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3630 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 95.42049628886124 + f64.const 9.76834153215689 + f64.const -0.49997270107269287 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3631 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 95.87916941885449 + f64.const 9.791790919890728 + f64.const 0.4998766779899597 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3632 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 96.84804174884022 + f64.const 9.841140266698785 + f64.const 0.499801903963089 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3633 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 97.43639050883155 + f64.const 9.87098731175517 + f64.const 0.4997696280479431 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3634 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 97.50957979883047 + f64.const 9.874693909120955 + f64.const 0.49999818205833435 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3635 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 97.80496893882612 + f64.const 9.88963947466368 + f64.const -0.4999580681324005 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3636 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 98.2751822888192 + f64.const 9.913383997849534 + f64.const 0.49979931116104126 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3637 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 99.47293564880155 + f64.const 9.973611966023219 + f64.const -0.4999540448188782 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3638 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 100.57047130878539 + f64.const 10.028483001370914 + f64.const -0.49996453523635864 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3639 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 100.60954608878481 + f64.const 10.030431002144665 + f64.const 0.49975672364234924 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3640 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 100.67909109878379 + f64.const 10.033897104255344 + f64.const -0.4997771382331848 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3641 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 101.12268095877725 + f64.const 10.055977374615422 + f64.const 0.49988678097724915 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3642 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 101.3027691287746 + f64.const 10.064927676281366 + f64.const 0.4999105632305145 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3643 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.45932313565507e-307 + f64.const 4.9591563149945874e-154 + f64.const -0.4998999834060669 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3644 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.610957305180409e-307 + f64.const 7.490632353266584e-154 + f64.const -0.4999343752861023 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3645 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.8073887977408524e-307 + f64.const 7.62062254526548e-154 + f64.const -0.49989569187164307 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3646 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.026137080471427e-307 + f64.const 8.382205605013174e-154 + f64.const 0.49980640411376953 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3647 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.438697769194972e-307 + f64.const 9.186238495268328e-154 + f64.const -0.4999065697193146 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3648 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1607792515836795e-306 + f64.const 1.0773946591586944e-153 + f64.const -0.49997684359550476 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3649 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.2827413827423193e-306 + f64.const 1.1325817333606962e-153 + f64.const -0.4999513030052185 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3650 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.7116604596087457e-306 + f64.const 1.3083044216117078e-153 + f64.const -0.49986395239830017 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3651 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.038173251686994e-306 + f64.const 1.4276460526639628e-153 + f64.const 0.4998403787612915 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3652 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.171572060856931e-306 + f64.const 1.4736254818836879e-153 + f64.const 0.4999290406703949 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3653 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.4681399631804094e-306 + f64.const 1.5710314965589996e-153 + f64.const 0.49989044666290283 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3654 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.5175533964200588e-306 + f64.const 1.5866799918131124e-153 + f64.const -0.4997701048851013 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3655 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.6461505468829625e-306 + f64.const 1.6266992797941982e-153 + f64.const 0.4998672902584076 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3656 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.8167076367720413e-306 + f64.const 1.9536395872248397e-153 + f64.const 0.49983471632003784 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3657 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.5743220778562766e-306 + f64.const 2.1387664851161936e-153 + f64.const 0.49985939264297485 + global.get $std/math/INEXACT + call $std/math/test_sqrt + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3658 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3667 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 2.084523916244507 + f32.const 0.3200402557849884 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3668 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3669 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3670 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 3.0441842079162598 + f32.const 0.05022354796528816 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3671 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.813625156879425 + f32.const 0.2240506112575531 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3672 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3673 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.7495063543319702 + f32.const 0.05895441770553589 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3674 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.879859209060669 + f32.const -0.4874873757362366 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3675 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3676 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3679 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3680 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3681 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3682 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3683 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3684 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3685 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4 + f32.const 2 + f32.const 0 + i32.const 0 + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3686 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.802596928649634e-45 + f32.const 5.293955920339377e-23 + f32.const 0 + i32.const 0 + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3687 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.203895392974451e-45 + f32.const 6.483745598763743e-23 + f32.const 0.37388554215431213 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3688 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + f32.const 3.743392066509216e-23 + f32.const -0.20303145051002502 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3689 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.401298464324817e-45 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3690 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3402823466385288598117041e14 + f32.const 18446742974197923840 + f32.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3691 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3402823466385288598117041e14 + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3692 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999998807907104 + f32.const 0.9999999403953552 + f32.const 2.980232594040899e-08 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3693 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999999403953552 + f32.const 0.9999999403953552 + f32.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3694 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.999999761581421 + f32.const 1.4142134189605713 + f32.const -0.4959246516227722 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3695 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.9999998807907104 + f32.const 1.4142135381698608 + f32.const 0.15052194893360138 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3696 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000001192092896 + f32.const 1 + f32.const -0.5 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3697 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.000000238418579 + f32.const 1.0000001192092896 + f32.const 5.960463766996327e-08 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3698 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.000000238418579 + f32.const 1.4142136573791504 + f32.const 0.08986179530620575 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3699 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.000000476837158 + f32.const 1.41421377658844 + f32.const 0.3827550709247589 + global.get $std/math/INEXACT + call $std/math/test_sqrtf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3700 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.626603542401633 + f64.const -0.2727603316307068 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3712 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 2.600191705822202 + f64.const 0.2651003301143646 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3713 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const 1.7167408328741052 + f64.const -0.24687519669532776 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3714 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -0.2537322523453725 + f64.const -0.4679703712463379 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3715 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const -0.15904195727191958 + f64.const -0.06704077869653702 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3716 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.7792919106910434 + f64.const -0.038056135177612305 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3717 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.43059952879543656 + f64.const -0.09242714196443558 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3718 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.62940368731874 + f64.const -0.321913480758667 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3719 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.9777574652949645 + f64.const -0.1966651827096939 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3720 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.8066186630209123 + f64.const -0.067665696144104 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3721 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.313225746154785e-10 + f64.const 9.313225746154785e-10 + f64.const -1.3020833721384406e-03 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3724 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9.313225746154785e-10 + f64.const -9.313225746154785e-10 + f64.const 1.3020833721384406e-03 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3725 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + f64.const 2.2250738585072014e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3726 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072014e-308 + f64.const -2.2250738585072014e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3727 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + f64.const 5e-324 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3728 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5e-324 + f64.const -5e-324 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3729 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3730 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3731 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7853981633974483 + f64.const 0.9999999999999999 + f64.const -0.4484681189060211 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3732 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.7853981633974483 + f64.const -0.9999999999999999 + f64.const 0.4484681189060211 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3733 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507202e-308 + f64.const 2.225073858507202e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3734 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072024e-308 + f64.const 2.2250738585072024e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3735 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.4501477170144003e-308 + f64.const 4.4501477170144003e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3736 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.450147717014403e-308 + f64.const 4.450147717014403e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3737 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.450147717014406e-308 + f64.const 4.450147717014406e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3738 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.900295434028806e-308 + f64.const 8.900295434028806e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3739 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1175870895385742e-08 + f64.const 1.1175870895385742e-08 + f64.const -0.28125 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3740 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4901161193847656e-08 + f64.const 1.4901161193847656e-08 + f64.const -0.3333333432674408 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3741 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507202e-308 + f64.const -2.225073858507202e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3742 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072024e-308 + f64.const -2.2250738585072024e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3743 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.4501477170144003e-308 + f64.const -4.4501477170144003e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3744 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.450147717014403e-308 + f64.const -4.450147717014403e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3745 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.450147717014406e-308 + f64.const -4.450147717014406e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3746 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.900295434028806e-308 + f64.const -8.900295434028806e-308 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3747 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.1175870895385742e-08 + f64.const -1.1175870895385742e-08 + f64.const 0.28125 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3748 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.4901161193847656e-08 + f64.const -1.4901161193847656e-08 + f64.const 0.3333333432674408 + global.get $std/math/INEXACT + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3749 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-323 + f64.const 1e-323 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3750 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.4e-323 + f64.const 4.4e-323 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3751 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.562684646268003e-309 + f64.const 5.562684646268003e-309 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3752 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1125369292536007e-308 + f64.const 1.1125369292536007e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3753 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072004e-308 + f64.const 2.2250738585072004e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3754 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507201e-308 + f64.const 2.225073858507201e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3755 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-323 + f64.const -1e-323 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3756 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.4e-323 + f64.const -4.4e-323 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3757 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5.562684646268003e-309 + f64.const -5.562684646268003e-309 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3758 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.1125369292536007e-308 + f64.const -1.1125369292536007e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3759 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072004e-308 + f64.const -2.2250738585072004e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3760 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507201e-308 + f64.const -2.225073858507201e-308 + f64.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3761 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3283064365386963e-10 + call $~lib/math/NativeMath.tan + f64.const 2.3283064365386963e-10 + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3764 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.3283064365386963e-10 + call $~lib/math/NativeMath.tan + f64.const -2.3283064365386963e-10 + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3765 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 11 + f64.const 16 + f64.div + call $~lib/math/NativeMath.tan + f64.const 11 + f64.const 16 + f64.div + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3766 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -11 + f64.const 16 + f64.div + call $~lib/math/NativeMath.tan + f64.const -11 + f64.const 16 + f64.div + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3767 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.39269908169872414 + call $~lib/math/NativeMath.tan + f64.const 0.39269908169872414 + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3768 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6743358 + call $~lib/math/NativeMath.tan + f64.const 0.6743358 + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3769 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.725290298461914e-09 + call $~lib/math/NativeMath.tan + f64.const 3.725290298461914e-09 + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3770 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/math/kPI + f64.const 2 + f64.div + call $~lib/math/NativeMath.tan + global.get $std/math/kPI + f64.const 2 + f64.div + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3771 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + call $~lib/math/NativeMath.tan + f64.const 0.5 + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3773 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.107148717794091 + call $~lib/math/NativeMath.tan + f64.const 1.107148717794091 + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3774 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7 + f64.const 4 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.tan + f64.const 7 + f64.const 4 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3775 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9 + f64.const 4 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.tan + f64.const 9 + f64.const 4 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3776 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1048576 + f64.const 2 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.tan + f64.const 1048576 + f64.const 2 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3777 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1048575 + f64.const 2 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/math/NativeMath.tan + f64.const 1048575 + f64.const 2 + f64.div + global.get $std/math/kPI + f64.mul + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3778 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/math/kTwo120 + call $~lib/math/NativeMath.tan + global.get $std/math/kTwo120 + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3779 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/math/kTwo120 + f64.neg + call $~lib/math/NativeMath.tan + global.get $std/math/kTwo120 + f64.neg + call $~lib/bindings/dom/Math.tan + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3780 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3783 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3784 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3785 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const 0 + global.get $std/math/INVALID + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3786 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_tan + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3787 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 4.626595497131348 + f32.const 0.2455666959285736 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3796 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 2.6001901626586914 + f32.const 0.3652407228946686 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3797 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const 1.716740608215332 + f32.const 0.08169349282979965 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3798 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -0.2537320852279663 + f32.const 0.23186513781547546 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3799 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const -0.15904149413108826 + f32.const -0.009332014247775078 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3800 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.7792918682098389 + f32.const -0.06759700924158096 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3801 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.43059954047203064 + f32.const 0.005771996453404427 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3802 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.6294037103652954 + f32.const -0.16838163137435913 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3803 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.977757453918457 + f32.const 0.38969388604164124 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3804 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.8066186308860779 + f32.const 0.12294059991836548 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3805 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3808 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3809 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3810 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const 0 + global.get $std/math/INVALID + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3811 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3812 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.862645149230957e-09 + f32.const 1.862645149230957e-09 + f32.const -9.701277108031814e-12 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3815 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.862645149230957e-09 + f32.const -1.862645149230957e-09 + f32.const 9.701277108031814e-12 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3816 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754943508222875e-38 + f32.const 1.1754943508222875e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3817 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754943508222875e-38 + f32.const -1.1754943508222875e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3818 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + f32.const 1.401298464324817e-45 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3819 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.401298464324817e-45 + f32.const -1.401298464324817e-45 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3820 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.175494490952134e-38 + f32.const 1.175494490952134e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3821 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754946310819804e-38 + f32.const 1.1754946310819804e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3822 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3509880009953429e-38 + f32.const 2.3509880009953429e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3823 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.350988701644575e-38 + f32.const 2.350988701644575e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3824 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3509895424236536e-38 + f32.const 2.3509895424236536e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3825 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.70197740328915e-38 + f32.const 4.70197740328915e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3826 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1175870895385742e-08 + f32.const 1.1175870895385742e-08 + f32.const -5.238689482212067e-10 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3827 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.4901161193847656e-08 + f32.const 1.4901161193847656e-08 + f32.const -6.208817349140361e-10 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3828 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.000244140625 + f32.const 0.000244140625 + f32.const -0.1666666716337204 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3829 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.175494490952134e-38 + f32.const -1.175494490952134e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3830 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754946310819804e-38 + f32.const -1.1754946310819804e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3831 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.3509880009953429e-38 + f32.const -2.3509880009953429e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3832 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.350988701644575e-38 + f32.const 2.350988701644575e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3833 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.3509895424236536e-38 + f32.const -2.3509895424236536e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3834 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -4.70197740328915e-38 + f32.const -4.70197740328915e-38 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3835 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1175870895385742e-08 + f32.const -1.1175870895385742e-08 + f32.const 5.238689482212067e-10 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3836 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.4901161193847656e-08 + f32.const -1.4901161193847656e-08 + f32.const 6.208817349140361e-10 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3837 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.000244140625 + f32.const -0.000244140625 + f32.const 0.1666666716337204 + global.get $std/math/INEXACT + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3838 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.802596928649634e-45 + f32.const 2.802596928649634e-45 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3839 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.2611686178923354e-44 + f32.const 1.2611686178923354e-44 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3840 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.938735877055719e-39 + f32.const 2.938735877055719e-39 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3841 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.877471754111438e-39 + f32.const 5.877471754111438e-39 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3842 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754940705625946e-38 + f32.const 1.1754940705625946e-38 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3843 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754942106924411e-38 + f32.const 1.1754942106924411e-38 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3844 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.802596928649634e-45 + f32.const -2.802596928649634e-45 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3845 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.2611686178923354e-44 + f32.const -1.2611686178923354e-44 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3846 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.938735877055719e-39 + f32.const -2.938735877055719e-39 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3847 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -5.877471754111438e-39 + f32.const -5.877471754111438e-39 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3848 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754940705625946e-38 + f32.const -1.1754940705625946e-38 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3849 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754942106924411e-38 + f32.const -1.1754942106924411e-38 + f32.const 0 + global.get $std/math/INEXACT + global.get $std/math/UNDERFLOW + i32.or + call $std/math/test_tanf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3850 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -0.999999803096032 + f64.const 0.012793331407010555 + global.get $std/math/INEXACT + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3862 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 0.9996636978961307 + f64.const 0.1573508232831955 + global.get $std/math/INEXACT + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3863 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -0.9999998950434862 + f64.const 0.27985066175460815 + global.get $std/math/INEXACT + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3864 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -0.9999957568392429 + f64.const -0.44285574555397034 + global.get $std/math/INEXACT + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3865 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 0.9999999821447234 + f64.const 0.4462755024433136 + global.get $std/math/INEXACT + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3866 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.5796835018635275 + f64.const 0.4892043173313141 + global.get $std/math/INEXACT + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3867 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.3855853099901652 + f64.const 0.35993871092796326 + global.get $std/math/INEXACT + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3868 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.5092819248700439 + f64.const -0.39436522126197815 + global.get $std/math/INEXACT + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3869 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.6493374550318555 + f64.const -0.4899396002292633 + global.get $std/math/INEXACT + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3870 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.590715084799841 + f64.const -0.0145387789234519 + global.get $std/math/INEXACT + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3871 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3874 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3875 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3876 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3877 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3878 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -0.9999998211860657 + f32.const -0.3034979999065399 + global.get $std/math/INEXACT + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3887 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 0.9996637105941772 + f32.const 0.2154078334569931 + global.get $std/math/INEXACT + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3888 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -0.9999998807907104 + f32.const 0.23912210762500763 + global.get $std/math/INEXACT + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3889 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -0.999995768070221 + f32.const -0.18844597041606903 + global.get $std/math/INEXACT + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3890 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 1 + f32.const 0.1497807800769806 + global.get $std/math/INEXACT + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3891 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.5796834826469421 + f32.const -0.05590476095676422 + global.get $std/math/INEXACT + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3892 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.38558530807495117 + f32.const 0.349787175655365 + global.get $std/math/INEXACT + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3893 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.5092819333076477 + f32.const -0.1528785079717636 + global.get $std/math/INEXACT + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3894 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.6493374705314636 + f32.const 0.4317026138305664 + global.get $std/math/INEXACT + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3895 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.5907150506973267 + f32.const 0.4079873859882355 + global.get $std/math/INEXACT + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3896 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3899 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3900 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3901 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3902 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3903 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -8 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3915 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 4 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3916 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -8 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3917 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -6 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3918 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 9 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3919 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3920 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3921 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3922 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3923 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3924 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + i32.const 0 + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3927 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + i32.const 0 + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3928 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const 0 + i32.const 0 + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3929 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + i32.const 0 + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3930 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + i32.const 0 + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3931 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + i32.const 0 + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3932 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + i32.const 0 + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3933 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3934 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3935 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000152587890625 + f64.const 1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3936 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0000152587890625 + f64.const -1 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3937 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999923706054688 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3938 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.9999923706054688 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3939 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.888609052210118e-31 + f64.const 0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3940 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + f64.const -0 + f64.const 0 + global.get $std/math/INEXACT + call $std/math/test_trunc + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3941 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -8 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3950 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 4 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3951 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -8 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3952 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -6 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3953 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 9 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3954 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3955 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3956 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3957 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3958 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3959 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + i32.const 0 + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3962 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + i32.const 0 + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3963 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const 0 + i32.const 0 + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3964 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + i32.const 0 + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3965 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + i32.const 0 + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3966 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + i32.const 0 + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3967 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + i32.const 0 + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3968 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3969 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3970 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000152587890625 + f32.const 1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3971 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000152587890625 + f32.const -1 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3972 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999923706054688 + f32.const 0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3973 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.9999923706054688 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3974 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.888609052210118e-31 + f32.const 0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3975 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const -0 + f32.const 0 + global.get $std/math/INEXACT + call $std/math/test_truncf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 3976 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4602641186874283791 + i64.const -4616392916911125550 + i64.const -4628956453976145920 + i64.const -4626592471448962314 + i64.const -4630808324688838656 + global.get $std/math/INEXACT + call $std/math/test_sincos + drop + i64.const 4616578323568966759 + i64.const -4616789907589610460 + i64.const -4632356642145435648 + i64.const -4623234040091605244 + i64.const -4630954342839484416 + global.get $std/math/INEXACT + call $std/math/test_sincos + drop + i64.const -4602464091242371353 + i64.const -4617413764247143988 + i64.const -4630245256623816704 + i64.const -4620663195860462557 + i64.const -4641537901929168896 + global.get $std/math/INEXACT + call $std/math/test_sincos + drop + i64.const -4604332007749985084 + i64.const -4625343132137557201 + i64.const -4629629133364658176 + i64.const 4606905765568473756 + i64.const -4621075345754292224 + global.get $std/math/INEXACT + call $std/math/test_sincos + drop + i64.const 4621406507342668262 + i64.const 4594826987695694788 + i64.const -4639197561901547520 + i64.const -4616301417154991689 + i64.const 4602463851227643904 + global.get $std/math/INEXACT + call $std/math/test_sincos + drop + i64.const 4604137858433287319 + i64.const 4603711805189578650 + i64.const -4631518618864058368 + i64.const 4605279855905985745 + i64.const 4593746800099196928 + global.get $std/math/INEXACT + call $std/math/test_sincos + drop + i64.const -4622375691843501615 + i64.const -4622575858842575876 + i64.const -4623091339515396096 + i64.const 4606448054996611351 + i64.const -4624994927539912704 + global.get $std/math/INEXACT + call $std/math/test_sincos + drop + i64.const 4603235101512779211 + i64.const 4602973141375866126 + i64.const -4623304571219869696 + i64.const 4605798183832360369 + i64.const -4624249509122146304 + global.get $std/math/INEXACT + call $std/math/test_sincos + drop + i64.const 4605148163534189634 + i64.const 4604472244479532466 + i64.const -4621996155604041728 + i64.const 4604615492473651755 + i64.const -4632555521679818752 + global.get $std/math/INEXACT + call $std/math/test_sincos + drop + i64.const -4619083057392940530 + i64.const -4619541816298850243 + i64.const -4622804297187328000 + i64.const 4605185968576882368 + i64.const 4599236402884902912 + global.get $std/math/INEXACT + call $std/math/test_sincos + drop + f64.const 2 + f64.const 4 + call $~lib/math/NativeMath.imul + f64.const 8 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4017 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 8 + call $~lib/math/NativeMath.imul + f64.const -8 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4018 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const -2 + call $~lib/math/NativeMath.imul + f64.const 4 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4019 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4294967295 + f64.const 5 + call $~lib/math/NativeMath.imul + f64.const -5 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4020 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4294967294 + f64.const 5 + call $~lib/math/NativeMath.imul + f64.const -10 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4021 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.e+60 + f64.const 1.e+60 + call $~lib/math/NativeMath.imul + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4022 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.e+60 + f64.const -1.e+60 + call $~lib/math/NativeMath.imul + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4023 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.e+60 + f64.const -1.e+60 + call $~lib/math/NativeMath.imul + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4024 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.e+24 + f64.const 100 + call $~lib/math/NativeMath.imul + f64.const -2147483648 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4025 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + call $~lib/math/NativeMath.imul + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4026 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + call $~lib/math/NativeMath.imul + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4027 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_VALUE + global.get $~lib/builtins/f64.MAX_VALUE + call $~lib/math/NativeMath.imul + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4028 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.clz32 + f64.const 32 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4032 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/math/NativeMath.clz32 + f64.const 31 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4033 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/math/NativeMath.clz32 + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4034 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -128 + call $~lib/math/NativeMath.clz32 + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4035 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4294967295 + call $~lib/math/NativeMath.clz32 + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4036 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4294967295.5 + call $~lib/math/NativeMath.clz32 + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4037 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4294967296 + call $~lib/math/NativeMath.clz32 + f64.const 32 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4038 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4294967297 + call $~lib/math/NativeMath.clz32 + f64.const 31 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4039 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.clz32 + f64.const 32 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4040 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/math/NativeMath.clz32 + f64.const 32 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4041 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_SAFE_INTEGER + call $~lib/math/NativeMath.clz32 + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4042 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_SAFE_INTEGER + f64.neg + call $~lib/math/NativeMath.clz32 + f64.const 31 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4043 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_VALUE + call $~lib/math/NativeMath.clz32 + f64.const 32 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4044 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MIN_VALUE + call $~lib/math/NativeMath.clz32 + f64.const 32 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4045 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_VALUE + f64.neg + call $~lib/math/NativeMath.clz32 + f64.const 32 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4046 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.EPSILON + call $~lib/math/NativeMath.clz32 + f64.const 32 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4047 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i64.const 0 + call $~lib/math/ipow64 + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4051 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i64.const 1 + call $~lib/math/ipow64 + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4052 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i64.const 2 + call $~lib/math/ipow64 + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4053 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i64.const 3 + call $~lib/math/ipow64 + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4054 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 0 + call $~lib/math/ipow64 + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4056 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 1 + call $~lib/math/ipow64 + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4057 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 2 + call $~lib/math/ipow64 + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4058 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 3 + call $~lib/math/ipow64 + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4059 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 0 + call $~lib/math/ipow64 + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4061 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 1 + call $~lib/math/ipow64 + i64.const 2 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4062 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 2 + call $~lib/math/ipow64 + i64.const 4 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4063 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 3 + call $~lib/math/ipow64 + i64.const 8 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4064 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i64.const 0 + call $~lib/math/ipow64 + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4066 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i64.const 1 + call $~lib/math/ipow64 + i64.const -1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4067 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i64.const 2 + call $~lib/math/ipow64 + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4068 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i64.const 3 + call $~lib/math/ipow64 + i64.const -1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4069 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -2 + i64.const 0 + call $~lib/math/ipow64 + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4071 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -2 + i64.const 1 + call $~lib/math/ipow64 + i64.const -2 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4072 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -2 + i64.const 2 + call $~lib/math/ipow64 + i64.const 4 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4073 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -2 + i64.const 3 + call $~lib/math/ipow64 + i64.const -8 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4074 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 63 + call $~lib/math/ipow64 + i64.const -9223372036854775808 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4076 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 3 + i64.const 40 + call $~lib/math/ipow64 + i64.const -6289078614652622815 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4077 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 64 + call $~lib/math/ipow64 + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4078 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 3 + i64.const 41 + call $~lib/math/ipow64 + i64.const -420491770248316829 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4079 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 3 + i64.const 128 + call $~lib/math/ipow64 + i64.const -9204772141784466943 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4080 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const -1 + call $~lib/math/ipow64 + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4082 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const -1 + call $~lib/math/ipow64 + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4083 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 64 + call $~lib/math/ipow64 + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4084 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 128 + call $~lib/math/ipow64 + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4085 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.const 0 + i32.eq + i32.const 0 + select + i32.const 1 + i32.eq + drop + i32.const 1 + i32.const 1 + i32.const 0 + i32.eq + i32.const 0 + select + i32.const 0 + i32.eq + drop + i32.const 1 + i32.const 3 + call $~lib/math/ipow32 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4091 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2 + i32.const 3 + call $~lib/math/ipow32 + i32.const -8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4092 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 0 + call $~lib/math/ipow32 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4093 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const -1 + call $~lib/math/ipow32 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4094 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const -2 + call $~lib/math/ipow32 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4095 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const -3 + call $~lib/math/ipow32 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4096 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const -2 + call $~lib/math/ipow32 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4098 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const -1 + call $~lib/math/ipow32 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4099 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.const 0 + i32.eq + i32.const 0 + select + i32.const 1 + i32.eq + drop + i32.const 1 + i32.const 1 + i32.const 0 + i32.eq + i32.const 0 + select + i32.const 0 + i32.eq + drop + i32.const 0 + i32.const 2 + call $~lib/math/ipow32 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const -2 + call $~lib/math/ipow32 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4104 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const -1 + call $~lib/math/ipow32 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.const 0 + i32.eq + i32.const 1 + select + i32.const 1 + i32.eq + drop + i32.const 1 + i32.const 1 + i32.const 0 + i32.eq + i32.const 1 + select + i32.const 1 + i32.eq + drop + i32.const 1 + i32.const 2 + call $~lib/math/ipow32 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 3 + call $~lib/math/ipow32 + i32.extend8_s + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2 + i32.const 3 + call $~lib/math/ipow32 + i32.extend8_s + i32.const -8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 7 + call $~lib/math/ipow32 + i32.const 65535 + i32.and + i32.const 16384 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 8 + call $~lib/math/ipow32 + i32.const 65535 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 10 + call $~lib/math/ipow32 + i32.const 65535 + i32.and + i32.const 761 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i64.const 0 + call $~lib/math/ipow64 + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i64.const 1 + call $~lib/math/ipow64 + i64.const 0 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 3 + call $~lib/math/ipow64 + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4118 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 3 + call $~lib/math/ipow64 + i64.const 8 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967295 + i64.const 3 + call $~lib/math/ipow64 + i64.const 12884901887 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 65535 + i64.const 3 + call $~lib/math/ipow64 + i64.const 281462092005375 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 65535 + i64.const 8 + call $~lib/math/ipow64 + i64.const -15762478437236735 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4122 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 61731 + i64.const 4 + call $~lib/math/ipow64 + i64.const -3925184889716469295 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 61731 + i64.const 4 + call $~lib/math/ipow64 + i64.const -3925184889716469295 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 57055 + i64.const 3 + call $~lib/math/ipow64 + i64.const 339590 + i64.const 3 + call $~lib/math/ipow64 + i64.add + i64.const 340126 + i64.const 3 + call $~lib/math/ipow64 + i64.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 57055 + i64.const 3 + call $~lib/math/ipow64 + i64.const 339590 + i64.const 3 + call $~lib/math/ipow64 + i64.add + i64.const 39347712995520375 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + f64.convert_i32_u + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f64.convert_i32_u + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4130 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f64.convert_i32_u + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4132 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4133 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const 308 + call $~lib/math/NativeMath.pow + f64.const 1.e+308 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4136 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const -308 + call $~lib/math/NativeMath.pow + f64.const 1e-308 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const -323 + call $~lib/math/NativeMath.pow + f64.const 1e-323 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4138 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const 208 + call $~lib/math/NativeMath.pow + f64.const 1.e+208 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4139 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const 64 + call $~lib/math/NativeMath.pow + f64.const 1.e+64 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const -64 + call $~lib/math/NativeMath.pow + f64.const 1e-64 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4141 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const 53 + call $~lib/math/NativeMath.pow + f64.const 1.e+53 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const -53 + call $~lib/math/NativeMath.pow + f64.const 1e-53 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const 5 + call $~lib/math/NativeMath.pow + f64.const 1e5 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4145 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const -5 + call $~lib/math/NativeMath.pow + f64.const 1e-05 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4146 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const 3 + call $~lib/math/NativeMath.pow + f64.const 1e3 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4147 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const -3 + call $~lib/math/NativeMath.pow + f64.const 0.001 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4148 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 10 + f32.const 38 + call $~lib/math/NativeMathf.pow + f32.const 9999999680285692465065626e13 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4149 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 10 + f32.const -5 + call $~lib/math/NativeMathf.pow + f32.const 9.999999747378752e-06 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4150 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:std/math + ) +) diff --git a/tests/compiler/std/math.js b/tests/compiler/std/math.js index 4a639384ce..035ce3d87a 100644 --- a/tests/compiler/std/math.js +++ b/tests/compiler/std/math.js @@ -1,6 +1,6 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports.Math = Math; imports.math = { mod: function(a, b) { return a % b; } }; -}; +} diff --git a/tests/compiler/std/math.json b/tests/compiler/std/math.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/std/math.json +++ b/tests/compiler/std/math.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat deleted file mode 100644 index c28d5fba12..0000000000 --- a/tests/compiler/std/math.optimized.wat +++ /dev/null @@ -1,48692 +0,0 @@ -(module - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) - (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $f32_f32_f32_f32_=>_i32 (func (param f32 f32 f32 f32) (result i32))) - (type $f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64) (result i32))) - (type $none_=>_none (func)) - (type $none_=>_f64 (func (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i64_=>_none (func (param i64))) - (type $i64_i64_i64_i64_i64_=>_none (func (param i64 i64 i64 i64 i64))) - (type $f64_=>_none (func (param f64))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f32_i32_f32_=>_i32 (func (param f32 i32 f32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $f64_i32_f64_=>_i32 (func (param f64 i32 f64) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (type $f32_i32_=>_f32 (func (param f32 i32) (result f32))) - (type $f32_f32_f32_=>_f32 (func (param f32 f32 f32) (result f32))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) - (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) - (type $f64_f64_f64_=>_f64 (func (param f64 f64 f64) (result f64))) - (import "Math" "E" (global $~lib/bindings/Math/E f64)) - (import "Math" "LN2" (global $~lib/bindings/Math/LN2 f64)) - (import "Math" "LN10" (global $~lib/bindings/Math/LN10 f64)) - (import "Math" "LOG2E" (global $~lib/bindings/Math/LOG2E f64)) - (import "Math" "PI" (global $~lib/bindings/Math/PI f64)) - (import "Math" "SQRT1_2" (global $~lib/bindings/Math/SQRT1_2 f64)) - (import "Math" "SQRT2" (global $~lib/bindings/Math/SQRT2 f64)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "Math" "abs" (func $~lib/bindings/Math/abs (param f64) (result f64))) - (import "Math" "acos" (func $~lib/bindings/Math/acos (param f64) (result f64))) - (import "Math" "acosh" (func $~lib/bindings/Math/acosh (param f64) (result f64))) - (import "Math" "asin" (func $~lib/bindings/Math/asin (param f64) (result f64))) - (import "Math" "asinh" (func $~lib/bindings/Math/asinh (param f64) (result f64))) - (import "Math" "atan" (func $~lib/bindings/Math/atan (param f64) (result f64))) - (import "Math" "atanh" (func $~lib/bindings/Math/atanh (param f64) (result f64))) - (import "Math" "atan2" (func $~lib/bindings/Math/atan2 (param f64 f64) (result f64))) - (import "Math" "cbrt" (func $~lib/bindings/Math/cbrt (param f64) (result f64))) - (import "Math" "ceil" (func $~lib/bindings/Math/ceil (param f64) (result f64))) - (import "Math" "cos" (func $~lib/bindings/Math/cos (param f64) (result f64))) - (import "Math" "cosh" (func $~lib/bindings/Math/cosh (param f64) (result f64))) - (import "Math" "exp" (func $~lib/bindings/Math/exp (param f64) (result f64))) - (import "Math" "expm1" (func $~lib/bindings/Math/expm1 (param f64) (result f64))) - (import "Math" "pow" (func $~lib/bindings/Math/pow (param f64 f64) (result f64))) - (import "Math" "floor" (func $~lib/bindings/Math/floor (param f64) (result f64))) - (import "Math" "log" (func $~lib/bindings/Math/log (param f64) (result f64))) - (import "Math" "log10" (func $~lib/bindings/Math/log10 (param f64) (result f64))) - (import "Math" "log1p" (func $~lib/bindings/Math/log1p (param f64) (result f64))) - (import "Math" "log2" (func $~lib/bindings/Math/log2 (param f64) (result f64))) - (import "Math" "max" (func $~lib/bindings/Math/max (param f64 f64) (result f64))) - (import "Math" "min" (func $~lib/bindings/Math/min (param f64 f64) (result f64))) - (import "math" "mod" (func $std/math/mod (param f64 f64) (result f64))) - (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) - (import "env" "seed" (func $~lib/builtins/seed (result f64))) - (import "Math" "sign" (func $~lib/bindings/Math/sign (param f64) (result f64))) - (import "Math" "sin" (func $~lib/bindings/Math/sin (param f64) (result f64))) - (import "Math" "sinh" (func $~lib/bindings/Math/sinh (param f64) (result f64))) - (import "Math" "sqrt" (func $~lib/bindings/Math/sqrt (param f64) (result f64))) - (import "Math" "tan" (func $~lib/bindings/Math/tan (param f64) (result f64))) - (import "Math" "tanh" (func $~lib/bindings/Math/tanh (param f64) (result f64))) - (import "Math" "trunc" (func $~lib/bindings/Math/trunc (param f64) (result f64))) - (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s") - (data (i32.const 1064) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") - (data (i32.const 1256) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (data (i32.const 1302) "\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data (i32.const 3342) "\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") - (data (i32.const 3600) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") - (global $~lib/math/rempio2_y0 (mut f64) (f64.const 0)) - (global $~lib/math/rempio2_y1 (mut f64) (f64.const 0)) - (global $~lib/math/res128_hi (mut i64) (i64.const 0)) - (global $~lib/math/rempio2f_y (mut f64) (f64.const 0)) - (global $~lib/math/random_seeded (mut i32) (i32.const 0)) - (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) - (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) - (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) - (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (global $~lib/math/NativeMath.sincos_sin (mut f64) (f64.const 0)) - (global $~lib/math/NativeMath.sincos_cos (mut f64) (f64.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) - local.get $1 - i32.const 1023 - i32.gt_s - if (result f64) - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - local.set $0 - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - i32.const 1023 - i32.gt_s - if (result f64) - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - i32.const 1023 - local.get $1 - i32.const 1023 - i32.lt_s - select - local.set $1 - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - else - local.get $0 - end - else - local.get $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - local.set $0 - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - local.get $1 - i32.const -1022 - i32.gt_s - select - local.set $1 - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - else - local.get $0 - end - else - local.get $0 - end - end - local.get $1 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - f64.mul - ) - (func $std/math/ulperr (param $0 f64) (param $1 f64) (param $2 f64) (result f64) - (local $3 i32) - local.get $1 - local.get $1 - f64.ne - i32.const 0 - local.get $0 - local.get $0 - f64.ne - select - if - f64.const 0 - return - end - local.get $0 - local.get $1 - f64.eq - if - local.get $0 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $0 - local.get $0 - f64.eq - i32.and - i32.const 0 - i32.ne - local.get $1 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $1 - local.get $1 - f64.eq - i32.and - i32.const 0 - i32.ne - i32.eq - if - local.get $2 - return - end - f64.const inf - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne - if (result f64) - local.get $1 - f64.const 0.5 - f64.mul - local.set $1 - f64.const 8988465674311579538646525e283 - local.get $0 - f64.copysign - else - local.get $0 - end - local.get $1 - f64.sub - i32.const 0 - local.get $1 - i64.reinterpret_f64 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - i32.wrap_i64 - local.tee $3 - if (result i32) - local.get $3 - else - local.get $3 - i32.const 1 - i32.add - end - i32.const -1075 - i32.add - i32.sub - call $~lib/math/NativeMath.scalbn - local.get $2 - f64.add - ) - (func $std/math/check (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - local.get $1 - f64.eq - if - i32.const 1 - return - end - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - local.get $0 - f64.ne - return - end - local.get $0 - local.get $1 - local.get $2 - call $std/math/ulperr - f64.abs - f64.const 1.5 - f64.ge - if - i32.const 0 - return - end - i32.const 1 - ) - (func $~lib/math/NativeMathf.scalbn (param $0 f32) (param $1 i32) (result f32) - local.get $1 - i32.const 127 - i32.gt_s - if (result f32) - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - local.set $0 - local.get $1 - i32.const 127 - i32.sub - local.tee $1 - i32.const 127 - i32.gt_s - if (result f32) - local.get $1 - i32.const 127 - i32.sub - local.tee $1 - i32.const 127 - local.get $1 - i32.const 127 - i32.lt_s - select - local.set $1 - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - else - local.get $0 - end - else - local.get $1 - i32.const -126 - i32.lt_s - if (result f32) - local.get $0 - f32.const 1.9721522630525295e-31 - f32.mul - local.set $0 - local.get $1 - i32.const 102 - i32.add - local.tee $1 - i32.const -126 - i32.lt_s - if (result f32) - local.get $1 - i32.const 102 - i32.add - local.tee $1 - i32.const -126 - local.get $1 - i32.const -126 - i32.gt_s - select - local.set $1 - local.get $0 - f32.const 1.9721522630525295e-31 - f32.mul - else - local.get $0 - end - else - local.get $0 - end - end - local.get $1 - i32.const 127 - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - f32.mul - ) - (func $std/math/ulperrf (param $0 f32) (param $1 f32) (param $2 f32) (result f32) - (local $3 i32) - local.get $1 - local.get $1 - f32.ne - i32.const 0 - local.get $0 - local.get $0 - f32.ne - select - if - f32.const 0 - return - end - local.get $0 - local.get $1 - f32.eq - if - local.get $0 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $0 - local.get $0 - f32.eq - i32.and - i32.const 0 - i32.ne - local.get $1 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $1 - local.get $1 - f32.eq - i32.and - i32.const 0 - i32.ne - i32.eq - if - local.get $2 - return - end - f32.const inf - return - end - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.ne - if (result f32) - local.get $1 - f32.const 0.5 - f32.mul - local.set $1 - f32.const 1701411834604692317316873e14 - local.get $0 - f32.copysign - else - local.get $0 - end - local.get $1 - f32.sub - i32.const 0 - local.get $1 - i32.reinterpret_f32 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $3 - if (result i32) - local.get $3 - else - local.get $3 - i32.const 1 - i32.add - end - i32.const -150 - i32.add - i32.sub - call $~lib/math/NativeMathf.scalbn - local.get $2 - f32.add - ) - (func $std/math/check (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - local.get $1 - f32.eq - if - i32.const 1 - return - end - local.get $1 - local.get $1 - f32.ne - if - local.get $0 - local.get $0 - f32.ne - return - end - local.get $0 - local.get $1 - local.get $2 - call $std/math/ulperrf - f32.abs - f32.const 1.5 - f32.ge - if - i32.const 0 - return - end - i32.const 1 - ) - (func $std/math/test_scalbn (param $0 f64) (param $1 i32) (param $2 f64) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.scalbn - local.get $2 - f64.const 0 - call $std/math/check - ) - (func $std/math/test_scalbnf (param $0 f32) (param $1 i32) (param $2 f32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.scalbn - local.get $2 - f32.const 0 - call $std/math/check - ) - (func $std/math/test_abs (param $0 f64) (param $1 f64) (result i32) - local.get $0 - f64.abs - local.get $1 - f64.const 0 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/abs - local.get $1 - f64.const 0 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_absf (param $0 f32) (param $1 f32) (result i32) - local.get $0 - f32.abs - local.get $1 - f32.const 0 - call $std/math/check - ) - (func $~lib/math/R (param $0 f64) (result f64) - local.get $0 - f64.const 0.16666666666666666 - local.get $0 - f64.const -0.3255658186224009 - local.get $0 - f64.const 0.20121253213486293 - local.get $0 - f64.const -0.04005553450067941 - local.get $0 - f64.const 7.915349942898145e-04 - local.get $0 - f64.const 3.479331075960212e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.const 1 - local.get $0 - f64.const -2.403394911734414 - local.get $0 - f64.const 2.0209457602335057 - local.get $0 - f64.const -0.6882839716054533 - local.get $0 - f64.const 0.07703815055590194 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.div - ) - (func $~lib/math/NativeMath.acos (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1072693248 - i32.ge_u - if - local.get $0 - i64.reinterpret_f64 - i32.wrap_i64 - local.get $2 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz - if - local.get $3 - i32.const 31 - i32.shr_u - if - f64.const 3.141592653589793 - return - end - f64.const 0 - return - end - f64.const 0 - local.get $0 - local.get $0 - f64.sub - f64.div - return - end - local.get $2 - i32.const 1071644672 - i32.lt_u - if - local.get $2 - i32.const 1012924416 - i32.le_u - if - f64.const 1.5707963267948966 - return - end - f64.const 1.5707963267948966 - local.get $0 - f64.const 6.123233995736766e-17 - local.get $0 - local.get $0 - local.get $0 - f64.mul - call $~lib/math/R - f64.mul - f64.sub - f64.sub - f64.sub - return - end - local.get $3 - i32.const 31 - i32.shr_u - if - f64.const 2 - f64.const 1.5707963267948966 - f64.const 0.5 - local.get $0 - f64.const 0.5 - f64.mul - f64.add - local.tee $0 - f64.sqrt - local.tee $1 - local.get $0 - call $~lib/math/R - local.get $1 - f64.mul - f64.const 6.123233995736766e-17 - f64.sub - f64.add - f64.sub - f64.mul - return - end - f64.const 2 - f64.const 0.5 - local.get $0 - f64.const 0.5 - f64.mul - f64.sub - local.tee $1 - f64.sqrt - local.tee $4 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $0 - local.get $1 - call $~lib/math/R - local.get $4 - f64.mul - local.get $1 - local.get $0 - local.get $0 - f64.mul - f64.sub - local.get $4 - local.get $0 - f64.add - f64.div - f64.add - f64.add - f64.mul - ) - (func $std/math/test_acos (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.acos - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/acos - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/Rf (param $0 f32) (result f32) - local.get $0 - f32.const 0.16666586697101593 - local.get $0 - f32.const -0.04274342209100723 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - f32.const 1 - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.add - f32.div - ) - (func $~lib/math/NativeMathf.acos (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1065353216 - i32.ge_u - if - local.get $2 - i32.const 1065353216 - i32.eq - if - local.get $3 - i32.const 31 - i32.shr_u - if - f32.const 3.141592502593994 - return - end - f32.const 0 - return - end - f32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.div - return - end - local.get $2 - i32.const 1056964608 - i32.lt_u - if - local.get $2 - i32.const 847249408 - i32.le_u - if - f32.const 1.570796251296997 - return - end - f32.const 1.570796251296997 - local.get $0 - f32.const 7.549789415861596e-08 - local.get $0 - local.get $0 - local.get $0 - f32.mul - call $~lib/math/Rf - f32.mul - f32.sub - f32.sub - f32.sub - return - end - local.get $3 - i32.const 31 - i32.shr_u - if - f32.const 2 - f32.const 1.570796251296997 - f32.const 0.5 - local.get $0 - f32.const 0.5 - f32.mul - f32.add - local.tee $0 - f32.sqrt - local.tee $1 - local.get $0 - call $~lib/math/Rf - local.get $1 - f32.mul - f32.const 7.549789415861596e-08 - f32.sub - f32.add - f32.sub - f32.mul - return - end - f32.const 2 - f32.const 0.5 - local.get $0 - f32.const 0.5 - f32.mul - f32.sub - local.tee $1 - f32.sqrt - local.tee $4 - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $0 - local.get $1 - call $~lib/math/Rf - local.get $4 - f32.mul - local.get $1 - local.get $0 - local.get $0 - f32.mul - f32.sub - local.get $4 - local.get $0 - f32.add - f32.div - f32.add - f32.add - f32.mul - ) - (func $std/math/test_acosf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.acos - local.get $1 - local.get $2 - call $std/math/check - ) - (func $~lib/math/NativeMath.log1p (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i64) - (local $6 f64) - (local $7 f64) - i32.const 1 - local.set $3 - i32.const 1 - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 31 - i32.shr_u - local.get $2 - i32.const 1071284858 - i32.lt_u - select - if - local.get $2 - i32.const -1074790400 - i32.ge_u - if - local.get $0 - f64.const -1 - f64.eq - if - local.get $0 - f64.const 0 - f64.div - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - local.get $2 - i32.const 1 - i32.shl - i32.const 2034237440 - i32.lt_u - if - local.get $0 - return - end - local.get $2 - i32.const -1076707644 - i32.le_u - if (result f64) - i32.const 0 - local.set $3 - local.get $0 - else - f64.const 0 - end - local.set $1 - else - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - end - end - local.get $3 - if - f64.const 1 - local.get $0 - f64.add - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 614242 - i32.add - local.tee $2 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.tee $3 - i32.const 54 - i32.lt_s - if (result f64) - f64.const 1 - local.get $5 - f64.reinterpret_i64 - local.tee $1 - local.get $0 - f64.sub - f64.sub - local.get $0 - local.get $1 - f64.const 1 - f64.sub - f64.sub - local.get $3 - i32.const 2 - i32.ge_s - select - local.get $1 - f64.div - else - f64.const 0 - end - local.set $6 - local.get $5 - i64.const 4294967295 - i64.and - local.get $2 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.set $1 - end - local.get $1 - f64.const 2 - local.get $1 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.tee $7 - local.get $7 - f64.mul - local.set $0 - local.get $4 - f64.const 0.5 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.tee $4 - local.get $7 - f64.const 0.6666666666666735 - local.get $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - local.get $3 - f64.convert_i32_s - local.tee $0 - f64.const 1.9082149292705877e-10 - f64.mul - local.get $6 - f64.add - f64.add - local.get $4 - f64.sub - local.get $1 - f64.add - local.get $0 - f64.const 0.6931471803691238 - f64.mul - f64.add - ) - (func $~lib/math/NativeMath.log (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 i32) - i32.const 1 - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 1048576 - i32.lt_u - select - if - local.get $2 - i64.const 1 - i64.shl - i64.eqz - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - i32.const -54 - local.set $5 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - else - local.get $2 - i64.const 32 - i64.shl - i64.eqz - i32.const 0 - local.get $1 - i32.const 1072693248 - i32.eq - select - if - f64.const 0 - return - end - end - end - local.get $2 - i64.const 4294967295 - i64.and - local.get $1 - i32.const 614242 - i32.add - local.tee $1 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $3 - f64.const 2 - local.get $3 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.set $0 - local.get $4 - f64.const 0.5 - local.get $3 - f64.mul - local.get $3 - f64.mul - local.tee $4 - local.get $0 - f64.const 0.6666666666666735 - local.get $0 - local.get $0 - f64.mul - local.tee $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - local.get $5 - local.get $1 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - i32.add - f64.convert_i32_s - local.tee $0 - f64.const 1.9082149292705877e-10 - f64.mul - f64.add - local.get $4 - f64.sub - local.get $3 - f64.add - local.get $0 - f64.const 0.6931471803691238 - f64.mul - f64.add - ) - (func $std/math/test_acosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i64) - block $__inlined_func$~lib/math/NativeMath.acosh (result f64) - local.get $0 - i64.reinterpret_f64 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $4 - i64.const 1024 - i64.lt_u - if - local.get $0 - f64.const 1 - f64.sub - local.tee $3 - local.get $3 - local.get $3 - f64.mul - f64.const 2 - local.get $3 - f64.mul - f64.add - f64.sqrt - f64.add - call $~lib/math/NativeMath.log1p - br $__inlined_func$~lib/math/NativeMath.acosh - end - local.get $4 - i64.const 1049 - i64.lt_u - if - f64.const 2 - local.get $0 - f64.mul - f64.const 1 - local.get $0 - local.get $0 - local.get $0 - f64.mul - f64.const 1 - f64.sub - f64.sqrt - f64.add - f64.div - f64.sub - call $~lib/math/NativeMath.log - br $__inlined_func$~lib/math/NativeMath.acosh - end - local.get $0 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add - end - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/acosh - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.log1p (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f32) - (local $6 f32) - i32.const 1 - local.set $3 - i32.const 1 - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 31 - i32.shr_u - local.get $2 - i32.const 1054086096 - i32.lt_u - select - if - local.get $2 - i32.const -1082130432 - i32.ge_u - if - local.get $0 - f32.const -1 - f32.eq - if - local.get $0 - f32.const 0 - f32.div - return - end - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - local.get $2 - i32.const 1 - i32.shl - i32.const 1728053248 - i32.lt_u - if - local.get $0 - return - end - local.get $2 - i32.const -1097468391 - i32.le_u - if (result f32) - i32.const 0 - local.set $3 - local.get $0 - else - f32.const 0 - end - local.set $1 - else - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - end - end - local.get $3 - if - f32.const 1 - local.get $0 - f32.add - local.tee $1 - i32.reinterpret_f32 - i32.const 4913933 - i32.add - local.tee $2 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - local.tee $3 - i32.const 25 - i32.lt_s - if (result f32) - f32.const 1 - local.get $1 - local.get $0 - f32.sub - f32.sub - local.get $0 - local.get $1 - f32.const 1 - f32.sub - f32.sub - local.get $3 - i32.const 2 - i32.ge_s - select - local.get $1 - f32.div - else - f32.const 0 - end - local.set $5 - local.get $2 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.set $1 - end - local.get $1 - f32.const 2 - local.get $1 - f32.add - f32.div - local.tee $4 - local.get $4 - f32.mul - local.tee $6 - local.get $6 - f32.mul - local.set $0 - local.get $4 - f32.const 0.5 - local.get $1 - f32.mul - local.get $1 - f32.mul - local.tee $4 - local.get $6 - f32.const 0.6666666269302368 - local.get $0 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.get $0 - f32.const 0.40000972151756287 - local.get $0 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - f32.add - f32.add - f32.mul - local.get $3 - f32.convert_i32_s - local.tee $0 - f32.const 9.05800061445916e-06 - f32.mul - local.get $5 - f32.add - f32.add - local.get $4 - f32.sub - local.get $1 - f32.add - local.get $0 - f32.const 0.6931381225585938 - f32.mul - f32.add - ) - (func $~lib/math/NativeMathf.log (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 i32) - i32.const 1 - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8388608 - i32.lt_u - select - if - local.get $1 - i32.const 1 - i32.shl - i32.eqz - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - i32.const -25 - local.set $4 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - else - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 0 - return - end - end - end - local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - f32.const 2 - local.get $0 - f32.add - f32.div - local.tee $3 - local.get $3 - f32.mul - local.set $2 - local.get $3 - f32.const 0.5 - local.get $0 - f32.mul - local.get $0 - f32.mul - local.tee $3 - local.get $2 - f32.const 0.6666666269302368 - local.get $2 - local.get $2 - f32.mul - local.tee $2 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.get $2 - f32.const 0.40000972151756287 - local.get $2 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - f32.add - f32.add - f32.mul - local.get $4 - local.get $1 - i32.const 23 - i32.shr_s - i32.const 127 - i32.sub - i32.add - f32.convert_i32_s - local.tee $2 - f32.const 9.05800061445916e-06 - f32.mul - f32.add - local.get $3 - f32.sub - local.get $0 - f32.add - local.get $2 - f32.const 0.6931381225585938 - f32.mul - f32.add - ) - (func $std/math/test_acoshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - block $__inlined_func$~lib/math/NativeMathf.acosh (result f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1073741824 - i32.lt_u - if - local.get $0 - f32.const 1 - f32.sub - local.tee $0 - local.get $0 - local.get $0 - f32.const 2 - f32.add - f32.mul - f32.sqrt - f32.add - call $~lib/math/NativeMathf.log1p - br $__inlined_func$~lib/math/NativeMathf.acosh - end - local.get $3 - i32.const 1166016512 - i32.lt_u - if - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - local.get $0 - local.get $0 - local.get $0 - f32.mul - f32.const 1 - f32.sub - f32.sqrt - f32.add - f32.div - f32.sub - call $~lib/math/NativeMathf.log - br $__inlined_func$~lib/math/NativeMathf.acosh - end - local.get $0 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add - end - local.get $1 - local.get $2 - call $std/math/check - ) - (func $~lib/math/NativeMath.asin (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) - (local $4 i32) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $4 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1072693248 - i32.ge_u - if - local.get $0 - i64.reinterpret_f64 - i32.wrap_i64 - local.get $2 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz - if - local.get $0 - f64.const 1.5707963267948966 - f64.mul - f64.const 7.52316384526264e-37 - f64.add - return - end - f64.const 0 - local.get $0 - local.get $0 - f64.sub - f64.div - return - end - local.get $2 - i32.const 1071644672 - i32.lt_u - if - local.get $2 - i32.const 1048576 - i32.ge_u - i32.const 0 - local.get $2 - i32.const 1045430272 - i32.lt_u - select - if - local.get $0 - return - end - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.mul - call $~lib/math/R - f64.mul - f64.add - return - end - f64.const 0.5 - local.get $0 - f64.abs - f64.const 0.5 - f64.mul - f64.sub - local.tee $1 - f64.sqrt - local.set $0 - local.get $1 - call $~lib/math/R - local.set $3 - local.get $2 - i32.const 1072640819 - i32.ge_u - if (result f64) - f64.const 1.5707963267948966 - f64.const 2 - local.get $0 - local.get $0 - local.get $3 - f64.mul - f64.add - f64.mul - f64.const 6.123233995736766e-17 - f64.sub - f64.sub - else - f64.const 0.7853981633974483 - f64.const 2 - local.get $0 - f64.mul - local.get $3 - f64.mul - f64.const 6.123233995736766e-17 - f64.const 2 - local.get $1 - local.get $0 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $1 - local.get $1 - f64.mul - f64.sub - local.get $0 - local.get $1 - f64.add - f64.div - f64.mul - f64.sub - f64.sub - f64.const 0.7853981633974483 - f64.const 2 - local.get $1 - f64.mul - f64.sub - f64.sub - f64.sub - end - local.set $0 - local.get $4 - i32.const 31 - i32.shr_u - if - local.get $0 - f64.neg - return - end - local.get $0 - ) - (func $std/math/test_asin (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.asin - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/asin - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.asin (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 f64) - local.get $0 - local.tee $1 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1065353216 - i32.ge_u - if - local.get $2 - i32.const 1065353216 - i32.eq - if - local.get $1 - f32.const 1.5707963705062866 - f32.mul - f32.const 7.52316384526264e-37 - f32.add - return - end - f32.const 0 - local.get $1 - local.get $1 - f32.sub - f32.div - return - end - local.get $2 - i32.const 1056964608 - i32.lt_u - if - local.get $2 - i32.const 8388608 - i32.ge_u - i32.const 0 - local.get $2 - i32.const 964689920 - i32.lt_u - select - if - local.get $1 - return - end - local.get $1 - local.get $1 - local.get $1 - local.get $1 - f32.mul - call $~lib/math/Rf - f32.mul - f32.add - return - end - f64.const 1.5707963705062866 - f64.const 2 - f32.const 0.5 - local.get $1 - f32.abs - f32.const 0.5 - f32.mul - f32.sub - local.tee $0 - f64.promote_f32 - f64.sqrt - local.tee $3 - local.get $3 - local.get $0 - call $~lib/math/Rf - f64.promote_f32 - f64.mul - f64.add - f64.mul - f64.sub - f32.demote_f64 - local.get $1 - f32.copysign - ) - (func $std/math/test_asinf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.asin - local.get $1 - local.get $2 - call $std/math/check - ) - (func $std/math/test_asinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i64) - local.get $0 - local.tee $3 - i64.reinterpret_f64 - local.tee $4 - i64.const 9223372036854775807 - i64.and - f64.reinterpret_i64 - local.set $0 - local.get $4 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $4 - i64.const 1049 - i64.ge_u - if (result f64) - local.get $0 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add - else - local.get $4 - i64.const 1024 - i64.ge_u - if (result f64) - f64.const 2 - local.get $0 - f64.mul - f64.const 1 - local.get $0 - local.get $0 - f64.mul - f64.const 1 - f64.add - f64.sqrt - local.get $0 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log - else - local.get $4 - i64.const 997 - i64.ge_u - if (result f64) - local.get $0 - local.get $0 - local.get $0 - f64.mul - local.tee $0 - local.get $0 - f64.const 1 - f64.add - f64.sqrt - f64.const 1 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log1p - else - local.get $0 - end - end - end - local.get $3 - f64.copysign - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $3 - call $~lib/bindings/Math/asinh - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_asinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f32) - (local $4 i32) - local.get $0 - local.tee $3 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $4 - f32.reinterpret_i32 - local.set $0 - local.get $4 - i32.const 1166016512 - i32.ge_u - if (result f32) - local.get $0 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add - else - local.get $4 - i32.const 1073741824 - i32.ge_u - if (result f32) - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - local.get $0 - local.get $0 - f32.mul - f32.const 1 - f32.add - f32.sqrt - local.get $0 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log - else - local.get $4 - i32.const 964689920 - i32.ge_u - if (result f32) - local.get $0 - local.get $0 - local.get $0 - f32.mul - local.tee $0 - local.get $0 - f32.const 1 - f32.add - f32.sqrt - f32.const 1 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log1p - else - local.get $0 - end - end - end - local.get $3 - f32.copysign - local.get $1 - local.get $2 - call $std/math/check - ) - (func $~lib/math/NativeMath.atan (param $0 f64) (result f64) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 f64) - local.get $0 - local.set $1 - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1141899264 - i32.ge_u - if - local.get $0 - local.get $0 - f64.ne - if - local.get $0 - return - end - f64.const 1.5707963267948966 - local.get $1 - f64.copysign - return - end - local.get $3 - i32.const 1071382528 - i32.lt_u - if - local.get $3 - i32.const 1044381696 - i32.lt_u - if - local.get $0 - return - end - i32.const -1 - local.set $4 - else - local.get $0 - f64.abs - local.set $0 - local.get $3 - i32.const 1072889856 - i32.lt_u - if (result f64) - local.get $3 - i32.const 1072037888 - i32.lt_u - if (result f64) - f64.const 2 - local.get $0 - f64.mul - f64.const 1 - f64.sub - f64.const 2 - local.get $0 - f64.add - f64.div - else - i32.const 1 - local.set $4 - local.get $0 - f64.const 1 - f64.sub - local.get $0 - f64.const 1 - f64.add - f64.div - end - else - local.get $3 - i32.const 1073971200 - i32.lt_u - if (result f64) - i32.const 2 - local.set $4 - local.get $0 - f64.const 1.5 - f64.sub - f64.const 1 - f64.const 1.5 - local.get $0 - f64.mul - f64.add - f64.div - else - i32.const 3 - local.set $4 - f64.const -1 - local.get $0 - f64.div - end - end - local.set $0 - end - local.get $0 - local.get $0 - f64.mul - local.tee $5 - local.get $5 - f64.mul - local.set $2 - local.get $0 - local.get $5 - f64.const 0.3333333333333293 - local.get $2 - f64.const 0.14285714272503466 - local.get $2 - f64.const 0.09090887133436507 - local.get $2 - f64.const 0.06661073137387531 - local.get $2 - f64.const 0.049768779946159324 - local.get $2 - f64.const 0.016285820115365782 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $2 - f64.const -0.19999999999876483 - local.get $2 - f64.const -0.11111110405462356 - local.get $2 - f64.const -0.0769187620504483 - local.get $2 - f64.const -0.058335701337905735 - local.get $2 - f64.const -0.036531572744216916 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $2 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $2 - f64.sub - return - end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $4 - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 - end - f64.const 0.4636476090008061 - local.get $2 - f64.const 2.2698777452961687e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - f64.const 0.7853981633974483 - local.get $2 - f64.const 3.061616997868383e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - f64.const 0.982793723247329 - local.get $2 - f64.const 1.3903311031230998e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - f64.const 1.5707963267948966 - local.get $2 - f64.const 6.123233995736766e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - unreachable - end - local.get $0 - local.get $1 - f64.copysign - ) - (func $std/math/test_atan (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.atan - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/atan - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.atan (param $0 f32) (result f32) - (local $1 f32) - (local $2 f32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - local.get $0 - local.set $1 - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1283457024 - i32.ge_u - if - local.get $0 - local.get $0 - f32.ne - if - local.get $0 - return - end - f32.const 1.570796251296997 - local.get $1 - f32.copysign - return - end - local.get $3 - i32.const 1054867456 - i32.lt_u - if - local.get $3 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - i32.const -1 - local.set $4 - else - local.get $0 - f32.abs - local.set $0 - local.get $3 - i32.const 1066926080 - i32.lt_u - if (result f32) - local.get $3 - i32.const 1060110336 - i32.lt_u - if (result f32) - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - f32.sub - f32.const 2 - local.get $0 - f32.add - f32.div - else - i32.const 1 - local.set $4 - local.get $0 - f32.const 1 - f32.sub - local.get $0 - f32.const 1 - f32.add - f32.div - end - else - local.get $3 - i32.const 1075576832 - i32.lt_u - if (result f32) - i32.const 2 - local.set $4 - local.get $0 - f32.const 1.5 - f32.sub - f32.const 1 - f32.const 1.5 - local.get $0 - f32.mul - f32.add - f32.div - else - i32.const 3 - local.set $4 - f32.const -1 - local.get $0 - f32.div - end - end - local.set $0 - end - local.get $0 - local.get $0 - f32.mul - local.tee $5 - local.get $5 - f32.mul - local.set $2 - local.get $0 - local.get $5 - f32.const 0.333333283662796 - local.get $2 - f32.const 0.14253635704517365 - local.get $2 - f32.const 0.06168760731816292 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - local.get $2 - f32.const -0.19999158382415771 - local.get $2 - f32.const -0.106480173766613 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - local.set $2 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $2 - f32.sub - return - end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $4 - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 - end - f32.const 0.46364760398864746 - local.get $2 - f32.const 5.01215824399992e-09 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - f32.const 0.7853981256484985 - local.get $2 - f32.const 3.774894707930798e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - f32.const 0.9827936887741089 - local.get $2 - f32.const 3.447321716976148e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - f32.const 1.570796251296997 - local.get $2 - f32.const 7.549789415861596e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - unreachable - end - local.get $0 - local.get $1 - f32.copysign - ) - (func $std/math/test_atanf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.atan - local.get $1 - local.get $2 - call $std/math/check - ) - (func $std/math/test_atanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i64) - (local $5 f64) - local.get $0 - local.tee $3 - f64.abs - local.set $0 - local.get $3 - i64.reinterpret_f64 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $4 - i64.const 1022 - i64.lt_u - if (result f64) - local.get $4 - i64.const 991 - i64.ge_u - if (result f64) - f64.const 0.5 - f64.const 2 - local.get $0 - f64.mul - local.tee $5 - local.get $5 - local.get $0 - f64.mul - f64.const 1 - local.get $0 - f64.sub - f64.div - f64.add - call $~lib/math/NativeMath.log1p - f64.mul - else - local.get $0 - end - else - f64.const 0.5 - f64.const 2 - local.get $0 - f64.const 1 - local.get $0 - f64.sub - f64.div - f64.mul - call $~lib/math/NativeMath.log1p - f64.mul - end - local.get $3 - f64.copysign - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $3 - call $~lib/bindings/Math/atanh - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_atanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f32) - (local $4 i32) - local.get $0 - local.tee $3 - f32.abs - local.set $0 - local.get $3 - i32.reinterpret_f32 - local.tee $4 - i32.const 1056964608 - i32.lt_u - if (result f32) - local.get $4 - i32.const 796917760 - i32.ge_u - if (result f32) - f32.const 0.5 - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - local.get $0 - f32.const 1 - local.get $0 - f32.sub - f32.div - f32.add - f32.mul - call $~lib/math/NativeMathf.log1p - f32.mul - else - local.get $0 - end - else - f32.const 0.5 - f32.const 2 - local.get $0 - f32.const 1 - local.get $0 - f32.sub - f32.div - f32.mul - call $~lib/math/NativeMathf.log1p - f32.mul - end - local.get $3 - f32.copysign - local.get $1 - local.get $2 - call $std/math/check - ) - (func $~lib/math/NativeMath.atan2 (param $0 f64) (param $1 f64) (result f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i32) - i32.const 1 - local.get $0 - local.get $0 - f64.ne - local.get $1 - local.get $1 - f64.ne - select - if - local.get $1 - local.get $0 - f64.add - return - end - local.get $0 - i64.reinterpret_f64 - local.tee $6 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $4 - local.get $6 - i32.wrap_i64 - local.set $3 - local.get $1 - i64.reinterpret_f64 - local.tee $6 - i32.wrap_i64 - local.tee $7 - local.get $6 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz - if - local.get $0 - call $~lib/math/NativeMath.atan - return - end - local.get $5 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - local.get $4 - i32.const 31 - i32.shr_u - i32.or - local.set $2 - local.get $5 - i32.const 2147483647 - i32.and - local.set $5 - local.get $4 - i32.const 2147483647 - i32.and - local.tee $4 - local.get $3 - i32.or - i32.eqz - if - block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $2 - i32.eqz - br_if $case1|0 - block $tablify|0 - local.get $2 - i32.const 1 - i32.sub - br_table $case1|0 $case2|0 $case3|0 $tablify|0 - end - br $break|0 - end - local.get $0 - return - end - f64.const 3.141592653589793 - return - end - f64.const -3.141592653589793 - return - end - end - block $folding-inner0 - local.get $5 - local.get $7 - i32.or - i32.eqz - br_if $folding-inner0 - local.get $5 - i32.const 2146435072 - i32.eq - if - f64.const 2.356194490192345 - f64.const 0.7853981633974483 - local.get $2 - i32.const 2 - i32.and - select - f64.const 3.141592653589793 - f64.const 0 - local.get $2 - i32.const 2 - i32.and - select - local.get $4 - i32.const 2146435072 - i32.eq - select - local.tee $0 - f64.neg - local.get $0 - local.get $2 - i32.const 1 - i32.and - select - return - end - i32.const 1 - local.get $4 - i32.const 2146435072 - i32.eq - local.get $5 - i32.const 67108864 - i32.add - local.get $4 - i32.lt_u - select - br_if $folding-inner0 - local.get $4 - i32.const 67108864 - i32.add - local.get $5 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 2 - i32.and - select - if (result f64) - f64.const 0 - else - local.get $0 - local.get $1 - f64.div - f64.abs - call $~lib/math/NativeMath.atan - end - local.set $0 - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - local.get $2 - local.tee $3 - if - local.get $3 - i32.const 1 - i32.sub - br_table $case1|1 $case2|1 $case3|1 $break|1 - end - local.get $0 - return - end - local.get $0 - f64.neg - return - end - f64.const 3.141592653589793 - local.get $0 - f64.const 1.2246467991473532e-16 - f64.sub - f64.sub - return - end - local.get $0 - f64.const 1.2246467991473532e-16 - f64.sub - f64.const 3.141592653589793 - f64.sub - return - end - unreachable - end - f64.const -1.5707963267948966 - f64.const 1.5707963267948966 - local.get $2 - i32.const 1 - i32.and - select - ) - (func $std/math/test_atan2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.atan2 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - local.get $0 - local.get $1 - call $~lib/bindings/Math/atan2 - local.get $2 - local.get $3 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - local.get $0 - local.get $0 - f32.ne - local.get $1 - local.get $1 - f32.ne - select - if - local.get $1 - local.get $0 - f32.add - return - end - local.get $0 - i32.reinterpret_f32 - local.set $3 - local.get $1 - i32.reinterpret_f32 - local.tee $4 - i32.const 1065353216 - i32.eq - if - local.get $0 - call $~lib/math/NativeMathf.atan - return - end - local.get $4 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - local.get $3 - i32.const 31 - i32.shr_u - i32.or - local.set $2 - local.get $4 - i32.const 2147483647 - i32.and - local.set $4 - local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 - i32.eqz - if - block $break|0 - block $case3|0 - block $case2|0 - local.get $2 - i32.eqz - local.get $2 - i32.const 1 - i32.eq - i32.or - i32.eqz - if - local.get $2 - i32.const 2 - i32.eq - br_if $case2|0 - local.get $2 - i32.const 3 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - return - end - f32.const 3.1415927410125732 - return - end - f32.const -3.1415927410125732 - return - end - end - block $folding-inner0 - local.get $4 - i32.eqz - br_if $folding-inner0 - local.get $4 - i32.const 2139095040 - i32.eq - if - local.get $3 - i32.const 2139095040 - i32.eq - if - f32.const 2.356194496154785 - f32.const 0.7853981852531433 - local.get $2 - i32.const 2 - i32.and - select - local.tee $0 - f32.neg - local.get $0 - local.get $2 - i32.const 1 - i32.and - select - return - else - f32.const 3.1415927410125732 - f32.const 0 - local.get $2 - i32.const 2 - i32.and - select - local.tee $0 - f32.neg - local.get $0 - local.get $2 - i32.const 1 - i32.and - select - return - end - unreachable - end - i32.const 1 - local.get $3 - i32.const 2139095040 - i32.eq - local.get $4 - i32.const 218103808 - i32.add - local.get $3 - i32.lt_u - select - br_if $folding-inner0 - local.get $3 - i32.const 218103808 - i32.add - local.get $4 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 2 - i32.and - select - if (result f32) - f32.const 0 - else - local.get $0 - local.get $1 - f32.div - f32.abs - call $~lib/math/NativeMathf.atan - end - local.set $0 - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - local.get $2 - local.tee $3 - if - local.get $3 - i32.const 1 - i32.sub - br_table $case1|1 $case2|1 $case3|1 $break|1 - end - local.get $0 - return - end - local.get $0 - f32.neg - return - end - f32.const 3.1415927410125732 - local.get $0 - f32.const -8.742277657347586e-08 - f32.sub - f32.sub - return - end - local.get $0 - f32.const -8.742277657347586e-08 - f32.sub - f32.const 3.1415927410125732 - f32.sub - return - end - unreachable - end - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 - local.get $2 - i32.const 1 - i32.and - select - ) - (func $std/math/test_atan2f (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.atan2 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.cbrt (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) - (local $4 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.add - return - end - local.get $2 - i32.const 1048576 - i32.lt_u - if (result i32) - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $2 - i32.eqz - if - local.get $0 - return - end - local.get $2 - i32.const 3 - i32.div_u - i32.const 696219795 - i32.add - else - local.get $2 - i32.const 3 - i32.div_u - i32.const 715094163 - i32.add - end - local.set $2 - local.get $4 - i64.const -9223372036854775808 - i64.and - local.get $2 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $3 - local.get $3 - f64.mul - local.get $3 - local.get $0 - f64.div - f64.mul - local.set $1 - local.get $0 - local.get $3 - f64.const 1.87595182427177 - local.get $1 - f64.const -1.8849797954337717 - local.get $1 - f64.const 1.6214297201053545 - f64.mul - f64.add - f64.mul - f64.add - local.get $1 - local.get $1 - f64.mul - local.get $1 - f64.mul - f64.const -0.758397934778766 - local.get $1 - f64.const 0.14599619288661245 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - i64.reinterpret_f64 - i64.const 2147483648 - i64.add - i64.const -1073741824 - i64.and - f64.reinterpret_i64 - local.tee $0 - local.get $0 - f64.mul - f64.div - local.set $1 - local.get $0 - local.get $0 - local.get $1 - local.get $0 - f64.sub - f64.const 2 - local.get $0 - f64.mul - local.get $1 - f64.add - f64.div - f64.mul - f64.add - ) - (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.cbrt - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/cbrt - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.cbrt (param $0 f32) (result f32) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.add - return - end - local.get $3 - i32.const 8388608 - i32.lt_u - if (result i32) - local.get $3 - i32.eqz - if - local.get $0 - return - end - local.get $0 - f32.const 16777216 - f32.mul - i32.reinterpret_f32 - local.tee $4 - i32.const 2147483647 - i32.and - i32.const 3 - i32.div_u - i32.const 642849266 - i32.add - else - local.get $3 - i32.const 3 - i32.div_u - i32.const 709958130 - i32.add - end - local.get $4 - i32.const -2147483648 - i32.and - i32.or - f32.reinterpret_i32 - f64.promote_f32 - local.tee $1 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.set $2 - local.get $1 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.add - local.get $2 - f64.add - f64.mul - local.get $0 - f64.promote_f32 - local.get $2 - f64.add - local.get $2 - f64.add - f64.div - local.tee $1 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.set $2 - local.get $1 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.add - local.get $2 - f64.add - f64.mul - local.get $0 - f64.promote_f32 - local.get $2 - f64.add - local.get $2 - f64.add - f64.div - f32.demote_f64 - ) - (func $std/math/test_cbrtf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.cbrt - local.get $1 - local.get $2 - call $std/math/check - ) - (func $std/math/test_ceil (param $0 f64) (param $1 f64) (result i32) - local.get $0 - f64.ceil - local.get $1 - f64.const 0 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/ceil - local.get $1 - f64.const 0 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_ceilf (param $0 f32) (param $1 f32) (result i32) - local.get $0 - f32.ceil - local.get $1 - f32.const 0 - call $std/math/check - ) - (func $~lib/math/pio2_large_quot (param $0 i64) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i64) - (local $12 f64) - local.get $0 - i64.const 9223372036854775807 - i64.and - i64.const 52 - i64.shr_s - i64.const 1045 - i64.sub - local.tee $2 - i64.const 6 - i64.shr_s - i32.wrap_i64 - i32.const 3 - i32.shl - i32.const 1064 - i32.add - local.tee $7 - i64.load - local.set $6 - local.get $7 - i64.load offset=8 - local.set $4 - local.get $7 - i64.load offset=16 - local.set $1 - local.get $2 - i64.const 63 - i64.and - local.tee $2 - i64.const 0 - i64.ne - if - local.get $6 - local.get $2 - i64.shl - local.get $4 - i64.const 64 - local.get $2 - i64.sub - local.tee $3 - i64.shr_u - i64.or - local.set $6 - local.get $4 - local.get $2 - i64.shl - local.get $1 - local.get $3 - i64.shr_u - i64.or - local.set $4 - local.get $1 - local.get $2 - i64.shl - local.get $7 - i64.load offset=24 - local.get $3 - i64.shr_u - i64.or - local.set $1 - end - local.get $0 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - local.tee $2 - i64.const 4294967295 - i64.and - local.tee $3 - local.get $4 - i64.const 32 - i64.shr_u - local.tee $8 - i64.mul - local.get $4 - i64.const 4294967295 - i64.and - local.tee $5 - local.get $3 - i64.mul - local.tee $9 - i64.const 32 - i64.shr_u - i64.add - local.set $4 - local.get $5 - local.get $2 - i64.const 32 - i64.shr_u - local.tee $5 - i64.mul - local.get $4 - i64.const 4294967295 - i64.and - i64.add - local.set $3 - local.get $5 - local.get $8 - i64.mul - local.get $4 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 32 - i64.shr_u - i64.add - global.set $~lib/math/res128_hi - global.get $~lib/math/res128_hi - local.get $2 - local.get $6 - i64.mul - i64.add - local.get $1 - i64.const 32 - i64.shr_u - local.get $2 - i64.const 32 - i64.shr_s - i64.mul - local.tee $4 - local.get $9 - i64.const 4294967295 - i64.and - local.get $3 - i64.const 32 - i64.shl - i64.add - i64.add - local.tee $2 - local.get $4 - i64.lt_u - i64.extend_i32_u - i64.add - local.tee $8 - i64.const 2 - i64.shl - local.get $2 - i64.const 62 - i64.shr_u - i64.or - local.tee $6 - i64.const 63 - i64.shr_s - local.tee $1 - i64.const 1 - i64.shr_s - local.get $6 - i64.xor - local.tee $3 - i64.clz - local.set $4 - local.get $3 - local.get $4 - i64.shl - local.get $1 - local.get $2 - i64.const 2 - i64.shl - i64.xor - local.tee $5 - i64.const 64 - local.get $4 - i64.sub - i64.shr_u - i64.or - local.tee $2 - i64.const 4294967295 - i64.and - local.set $3 - local.get $2 - i64.const 32 - i64.shr_u - local.tee $9 - i64.const 560513588 - i64.mul - local.get $3 - i64.const 3373259426 - i64.mul - local.get $3 - i64.const 560513588 - i64.mul - local.tee $10 - i64.const 32 - i64.shr_u - i64.add - local.tee $11 - i64.const 4294967295 - i64.and - i64.add - local.set $3 - local.get $9 - i64.const 3373259426 - i64.mul - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 32 - i64.shr_u - i64.add - global.set $~lib/math/res128_hi - local.get $10 - i64.const 4294967295 - i64.and - local.get $3 - i64.const 32 - i64.shl - i64.add - local.tee $3 - f64.const 3.753184150245214e-04 - local.get $2 - f64.convert_i64_u - f64.mul - f64.const 3.834951969714103e-04 - local.get $5 - local.get $4 - i64.shl - f64.convert_i64_u - f64.mul - f64.add - i64.trunc_f64_u - local.tee $2 - i64.lt_u - i64.extend_i32_u - global.get $~lib/math/res128_hi - local.tee $5 - i64.const 11 - i64.shr_u - i64.add - f64.convert_i64_u - global.set $~lib/math/rempio2_y0 - f64.const 5.421010862427522e-20 - local.get $2 - local.get $5 - i64.const 53 - i64.shl - local.get $3 - i64.const 11 - i64.shr_u - i64.or - i64.add - f64.convert_i64_u - f64.mul - global.set $~lib/math/rempio2_y1 - global.get $~lib/math/rempio2_y0 - i64.const 4372995238176751616 - local.get $4 - i64.const 52 - i64.shl - i64.sub - local.get $0 - local.get $6 - i64.xor - i64.const -9223372036854775808 - i64.and - i64.or - f64.reinterpret_i64 - local.tee $12 - f64.mul - global.set $~lib/math/rempio2_y0 - global.get $~lib/math/rempio2_y1 - local.get $12 - f64.mul - global.set $~lib/math/rempio2_y1 - local.get $8 - i64.const 62 - i64.shr_s - local.get $1 - i64.sub - i32.wrap_i64 - ) - (func $~lib/math/NativeMath.cos (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 31 - i32.shr_u - local.set $6 - local.get $5 - i32.const 2147483647 - i32.and - local.tee $5 - i32.const 1072243195 - i32.le_u - if - local.get $5 - i32.const 1044816030 - i32.lt_u - if - f64.const 1 - return - end - f64.const 1 - f64.const 0.5 - local.get $0 - local.get $0 - f64.mul - local.tee $3 - f64.mul - local.tee $4 - f64.sub - local.tee $1 - f64.const 1 - local.get $1 - f64.sub - local.get $4 - f64.sub - local.get $3 - local.get $3 - f64.const 0.0416666666666666 - local.get $3 - f64.const -0.001388888888887411 - local.get $3 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $4 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $3 - f64.const 2.087572321298175e-09 - local.get $3 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0 - f64.mul - f64.sub - f64.add - f64.add - return - end - local.get $5 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.0 (result i32) - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $5 - i32.const 1094263291 - i32.lt_u - if - local.get $5 - i32.const 20 - i32.shr_u - local.tee $6 - local.get $0 - local.get $0 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $3 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.tee $0 - local.get $3 - f64.const 6.077100506506192e-11 - f64.mul - local.tee $4 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 16 - i32.gt_u - if - local.get $3 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $0 - local.get $0 - local.get $3 - f64.const 6.077100506303966e-11 - f64.mul - local.tee $4 - f64.sub - local.tee $0 - f64.sub - local.get $4 - f64.sub - f64.sub - local.set $4 - local.get $6 - local.get $0 - local.get $4 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 49 - i32.gt_u - if (result f64) - local.get $3 - f64.const 8.4784276603689e-32 - f64.mul - local.get $0 - local.get $0 - local.get $3 - f64.const 2.0222662487111665e-21 - f64.mul - local.tee $4 - f64.sub - local.tee $0 - f64.sub - local.get $4 - f64.sub - f64.sub - local.set $4 - local.get $0 - local.get $4 - f64.sub - else - local.get $1 - end - local.set $1 - end - local.get $1 - global.set $~lib/math/rempio2_y0 - local.get $0 - local.get $1 - f64.sub - local.get $4 - f64.sub - global.set $~lib/math/rempio2_y1 - local.get $3 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.0 - end - i32.const 0 - local.get $2 - call $~lib/math/pio2_large_quot - local.tee $5 - i32.sub - local.get $5 - local.get $6 - select - end - local.set $6 - global.get $~lib/math/rempio2_y0 - local.set $0 - global.get $~lib/math/rempio2_y1 - local.set $4 - local.get $6 - i32.const 1 - i32.and - if (result f64) - local.get $0 - local.get $0 - f64.mul - local.tee $3 - local.get $0 - f64.mul - local.tee $1 - f64.const -0.16666666666666632 - local.get $3 - f64.const 0.00833333333332249 - local.get $3 - f64.const -1.984126982985795e-04 - local.get $3 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $3 - local.get $3 - f64.mul - f64.mul - f64.const -2.5050760253406863e-08 - local.get $3 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - local.tee $7 - f64.mul - f64.add - f64.mul - drop - local.get $0 - local.get $3 - f64.const 0.5 - local.get $4 - f64.mul - local.get $1 - local.get $7 - f64.mul - f64.sub - f64.mul - local.get $4 - f64.sub - local.get $1 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - else - f64.const 1 - f64.const 0.5 - local.get $0 - local.get $0 - f64.mul - local.tee $3 - f64.mul - local.tee $1 - f64.sub - local.tee $7 - f64.const 1 - local.get $7 - f64.sub - local.get $1 - f64.sub - local.get $3 - local.get $3 - f64.const 0.0416666666666666 - local.get $3 - f64.const -0.001388888888887411 - local.get $3 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $3 - local.get $3 - f64.mul - local.tee $1 - local.get $1 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $3 - f64.const 2.087572321298175e-09 - local.get $3 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - local.get $4 - f64.mul - f64.sub - f64.add - f64.add - end - local.tee $0 - f64.neg - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.and - select - ) - (func $std/math/test_cos (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.cos - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/cos - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.cos (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - (local $11 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.set $10 - local.get $1 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1061752794 - i32.le_u - if - local.get $2 - i32.const 964689920 - i32.lt_u - if - f32.const 1 - return - end - local.get $0 - f64.promote_f32 - local.tee $3 - local.get $3 - f64.mul - local.tee $4 - local.get $4 - f64.mul - local.set $3 - f64.const 1 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $3 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $3 - local.get $4 - f64.mul - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.0 (result i32) - local.get $2 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $3 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $3 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $3 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.0 - end - local.get $2 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $1 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 1256 - i32.add - local.tee $9 - i64.load - local.set $6 - local.get $9 - i64.load offset=8 - local.set $7 - local.get $1 - i32.const 63 - i32.and - i64.extend_i32_s - local.tee $5 - i64.const 32 - i64.gt_u - if (result i64) - local.get $7 - local.get $5 - i64.const 32 - i64.sub - i64.shl - local.get $9 - i64.load offset=16 - i64.const 96 - local.get $5 - i64.sub - i64.shr_u - i64.or - else - local.get $7 - i64.const 32 - local.get $5 - i64.sub - i64.shr_u - end - local.set $11 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $2 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $8 - local.get $6 - local.get $5 - i64.shl - local.get $7 - i64.const 64 - local.get $5 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $8 - local.get $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $6 - i64.const 2 - i64.shl - local.tee $8 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $6 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $1 - i32.sub - local.get $1 - local.get $10 - select - end - local.set $1 - global.get $~lib/math/rempio2f_y - local.set $3 - local.get $1 - i32.const 1 - i32.and - if (result f32) - local.get $3 - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $3 - f64.mul - local.tee $3 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $4 - local.get $4 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - else - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $4 - f64.mul - local.set $3 - f64.const 1 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $3 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $3 - local.get $4 - f64.mul - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - end - local.tee $0 - f32.neg - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.and - select - ) - (func $std/math/test_cosf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.cos - local.get $1 - local.get $2 - call $std/math/check - ) - (func $~lib/math/NativeMath.expm1 (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $8 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $7 - local.get $8 - i64.const 32 - i64.shr_u - i64.const 2147483647 - i64.and - i32.wrap_i64 - local.tee $6 - i32.const 1078159482 - i32.ge_u - if - local.get $0 - local.get $0 - f64.ne - if - local.get $0 - return - end - local.get $7 - if - f64.const -1 - return - end - local.get $0 - f64.const 709.782712893384 - f64.gt - if - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - return - end - end - local.get $6 - i32.const 1071001154 - i32.gt_u - if - local.get $0 - i32.const 1 - local.get $7 - i32.const 1 - i32.shl - i32.sub - f64.const 1.4426950408889634 - local.get $0 - f64.mul - f64.const 0.5 - local.get $0 - f64.copysign - f64.add - i32.trunc_f64_s - local.get $6 - i32.const 1072734898 - i32.lt_u - select - local.tee $2 - f64.convert_i32_s - local.tee $1 - f64.const 0.6931471803691238 - f64.mul - f64.sub - local.tee $0 - local.get $0 - local.get $1 - f64.const 1.9082149292705877e-10 - f64.mul - local.tee $1 - f64.sub - local.tee $0 - f64.sub - local.get $1 - f64.sub - local.set $3 - else - local.get $6 - i32.const 1016070144 - i32.lt_u - if - local.get $0 - return - end - end - local.get $0 - f64.const 0.5 - local.get $0 - f64.mul - local.tee $4 - f64.mul - local.tee $5 - local.get $5 - f64.mul - local.set $1 - f64.const 3 - f64.const 1 - local.get $5 - f64.const -0.03333333333333313 - f64.mul - f64.add - local.get $1 - f64.const 1.5873015872548146e-03 - local.get $5 - f64.const -7.93650757867488e-05 - f64.mul - f64.add - local.get $1 - f64.const 4.008217827329362e-06 - local.get $5 - f64.const -2.0109921818362437e-07 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.tee $1 - local.get $4 - f64.mul - f64.sub - local.set $4 - local.get $5 - local.get $1 - local.get $4 - f64.sub - f64.const 6 - local.get $0 - local.get $4 - f64.mul - f64.sub - f64.div - f64.mul - local.set $1 - local.get $2 - i32.eqz - if - local.get $0 - local.get $0 - local.get $1 - f64.mul - local.get $5 - f64.sub - f64.sub - return - end - local.get $0 - local.get $1 - local.get $3 - f64.sub - f64.mul - local.get $3 - f64.sub - local.get $5 - f64.sub - local.set $3 - local.get $2 - i32.const -1 - i32.eq - if - f64.const 0.5 - local.get $0 - local.get $3 - f64.sub - f64.mul - f64.const 0.5 - f64.sub - return - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - f64.const -0.25 - f64.lt - if - f64.const -2 - local.get $3 - local.get $0 - f64.const 0.5 - f64.add - f64.sub - f64.mul - return - end - f64.const 1 - f64.const 2 - local.get $0 - local.get $3 - f64.sub - f64.mul - f64.add - return - end - local.get $2 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - local.set $4 - i32.const 1 - local.get $2 - i32.const 56 - i32.gt_s - local.get $2 - i32.const 0 - i32.lt_s - select - if - local.get $0 - local.get $3 - f64.sub - f64.const 1 - f64.add - local.tee $0 - f64.const 2 - f64.mul - f64.const 8988465674311579538646525e283 - f64.mul - local.get $0 - local.get $4 - f64.mul - local.get $2 - i32.const 1024 - i32.eq - select - f64.const 1 - f64.sub - return - end - local.get $0 - f64.const 1 - i64.const 1023 - local.get $2 - i64.extend_i32_s - i64.sub - i64.const 52 - i64.shl - f64.reinterpret_i64 - local.tee $1 - f64.sub - local.get $3 - f64.sub - f64.const 1 - local.get $3 - local.get $1 - f64.add - f64.sub - local.get $2 - i32.const 20 - i32.lt_s - select - f64.add - local.get $4 - f64.mul - ) - (func $~lib/math/NativeMath.exp (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 31 - i32.shr_u - local.set $6 - local.get $2 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1082532651 - i32.ge_u - if - local.get $0 - local.get $0 - f64.ne - if - local.get $0 - return - end - local.get $0 - f64.const 709.782712893384 - f64.gt - if - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - return - end - local.get $0 - f64.const -745.1332191019411 - f64.lt - if - f64.const 0 - return - end - end - local.get $2 - i32.const 1071001154 - i32.gt_u - if - local.get $0 - local.get $2 - i32.const 1072734898 - i32.ge_u - if (result i32) - f64.const 1.4426950408889634 - local.get $0 - f64.mul - f64.const 0.5 - local.get $0 - f64.copysign - f64.add - i32.trunc_f64_s - else - i32.const 1 - local.get $6 - i32.const 1 - i32.shl - i32.sub - end - local.tee $4 - f64.convert_i32_s - f64.const 0.6931471803691238 - f64.mul - f64.sub - local.tee $1 - local.get $4 - f64.convert_i32_s - f64.const 1.9082149292705877e-10 - f64.mul - local.tee $7 - f64.sub - local.set $0 - else - local.get $2 - i32.const 1043333120 - i32.gt_u - if (result f64) - local.get $0 - else - f64.const 1 - local.get $0 - f64.add - return - end - local.set $1 - end - local.get $0 - local.get $0 - f64.mul - local.tee $3 - local.get $3 - f64.mul - local.set $5 - f64.const 1 - local.get $0 - local.get $0 - local.get $3 - f64.const 0.16666666666666602 - f64.mul - local.get $5 - f64.const -2.7777777777015593e-03 - local.get $3 - f64.const 6.613756321437934e-05 - f64.mul - f64.add - local.get $5 - f64.const -1.6533902205465252e-06 - local.get $3 - f64.const 4.1381367970572385e-08 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.sub - local.tee $0 - f64.mul - f64.const 2 - local.get $0 - f64.sub - f64.div - local.get $7 - f64.sub - local.get $1 - f64.add - f64.add - local.set $0 - local.get $4 - if (result f64) - local.get $0 - local.get $4 - call $~lib/math/NativeMath.scalbn - else - local.get $0 - end - ) - (func $std/math/test_cosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i32) - (local $5 i64) - block $__inlined_func$~lib/math/NativeMath.cosh (result f64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $5 - f64.reinterpret_i64 - local.set $3 - local.get $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $4 - i32.const 1072049730 - i32.lt_u - if - f64.const 1 - local.get $4 - i32.const 1045430272 - i32.lt_u - br_if $__inlined_func$~lib/math/NativeMath.cosh - drop - f64.const 1 - local.get $3 - call $~lib/math/NativeMath.expm1 - local.tee $3 - local.get $3 - f64.mul - f64.const 2 - f64.const 2 - local.get $3 - f64.mul - f64.add - f64.div - f64.add - br $__inlined_func$~lib/math/NativeMath.cosh - end - local.get $4 - i32.const 1082535490 - i32.lt_u - if - f64.const 0.5 - local.get $3 - call $~lib/math/NativeMath.exp - local.tee $3 - f64.const 1 - local.get $3 - f64.div - f64.add - f64.mul - br $__inlined_func$~lib/math/NativeMath.cosh - end - local.get $3 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - f64.const 2247116418577894884661631e283 - f64.mul - f64.const 2247116418577894884661631e283 - f64.mul - end - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/cosh - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.expm1 (param $0 f32) (result f32) - (local $1 f32) - (local $2 f32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 31 - i32.shr_u - local.set $6 - local.get $4 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1100331076 - i32.ge_u - if - local.get $4 - i32.const 2139095040 - i32.gt_u - if - local.get $0 - return - end - local.get $6 - if - f32.const -1 - return - end - local.get $0 - f32.const 88.7216796875 - f32.gt - if - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - return - end - end - local.get $4 - i32.const 1051816472 - i32.gt_u - if - local.get $0 - i32.const 1 - local.get $6 - i32.const 1 - i32.shl - i32.sub - f32.const 1.4426950216293335 - local.get $0 - f32.mul - f32.const 0.5 - local.get $0 - f32.copysign - f32.add - i32.trunc_f32_s - local.get $4 - i32.const 1065686418 - i32.lt_u - select - local.tee $3 - f32.convert_i32_s - local.tee $0 - f32.const 0.6931381225585938 - f32.mul - f32.sub - local.tee $1 - local.get $1 - local.get $0 - f32.const 9.05800061445916e-06 - f32.mul - local.tee $1 - f32.sub - local.tee $0 - f32.sub - local.get $1 - f32.sub - local.set $5 - else - local.get $4 - i32.const 855638016 - i32.lt_u - if - local.get $0 - return - end - end - f32.const 3 - f32.const 1 - local.get $0 - f32.const 0.5 - local.get $0 - f32.mul - local.tee $2 - f32.mul - local.tee $1 - f32.const -0.03333321213722229 - local.get $1 - f32.const 1.5807170420885086e-03 - f32.mul - f32.add - f32.mul - f32.add - local.tee $7 - local.get $2 - f32.mul - f32.sub - local.set $2 - local.get $1 - local.get $7 - local.get $2 - f32.sub - f32.const 6 - local.get $0 - local.get $2 - f32.mul - f32.sub - f32.div - f32.mul - local.set $2 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - local.get $2 - f32.mul - local.get $1 - f32.sub - f32.sub - return - end - local.get $0 - local.get $2 - local.get $5 - f32.sub - f32.mul - local.get $5 - f32.sub - local.get $1 - f32.sub - local.set $1 - local.get $3 - i32.const -1 - i32.eq - if - f32.const 0.5 - local.get $0 - local.get $1 - f32.sub - f32.mul - f32.const 0.5 - f32.sub - return - end - local.get $3 - i32.const 1 - i32.eq - if - local.get $0 - f32.const -0.25 - f32.lt - if - f32.const -2 - local.get $1 - local.get $0 - f32.const 0.5 - f32.add - f32.sub - f32.mul - return - end - f32.const 1 - f32.const 2 - local.get $0 - local.get $1 - f32.sub - f32.mul - f32.add - return - end - local.get $3 - i32.const 127 - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $5 - i32.const 1 - local.get $3 - i32.const 56 - i32.gt_s - local.get $3 - i32.const 0 - i32.lt_s - select - if - local.get $0 - local.get $1 - f32.sub - f32.const 1 - f32.add - local.tee $0 - f32.const 2 - f32.mul - f32.const 1701411834604692317316873e14 - f32.mul - local.get $0 - local.get $5 - f32.mul - local.get $3 - i32.const 128 - i32.eq - select - f32.const 1 - f32.sub - return - end - local.get $0 - f32.const 1 - i32.const 127 - local.get $3 - i32.sub - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.tee $2 - f32.sub - local.get $1 - f32.sub - f32.const 1 - local.get $1 - local.get $2 - f32.add - f32.sub - local.get $3 - i32.const 20 - i32.lt_s - select - f32.add - local.get $5 - f32.mul - ) - (func $~lib/math/NativeMathf.exp (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 31 - i32.shr_u - local.set $4 - local.get $2 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1118743632 - i32.ge_u - if - local.get $2 - i32.const 2139095040 - i32.gt_u - if - local.get $0 - return - end - local.get $2 - i32.const 1118925336 - i32.ge_u - if - local.get $4 - if - local.get $2 - i32.const 1120924085 - i32.ge_u - if - f32.const 0 - return - end - else - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - return - end - end - end - local.get $2 - i32.const 1051816472 - i32.gt_u - if - local.get $0 - local.get $2 - i32.const 1065686418 - i32.gt_u - if (result i32) - f32.const 1.4426950216293335 - local.get $0 - f32.mul - f32.const 0.5 - local.get $0 - f32.copysign - f32.add - i32.trunc_f32_s - else - i32.const 1 - local.get $4 - i32.const 1 - i32.shl - i32.sub - end - local.tee $3 - f32.convert_i32_s - f32.const 0.693145751953125 - f32.mul - f32.sub - local.tee $1 - local.get $3 - f32.convert_i32_s - f32.const 1.428606765330187e-06 - f32.mul - local.tee $5 - f32.sub - local.set $0 - else - local.get $2 - i32.const 956301312 - i32.gt_u - if (result f32) - local.get $0 - else - f32.const 1 - local.get $0 - f32.add - return - end - local.set $1 - end - f32.const 1 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f32.mul - local.tee $0 - f32.const 0.16666625440120697 - local.get $0 - f32.const -2.7667332906275988e-03 - f32.mul - f32.add - f32.mul - f32.sub - local.tee $0 - f32.mul - f32.const 2 - local.get $0 - f32.sub - f32.div - local.get $5 - f32.sub - local.get $1 - f32.add - f32.add - local.set $0 - local.get $3 - if (result f32) - local.get $0 - local.get $3 - call $~lib/math/NativeMathf.scalbn - else - local.get $0 - end - ) - (func $std/math/test_coshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - block $__inlined_func$~lib/math/NativeMathf.cosh (result f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $3 - f32.reinterpret_i32 - local.set $0 - local.get $3 - i32.const 1060205079 - i32.lt_u - if - f32.const 1 - local.get $3 - i32.const 964689920 - i32.lt_u - br_if $__inlined_func$~lib/math/NativeMathf.cosh - drop - f32.const 1 - local.get $0 - call $~lib/math/NativeMathf.expm1 - local.tee $0 - local.get $0 - f32.mul - f32.const 2 - f32.const 2 - local.get $0 - f32.mul - f32.add - f32.div - f32.add - br $__inlined_func$~lib/math/NativeMathf.cosh - end - local.get $3 - i32.const 1118925335 - i32.lt_u - if - f32.const 0.5 - local.get $0 - call $~lib/math/NativeMathf.exp - local.tee $0 - f32.mul - f32.const 0.5 - local.get $0 - f32.div - f32.add - br $__inlined_func$~lib/math/NativeMathf.cosh - end - local.get $0 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - f32.const 1661534994731144841129758e11 - f32.mul - f32.const 1661534994731144841129758e11 - f32.mul - end - local.get $1 - local.get $2 - call $std/math/check - ) - (func $std/math/test_exp (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.exp - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/exp - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_expf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.exp - local.get $1 - local.get $2 - call $std/math/check - ) - (func $std/math/test_expm1 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.expm1 - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/expm1 - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_expm1f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.expm1 - local.get $1 - local.get $2 - call $std/math/check - ) - (func $~lib/math/NativeMath.exp2 (param $0 f64) (result f64) - (local $1 i32) - (local $2 f64) - (local $3 i64) - (local $4 f64) - (local $5 i64) - (local $6 i32) - (local $7 f64) - block $~lib/util/math/exp2_lut|inlined.0 (result f64) - local.get $0 - local.tee $2 - i64.reinterpret_f64 - local.tee $3 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - i32.wrap_i64 - local.tee $1 - i32.const 969 - i32.sub - i32.const 63 - i32.ge_u - if - f64.const 1 - local.get $1 - i32.const 969 - i32.sub - i32.const -2147483648 - i32.ge_u - br_if $~lib/util/math/exp2_lut|inlined.0 - drop - local.get $1 - i32.const 1033 - i32.ge_u - if - f64.const 0 - local.get $3 - i64.const -4503599627370496 - i64.eq - br_if $~lib/util/math/exp2_lut|inlined.0 - drop - f64.const 1 - local.get $2 - f64.add - local.get $1 - i32.const 2047 - i32.ge_u - br_if $~lib/util/math/exp2_lut|inlined.0 - drop - f64.const inf - local.get $3 - i64.const 63 - i64.shr_u - i64.eqz - br_if $~lib/util/math/exp2_lut|inlined.0 - drop - f64.const 0 - local.get $3 - i64.const -4570929321408987136 - i64.ge_u - br_if $~lib/util/math/exp2_lut|inlined.0 - drop - end - i32.const 0 - local.get $1 - local.get $3 - i64.const 1 - i64.shl - i64.const -9143996093422370816 - i64.gt_u - select - local.set $1 - end - local.get $2 - f64.const 52776558133248 - f64.add - local.tee $0 - i64.reinterpret_f64 - local.tee $5 - i64.const 127 - i64.and - i64.const 1 - i64.shl - i32.wrap_i64 - i32.const 3 - i32.shl - i32.const 1288 - i32.add - local.tee $6 - i64.load offset=8 - local.get $5 - i64.const 45 - i64.shl - i64.add - local.set $3 - local.get $2 - local.get $0 - f64.const 52776558133248 - f64.sub - f64.sub - local.tee $0 - local.get $0 - f64.mul - local.set $2 - local.get $6 - i64.load - f64.reinterpret_i64 - local.get $0 - f64.const 0.6931471805599453 - f64.mul - f64.add - local.get $2 - f64.const 0.24022650695909065 - local.get $0 - f64.const 0.0555041086686087 - f64.mul - f64.add - f64.mul - f64.add - local.get $2 - local.get $2 - f64.mul - f64.const 0.009618131975721055 - local.get $0 - f64.const 1.3332074570119598e-03 - f64.mul - f64.add - f64.mul - f64.add - local.set $0 - local.get $1 - i32.eqz - if - block $~lib/util/math/specialcase2|inlined.0 (result f64) - local.get $5 - i64.const 2147483648 - i64.and - i64.eqz - if - f64.const 2 - local.get $3 - i64.const 4503599627370496 - i64.sub - f64.reinterpret_i64 - local.tee $2 - local.get $0 - f64.mul - local.get $2 - f64.add - f64.mul - br $~lib/util/math/specialcase2|inlined.0 - end - local.get $3 - i64.const 4602678819172646912 - i64.add - f64.reinterpret_i64 - local.tee $4 - local.get $0 - f64.mul - local.get $4 - f64.add - local.tee $2 - f64.const 1 - f64.lt - if (result f64) - f64.const 1 - local.get $2 - f64.add - local.tee $7 - f64.const 1 - local.get $7 - f64.sub - local.get $2 - f64.add - local.get $4 - local.get $2 - f64.sub - local.get $4 - local.get $0 - f64.mul - f64.add - f64.add - f64.add - f64.const 1 - f64.sub - else - local.get $2 - end - f64.const 2.2250738585072014e-308 - f64.mul - end - br $~lib/util/math/exp2_lut|inlined.0 - end - local.get $3 - f64.reinterpret_i64 - local.tee $2 - local.get $0 - f64.mul - local.get $2 - f64.add - end - ) - (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.exp2 - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - f64.const 2 - local.get $0 - call $~lib/bindings/Math/pow - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.exp2 (param $0 f32) (result f32) - (local $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i64) - block $~lib/util/math/exp2f_lut|inlined.0 (result f32) - local.get $0 - f64.promote_f32 - local.set $1 - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - local.tee $3 - i32.const 1072 - i32.ge_u - if - f32.const 0 - local.get $2 - i32.const -8388608 - i32.eq - br_if $~lib/util/math/exp2f_lut|inlined.0 - drop - local.get $0 - local.get $0 - f32.add - local.get $3 - i32.const 2040 - i32.ge_u - br_if $~lib/util/math/exp2f_lut|inlined.0 - drop - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - local.get $0 - f32.const 0 - f32.gt - br_if $~lib/util/math/exp2f_lut|inlined.0 - drop - f32.const 0 - local.get $0 - f32.const -150 - f32.le - br_if $~lib/util/math/exp2f_lut|inlined.0 - drop - end - f64.const 0.6931471806916203 - local.get $1 - local.get $1 - f64.const 211106232532992 - f64.add - local.tee $4 - f64.const 211106232532992 - f64.sub - f64.sub - local.tee $1 - f64.mul - f64.const 1 - f64.add - f64.const 0.05550361559341535 - local.get $1 - f64.mul - f64.const 0.2402284522445722 - f64.add - local.get $1 - local.get $1 - f64.mul - f64.mul - f64.add - local.get $4 - i64.reinterpret_f64 - local.tee $5 - i32.wrap_i64 - i32.const 31 - i32.and - i32.const 3 - i32.shl - i32.const 3336 - i32.add - i64.load - local.get $5 - i64.const 47 - i64.shl - i64.add - f64.reinterpret_i64 - f64.mul - f32.demote_f64 - end - ) - (func $std/math/test_exp2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.exp2 - local.get $1 - local.get $2 - call $std/math/check - ) - (func $std/math/test_floor (param $0 f64) (param $1 f64) (result i32) - local.get $0 - f64.floor - local.get $1 - f64.const 0 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/floor - local.get $1 - f64.const 0 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_floorf (param $0 f32) (param $1 f32) (result i32) - local.get $0 - f32.floor - local.get $1 - f32.const 0 - call $std/math/check - ) - (func $~lib/math/NativeMath.hypot (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 f64) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 i32) - (local $11 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $3 - local.get $1 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $2 - i64.lt_u - if - local.get $3 - local.get $2 - local.set $3 - local.set $2 - end - local.get $2 - f64.reinterpret_i64 - local.set $1 - local.get $2 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $6 - i32.const 2047 - i32.eq - if - local.get $1 - return - end - local.get $3 - f64.reinterpret_i64 - local.set $0 - i32.const 1 - local.get $2 - i64.eqz - local.get $3 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $10 - i32.const 2047 - i32.eq - select - if - local.get $0 - return - end - local.get $10 - local.get $6 - i32.sub - i32.const 64 - i32.gt_s - if - local.get $0 - local.get $1 - f64.add - return - end - f64.const 1 - local.set $9 - local.get $10 - i32.const 1533 - i32.gt_s - if (result f64) - f64.const 5260135901548373507240989e186 - local.set $9 - local.get $1 - f64.const 1.90109156629516e-211 - f64.mul - local.set $1 - local.get $0 - f64.const 1.90109156629516e-211 - f64.mul - else - local.get $6 - i32.const 573 - i32.lt_s - if (result f64) - f64.const 1.90109156629516e-211 - local.set $9 - local.get $1 - f64.const 5260135901548373507240989e186 - f64.mul - local.set $1 - local.get $0 - f64.const 5260135901548373507240989e186 - f64.mul - else - local.get $0 - end - end - local.set $0 - local.get $1 - local.get $1 - local.get $1 - f64.const 134217729 - f64.mul - local.tee $11 - f64.sub - local.get $11 - f64.add - local.tee $8 - f64.sub - local.set $5 - local.get $0 - local.get $0 - local.get $0 - f64.const 134217729 - f64.mul - local.tee $11 - f64.sub - local.get $11 - f64.add - local.tee $7 - f64.sub - local.set $11 - local.get $9 - local.get $8 - local.get $8 - f64.mul - local.get $1 - local.get $1 - f64.mul - local.tee $1 - f64.sub - f64.const 2 - local.get $8 - f64.mul - local.get $5 - f64.add - local.get $5 - f64.mul - f64.add - local.get $7 - local.get $7 - f64.mul - local.get $0 - local.get $0 - f64.mul - local.tee $0 - f64.sub - f64.const 2 - local.get $7 - f64.mul - local.get $11 - f64.add - local.get $11 - f64.mul - f64.add - f64.add - local.get $1 - f64.add - local.get $0 - f64.add - f64.sqrt - f64.mul - ) - (func $std/math/test_hypot (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.hypot - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMathf.hypot (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $3 - local.get $1 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - i32.lt_u - if - local.get $3 - local.get $2 - local.set $3 - local.set $2 - end - local.get $3 - f32.reinterpret_i32 - local.set $0 - local.get $2 - f32.reinterpret_i32 - local.set $1 - local.get $2 - i32.const 2139095040 - i32.eq - if - local.get $1 - return - end - i32.const 1 - local.get $3 - local.get $2 - i32.sub - i32.const 209715200 - i32.ge_u - i32.const 1 - local.get $2 - i32.eqz - local.get $3 - i32.const 2139095040 - i32.ge_u - select - select - if - local.get $0 - local.get $1 - f32.add - return - end - f32.const 1 - local.set $5 - local.get $3 - i32.const 1568669696 - i32.ge_u - if (result f32) - f32.const 1237940039285380274899124e3 - local.set $5 - local.get $1 - f32.const 8.077935669463161e-28 - f32.mul - local.set $1 - local.get $0 - f32.const 8.077935669463161e-28 - f32.mul - else - local.get $2 - i32.const 562036736 - i32.lt_u - if (result f32) - f32.const 8.077935669463161e-28 - local.set $5 - local.get $1 - f32.const 1237940039285380274899124e3 - f32.mul - local.set $1 - local.get $0 - f32.const 1237940039285380274899124e3 - f32.mul - else - local.get $0 - end - end - local.set $0 - local.get $5 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.mul - local.get $1 - f64.promote_f32 - local.get $1 - f64.promote_f32 - f64.mul - f64.add - f32.demote_f64 - f32.sqrt - f32.mul - ) - (func $std/math/test_hypotf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.hypot - local.get $2 - local.get $3 - call $std/math/check - ) - (func $std/math/test_log (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.log - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/log - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_logf (param $0 f32) (param $1 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.log - local.get $1 - f32.const 0 - call $std/math/check - ) - (func $~lib/math/NativeMath.log10 (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 f64) - i32.const 1 - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 1048576 - i32.lt_u - select - if - local.get $2 - i64.const 1 - i64.shl - i64.eqz - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - i32.const -54 - local.set $8 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - else - local.get $2 - i64.const 32 - i64.shl - i64.eqz - i32.const 0 - local.get $1 - i32.const 1072693248 - i32.eq - select - if - f64.const 0 - return - end - end - end - local.get $2 - i64.const 4294967295 - i64.and - local.get $1 - i32.const 614242 - i32.add - local.tee $1 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $0 - f64.const 2 - local.get $0 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.set $3 - local.get $8 - local.get $1 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - i32.add - f64.convert_i32_s - local.tee $9 - f64.const 0.30102999566361177 - f64.mul - local.tee $10 - local.get $0 - f64.const 0.5 - local.get $0 - f64.mul - local.get $0 - f64.mul - local.tee $5 - f64.sub - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $6 - f64.const 0.4342944818781689 - f64.mul - local.tee $11 - f64.add - local.set $7 - local.get $9 - f64.const 3.694239077158931e-13 - f64.mul - local.get $0 - local.get $6 - f64.sub - local.get $5 - f64.sub - local.get $4 - local.get $5 - local.get $3 - f64.const 0.6666666666666735 - local.get $3 - local.get $3 - f64.mul - local.tee $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - f64.add - local.tee $0 - local.get $6 - f64.add - f64.const 2.5082946711645275e-11 - f64.mul - f64.add - local.get $0 - f64.const 0.4342944818781689 - f64.mul - f64.add - local.get $10 - local.get $7 - f64.sub - local.get $11 - f64.add - f64.add - local.get $7 - f64.add - ) - (func $std/math/test_log10 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.log10 - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/log10 - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.log10 (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 f32) - (local $5 i32) - (local $6 f32) - i32.const 1 - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8388608 - i32.lt_u - select - if - local.get $1 - i32.const 1 - i32.shl - i32.eqz - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - i32.const -25 - local.set $5 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - else - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 0 - return - end - end - end - local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - f32.const 2 - local.get $0 - f32.add - f32.div - local.tee $3 - local.get $3 - f32.mul - local.set $2 - local.get $5 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - i32.add - f32.convert_i32_s - local.tee $6 - f32.const 7.903415166765626e-07 - f32.mul - local.get $0 - local.get $0 - f32.const 0.5 - local.get $0 - f32.mul - local.get $0 - f32.mul - local.tee $0 - f32.sub - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $4 - f32.sub - local.get $0 - f32.sub - local.get $3 - local.get $0 - local.get $2 - f32.const 0.6666666269302368 - local.get $2 - local.get $2 - f32.mul - local.tee $0 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.get $0 - f32.const 0.40000972151756287 - local.get $0 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - f32.add - f32.add - f32.mul - f32.add - local.tee $0 - local.get $4 - f32.add - f32.const -3.168997136526741e-05 - f32.mul - f32.add - local.get $0 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $4 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $6 - f32.const 0.3010292053222656 - f32.mul - f32.add - ) - (func $std/math/test_log10f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.log10 - local.get $1 - local.get $2 - call $std/math/check - ) - (func $std/math/test_log1p (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.log1p - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/log1p - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_log1pf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.log1p - local.get $1 - local.get $2 - call $std/math/check - ) - (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 f64) - (local $10 f64) - i32.const 1 - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 1048576 - i32.lt_u - select - if - local.get $2 - i64.const 1 - i64.shl - i64.eqz - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - i32.const -54 - local.set $8 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - else - local.get $2 - i64.const 32 - i64.shl - i64.eqz - i32.const 0 - local.get $1 - i32.const 1072693248 - i32.eq - select - if - f64.const 0 - return - end - end - end - local.get $2 - i64.const 4294967295 - i64.and - local.get $1 - i32.const 614242 - i32.add - local.tee $1 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $0 - f64.const 2 - local.get $0 - f64.add - f64.div - local.tee $4 - local.get $4 - f64.mul - local.set $3 - local.get $8 - local.get $1 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - i32.add - f64.convert_i32_s - local.tee $9 - local.get $0 - f64.const 0.5 - local.get $0 - f64.mul - local.get $0 - f64.mul - local.tee $5 - f64.sub - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $6 - f64.const 1.4426950407214463 - f64.mul - local.tee $10 - f64.add - local.set $7 - local.get $0 - local.get $6 - f64.sub - local.get $5 - f64.sub - local.get $4 - local.get $5 - local.get $3 - f64.const 0.6666666666666735 - local.get $3 - local.get $3 - f64.mul - local.tee $0 - f64.const 0.2857142874366239 - local.get $0 - f64.const 0.1818357216161805 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0.3999999999940942 - local.get $0 - f64.const 0.22222198432149784 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.add - f64.mul - f64.add - local.tee $0 - local.get $6 - f64.add - f64.const 1.6751713164886512e-10 - f64.mul - local.get $0 - f64.const 1.4426950407214463 - f64.mul - f64.add - local.get $9 - local.get $7 - f64.sub - local.get $10 - f64.add - f64.add - local.get $7 - f64.add - ) - (func $std/math/test_log2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.log2 - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/log2 - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.log2 (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 f32) - (local $5 i32) - i32.const 1 - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8388608 - i32.lt_u - select - if - local.get $1 - i32.const 1 - i32.shl - i32.eqz - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - i32.const -25 - local.set $5 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - else - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 0 - return - end - end - end - local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - f32.const 2 - local.get $0 - f32.add - f32.div - local.tee $3 - local.get $3 - f32.mul - local.set $2 - local.get $0 - local.get $0 - f32.const 0.5 - local.get $0 - f32.mul - local.get $0 - f32.mul - local.tee $0 - f32.sub - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $4 - f32.sub - local.get $0 - f32.sub - local.get $3 - local.get $0 - local.get $2 - f32.const 0.6666666269302368 - local.get $2 - local.get $2 - f32.mul - local.tee $0 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.get $0 - f32.const 0.40000972151756287 - local.get $0 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - f32.add - f32.add - f32.mul - f32.add - local.tee $0 - local.get $4 - f32.add - f32.const -1.7605285393074155e-04 - f32.mul - local.get $0 - f32.const 1.44287109375 - f32.mul - f32.add - local.get $4 - f32.const 1.44287109375 - f32.mul - f32.add - local.get $5 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - i32.add - f32.convert_i32_s - f32.add - ) - (func $std/math/test_log2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.log2 - local.get $1 - local.get $2 - call $std/math/check - ) - (func $std/math/test_max (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - local.get $1 - f64.max - local.get $2 - f64.const 0 - call $std/math/check - if (result i32) - local.get $0 - local.get $1 - call $~lib/bindings/Math/max - local.get $2 - f64.const 0 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_maxf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - local.get $1 - f32.max - local.get $2 - f32.const 0 - call $std/math/check - ) - (func $std/math/test_min (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - local.get $1 - f64.min - local.get $2 - f64.const 0 - call $std/math/check - if (result i32) - local.get $0 - local.get $1 - call $~lib/bindings/Math/min - local.get $2 - f64.const 0 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_minf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - local.get $1 - f32.min - local.get $2 - f32.const 0 - call $std/math/check - ) - (func $~lib/math/NativeMath.mod (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i64) - local.get $1 - f64.abs - f64.const 1 - f64.eq - if - local.get $0 - local.get $0 - f64.trunc - f64.sub - local.get $0 - f64.copysign - return - end - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $5 - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 63 - i64.shr_u - local.set $7 - i32.const 1 - local.get $1 - local.get $1 - f64.ne - i32.const 1 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $4 - i64.const 2047 - i64.eq - local.get $3 - i64.const 1 - i64.shl - local.tee $6 - i64.eqz - select - select - if - local.get $0 - local.get $1 - f64.mul - local.tee $0 - local.get $0 - f64.div - return - end - block $folding-inner0 - local.get $2 - i64.const 1 - i64.shl - local.tee $8 - local.get $6 - i64.le_u - if - local.get $6 - local.get $8 - i64.eq - br_if $folding-inner0 - local.get $0 - return - end - local.get $4 - i64.eqz - if (result i64) - local.get $2 - i64.const 0 - local.get $4 - local.get $2 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $4 - i64.sub - i64.const 1 - i64.add - i64.shl - else - local.get $2 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $2 - local.get $5 - i64.eqz - if (result i64) - local.get $3 - i64.const 0 - local.get $5 - local.get $3 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $5 - i64.sub - i64.const 1 - i64.add - i64.shl - else - local.get $3 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $3 - loop $while-continue|0 - local.get $4 - local.get $5 - i64.gt_s - if - local.get $2 - local.get $3 - i64.ge_u - if (result i64) - local.get $2 - local.get $3 - i64.eq - br_if $folding-inner0 - local.get $2 - local.get $3 - i64.sub - else - local.get $2 - end - i64.const 1 - i64.shl - local.set $2 - local.get $4 - i64.const 1 - i64.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i64.ge_u - if - local.get $2 - local.get $3 - i64.eq - br_if $folding-inner0 - local.get $2 - local.get $3 - i64.sub - local.set $2 - end - local.get $2 - local.get $2 - i64.const 11 - i64.shl - i64.clz - local.tee $3 - i64.shl - local.set $2 - local.get $4 - local.get $3 - i64.sub - local.tee $4 - i64.const 0 - i64.gt_s - if (result i64) - local.get $2 - i64.const 4503599627370496 - i64.sub - local.get $4 - i64.const 52 - i64.shl - i64.or - else - local.get $2 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shr_u - end - local.get $7 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 - return - end - f64.const 0 - local.get $0 - f64.mul - ) - (func $std/math/test_mod (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.mod - local.get $2 - f64.const 0 - call $std/math/check - if (result i32) - local.get $0 - local.get $1 - call $std/math/mod - local.get $2 - f64.const 0 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - f32.abs - f32.const 1 - f32.eq - if - local.get $0 - local.get $0 - f32.trunc - f32.sub - local.get $0 - f32.copysign - return - end - local.get $1 - i32.reinterpret_f32 - local.tee $3 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $5 - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const -2147483648 - i32.and - local.set $7 - i32.const 1 - local.get $1 - local.get $1 - f32.ne - local.get $2 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $4 - i32.const 255 - i32.eq - i32.const 1 - local.get $3 - i32.const 1 - i32.shl - local.tee $6 - select - select - if - local.get $0 - local.get $1 - f32.mul - local.tee $0 - local.get $0 - f32.div - return - end - block $folding-inner0 - local.get $2 - i32.const 1 - i32.shl - local.tee $8 - local.get $6 - i32.le_u - if - local.get $6 - local.get $8 - i32.eq - br_if $folding-inner0 - local.get $0 - return - end - local.get $4 - if (result i32) - local.get $2 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $2 - i32.const 1 - local.get $4 - local.get $2 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $4 - i32.sub - i32.shl - end - local.set $2 - local.get $5 - if (result i32) - local.get $3 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $3 - i32.const 1 - local.get $5 - local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $5 - i32.sub - i32.shl - end - local.set $3 - loop $while-continue|0 - local.get $4 - local.get $5 - i32.gt_s - if - local.get $2 - local.get $3 - i32.ge_u - if (result i32) - local.get $2 - local.get $3 - i32.eq - br_if $folding-inner0 - local.get $2 - local.get $3 - i32.sub - else - local.get $2 - end - i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq - br_if $folding-inner0 - local.get $2 - local.get $3 - i32.sub - local.set $2 - end - local.get $2 - local.get $2 - i32.const 8 - i32.shl - i32.clz - local.tee $3 - i32.shl - local.set $2 - local.get $4 - local.get $3 - i32.sub - local.tee $4 - i32.const 0 - i32.gt_s - if (result i32) - local.get $2 - i32.const 8388608 - i32.sub - local.get $4 - i32.const 23 - i32.shl - i32.or - else - local.get $2 - i32.const 1 - local.get $4 - i32.sub - i32.shr_u - end - local.get $7 - i32.or - f32.reinterpret_i32 - return - end - f32.const 0 - local.get $0 - f32.mul - ) - (func $std/math/test_modf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.mod - local.get $2 - f32.const 0 - call $std/math/check - ) - (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 f64) - (local $11 i32) - (local $12 i32) - (local $13 f64) - (local $14 i64) - (local $15 f64) - (local $16 i32) - (local $17 f64) - (local $18 i32) - (local $19 f64) - local.get $1 - f64.abs - f64.const 2 - f64.le - if - local.get $1 - f64.const 2 - f64.eq - if - local.get $0 - local.get $0 - f64.mul - return - end - local.get $1 - f64.const 0.5 - f64.eq - if - local.get $0 - f64.sqrt - f64.abs - f64.const inf - local.get $0 - f64.const -inf - f64.ne - select - return - end - local.get $1 - f64.const -1 - f64.eq - if - f64.const 1 - local.get $0 - f64.div - return - end - local.get $1 - f64.const 1 - f64.eq - if - local.get $0 - return - end - local.get $1 - f64.const 0 - f64.eq - if - f64.const 1 - return - end - end - local.get $0 - i64.reinterpret_f64 - local.tee $14 - i32.wrap_i64 - local.set $18 - local.get $14 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $16 - i32.const 2147483647 - i32.and - local.set $4 - local.get $1 - i64.reinterpret_f64 - local.tee $14 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 2147483647 - i32.and - local.tee $9 - local.get $14 - i32.wrap_i64 - local.tee $6 - i32.or - i32.eqz - if - f64.const 1 - return - end - i32.const 1 - local.get $6 - i32.const 0 - local.get $9 - i32.const 2146435072 - i32.eq - select - i32.const 1 - local.get $9 - i32.const 2146435072 - i32.gt_s - i32.const 1 - local.get $18 - i32.const 0 - local.get $4 - i32.const 2146435072 - i32.eq - select - local.get $4 - i32.const 2146435072 - i32.gt_s - select - select - select - if - local.get $0 - local.get $1 - f64.add - return - end - local.get $16 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - i32.const 1128267776 - i32.ge_s - if (result i32) - i32.const 2 - else - local.get $9 - i32.const 1072693248 - i32.ge_s - if (result i32) - i32.const 52 - i32.const 20 - local.get $9 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - local.tee $11 - i32.const 20 - i32.gt_s - local.tee $5 - select - local.get $11 - i32.sub - local.set $12 - i32.const 2 - local.get $6 - local.get $9 - local.get $5 - select - local.tee $5 - local.get $12 - i32.shr_u - local.tee $11 - i32.const 1 - i32.and - i32.sub - i32.const 0 - local.get $5 - local.get $11 - local.get $12 - i32.shl - i32.eq - select - else - i32.const 0 - end - end - else - i32.const 0 - end - local.set $5 - local.get $6 - i32.eqz - if - local.get $9 - i32.const 2146435072 - i32.eq - if - local.get $18 - local.get $4 - i32.const 1072693248 - i32.sub - i32.or - if - local.get $4 - i32.const 1072693248 - i32.ge_s - if - local.get $1 - f64.const 0 - local.get $8 - i32.const 0 - i32.ge_s - select - return - else - f64.const 0 - local.get $1 - f64.neg - local.get $8 - i32.const 0 - i32.ge_s - select - return - end - unreachable - else - f64.const nan:0x8000000000000 - return - end - unreachable - end - local.get $9 - i32.const 1072693248 - i32.eq - if - local.get $8 - i32.const 0 - i32.ge_s - if - local.get $0 - return - end - f64.const 1 - local.get $0 - f64.div - return - end - local.get $8 - i32.const 1073741824 - i32.eq - if - local.get $0 - local.get $0 - f64.mul - return - end - local.get $8 - i32.const 1071644672 - i32.eq - if - local.get $16 - i32.const 0 - i32.ge_s - if - local.get $0 - f64.sqrt - return - end - end - end - local.get $0 - f64.abs - local.set $3 - local.get $18 - i32.eqz - if - i32.const 1 - local.get $4 - i32.const 1072693248 - i32.eq - local.get $4 - i32.const 2146435072 - i32.eq - i32.const 1 - local.get $4 - select - select - if - f64.const 1 - local.get $3 - f64.div - local.get $3 - local.get $8 - i32.const 0 - i32.lt_s - select - local.set $3 - local.get $16 - i32.const 0 - i32.lt_s - if (result f64) - local.get $5 - local.get $4 - i32.const 1072693248 - i32.sub - i32.or - if (result f64) - local.get $3 - f64.neg - local.get $3 - local.get $5 - i32.const 1 - i32.eq - select - else - local.get $3 - local.get $3 - f64.sub - local.tee $0 - local.get $0 - f64.div - end - else - local.get $3 - end - return - end - end - local.get $16 - i32.const 0 - i32.lt_s - if (result f64) - local.get $5 - i32.eqz - if - local.get $0 - local.get $0 - f64.sub - local.tee $0 - local.get $0 - f64.div - return - end - f64.const -1 - f64.const 1 - local.get $5 - i32.const 1 - i32.eq - select - else - f64.const 1 - end - local.set $10 - local.get $9 - i32.const 1105199104 - i32.gt_s - if (result f64) - local.get $9 - i32.const 1139802112 - i32.gt_s - if - local.get $4 - i32.const 1072693247 - i32.le_s - if - f64.const inf - f64.const 0 - local.get $8 - i32.const 0 - i32.lt_s - select - return - end - local.get $4 - i32.const 1072693248 - i32.ge_s - if - f64.const inf - f64.const 0 - local.get $8 - i32.const 0 - i32.gt_s - select - return - end - end - local.get $4 - i32.const 1072693247 - i32.lt_s - if - local.get $10 - f64.const 1.e+300 - f64.mul - f64.const 1.e+300 - f64.mul - local.get $10 - f64.const 1e-300 - f64.mul - f64.const 1e-300 - f64.mul - local.get $8 - i32.const 0 - i32.lt_s - select - return - end - local.get $4 - i32.const 1072693248 - i32.gt_s - if - local.get $10 - f64.const 1.e+300 - f64.mul - f64.const 1.e+300 - f64.mul - local.get $10 - f64.const 1e-300 - f64.mul - f64.const 1e-300 - f64.mul - local.get $8 - i32.const 0 - i32.gt_s - select - return - end - f64.const 1.4426950216293335 - local.get $3 - f64.const 1 - f64.sub - local.tee $0 - f64.mul - local.tee $3 - local.get $0 - f64.const 1.9259629911266175e-08 - f64.mul - local.get $0 - local.get $0 - f64.mul - f64.const 0.5 - local.get $0 - f64.const 0.3333333333333333 - local.get $0 - f64.const 0.25 - f64.mul - f64.sub - f64.mul - f64.sub - f64.mul - f64.const 1.4426950408889634 - f64.mul - f64.sub - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $7 - local.get $0 - local.get $7 - local.get $3 - f64.sub - f64.sub - else - local.get $4 - i32.const 1048576 - i32.lt_s - if (result i32) - local.get $3 - f64.const 9007199254740992 - f64.mul - local.tee $3 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $4 - i32.const -53 - else - i32.const 0 - end - local.get $4 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - i32.add - local.set $6 - local.get $4 - i32.const 1048575 - i32.and - local.tee $5 - i32.const 1072693248 - i32.or - local.set $4 - local.get $5 - i32.const 235662 - i32.le_s - if (result i32) - i32.const 0 - else - local.get $5 - i32.const 767610 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $6 - i32.const 1 - i32.add - local.set $6 - local.get $4 - i32.const -1048576 - i32.add - local.set $4 - i32.const 0 - end - end - local.set $5 - f64.const 0.9617967009544373 - local.get $3 - i64.reinterpret_f64 - i64.const 4294967295 - i64.and - local.get $4 - i64.extend_i32_s - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $7 - f64.const 1.5 - f64.const 1 - local.get $5 - select - local.tee $2 - f64.sub - local.tee $3 - f64.const 1 - local.get $7 - local.get $2 - f64.add - f64.div - local.tee $0 - f64.mul - local.tee $17 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $15 - f64.const 3 - local.get $15 - local.get $15 - f64.mul - local.tee $19 - f64.add - local.get $17 - local.get $17 - f64.mul - local.tee $13 - local.get $13 - f64.mul - f64.const 0.5999999999999946 - local.get $13 - f64.const 0.4285714285785502 - local.get $13 - f64.const 0.33333332981837743 - local.get $13 - f64.const 0.272728123808534 - local.get $13 - f64.const 0.23066074577556175 - local.get $13 - f64.const 0.20697501780033842 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - local.get $3 - local.get $15 - local.get $4 - i32.const 1 - i32.shr_s - i32.const 536870912 - i32.or - i32.const 524288 - i32.add - local.get $5 - i32.const 18 - i32.shl - i32.add - i64.extend_i32_s - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.tee $0 - f64.mul - f64.sub - local.get $15 - local.get $7 - local.get $0 - local.get $2 - f64.sub - f64.sub - f64.mul - f64.sub - f64.mul - local.tee $2 - local.get $15 - local.get $17 - f64.add - f64.mul - f64.add - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $7 - f64.mul - local.tee $3 - local.get $2 - local.get $7 - f64.mul - local.get $0 - local.get $7 - f64.const 3 - f64.sub - local.get $19 - f64.sub - f64.sub - local.get $17 - f64.mul - f64.add - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $2 - f64.mul - local.tee $19 - f64.const -7.028461650952758e-09 - local.get $2 - f64.mul - local.get $0 - local.get $2 - local.get $3 - f64.sub - f64.sub - f64.const 0.9617966939259756 - f64.mul - f64.add - f64.const 1.350039202129749e-08 - f64.const 0 - local.get $5 - select - f64.add - local.tee $2 - f64.add - f64.const 0.5849624872207642 - f64.const 0 - local.get $5 - select - local.tee $3 - f64.add - local.get $6 - f64.convert_i32_s - local.tee $0 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $7 - local.get $2 - local.get $7 - local.get $0 - f64.sub - local.get $3 - f64.sub - local.get $19 - f64.sub - f64.sub - end - local.set $3 - local.get $1 - local.get $1 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $0 - f64.sub - local.get $7 - f64.mul - local.get $1 - local.get $3 - f64.mul - f64.add - local.tee $1 - local.get $0 - local.get $7 - f64.mul - local.tee $2 - f64.add - local.tee $0 - i64.reinterpret_f64 - local.tee $14 - i32.wrap_i64 - local.set $5 - block $folding-inner1 - block $folding-inner0 - local.get $14 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $12 - i32.const 1083179008 - i32.ge_s - if - local.get $5 - local.get $12 - i32.const 1083179008 - i32.sub - i32.or - local.get $1 - f64.const 8.008566259537294e-17 - f64.add - local.get $0 - local.get $2 - f64.sub - f64.gt - i32.or - br_if $folding-inner0 - else - local.get $12 - i32.const 2147483647 - i32.and - i32.const 1083231232 - i32.ge_s - i32.const 0 - local.get $5 - local.get $12 - i32.const -1064252416 - i32.sub - i32.or - local.get $1 - local.get $0 - local.get $2 - f64.sub - f64.le - i32.or - select - br_if $folding-inner1 - end - local.get $12 - i32.const 2147483647 - i32.and - local.tee $11 - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - local.set $5 - i32.const 0 - local.set $6 - local.get $1 - local.get $11 - i32.const 1071644672 - i32.gt_s - if - i32.const 1048575 - local.get $12 - i32.const 1048576 - local.get $5 - i32.const 1 - i32.add - i32.shr_s - i32.add - local.tee $11 - i32.const 2147483647 - i32.and - i32.const 20 - i32.shr_s - i32.const 1023 - i32.sub - local.tee $5 - i32.shr_s - i32.const -1 - i32.xor - local.get $11 - i32.and - i64.extend_i32_s - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.set $0 - i32.const 0 - local.get $11 - i32.const 1048575 - i32.and - i32.const 1048576 - i32.or - i32.const 20 - local.get $5 - i32.sub - i32.shr_s - local.tee $6 - i32.sub - local.get $6 - local.get $12 - i32.const 0 - i32.lt_s - select - local.set $6 - local.get $2 - local.get $0 - f64.sub - local.set $2 - end - local.get $2 - f64.add - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $0 - f64.const 0.6931471824645996 - f64.mul - local.tee $3 - local.get $1 - local.get $0 - local.get $2 - f64.sub - f64.sub - f64.const 0.6931471805599453 - f64.mul - local.get $0 - f64.const -1.904654299957768e-09 - f64.mul - f64.add - local.tee $1 - f64.add - local.tee $2 - local.get $2 - f64.mul - local.set $0 - local.get $10 - f64.const 1 - local.get $2 - local.get $2 - local.get $0 - f64.const 0.16666666666666602 - local.get $0 - f64.const -2.7777777777015593e-03 - local.get $0 - f64.const 6.613756321437934e-05 - local.get $0 - f64.const -1.6533902205465252e-06 - local.get $0 - f64.const 4.1381367970572385e-08 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.sub - local.tee $0 - f64.mul - local.get $0 - f64.const 2 - f64.sub - f64.div - local.get $1 - local.get $2 - local.get $3 - f64.sub - f64.sub - local.tee $0 - local.get $2 - local.get $0 - f64.mul - f64.add - f64.sub - local.get $2 - f64.sub - f64.sub - local.tee $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.get $6 - i32.const 20 - i32.shl - i32.add - local.tee $5 - i32.const 20 - i32.shr_s - i32.const 0 - i32.le_s - if (result f64) - local.get $0 - local.get $6 - call $~lib/math/NativeMath.scalbn - else - local.get $0 - i64.reinterpret_f64 - i64.const 4294967295 - i64.and - local.get $5 - i64.extend_i32_s - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - end - f64.mul - return - end - local.get $10 - f64.const 1.e+300 - f64.mul - f64.const 1.e+300 - f64.mul - return - end - local.get $10 - f64.const 1e-300 - f64.mul - f64.const 1e-300 - f64.mul - ) - (func $std/math/test_pow (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.pow - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - local.get $0 - local.get $1 - call $~lib/bindings/Math/pow - local.get $2 - local.get $3 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 f32) - (local $9 i32) - (local $10 i64) - (local $11 f64) - local.get $1 - f32.abs - f32.const 2 - f32.le - if - local.get $1 - f32.const 2 - f32.eq - if - local.get $0 - local.get $0 - f32.mul - return - end - local.get $1 - f32.const 0.5 - f32.eq - if - local.get $0 - f32.sqrt - f32.abs - f32.const inf - local.get $0 - f32.const -inf - f32.ne - select - return - end - local.get $1 - f32.const -1 - f32.eq - if - f32.const 1 - local.get $0 - f32.div - return - end - local.get $1 - f32.const 1 - f32.eq - if - local.get $0 - return - end - local.get $1 - f32.const 0 - f32.eq - if - f32.const 1 - return - end - end - local.get $1 - f32.const 0 - f32.eq - if - f32.const 1 - return - end - local.get $0 - local.get $0 - f32.ne - local.get $1 - local.get $1 - f32.ne - i32.or - if - f32.const nan:0x400000 - return - end - local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 2147483647 - i32.and - local.set $6 - local.get $1 - f32.nearest - local.get $1 - f32.eq - i32.const 0 - local.get $4 - i32.const 31 - i32.shr_u - local.tee $4 - select - if - i32.const 0 - local.set $4 - local.get $1 - f32.const 0.5 - f32.mul - local.tee $8 - f32.nearest - local.get $8 - f32.ne - i32.const 31 - i32.shl - local.set $9 - local.get $0 - f32.neg - local.set $0 - end - local.get $1 - i32.reinterpret_f32 - local.set $5 - local.get $6 - i32.const 1065353216 - i32.eq - if (result i32) - i32.const 2143289344 - i32.const 1065353216 - local.get $4 - local.get $5 - i32.const 2147483647 - i32.and - i32.const 2139095040 - i32.eq - i32.or - select - else - local.get $6 - if (result i32) - local.get $6 - i32.const 2139095040 - i32.eq - if (result i32) - i32.const 0 - i32.const 2139095040 - local.get $5 - i32.const 31 - i32.shr_u - select - else - local.get $4 - if (result i32) - i32.const 2143289344 - else - block $~lib/math/exp2f|inlined.0 (result f64) - local.get $0 - f64.promote_f32 - i64.reinterpret_f64 - local.tee $10 - i64.const 4604544271217802189 - i64.sub - i64.const 52 - i64.shr_s - local.set $7 - local.get $10 - local.get $7 - i64.const 52 - i64.shl - i64.sub - f64.reinterpret_i64 - local.tee $2 - f64.const 1 - f64.sub - local.get $2 - f64.const 1 - f64.add - f64.div - local.tee $3 - local.get $3 - f64.mul - local.set $2 - f64.const 0 - local.get $1 - f64.promote_f32 - f64.const 2.8853900817779268 - local.get $3 - local.get $3 - local.get $2 - f64.mul - f64.const 0.3333333282272823 - f64.const 0.20000167595436263 - local.get $2 - f64.mul - f64.add - f64.const 0.14268654271188685 - f64.const 0.11791075649681414 - local.get $2 - f64.mul - f64.add - local.get $2 - local.get $2 - f64.mul - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $7 - f64.convert_i64_s - f64.add - f64.mul - local.tee $2 - f64.const -1022 - f64.lt - br_if $~lib/math/exp2f|inlined.0 - drop - f64.const inf - local.get $2 - f64.const 1024 - f64.ge - br_if $~lib/math/exp2f|inlined.0 - drop - local.get $2 - local.get $2 - f64.nearest - local.tee $11 - f64.sub - local.tee $2 - local.get $2 - f64.mul - local.set $3 - f64.const 1 - local.get $2 - f64.const 0.6931471880289533 - f64.const 0.24022651084211735 - local.get $2 - f64.mul - f64.add - f64.const 0.055503571054988744 - f64.const 0.009618030771171498 - local.get $2 - f64.mul - f64.add - local.get $3 - f64.mul - f64.add - f64.const 0.001339086685300951 - f64.const 1.5469734999890288e-04 - local.get $2 - f64.mul - f64.add - local.get $3 - local.get $3 - f64.mul - f64.mul - f64.add - f64.mul - f64.add - i64.reinterpret_f64 - local.get $11 - i64.trunc_f64_s - i64.const 52 - i64.shl - i64.add - f64.reinterpret_i64 - end - f32.demote_f64 - i32.reinterpret_f32 - end - end - else - i32.const 2139095040 - i32.const 0 - local.get $5 - i32.const 31 - i32.shr_u - select - end - end - local.get $9 - i32.or - f32.reinterpret_i32 - ) - (func $std/math/test_powf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.pow - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/murmurHash3 (param $0 i64) (result i64) - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - ) - (func $~lib/math/splitMix32 (param $0 i32) (result i32) - local.get $0 - i32.const 1831565813 - i32.add - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - local.get $0 - i32.const 1 - i32.or - i32.mul - local.tee $0 - local.get $0 - local.get $0 - i32.const 61 - i32.or - local.get $0 - local.get $0 - i32.const 7 - i32.shr_u - i32.xor - i32.mul - i32.add - i32.xor - local.tee $0 - local.get $0 - i32.const 14 - i32.shr_u - i32.xor - ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) - i32.const 1 - global.set $~lib/math/random_seeded - local.get $0 - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state1_64 - local.get $0 - i32.wrap_i64 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state0_32 - global.get $~lib/math/random_state0_32 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state1_32 - global.get $~lib/math/random_state1_32 - i32.const 0 - i32.ne - i32.const 0 - global.get $~lib/math/random_state0_32 - i32.const 0 - global.get $~lib/math/random_state1_64 - i64.const 0 - i64.ne - i32.const 0 - global.get $~lib/math/random_state0_64 - i64.const 0 - i64.ne - select - select - select - i32.eqz - if - i32.const 0 - i32.const 3616 - i32.const 1399 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/math/test_round (param $0 f64) (param $1 f64) (result i32) - local.get $0 - f64.const 0.5 - f64.add - f64.floor - local.get $0 - f64.copysign - local.get $1 - f64.const 0 - call $std/math/check - ) - (func $std/math/test_roundf (param $0 f32) (param $1 f32) (result i32) - local.get $0 - f32.const 0.5 - f32.add - f32.floor - local.get $0 - f32.copysign - local.get $1 - f32.const 0 - call $std/math/check - ) - (func $std/math/test_sign (param $0 f64) (param $1 f64) (result i32) - f64.const 1 - local.get $0 - f64.copysign - local.get $0 - local.get $0 - f64.abs - f64.const 0 - f64.gt - select - local.get $1 - f64.const 0 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/sign - local.get $1 - f64.const 0 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_signf (param $0 f32) (param $1 f32) (result i32) - f32.const 1 - local.get $0 - f32.copysign - local.get $0 - local.get $0 - f32.abs - f32.const 0 - f32.gt - select - local.get $1 - f32.const 0 - call $std/math/check - ) - (func $~lib/math/NativeMath.rem (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 f64) - local.get $1 - i64.reinterpret_f64 - local.tee $4 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $5 - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $7 - i32.const 1 - local.get $1 - local.get $1 - f64.ne - i32.const 1 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $3 - i64.const 2047 - i64.eq - local.get $4 - i64.const 1 - i64.shl - i64.eqz - select - select - if - local.get $0 - local.get $1 - f64.mul - local.tee $0 - local.get $0 - f64.div - return - end - local.get $2 - i64.const 1 - i64.shl - i64.eqz - if - local.get $0 - return - end - local.get $3 - i64.eqz - if (result i64) - local.get $2 - i64.const 0 - local.get $3 - local.get $2 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $3 - i64.sub - i64.const 1 - i64.add - i64.shl - else - local.get $2 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $2 - local.get $5 - i64.eqz - if (result i64) - local.get $4 - i64.const 0 - local.get $5 - local.get $4 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $5 - i64.sub - i64.const 1 - i64.add - i64.shl - else - local.get $4 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $4 - block $do-break|0 - local.get $3 - local.get $5 - i64.lt_s - if - local.get $5 - local.get $3 - i64.const 1 - i64.add - i64.eq - br_if $do-break|0 - local.get $0 - return - end - loop $while-continue|1 - local.get $3 - local.get $5 - i64.gt_s - if - local.get $2 - local.get $4 - i64.ge_u - if (result i64) - local.get $6 - i32.const 1 - i32.add - local.set $6 - local.get $2 - local.get $4 - i64.sub - else - local.get $2 - end - i64.const 1 - i64.shl - local.set $2 - local.get $6 - i32.const 1 - i32.shl - local.set $6 - local.get $3 - i64.const 1 - i64.sub - local.set $3 - br $while-continue|1 - end - end - local.get $2 - local.get $4 - i64.ge_u - if - local.get $6 - i32.const 1 - i32.add - local.set $6 - local.get $2 - local.get $4 - i64.sub - local.set $2 - end - local.get $2 - i64.eqz - if - i64.const -60 - local.set $3 - else - local.get $3 - local.get $2 - i64.const 11 - i64.shl - i64.clz - local.tee $4 - i64.sub - local.set $3 - local.get $2 - local.get $4 - i64.shl - local.set $2 - end - end - i32.const 1 - i32.const 1 - local.get $6 - i32.const 1 - i32.and - i32.const 0 - local.get $2 - i64.const 4503599627370496 - i64.sub - local.get $3 - i64.const 52 - i64.shl - i64.or - local.get $2 - i64.const 0 - local.get $3 - i64.sub - i64.const 1 - i64.add - i64.shr_u - local.get $3 - i64.const 0 - i64.gt_s - select - f64.reinterpret_i64 - local.tee $0 - local.get $0 - f64.add - local.tee $8 - local.get $1 - f64.abs - local.tee $1 - f64.eq - select - local.get $8 - local.get $1 - f64.gt - select - i32.const 0 - local.get $5 - local.get $3 - i64.const 1 - i64.add - i64.eq - select - local.get $3 - local.get $5 - i64.eq - select - if - local.get $0 - local.get $1 - f64.sub - local.set $0 - end - local.get $0 - f64.neg - local.get $0 - local.get $7 - select - ) - (func $std/math/test_rem (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.rem - local.get $2 - f64.const 0 - call $std/math/check - ) - (func $~lib/math/NativeMathf.rem (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - i32.reinterpret_f32 - local.tee $6 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $8 - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_u - local.set $5 - i32.const 1 - local.get $1 - local.get $1 - f32.ne - local.get $3 - local.tee $2 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $9 - i32.const 255 - i32.eq - i32.const 1 - local.get $6 - i32.const 1 - i32.shl - select - select - if - local.get $0 - local.get $1 - f32.mul - local.tee $0 - local.get $0 - f32.div - return - end - local.get $2 - i32.const 1 - i32.shl - i32.eqz - if - local.get $0 - return - end - local.get $9 - if (result i32) - local.get $2 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $2 - i32.const 1 - local.get $9 - local.get $2 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $9 - i32.sub - i32.shl - end - local.set $2 - local.get $8 - if (result i32) - local.get $6 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $6 - i32.const 1 - local.get $8 - local.get $6 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $8 - i32.sub - i32.shl - end - local.set $3 - block $do-break|0 - local.get $9 - local.get $8 - i32.lt_s - if - local.get $8 - local.get $9 - i32.const 1 - i32.add - i32.eq - br_if $do-break|0 - local.get $0 - return - end - loop $while-continue|1 - local.get $9 - local.get $8 - i32.gt_s - if - local.get $2 - local.get $3 - i32.ge_u - if (result i32) - local.get $7 - i32.const 1 - i32.add - local.set $7 - local.get $2 - local.get $3 - i32.sub - else - local.get $2 - end - i32.const 1 - i32.shl - local.set $2 - local.get $7 - i32.const 1 - i32.shl - local.set $7 - local.get $9 - i32.const 1 - i32.sub - local.set $9 - br $while-continue|1 - end - end - local.get $2 - local.get $3 - i32.ge_u - if - local.get $7 - i32.const 1 - i32.add - local.set $7 - local.get $2 - local.get $3 - i32.sub - local.set $2 - end - local.get $2 - if - local.get $9 - local.get $2 - i32.const 8 - i32.shl - i32.clz - local.tee $3 - i32.sub - local.set $9 - local.get $2 - local.get $3 - i32.shl - local.set $2 - else - i32.const -30 - local.set $9 - end - end - i32.const 1 - i32.const 1 - local.get $7 - i32.const 1 - i32.and - i32.const 0 - local.get $2 - i32.const 8388608 - i32.sub - local.get $9 - i32.const 23 - i32.shl - i32.or - local.get $2 - i32.const 1 - local.get $9 - i32.sub - i32.shr_u - local.get $9 - i32.const 0 - i32.gt_s - select - f32.reinterpret_i32 - local.tee $0 - local.get $0 - f32.add - local.tee $4 - local.get $1 - f32.abs - local.tee $1 - f32.eq - select - local.get $4 - local.get $1 - f32.gt - select - i32.const 0 - local.get $8 - local.get $9 - i32.const 1 - i32.add - i32.eq - select - local.get $8 - local.get $9 - i32.eq - select - if - local.get $0 - local.get $1 - f32.sub - local.set $0 - end - local.get $0 - f32.neg - local.get $0 - local.get $5 - select - ) - (func $std/math/test_remf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.rem - local.get $2 - f32.const 0 - call $std/math/check - ) - (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 31 - i32.shr_u - local.set $6 - local.get $5 - i32.const 2147483647 - i32.and - local.tee $5 - i32.const 1072243195 - i32.le_u - if - local.get $5 - i32.const 1045430272 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - local.get $0 - local.get $0 - f64.mul - local.tee $3 - local.get $0 - f64.mul - f64.const -0.16666666666666632 - local.get $3 - f64.const 0.00833333333332249 - local.get $3 - f64.const -1.984126982985795e-04 - local.get $3 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $3 - local.get $3 - f64.mul - f64.mul - f64.const -2.5050760253406863e-08 - local.get $3 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - return - end - local.get $5 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.1 (result i32) - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $5 - i32.const 1094263291 - i32.lt_u - if - local.get $5 - i32.const 20 - i32.shr_u - local.tee $6 - local.get $0 - local.get $0 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $3 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.tee $0 - local.get $3 - f64.const 6.077100506506192e-11 - f64.mul - local.tee $4 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 16 - i32.gt_u - if - local.get $3 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $0 - local.get $0 - local.get $3 - f64.const 6.077100506303966e-11 - f64.mul - local.tee $4 - f64.sub - local.tee $0 - f64.sub - local.get $4 - f64.sub - f64.sub - local.set $4 - local.get $6 - local.get $0 - local.get $4 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 49 - i32.gt_u - if (result f64) - local.get $3 - f64.const 8.4784276603689e-32 - f64.mul - local.get $0 - local.get $0 - local.get $3 - f64.const 2.0222662487111665e-21 - f64.mul - local.tee $4 - f64.sub - local.tee $0 - f64.sub - local.get $4 - f64.sub - f64.sub - local.set $4 - local.get $0 - local.get $4 - f64.sub - else - local.get $1 - end - local.set $1 - end - local.get $1 - global.set $~lib/math/rempio2_y0 - local.get $0 - local.get $1 - f64.sub - local.get $4 - f64.sub - global.set $~lib/math/rempio2_y1 - local.get $3 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.1 - end - i32.const 0 - local.get $2 - call $~lib/math/pio2_large_quot - local.tee $5 - i32.sub - local.get $5 - local.get $6 - select - end - local.set $6 - global.get $~lib/math/rempio2_y0 - local.set $0 - global.get $~lib/math/rempio2_y1 - local.set $4 - local.get $6 - i32.const 1 - i32.and - if (result f64) - f64.const 1 - f64.const 0.5 - local.get $0 - local.get $0 - f64.mul - local.tee $3 - f64.mul - local.tee $1 - f64.sub - local.tee $7 - f64.const 1 - local.get $7 - f64.sub - local.get $1 - f64.sub - local.get $3 - local.get $3 - f64.const 0.0416666666666666 - local.get $3 - f64.const -0.001388888888887411 - local.get $3 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $3 - local.get $3 - f64.mul - local.tee $1 - local.get $1 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $3 - f64.const 2.087572321298175e-09 - local.get $3 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - local.get $4 - f64.mul - f64.sub - f64.add - f64.add - else - local.get $0 - local.get $0 - f64.mul - local.tee $3 - local.get $0 - f64.mul - local.tee $1 - f64.const -0.16666666666666632 - local.get $3 - f64.const 0.00833333333332249 - local.get $3 - f64.const -1.984126982985795e-04 - local.get $3 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $3 - local.get $3 - f64.mul - f64.mul - f64.const -2.5050760253406863e-08 - local.get $3 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - local.tee $7 - f64.mul - f64.add - f64.mul - drop - local.get $0 - local.get $3 - f64.const 0.5 - local.get $4 - f64.mul - local.get $1 - local.get $7 - f64.mul - f64.sub - f64.mul - local.get $4 - f64.sub - local.get $1 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - end - local.tee $0 - f64.neg - local.get $0 - local.get $6 - i32.const 2 - i32.and - select - ) - (func $std/math/test_sin (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.sin - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/sin - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.sin (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 i64) - (local $6 f64) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - (local $12 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.set $11 - local.get $1 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1061752794 - i32.le_u - if - local.get $2 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - f64.promote_f32 - local.tee $4 - local.get $4 - f64.mul - local.tee $6 - local.get $4 - f64.mul - local.set $3 - local.get $4 - local.get $3 - f64.const -0.16666666641626524 - local.get $6 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $6 - local.get $6 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $6 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.1 (result i32) - local.get $2 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $3 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $3 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $3 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.1 - end - local.get $2 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $1 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 1256 - i32.add - local.tee $10 - i64.load - local.set $7 - local.get $10 - i64.load offset=8 - local.set $8 - local.get $1 - i32.const 63 - i32.and - i64.extend_i32_s - local.tee $5 - i64.const 32 - i64.gt_u - if (result i64) - local.get $8 - local.get $5 - i64.const 32 - i64.sub - i64.shl - local.get $10 - i64.load offset=16 - i64.const 96 - local.get $5 - i64.sub - i64.shr_u - i64.or - else - local.get $8 - i64.const 32 - local.get $5 - i64.sub - i64.shr_u - end - local.set $12 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $2 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $9 - local.get $7 - local.get $5 - i64.shl - local.get $8 - i64.const 64 - local.get $5 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $9 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 2 - i64.shl - local.tee $9 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $7 - i64.const 62 - i64.shr_u - local.get $9 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $1 - i32.sub - local.get $1 - local.get $11 - select - end - local.set $1 - global.get $~lib/math/rempio2f_y - local.set $3 - local.get $1 - i32.const 1 - i32.and - if (result f32) - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $4 - f64.mul - local.set $3 - f64.const 1 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $3 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $3 - local.get $4 - f64.mul - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - else - local.get $3 - local.get $3 - local.get $3 - f64.mul - local.tee $4 - local.get $3 - f64.mul - local.tee $3 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $4 - local.get $4 - f64.mul - f64.mul - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - end - local.tee $0 - f32.neg - local.get $0 - local.get $1 - i32.const 2 - i32.and - select - ) - (func $std/math/test_sinf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.sin - local.get $1 - local.get $2 - call $std/math/check - ) - (func $~lib/math/NativeMath.sinh (param $0 f64) (result f64) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $4 - f64.reinterpret_i64 - local.set $1 - f64.const 0.5 - local.get $0 - f64.copysign - local.set $2 - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 1082535490 - i32.lt_u - if - local.get $1 - call $~lib/math/NativeMath.expm1 - local.set $1 - local.get $3 - i32.const 1072693248 - i32.lt_u - if - local.get $3 - i32.const 1045430272 - i32.lt_u - if - local.get $0 - return - end - local.get $2 - f64.const 2 - local.get $1 - f64.mul - local.get $1 - local.get $1 - f64.mul - local.get $1 - f64.const 1 - f64.add - f64.div - f64.sub - f64.mul - return - end - local.get $2 - local.get $1 - local.get $1 - local.get $1 - f64.const 1 - f64.add - f64.div - f64.add - f64.mul - return - end - local.get $1 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - f64.const 2 - local.get $2 - f64.mul - f64.const 2247116418577894884661631e283 - f64.mul - f64.mul - f64.const 2247116418577894884661631e283 - f64.mul - ) - (func $std/math/test_sinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.sinh - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/sinh - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.sinh (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - f32.reinterpret_i32 - local.set $1 - f32.const 0.5 - local.get $0 - f32.copysign - local.set $3 - local.get $2 - i32.const 1118925335 - i32.lt_u - if - local.get $1 - call $~lib/math/NativeMathf.expm1 - local.set $1 - local.get $2 - i32.const 1065353216 - i32.lt_u - if - local.get $2 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $3 - f32.const 2 - local.get $1 - f32.mul - local.get $1 - local.get $1 - f32.mul - local.get $1 - f32.const 1 - f32.add - f32.div - f32.sub - f32.mul - return - end - local.get $3 - local.get $1 - local.get $1 - local.get $1 - f32.const 1 - f32.add - f32.div - f32.add - f32.mul - return - end - local.get $1 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - f32.const 2 - local.get $3 - f32.mul - f32.const 1661534994731144841129758e11 - f32.mul - f32.mul - f32.const 1661534994731144841129758e11 - f32.mul - ) - (func $std/math/test_sinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.sinh - local.get $1 - local.get $2 - call $std/math/check - ) - (func $std/math/test_sqrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - f64.sqrt - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/sqrt - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_sqrtf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - f32.sqrt - local.get $1 - local.get $2 - call $std/math/check - ) - (func $~lib/math/tan_kern (param $0 f64) (param $1 f64) (param $2 i32) (result f64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 i32) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $6 - i32.const 2147483647 - i32.and - i32.const 1072010280 - i32.ge_s - local.tee $7 - if - f64.const 0.7853981633974483 - local.get $6 - i32.const 0 - i32.lt_s - if (result f64) - local.get $1 - f64.neg - local.set $1 - local.get $0 - f64.neg - else - local.get $0 - end - f64.sub - f64.const 3.061616997868383e-17 - local.get $1 - f64.sub - f64.add - local.set $0 - f64.const 0 - local.set $1 - end - local.get $0 - local.get $0 - f64.mul - local.tee $4 - local.get $0 - f64.mul - local.set $5 - local.get $0 - local.get $1 - local.get $4 - local.get $5 - f64.const 0.13333333333320124 - local.get $4 - local.get $4 - f64.mul - local.tee $3 - f64.const 0.021869488294859542 - local.get $3 - f64.const 3.5920791075913124e-03 - local.get $3 - f64.const 5.880412408202641e-04 - local.get $3 - f64.const 7.817944429395571e-05 - local.get $3 - f64.const -1.8558637485527546e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - f64.const 0.05396825397622605 - local.get $3 - f64.const 0.0088632398235993 - local.get $3 - f64.const 1.4562094543252903e-03 - local.get $3 - f64.const 2.464631348184699e-04 - local.get $3 - f64.const 7.140724913826082e-05 - local.get $3 - f64.const 2.590730518636337e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $1 - f64.add - f64.mul - f64.add - f64.const 0.3333333333333341 - local.get $5 - f64.mul - f64.add - local.tee $3 - f64.add - local.set $1 - local.get $7 - if - f64.const 1 - local.get $6 - i32.const 30 - i32.shr_s - i32.const 2 - i32.and - f64.convert_i32_s - f64.sub - local.get $2 - f64.convert_i32_s - local.tee $4 - f64.const 2 - local.get $0 - local.get $1 - local.get $1 - f64.mul - local.get $1 - local.get $4 - f64.add - f64.div - local.get $3 - f64.sub - f64.sub - f64.mul - f64.sub - f64.mul - return - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $1 - return - end - f64.const -1 - local.get $1 - f64.div - local.tee $5 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $4 - local.get $5 - f64.const 1 - local.get $4 - local.get $1 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $1 - f64.mul - f64.add - local.get $4 - local.get $3 - local.get $1 - local.get $0 - f64.sub - f64.sub - f64.mul - f64.add - f64.mul - f64.add - ) - (func $~lib/math/NativeMath.tan (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 i32) - (local $5 f64) - (local $6 i32) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $4 - i32.const 31 - i32.shr_u - local.set $6 - local.get $4 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1072243195 - i32.le_s - if - local.get $4 - i32.const 1044381696 - i32.lt_s - if - local.get $0 - return - end - local.get $0 - f64.const 0 - i32.const 1 - call $~lib/math/tan_kern - return - end - local.get $4 - i32.const 2146435072 - i32.ge_s - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.2 (result i32) - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1094263291 - i32.lt_u - if - local.get $4 - i32.const 20 - i32.shr_u - local.tee $6 - local.get $0 - local.get $0 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $5 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.tee $0 - local.get $5 - f64.const 6.077100506506192e-11 - f64.mul - local.tee $3 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 16 - i32.gt_u - if - local.get $5 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $0 - local.get $0 - local.get $5 - f64.const 6.077100506303966e-11 - f64.mul - local.tee $3 - f64.sub - local.tee $0 - f64.sub - local.get $3 - f64.sub - f64.sub - local.set $3 - local.get $6 - local.get $0 - local.get $3 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 49 - i32.gt_u - if (result f64) - local.get $5 - f64.const 8.4784276603689e-32 - f64.mul - local.get $0 - local.get $0 - local.get $5 - f64.const 2.0222662487111665e-21 - f64.mul - local.tee $3 - f64.sub - local.tee $0 - f64.sub - local.get $3 - f64.sub - f64.sub - local.set $3 - local.get $0 - local.get $3 - f64.sub - else - local.get $1 - end - local.set $1 - end - local.get $1 - global.set $~lib/math/rempio2_y0 - local.get $0 - local.get $1 - f64.sub - local.get $3 - f64.sub - global.set $~lib/math/rempio2_y1 - local.get $5 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.2 - end - i32.const 0 - local.get $2 - call $~lib/math/pio2_large_quot - local.tee $4 - i32.sub - local.get $4 - local.get $6 - select - end - local.set $6 - global.get $~lib/math/rempio2_y0 - global.get $~lib/math/rempio2_y1 - i32.const 1 - local.get $6 - i32.const 1 - i32.and - i32.const 1 - i32.shl - i32.sub - call $~lib/math/tan_kern - ) - (func $std/math/test_tan (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.tan - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/tan - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - (local $12 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.set $11 - local.get $1 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1061752794 - i32.le_u - if - local.get $2 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - f64.promote_f32 - local.tee $5 - local.get $5 - f64.mul - local.tee $4 - local.get $5 - f64.mul - local.set $3 - local.get $5 - local.get $3 - f64.const 0.3333313950307914 - local.get $4 - f64.const 0.13339200271297674 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $4 - local.get $4 - f64.mul - local.tee $3 - f64.mul - f64.const 0.05338123784456704 - local.get $4 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.get $3 - f64.const 0.002974357433599673 - local.get $4 - f64.const 0.009465647849436732 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.2 (result i32) - local.get $2 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $3 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $3 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $3 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.2 - end - local.get $2 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $1 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 1256 - i32.add - local.tee $10 - i64.load - local.set $7 - local.get $10 - i64.load offset=8 - local.set $8 - local.get $1 - i32.const 63 - i32.and - i64.extend_i32_s - local.tee $6 - i64.const 32 - i64.gt_u - if (result i64) - local.get $8 - local.get $6 - i64.const 32 - i64.sub - i64.shl - local.get $10 - i64.load offset=16 - i64.const 96 - local.get $6 - i64.sub - i64.shr_u - i64.or - else - local.get $8 - i64.const 32 - local.get $6 - i64.sub - i64.shr_u - end - local.set $12 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $2 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $9 - local.get $7 - local.get $6 - i64.shl - local.get $8 - i64.const 64 - local.get $6 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $9 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 2 - i64.shl - local.tee $9 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $7 - i64.const 62 - i64.shr_u - local.get $9 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $1 - i32.sub - local.get $1 - local.get $11 - select - end - local.set $1 - global.get $~lib/math/rempio2f_y - local.tee $5 - local.get $5 - f64.mul - local.tee $4 - local.get $5 - f64.mul - local.set $3 - f64.const -1 - local.get $5 - local.get $3 - f64.const 0.3333313950307914 - local.get $4 - f64.const 0.13339200271297674 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $4 - local.get $4 - f64.mul - local.tee $3 - f64.mul - f64.const 0.05338123784456704 - local.get $4 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.get $3 - f64.const 0.002974357433599673 - local.get $4 - f64.const 0.009465647849436732 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.tee $3 - f64.div - local.get $3 - local.get $1 - i32.const 1 - i32.and - select - f32.demote_f64 - ) - (func $std/math/test_tanf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.tan - local.get $1 - local.get $2 - call $std/math/check - ) - (func $~lib/math/NativeMath.tanh (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $3 - f64.reinterpret_i64 - local.set $1 - local.get $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 1071748074 - i32.gt_u - if (result f64) - local.get $2 - i32.const 1077149696 - i32.gt_u - if (result f64) - f64.const 1 - f64.const 0 - local.get $1 - f64.div - f64.sub - else - f64.const 1 - f64.const 2 - f64.const 2 - local.get $1 - f64.mul - call $~lib/math/NativeMath.expm1 - f64.const 2 - f64.add - f64.div - f64.sub - end - else - local.get $2 - i32.const 1070618798 - i32.gt_u - if (result f64) - f64.const 2 - local.get $1 - f64.mul - call $~lib/math/NativeMath.expm1 - local.tee $1 - local.get $1 - f64.const 2 - f64.add - f64.div - else - local.get $2 - i32.const 1048576 - i32.ge_u - if (result f64) - f64.const -2 - local.get $1 - f64.mul - call $~lib/math/NativeMath.expm1 - local.tee $1 - f64.neg - local.get $1 - f64.const 2 - f64.add - f64.div - else - local.get $1 - end - end - end - local.get $0 - f64.copysign - ) - (func $std/math/test_tanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - call $~lib/math/NativeMath.tanh - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/tanh - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_tanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f32) - (local $4 i32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $4 - f32.reinterpret_i32 - local.set $3 - local.get $4 - i32.const 1057791828 - i32.gt_u - if (result f32) - local.get $4 - i32.const 1092616192 - i32.gt_u - if (result f32) - f32.const 1 - f32.const 0 - local.get $3 - f32.div - f32.add - else - f32.const 1 - f32.const 2 - f32.const 2 - local.get $3 - f32.mul - call $~lib/math/NativeMathf.expm1 - f32.const 2 - f32.add - f32.div - f32.sub - end - else - local.get $4 - i32.const 1048757624 - i32.gt_u - if (result f32) - f32.const 2 - local.get $3 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.tee $3 - local.get $3 - f32.const 2 - f32.add - f32.div - else - local.get $4 - i32.const 8388608 - i32.ge_u - if (result f32) - f32.const -2 - local.get $3 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.tee $3 - f32.neg - local.get $3 - f32.const 2 - f32.add - f32.div - else - local.get $3 - end - end - end - local.get $0 - f32.copysign - local.get $1 - local.get $2 - call $std/math/check - ) - (func $std/math/test_trunc (param $0 f64) (param $1 f64) (result i32) - local.get $0 - f64.trunc - local.get $1 - f64.const 0 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/trunc - local.get $1 - f64.const 0 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_truncf (param $0 f32) (param $1 f32) (result i32) - local.get $0 - f32.trunc - local.get $1 - f32.const 0 - call $std/math/check - ) - (func $~lib/math/NativeMath.sincos (param $0 f64) - (local $1 f64) - (local $2 f64) - (local $3 i64) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 31 - i32.shr_u - local.set $6 - local.get $5 - i32.const 2147483647 - i32.and - local.tee $5 - i32.const 1072243195 - i32.le_u - if - local.get $5 - i32.const 1044816030 - i32.lt_u - if - local.get $0 - global.set $~lib/math/NativeMath.sincos_sin - f64.const 1 - global.set $~lib/math/NativeMath.sincos_cos - return - end - local.get $0 - local.get $0 - local.get $0 - f64.mul - local.tee $2 - local.get $0 - f64.mul - f64.const -0.16666666666666632 - local.get $2 - f64.const 0.00833333333332249 - local.get $2 - f64.const -1.984126982985795e-04 - local.get $2 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $2 - local.get $2 - local.get $2 - f64.mul - local.tee $4 - f64.mul - f64.const -2.5050760253406863e-08 - local.get $2 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - global.set $~lib/math/NativeMath.sincos_sin - f64.const 1 - f64.const 0.5 - local.get $2 - f64.mul - local.tee $1 - f64.sub - local.tee $7 - f64.const 1 - local.get $7 - f64.sub - local.get $1 - f64.sub - local.get $2 - local.get $2 - f64.const 0.0416666666666666 - local.get $2 - f64.const -0.001388888888887411 - local.get $2 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $4 - local.get $4 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $2 - f64.const 2.087572321298175e-09 - local.get $2 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0 - f64.mul - f64.sub - f64.add - f64.add - global.set $~lib/math/NativeMath.sincos_cos - return - end - local.get $5 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - local.tee $0 - global.set $~lib/math/NativeMath.sincos_sin - local.get $0 - global.set $~lib/math/NativeMath.sincos_cos - return - end - block $~lib/math/rempio2|inlined.3 (result i32) - local.get $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $5 - i32.const 1094263291 - i32.lt_u - if - local.get $5 - i32.const 20 - i32.shr_u - local.tee $6 - local.get $0 - local.get $0 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $2 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.tee $0 - local.get $2 - f64.const 6.077100506506192e-11 - f64.mul - local.tee $4 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 16 - i32.gt_u - if - local.get $2 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $0 - local.get $0 - local.get $2 - f64.const 6.077100506303966e-11 - f64.mul - local.tee $4 - f64.sub - local.tee $0 - f64.sub - local.get $4 - f64.sub - f64.sub - local.set $4 - local.get $6 - local.get $0 - local.get $4 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 49 - i32.gt_u - if (result f64) - local.get $2 - f64.const 8.4784276603689e-32 - f64.mul - local.get $0 - local.get $0 - local.get $2 - f64.const 2.0222662487111665e-21 - f64.mul - local.tee $4 - f64.sub - local.tee $0 - f64.sub - local.get $4 - f64.sub - f64.sub - local.set $4 - local.get $0 - local.get $4 - f64.sub - else - local.get $1 - end - local.set $1 - end - local.get $1 - global.set $~lib/math/rempio2_y0 - local.get $0 - local.get $1 - f64.sub - local.get $4 - f64.sub - global.set $~lib/math/rempio2_y1 - local.get $2 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.3 - end - i32.const 0 - local.get $3 - call $~lib/math/pio2_large_quot - local.tee $5 - i32.sub - local.get $5 - local.get $6 - select - end - local.set $6 - global.get $~lib/math/rempio2_y0 - local.tee $4 - local.get $4 - f64.mul - local.tee $2 - local.get $4 - f64.mul - local.set $0 - local.get $4 - local.get $2 - f64.const 0.5 - global.get $~lib/math/rempio2_y1 - local.tee $7 - f64.mul - local.get $0 - f64.const 0.00833333333332249 - local.get $2 - f64.const -1.984126982985795e-04 - local.get $2 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $2 - local.get $2 - local.get $2 - f64.mul - local.tee $1 - f64.mul - f64.const -2.5050760253406863e-08 - local.get $2 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.sub - f64.mul - local.get $7 - f64.sub - local.get $0 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - local.tee $8 - local.set $0 - f64.const 1 - f64.const 0.5 - local.get $2 - f64.mul - local.tee $9 - f64.sub - local.tee $10 - f64.const 1 - local.get $10 - f64.sub - local.get $9 - f64.sub - local.get $2 - local.get $2 - f64.const 0.0416666666666666 - local.get $2 - f64.const -0.001388888888887411 - local.get $2 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $1 - local.get $1 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $2 - f64.const 2.087572321298175e-09 - local.get $2 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $4 - local.get $7 - f64.mul - f64.sub - f64.add - f64.add - local.tee $2 - local.set $4 - local.get $6 - i32.const 1 - i32.and - if - local.get $8 - f64.neg - local.set $4 - local.get $2 - local.set $0 - end - local.get $6 - i32.const 2 - i32.and - if (result f64) - local.get $4 - f64.neg - local.set $4 - local.get $0 - f64.neg - else - local.get $0 - end - global.set $~lib/math/NativeMath.sincos_sin - local.get $4 - global.set $~lib/math/NativeMath.sincos_cos - ) - (func $std/math/test_sincos (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) - (local $5 f64) - (local $6 f64) - local.get $3 - f64.reinterpret_i64 - local.set $5 - local.get $4 - f64.reinterpret_i64 - local.set $6 - local.get $0 - f64.reinterpret_i64 - call $~lib/math/NativeMath.sincos - global.get $~lib/math/NativeMath.sincos_sin - local.get $1 - f64.reinterpret_i64 - local.get $2 - f64.reinterpret_i64 - call $std/math/check - if - global.get $~lib/math/NativeMath.sincos_cos - local.get $5 - local.get $6 - call $std/math/check - drop - end - ) - (func $~lib/math/dtoi32 (param $0 f64) (result i32) - local.get $0 - f64.const 4294967296 - local.get $0 - f64.const 2.3283064365386963e-10 - f64.mul - f64.floor - f64.mul - f64.sub - i64.trunc_f64_s - i32.wrap_i64 - ) - (func $~lib/math/NativeMath.imul (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - local.get $0 - local.get $1 - f64.add - local.tee $2 - local.get $2 - f64.sub - f64.const 0 - f64.ne - if - f64.const 0 - return - end - local.get $0 - call $~lib/math/dtoi32 - local.get $1 - call $~lib/math/dtoi32 - i32.mul - f64.convert_i32_s - ) - (func $~lib/math/NativeMath.clz32 (param $0 f64) (result f64) - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne - if - f64.const 32 - return - end - local.get $0 - call $~lib/math/dtoi32 - i32.clz - f64.convert_i32_s - ) - (func $~lib/math/ipow64 (param $0 i64) (param $1 i64) (result i64) - (local $2 i64) - i64.const 1 - local.set $2 - loop $while-continue|0 - local.get $1 - i64.const 0 - i64.ne - if - local.get $0 - local.get $2 - i64.mul - local.get $2 - local.get $1 - i64.const 1 - i64.and - i64.const 0 - i64.ne - select - local.set $2 - local.get $1 - i64.const 1 - i64.shr_u - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - br $while-continue|0 - end - end - local.get $2 - ) - (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - i32.const 1 - local.set $2 - loop $while-continue|0 - local.get $1 - if - local.get $0 - local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 - i32.and - select - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - br $while-continue|0 - end - end - local.get $2 - ) - (func $start:std/math - (local $0 f64) - (local $1 i32) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 f32) - f64.const 2.718281828459045 - global.get $~lib/bindings/Math/E - f64.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6931471805599453 - global.get $~lib/bindings/Math/LN2 - f64.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 112 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.302585092994046 - global.get $~lib/bindings/Math/LN10 - f64.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.4426950408889634 - global.get $~lib/bindings/Math/LOG2E - f64.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.141592653589793 - global.get $~lib/bindings/Math/PI - f64.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7071067811865476 - global.get $~lib/bindings/Math/SQRT1_2 - f64.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.4142135623730951 - global.get $~lib/bindings/Math/SQRT2 - f64.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.7182817459106445 - global.get $~lib/bindings/Math/E - f32.demote_f64 - f32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6931471824645996 - global.get $~lib/bindings/Math/LN2 - f32.demote_f64 - f32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3025851249694824 - global.get $~lib/bindings/Math/LN10 - f32.demote_f64 - f32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.4426950216293335 - global.get $~lib/bindings/Math/LOG2E - f32.demote_f64 - f32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 122 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3.1415927410125732 - global.get $~lib/bindings/Math/PI - f32.demote_f64 - f32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7071067690849304 - global.get $~lib/bindings/Math/SQRT1_2 - f32.demote_f64 - f32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 124 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.4142135381698608 - global.get $~lib/bindings/Math/SQRT2 - f32.demote_f64 - f32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 125 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - i32.const -2 - f64.const -2.01671209764492 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 136 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - i32.const -1 - f64.const 2.1726199246691524 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - i32.const 0 - f64.const -8.38143342755525 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 138 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - i32.const 1 - f64.const -13.063347163826968 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 139 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - i32.const 2 - f64.const 37.06822786789034 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - i32.const 3 - f64.const 5.295887184796036 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 141 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - i32.const 4 - f64.const -6.505662758165685 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 142 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - i32.const 5 - f64.const 17.97631187906317 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - i32.const 6 - f64.const 49.545746981843436 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 144 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - i32.const 7 - f64.const -86.88175393784351 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 145 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - i32.const 2147483647 - f64.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 148 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - i32.const -2147483647 - f64.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 149 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - i32.const 2147483647 - f64.const -0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 150 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - i32.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - i32.const 0 - f64.const inf - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 152 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - i32.const 0 - f64.const -inf - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 153 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - i32.const 0 - f64.const 1 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 154 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - i32.const 1 - f64.const 2 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 155 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - i32.const -1 - f64.const 0.5 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - i32.const 2147483647 - f64.const inf - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - i32.const 1 - f64.const nan:0x8000000000000 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 158 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - i32.const 2147483647 - f64.const inf - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 159 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - i32.const -2147483647 - f64.const inf - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 160 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - i32.const 2147483647 - f64.const -inf - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 161 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8988465674311579538646525e283 - i32.const -2097 - f64.const 5e-324 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - i32.const 2097 - f64.const 8988465674311579538646525e283 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.000244140625 - i32.const -1074 - f64.const 5e-324 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 164 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7499999999999999 - i32.const -1073 - f64.const 5e-324 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 165 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5000000000000012 - i32.const -1024 - f64.const 2.781342323134007e-309 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 166 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - i32.const -2 - f32.const -2.016712188720703 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 175 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - i32.const -1 - f32.const 2.1726198196411133 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 176 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - i32.const 0 - f32.const -8.381433486938477 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - i32.const 1 - f32.const -13.063346862792969 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 178 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - i32.const 2 - f32.const 37.06822967529297 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 179 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - i32.const 3 - f32.const 5.295886993408203 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 180 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - i32.const 4 - f32.const -6.50566291809082 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 181 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - i32.const 5 - f32.const 17.9763126373291 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 182 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - i32.const 6 - f32.const 49.545745849609375 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 183 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - i32.const 7 - f32.const -86.88175201416016 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 184 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - i32.const 2147483647 - f32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 187 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - i32.const -2147483647 - f32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 188 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - i32.const 2147483647 - f32.const -0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 189 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - i32.const 0 - f32.const nan:0x400000 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 190 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - i32.const 0 - f32.const inf - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 191 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - i32.const 0 - f32.const -inf - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 192 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - i32.const 0 - f32.const 1 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - i32.const 1 - f32.const 2 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 194 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - i32.const -1 - f32.const 0.5 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 195 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - i32.const 2147483647 - f32.const inf - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 196 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - i32.const 1 - f32.const nan:0x400000 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 197 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - i32.const 2147483647 - f32.const inf - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 198 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - i32.const -2147483647 - f32.const inf - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - i32.const 2147483647 - f32.const -inf - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 200 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1701411834604692317316873e14 - i32.const -276 - f32.const 1.401298464324817e-45 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 201 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - i32.const 276 - f32.const 1701411834604692317316873e14 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 202 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.000244140625 - i32.const -149 - f32.const 1.401298464324817e-45 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 203 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7499999403953552 - i32.const -148 - f32.const 1.401298464324817e-45 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 204 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5000006556510925 - i32.const -128 - f32.const 1.4693693398263237e-39 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 8.06684839057968 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 217 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 4.345239849338305 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 218 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const 8.38143342755525 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 219 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 6.531673581913484 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 220 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 9.267056966972586 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 221 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.6619858980995045 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 222 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const 0.4066039223853553 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 223 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5617597462207241 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 224 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.7741522965913037 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 225 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const 0.6787637026394024 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 226 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 229 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 230 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 231 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 232 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 233 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const inf - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 234 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 235 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 8.066848754882812 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 244 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 4.345239639282227 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 245 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const 8.381433486938477 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 246 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 6.531673431396484 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 247 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 9.267057418823242 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 248 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.6619858741760254 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 249 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const 0.40660393238067627 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 250 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.5617597699165344 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 251 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.7741522789001465 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 252 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const 0.6787636876106262 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 253 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 256 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 257 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 258 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 1 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 259 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 260 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const inf - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 261 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 262 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 274 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 275 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 276 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 277 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 278 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.8473310828433507 - f64.const -0.41553276777267456 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const 1.989530071088669 - f64.const 0.4973946213722229 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 280 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.9742849645674904 - f64.const -0.4428897500038147 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 281 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.6854215158636222 - f64.const -0.12589527666568756 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 282 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const 2.316874138205964 - f64.const -0.17284949123859406 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 283 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1.5707963267948966 - f64.const -0.27576595544815063 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 286 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 3.141592653589793 - f64.const -0.27576595544815063 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 287 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 0 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 288 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000000000000002 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 289 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000000000000002 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 290 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 291 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 293 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5309227209592985 - f64.const 2.1304853799705463 - f64.const 0.1391008496284485 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 294 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.4939556746399746 - f64.const 1.0541629875851946 - f64.const 0.22054767608642578 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 295 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 304 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 305 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 306 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 307 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 308 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.8473311066627502 - f32.const -0.13588131964206696 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 309 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const 1.989530086517334 - f32.const 0.03764917701482773 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 310 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.9742849469184875 - f32.const 0.18443739414215088 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 311 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.6854215264320374 - f32.const -0.29158344864845276 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 312 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const 2.3168740272521973 - f32.const -0.3795364499092102 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 313 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1.5707963705062866 - f32.const 0.3666777014732361 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 316 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 3.1415927410125732 - f32.const 0.3666777014732361 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 317 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 0 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 318 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000001192092896 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 319 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000001192092896 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 320 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 321 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 322 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 323 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.49965065717697144 - f32.const 1.0476008653640747 - f32.const -0.21161814033985138 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 324 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5051405429840088 - f32.const 2.1003410816192627 - f32.const -0.20852705836296082 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 325 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5189794898033142 - f32.const 2.116452932357788 - f32.const -0.14600826799869537 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 326 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 338 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 2.1487163980597503 - f64.const -0.291634738445282 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 339 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 340 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 341 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 2.91668914109908 - f64.const -0.24191908538341522 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 342 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 343 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 344 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 345 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 346 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 347 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 350 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 351 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 352 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 353 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 354 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 355 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 356 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1060831199926429 - f64.const 0.4566373404384803 - f64.const -0.29381608963012695 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 372 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1089809557628658 - f64.const 0.4627246859959428 - f64.const -0.3990095555782318 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 374 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1169429159875521 - f64.const 0.47902433134075284 - f64.const -0.321674108505249 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 375 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 384 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 2.148716449737549 - f32.const 0.4251045286655426 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 385 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 387 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 2.916689157485962 - f32.const -0.1369788944721222 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 388 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 389 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 390 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 391 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 392 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 393 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 396 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 397 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 398 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 399 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 400 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 401 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 402 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1125899906842624 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 403 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 415 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 416 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 417 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 418 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 419 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.7234652439515459 - f64.const -0.13599912822246552 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 420 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.41873374429377225 - f64.const -0.09264230728149414 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 421 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5965113622274062 - f64.const -0.10864213854074478 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 422 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.8853748109312743 - f64.const -0.4256366193294525 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 423 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.7460778114110673 - f64.const 0.13986606895923615 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 424 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1.5707963267948966 - f64.const -0.27576595544815063 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 427 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1.5707963267948966 - f64.const 0.27576595544815063 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 428 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 429 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 430 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000000000000002 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 431 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000000000000002 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 432 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 433 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 434 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 435 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5073043929119148 - f64.const 0.5320538997772349 - f64.const -0.16157317161560059 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 436 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 445 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 446 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 447 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 448 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 449 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.7234652042388916 - f32.const -0.1307632476091385 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 450 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.41873374581336975 - f32.const 0.3161141574382782 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 451 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.5965113639831543 - f32.const -0.4510819613933563 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 452 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.8853747844696045 - f32.const 0.02493886835873127 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 453 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.7460777759552002 - f32.const 0.2515012323856354 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 454 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1.5707963705062866 - f32.const 0.3666777014732361 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 457 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1.5707963705062866 - f32.const -0.3666777014732361 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 458 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 459 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 460 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000001192092896 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 461 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000001192092896 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 462 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 463 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 464 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 465 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5004770159721375 - f32.const 0.5241496562957764 - f32.const -0.29427099227905273 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 466 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -2.784729878387861 - f64.const -0.4762189984321594 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 478 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 2.175213389013164 - f64.const -0.02728751301765442 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 479 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.822706083697696 - f64.const 0.20985257625579834 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 480 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -2.575619446591922 - f64.const 0.3113134205341339 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 481 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 2.9225114951048674 - f64.const 0.4991756081581116 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 482 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.6212462762707166 - f64.const -0.4697347581386566 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 483 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.39615990393192035 - f64.const -0.40814438462257385 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 484 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5357588870255474 - f64.const 0.3520713150501251 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 485 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.7123571263197349 - f64.const 0.13371451199054718 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 486 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.635182348903198 - f64.const 0.04749670997262001 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 487 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 490 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 491 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - f64.const 0 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 492 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 493 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 494 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -2.7847299575805664 - f32.const -0.14418013393878937 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 523 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 2.17521333694458 - f32.const -0.020796965807676315 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 524 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.8227059841156006 - f32.const 0.44718533754348755 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 525 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -2.5756194591522217 - f32.const -0.14822272956371307 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 526 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 2.922511577606201 - f32.const 0.14270681142807007 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 527 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.6212462782859802 - f32.const 0.3684912919998169 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 528 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.39615991711616516 - f32.const -0.13170306384563446 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 529 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.535758912563324 - f32.const 0.08184859901666641 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 530 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.7123571038246155 - f32.const -0.14270737767219543 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 531 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.6351823210716248 - f32.const 0.2583143711090088 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 532 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 535 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 536 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - f32.const 0 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 537 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 538 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 539 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -1.4474613762633468 - f64.const 0.14857111871242523 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 551 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 1.344597927114538 - f64.const -0.08170335739850998 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 552 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -1.4520463463295539 - f64.const -0.07505480200052261 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 553 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -1.4188758658752532 - f64.const -0.057633496820926666 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 554 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 1.463303145448706 - f64.const 0.1606956422328949 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 555 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.5847550670238325 - f64.const 0.4582556486129761 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 556 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.3861864177552131 - f64.const -0.2574281692504883 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 557 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5118269531628881 - f64.const -0.11444277316331863 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 558 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.6587802431653822 - f64.const -0.11286488175392151 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 559 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.5963307826973472 - f64.const -0.2182842344045639 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 560 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 563 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 564 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0.7853981633974483 - f64.const -0.27576595544815063 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 565 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0.7853981633974483 - f64.const 0.27576595544815063 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 566 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1.5707963267948966 - f64.const -0.27576595544815063 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 567 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -1.5707963267948966 - f64.const 0.27576595544815063 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 568 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 569 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6929821535674624 - f64.const 0.6060004555152562 - f64.const -0.17075790464878082 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 570 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -1.4474613666534424 - f32.const 0.12686480581760406 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 579 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 1.3445979356765747 - f32.const 0.16045434772968292 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 580 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -1.4520463943481445 - f32.const -0.39581751823425293 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 581 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -1.418875813484192 - f32.const 0.410570353269577 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 582 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 1.4633032083511353 - f32.const 0.48403501510620117 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 583 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.5847550630569458 - f32.const 0.2125193476676941 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 584 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.386186420917511 - f32.const 0.18169628083705902 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 585 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.5118269920349121 - f32.const 0.3499770760536194 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 586 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.6587802171707153 - f32.const -0.2505330741405487 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 587 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.5963307619094849 - f32.const 0.17614826560020447 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 588 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 591 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 592 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0.7853981852531433 - f32.const 0.3666777014732361 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 593 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0.7853981852531433 - f32.const -0.3666777014732361 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 594 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1.5707963705062866 - f32.const 0.3666777014732361 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 595 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -1.5707963705062866 - f32.const -0.3666777014732361 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 596 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 597 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 609 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 610 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 611 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 612 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 613 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.7963404371347943 - f64.const 0.21338365972042084 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 614 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.43153570730602897 - f64.const -0.4325666129589081 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 615 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.6354006111644578 - f64.const -0.06527865678071976 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 616 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 1.0306085575277995 - f64.const 0.14632052183151245 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 617 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.8268179645205255 - f64.const 0.1397128701210022 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 618 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 621 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 622 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 623 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 624 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 625 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 626 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -inf - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 627 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 628 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 629 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.3552527156068805e-20 - f64.const 1.3552527156068805e-20 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 630 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.332636185032189e-302 - f64.const 9.332636185032189e-302 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 631 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.562684646268003e-309 - f64.const 5.562684646268003e-309 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 632 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5.562684646268003e-309 - f64.const -5.562684646268003e-309 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 633 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8988465674311579538646525e283 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 634 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 643 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 644 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 645 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 646 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 647 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.7963404059410095 - f32.const 0.19112196564674377 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 648 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.4315357208251953 - f32.const -0.05180925130844116 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 649 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.635400652885437 - f32.const 0.11911056190729141 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 650 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 1.0306085348129272 - f32.const 0.1798270344734192 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 651 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.8268179297447205 - f32.const 0.11588983237743378 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 652 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 655 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 656 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 657 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 658 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 659 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 660 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -inf - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 661 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 662 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 663 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.3552527156068805e-20 - f32.const 1.3552527156068805e-20 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 664 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 7.888609052210118e-31 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 665 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.938735877055719e-39 - f32.const 2.938735877055719e-39 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 666 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.938735877055719e-39 - f32.const -2.938735877055719e-39 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 667 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1701411834604692317316873e14 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 668 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const -1.0585895402489023 - f64.const 0.09766263514757156 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 680 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const 2.6868734126013067 - f64.const 0.35833948850631714 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 681 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const -1.889300091849528 - f64.const -0.46235957741737366 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 682 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const -0.9605469021111489 - f64.const -0.21524477005004883 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 683 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const 1.0919123946142109 - f64.const 0.3894443213939667 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 684 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const -1.468508500616424 - f64.const -0.448591411113739 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 685 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const 1.5641600512601268 - f64.const 0.3784842789173126 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 686 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const -0.10281658910678508 - f64.const -0.13993260264396667 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 687 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 0.29697974004493516 - f64.const 0.44753071665763855 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 688 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const -1.5131612053303916 - f64.const 0.39708876609802246 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 689 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 692 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const 3.141592653589793 - f64.const -0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 693 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const 3.141592653589793 - f64.const -0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 694 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -inf - f64.const 3.141592653589793 - f64.const -0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 695 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - f64.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 696 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const 0 - f64.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 697 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const -0 - f64.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 698 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const -3.141592653589793 - f64.const 0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 699 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const -3.141592653589793 - f64.const 0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 700 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -inf - f64.const -3.141592653589793 - f64.const 0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 701 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const -0 - f64.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 702 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const -0 - f64.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 703 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const -1.5707963267948966 - f64.const 0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 704 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const -1.5707963267948966 - f64.const 0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 705 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 1.5707963267948966 - f64.const -0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 706 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -0 - f64.const 1.5707963267948966 - f64.const -0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 707 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const -0 - f64.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 708 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const 0 - f64.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 709 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -inf - f64.const -3.141592653589793 - f64.const 0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 710 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -inf - f64.const 3.141592653589793 - f64.const -0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 711 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const 1.5707963267948966 - f64.const -0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 712 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 0 - f64.const -1.5707963267948966 - f64.const 0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 713 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0.7853981633974483 - f64.const -0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 714 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -inf - f64.const 2.356194490192345 - f64.const -0.20682445168495178 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 715 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const inf - f64.const -0.7853981633974483 - f64.const 0.27576595544815063 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 716 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - f64.const -2.356194490192345 - f64.const 0.20682445168495178 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 717 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1125369292536007e-308 - f64.const 1 - f64.const 1.1125369292536007e-308 - f64.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 718 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 8988465674311579538646525e283 - f64.const 1.1125369292536007e-308 - f64.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 719 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 8988465674311579538646525e283 - f64.const 1.668805393880401e-308 - f64.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 720 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const -8988465674311579538646525e283 - f64.const 3.141592653589793 - f64.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 721 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const -1.0585895776748657 - f32.const -0.22352588176727295 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 730 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const 2.686873435974121 - f32.const 0.09464472532272339 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 731 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const -1.8893001079559326 - f32.const -0.21941901743412018 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 732 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const -0.9605468511581421 - f32.const 0.46015575528144836 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 733 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const 1.0919123888015747 - f32.const -0.05708503723144531 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 734 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const -1.4685084819793701 - f32.const 0.19611206650733948 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 735 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const 1.5641601085662842 - f32.const 0.48143187165260315 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 736 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const -0.10281659662723541 - f32.const -0.4216274917125702 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 737 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 0.29697975516319275 - f32.const 0.2322007566690445 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 738 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const -1.5131611824035645 - f32.const 0.16620726883411407 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 739 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 742 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const 3.1415927410125732 - f32.const 0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 743 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -1 - f32.const 3.1415927410125732 - f32.const 0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 744 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -inf - f32.const 3.1415927410125732 - f32.const 0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 745 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - f32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 746 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - f32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 747 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const -0 - f32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 748 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const -3.1415927410125732 - f32.const -0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 749 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const -3.1415927410125732 - f32.const -0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 750 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -inf - f32.const -3.1415927410125732 - f32.const -0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 751 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const -0 - f32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 752 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const -0 - f32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 753 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const -1.5707963705062866 - f32.const -0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 754 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const -1.5707963705062866 - f32.const -0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 755 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 1.5707963705062866 - f32.const 0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 756 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -0 - f32.const 1.5707963705062866 - f32.const 0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 757 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const -0 - f32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 758 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const 0 - f32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 759 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -inf - f32.const -3.1415927410125732 - f32.const -0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 760 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -inf - f32.const 3.1415927410125732 - f32.const 0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 761 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const 1.5707963705062866 - f32.const 0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 762 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 0 - f32.const -1.5707963705062866 - f32.const -0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 763 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0.7853981852531433 - f32.const 0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 764 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -inf - f32.const 2.356194496154785 - f32.const 0.02500828728079796 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 765 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const inf - f32.const -0.7853981852531433 - f32.const -0.3666777014732361 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 766 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - f32.const -2.356194496154785 - f32.const -0.02500828728079796 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 767 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.877471754111438e-39 - f32.const 1 - f32.const 5.877471754111438e-39 - f32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 768 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1701411834604692317316873e14 - f32.const 5.877471754111438e-39 - f32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 769 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -2.0055552545020245 - f64.const 0.46667951345443726 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 781 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 1.6318162410515635 - f64.const -0.08160271495580673 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 782 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.031293910673361 - f64.const -0.048101816326379776 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 783 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -1.8692820012204925 - f64.const 0.08624018728733063 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 784 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 2.100457720859702 - f64.const -0.2722989022731781 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 785 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.8715311470455973 - f64.const 0.4414918124675751 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 786 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.740839030300223 - f64.const 0.016453813761472702 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 787 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.8251195400559286 - f64.const 0.30680638551712036 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 788 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.9182102478959914 - f64.const 0.06543998420238495 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 789 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.8788326906580094 - f64.const -0.2016713172197342 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 790 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 793 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 794 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - f64.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 795 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 796 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 797 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.313225746154785e-10 - f64.const 0.0009765625 - f64.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 798 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9.313225746154785e-10 - f64.const -0.0009765625 - f64.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 799 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 800 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 801 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8 - f64.const 2 - f64.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 802 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -2.0055553913116455 - f32.const -0.44719240069389343 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 811 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 1.6318162679672241 - f32.const 0.44636252522468567 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 812 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.0312938690185547 - f32.const 0.19483426213264465 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 813 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -1.8692820072174072 - f32.const -0.17075514793395996 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 814 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 2.1004576683044434 - f32.const -0.36362043023109436 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 815 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.8715311288833618 - f32.const -0.12857209146022797 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 816 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.7408390641212463 - f32.const -0.4655757546424866 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 817 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.8251195549964905 - f32.const 0.05601907894015312 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 818 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.9182102680206299 - f32.const 0.45498204231262207 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 819 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.8788326978683472 - f32.const -0.22978967428207397 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 820 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 823 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 824 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - f32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 825 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 826 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 827 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.313225746154785e-10 - f32.const 0.0009765625 - f32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 828 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -9.313225746154785e-10 - f32.const -0.0009765625 - f32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 829 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 830 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 831 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 8 - f32.const 2 - f32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 832 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -8 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 844 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 5 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 845 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -8 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 846 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -6 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 847 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 10 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 848 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 849 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 850 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 851 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 852 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 853 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 856 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 857 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 858 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 859 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 860 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 861 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 862 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 863 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 864 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const 2 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 865 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const -1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 866 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 867 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.9999923706054688 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 868 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.888609052210118e-31 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 869 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 870 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 871 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 872 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 873 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 874 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 875 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 876 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 877 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 878 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 879 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const 2 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 880 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const -1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 881 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 882 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.9999923706054688 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 883 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.888609052210118e-31 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 884 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 885 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 886 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 887 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 888 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 889 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 890 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 891 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 892 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 893 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 894 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const 2 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 895 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const -1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 896 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 897 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.9999923706054688 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 898 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.888609052210118e-31 - f64.const 1 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 899 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 900 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -8 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 909 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 5 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 910 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -8 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 911 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -6 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 912 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 10 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 913 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 914 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 915 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 916 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 917 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 918 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 921 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 922 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 923 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 924 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 925 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 926 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 927 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 928 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 929 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const 2 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 930 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const -1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 931 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 932 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.9999923706054688 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 933 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 934 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 935 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 936 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 937 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 938 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 939 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 940 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 941 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 942 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 943 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 944 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const 2 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 945 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const -1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 946 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 947 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.9999923706054688 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 948 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 949 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 950 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 951 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 952 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 953 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 954 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 955 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 956 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 957 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 958 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 959 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const 2 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 960 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const -1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 961 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 962 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.9999923706054688 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 963 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 1 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 964 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 965 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -0.21126281599887137 - f64.const -0.10962469130754471 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 976 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -0.35895602297578955 - f64.const -0.10759828239679337 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 977 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -0.503333091765516 - f64.const -0.021430473774671555 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 978 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 0.9692853212503283 - f64.const -0.4787876307964325 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 979 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const -0.9875878064788627 - f64.const 0.4880668818950653 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 980 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.7887730869248576 - f64.const 0.12708666920661926 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 981 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const 0.9184692397007294 - f64.const -0.26120713353157043 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 982 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.8463190467415896 - f64.const -0.302586168050766 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 983 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.7150139289952383 - f64.const -0.08537746220827103 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 984 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const 0.7783494994757447 - f64.const 0.30890750885009766 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 985 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 988 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 989 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 990 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 991 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 992 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0.5403023058681398 - f64.const 0.4288286566734314 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 993 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - f64.const -0.4161468365471424 - f64.const -0.35859397053718567 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 994 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3 - f64.const -0.9899924966004454 - f64.const 0.3788451552391052 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 995 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4 - f64.const -0.6536436208636119 - f64.const -0.23280560970306396 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 996 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5 - f64.const 0.28366218546322625 - f64.const -0.3277357816696167 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 997 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.1 - f64.const 0.9950041652780258 - f64.const 0.49558526277542114 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 998 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.2 - f64.const 0.9800665778412416 - f64.const -0.02407640963792801 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 999 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.3 - f64.const 0.955336489125606 - f64.const -0.37772229313850403 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1000 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.4 - f64.const 0.9210609940028851 - f64.const 0.25818485021591187 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1001 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 0.8775825618903728 - f64.const 0.3839152157306671 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1002 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3641409746639015e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1003 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1820704873319507e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1004 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1005 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5e-324 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1006 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3.14 - f64.const -0.9999987317275395 - f64.const 0.3855516016483307 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1007 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8988465674311579538646525e283 - f64.const -0.826369834614148 - f64.const -0.3695965111255646 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1008 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const -0.9999876894265599 - f64.const 0.23448343575000763 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1009 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8988465674311579538646525e283 - f64.const -0.826369834614148 - f64.const -0.3695965111255646 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1010 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.14 - f64.const -0.9999987317275395 - f64.const 0.3855516016483307 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1011 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.1415 - f64.const -0.9999999957076562 - f64.const -0.30608975887298584 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1012 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.141592 - f64.const -0.9999999999997864 - f64.const 0.15403328835964203 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1013 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.14159265 - f64.const -1 - f64.const -0.02901807427406311 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1014 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.1415926535 - f64.const -1 - f64.const -1.8155848010792397e-05 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1015 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.141592653589 - f64.const -1 - f64.const -1.4169914130945926e-09 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1016 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.14159265358979 - f64.const -1 - f64.const -2.350864897985184e-14 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1017 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.141592653589793 - f64.const -1 - f64.const -3.377158741883318e-17 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1018 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.57 - f64.const 7.963267107332633e-04 - f64.const 0.2968159317970276 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1019 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.570796 - f64.const 3.2679489653813835e-07 - f64.const -0.32570895552635193 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1020 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5707963267 - f64.const 9.489659630678013e-11 - f64.const -0.27245646715164185 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1021 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.57079632679489 - f64.const 6.722570487708307e-15 - f64.const -0.10747683793306351 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1022 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5707963267948966 - f64.const 6.123233995736766e-17 - f64.const 0.12148229777812958 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1023 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6700635199486106 - f64.const 0.7837822193016158 - f64.const -0.07278502732515335 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1024 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5343890189437553 - f64.const 0.8605799719039517 - f64.const -0.48434028029441833 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1025 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.43999702754890085 - f64.const 0.9047529293001976 - f64.const 0.029777472838759422 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1026 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9902840844687313 - f64.const 0.5484523364480768 - f64.const 0.19765280187129974 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1027 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.45381447534338915 - f64.const 0.8987813902263783 - f64.const -0.017724866047501564 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1028 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.4609888813583589 - f64.const 0.8956130474713057 - f64.const 0.36449819803237915 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1029 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9285434097956422 - f64.const 0.5990009794292984 - f64.const -0.2899416387081146 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1030 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9109092124488352 - f64.const 0.6130276692774378 - f64.const -0.49353134632110596 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1031 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.8328600650359556 - f64.const 0.6727624710046357 - f64.const -0.36606088280677795 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1032 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9536201252203433 - f64.const 0.5787346183487084 - f64.const -0.17089833319187164 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1033 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.8726590065457699 - f64.const 0.6427919144259047 - f64.const -0.2744986116886139 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1034 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.18100447535968447 - f64.const 0.9836633656884893 - f64.const 3.0195272993296385e-03 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1035 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.356194490349839 - f64.const -0.7071067812979126 - f64.const -0.48278746008872986 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1036 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.356194490372272 - f64.const -0.7071067813137752 - f64.const -0.4866050183773041 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1037 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3561944902251115 - f64.const -0.707106781209717 - f64.const -0.3533952236175537 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1038 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3561944903149996 - f64.const -0.7071067812732775 - f64.const -0.41911986470222473 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1039 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3561944903603527 - f64.const -0.707106781305347 - f64.const -0.4706200063228607 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1040 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3561944903826197 - f64.const -0.7071067813210922 - f64.const -0.30618351697921753 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1041 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.356194490371803 - f64.const -0.7071067813134436 - f64.const -0.30564820766448975 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1042 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.356194490399931 - f64.const -0.7071067813333329 - f64.const -0.38845571875572205 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1043 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.356194490260191 - f64.const -0.707106781234522 - f64.const -0.23796851933002472 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1044 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3561944904043153 - f64.const -0.7071067813364332 - f64.const -0.3274589478969574 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1045 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0943951024759446 - f64.const -0.5000000000716629 - f64.const -0.41711342334747314 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1046 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.09439510243324 - f64.const -0.5000000000346797 - f64.const -0.3566164970397949 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1047 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0943951025133885 - f64.const -0.5000000001040902 - f64.const -0.2253485918045044 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1048 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0943951025466707 - f64.const -0.5000000001329135 - f64.const -0.12982259690761566 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1049 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.094395102413896 - f64.const -0.5000000000179272 - f64.const -0.15886764228343964 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1050 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0943951024223404 - f64.const -0.5000000000252403 - f64.const -0.266656756401062 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1051 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0943951024960477 - f64.const -0.5000000000890726 - f64.const -0.4652077853679657 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1052 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0943951025173315 - f64.const -0.500000000107505 - f64.const -0.46710994839668274 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1053 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.094395102405924 - f64.const -0.5000000000110234 - f64.const -0.2469603717327118 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1054 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.094395102428558 - f64.const -0.500000000030625 - f64.const -0.3799441158771515 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1055 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.513210770864056 - f64.const -0.6125076939987759 - f64.const 0.4989966154098511 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1056 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 6.802886129801017 - f64.const 0.8679677961345452 - f64.const 0.4972165524959564 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1057 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.171925393086408 - f64.const -0.9682027440424544 - f64.const -0.49827584624290466 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1058 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.854690112888573 - f64.const -0.8418535663818527 - f64.const 0.4974979758262634 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1059 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.213510813859608 - f64.const -0.9777659802838506 - f64.const -0.4995604455471039 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1060 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.782449081542151 - f64.const 0.07147156381293339 - f64.const 0.49858126044273376 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1061 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.500261332273616 - f64.const 0.34639017633458113 - f64.const -0.4996210038661957 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1062 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.121739418731588 - f64.const -0.9544341297541811 - f64.const 0.4982815086841583 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1063 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 6.784954020476316 - f64.const 0.8767332233166646 - f64.const -0.4988083839416504 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1064 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.770846542666664 - f64.const -0.7936984117400705 - f64.const 0.4999682903289795 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1065 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.313225746154785e-10 - f64.const 1 - f64.const 0.001953125 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1068 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9.313225746154785e-10 - f64.const 1 - f64.const 0.001953125 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1069 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1070 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072014e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1071 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1072 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5e-324 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1073 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1074 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1075 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-323 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1076 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.4e-323 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1077 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.562684646268003e-309 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1078 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1125369292536007e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1079 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072004e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1080 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507201e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1081 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507202e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1082 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072024e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1083 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.4501477170144003e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1084 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.450147717014403e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1085 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.450147717014406e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1086 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.900295434028806e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1087 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.450580596923828e-09 - f64.const 1 - f64.const 0.125 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1088 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.4901161193847656e-08 - f64.const 0.9999999999999999 - f64.const -1.850372590034581e-17 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1089 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.470348358154297e-08 - f64.const 0.999999999999999 - f64.const -1.4988010832439613e-15 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1090 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e-323 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1091 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.4e-323 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1092 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5.562684646268003e-309 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1093 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.1125369292536007e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1094 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072004e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1095 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507201e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1096 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507202e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1097 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072024e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1098 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.4501477170144003e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1099 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.450147717014403e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.450147717014406e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.900295434028806e-308 - f64.const 1 - f64.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.450580596923828e-09 - f64.const 1 - f64.const 0.125 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.4901161193847656e-08 - f64.const 0.9999999999999999 - f64.const -1.850372590034581e-17 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.470348358154297e-08 - f64.const 0.999999999999999 - f64.const -1.4988010832439613e-15 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5707963267948966 - call $~lib/math/NativeMath.cos - f64.const 1.5707963267948966 - call $~lib/bindings/Math/cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.141592653589793 - call $~lib/math/NativeMath.cos - f64.const 3.141592653589793 - call $~lib/bindings/Math/cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3141592653589793231804887e66 - call $~lib/math/NativeMath.cos - f64.const 3141592653589793231804887e66 - call $~lib/bindings/Math/cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1109 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3283064365386963e-10 - call $~lib/math/NativeMath.cos - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.3283064365386963e-10 - call $~lib/math/NativeMath.cos - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.15707963267948966 - call $~lib/math/NativeMath.cos - f64.const 0.9876883405951378 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7812504768371582 - call $~lib/math/NativeMath.cos - f64.const 0.7100335477927638 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.78125 - call $~lib/math/NativeMath.cos - f64.const 0.7100338835660797 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9238795325112867 - f64.const 0.39269908169872414 - call $~lib/math/NativeMath.cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9238795325112867 - f64.const -0.39269908169872414 - call $~lib/math/NativeMath.cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1125 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.725290298461914e-09 - call $~lib/math/NativeMath.cos - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1128 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9689124217106447 - f64.const 0.25 - call $~lib/math/NativeMath.cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1130 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.8775825618903728 - f64.const 0.5 - call $~lib/math/NativeMath.cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1131 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7073882691671998 - f64.const 0.785 - call $~lib/math/NativeMath.cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1132 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 6.123233995736766e-17 - f64.const 1.5707963267948966 - call $~lib/math/NativeMath.cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1134 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7071067811865474 - f64.const 5.497787143782138 - call $~lib/math/NativeMath.cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1136 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7071067811865477 - f64.const 7.0685834705770345 - call $~lib/math/NativeMath.cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.7071067811865467 - f64.const 8.63937979737193 - call $~lib/math/NativeMath.cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1138 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.7071067811865471 - f64.const 10.210176124166829 - call $~lib/math/NativeMath.cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1139 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9367521275331447 - f64.const 1e6 - call $~lib/math/NativeMath.cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3.435757038074824e-12 - f64.const 1647097.7583689587 - call $~lib/math/NativeMath.cos - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 1141 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -0.21126316487789154 - f32.const 0.48328569531440735 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1150 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -0.3589562177658081 - f32.const 0.042505208402872086 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -0.5033331513404846 - f32.const -0.1386195719242096 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1152 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 0.9692853689193726 - f32.const 0.1786951720714569 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1153 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const -0.9875878691673279 - f32.const 0.1389600932598114 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1154 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.7887731194496155 - f32.const 0.2989593744277954 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1155 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const 0.918469250202179 - f32.const 0.24250665307044983 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.8463190197944641 - f32.const -0.24033240973949432 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.7150139212608337 - f32.const -0.3372635245323181 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1158 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const 0.7783495187759399 - f32.const 0.16550153493881226 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1159 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1164 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1165 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1166 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.862645149230957e-09 - f32.const 1 - f32.const 1.4551915228366852e-11 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1169 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.862645149230957e-09 - f32.const 1 - f32.const 1.4551915228366852e-11 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1170 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754943508222875e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1171 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754943508222875e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1172 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1173 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.401298464324817e-45 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1174 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.802596928649634e-45 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1175 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.2611686178923354e-44 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1176 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.938735877055719e-39 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.877471754111438e-39 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1178 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754940705625946e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1179 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754942106924411e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1180 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.175494490952134e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1181 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754946310819804e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1182 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3509880009953429e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1183 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.350988701644575e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1184 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3509895424236536e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1185 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.70197740328915e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1186 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.450580596923828e-09 - f32.const 1 - f32.const 2.3283064365386963e-10 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1187 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.000244140625 - f32.const 1 - f32.const 0.25 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1188 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.00048828125 - f32.const 0.9999998807907104 - f32.const -3.973643103449831e-08 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1189 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.0009765625 - f32.const 0.9999995231628418 - f32.const -6.357828397085541e-07 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1190 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.802596928649634e-45 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1191 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.2611686178923354e-44 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1192 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.938735877055719e-39 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -5.877471754111438e-39 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1194 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754940705625946e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1195 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754942106924411e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1196 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.175494490952134e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1197 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754946310819804e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1198 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.3509880009953429e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.350988701644575e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1200 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.3509895424236536e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1201 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -4.70197740328915e-38 - f32.const 1 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1202 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.450580596923828e-09 - f32.const 1 - f32.const 2.3283064365386963e-10 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1203 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.000244140625 - f32.const 1 - f32.const 0.25 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1204 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.00048828125 - f32.const 0.9999998807907104 - f32.const -3.973643103449831e-08 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1205 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.0009765625 - f32.const 0.9999995231628418 - f32.const -6.357828397085541e-07 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1206 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 255.99993896484375 - f32.const -0.03985174745321274 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5033165 - f32.const 0.8471871614456177 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1210 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 421657440 - f32.const 0.6728929281234741 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1211 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2147483392 - f32.const 0.9610780477523804 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1212 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 68719476736 - f32.const 0.1694190502166748 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1213 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 549755813888 - f32.const 0.20735950767993927 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1214 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3402823466385288598117041e14 - f32.const 0.8530210256576538 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1215 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -255.99993896484375 - f32.const -0.03985174745321274 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1216 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -5033165 - f32.const 0.8471871614456177 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1217 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -421657440 - f32.const 0.6728929281234741 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1218 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2147483392 - f32.const 0.9610780477523804 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1219 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -68719476736 - f32.const 0.1694190502166748 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1220 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -549755813888 - f32.const 0.20735950767993927 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1221 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3402823466385288598117041e14 - f32.const 0.8530210256576538 - f32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1222 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 1593.5209938862329 - f64.const -0.38098856806755066 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1233 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 38.56174928426729 - f64.const -0.2712278366088867 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1234 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const 2182.630979595893 - f64.const 0.0817827582359314 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1235 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 343.273849250879 - f64.const -0.429940402507782 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1236 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 5291.779170005587 - f64.const -0.1592995822429657 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1237 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 1.2272321957342842 - f64.const 0.23280741274356842 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1238 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const 1.083808541871197 - f64.const -0.3960916996002197 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1239 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 1.1619803583175077 - f64.const 0.37748390436172485 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1240 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 1.3149236876276706 - f64.const 0.43587008118629456 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1241 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const 1.2393413245934533 - f64.const 0.10201606154441833 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1242 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1245 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const 0 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1246 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1247 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const inf - f64.const 0 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1248 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1249 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 1593.5216064453125 - f32.const 0.26242581009864807 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1258 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 38.56174087524414 - f32.const -0.08168885856866837 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1259 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const 2182.631103515625 - f32.const -0.02331414446234703 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1260 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 343.2738037109375 - f32.const 0.20081493258476257 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1261 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 5291.78173828125 - f32.const 0.36286723613739014 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1262 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 1.2272322177886963 - f32.const 0.32777416706085205 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1263 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const 1.0838085412979126 - f32.const -0.039848703891038895 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1264 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 1.161980390548706 - f32.const 0.15274477005004883 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1265 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 1.314923644065857 - f32.const -0.2387111485004425 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1266 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const 1.2393412590026855 - f32.const -0.45791932940483093 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1267 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1270 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const 0 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1271 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1272 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const inf - f32.const 0 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1273 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1274 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 3.137706068161745e-04 - f64.const -0.2599197328090668 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1286 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 77.11053017112141 - f64.const -0.02792675793170929 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1287 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const 2.290813384916323e-04 - f64.const -0.24974334239959717 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1288 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 1.4565661260931588e-03 - f64.const -0.4816822409629822 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1289 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 10583.558245524993 - f64.const 0.17696762084960938 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1290 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 1.9386384525571998 - f64.const -0.4964246451854706 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1291 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const 0.6659078892838025 - f64.const -0.10608318448066711 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1292 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 1.7537559518626311 - f64.const -0.39162111282348633 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1293 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 2.1687528885129246 - f64.const -0.2996125817298889 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1294 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const 0.5072437089402843 - f64.const 0.47261738777160645 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1295 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1298 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const 0 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1299 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 2.718281828459045 - f64.const -0.3255307376384735 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1300 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0.36787944117144233 - f64.const 0.22389651834964752 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1301 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1302 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 0 - f64.const 0 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1303 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1304 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0397214889526365 - f64.const 2.828429155876411 - f64.const 0.18803080916404724 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1305 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0397214889526365 - f64.const 0.35355313670217847 - f64.const 0.2527272403240204 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1306 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0397210121154785 - f64.const 2.8284278071766122 - f64.const -0.4184139370918274 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1307 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0397214889526367 - f64.const 2.8284291558764116 - f64.const -0.22618377208709717 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1308 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const 1 - f64.const 0 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1311 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5e-324 - f64.const 1 - f64.const 0 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1312 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 709.782712893384 - f64.const 1797693134862273196746681e284 - f64.const -0.10568465292453766 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1314 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 709.7827128933841 - f64.const inf - f64.const 0 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1321 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -745.1332191019411 - f64.const 5e-324 - f64.const 0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1322 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -745.1332191019412 - f64.const 0 - f64.const -0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1329 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -708.3964185322641 - f64.const 2.2250738585072626e-308 - f64.const 0.26172348856925964 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1336 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -708.3964185322642 - f64.const 2.2250738585070097e-308 - f64.const 2.2250738585070097e-308 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1343 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5006933289508785 - f64.const 1.6498647732549399 - f64.const 0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1350 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.628493326460252 - f64.const 1.8747837631658781 - f64.const 0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1357 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.837522455340574 - f64.const 2.3106351774748006 - f64.const -0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1364 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.8504909932810999 - f64.const 2.3407958848710777 - f64.const 0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1370 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.6270060846924657 - f64.const 5.088617001442459 - f64.const 0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1376 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.6744336219614115 - f64.const 5.335772228886831 - f64.const 0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1382 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 6.657914718791208 - f64.const 778.924964819056 - f64.const 0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1389 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 11.022872793631722 - f64.const 61259.41271820104 - f64.const 0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1396 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 11.411195701885317 - f64.const 90327.36165653409 - f64.const 0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1403 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 11.794490387560606 - f64.const 132520.20290772576 - f64.const 0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1410 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 412.83872756953286 - f64.const 1965989977109266413433084e155 - f64.const 0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1417 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 510.87569028483415 - f64.const 7421526272656495968225491e197 - f64.const -0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1424 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.6589841439772853e-14 - f64.const 0.9999999999999735 - f64.const 0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1431 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.7144952952085447e-14 - f64.const 0.9999999999999728 - f64.const -0.5 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1438 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 3.1377049162983894e-04 - f32.const -0.030193336308002472 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1452 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 77.11051177978516 - f32.const -0.2875460684299469 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1453 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const 2.2908132814336568e-04 - f32.const 0.2237040400505066 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1454 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 1.4565663877874613e-03 - f32.const 0.36469703912734985 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1455 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 10583.5634765625 - f32.const 0.45962104201316833 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1456 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 1.93863844871521 - f32.const 0.3568260967731476 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1457 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const 0.6659078598022461 - f32.const -0.38294991850852966 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1458 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 1.753756046295166 - f32.const 0.44355490803718567 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1459 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 2.168752908706665 - f32.const 0.24562469124794006 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1460 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const 0.5072436928749084 - f32.const -0.3974292278289795 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1461 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1464 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const 0 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1465 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 2.7182817459106445 - f32.const -0.3462330996990204 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1466 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0.3678794503211975 - f32.const 0.3070148527622223 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1467 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1468 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 0 - f32.const 0 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1469 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1470 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 88.72283172607422 - f32.const 340279851902147610656242e15 - f32.const -0.09067153930664062 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1471 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 88.72283935546875 - f32.const inf - f32.const 0 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1472 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -103.97207641601562 - f32.const 1.401298464324817e-45 - f32.const 0.49999967217445374 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1473 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -103.97208404541016 - f32.const 0 - f32.const -0.49999651312828064 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1474 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.3465735614299774 - f32.const 1.4142135381698608 - f32.const 0.13922421634197235 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1475 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.3465735912322998 - f32.const 1.4142135381698608 - f32.const -0.21432916820049286 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1476 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.3465736210346222 - f32.const 1.4142136573791504 - f32.const 0.43211743235588074 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1477 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -0.9996862293931839 - f64.const -0.2760058343410492 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1489 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 76.11053017112141 - f64.const -0.02792675793170929 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1490 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -0.9997709186615084 - f64.const 0.10052496194839478 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1491 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -0.9985434338739069 - f64.const -0.27437829971313477 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1492 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 10582.558245524993 - f64.const 0.17696762084960938 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1493 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.9386384525571999 - f64.const 0.007150684483349323 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1494 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.3340921107161975 - f64.const -0.21216636896133423 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1495 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.7537559518626312 - f64.const 0.21675777435302734 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1496 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 1.1687528885129248 - f64.const 0.4007748067378998 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1497 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.4927562910597158 - f64.const -0.05476519837975502 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1498 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1501 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1502 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1.7182818284590453 - f64.const 0.348938524723053 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1503 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0.6321205588285577 - f64.const 0.11194825917482376 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1504 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1505 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -1 - f64.const 0 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1506 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1507 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507201e-308 - f64.const 2.225073858507201e-308 - f64.const 0 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1508 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507201e-308 - f64.const -2.225073858507201e-308 - f64.const 0 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1509 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -0.9996862411499023 - f32.const -0.19532723724842072 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1518 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 76.11051177978516 - f32.const -0.2875460684299469 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1519 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -0.9997709393501282 - f32.const -0.34686920046806335 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1520 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -0.9985434412956238 - f32.const -0.1281939446926117 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1521 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 10582.5634765625 - f32.const 0.45962104201316833 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1522 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.9386383891105652 - f32.const -0.28634780645370483 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1523 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.3340921103954315 - f32.const 0.23410017788410187 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1524 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.7537559866905212 - f32.const -0.11289017647504807 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1525 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 1.168752908706665 - f32.const 0.4912493824958801 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1526 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.49275627732276917 - f32.const 0.20514154434204102 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1527 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1530 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1531 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1.718281865119934 - f32.const 0.3075338304042816 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1532 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0.6321205496788025 - f32.const 0.15350742638111115 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1533 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1534 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -1 - f32.const 0 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1535 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1536 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 0.003729380227666592 - f64.const 0.1281578093767166 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1548 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 20.32579462123892 - f64.const 0.03073759749531746 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1549 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const 2.9987283924334954e-03 - f64.const -0.31000515818595886 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1550 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 0.010808622025681005 - f64.const -0.28607869148254395 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1551 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 616.1154770730207 - f64.const -0.08883064985275269 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1552 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 1.5822591361986904 - f64.const -0.1258980929851532 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1553 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const 0.7543971221632684 - f64.const -0.24229088425636292 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1554 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 1.4760685736993149 - f64.const 0.27173060178756714 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1555 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 1.710184880131433 - f64.const -0.0205493476241827 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1556 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const 0.6247003734030933 - f64.const -0.31195688247680664 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1557 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1560 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1561 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 2 - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1562 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0.5 - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1563 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1564 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 0 - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1565 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1566 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.998046875 - f64.const 3.9945884515638808 - f64.const 0.1476455181837082 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1567 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1021.9 - f64.const 2.384775113731291e-308 - f64.const -0.2217157781124115 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1568 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1022 - f64.const 2.2250738585072014e-308 - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1569 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1022.1 - f64.const 2.0760673185932884e-308 - f64.const 0.198451966047287 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1570 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1023 - f64.const 1.1125369292536007e-308 - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1571 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1023.9 - f64.const 1677307003485741635311718e284 - f64.const 0.396903932094574 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1572 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1024 - f64.const inf - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1573 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1024.1 - f64.const inf - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1574 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.14 - f64.const 8.815240927012887 - f64.const 0.39309585094451904 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1575 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1022.5 - f64.const 1.5733648139913585e-308 - f64.const -0.28231191635131836 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1576 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1023 - f64.const 1.1125369292536007e-308 - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1577 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1023.5 - f64.const 7.866824069956793e-309 - f64.const -0.14115595817565918 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1578 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1024 - f64.const 5.562684646268003e-309 - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1579 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1025 - f64.const 2.781342323134e-309 - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1580 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1074 - f64.const 5e-324 - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1581 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1074.5 - f64.const 5e-324 - f64.const 0.2928932309150696 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1582 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1075 - f64.const 0 - f64.const -0.5 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1583 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2048 - f64.const 0 - f64.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1584 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 3.7293792702257633e-03 - f32.const -0.0674908235669136 - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1595 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 20.32579231262207 - f32.const 0.34121403098106384 - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1596 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const 2.9987283051013947e-03 - f32.const 0.15504619479179382 - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1597 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 0.010808623395860195 - f32.const 0.2603940963745117 - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1598 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 616.1156616210938 - f32.const -0.1379322111606598 - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1599 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 1.5822590589523315 - f32.const -0.427890807390213 - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1600 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const 0.7543970942497253 - f32.const -0.38062313199043274 - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1601 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 1.4760686159133911 - f32.const 0.1507442593574524 - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1602 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 1.7101848125457764 - f32.const -0.39102980494499207 - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1603 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const 0.6247003674507141 - f32.const -0.20904375612735748 - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1604 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -9 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1616 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 4 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1617 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -9 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1618 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -7 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1619 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 9 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1620 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1621 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -1 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1622 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1623 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1624 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -1 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1625 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1628 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1629 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1630 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1631 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1632 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1633 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1634 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1635 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -1 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1636 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const 1 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1637 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const -2 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1638 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1639 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.9999923706054688 - f64.const -1 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1640 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.888609052210118e-31 - f64.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1641 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -1 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1642 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -9 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1651 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 4 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1652 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -9 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1653 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -7 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1654 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 9 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1655 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1656 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -1 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1657 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1658 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1659 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -1 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1660 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1663 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1664 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1665 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1666 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1667 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1668 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1669 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1670 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -1 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1671 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const 1 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1672 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const -2 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1673 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1674 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.9999923706054688 - f32.const -1 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1675 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1676 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -1 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1677 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const 9.25452742288464 - f64.const -0.31188681721687317 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1691 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const 9.893305808328252 - f64.const 0.4593673348426819 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1692 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const 8.825301797432132 - f64.const -0.1701754331588745 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1693 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const 7.970265885519092 - f64.const -0.3176782727241516 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1694 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const 10.441639651824575 - f64.const -0.2693633437156677 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1695 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const 6.483936052542593 - f64.const 0.35618898272514343 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1696 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const 7.859063309581766 - f64.const 0.08044655621051788 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1697 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const 7.717156764899584 - f64.const 0.05178084969520569 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1698 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 2.104006123874314 - f64.const -0.0918039008975029 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1699 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const 0.5596880129062913 - f64.const 0.1383407711982727 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1700 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3 - f64.const 4 - f64.const 5 - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1703 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3 - f64.const 4 - f64.const 5 - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1704 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4 - f64.const 3 - f64.const 5 - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1705 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4 - f64.const -3 - f64.const 5 - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1706 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3 - f64.const -4 - f64.const 5 - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1707 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const 0 - f64.const 1797693134862315708145274e284 - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1708 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const -0 - f64.const 1797693134862315708145274e284 - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1709 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const 0 - f64.const 5e-324 - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1710 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const -0 - f64.const 5e-324 - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1711 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const inf - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1712 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1713 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const inf - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1714 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1715 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 1 - f64.const inf - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1716 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -inf - f64.const inf - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1717 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const inf - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1718 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -inf - f64.const inf - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1719 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1720 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1721 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1722 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1723 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const 9.254528045654297 - f32.const 0.2735958993434906 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1732 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const 9.893305778503418 - f32.const 0.4530770778656006 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1733 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const 8.825302124023438 - f32.const 0.30755728483200073 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1734 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const 7.970265865325928 - f32.const 0.06785223633050919 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1735 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const 10.44163990020752 - f32.const -0.26776307821273804 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1736 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const 6.483936309814453 - f32.const 0.48381292819976807 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1737 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const 7.859063148498535 - f32.const 0.07413065433502197 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1738 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const 7.717156887054443 - f32.const 0.4940592646598816 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1739 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 2.104006052017212 - f32.const -0.287089467048645 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1740 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const 0.5596880316734314 - f32.const 0.4191940724849701 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1741 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3 - f32.const 4 - f32.const 5 - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1744 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3 - f32.const 4 - f32.const 5 - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1745 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4 - f32.const 3 - f32.const 5 - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1746 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4 - f32.const -3 - f32.const 5 - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1747 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3 - f32.const -4 - f32.const 5 - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1748 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3402823466385288598117041e14 - f32.const 0 - f32.const 3402823466385288598117041e14 - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1749 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3402823466385288598117041e14 - f32.const -0 - f32.const 3402823466385288598117041e14 - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1750 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const 0 - f32.const 1.401298464324817e-45 - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1751 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const -0 - f32.const 1.401298464324817e-45 - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1752 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const inf - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1753 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1754 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const inf - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1755 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1756 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 1 - f32.const inf - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1757 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -inf - f32.const inf - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1758 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const inf - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1759 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -inf - f32.const inf - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1760 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1761 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1762 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1774 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 1.4690809584224322 - f64.const -0.3412533402442932 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1775 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1776 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1777 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 2.2264658498795615 - f64.const 0.3638114035129547 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1778 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const -0.4125110252365137 - f64.const -0.29108747839927673 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1779 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1780 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const -0.5766810183195862 - f64.const -0.10983199626207352 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1781 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const -0.2559866591263865 - f64.const -0.057990044355392456 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1782 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1783 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -inf - f64.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1786 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -inf - f64.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1787 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1788 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1789 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1790 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1791 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1792 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1793 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -inf - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1802 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -inf - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1803 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const nan:0x400000 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1804 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1805 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1806 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1807 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1808 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1809 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -inf - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1812 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -inf - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1813 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const nan:0x400000 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1814 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1815 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1816 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1817 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1818 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1819 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1831 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 0.6380137537120029 - f64.const -0.2088824063539505 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1832 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1833 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1834 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 0.9669418327487274 - f64.const -0.06120431795716286 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1835 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const -0.17915126198447093 - f64.const 0.39090874791145325 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1836 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1837 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const -0.25044938407454437 - f64.const -0.3046841621398926 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1838 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const -0.11117359349943837 - f64.const -0.31503361463546753 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1839 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1840 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -inf - f64.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1843 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -inf - f64.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1844 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1845 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1846 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1847 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1848 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1849 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1850 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1859 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 0.6380137205123901 - f32.const -0.20476758480072021 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1860 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1861 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1862 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 0.9669418334960938 - f32.const -0.34273025393486023 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1863 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const -0.1791512817144394 - f32.const -0.27078554034233093 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1864 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1865 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const -0.25044935941696167 - f32.const 0.2126826047897339 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1866 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const -0.1111735999584198 - f32.const 0.46515095233917236 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1867 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1868 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -inf - f32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1871 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -inf - f32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1872 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1873 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1874 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1875 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1876 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1877 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1878 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1890 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 1.6762064170601734 - f64.const 0.46188199520111084 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1891 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1892 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1893 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 2.3289404168523826 - f64.const -0.411114901304245 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1894 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.5080132114992477 - f64.const -0.29306045174598694 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1895 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.5218931811663979 - f64.const -0.25825726985931396 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1896 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.4458132279488102 - f64.const -0.13274887204170227 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1897 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.5733227294648414 - f64.const 0.02716583013534546 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1898 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -1.1355782978128564 - f64.const 0.2713092863559723 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1899 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1902 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1903 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -7.888609052210118e-31 - f64.const 1.7763568394002505e-15 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1904 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0.6931471805599453 - f64.const -0.2088811695575714 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1905 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -inf - f64.const 0 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1906 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1907 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1908 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1909 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1918 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 1.676206350326538 - f32.const -0.23014859855175018 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1919 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1920 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1921 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 2.3289403915405273 - f32.const -0.29075589776039124 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1922 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.5080131888389587 - f32.const -0.1386766880750656 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1923 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.5218932032585144 - f32.const -0.08804433047771454 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1924 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.44581323862075806 - f32.const -0.15101368725299835 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1925 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.5733227133750916 - f32.const -0.10264533013105392 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1926 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -1.1355782747268677 - f32.const -0.19879481196403503 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1927 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1930 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1931 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -7.888609052210118e-31 - f32.const 3.308722450212111e-24 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1932 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0.6931471824645996 - f32.const 0.031954795122146606 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1933 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -inf - f32.const 0 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1934 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1935 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1936 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1937 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754942106924411e-38 - f32.const -1.1754942106924411e-38 - f32.const 4.930380657631324e-32 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1938 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1950 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 2.1194358133804485 - f64.const -0.10164877772331238 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1951 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1952 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1953 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 3.2121112403298744 - f64.const -0.15739446878433228 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1954 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const -0.5951276104207402 - f64.const 0.3321485221385956 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1955 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1956 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const -0.8319748453044644 - f64.const 0.057555437088012695 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1957 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const -0.36931068365537134 - f64.const -0.19838279485702515 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1958 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1959 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -inf - f64.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1962 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -inf - f64.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1963 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1964 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1965 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1966 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1967 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1968 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1969 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1978 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 2.1194357872009277 - f32.const 0.18271538615226746 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1979 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1980 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1981 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 3.212111234664917 - f32.const -0.3188050389289856 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1982 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const -0.5951276421546936 - f32.const 0.34231460094451904 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1983 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1984 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const -0.8319748044013977 - f32.const -0.33473604917526245 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1985 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const -0.3693107068538666 - f32.const 0.3278401792049408 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1986 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1987 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -inf - f32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1990 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -inf - f32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1991 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1992 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1993 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1994 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1995 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1996 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 1997 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const 4.535662560676869 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2009 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const 4.345239849338305 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2010 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const -2.763607337379588 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2011 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const 4.567535276842744 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2012 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const 9.267056966972586 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2013 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const 0.6620717923376739 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2014 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const 7.858890253041697 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2015 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const 7.67640268511754 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2016 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 2.0119025790324803 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2017 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const 0.03223983060263804 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2018 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 1 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2021 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const 1 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2022 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 1 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2023 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 1 - f64.const 1 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2024 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 1 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2025 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1 - f64.const 1 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2026 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2027 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 1 - f64.const 1 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2028 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2029 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2030 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const -0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2031 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const -1 - f64.const 0.5 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2032 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -1 - f64.const -0.5 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2033 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1 - f64.const 1 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2034 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const -1 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2035 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - f64.const inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2036 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -1 - f64.const -1 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2037 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2038 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2039 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2040 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2041 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -inf - f64.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2042 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2043 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2044 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const -0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2045 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2046 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -inf - f64.const -0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2047 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2048 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 1 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2049 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2050 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2051 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 0 - f64.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2052 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2053 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const -0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2054 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0 - f64.const inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2055 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -0 - f64.const -0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2056 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2057 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 2 - f64.const inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2058 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0.5 - f64.const inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2059 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2060 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 2 - f64.const 2 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2061 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -0.5 - f64.const -0.5 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2062 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2063 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2064 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2065 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2066 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2067 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2068 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2069 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const inf - f64.const inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2070 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -inf - f64.const 1 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2071 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -inf - f64.const -1 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2072 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -inf - f64.const inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2073 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - f64.const -inf - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2074 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const 0.5 - f64.const 1.75 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2075 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const 0.5 - f64.const 0.5 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2076 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const -0.5 - f64.const 1.75 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2077 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const -0.5 - f64.const -0.5 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2078 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const 4.535662651062012 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2087 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const 4.345239639282227 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2088 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const -2.7636072635650635 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2089 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const 4.567535400390625 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2090 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const 9.267057418823242 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2091 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const 0.6620717644691467 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2092 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const 7.858890056610107 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2093 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const 7.676402568817139 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2094 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 2.0119025707244873 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2095 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const 0.03223983198404312 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2096 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 1 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2099 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const 1 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 1 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 1 - f32.const 1 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 1 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 1 - f32.const 1 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 1 - f32.const 1 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -1 - f32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const -0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2109 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const -1 - f32.const 0.5 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -1 - f32.const -0.5 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -1 - f32.const 1 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2112 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const -1 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -1 - f32.const inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -1 - f32.const -1 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2118 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -inf - f32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2122 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const -0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2124 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -inf - f32.const -0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2125 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2126 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 1 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2127 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2128 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2129 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 0 - f32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2130 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2131 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const -0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2132 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0 - f32.const inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2133 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -0 - f32.const -0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2134 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2135 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 2 - f32.const inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2136 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0.5 - f32.const inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2138 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 2 - f32.const 2 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2139 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -0.5 - f32.const -0.5 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2141 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2142 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2144 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2145 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2146 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2147 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const inf - f32.const inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2148 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -inf - f32.const 1 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2149 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -inf - f32.const -1 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2150 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -inf - f32.const inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - f32.const -inf - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2152 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const 0.5 - f32.const 1.75 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2153 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const 0.5 - f32.const 0.5 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2154 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const -0.5 - f32.const 1.75 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2155 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const -0.5 - f32.const -0.5 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const -8.06684839057968 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2168 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const -8.88799136300345 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2169 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const -8.38143342755525 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2170 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const -6.531673581913484 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2171 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const 4.811392084359796 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2172 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const -6.450045556060236 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2173 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const 0.05215452675006225 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2174 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const -0.792054511984896 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2175 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 0.615702673197924 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2176 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const -0.5587586823609152 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2180 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const -0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2181 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 0.5 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2182 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 1 - f64.const -0.5 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2183 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2184 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1 - f64.const -1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2185 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const 1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2186 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 1 - f64.const -inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2187 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2188 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const -1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2189 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const -1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2190 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const -1 - f64.const -1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2191 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -1 - f64.const -1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2192 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1 - f64.const -1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const -1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2194 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - f64.const -1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2195 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -1 - f64.const -inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2196 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2197 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2198 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const -0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2200 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -inf - f64.const -inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2201 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2202 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const -0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2203 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const -0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2204 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const -0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2205 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -inf - f64.const -inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2206 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2207 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2208 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const -1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2210 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 0 - f64.const -inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2211 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2212 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const -1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2213 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0 - f64.const -0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2214 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -0 - f64.const -inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2215 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2216 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 2 - f64.const 2 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2217 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0.5 - f64.const -0.5 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2218 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2219 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 2 - f64.const -inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2220 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -0.5 - f64.const -inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2221 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2222 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2223 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2224 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2225 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const 1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2226 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const -1 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2227 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2228 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const inf - f64.const -inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2229 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -inf - f64.const -inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2230 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -inf - f64.const -inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2231 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -inf - f64.const -inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2232 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - f64.const -inf - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2233 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const 0.5 - f64.const 0.5 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2234 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const 0.5 - f64.const -1.75 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2235 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const -0.5 - f64.const -0.5 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2236 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const -0.5 - f64.const -1.75 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2237 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const -8.066848754882812 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2246 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const -8.887990951538086 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2247 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const -8.381433486938477 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2248 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const -6.531673431396484 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2249 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const 4.811392307281494 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2250 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const -6.450045585632324 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2251 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const 0.052154526114463806 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2252 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const -0.7920545339584351 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2253 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 0.6157026886940002 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2254 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const -0.5587586760520935 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2255 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2258 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const -0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2259 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 0.5 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2260 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 1 - f32.const -0.5 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2261 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2262 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 1 - f32.const -1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2263 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const 1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2264 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 1 - f32.const -inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2265 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2266 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -1 - f32.const -1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2267 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const -1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2268 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const -1 - f32.const -1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2269 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -1 - f32.const -1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2270 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -1 - f32.const -1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2271 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const -1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2272 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -1 - f32.const -1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2273 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -1 - f32.const -inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2274 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2275 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2276 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const -0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2277 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2278 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -inf - f32.const -inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2279 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2280 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const -0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2281 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const -0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2282 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const -0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2283 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -inf - f32.const -inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2284 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2285 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2286 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const -1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2287 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2288 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 0 - f32.const -inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2289 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2290 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const -1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2291 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0 - f32.const -0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2292 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -0 - f32.const -inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2293 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2294 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 2 - f32.const 2 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2295 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0.5 - f32.const -0.5 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2296 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2297 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 2 - f32.const -inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2298 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -0.5 - f32.const -inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2299 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2300 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2301 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2302 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2303 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const 1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2304 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const -1 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2305 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2306 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const inf - f32.const -inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2307 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -inf - f32.const -inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2308 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -inf - f32.const -inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2309 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -inf - f32.const -inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2310 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - f32.const -inf - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2311 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const 0.5 - f32.const 0.5 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2312 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const 0.5 - f32.const -1.75 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2313 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const -0.5 - f32.const -0.5 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2314 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const -0.5 - f32.const -1.75 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2315 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const -3.531185829902812 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2329 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const 4.345239849338305 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2330 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const -0.09061141541648476 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2331 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const -1.9641383050707404 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2332 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const 4.45566488261279 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2333 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const -0.4913994250211714 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2334 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const 0.035711240532359426 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2335 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const -0.792054511984896 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2336 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 0.615702673197924 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2337 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const -0.0106815621160685 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2338 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2341 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2342 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2343 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 1 - f64.const -0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2344 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2345 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2346 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 1 - f64.const 0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2347 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const 1 - f64.const -0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2348 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - f64.const 1 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2349 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const 1 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2350 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2351 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 1 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2352 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2353 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2354 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2355 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const -1 - f64.const 0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2356 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -1 - f64.const -0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2357 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2358 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2359 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const -1 - f64.const 0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2360 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const -1 - f64.const -0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2361 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - f64.const -1 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2362 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const -1 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2363 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2364 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -1 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2365 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2366 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2367 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2368 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2369 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -inf - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2370 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2371 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2372 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2373 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2374 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -inf - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2375 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2376 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2377 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2378 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2379 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2380 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2381 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2382 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2383 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2384 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2385 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 2 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2386 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0.5 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2387 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2388 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 2 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2389 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -0.5 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2390 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2391 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2392 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2393 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2394 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const 1 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2395 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const -1 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2396 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2397 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const inf - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2398 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -inf - f64.const 1 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2399 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -inf - f64.const -1 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2400 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -inf - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2401 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - f64.const nan:0x8000000000000 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2402 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const 0.5 - f64.const 0.25 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2403 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const 0.5 - f64.const -0.25 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2404 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const -0.5 - f64.const 0.25 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2405 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const -0.5 - f64.const -0.25 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2406 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - f64.const 2.2250738585072014e-308 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2409 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - f64.const -2.2250738585072014e-308 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2410 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072014e-308 - f64.const 2.2250738585072014e-308 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2411 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072014e-308 - f64.const -2.2250738585072014e-308 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2412 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const 1797693134862315708145274e284 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2413 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const -1797693134862315708145274e284 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2414 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1797693134862315708145274e284 - f64.const 1797693134862315708145274e284 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2415 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1797693134862315708145274e284 - f64.const -1797693134862315708145274e284 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2416 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 2.2250738585072014e-308 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2419 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1797693134862315708145274e284 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2420 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -2.2250738585072014e-308 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2421 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1797693134862315708145274e284 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2422 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 2.2250738585072014e-308 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2423 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1797693134862315708145274e284 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2424 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -2.2250738585072014e-308 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2425 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1797693134862315708145274e284 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2426 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const 1797693134862315508561243e284 - f64.const 1995840309534719811656372e268 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2429 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1797693134862315708145274e284 - f64.const 1797693134862315508561243e284 - f64.const -1995840309534719811656372e268 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2430 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const -8988465674311579538646525e283 - f64.const 8988465674311577542806216e283 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2432 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1797693134862315708145274e284 - f64.const -8988465674311579538646525e283 - f64.const -8988465674311577542806216e283 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2433 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const 8988465674311578540726371e283 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2435 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1797693134862315708145274e284 - f64.const 8988465674311578540726371e283 - f64.const -0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2436 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const -8988465674311577542806216e283 - f64.const 1995840309534719811656372e268 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2438 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1797693134862315708145274e284 - f64.const -8988465674311577542806216e283 - f64.const -1995840309534719811656372e268 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2439 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8988465674311579538646525e283 - f64.const 1797693134862315708145274e284 - f64.const 8988465674311579538646525e283 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2441 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8988465674311579538646525e283 - f64.const 1797693134862315708145274e284 - f64.const -8988465674311579538646525e283 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2442 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8988465674311578540726371e283 - f64.const -1797693134862315708145274e284 - f64.const 8988465674311578540726371e283 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2444 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8988465674311578540726371e283 - f64.const -1797693134862315708145274e284 - f64.const -8988465674311578540726371e283 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2445 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8988465674311577542806216e283 - f64.const 1797693134862315708145274e284 - f64.const 8988465674311577542806216e283 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2447 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8988465674311577542806216e283 - f64.const 1797693134862315708145274e284 - f64.const -8988465674311577542806216e283 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2448 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315508561243e284 - f64.const -1797693134862315708145274e284 - f64.const 1797693134862315508561243e284 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2450 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1797693134862315508561243e284 - f64.const -1797693134862315708145274e284 - f64.const -1797693134862315508561243e284 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2451 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315508561243e284 - f64.const 8988465674311578540726371e283 - f64.const 8988465674311576544886061e283 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2453 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1797693134862315508561243e284 - f64.const 8988465674311578540726371e283 - f64.const -8988465674311576544886061e283 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2454 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.5 - f64.const 1 - f64.const 0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2456 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 6.5 - f64.const 1 - f64.const 0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2457 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.5 - f64.const 1 - f64.const 0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2458 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.5 - f64.const 1 - f64.const 0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2459 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.5 - f64.const 1 - f64.const -0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2460 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.5 - f64.const 1 - f64.const -0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2461 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5.5 - f64.const 1 - f64.const -0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2462 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.5 - f64.const 1 - f64.const -0.5 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2463 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585071994e-308 - f64.const 2.2250738585072004e-308 - f64.const 2.2250738585071994e-308 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2465 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585071994e-308 - f64.const -2.2250738585072004e-308 - f64.const 2.2250738585071994e-308 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2466 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507201e-308 - f64.const 1.5e-323 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2467 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507201e-308 - f64.const 4.4501477170144023e-308 - f64.const 2.225073858507201e-308 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2468 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507201e-308 - f64.const inf - f64.const 2.225073858507201e-308 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2469 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507201e-308 - f64.const -1.5e-323 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2470 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - f64.const 1.5e-323 - f64.const 5e-324 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2471 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - f64.const 2.2250738585072004e-308 - f64.const 1e-323 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2472 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - f64.const 4.4501477170144023e-308 - f64.const 2.2250738585072014e-308 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2473 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - f64.const -1.5e-323 - f64.const 5e-324 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2474 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507202e-308 - f64.const 2.2250738585072004e-308 - f64.const 1.5e-323 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2475 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072024e-308 - f64.const 1.5e-323 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2476 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072024e-308 - f64.const -1.5e-323 - f64.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2477 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507203e-308 - f64.const 1.5e-323 - f64.const 5e-324 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2478 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507203e-308 - f64.const 2.225073858507204e-308 - f64.const 2.225073858507203e-308 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2479 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507203e-308 - f64.const -1.5e-323 - f64.const 5e-324 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2480 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072034e-308 - f64.const 2.225073858507204e-308 - f64.const 2.2250738585072034e-308 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2481 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072043e-308 - f64.const 2.225073858507204e-308 - f64.const 5e-324 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2482 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.4501477170144023e-308 - f64.const 4.450147717014403e-308 - f64.const 4.4501477170144023e-308 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2483 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.139237815555687e-305 - f64.const 5.696189077778436e-306 - f64.const 5.696189077778434e-306 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2484 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const -3.531186103820801 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2493 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const 4.345239639282227 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2494 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const -0.09061169624328613 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2495 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const -1.9641380310058594 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2496 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const 4.455665111541748 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2497 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const -0.49139970541000366 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2498 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const 0.0357111394405365 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2499 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const -0.7920545339584351 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2500 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 0.6157026886940002 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2501 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const -0.010681532323360443 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2502 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2505 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const -0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2506 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 0.5 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2507 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 1 - f32.const -0.5 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2508 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2509 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 1 - f32.const -0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2510 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const 1 - f32.const 0.5 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2511 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32.const 1 - f32.const -0.5 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2512 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2 - f32.const 1 - f32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2513 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const 1 - f32.const -0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2514 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2515 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 1 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2516 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2517 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -1 - f32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2518 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const -0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2519 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const -1 - f32.const 0.5 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2520 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -1 - f32.const -0.5 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2521 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -1 - f32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2522 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const -0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2523 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const -1 - f32.const 0.5 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2524 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32.const -1 - f32.const -0.5 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2525 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2 - f32.const -1 - f32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2526 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const -1 - f32.const -0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2527 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -1 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2528 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -1 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2529 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2530 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2531 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2532 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2533 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -inf - f32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2534 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2535 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2536 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2537 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const -0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2538 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -inf - f32.const -0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2539 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2540 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2541 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2542 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2543 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2544 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2545 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2546 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2547 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2548 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2549 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 2 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2550 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0.5 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2551 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2552 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 2 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2553 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -0.5 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2554 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2555 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2556 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2557 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2558 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const 1 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2559 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const -1 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2560 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2561 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const inf - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2562 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -inf - f32.const 1 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2563 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -inf - f32.const -1 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2564 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -inf - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2565 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - f32.const nan:0x400000 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2566 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const 0.5 - f32.const 0.25 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2567 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const 0.5 - f32.const -0.25 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2568 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const -0.5 - f32.const 0.25 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2569 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const -0.5 - f32.const -0.25 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2570 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2582 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const 2.1347118825587285e-06 - f64.const 0.3250160217285156 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2583 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2584 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2585 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const 44909.29941512966 - f64.const -0.26659080386161804 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2586 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2587 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const 1.1135177413458652 - f64.const -0.37168607115745544 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2588 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2589 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 0.37690773521380183 - f64.const 0.32473301887512207 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2590 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2591 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2594 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2595 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 3 - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2596 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 2 - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2597 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2598 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0.5 - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2599 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2600 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2601 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0.5 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2602 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2603 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -2 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2604 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -3 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2605 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -4 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2606 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -inf - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2607 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2608 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2609 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 3 - f64.const -0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2610 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 2 - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2611 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const -0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2612 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0.5 - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2613 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2614 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2615 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0.5 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2616 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const -inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2617 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -2 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2618 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -3 - f64.const -inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2619 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -4 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2620 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -inf - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2621 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2622 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2623 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2624 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2625 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2626 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2627 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2628 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2629 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2630 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2631 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2632 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -0 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2633 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2634 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2635 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2636 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 2 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2637 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const -1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2638 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -2 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2639 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -3 - f64.const -1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2640 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0.5 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2641 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2642 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2643 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2644 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 3 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2645 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0.5 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2646 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -0.5 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2647 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -3 - f64.const 1 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2648 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 0.5 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2649 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 1.5 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2650 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 2 - f64.const 0.25 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2651 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 3 - f64.const -0.125 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2652 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const inf - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2653 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -inf - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2654 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2655 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const inf - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2656 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const -inf - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2657 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2658 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2659 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const -inf - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2660 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2661 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2662 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2663 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -inf - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2664 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 3 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2665 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 2 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2666 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2667 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0.5 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2668 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0.5 - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2669 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2670 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -2 - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2671 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2672 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2673 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2674 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 3 - f64.const -inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2675 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 2 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2676 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 1 - f64.const -inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2677 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 0.5 - f64.const inf - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2678 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -0.5 - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2679 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -1 - f64.const -0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2680 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -2 - f64.const 0 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2681 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2682 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2683 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const 1 - f64.const -2 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2684 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const -1 - f64.const -0.5 - f64.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2685 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2688 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2689 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2690 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2691 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2692 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2693 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2694 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2695 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2697 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - call $~lib/math/NativeMath.pow - f64.const -0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2698 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1 - call $~lib/math/NativeMath.pow - f64.const -1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2699 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - call $~lib/math/NativeMath.pow - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2700 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 1 - call $~lib/math/NativeMath.pow - f64.const -inf - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2701 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - call $~lib/math/NativeMath.pow - local.tee $0 - local.get $0 - f64.eq - if - i32.const 0 - i32.const 1040 - i32.const 2702 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2704 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const -inf - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2705 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const -1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2706 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const 2 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2707 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2708 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2709 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const -0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2710 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - call $~lib/math/NativeMath.pow - local.tee $0 - local.get $0 - f64.eq - if - i32.const 0 - i32.const 1040 - i32.const 2711 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2713 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2714 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2715 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const 0.25 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2716 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2717 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2718 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2719 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 2 - call $~lib/math/NativeMath.pow - local.tee $0 - local.get $0 - f64.eq - if - i32.const 0 - i32.const 1040 - i32.const 2720 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2722 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2723 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0.5 - call $~lib/math/NativeMath.pow - local.tee $0 - local.get $0 - f64.eq - if - i32.const 0 - i32.const 1040 - i32.const 2724 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4 - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const 2 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2725 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2726 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2727 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 2728 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0.5 - call $~lib/math/NativeMath.pow - local.tee $0 - local.get $0 - f64.eq - if - i32.const 0 - i32.const 1040 - i32.const 2729 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2738 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const 2.134714122803416e-06 - f32.const 0.1436440795660019 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2739 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2740 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2741 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const 44909.33203125 - f32.const -0.05356409028172493 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2742 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2743 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const 1.1135177612304688 - f32.const 0.19122089445590973 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2744 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2745 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 0.3769077658653259 - f32.const 0.337149053812027 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2746 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2747 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2750 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2751 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 3 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2752 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 2 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2753 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2754 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0.5 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2755 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2756 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2757 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0.5 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2758 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -1 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2759 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -2 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2760 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -3 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2761 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -4 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2762 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -inf - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2763 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2764 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2765 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 3 - f32.const -0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2766 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 2 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2767 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const -0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2768 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0.5 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2769 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2770 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2771 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0.5 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2772 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const -inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2773 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -2 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2774 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -3 - f32.const -inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2775 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -4 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2776 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -inf - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2777 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2778 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2779 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2780 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2781 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2782 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2783 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2784 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2785 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2786 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2787 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2788 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2789 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2790 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2791 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2792 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 2 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2793 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const -1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2794 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -2 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2795 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -3 - f32.const -1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2796 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0.5 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2797 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2798 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2799 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2800 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 3 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2801 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0.5 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2802 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -0.5 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2803 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -3 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2804 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 0.5 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2805 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 1.5 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2806 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 2 - f32.const 0.25 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2807 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 3 - f32.const -0.125 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2808 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2809 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -inf - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2810 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2811 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2812 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const -inf - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2813 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2814 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2815 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const -inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2816 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2817 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2818 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2819 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2820 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 3 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2821 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 2 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2822 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2823 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0.5 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2824 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0.5 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2825 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -1 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2826 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -2 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2827 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2828 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2829 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2830 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 3 - f32.const -inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2831 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 2 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2832 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 1 - f32.const -inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2833 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 0.5 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2834 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -0.5 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2835 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -1 - f32.const -0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2836 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -2 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2837 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2838 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2839 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const 1 - f32.const -2 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2840 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const -1 - f32.const -0.5 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2841 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2844 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const -0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2845 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754943508222875e-38 - f32.const 1 - f32.const 1.1754943508222875e-38 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2846 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754943508222875e-38 - f32.const 1 - f32.const -1.1754943508222875e-38 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2847 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3402823466385288598117041e14 - f32.const 1 - f32.const 3402823466385288598117041e14 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2848 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3402823466385288598117041e14 - f32.const 1 - f32.const -3402823466385288598117041e14 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2849 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 3402823466385288598117041e14 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2851 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1.1754943508222875e-38 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2852 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 3402823466385288598117041e14 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2853 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 17 - f32.const -0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2854 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 2 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2855 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1.1754943508222875e-38 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2856 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.100000023841858 - f32.const 101 - f32.const -15158.70703125 - f32.const -0.2798735499382019 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2858 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 19 - f32.const 5 - f32.const 2476099 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2860 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -19 - f32.const 5 - f32.const -2476099 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2861 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -193 - f32.const 3 - f32.const -7189057 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2862 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1201 - f32.const 2 - f32.const 1442401 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2863 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.312918663024902 - f32.const 17.122268676757812 - f32.const 624013315407872 - f32.const -0.14995409548282623 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2865 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 18.804489135742188 - f32.const 3.3214492797851562 - f32.const 17076.3515625 - f32.const 0.3042995035648346 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2866 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.290969371795654 - f32.const 9.60707950592041 - f32.const 194467360 - f32.const -0.10728006064891815 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2867 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 15.783316612243652 - f32.const 18.55087661743164 - f32.const 16889945384019652771840 - f32.const 0.09180249273777008 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2868 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 8.319306373596191 - f32.const 0.4197559952735901 - f32.const 2.43339204788208 - f32.const 0.009661106392741203 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2869 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.831245422363281 - f32.const 10.462174415588379 - f32.const 102690080 - f32.const -1.4237762661650777e-03 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2870 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.415773391723633 - f32.const 17.12181282043457 - f32.const 3619232.25 - f32.const 0.2961936891078949 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2871 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.03832307085394859 - f32.const 0.011254354380071163 - f32.const 0.9639571905136108 - f32.const -0.4840981066226959 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2872 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.4462971687316895 - f32.const 15.814705848693848 - f32.const 437749907456 - f32.const -0.40305933356285095 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2873 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 12.87027645111084 - f32.const 14.93734359741211 - f32.const 37522809982812160 - f32.const 0.10445278882980347 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2874 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2876 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2877 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2878 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2879 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2880 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.401298464324817e-45 - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2881 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2883 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2884 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2885 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 1 - f32.const -inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2886 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2888 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2889 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2890 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2891 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2892 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2893 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2894 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000001192092896 - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2896 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2897 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000001192092896 - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2898 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2899 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000001192092896 - f32.const -inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2901 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2902 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000001192092896 - f32.const -inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2903 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2904 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999999403953552 - f32.const inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2906 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2907 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2908 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.9999999403953552 - f32.const inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2909 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.401298464324817e-45 - f32.const inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2910 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2911 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1.401298464324817e-45 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2913 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1.401298464324817e-45 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2914 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -3402823466385288598117041e14 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2916 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -1.401298464324817e-45 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2917 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -3402823466385288598117041e14 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2918 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -2 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2919 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1.401298464324817e-45 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2920 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const -inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2921 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -17 - f32.const -inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2922 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1.401298464324817e-45 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2924 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -1.401298464324817e-45 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2925 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 3402823466385288598117041e14 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2927 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 1.401298464324817e-45 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2928 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -3402823466385288598117041e14 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2929 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -1.401298464324817e-45 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2930 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 5 - f32.const -inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2931 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -5 - f32.const -0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2932 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 6 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2933 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -6 - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2934 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 2.000000238418579 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2936 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 1.0000001192092896 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2937 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.401298464324817e-45 - f32.const -1.9999998807907104 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2938 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -10 - f32.const 309 - f32.const -inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2940 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 0.5 - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2941 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.802596928649634e-45 - f32.const 0.5 - f32.const 5.293955920339377e-23 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2943 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1210387714598537e-44 - f32.const 0.5 - f32.const 1.0587911840678754e-22 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2944 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.938735877055719e-39 - f32.const 0.5 - f32.const 5.421010862427522e-20 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2945 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.877471754111438e-39 - f32.const -1 - f32.const 1701411834604692317316873e14 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2946 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754943508222875e-38 - f32.const 0.5 - f32.const 1.0842021724855044e-19 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2947 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754943508222875e-38 - f32.const -1 - f32.const 8507059173023461586584365e13 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2948 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.350988701644575e-38 - f32.const -1 - f32.const 4253529586511730793292182e13 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2949 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.70197740328915e-38 - f32.const 0.5 - f32.const 2.168404344971009e-19 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2950 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.70197740328915e-38 - f32.const -1 - f32.const 2126764793255865396646091e13 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2951 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.293955920339377e-23 - f32.const 2 - f32.const 2.802596928649634e-45 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2952 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.168404344971009e-19 - f32.const 0.5 - f32.const 4.656612873077393e-10 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2953 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3283064365386963e-10 - f32.const 2 - f32.const 5.421010862427522e-20 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2954 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.656612873077393e-10 - f32.const 2 - f32.const 2.168404344971009e-19 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2955 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1920928955078125e-07 - f32.const -1 - f32.const 8388608 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2956 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.000034332275390625 - f32.const 0.5 - f32.const 0.005859375 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2957 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.00006103515625 - f32.const 0.5 - f32.const 0.0078125 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2958 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.00390625 - f32.const 0.5 - f32.const 0.0625 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2959 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.03515625 - f32.const 0.5 - f32.const 0.1875 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2960 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.0625 - f32.const 0.5 - f32.const 0.25 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2961 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.25 - f32.const 2 - f32.const 0.0625 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2962 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2126764793255865396646091e13 - f32.const 0.5 - f32.const 4611686018427387904 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2964 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2126764793255865396646091e13 - f32.const -1 - f32.const 4.70197740328915e-38 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2965 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4253529586511730793292182e13 - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2966 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4253529586511730793292182e13 - f32.const -1 - f32.const 2.350988701644575e-38 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2967 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4253529586511730793292182e13 - f32.const -inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2968 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 8507059173023461586584365e13 - f32.const 0.5 - f32.const 9223372036854775808 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2969 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 8507059173023461586584365e13 - f32.const -1 - f32.const 1.1754943508222875e-38 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2970 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3402823466385288598117041e14 - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2972 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3402823466385288598117041e14 - f32.const -inf - f32.const 0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2973 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1701411834604692317316873e14 - f32.const -2 - f32.const 0 - f32.const -2.465190328815662e-32 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2975 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1701411834604692317316873e14 - f32.const -3 - f32.const 0 - f32.const -0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2976 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1701411834604692317316873e14 - f32.const -255 - f32.const 0 - f32.const -0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2977 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1701411834604692317316873e14 - f32.const -256 - f32.const 0 - f32.const -0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2978 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1701411834604692317316873e14 - f32.const -257 - f32.const 0 - f32.const -0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2979 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1701411834604692317316873e14 - f32.const -260 - f32.const 0 - f32.const -0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2980 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1701411834604692317316873e14 - f32.const -261 - f32.const 0 - f32.const -0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2981 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1701411834604692317316873e14 - f32.const -32767 - f32.const 0 - f32.const -0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2982 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1701411834604692317316873e14 - f32.const -32768 - f32.const 0 - f32.const -0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2983 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3402822046616616342500112e14 - f32.const -1 - f32.const 2.938737278354183e-39 - f32.const -4.768373855768004e-07 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2984 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3402822046616616342500112e14 - f32.const -2 - f32.const 0 - f32.const -6.162981699510909e-33 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2985 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1701411834604692317316873e14 - f32.const -32767 - f32.const -0 - f32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2987 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1701411834604692317316873e14 - f32.const -32768 - f32.const 0 - f32.const -0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2988 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3402822046616616342500112e14 - f32.const -1 - f32.const -2.938737278354183e-39 - f32.const 4.768373855768004e-07 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2989 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3402822046616616342500112e14 - f32.const -2 - f32.const 0 - f32.const -6.162981699510909e-33 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2990 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/bindings/Math/random - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - loop $for-loop|0 - local.get $1 - f64.convert_i32_s - f64.const 1e6 - f64.lt - if - global.get $~lib/math/random_seeded - i32.eqz - if - call $~lib/builtins/seed - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - end - global.get $~lib/math/random_state0_64 - local.set $2 - global.get $~lib/math/random_state1_64 - local.tee $3 - global.set $~lib/math/random_state0_64 - local.get $3 - local.get $2 - local.get $2 - i64.const 23 - i64.shl - i64.xor - local.tee $2 - local.get $2 - i64.const 17 - i64.shr_u - i64.xor - i64.xor - local.get $3 - i64.const 26 - i64.shr_u - i64.xor - global.set $~lib/math/random_state1_64 - local.get $3 - i64.const 12 - i64.shr_u - i64.const 4607182418800017408 - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $0 - f64.const 1 - f64.lt - i32.const 0 - local.get $0 - f64.const 0 - f64.ge - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 2999 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - call $~lib/bindings/Math/random - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - f64.convert_i32_s - f64.const 1e6 - f64.lt - if - global.get $~lib/math/random_seeded - i32.eqz - if - call $~lib/builtins/seed - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - end - global.get $~lib/math/random_state0_32 - local.tee $4 - global.get $~lib/math/random_state1_32 - i32.xor - local.tee $5 - local.get $4 - i32.const 26 - i32.rotl - i32.xor - local.get $5 - i32.const 9 - i32.shl - i32.xor - global.set $~lib/math/random_state0_32 - local.get $5 - i32.const 13 - i32.rotl - global.set $~lib/math/random_state1_32 - local.get $4 - i32.const -1640531525 - i32.mul - i32.const 5 - i32.rotl - i32.const 5 - i32.mul - i32.const 9 - i32.shr_u - i32.const 1065353216 - i32.or - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $6 - f32.const 1 - f32.lt - i32.const 0 - local.get $6 - f32.const 0 - f32.ge - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3007 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - f64.const -8.06684839057968 - f64.const -8 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3021 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 4 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3022 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -8 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3023 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -7 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3024 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 9 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3025 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 1 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3026 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3027 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 1 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3028 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 1 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3029 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -1 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3030 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3033 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3034 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3035 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3036 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3037 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3038 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3039 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3040 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -0 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3041 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 2 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3042 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const -1 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3043 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const 1 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3044 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const -1 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3045 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const 1 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3046 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.9999923706054688 - f64.const -1 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3047 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.888609052210118e-31 - f64.const 0 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3048 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -0 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3049 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -8 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3058 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 4 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3059 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -8 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3060 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -7 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3061 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 9 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3062 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 1 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3063 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3064 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 1 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3065 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 1 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3066 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -1 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3067 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3070 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3071 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3072 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3073 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3074 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3075 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3076 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3077 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -0 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3078 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 2 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3079 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const -1 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3080 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const 1 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3081 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const -1 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3082 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const 1 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3083 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.9999923706054688 - f32.const -1 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3084 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 0 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3085 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -0 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3086 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3097 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3098 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3099 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - f64.const 1 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const -1 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -1 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2 - f32.const 1 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const -1 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3118 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -1 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const 1.0044767307740567 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3158 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const 4.345239849338305 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3159 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const -0.09061141541648476 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3160 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const -1.9641383050707404 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3161 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const -0.35572720174700656 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const 0.17067236731650248 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const -0.016443286217702822 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3164 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const -0.792054511984896 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3165 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 0.615702673197924 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3166 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const -0.0106815621160685 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3167 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3170 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const -0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3171 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 0.5 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3172 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 1 - f64.const -0.5 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3173 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3174 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1 - f64.const -0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3175 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 1 - f64.const -0.5 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3176 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const 1 - f64.const 0.5 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - f64.const 1 - f64.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3178 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const 1 - f64.const -0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3179 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3180 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 1 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3181 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3182 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3183 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const -0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3184 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const -1 - f64.const 0.5 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3185 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -1 - f64.const -0.5 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3186 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1 - f64.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3187 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const -0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3188 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const -1 - f64.const -0.5 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3189 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const -1 - f64.const 0.5 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3190 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - f64.const -1 - f64.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3191 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const -1 - f64.const -0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3192 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -1 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3194 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3195 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3196 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3197 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3198 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -inf - f64.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3200 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3201 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3202 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const -0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3203 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -inf - f64.const -0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3204 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3205 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3206 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3207 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3208 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3210 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3211 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3212 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3213 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3214 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 2 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3215 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0.5 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3216 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3217 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 2 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3218 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -0.5 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3219 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3220 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3221 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3222 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3223 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const 1 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3224 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const -1 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3225 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3226 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const inf - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3227 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -inf - f64.const 1 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3228 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -inf - f64.const -1 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3229 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -inf - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3230 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - f64.const nan:0x8000000000000 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3231 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const 0.5 - f64.const -0.25 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3232 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const 0.5 - f64.const 0.25 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3233 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const -0.5 - f64.const -0.25 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3234 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const -0.5 - f64.const 0.25 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3235 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8e-323 - f64.const inf - f64.const 8e-323 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3236 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const 1.004476547241211 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3245 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const 4.345239639282227 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3246 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const -0.09061169624328613 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3247 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const -1.9641380310058594 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3248 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const -0.3557271957397461 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3249 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const 0.17067205905914307 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3250 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const -0.016443386673927307 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3251 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const -0.7920545339584351 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3252 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 0.6157026886940002 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3253 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const -0.010681532323360443 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3254 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3257 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const -0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3258 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 0.5 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3259 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 1 - f32.const -0.5 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3260 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3261 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 1 - f32.const -0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3262 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const 1 - f32.const -0.5 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3263 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32.const 1 - f32.const 0.5 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3264 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2 - f32.const 1 - f32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3265 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const 1 - f32.const -0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3266 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3267 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 1 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3268 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3269 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -1 - f32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3270 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const -0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3271 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const -1 - f32.const 0.5 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3272 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -1 - f32.const -0.5 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3273 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -1 - f32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3274 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const -0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3275 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const -1 - f32.const -0.5 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3276 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32.const -1 - f32.const 0.5 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3277 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2 - f32.const -1 - f32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3278 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const -1 - f32.const -0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3279 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -1 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3280 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -1 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3281 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3282 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3283 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3284 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3285 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -inf - f32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3286 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3287 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3288 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3289 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const -0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3290 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -inf - f32.const -0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3291 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3292 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3293 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3294 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3295 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3296 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3297 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3298 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3299 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3300 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3301 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 2 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3302 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0.5 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3303 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3304 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 2 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3305 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -0.5 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3306 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3307 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3308 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3309 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3310 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const 1 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3311 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const -1 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3312 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3313 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const inf - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3314 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -inf - f32.const 1 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3315 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -inf - f32.const -1 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3316 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -inf - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3317 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - f32.const nan:0x400000 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3318 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const 0.5 - f32.const -0.25 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3319 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const 0.5 - f32.const 0.25 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3320 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const -0.5 - f32.const -0.25 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3321 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const -0.5 - f32.const 0.25 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3322 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.877471754111438e-39 - f32.const inf - f32.const 5.877471754111438e-39 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3323 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -0.9774292928781227 - f64.const -0.14564912021160126 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3335 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -0.9333544736965718 - f64.const -0.08813747018575668 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3336 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -0.8640924711706304 - f64.const -0.11743883043527603 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3337 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -0.24593894772615374 - f64.const -0.12697851657867432 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3338 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 0.15706789772028007 - f64.const -0.029550159350037575 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3339 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.6146844860113447 - f64.const -0.09976737946271896 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3340 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.39549242182823696 - f64.const -0.3668774962425232 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3341 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5326763286672376 - f64.const -0.3550407588481903 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3342 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.6991102068649779 - f64.const -0.427672415971756 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3343 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.6278312326301215 - f64.const -0.3828115463256836 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3344 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.313225746154785e-10 - f64.const 9.313225746154785e-10 - f64.const 6.510416860692203e-04 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3347 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9.313225746154785e-10 - f64.const -9.313225746154785e-10 - f64.const -6.510416860692203e-04 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3348 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - f64.const 2.2250738585072014e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3349 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072014e-308 - f64.const -2.2250738585072014e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3350 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const 5e-324 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3351 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5e-324 - f64.const -5e-324 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3352 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3353 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3354 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507202e-308 - f64.const 2.225073858507202e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3355 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072024e-308 - f64.const 2.2250738585072024e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3356 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.4501477170144003e-308 - f64.const 4.4501477170144003e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3357 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.450147717014403e-308 - f64.const 4.450147717014403e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3358 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.450147717014406e-308 - f64.const 4.450147717014406e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3359 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.900295434028806e-308 - f64.const 8.900295434028806e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3360 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1175870895385742e-08 - f64.const 1.1175870895385742e-08 - f64.const 0.140625 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3361 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.4901161193847656e-08 - f64.const 1.4901161193847656e-08 - f64.const 0.1666666716337204 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3362 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507202e-308 - f64.const -2.225073858507202e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3363 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072024e-308 - f64.const -2.2250738585072024e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3364 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.4501477170144003e-308 - f64.const -4.4501477170144003e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3365 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.450147717014403e-308 - f64.const -4.450147717014403e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3366 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.450147717014406e-308 - f64.const -4.450147717014406e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3367 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.900295434028806e-308 - f64.const -8.900295434028806e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3368 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.1175870895385742e-08 - f64.const -1.1175870895385742e-08 - f64.const -0.140625 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3369 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.4901161193847656e-08 - f64.const -1.4901161193847656e-08 - f64.const -0.1666666716337204 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3370 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.4901161193847656e-08 - f64.const -1.4901161193847656e-08 - f64.const -0.1666666716337204 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3371 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-323 - f64.const 1e-323 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3372 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.4e-323 - f64.const 4.4e-323 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3373 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.562684646268003e-309 - f64.const 5.562684646268003e-309 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3374 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1125369292536007e-308 - f64.const 1.1125369292536007e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3375 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072004e-308 - f64.const 2.2250738585072004e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3376 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507201e-308 - f64.const 2.225073858507201e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3377 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e-323 - f64.const -1e-323 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3378 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.4e-323 - f64.const -4.4e-323 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3379 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5.562684646268003e-309 - f64.const -5.562684646268003e-309 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3380 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.1125369292536007e-308 - f64.const -1.1125369292536007e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3381 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072004e-308 - f64.const -2.2250738585072004e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3382 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507201e-308 - f64.const -2.225073858507201e-308 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3383 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3386 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3387 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3388 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3389 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3390 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5707963267948966 - call $~lib/math/NativeMath.sin - f64.const 1.5707963267948966 - call $~lib/bindings/Math/sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3393 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.141592653589793 - call $~lib/math/NativeMath.sin - f64.const 3.141592653589793 - call $~lib/bindings/Math/sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3394 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3283064365386963e-10 - f64.const 2.3283064365386963e-10 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3397 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.3283064365386963e-10 - f64.const -2.3283064365386963e-10 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3398 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.3826834323650898 - f64.const 0.39269908169872414 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3400 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.3826834323650898 - f64.const -0.39269908169872414 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3401 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.479425538604203 - f64.const 0.5 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3404 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.479425538604203 - f64.const -0.5 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3405 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1.5707963267948966 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3406 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1.5707963267948966 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3407 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.2246467991473532e-16 - f64.const 3.141592653589793 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3409 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.047032979958965e-14 - f64.const 6911.503837897545 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3410 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.7071067811865477 - f64.const 5.497787143782138 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3412 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7071067811865474 - f64.const 7.0685834705770345 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3413 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7071067811865483 - f64.const 8.63937979737193 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3414 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.7071067811865479 - f64.const 10.210176124166829 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3415 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3.2103381051568376e-11 - f64.const 823549.6645826427 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3416 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.377820109360752 - f64.const 1329227995784915872903807e12 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3419 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.377820109360752 - f64.const -1329227995784915872903807e12 - call $~lib/math/NativeMath.sin - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3420 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -0.977429211139679 - f32.const 0.0801057294011116 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3429 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -0.933354377746582 - f32.const 0.34475627541542053 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3430 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -0.8640924692153931 - f32.const -0.468659907579422 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3431 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -0.24593880772590637 - f32.const -0.3955177664756775 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3432 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 0.1570674479007721 - f32.const -0.24006809294223785 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3433 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.6146844625473022 - f32.const -0.07707194238901138 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3434 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.39549243450164795 - f32.const -0.11720617115497589 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3435 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.5326763391494751 - f32.const -0.16059114038944244 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3436 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.699110209941864 - f32.const 0.26384368538856506 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3437 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.627831220626831 - f32.const 0.005127954296767712 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3438 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3441 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3442 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3443 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3444 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3445 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.862645149230957e-09 - f32.const 1.862645149230957e-09 - f32.const 4.850638554015907e-12 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3448 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.862645149230957e-09 - f32.const -1.862645149230957e-09 - f32.const -4.850638554015907e-12 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3449 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754943508222875e-38 - f32.const 1.1754943508222875e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3450 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754943508222875e-38 - f32.const -1.1754943508222875e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3451 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const 1.401298464324817e-45 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3452 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.401298464324817e-45 - f32.const -1.401298464324817e-45 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3453 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.175494490952134e-38 - f32.const 1.175494490952134e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3454 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754946310819804e-38 - f32.const 1.1754946310819804e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3455 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3509880009953429e-38 - f32.const 2.3509880009953429e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3456 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.350988701644575e-38 - f32.const 2.350988701644575e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3457 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3509895424236536e-38 - f32.const 2.3509895424236536e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3458 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.70197740328915e-38 - f32.const 4.70197740328915e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3459 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1175870895385742e-08 - f32.const 1.1175870895385742e-08 - f32.const 2.6193447411060333e-10 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3460 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.4901161193847656e-08 - f32.const 1.4901161193847656e-08 - f32.const 3.1044086745701804e-10 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3461 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.000244140625 - f32.const 0.000244140625 - f32.const 0.0833333358168602 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3462 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.0003662109375 - f32.const 0.0003662109375 - f32.const 0.28125 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3463 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.175494490952134e-38 - f32.const -1.175494490952134e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3464 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754946310819804e-38 - f32.const -1.1754946310819804e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3465 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.3509880009953429e-38 - f32.const -2.3509880009953429e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3466 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.350988701644575e-38 - f32.const -2.350988701644575e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3467 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.3509895424236536e-38 - f32.const -2.3509895424236536e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3468 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -4.70197740328915e-38 - f32.const -4.70197740328915e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3469 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1175870895385742e-08 - f32.const -1.1175870895385742e-08 - f32.const -2.6193447411060333e-10 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3470 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.4901161193847656e-08 - f32.const -1.4901161193847656e-08 - f32.const -3.1044086745701804e-10 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3471 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.000244140625 - f32.const -0.000244140625 - f32.const -0.0833333358168602 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3472 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.0003662109375 - f32.const -0.0003662109375 - f32.const -0.28125 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3473 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.802596928649634e-45 - f32.const 2.802596928649634e-45 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3474 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.2611686178923354e-44 - f32.const 1.2611686178923354e-44 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3475 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.938735877055719e-39 - f32.const 2.938735877055719e-39 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3476 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.877471754111438e-39 - f32.const 5.877471754111438e-39 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3477 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754940705625946e-38 - f32.const 1.1754940705625946e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3478 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754942106924411e-38 - f32.const 1.1754942106924411e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3479 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.802596928649634e-45 - f32.const -2.802596928649634e-45 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3480 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.2611686178923354e-44 - f32.const -1.2611686178923354e-44 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3481 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.938735877055719e-39 - f32.const -2.938735877055719e-39 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3482 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -5.877471754111438e-39 - f32.const -5.877471754111438e-39 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3483 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754940705625946e-38 - f32.const -1.1754940705625946e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3484 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754942106924411e-38 - f32.const -1.1754942106924411e-38 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3485 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 255.99993896484375 - f32.const -0.9992055892944336 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3488 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5033165 - f32.const 0.5312945246696472 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3489 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 421657440 - f32.const -0.7397398948669434 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3490 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2147483392 - f32.const 0.2762770354747772 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3491 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 68719476736 - f32.const 0.9855440855026245 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3492 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 549755813888 - f32.const -0.9782648086547852 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3493 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3402823466385288598117041e14 - f32.const -0.5218765139579773 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3494 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -255.99993896484375 - f32.const 0.9992055892944336 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3495 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -5033165 - f32.const -0.5312945246696472 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3496 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -421657440 - f32.const 0.7397398948669434 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3497 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2147483392 - f32.const -0.2762770354747772 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3498 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -68719476736 - f32.const -0.9855440855026245 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3499 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -549755813888 - f32.const 0.9782648086547852 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3500 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3402823466385288598117041e14 - f32.const 0.5218765139579773 - f32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3501 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -1593.5206801156262 - f64.const -0.2138727605342865 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3513 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 38.54878088685412 - f64.const 0.21537430584430695 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3514 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2182.6307505145546 - f64.const 0.16213826835155487 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3515 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -343.2723926847529 - f64.const 0.20479513704776764 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3516 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 5291.7790755194055 - f64.const -0.48676517605781555 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3517 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.7114062568229157 - f64.const -0.4584641456604004 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3518 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.41790065258739445 - f64.const 0.37220045924186707 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3519 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5917755935451237 - f64.const 0.46178996562957764 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3520 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.8538292008852542 - f64.const -0.07019051909446716 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3521 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.732097615653169 - f64.const 0.26858529448509216 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3522 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3525 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3526 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3527 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - f64.const 0 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3528 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3529 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -1593.521240234375 - f32.const 0.1671663224697113 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3538 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 38.548770904541016 - f32.const -0.49340328574180603 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3539 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2182.630859375 - f32.const 0.0849970355629921 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3540 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -343.2723388671875 - f32.const 0.0704190656542778 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3541 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 5291.78125 - f32.const -0.44362515211105347 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3542 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.7114062309265137 - f32.const 0.058103885501623154 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3543 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.4179006516933441 - f32.const 0.39349499344825745 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3544 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.5917755961418152 - f32.const -0.4183797240257263 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3545 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.8538292050361633 - f32.const 0.45992106199264526 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3546 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.7320976257324219 - f32.const -0.48159059882164 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3547 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3550 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3551 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3552 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - f32.const 0 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3553 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3554 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3566 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 2.0845238903256313 - f64.const -0.07180261611938477 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3567 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3568 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3569 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 3.0441841217266385 - f64.const -0.01546262577176094 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3570 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.8136251582267503 - f64.const -0.08618157356977463 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3571 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3572 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.7495063350104014 - f64.const -0.0981396734714508 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3573 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.879859248170583 - f64.const -0.37124353647232056 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3574 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3575 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3578 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3579 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3580 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3581 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3582 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3583 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3584 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4 - f64.const 2 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3585 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-323 - f64.const 3.1434555694052576e-162 - f64.const 0.43537619709968567 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3586 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5e-323 - f64.const 3.849931087076416e-162 - f64.const -0.45194002985954285 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3587 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const 2.2227587494850775e-162 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3588 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5e-324 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3589 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999999999999999 - f64.const 0.9999999999999999 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3590 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.9999999999999998 - f64.const 1.414213562373095 - f64.const -0.21107041835784912 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3591 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000000000000002 - f64.const 1 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3592 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0000000000000004 - f64.const 1.4142135623730951 - f64.const -0.27173060178756714 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3593 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000000000000002 - f64.const 1 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3594 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999999999999999 - f64.const 0.9999999999999999 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3595 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1797693134862315708145274e284 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3596 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const 1340780792994259561100831e130 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3597 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 179769313486231490980915e285 - f64.const 134078079299425926338769e131 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3598 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862314111473026e284 - f64.const 1340780792994258965674548e130 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3599 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862313313136902e284 - f64.const 1340780792994258667961407e130 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3600 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862312514800778e284 - f64.const 1340780792994258370248265e130 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3601 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862311716464655e284 - f64.const 1340780792994258072535124e130 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3602 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862310918128531e284 - f64.const 1340780792994257774821982e130 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3603 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862310119792407e284 - f64.const 1340780792994257477108841e130 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3604 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862309321456283e284 - f64.const 1340780792994257179395699e130 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3605 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862308523120159e284 - f64.const 1340780792994256881682558e130 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3606 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862307724784036e284 - f64.const 1340780792994256583969417e130 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3607 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507203e-308 - f64.const 1.4916681462400417e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3608 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507205e-308 - f64.const 1.4916681462400423e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3609 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507207e-308 - f64.const 1.491668146240043e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3610 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507209e-308 - f64.const 1.4916681462400437e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3611 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507211e-308 - f64.const 1.4916681462400443e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3612 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072127e-308 - f64.const 1.491668146240045e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3613 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072147e-308 - f64.const 1.4916681462400457e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3614 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072167e-308 - f64.const 1.4916681462400463e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3615 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072187e-308 - f64.const 1.491668146240047e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3616 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072207e-308 - f64.const 1.4916681462400476e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3617 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072226e-308 - f64.const 1.4916681462400483e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3618 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072246e-308 - f64.const 1.491668146240049e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3619 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072266e-308 - f64.const 1.4916681462400496e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3620 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072286e-308 - f64.const 1.4916681462400503e-154 - f64.const -0.5 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3621 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 92.35130391890645 - f64.const 9.609958580499006 - f64.const 0.4998137056827545 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3622 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 93.3599596388916 - f64.const 9.662295774757238 - f64.const -0.49979978799819946 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3623 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 95.42049628886124 - f64.const 9.76834153215689 - f64.const -0.49997270107269287 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3624 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 95.87916941885449 - f64.const 9.791790919890728 - f64.const 0.4998766779899597 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3625 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 96.84804174884022 - f64.const 9.841140266698785 - f64.const 0.499801903963089 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3626 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 97.43639050883155 - f64.const 9.87098731175517 - f64.const 0.4997696280479431 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3627 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 97.50957979883047 - f64.const 9.874693909120955 - f64.const 0.49999818205833435 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3628 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 97.80496893882612 - f64.const 9.88963947466368 - f64.const -0.4999580681324005 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3629 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 98.2751822888192 - f64.const 9.913383997849534 - f64.const 0.49979931116104126 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3630 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 99.47293564880155 - f64.const 9.973611966023219 - f64.const -0.4999540448188782 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3631 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 100.57047130878539 - f64.const 10.028483001370914 - f64.const -0.49996453523635864 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3632 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 100.60954608878481 - f64.const 10.030431002144665 - f64.const 0.49975672364234924 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3633 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 100.67909109878379 - f64.const 10.033897104255344 - f64.const -0.4997771382331848 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3634 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 101.12268095877725 - f64.const 10.055977374615422 - f64.const 0.49988678097724915 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3635 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 101.3027691287746 - f64.const 10.064927676281366 - f64.const 0.4999105632305145 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3636 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.45932313565507e-307 - f64.const 4.9591563149945874e-154 - f64.const -0.4998999834060669 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3637 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.610957305180409e-307 - f64.const 7.490632353266584e-154 - f64.const -0.4999343752861023 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3638 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.8073887977408524e-307 - f64.const 7.62062254526548e-154 - f64.const -0.49989569187164307 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3639 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.026137080471427e-307 - f64.const 8.382205605013174e-154 - f64.const 0.49980640411376953 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3640 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.438697769194972e-307 - f64.const 9.186238495268328e-154 - f64.const -0.4999065697193146 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3641 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1607792515836795e-306 - f64.const 1.0773946591586944e-153 - f64.const -0.49997684359550476 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3642 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.2827413827423193e-306 - f64.const 1.1325817333606962e-153 - f64.const -0.4999513030052185 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3643 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.7116604596087457e-306 - f64.const 1.3083044216117078e-153 - f64.const -0.49986395239830017 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3644 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.038173251686994e-306 - f64.const 1.4276460526639628e-153 - f64.const 0.4998403787612915 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3645 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.171572060856931e-306 - f64.const 1.4736254818836879e-153 - f64.const 0.4999290406703949 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3646 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.4681399631804094e-306 - f64.const 1.5710314965589996e-153 - f64.const 0.49989044666290283 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3647 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.5175533964200588e-306 - f64.const 1.5866799918131124e-153 - f64.const -0.4997701048851013 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3648 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.6461505468829625e-306 - f64.const 1.6266992797941982e-153 - f64.const 0.4998672902584076 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3649 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.8167076367720413e-306 - f64.const 1.9536395872248397e-153 - f64.const 0.49983471632003784 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3650 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.5743220778562766e-306 - f64.const 2.1387664851161936e-153 - f64.const 0.49985939264297485 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3651 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3660 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 2.084523916244507 - f32.const 0.3200402557849884 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3661 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3662 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3663 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 3.0441842079162598 - f32.const 0.05022354796528816 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3664 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.813625156879425 - f32.const 0.2240506112575531 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3665 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3666 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.7495063543319702 - f32.const 0.05895441770553589 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3667 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.879859209060669 - f32.const -0.4874873757362366 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3668 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3669 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3672 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3673 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3674 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3675 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3676 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3677 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3678 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4 - f32.const 2 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3679 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.802596928649634e-45 - f32.const 5.293955920339377e-23 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3680 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.203895392974451e-45 - f32.const 6.483745598763743e-23 - f32.const 0.37388554215431213 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3681 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const 3.743392066509216e-23 - f32.const -0.20303145051002502 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3682 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.401298464324817e-45 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3683 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3402823466385288598117041e14 - f32.const 18446742974197923840 - f32.const -0.5 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3684 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3402823466385288598117041e14 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3685 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999998807907104 - f32.const 0.9999999403953552 - f32.const 2.980232594040899e-08 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3686 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999999403953552 - f32.const 0.9999999403953552 - f32.const -0.5 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3687 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.999999761581421 - f32.const 1.4142134189605713 - f32.const -0.4959246516227722 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3688 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.9999998807907104 - f32.const 1.4142135381698608 - f32.const 0.15052194893360138 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3689 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000001192092896 - f32.const 1 - f32.const -0.5 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3690 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.000000238418579 - f32.const 1.0000001192092896 - f32.const 5.960463766996327e-08 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3691 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.000000238418579 - f32.const 1.4142136573791504 - f32.const 0.08986179530620575 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3692 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.000000476837158 - f32.const 1.41421377658844 - f32.const 0.3827550709247589 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3693 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.626603542401633 - f64.const -0.2727603316307068 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3705 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 2.600191705822202 - f64.const 0.2651003301143646 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3706 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const 1.7167408328741052 - f64.const -0.24687519669532776 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3707 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -0.2537322523453725 - f64.const -0.4679703712463379 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3708 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const -0.15904195727191958 - f64.const -0.06704077869653702 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3709 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.7792919106910434 - f64.const -0.038056135177612305 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3710 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.43059952879543656 - f64.const -0.09242714196443558 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3711 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.62940368731874 - f64.const -0.321913480758667 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3712 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.9777574652949645 - f64.const -0.1966651827096939 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3713 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.8066186630209123 - f64.const -0.067665696144104 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3714 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.313225746154785e-10 - f64.const 9.313225746154785e-10 - f64.const -1.3020833721384406e-03 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3717 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9.313225746154785e-10 - f64.const -9.313225746154785e-10 - f64.const 1.3020833721384406e-03 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3718 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - f64.const 2.2250738585072014e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3719 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072014e-308 - f64.const -2.2250738585072014e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3720 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const 5e-324 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3721 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5e-324 - f64.const -5e-324 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3722 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3723 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3724 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7853981633974483 - f64.const 0.9999999999999999 - f64.const -0.4484681189060211 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3725 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.7853981633974483 - f64.const -0.9999999999999999 - f64.const 0.4484681189060211 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3726 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507202e-308 - f64.const 2.225073858507202e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3727 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072024e-308 - f64.const 2.2250738585072024e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3728 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.4501477170144003e-308 - f64.const 4.4501477170144003e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3729 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.450147717014403e-308 - f64.const 4.450147717014403e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3730 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.450147717014406e-308 - f64.const 4.450147717014406e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3731 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.900295434028806e-308 - f64.const 8.900295434028806e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3732 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1175870895385742e-08 - f64.const 1.1175870895385742e-08 - f64.const -0.28125 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3733 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.4901161193847656e-08 - f64.const 1.4901161193847656e-08 - f64.const -0.3333333432674408 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3734 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507202e-308 - f64.const -2.225073858507202e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3735 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072024e-308 - f64.const -2.2250738585072024e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3736 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.4501477170144003e-308 - f64.const -4.4501477170144003e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3737 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.450147717014403e-308 - f64.const -4.450147717014403e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3738 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.450147717014406e-308 - f64.const -4.450147717014406e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3739 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.900295434028806e-308 - f64.const -8.900295434028806e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3740 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.1175870895385742e-08 - f64.const -1.1175870895385742e-08 - f64.const 0.28125 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3741 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.4901161193847656e-08 - f64.const -1.4901161193847656e-08 - f64.const 0.3333333432674408 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3742 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-323 - f64.const 1e-323 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3743 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.4e-323 - f64.const 4.4e-323 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3744 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.562684646268003e-309 - f64.const 5.562684646268003e-309 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3745 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1125369292536007e-308 - f64.const 1.1125369292536007e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3746 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072004e-308 - f64.const 2.2250738585072004e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3747 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507201e-308 - f64.const 2.225073858507201e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3748 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e-323 - f64.const -1e-323 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3749 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.4e-323 - f64.const -4.4e-323 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3750 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5.562684646268003e-309 - f64.const -5.562684646268003e-309 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3751 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.1125369292536007e-308 - f64.const -1.1125369292536007e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3752 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072004e-308 - f64.const -2.2250738585072004e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3753 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507201e-308 - f64.const -2.225073858507201e-308 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3754 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3283064365386963e-10 - call $~lib/math/NativeMath.tan - f64.const 2.3283064365386963e-10 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3757 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.3283064365386963e-10 - call $~lib/math/NativeMath.tan - f64.const -2.3283064365386963e-10 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3758 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6875 - call $~lib/math/NativeMath.tan - f64.const 0.6875 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3759 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6875 - call $~lib/math/NativeMath.tan - f64.const -0.6875 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3760 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.39269908169872414 - call $~lib/math/NativeMath.tan - f64.const 0.39269908169872414 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3761 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6743358 - call $~lib/math/NativeMath.tan - f64.const 0.6743358 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3762 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.725290298461914e-09 - call $~lib/math/NativeMath.tan - f64.const 3.725290298461914e-09 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3763 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5707963267948966 - call $~lib/math/NativeMath.tan - f64.const 1.5707963267948966 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3764 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - call $~lib/math/NativeMath.tan - f64.const 0.5 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3766 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.107148717794091 - call $~lib/math/NativeMath.tan - f64.const 1.107148717794091 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3767 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.497787143782138 - call $~lib/math/NativeMath.tan - f64.const 5.497787143782138 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3768 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.0685834705770345 - call $~lib/math/NativeMath.tan - f64.const 7.0685834705770345 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3769 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1647099.3291652855 - call $~lib/math/NativeMath.tan - f64.const 1647099.3291652855 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3770 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1647097.7583689587 - call $~lib/math/NativeMath.tan - f64.const 1647097.7583689587 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3771 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1329227995784915872903807e12 - call $~lib/math/NativeMath.tan - f64.const 1329227995784915872903807e12 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3772 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1329227995784915872903807e12 - call $~lib/math/NativeMath.tan - f64.const -1329227995784915872903807e12 - call $~lib/bindings/Math/tan - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 3773 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3776 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3777 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3778 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3779 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3780 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.626595497131348 - f32.const 0.2455666959285736 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3789 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 2.6001901626586914 - f32.const 0.3652407228946686 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3790 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const 1.716740608215332 - f32.const 0.08169349282979965 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3791 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -0.2537320852279663 - f32.const 0.23186513781547546 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3792 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const -0.15904149413108826 - f32.const -0.009332014247775078 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3793 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.7792918682098389 - f32.const -0.06759700924158096 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3794 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.43059954047203064 - f32.const 0.005771996453404427 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3795 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.6294037103652954 - f32.const -0.16838163137435913 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3796 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.977757453918457 - f32.const 0.38969388604164124 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3797 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.8066186308860779 - f32.const 0.12294059991836548 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3798 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3801 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3802 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3803 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3804 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3805 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.862645149230957e-09 - f32.const 1.862645149230957e-09 - f32.const -9.701277108031814e-12 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3808 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.862645149230957e-09 - f32.const -1.862645149230957e-09 - f32.const 9.701277108031814e-12 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3809 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754943508222875e-38 - f32.const 1.1754943508222875e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3810 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754943508222875e-38 - f32.const -1.1754943508222875e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3811 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const 1.401298464324817e-45 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3812 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.401298464324817e-45 - f32.const -1.401298464324817e-45 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3813 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.175494490952134e-38 - f32.const 1.175494490952134e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3814 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754946310819804e-38 - f32.const 1.1754946310819804e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3815 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3509880009953429e-38 - f32.const 2.3509880009953429e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3816 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.350988701644575e-38 - f32.const 2.350988701644575e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3817 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3509895424236536e-38 - f32.const 2.3509895424236536e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3818 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.70197740328915e-38 - f32.const 4.70197740328915e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3819 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1175870895385742e-08 - f32.const 1.1175870895385742e-08 - f32.const -5.238689482212067e-10 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3820 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.4901161193847656e-08 - f32.const 1.4901161193847656e-08 - f32.const -6.208817349140361e-10 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3821 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.000244140625 - f32.const 0.000244140625 - f32.const -0.1666666716337204 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3822 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.175494490952134e-38 - f32.const -1.175494490952134e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3823 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754946310819804e-38 - f32.const -1.1754946310819804e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3824 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.3509880009953429e-38 - f32.const -2.3509880009953429e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3825 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.350988701644575e-38 - f32.const 2.350988701644575e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3826 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.3509895424236536e-38 - f32.const -2.3509895424236536e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3827 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -4.70197740328915e-38 - f32.const -4.70197740328915e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3828 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1175870895385742e-08 - f32.const -1.1175870895385742e-08 - f32.const 5.238689482212067e-10 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3829 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.4901161193847656e-08 - f32.const -1.4901161193847656e-08 - f32.const 6.208817349140361e-10 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3830 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.000244140625 - f32.const -0.000244140625 - f32.const 0.1666666716337204 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3831 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.802596928649634e-45 - f32.const 2.802596928649634e-45 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3832 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.2611686178923354e-44 - f32.const 1.2611686178923354e-44 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3833 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.938735877055719e-39 - f32.const 2.938735877055719e-39 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3834 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.877471754111438e-39 - f32.const 5.877471754111438e-39 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3835 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754940705625946e-38 - f32.const 1.1754940705625946e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3836 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754942106924411e-38 - f32.const 1.1754942106924411e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3837 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.802596928649634e-45 - f32.const -2.802596928649634e-45 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3838 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.2611686178923354e-44 - f32.const -1.2611686178923354e-44 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3839 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.938735877055719e-39 - f32.const -2.938735877055719e-39 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3840 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -5.877471754111438e-39 - f32.const -5.877471754111438e-39 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3841 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754940705625946e-38 - f32.const -1.1754940705625946e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3842 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754942106924411e-38 - f32.const -1.1754942106924411e-38 - f32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3843 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -0.999999803096032 - f64.const 0.012793331407010555 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3855 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 0.9996636978961307 - f64.const 0.1573508232831955 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3856 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -0.9999998950434862 - f64.const 0.27985066175460815 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3857 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -0.9999957568392429 - f64.const -0.44285574555397034 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3858 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 0.9999999821447234 - f64.const 0.4462755024433136 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3859 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.5796835018635275 - f64.const 0.4892043173313141 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3860 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.3855853099901652 - f64.const 0.35993871092796326 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3861 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5092819248700439 - f64.const -0.39436522126197815 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3862 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.6493374550318555 - f64.const -0.4899396002292633 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3863 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.590715084799841 - f64.const -0.0145387789234519 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3864 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3867 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3868 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const 0 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3869 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -1 - f64.const 0 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3870 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3871 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -0.9999998211860657 - f32.const -0.3034979999065399 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3880 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 0.9996637105941772 - f32.const 0.2154078334569931 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3881 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -0.9999998807907104 - f32.const 0.23912210762500763 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3882 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -0.999995768070221 - f32.const -0.18844597041606903 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3883 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 1 - f32.const 0.1497807800769806 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3884 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.5796834826469421 - f32.const -0.05590476095676422 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3885 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.38558530807495117 - f32.const 0.349787175655365 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3886 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.5092819333076477 - f32.const -0.1528785079717636 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3887 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.6493374705314636 - f32.const 0.4317026138305664 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3888 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.5907150506973267 - f32.const 0.4079873859882355 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3889 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3892 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3893 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const 0 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3894 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -1 - f32.const 0 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3895 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3896 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -8 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3908 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 4 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3909 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -8 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3910 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -6 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3911 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 9 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3912 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3913 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3914 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3915 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3916 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3917 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3920 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3921 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3922 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3923 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3924 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3925 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3926 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3927 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3928 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const 1 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3929 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const -1 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3930 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3931 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.9999923706054688 - f64.const -0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3932 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.888609052210118e-31 - f64.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3933 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3934 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -8 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3943 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 4 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3944 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -8 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3945 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -6 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3946 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 9 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3947 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3948 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3949 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3950 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3951 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3952 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3955 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3956 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3957 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3958 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3959 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3960 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3961 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3962 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3963 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const 1 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3964 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const -1 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3965 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3966 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.9999923706054688 - f32.const -0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3967 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3968 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 3969 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4602641186874283791 - i64.const -4616392916911125550 - i64.const -4628956453976145920 - i64.const -4626592471448962314 - i64.const -4630808324688838656 - call $std/math/test_sincos - i64.const 4616578323568966759 - i64.const -4616789907589610460 - i64.const -4632356642145435648 - i64.const -4623234040091605244 - i64.const -4630954342839484416 - call $std/math/test_sincos - i64.const -4602464091242371353 - i64.const -4617413764247143988 - i64.const -4630245256623816704 - i64.const -4620663195860462557 - i64.const -4641537901929168896 - call $std/math/test_sincos - i64.const -4604332007749985084 - i64.const -4625343132137557201 - i64.const -4629629133364658176 - i64.const 4606905765568473756 - i64.const -4621075345754292224 - call $std/math/test_sincos - i64.const 4621406507342668262 - i64.const 4594826987695694788 - i64.const -4639197561901547520 - i64.const -4616301417154991689 - i64.const 4602463851227643904 - call $std/math/test_sincos - i64.const 4604137858433287319 - i64.const 4603711805189578650 - i64.const -4631518618864058368 - i64.const 4605279855905985745 - i64.const 4593746800099196928 - call $std/math/test_sincos - i64.const -4622375691843501615 - i64.const -4622575858842575876 - i64.const -4623091339515396096 - i64.const 4606448054996611351 - i64.const -4624994927539912704 - call $std/math/test_sincos - i64.const 4603235101512779211 - i64.const 4602973141375866126 - i64.const -4623304571219869696 - i64.const 4605798183832360369 - i64.const -4624249509122146304 - call $std/math/test_sincos - i64.const 4605148163534189634 - i64.const 4604472244479532466 - i64.const -4621996155604041728 - i64.const 4604615492473651755 - i64.const -4632555521679818752 - call $std/math/test_sincos - i64.const -4619083057392940530 - i64.const -4619541816298850243 - i64.const -4622804297187328000 - i64.const 4605185968576882368 - i64.const 4599236402884902912 - call $std/math/test_sincos - f64.const 2 - f64.const 4 - call $~lib/math/NativeMath.imul - f64.const 8 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4010 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 8 - call $~lib/math/NativeMath.imul - f64.const -8 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4011 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const -2 - call $~lib/math/NativeMath.imul - f64.const 4 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4012 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967295 - f64.const 5 - call $~lib/math/NativeMath.imul - f64.const -5 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4013 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967294 - f64.const 5 - call $~lib/math/NativeMath.imul - f64.const -10 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4014 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.e+60 - f64.const 1.e+60 - call $~lib/math/NativeMath.imul - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4015 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.e+60 - f64.const -1.e+60 - call $~lib/math/NativeMath.imul - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4016 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.e+60 - f64.const -1.e+60 - call $~lib/math/NativeMath.imul - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4017 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.e+24 - f64.const 100 - call $~lib/math/NativeMath.imul - f64.const -2147483648 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4018 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - call $~lib/math/NativeMath.imul - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4019 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - call $~lib/math/NativeMath.imul - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4020 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const 1797693134862315708145274e284 - call $~lib/math/NativeMath.imul - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4021 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4025 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - call $~lib/math/NativeMath.clz32 - f64.const 31 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4026 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4027 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -128 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4028 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967295 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4029 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967295.5 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4030 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967296 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4031 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967297 - call $~lib/math/NativeMath.clz32 - f64.const 31 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4032 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4033 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4034 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9007199254740991 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4035 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9007199254740991 - call $~lib/math/NativeMath.clz32 - f64.const 31 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4036 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4037 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4038 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1797693134862315708145274e284 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4039 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.220446049250313e-16 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4040 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i64.const 0 - call $~lib/math/ipow64 - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4044 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i64.const 1 - call $~lib/math/ipow64 - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 4045 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i64.const 2 - call $~lib/math/ipow64 - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 4046 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i64.const 3 - call $~lib/math/ipow64 - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 4047 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.const 0 - call $~lib/math/ipow64 - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4049 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.const 1 - call $~lib/math/ipow64 - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4050 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.const 2 - call $~lib/math/ipow64 - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4051 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.const 3 - call $~lib/math/ipow64 - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4052 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 0 - call $~lib/math/ipow64 - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4054 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 1 - call $~lib/math/ipow64 - i64.const 2 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4055 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 2 - call $~lib/math/ipow64 - i64.const 4 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4056 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 3 - call $~lib/math/ipow64 - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4057 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i64.const 0 - call $~lib/math/ipow64 - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4059 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i64.const 1 - call $~lib/math/ipow64 - i64.const -1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4060 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i64.const 2 - call $~lib/math/ipow64 - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4061 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i64.const 3 - call $~lib/math/ipow64 - i64.const -1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4062 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -2 - i64.const 0 - call $~lib/math/ipow64 - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4064 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -2 - i64.const 1 - call $~lib/math/ipow64 - i64.const -2 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4065 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -2 - i64.const 2 - call $~lib/math/ipow64 - i64.const 4 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4066 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -2 - i64.const 3 - call $~lib/math/ipow64 - i64.const -8 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4067 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 63 - call $~lib/math/ipow64 - i64.const -9223372036854775808 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4069 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 3 - i64.const 40 - call $~lib/math/ipow64 - i64.const -6289078614652622815 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4070 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 64 - call $~lib/math/ipow64 - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 4071 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 3 - i64.const 41 - call $~lib/math/ipow64 - i64.const -420491770248316829 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4072 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 3 - i64.const 128 - call $~lib/math/ipow64 - i64.const -9204772141784466943 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4073 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.const -1 - call $~lib/math/ipow64 - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4075 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const -1 - call $~lib/math/ipow64 - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 4076 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 3 - call $~lib/math/ipow32 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4082 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2 - i32.const 3 - call $~lib/math/ipow32 - i32.const -8 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4083 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 0 - call $~lib/math/ipow32 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4084 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const -1 - call $~lib/math/ipow32 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4085 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const -2 - call $~lib/math/ipow32 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4086 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const -3 - call $~lib/math/ipow32 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4087 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const -2 - call $~lib/math/ipow32 - if - i32.const 0 - i32.const 1040 - i32.const 4089 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const -1 - call $~lib/math/ipow32 - if - i32.const 0 - i32.const 1040 - i32.const 4090 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - call $~lib/math/ipow32 - if - i32.const 0 - i32.const 1040 - i32.const 4093 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const -2 - call $~lib/math/ipow32 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4095 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const -1 - call $~lib/math/ipow32 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4096 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - call $~lib/math/ipow32 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4099 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 3 - call $~lib/math/ipow32 - i32.const 255 - i32.and - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2 - i32.const 3 - call $~lib/math/ipow32 - i32.const 255 - i32.and - i32.const 248 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 7 - call $~lib/math/ipow32 - i32.const 65535 - i32.and - i32.const 16384 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 8 - call $~lib/math/ipow32 - i32.const 65535 - i32.and - if - i32.const 0 - i32.const 1040 - i32.const 4104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 10 - call $~lib/math/ipow32 - i32.const 65535 - i32.and - i32.const 761 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i64.const 0 - call $~lib/math/ipow64 - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i64.const 1 - call $~lib/math/ipow64 - i64.eqz - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 4108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.const 3 - call $~lib/math/ipow64 - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4109 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 3 - call $~lib/math/ipow64 - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967295 - i64.const 3 - call $~lib/math/ipow64 - i64.const 12884901887 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 65535 - i64.const 3 - call $~lib/math/ipow64 - i64.const 281462092005375 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4112 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 65535 - i64.const 8 - call $~lib/math/ipow64 - i64.const -15762478437236735 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 61731 - i64.const 4 - call $~lib/math/ipow64 - i64.const -3925184889716469295 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 61731 - i64.const 4 - call $~lib/math/ipow64 - i64.const -3925184889716469295 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 57055 - i64.const 3 - call $~lib/math/ipow64 - i64.const 339590 - i64.const 3 - call $~lib/math/ipow64 - i64.add - i64.const 340126 - i64.const 3 - call $~lib/math/ipow64 - i64.eq - if - i32.const 0 - i32.const 1040 - i32.const 4117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 57055 - i64.const 3 - call $~lib/math/ipow64 - i64.const 339590 - i64.const 3 - call $~lib/math/ipow64 - i64.add - i64.const 39347712995520375 - i64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4118 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4122 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1040 - i32.const 4124 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/math - ) -) diff --git a/tests/compiler/std/math.release.wat b/tests/compiler/std/math.release.wat new file mode 100644 index 0000000000..8dc86c5333 --- /dev/null +++ b/tests/compiler/std/math.release.wat @@ -0,0 +1,56198 @@ +(module + (type $0 (func (param f64) (result f64))) + (type $1 (func (param f64 f64 f64) (result i32))) + (type $2 (func (param f32 f32 f32) (result i32))) + (type $3 (func (param f32) (result f32))) + (type $4 (func (param f64 f64) (result f64))) + (type $5 (func (param f32 f32) (result f32))) + (type $6 (func (param f64 f64 f64 f64) (result i32))) + (type $7 (func (result f64))) + (type $8 (func (param f64 f64) (result i32))) + (type $9 (func (param f32 f32) (result i32))) + (type $10 (func)) + (type $11 (func (param f64 i32) (result f64))) + (type $12 (func (param i32 i32 i32 i32))) + (type $13 (func (param i64) (result i32))) + (type $14 (func (param f32 f32 f32 f32) (result i32))) + (type $15 (func (param i64))) + (type $16 (func (param f64 f64 i32) (result f64))) + (type $17 (func (param f64))) + (type $18 (func (param i64 i64 i64 i64 i64))) + (type $19 (func (param i64 i64) (result i64))) + (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) + (import "env" "Math.LN2" (global $~lib/bindings/dom/Math.LN2 f64)) + (import "env" "Math.LN10" (global $~lib/bindings/dom/Math.LN10 f64)) + (import "env" "Math.LOG2E" (global $~lib/bindings/dom/Math.LOG2E f64)) + (import "env" "Math.PI" (global $~lib/bindings/dom/Math.PI f64)) + (import "env" "Math.SQRT1_2" (global $~lib/bindings/dom/Math.SQRT1_2 f64)) + (import "env" "Math.SQRT2" (global $~lib/bindings/dom/Math.SQRT2 f64)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "env" "Math.abs" (func $~lib/bindings/dom/Math.abs (param f64) (result f64))) + (import "env" "Math.acos" (func $~lib/bindings/dom/Math.acos (param f64) (result f64))) + (import "env" "Math.acosh" (func $~lib/bindings/dom/Math.acosh (param f64) (result f64))) + (import "env" "Math.asin" (func $~lib/bindings/dom/Math.asin (param f64) (result f64))) + (import "env" "Math.asinh" (func $~lib/bindings/dom/Math.asinh (param f64) (result f64))) + (import "env" "Math.atan" (func $~lib/bindings/dom/Math.atan (param f64) (result f64))) + (import "env" "Math.atanh" (func $~lib/bindings/dom/Math.atanh (param f64) (result f64))) + (import "env" "Math.atan2" (func $~lib/bindings/dom/Math.atan2 (param f64 f64) (result f64))) + (import "env" "Math.cbrt" (func $~lib/bindings/dom/Math.cbrt (param f64) (result f64))) + (import "env" "Math.ceil" (func $~lib/bindings/dom/Math.ceil (param f64) (result f64))) + (import "env" "Math.cos" (func $~lib/bindings/dom/Math.cos (param f64) (result f64))) + (import "env" "Math.cosh" (func $~lib/bindings/dom/Math.cosh (param f64) (result f64))) + (import "env" "Math.exp" (func $~lib/bindings/dom/Math.exp (param f64) (result f64))) + (import "env" "Math.expm1" (func $~lib/bindings/dom/Math.expm1 (param f64) (result f64))) + (import "env" "Math.pow" (func $~lib/bindings/dom/Math.pow (param f64 f64) (result f64))) + (import "env" "Math.floor" (func $~lib/bindings/dom/Math.floor (param f64) (result f64))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Math.log10" (func $~lib/bindings/dom/Math.log10 (param f64) (result f64))) + (import "env" "Math.log1p" (func $~lib/bindings/dom/Math.log1p (param f64) (result f64))) + (import "env" "Math.log2" (func $~lib/bindings/dom/Math.log2 (param f64) (result f64))) + (import "env" "Math.max" (func $~lib/bindings/dom/Math.max (param f64 f64) (result f64))) + (import "env" "Math.min" (func $~lib/bindings/dom/Math.min (param f64 f64) (result f64))) + (import "math" "mod" (func $std/math/mod (param f64 f64) (result f64))) + (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) + (import "env" "seed" (func $~lib/builtins/seed (result f64))) + (import "env" "Math.sign" (func $~lib/bindings/dom/Math.sign (param f64) (result f64))) + (import "env" "Math.sin" (func $~lib/bindings/dom/Math.sin (param f64) (result f64))) + (import "env" "Math.sinh" (func $~lib/bindings/dom/Math.sinh (param f64) (result f64))) + (import "env" "Math.sqrt" (func $~lib/bindings/dom/Math.sqrt (param f64) (result f64))) + (import "env" "Math.tan" (func $~lib/bindings/dom/Math.tan (param f64) (result f64))) + (import "env" "Math.tanh" (func $~lib/bindings/dom/Math.tanh (param f64) (result f64))) + (import "env" "Math.trunc" (func $~lib/bindings/dom/Math.trunc (param f64) (result f64))) + (global $~lib/math/rempio2_y0 (mut f64) (f64.const 0)) + (global $~lib/math/rempio2_y1 (mut f64) (f64.const 0)) + (global $~lib/math/res128_hi (mut i64) (i64.const 0)) + (global $~lib/math/rempio2f_y (mut f64) (f64.const 0)) + (global $~lib/util/math/log_tail (mut f64) (f64.const 0)) + (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) + (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) + (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) + (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) + (global $~lib/math/random_seeded (mut i32) (i32.const 0)) + (global $~lib/math/NativeMath.sincos_sin (mut f64) (f64.const 0)) + (global $~lib/math/NativeMath.sincos_cos (mut f64) (f64.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s") + (data $1 (i32.const 1088) "\9f\de\e0\c3\f04\f7?\00\90\e6y\7f\cc\d7\bf\1f\e9,jx\13\f7?\00\00\r\c2\eeo\d7\bf\a0\b5\fa\08`\f2\f6?\00\e0Q\13\e3\13\d7\bf}\8c\13\1f\a6\d1\f6?\00x(8[\b8\d6\bf\d1\b4\c5\0bI\b1\f6?\00x\80\90U]\d6\bf\ba\0c/3G\91\f6?\00\00\18v\d0\02\d6\bf#B\"\18\9fq\f6?\00\90\90\86\ca\a8\d5\bf\d9\1e\a5\99OR\f6?\00P\03VCO\d5\bf\c4$\8f\aaV3\f6?\00@k\c37\f6\d4\bf\14\dc\9dk\b3\14\f6?\00P\a8\fd\a7\9d\d4\bfL\\\c6Rd\f6\f5?\00\a8\899\92E\d4\bfO,\91\b5g\d8\f5?\00\b8\b09\f4\ed\d3\bf\de\90[\cb\bc\ba\f5?\00p\8fD\ce\96\d3\bfx\1a\d9\f2a\9d\f5?\00\a0\bd\17\1e@\d3\bf\87VF\12V\80\f5?\00\80F\ef\e2\e9\d2\bf\d3k\e7\ce\97c\f5?\00\e008\1b\94\d2\bf\93\7f\a7\e2%G\f5?\00\88\da\8c\c5>\d2\bf\83E\06B\ff*\f5?\00\90\')\e1\e9\d1\bf\df\bd\b2\db\"\0f\f5?\00\f8H+m\95\d1\bf\d7\de4G\8f\f3\f4?\00\f8\b9\9agA\d1\bf@(\de\cfC\d8\f4?\00\98\ef\94\d0\ed\d0\bf\c8\a3x\c0>\bd\f4?\00\10\db\18\a5\9a\d0\bf\8a%\e0\c3\7f\a2\f4?\00\b8cR\e6G\d0\bf4\84\d4$\05\88\f4?\00\f0\86E\"\eb\cf\bf\0b-\19\1b\cem\f4?\00\b0\17uJG\cf\bfT\189\d3\d9S\f4?\000\10=D\a4\ce\bfZ\84\b4D\':\f4?\00\b0\e9D\r\02\ce\bf\fb\f8\15A\b5 \f4?\00\f0w)\a2`\cd\bf\b1\f4>\da\82\07\f4?\00\90\95\04\01\c0\cc\bf\8f\feW]\8f\ee\f3?\00\10\89V) \cc\bf\e9L\0b\a0\d9\d5\f3?\00\10\81\8d\17\81\cb\bf+\c1\10\c0`\bd\f3?\00\d0\d3\cc\c9\e2\ca\bf\b8\dau+$\a5\f3?\00\90\12.@E\ca\bf\02\d0\9f\cd\"\8d\f3?\00\f0\1dhw\a8\c9\bf\1cz\84\c5[u\f3?\000Him\0c\c9\bf\e26\adI\ce]\f3?\00\c0E\a6 q\c8\bf@\d4M\98yF\f3?\000\14\b4\8f\d6\c7\bf$\cb\ff\ce\\/\f3?\00pb<\b8<\c7\bfI\r\a1uw\18\f3?\00`7\9b\9a\a3\c6\bf\909>7\c8\01\f3?\00\a0\b7T1\0b\c6\bfA\f8\95\bbN\eb\f2?\000$v}s\c5\bf\d1\a9\19\02\n\d5\f2?\000\c2\8f{\dc\c4\bf*\fd\b7\a8\f9\be\f2?\00\00\d2Q,F\c4\bf\ab\1b\0cz\1c\a9\f2?\00\00\83\bc\8a\b0\c3\bf0\b5\14`r\93\f2?\00\00Ik\99\1b\c3\bf\f5\a1WW\fa}\f2?\00@\a4\90T\87\c2\bf\bf;\1d\9b\b3h\f2?\00\a0y\f8\b9\f3\c1\bf\bd\f5\8f\83\9dS\f2?\00\a0,%\c8`\c1\bf;\08\c9\aa\b7>\f2?\00 \f7W\7f\ce\c0\bf\b6@\a9+\01*\f2?\00\a0\feI\dc<\c0\bf2A\cc\96y\15\f2?\00\80K\bc\bdW\bf\bf\9b\fc\d2\1d \01\f2?\00@@\96\087\be\bf\0bHMI\f4\ec\f1?\00@\f9>\98\17\bd\bfie\8fR\f5\d8\f1?\00\a0\d8Ng\f9\bb\bf|~W\11#\c5\f1?\00`/ y\dc\ba\bf\e9&\cbt|\b1\f1?\00\80(\e7\c3\c0\b9\bf\b6\1a,\0c\01\9e\f1?\00\c0r\b3F\a6\b8\bf\bdp\b6{\b0\8a\f1?\00\00\ac\b3\01\8d\b7\bf\b6\bc\ef%\8aw\f1?\00\008E\f1t\b6\bf\da1L5\8dd\f1?\00\80\87m\0e^\b5\bf\dd_\'\90\b9Q\f1?\00\e0\a1\de\\H\b4\bfL\d22\a4\0e?\f1?\00\a0jM\d93\b3\bf\da\f9\10r\8b,\f1?\00`\c5\f8y \b2\bf1\b5\ec(0\1a\f1?\00 b\98F\0e\b1\bf\af4\84\da\fb\07\f1?\00\00\d2jl\fa\af\bf\b3kN\0f\ee\f5\f0?\00@wJ\8d\da\ad\bf\ce\9f*]\06\e4\f0?\00\00\85\e4\ec\bc\ab\bf!\a5,cD\d2\f0?\00\c0\12@\89\a1\a9\bf\1a\98\e2|\a7\c0\f0?\00\c0\023X\88\a7\bf\d16\c6\83/\af\f0?\00\80\d6g^q\a5\bf9\13\a0\98\db\9d\f0?\00\80eI\8a\\\a3\bf\df\e7R\af\ab\8c\f0?\00@\15d\e3I\a1\bf\fb(N/\9f{\f0?\00\80\eb\82\c0r\9e\bf\19\8f5\8c\b5j\f0?\00\80RR\f1U\9a\bf,\f9\ec\a5\eeY\f0?\00\80\81\cfb=\96\bf\90,\d1\cdII\f0?\00\00\aa\8c\fb(\92\bf\a9\ad\f0\c6\c68\f0?\00\00\f9 {1\8c\bf\a92y\13e(\f0?\00\00\aa]5\19\84\bfHs\ea\'$\18\f0?\00\00\ec\c2\03\12x\bf\95\b1\14\06\04\08\f0?\00\00$y\t\04`\bf\1a\fa&\f7\1f\e0\ef?\00\00\90\84\f3\efo?t\eaa\c2\1c\a1\ef?\00\00=5A\dc\87?.\99\81\b0\10c\ef?\00\80\c2\c4\a3\ce\93?\cd\ad\ee<\f6%\ef?\00\00\89\14\c1\9f\9b?\e7\13\91\03\c8\e9\ee?\00\00\11\ce\d8\b0\a1?\ab\b1\cbx\80\ae\ee?\00\c0\01\d0[\8a\a5?\9b\0c\9d\a2\1at\ee?\00\80\d8@\83\\\a9?\b5\99\n\83\91:\ee?\00\80W\efj\'\ad?V\9a`\t\e0\01\ee?\00\c0\98\e5\98u\b0?\98\bbw\e5\01\ca\ed?\00 \r\e3\f5S\b2?\03\91|\0b\f2\92\ed?\00\008\8b\dd.\b4?\ce\\\fbf\ac\\\ed?\00\c0W\87Y\06\b6?\9d\de^\aa,\'\ed?\00\00j5v\da\b7?\cd,k>n\f2\ec?\00`\1cNC\ab\b9?\02y\a7\a2m\be\ec?\00`\r\bb\c7x\bb?m\087m&\8b\ec?\00 \e72\13C\bd?\04X]\bd\94X\ec?\00`\deq1\n\bf?\8c\9f\bb3\b5&\ec?\00@\91+\15g\c0??\e7\ec\ee\83\f5\eb?\00\b0\92\82\85G\c1?\c1\96\dbu\fd\c4\eb?\000\ca\cdn&\c2?(J\86\0c\1e\95\eb?\00P\c5\a6\d7\03\c3?,>\ef\c5\e2e\eb?\00\103<\c3\df\c3?\8b\88\c9gH7\eb?\00\80zk6\ba\c4?J0\1d!K\t\eb?\00\f0\d1(9\93\c5?~\ef\f2\85\e8\db\ea?\00\f0\18$\cdj\c6?\a2=`1\1d\af\ea?\00\90f\ec\f8@\c7?\a7X\d3?\e6\82\ea?\00\f0\1a\f5\c0\15\c8?\8bs\t\ef@W\ea?\00\80\f6T)\e9\c8?\'K\ab\90*,\ea?\00@\f8\026\bb\c9?\d1\f2\93\13\a0\01\ea?\00\00,\1c\ed\8b\ca?\1b<\db$\9f\d7\e9?\00\d0\01\\Q[\cb?\90\b1\c7\05%\ae\e9?\00\c0\bc\ccg)\cc?/\ce\97\f2.\85\e9?\00`H\d55\f6\cc?uK\a4\ee\ba\\\e9?\00\c0F4\bd\c1\cd?8H\e7\9d\c64\e9?\00\e0\cf\b8\01\8c\ce?\e6Rg/O\r\e9?\00\90\17\c0\tU\cf?\9d\d7\ff\8eR\e6\e8?\00\b8\1f\12l\0e\d0?|\00\cc\9f\ce\bf\e8?\00\d0\93\0e\b8q\d0?\0e\c3\be\da\c0\99\e8?\00p\86\9ek\d4\d0?\fb\17#\aa\'t\e8?\00\d0K3\876\d1?\08\9a\b3\ac\00O\e8?\00H#g\r\98\d1?U>e\e8I*\e8?\00\80\cc\e0\ff\f8\d1?`\02\f4\95\01\06\e8?\00hc\d7_Y\d2?)\a3\e0c%\e2\e7?\00\a8\14\t0\b9\d2?\ad\b5\dcw\b3\be\e7?\00`C\10r\18\d3?\c2%\97g\aa\9b\e7?\00\18\ecm&w\d3?W\06\17\f2\07y\e7?\000\af\fbO\d5\d3?\0c\13\d6\db\caV\e7?\00\e0/\e3\ee2\d4?") + (data $2 (i32.const 3136) "k\b6O\01\00\10\e6?<[B\91l\02~<\95\b4M\03\000\e6?A]\00H\ea\bf\8d\f6\05\eb\ff\ef\e6?S-\e2\1a\04\80~\bc\80\97\86\0e\00\10\e7?Ry\tqf\ff{<\12\e9g\fc\ff/\e7?$\87\bd&\e2\00\8c\89<\b9{F\13\000\e9?v\02\98KN\80\7f.\98\dd\ff\af\e9?7\93Z\8a\e0@\87\bcf\fbI\ed\ff\cf\e9?\00\e0\9b\c1\08\ce?O*\00\b0\ea?_?\ff<\04\fdi\bc\d1\1e\ae\d7\ff\cf\ea?\b4p\90\12\e7>\82\bcx\04Q\ee\ff\ef\ea?\a3\de\0e\e0>\06j<[\re\db\ff\0f\eb?\b9\n\1f8\c8\06ZO\86\d0E\ff\8a<@\16\87\f9\ff\8f\eb?\f9\c3\c2\96w\fe|\f0\0f\00\f0\f4?\1cS\85\0b\89\7f\97<\d1K\dc\12\00\10\f5?6\a4fqe\04`\c9\03\00\b0\f5?\c0\0c\bf\n\08A\9f\bc\bc\19I\1d\00\d0\f5?)G%\fb*\81\98\bc\89z\b8\e7\ff\ef\f5?\04i\ed\80\b7~\94\bc") + (data $3 (i32.const 5184) "\be\f3\f8y\eca\f6?\de\aa\8c\80\f7{\d5\bf=\88\afJ\edq\f5?\dbm\c0\a7\f0\be\d2\bf\b0\10\f0\f09\95\f4?g:Q\7f\ae\1e\d0\bf\85\03\b8\b0\95\c9\f3?\e9$\82\a6\d81\cb\bf\a5d\88\0c\19\r\f3?Xw\c0\nOW\c6\bf\a0\8e\0b{\"^\f2?\00\81\9c\c7+\aa\c1\bf?4\1aJJ\bb\f1?^\0e\8c\cevN\ba\bf\ba\e5\8a\f0X#\f1?\cc\1caZ<\97\b1\bf\a7\00\99A?\95\f0?\1e\0c\e18\f4R\a2\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?\84Y\f2]\aa\a5\aa?\a0j\02\1f\b3\a4\ec?\b4.6\aaS^\bc?\e6\fcjW6 \eb?\08\db w\e5&\c5?-\aa\a1c\d1\c2\e9?pG\"\r\86\c2\cb?\edAx\03\e6\86\e8?\e1~\a0\c8\8b\05\d1?bHS\f5\dcg\e7?\t\ee\b6W0\04\d4?") + (data $4 (i32.const 5440) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") + (data $5 (i32.const 5632) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") + (data $6 (i32.const 5678) "\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\rG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") + (data $7 (i32.const 7718) "\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") + (data $8 (i32.const 7968) "\f8\ac\b1k($\f7?\00\b0\cd\ee_\t\e1\bf\a1\cc\d2f\f7\e1\f6?\00\d0v\bd\94\84\e0\bf\8a\d40\0e=\a1\f6?\00\f8\e8\aeC\01\e0\bf\85l\d02\eca\f6?\00@\0b6\c5\fe\de\bf\f8\98\11\95\fa#\f6?\00\e0\b7\1a\d9\fd\dd\bfl\02\cf\a4[\e7\f5?\00\90\c7\0c\ae\ff\dc\bf\b8O!Z\05\ac\f5?\00\a0\fd\118\04\dc\bf\1en\16\0f\edq\f5?\00\e0:2g\0b\db\bf5\f8\0bY\t9\f5?\00\b0-Z/\15\da\bf\dd\ada\edO\01\f5?\00`\f8Z\7f!\d9\bf\d0{H\8e\b8\ca\f4?\00\90q\b0M0\d8\bf\eeO3\b49\95\f4?\00\e0\a9\f9\89A\d7\bfi\d5\af\df\cb`\f4?\00\90\19\b5+U\d6\bfS\b9\e4Nf-\f4?\00\10\9b\a2#k\d5\bf\a6\d8\1d\11\01\fb\f3?\00\a0_\0fe\83\d4\bf6X\0c\b7\95\c9\f3?\00\a0\f67\e9\9d\d3\bfJ\fd\b6J\1c\99\f3?\00`\8dS\a1\ba\d2\bf\b5\99\e0\0c\8ei\f3?\00@\ca@\83\d9\d1\bf\b2\e7\13\82\e4:\f3?\00\e0@:\85\fa\d0\bf\b1\bd\85\19\19\r\f3?\000\e72\9c\1d\d0\bf\d7q\b2\ca%\e0\f2?\00`\fa\a2}\85\ce\bf\82\cd\13\cf\04\b4\f2?\00\80=c\c8\d3\cc\bfP\cb|,\b0\88\f2?\00\a0\14L\03&\cb\bf\e5M\94c\"^\f2?\00\e0O/\1c|\c9\bf\b1\15\86=V4\f2?\00\00\80?\02\d6\c7\bf8\af>\e3F\0b\f2?\00\e0\05\1a\a73\c6\bf\dd\a3\cd\fd\ee\e2\f1?\00\00W\e9\f5\94\c4\bf09\0bXJ\bb\f1?\00\a0\e0$\e4\f9\c2\bf\00\"\7f\84S\94\f1?\00\c0\fdZYb\c1\bf<\d7\d5\c0\06n\f1?\00\80\bdu\9a\9c\bf\bf\c2\e4\b7G_H\f1?\00\c0\f9[W{\bc\bf\d1\85\00\adX#\f1?\00\80\f4\0f\c6`\b9\bf\'\"S\0f\f0\fe\f0?\00\00\b6G\e2L\b6\bf\8f:\d0w \db\f0?\00@\01\b2x?\b3\bf\d9\80Y\d6\e6\b7\f0?\00\c0B\1a}8\b0\bf\8d@{\fe>\95\f0?\00\00\b5\08\92o\aa\bf\83;\c5\ca%s\f0?\00\00wO\95z\a4\bf\\\1b\r\e4\97Q\f0?\00\00\0c\c5\a8#\9d\bf\a2\8e \c1\910\f0?\00\00x)&j\91\bf!~\b3%\10\10\f0?\00\00\e8\d8\f8 w\bfk\a7\ca\f9~\c0\ef?\00\00P\b1S\fe\86?\84\f1\f6\d3eD\ef?\00\80\0f\e1\cc\1c\a1?\7f\10\84\9f\07\cc\ee?\00\80\8b\8c\fcM\ac?\e8Z\97\99:W\ee?\00@W\1e2\aa\b3?\e6=\bd\f0\d6\e5\ed?\00\80\8b\d0\a0\18\b9?\b38\ff\81\b6w\ed?\00@\04\da\e9r\be?C\e9Mr\b5\0c\ed?\00`\7fP\d2\dc\c1?cu\0e\dc\b2\a4\ec?\00\a0\de\03\abv\c4?Q\cb\d6\e8\8e?\ec?\00 \e2wC\07\c7?L\0c\02O+\dd\eb?\00@\a9\8b\de\8e\c9?\ca\15`\00l}\eb?\00\e0\d2j\b8\r\cc?\8f3.n6 \eb?\00\e0\ce\af\n\84\ce?9P)&p\c5\ea?\00\80g\b4\ny\d0?\dd1\'\bc\01m\ea?\00\c0\01h\05\ac\d1?\8b\f1?\bc\d3\16\ea?\00\e0\fe\d4\11\db\d2?\ad\fegI\d1\c2\e9?\00\80\c5NF\06\d4?\02\99|\f4\e4p\e9?\00\f0:\t\be-\d5?\f2\bc\829\fb \e9?\00\d0P \90Q\d6?\f1Y\f7\87\01\d3\e8?\00\f0\ea\cd\d2q\d7?m\f6\b9\eb\e5\86\e8?\00\90}\85\9c\8e\d8?\94\b9X\b6\97<\e8?\00`\e1U\01\a8\d9?\"\10\c6\ff\05\f4\e7?\00\d0\d3n\18\be\da?\ca\15\14\18\"\ad\e7?\00\e0\a0\ae\f2\d0\db?\8c\ff\9e\f9\dcg\e7?\00@\bf=\a4\e0\dc?") + (data $9 (i32.const 8992) "\8e\n\b9\12\00 \e6?\05\b6D\06\ab\04\89<\a64W\04\00`\e6?\a9\f7b\ea\9b\ffa<\c5\f2%\c3\ff\9f\e6?\ba\90<\cb\cf~\82<\04Z\b98\00\e0\e6?&\93sV\88\ff\88<\e3\94\99\e0\ff\1f\e7?\b1\82_\'@\fd\8a<\10\0eY\15\00`\e7?A\83#\b4u\fdr\bc\d5[e\12\00\a0\e7?v+$|\e6\08x<\a6\e9Y2\00\e0\e7?\b7\"\f6&\e4\08b\bc\d2\b2\b4\ed\ff\1f\e8?/\c9\a5\1eF\02\84\bc\c3\fc\fa-\00`\e8?\1f\9a\f2\a2\f4\f7m)\e0\ff\df\f2?\f9\a6\b2\da9|\9b<\82\f0\dc\f7\ff\1f\f3?TR\dcn3\f1}<`\8bZ\f0\ff_\f3?\eb1\cdLV\03\9e\bc\cc\ae\0e.\00\a0\f3?w\a4\d3K\e7\f0u<6\b2;\04\00\e0\f3?3\88\9d\14\cb}\9c<\ff\87\d1\02\00 \f4?(=-\cf\af\08~<\b1|8\r\00`\f4?\a6\99e\857\08\82<\89\9fV\04\00\a0\f4?\d2\bcO\90\\\fa\89\bc\f3C5\04\00\e0\f4?)S\17\ed%\11x\bc\0f\7f\02\cc\ff\1f\f5?\dcTw\84\d8\83\98\e90.\90\80\91\bc") + (data $10 (i32.const 10016) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\r\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") + (data $11 (i32.const 10277) "\a0\f6?") + (data $11.1 (i32.const 10289) "\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?") + (data $11.2 (i32.const 10321) "\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?") + (data $11.3 (i32.const 10353) "XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?") + (data $11.4 (i32.const 10385) "\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?") + (data $11.5 (i32.const 10417) "xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?") + (data $11.6 (i32.const 10449) "`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?") + (data $11.7 (i32.const 10481) "\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?") + (data $11.8 (i32.const 10513) "HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?") + (data $11.9 (i32.const 10545) "\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?") + (data $11.10 (i32.const 10577) " \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?") + (data $11.11 (i32.const 10609) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?") + (data $11.12 (i32.const 10641) "\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?") + (data $11.13 (i32.const 10673) "x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?") + (data $11.14 (i32.const 10705) "\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?") + (data $11.15 (i32.const 10737) "\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?") + (data $11.16 (i32.const 10769) "H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?") + (data $11.17 (i32.const 10801) "\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?") + (data $11.18 (i32.const 10833) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?") + (data $11.19 (i32.const 10865) "\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?") + (data $11.20 (i32.const 10897) "@^m\18\b9\cf\bf\87<\99\ab*W\r=\00\00\00\00\00`\f4?") + (data $11.21 (i32.const 10929) "`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?") + (data $11.22 (i32.const 10961) "\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?") + (data $11.23 (i32.const 10993) "\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?") + (data $11.24 (i32.const 11025) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?") + (data $11.25 (i32.const 11057) "\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?") + (data $11.26 (i32.const 11089) "\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?") + (data $11.27 (i32.const 11121) "\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?") + (data $11.28 (i32.const 11153) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?") + (data $11.29 (i32.const 11185) "\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?") + (data $11.30 (i32.const 11217) "P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?") + (data $11.31 (i32.const 11249) "\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?") + (data $11.32 (i32.const 11281) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?") + (data $11.33 (i32.const 11313) "\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?") + (data $11.34 (i32.const 11345) "\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?") + (data $11.35 (i32.const 11377) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?") + (data $11.36 (i32.const 11409) "\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?") + (data $11.37 (i32.const 11441) "\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?") + (data $11.38 (i32.const 11473) "\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?") + (data $11.85 (i32.const 12977) "`F\d1;\97\b1?\9b\9e\rV]2%\bd\00\00\00\00\00\a0\ed?") + (data $11.86 (i32.const 13009) "\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?") + (data $11.87 (i32.const 13041) "\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?") + (data $11.88 (i32.const 13073) "\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?") + (data $11.89 (i32.const 13105) "@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?") + (data $11.90 (i32.const 13137) "`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?") + (data $11.91 (i32.const 13169) "@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?") + (data $11.92 (i32.const 13201) " \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?") + (data $11.93 (i32.const 13233) "\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?") + (data $11.94 (i32.const 13265) "\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?") + (data $11.95 (i32.const 13297) "\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?") + (data $11.96 (i32.const 13329) "\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?") + (data $11.97 (i32.const 13361) "\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?") + (data $11.98 (i32.const 13393) "\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?") + (data $11.99 (i32.const 13425) "\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?") + (data $11.100 (i32.const 13457) "\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?") + (data $11.101 (i32.const 13489) "pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?") + (data $11.102 (i32.const 13521) "PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?") + (data $11.103 (i32.const 13554) "9\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?") + (data $11.104 (i32.const 13586) "\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?") + (data $11.105 (i32.const 13617) "\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?") + (data $11.106 (i32.const 13649) "\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?") + (data $11.107 (i32.const 13681) "\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?") + (data $11.108 (i32.const 13713) "\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?") + (data $11.109 (i32.const 13745) "\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?") + (data $11.110 (i32.const 13777) "\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?") + (data $11.111 (i32.const 13810) "\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?") + (data $11.112 (i32.const 13841) "\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?") + (data $11.113 (i32.const 13873) "XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?") + (data $11.114 (i32.const 13905) "`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?") + (data $11.115 (i32.const 13937) "\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?") + (data $11.116 (i32.const 13969) "\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?") + (data $11.117 (i32.const 14001) "hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?") + (data $11.118 (i32.const 14033) "\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?") + (data $11.119 (i32.const 14065) "\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?") + (data $11.120 (i32.const 14097) "`\d3\e1\f1\14\d3?\b8 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + local.get $0 + local.get $1 + f64.eq + if + i32.const 1 + return + end + local.get $1 + local.get $1 + f64.ne + if + local.get $0 + local.get $0 + f64.ne + return + end + block $__inlined_func$std/math/ulperr$1077 (result f64) + f64.const 0 + local.get $1 + local.get $1 + f64.ne + local.get $0 + local.get $0 + f64.ne + i32.and + br_if $__inlined_func$std/math/ulperr$1077 + drop + local.get $0 + local.get $1 + f64.eq + if + local.get $2 + local.get $0 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.get $1 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.eq + br_if $__inlined_func$std/math/ulperr$1077 + drop + f64.const inf + br $__inlined_func$std/math/ulperr$1077 + end + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if (result f64) + local.get $1 + f64.const 0.5 + f64.mul + local.set $1 + f64.const 8988465674311579538646525e283 + local.get $0 + f64.copysign + else + local.get $0 + end + local.get $1 + f64.sub + i32.const 1075 + local.get $1 + i64.reinterpret_f64 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + i32.wrap_i64 + local.tee $3 + local.get $3 + i32.const 1 + i32.add + local.get $3 + select + i32.sub + call $~lib/math/NativeMath.scalbn + local.get $2 + f64.add + end + f64.abs + f64.const 1.5 + f64.ge + if + i32.const 0 + return + end + i32.const 1 + ) + (func $std/math/check (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + local.get $0 + local.get $1 + f32.eq + if + i32.const 1 + return + end + local.get $1 + local.get $1 + f32.ne + if + local.get $0 + local.get $0 + f32.ne + return + end + block $__inlined_func$std/math/ulperrf$1078 (result f32) + f32.const 0 + local.get $1 + local.get $1 + f32.ne + local.get $0 + local.get $0 + f32.ne + i32.and + br_if $__inlined_func$std/math/ulperrf$1078 + drop + local.get $0 + local.get $1 + f32.eq + if + local.get $2 + local.get $0 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + local.get $1 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + i32.eq + br_if $__inlined_func$std/math/ulperrf$1078 + drop + f32.const inf + br $__inlined_func$std/math/ulperrf$1078 + end + local.get $0 + local.get $0 + f32.sub + f32.const 0 + f32.ne + if (result f32) + local.get $1 + f32.const 0.5 + f32.mul + local.set $1 + f32.const 1701411834604692317316873e14 + local.get $0 + f32.copysign + else + local.get $0 + end + local.get $1 + f32.sub + local.set $0 + i32.const 150 + local.get $1 + i32.reinterpret_f32 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $3 + local.get $3 + i32.const 1 + i32.add + local.get $3 + select + i32.sub + local.tee $3 + i32.const 127 + i32.gt_s + if (result f32) + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul + local.set $0 + local.get $3 + i32.const 127 + i32.sub + local.tee $3 + i32.const 127 + i32.gt_s + if (result f32) + i32.const 127 + local.get $3 + i32.const 127 + i32.sub + local.tee $3 + local.get $3 + i32.const 127 + i32.ge_s + select + local.set $3 + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul + else + local.get $0 + end + else + local.get $3 + i32.const -126 + i32.lt_s + if (result f32) + local.get $0 + f32.const 1.9721522630525295e-31 + f32.mul + local.set $0 + local.get $3 + i32.const 102 + i32.add + local.tee $3 + i32.const -126 + i32.lt_s + if (result f32) + i32.const -126 + local.get $3 + i32.const 102 + i32.add + local.tee $3 + local.get $3 + i32.const -126 + i32.le_s + select + local.set $3 + local.get $0 + f32.const 1.9721522630525295e-31 + f32.mul + else + local.get $0 + end + else + local.get $0 + end + end + local.get $3 + i32.const 127 + i32.add + i32.const 23 + i32.shl + f32.reinterpret_i32 + f32.mul + local.get $2 + f32.add + end + f32.abs + f32.const 1.5 + f32.ge + if + i32.const 0 + return + end + i32.const 1 + ) + (func $~lib/math/NativeMath.acos (param $0 f64) (result f64) + (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1072693248 + i32.ge_u + if + local.get $3 + i32.wrap_i64 + local.get $1 + i32.const 1072693248 + i32.sub + i32.or + i32.eqz + if + local.get $2 + i32.const 0 + i32.lt_s + if + f64.const 3.141592653589793 + return + end + f64.const 0 + return + end + f64.const 0 + local.get $0 + local.get $0 + f64.sub + f64.div + return + end + local.get $1 + i32.const 1071644672 + i32.lt_u + if + local.get $1 + i32.const 1012924416 + i32.le_u + if + f64.const 1.5707963267948966 + return + end + f64.const 1.5707963267948966 + local.get $0 + f64.const 6.123233995736766e-17 + local.get $0 + local.get $0 + local.get $0 + f64.mul + local.tee $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 3.479331075960212e-05 + f64.mul + f64.const 7.915349942898145e-04 + f64.add + f64.mul + f64.const -0.04005553450067941 + f64.add + f64.mul + f64.const 0.20121253213486293 + f64.add + f64.mul + f64.const -0.3255658186224009 + f64.add + f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.07703815055590194 + f64.mul + f64.const -0.6882839716054533 + f64.add + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div + f64.mul + f64.sub + f64.sub + f64.sub + return + end + local.get $2 + i32.const 0 + i32.lt_s + if + f64.const 1.5707963267948966 + local.get $0 + f64.const 0.5 + f64.mul + f64.const 0.5 + f64.add + local.tee $0 + f64.sqrt + local.tee $4 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 3.479331075960212e-05 + f64.mul + f64.const 7.915349942898145e-04 + f64.add + f64.mul + f64.const -0.04005553450067941 + f64.add + f64.mul + f64.const 0.20121253213486293 + f64.add + f64.mul + f64.const -0.3255658186224009 + f64.add + f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.07703815055590194 + f64.mul + f64.const -0.6882839716054533 + f64.add + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div + local.get $4 + f64.mul + f64.const -6.123233995736766e-17 + f64.add + f64.add + f64.sub + f64.const 2 + f64.mul + return + end + f64.const 0.5 + local.get $0 + f64.const 0.5 + f64.mul + f64.sub + local.tee $4 + f64.sqrt + local.tee $5 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $0 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + f64.const 3.479331075960212e-05 + f64.mul + f64.const 7.915349942898145e-04 + f64.add + f64.mul + f64.const -0.04005553450067941 + f64.add + f64.mul + f64.const 0.20121253213486293 + f64.add + f64.mul + f64.const -0.3255658186224009 + f64.add + f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $4 + local.get $4 + local.get $4 + local.get $4 + f64.const 0.07703815055590194 + f64.mul + f64.const -0.6882839716054533 + f64.add + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div + local.get $5 + f64.mul + local.get $4 + local.get $0 + local.get $0 + f64.mul + f64.sub + local.get $5 + local.get $0 + f64.add + f64.div + f64.add + f64.add + f64.const 2 + f64.mul + ) + (func $~lib/math/NativeMathf.acos (param $0 f32) (result f32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f32) + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1065353216 + i32.ge_u + if + local.get $1 + i32.const 1065353216 + i32.eq + if + f32.const 3.141592502593994 + f32.const 0 + local.get $2 + i32.const 0 + i32.lt_s + select + return + end + f32.const 0 + local.get $0 + local.get $0 + f32.sub + f32.div + return + end + local.get $1 + i32.const 1056964608 + i32.lt_u + if + local.get $1 + i32.const 847249408 + i32.le_u + if + f32.const 1.570796251296997 + return + end + f32.const 1.570796251296997 + local.get $0 + f32.const 7.549789415861596e-08 + local.get $0 + local.get $0 + local.get $0 + f32.mul + local.tee $0 + local.get $0 + local.get $0 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $0 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + f32.mul + f32.sub + f32.sub + f32.sub + return + end + local.get $2 + i32.const 0 + i32.lt_s + if + f32.const 1.570796251296997 + local.get $0 + f32.const 0.5 + f32.mul + f32.const 0.5 + f32.add + local.tee $0 + f32.sqrt + local.tee $3 + local.get $0 + local.get $0 + local.get $0 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $0 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + local.get $3 + f32.mul + f32.const -7.549789415861596e-08 + f32.add + f32.add + f32.sub + f32.const 2 + f32.mul + return + end + f32.const 0.5 + local.get $0 + f32.const 0.5 + f32.mul + f32.sub + local.tee $3 + f32.sqrt + local.tee $4 + i32.reinterpret_f32 + i32.const -4096 + i32.and + f32.reinterpret_i32 + local.tee $0 + local.get $3 + local.get $3 + local.get $3 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $3 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + local.get $4 + f32.mul + local.get $3 + local.get $0 + local.get $0 + f32.mul + f32.sub + local.get $4 + local.get $0 + f32.add + f32.div + f32.add + f32.add + f32.const 2 + f32.mul + ) + (func $~lib/math/NativeMath.log1p (param $0 f64) (result f64) + (local $1 f64) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 i32) + (local $6 f64) + (local $7 f64) + i32.const 1 + local.set $2 + local.get $0 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $5 + i32.const 31 + i32.shr_u + local.get $5 + i32.const 1071284858 + i32.lt_u + i32.or + if + local.get $5 + i32.const -1074790400 + i32.ge_u + if + local.get $0 + f64.const -1 + f64.eq + if + local.get $0 + f64.const 0 + f64.div + return + end + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.div + return + end + local.get $5 + i32.const 1 + i32.shl + i32.const 2034237440 + i32.lt_u + if + local.get $0 + return + end + local.get $5 + i32.const -1076707644 + i32.le_u + if (result f64) + i32.const 0 + local.set $2 + local.get $0 + else + f64.const 0 + end + local.set $1 + else + local.get $5 + i32.const 2146435072 + i32.ge_u + if + local.get $0 + return + end + end + local.get $2 + if + local.get $0 + f64.const 1 + f64.add + i64.reinterpret_f64 + local.tee $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 614242 + i32.add + local.tee $5 + i32.const 20 + i32.shr_u + i32.const 1023 + i32.sub + local.tee $2 + i32.const 54 + i32.lt_s + if (result f64) + f64.const 1 + local.get $3 + f64.reinterpret_i64 + local.tee $1 + local.get $0 + f64.sub + f64.sub + local.get $0 + local.get $1 + f64.const -1 + f64.add + f64.sub + local.get $2 + i32.const 2 + i32.ge_s + select + local.get $1 + f64.div + else + f64.const 0 + end + local.set $4 + local.get $3 + i64.const 4294967295 + i64.and + local.get $5 + i32.const 1048575 + i32.and + i32.const 1072079006 + i32.add + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + f64.const -1 + f64.add + local.set $1 + end + local.get $1 + local.get $1 + f64.const 2 + f64.add + f64.div + local.tee $6 + local.get $6 + f64.mul + local.tee $7 + local.get $7 + f64.mul + local.set $0 + local.get $6 + local.get $1 + f64.const 0.5 + f64.mul + local.get $1 + f64.mul + local.tee $6 + local.get $7 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.14798198605116586 + f64.mul + f64.const 0.1818357216161805 + f64.add + f64.mul + f64.const 0.2857142874366239 + f64.add + f64.mul + f64.const 0.6666666666666735 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + f64.const 0.15313837699209373 + f64.mul + f64.const 0.22222198432149784 + f64.add + f64.mul + f64.const 0.3999999999940942 + f64.add + f64.mul + f64.add + f64.add + f64.mul + local.get $2 + f64.convert_i32_s + local.tee $0 + f64.const 1.9082149292705877e-10 + f64.mul + local.get $4 + f64.add + f64.add + local.get $6 + f64.sub + local.get $1 + f64.add + local.get $0 + f64.const 0.6931471803691238 + f64.mul + f64.add + ) + (func $~lib/math/NativeMath.log (param $0 f64) (result f64) + (local $1 i64) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 f64) + (local $6 f64) + (local $7 i32) + block $~lib/util/math/log_lut|inlined.0 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $1 + i64.const 4606619468846596096 + i64.sub + i64.const 854320534781952 + i64.lt_u + if + local.get $0 + f64.const -1 + f64.add + local.tee $0 + local.get $0 + f64.mul + local.tee $4 + local.get $0 + f64.mul + local.tee $5 + local.get $0 + f64.const -0.24999999999998432 + f64.mul + f64.const 0.3333333333333352 + f64.add + local.get $4 + f64.const 0.19999999999320328 + f64.mul + f64.add + local.get $5 + local.get $0 + f64.const 0.14285715076560868 + f64.mul + f64.const -0.16666666669929706 + f64.add + local.get $4 + f64.const -0.12499997863982555 + f64.mul + f64.add + local.get $5 + local.get $0 + f64.const -0.10000486757818193 + f64.mul + f64.const 0.11110712032936046 + f64.add + local.get $4 + f64.const 0.09181994006195467 + f64.mul + f64.add + local.get $5 + f64.const -0.08328363062289341 + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 134217728 + f64.mul + local.tee $4 + f64.add + local.get $4 + f64.sub + local.tee $4 + local.get $4 + f64.mul + f64.const -0.5 + f64.mul + local.tee $5 + f64.add + local.tee $6 + f64.sub + local.get $5 + f64.add + local.get $0 + local.get $4 + f64.sub + f64.const -0.5 + f64.mul + local.get $4 + local.get $0 + f64.add + f64.mul + f64.add + f64.add + local.get $6 + f64.add + br $~lib/util/math/log_lut|inlined.0 + end + local.get $1 + i64.const 48 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.const 16 + i32.sub + i32.const 32736 + i32.ge_u + if + f64.const -1 + local.get $0 + local.get $0 + f64.mul + f64.div + local.get $1 + i64.const 1 + i64.shl + i64.eqz + br_if $~lib/util/math/log_lut|inlined.0 + drop + local.get $0 + local.get $1 + i64.const 9218868437227405312 + i64.eq + br_if $~lib/util/math/log_lut|inlined.0 + drop + i32.const 1 + local.get $2 + i32.const 32752 + i32.and + i32.const 32752 + i32.eq + local.get $2 + i32.const 32768 + i32.and + select + if + local.get $0 + local.get $0 + f64.sub + local.tee $0 + local.get $0 + f64.div + br $~lib/util/math/log_lut|inlined.0 + end + local.get $0 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + i64.const 234187180623265792 + i64.sub + local.set $1 + end + local.get $1 + i64.const 4604367669032910848 + i64.sub + local.tee $3 + i64.const 45 + i64.shr_u + i64.const 127 + i64.and + i32.wrap_i64 + i32.const 4 + i32.shl + local.tee $2 + i32.const 1088 + i32.add + local.set $7 + local.get $3 + i64.const 52 + i64.shr_s + f64.convert_i64_s + local.tee $0 + f64.const 0.6931471805598903 + f64.mul + local.get $7 + f64.load offset=8 + f64.add + local.tee $4 + local.get $1 + local.get $3 + i64.const -4503599627370496 + i64.and + i64.sub + f64.reinterpret_i64 + local.get $2 + i32.const 3136 + i32.add + local.tee $2 + f64.load + f64.sub + local.get $2 + f64.load offset=8 + f64.sub + local.get $7 + f64.load + f64.mul + local.tee $5 + f64.add + local.set $6 + local.get $4 + local.get $6 + f64.sub + local.get $5 + f64.add + local.get $0 + f64.const 5.497923018708371e-14 + f64.mul + f64.add + local.get $5 + local.get $5 + f64.mul + local.tee $0 + f64.const -0.5000000000000001 + f64.mul + f64.add + local.get $5 + local.get $0 + f64.mul + local.get $5 + f64.const -0.2499999999622955 + f64.mul + f64.const 0.33333333331825593 + f64.add + local.get $0 + local.get $5 + f64.const -0.16667054827627667 + f64.mul + f64.const 0.20000304511814496 + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.get $6 + f64.add + end + ) + (func $std/math/test_acosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 f64) + (local $4 i64) + block $__inlined_func$~lib/math/NativeMath.acosh$8 (result f64) + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.div + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 4607182418800017408 + i64.lt_s + br_if $__inlined_func$~lib/math/NativeMath.acosh$8 + drop + local.get $4 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $4 + i64.const 1024 + i64.lt_u + if + local.get $0 + f64.const -1 + f64.add + local.tee $3 + local.get $3 + local.get $3 + f64.mul + local.get $3 + local.get $3 + f64.add + f64.add + f64.sqrt + f64.add + call $~lib/math/NativeMath.log1p + br $__inlined_func$~lib/math/NativeMath.acosh$8 + end + local.get $4 + i64.const 1049 + i64.lt_u + if + local.get $0 + local.get $0 + f64.add + f64.const 1 + local.get $0 + local.get $0 + local.get $0 + f64.mul + f64.const -1 + f64.add + f64.sqrt + f64.add + f64.div + f64.sub + call $~lib/math/NativeMath.log + br $__inlined_func$~lib/math/NativeMath.acosh$8 + end + local.get $0 + call $~lib/math/NativeMath.log + f64.const 0.6931471805599453 + f64.add + end + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.acosh + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end + ) + (func $~lib/math/NativeMathf.log1p (param $0 f32) (result f32) + (local $1 f32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + (local $5 f32) + (local $6 f32) + i32.const 1 + local.set $2 + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 31 + i32.shr_u + local.get $4 + i32.const 1054086096 + i32.lt_u + i32.or + if + local.get $4 + i32.const -1082130432 + i32.ge_u + if + local.get $0 + f32.const -1 + f32.eq + if + local.get $0 + f32.const 0 + f32.div + return + end + local.get $0 + local.get $0 + f32.sub + f32.const 0 + f32.div + return + end + local.get $4 + i32.const 1 + i32.shl + i32.const 1728053248 + i32.lt_u + if + local.get $0 + return + end + local.get $4 + i32.const -1097468391 + i32.le_u + if (result f32) + i32.const 0 + local.set $2 + local.get $0 + else + f32.const 0 + end + local.set $1 + else + local.get $4 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + return + end + end + local.get $2 + if + local.get $0 + f32.const 1 + f32.add + local.tee $1 + i32.reinterpret_f32 + i32.const 4913933 + i32.add + local.tee $4 + i32.const 23 + i32.shr_u + i32.const 127 + i32.sub + local.tee $2 + i32.const 25 + i32.lt_s + if (result f32) + f32.const 1 + local.get $1 + local.get $0 + f32.sub + f32.sub + local.get $0 + local.get $1 + f32.const -1 + f32.add + f32.sub + local.get $2 + i32.const 2 + i32.ge_s + select + local.get $1 + f32.div + else + f32.const 0 + end + local.set $3 + local.get $4 + i32.const 8388607 + i32.and + i32.const 1060439283 + i32.add + f32.reinterpret_i32 + f32.const -1 + f32.add + local.set $1 + end + local.get $1 + local.get $1 + f32.const 2 + f32.add + f32.div + local.tee $5 + local.get $5 + f32.mul + local.tee $0 + local.get $0 + f32.mul + local.set $6 + local.get $5 + local.get $1 + f32.const 0.5 + f32.mul + local.get $1 + f32.mul + local.tee $5 + local.get $0 + local.get $6 + f32.const 0.2849878668785095 + f32.mul + f32.const 0.6666666269302368 + f32.add + f32.mul + local.get $6 + local.get $6 + f32.const 0.24279078841209412 + f32.mul + f32.const 0.40000972151756287 + f32.add + f32.mul + f32.add + f32.add + f32.mul + local.get $2 + f32.convert_i32_s + local.tee $0 + f32.const 9.05800061445916e-06 + f32.mul + local.get $3 + f32.add + f32.add + local.get $5 + f32.sub + local.get $1 + f32.add + local.get $0 + f32.const 0.6931381225585938 + f32.mul + f32.add + ) + (func $~lib/math/NativeMathf.log (param $0 f32) (result f32) + (local $1 i32) + (local $2 f64) + (local $3 f64) + (local $4 i32) + (local $5 i32) + block $~lib/util/math/logf_lut|inlined.0 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $1 + i32.const 8388608 + i32.sub + i32.const 2130706432 + i32.ge_u + if + f32.const -inf + local.get $1 + i32.const 1 + i32.shl + local.tee $4 + i32.eqz + br_if $~lib/util/math/logf_lut|inlined.0 + drop + local.get $0 + local.get $1 + i32.const 2139095040 + i32.eq + br_if $~lib/util/math/logf_lut|inlined.0 + drop + local.get $1 + i32.const 31 + i32.shr_u + local.get $4 + i32.const -16777216 + i32.ge_u + i32.or + if + local.get $0 + local.get $0 + f32.sub + local.tee $0 + local.get $0 + f32.div + br $~lib/util/math/logf_lut|inlined.0 + end + local.get $0 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + i32.const 192937984 + i32.sub + local.set $1 + end + local.get $1 + i32.const 1060306944 + i32.sub + local.tee $4 + i32.const 19 + i32.shr_u + i32.const 15 + i32.and + i32.const 4 + i32.shl + i32.const 5184 + i32.add + local.set $5 + local.get $1 + local.get $4 + i32.const -8388608 + i32.and + i32.sub + f32.reinterpret_i32 + f64.promote_f32 + local.get $5 + f64.load + f64.mul + f64.const -1 + f64.add + local.tee $2 + local.get $2 + f64.mul + local.set $3 + local.get $2 + f64.const 0.333456765744066 + f64.mul + f64.const -0.4999997485802103 + f64.add + local.get $3 + f64.const -0.25089342214237154 + f64.mul + f64.add + local.get $3 + f64.mul + local.get $5 + f64.load offset=8 + local.get $4 + i32.const 23 + i32.shr_s + f64.convert_i32_s + f64.const 0.6931471805599453 + f64.mul + f64.add + local.get $2 + f64.add + f64.add + f32.demote_f64 + end + ) + (func $std/math/test_acoshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + block $__inlined_func$~lib/math/NativeMathf.acosh$9 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 2147483647 + i32.and + i32.const 1073741824 + i32.lt_u + if + local.get $0 + f32.const -1 + f32.add + local.tee $0 + local.get $0 + local.get $0 + f32.const 2 + f32.add + f32.mul + f32.sqrt + f32.add + call $~lib/math/NativeMathf.log1p + br $__inlined_func$~lib/math/NativeMathf.acosh$9 + end + local.get $3 + i32.const 1166016512 + i32.lt_u + if + local.get $0 + local.get $0 + f32.add + f32.const 1 + local.get $0 + local.get $0 + local.get $0 + f32.mul + f32.const -1 + f32.add + f32.sqrt + f32.add + f32.div + f32.sub + call $~lib/math/NativeMathf.log + br $__inlined_func$~lib/math/NativeMathf.acosh$9 + end + local.get $0 + call $~lib/math/NativeMathf.log + f32.const 0.6931471824645996 + f32.add + end + local.get $1 + local.get $2 + call $std/math/check + ) + (func $~lib/math/NativeMath.asin (param $0 f64) (result f64) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 f64) + (local $5 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1072693248 + i32.ge_u + if + local.get $2 + i32.wrap_i64 + local.get $1 + i32.const 1072693248 + i32.sub + i32.or + i32.eqz + if + local.get $0 + f64.const 1.5707963267948966 + f64.mul + f64.const 7.52316384526264e-37 + f64.add + return + end + f64.const 0 + local.get $0 + local.get $0 + f64.sub + f64.div + return + end + local.get $1 + i32.const 1071644672 + i32.lt_u + if + local.get $1 + i32.const 1045430272 + i32.lt_u + local.get $1 + i32.const 1048576 + i32.ge_u + i32.and + if + local.get $0 + return + end + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.mul + local.tee $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 3.479331075960212e-05 + f64.mul + f64.const 7.915349942898145e-04 + f64.add + f64.mul + f64.const -0.04005553450067941 + f64.add + f64.mul + f64.const 0.20121253213486293 + f64.add + f64.mul + f64.const -0.3255658186224009 + f64.add + f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.07703815055590194 + f64.mul + f64.const -0.6882839716054533 + f64.add + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div + f64.mul + f64.add + return + end + f64.const 0.5 + local.get $0 + f64.abs + f64.const 0.5 + f64.mul + f64.sub + local.tee $0 + f64.sqrt + local.set $4 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 3.479331075960212e-05 + f64.mul + f64.const 7.915349942898145e-04 + f64.add + f64.mul + f64.const -0.04005553450067941 + f64.add + f64.mul + f64.const 0.20121253213486293 + f64.add + f64.mul + f64.const -0.3255658186224009 + f64.add + f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.07703815055590194 + f64.mul + f64.const -0.6882839716054533 + f64.add + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div + local.set $5 + local.get $1 + i32.const 1072640819 + i32.ge_u + if (result f64) + f64.const 1.5707963267948966 + local.get $4 + local.get $4 + local.get $5 + f64.mul + f64.add + f64.const 2 + f64.mul + f64.const -6.123233995736766e-17 + f64.add + f64.sub + else + f64.const 0.7853981633974483 + local.get $4 + local.get $4 + f64.add + local.get $5 + f64.mul + f64.const 6.123233995736766e-17 + local.get $0 + local.get $4 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $0 + local.get $0 + f64.mul + f64.sub + local.get $4 + local.get $0 + f64.add + f64.div + f64.const 2 + f64.mul + f64.sub + f64.sub + f64.const 0.7853981633974483 + local.get $0 + local.get $0 + f64.add + f64.sub + f64.sub + f64.sub + end + local.tee $0 + f64.neg + local.get $0 + local.get $3 + i32.const 0 + i32.lt_s + select + ) + (func $~lib/math/NativeMathf.asin (param $0 f32) (result f32) + (local $1 i32) + (local $2 f64) + (local $3 f32) + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1065353216 + i32.ge_u + if + local.get $1 + i32.const 1065353216 + i32.eq + if + local.get $0 + f32.const 1.5707963705062866 + f32.mul + f32.const 7.52316384526264e-37 + f32.add + return + end + f32.const 0 + local.get $0 + local.get $0 + f32.sub + f32.div + return + end + local.get $1 + i32.const 1056964608 + i32.lt_u + if + local.get $1 + i32.const 964689920 + i32.lt_u + local.get $1 + i32.const 8388608 + i32.ge_u + i32.and + if + local.get $0 + return + end + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f32.mul + local.tee $0 + local.get $0 + local.get $0 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $0 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + f32.mul + f32.add + return + end + f64.const 1.5707963705062866 + f32.const 0.5 + local.get $0 + f32.abs + f32.const 0.5 + f32.mul + f32.sub + local.tee $3 + f64.promote_f32 + f64.sqrt + local.tee $2 + local.get $2 + local.get $3 + local.get $3 + local.get $3 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $3 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + f64.promote_f32 + f64.mul + f64.add + f64.const 2 + f64.mul + f64.sub + f32.demote_f64 + local.get $0 + f32.copysign + ) + (func $std/math/test_asinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i64) + (local $4 i64) + (local $5 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $3 + local.get $4 + i64.const 9223372036854775807 + i64.and + f64.reinterpret_i64 + local.set $5 + local.get $3 + i64.const 1049 + i64.ge_u + if (result f64) + local.get $5 + call $~lib/math/NativeMath.log + f64.const 0.6931471805599453 + f64.add + else + local.get $3 + i64.const 1024 + i64.ge_u + if (result f64) + local.get $5 + local.get $5 + f64.add + f64.const 1 + local.get $5 + local.get $5 + f64.mul + f64.const 1 + f64.add + f64.sqrt + local.get $5 + f64.add + f64.div + f64.add + call $~lib/math/NativeMath.log + else + local.get $3 + i64.const 997 + i64.ge_u + if (result f64) + local.get $5 + local.get $5 + local.get $5 + f64.mul + local.tee $5 + local.get $5 + f64.const 1 + f64.add + f64.sqrt + f64.const 1 + f64.add + f64.div + f64.add + call $~lib/math/NativeMath.log1p + else + local.get $5 + end + end + end + local.get $0 + f64.copysign + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.asinh + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_asinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 f32) + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $3 + f32.reinterpret_i32 + local.set $4 + local.get $3 + i32.const 1166016512 + i32.ge_u + if (result f32) + local.get $4 + call $~lib/math/NativeMathf.log + f32.const 0.6931471824645996 + f32.add + else + local.get $3 + i32.const 1073741824 + i32.ge_u + if (result f32) + local.get $4 + local.get $4 + f32.add + f32.const 1 + local.get $4 + local.get $4 + f32.mul + f32.const 1 + f32.add + f32.sqrt + local.get $4 + f32.add + f32.div + f32.add + call $~lib/math/NativeMathf.log + else + local.get $3 + i32.const 964689920 + i32.ge_u + if (result f32) + local.get $4 + local.get $4 + local.get $4 + f32.mul + local.tee $4 + local.get $4 + f32.const 1 + f32.add + f32.sqrt + f32.const 1 + f32.add + f32.div + f32.add + call $~lib/math/NativeMathf.log1p + else + local.get $4 + end + end + end + local.get $0 + f32.copysign + local.get $1 + local.get $2 + call $std/math/check + ) + (func $~lib/math/NativeMath.atan (param $0 f64) (result f64) + (local $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + local.get $0 + local.set $1 + local.get $0 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $2 + i32.const 1141899264 + i32.ge_u + if + local.get $0 + local.get $0 + f64.ne + if + local.get $0 + return + end + f64.const 1.5707963267948966 + local.get $1 + f64.copysign + return + end + local.get $2 + i32.const 1071382528 + i32.lt_u + if + local.get $2 + i32.const 1044381696 + i32.lt_u + if + local.get $0 + return + end + i32.const -1 + local.set $3 + else + local.get $0 + f64.abs + local.set $0 + local.get $2 + i32.const 1072889856 + i32.lt_u + if (result f64) + local.get $2 + i32.const 1072037888 + i32.lt_u + if (result f64) + local.get $0 + local.get $0 + f64.add + f64.const -1 + f64.add + local.get $0 + f64.const 2 + f64.add + f64.div + else + i32.const 1 + local.set $3 + local.get $0 + f64.const -1 + f64.add + local.get $0 + f64.const 1 + f64.add + f64.div + end + else + local.get $2 + i32.const 1073971200 + i32.lt_u + if (result f64) + i32.const 2 + local.set $3 + local.get $0 + f64.const -1.5 + f64.add + local.get $0 + f64.const 1.5 + f64.mul + f64.const 1 + f64.add + f64.div + else + i32.const 3 + local.set $3 + f64.const -1 + local.get $0 + f64.div + end + end + local.set $0 + end + local.get $0 + local.get $0 + f64.mul + local.tee $5 + local.get $5 + f64.mul + local.set $4 + local.get $0 + local.get $5 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + f64.const 0.016285820115365782 + f64.mul + f64.const 0.049768779946159324 + f64.add + f64.mul + f64.const 0.06661073137387531 + f64.add + f64.mul + f64.const 0.09090887133436507 + f64.add + f64.mul + f64.const 0.14285714272503466 + f64.add + f64.mul + f64.const 0.3333333333333293 + f64.add + f64.mul + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + f64.const -0.036531572744216916 + f64.mul + f64.const -0.058335701337905735 + f64.add + f64.mul + f64.const -0.0769187620504483 + f64.add + f64.mul + f64.const -0.11111110405462356 + f64.add + f64.mul + f64.const -0.19999999999876483 + f64.add + f64.mul + f64.add + f64.mul + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $4 + f64.sub + return + end + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $3 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 + end + f64.const 0.4636476090008061 + local.get $4 + f64.const -2.2698777452961687e-17 + f64.add + local.get $0 + f64.sub + f64.sub + local.set $0 + br $break|0 + end + f64.const 0.7853981633974483 + local.get $4 + f64.const -3.061616997868383e-17 + f64.add + local.get $0 + f64.sub + f64.sub + local.set $0 + br $break|0 + end + f64.const 0.982793723247329 + local.get $4 + f64.const -1.3903311031230998e-17 + f64.add + local.get $0 + f64.sub + f64.sub + local.set $0 + br $break|0 + end + f64.const 1.5707963267948966 + local.get $4 + f64.const -6.123233995736766e-17 + f64.add + local.get $0 + f64.sub + f64.sub + local.set $0 + br $break|0 + end + unreachable + end + local.get $0 + local.get $1 + f64.copysign + ) + (func $~lib/math/NativeMathf.atan (param $0 f32) (result f32) + (local $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 f32) + local.get $0 + local.set $1 + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $2 + i32.const 1283457024 + i32.ge_u + if + local.get $0 + local.get $0 + f32.ne + if + local.get $0 + return + end + f32.const 1.570796251296997 + local.get $1 + f32.copysign + return + end + local.get $2 + i32.const 1054867456 + i32.lt_u + if + local.get $2 + i32.const 964689920 + i32.lt_u + if + local.get $0 + return + end + i32.const -1 + local.set $3 + else + local.get $0 + f32.abs + local.set $0 + local.get $2 + i32.const 1066926080 + i32.lt_u + if (result f32) + local.get $2 + i32.const 1060110336 + i32.lt_u + if (result f32) + local.get $0 + local.get $0 + f32.add + f32.const -1 + f32.add + local.get $0 + f32.const 2 + f32.add + f32.div + else + i32.const 1 + local.set $3 + local.get $0 + f32.const -1 + f32.add + local.get $0 + f32.const 1 + f32.add + f32.div + end + else + local.get $2 + i32.const 1075576832 + i32.lt_u + if (result f32) + i32.const 2 + local.set $3 + local.get $0 + f32.const -1.5 + f32.add + local.get $0 + f32.const 1.5 + f32.mul + f32.const 1 + f32.add + f32.div + else + i32.const 3 + local.set $3 + f32.const -1 + local.get $0 + f32.div + end + end + local.set $0 + end + local.get $0 + local.get $0 + f32.mul + local.tee $5 + local.get $5 + f32.mul + local.set $4 + local.get $0 + local.get $5 + local.get $4 + local.get $4 + f32.const 0.06168760731816292 + f32.mul + f32.const 0.14253635704517365 + f32.add + f32.mul + f32.const 0.333333283662796 + f32.add + f32.mul + local.get $4 + local.get $4 + f32.const -0.106480173766613 + f32.mul + f32.const -0.19999158382415771 + f32.add + f32.mul + f32.add + f32.mul + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $4 + f32.sub + return + end + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $3 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 + end + f32.const 0.46364760398864746 + local.get $4 + f32.const -5.01215824399992e-09 + f32.add + local.get $0 + f32.sub + f32.sub + local.set $0 + br $break|0 + end + f32.const 0.7853981256484985 + local.get $4 + f32.const -3.774894707930798e-08 + f32.add + local.get $0 + f32.sub + f32.sub + local.set $0 + br $break|0 + end + f32.const 0.9827936887741089 + local.get $4 + f32.const -3.447321716976148e-08 + f32.add + local.get $0 + f32.sub + f32.sub + local.set $0 + br $break|0 + end + f32.const 1.570796251296997 + local.get $4 + f32.const -7.549789415861596e-08 + f32.add + local.get $0 + f32.sub + f32.sub + local.set $0 + br $break|0 + end + unreachable + end + local.get $0 + local.get $1 + f32.copysign + ) + (func $std/math/test_atanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i64) + (local $4 f64) + (local $5 f64) + local.get $0 + f64.abs + local.set $5 + local.get $0 + i64.reinterpret_f64 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $3 + i64.const 1022 + i64.lt_u + if (result f64) + local.get $3 + i64.const 991 + i64.ge_u + if (result f64) + local.get $5 + local.get $5 + f64.add + local.tee $4 + local.get $4 + local.get $5 + f64.mul + f64.const 1 + local.get $5 + f64.sub + f64.div + f64.add + call $~lib/math/NativeMath.log1p + f64.const 0.5 + f64.mul + else + local.get $5 + end + else + local.get $5 + f64.const 1 + local.get $5 + f64.sub + f64.div + f64.const 2 + f64.mul + call $~lib/math/NativeMath.log1p + f64.const 0.5 + f64.mul + end + local.get $0 + f64.copysign + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.atanh + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_atanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 f32) + (local $4 i32) + local.get $0 + f32.abs + local.set $3 + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 1056964608 + i32.lt_u + if (result f32) + local.get $4 + i32.const 796917760 + i32.ge_u + if (result f32) + local.get $3 + local.get $3 + f32.add + local.get $3 + f32.const 1 + local.get $3 + f32.sub + f32.div + f32.const 1 + f32.add + f32.mul + call $~lib/math/NativeMathf.log1p + f32.const 0.5 + f32.mul + else + local.get $3 + end + else + local.get $3 + f32.const 1 + local.get $3 + f32.sub + f32.div + f32.const 2 + f32.mul + call $~lib/math/NativeMathf.log1p + f32.const 0.5 + f32.mul + end + local.get $0 + f32.copysign + local.get $1 + local.get $2 + call $std/math/check + ) + (func $std/math/test_atan2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 f64) + block $__inlined_func$~lib/math/NativeMath.atan2 (result f64) + local.get $1 + local.get $0 + f64.add + local.get $0 + local.get $0 + f64.ne + local.get $1 + local.get $1 + f64.ne + i32.or + br_if $__inlined_func$~lib/math/NativeMath.atan2 + drop + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $9 + local.get $1 + i64.reinterpret_f64 + local.tee $7 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $8 + local.get $7 + i32.wrap_i64 + local.tee $6 + local.get $8 + i32.const 1072693248 + i32.sub + i32.or + i32.eqz + if + local.get $0 + call $~lib/math/NativeMath.atan + br $__inlined_func$~lib/math/NativeMath.atan2 + end + local.get $8 + i32.const 30 + i32.shr_u + i32.const 2 + i32.and + local.get $9 + i32.const 31 + i32.shr_u + i32.or + local.set $4 + local.get $9 + i32.const 2147483647 + i32.and + local.tee $9 + local.get $5 + i32.wrap_i64 + i32.or + i32.eqz + if + block $break|0 + block $case3|0 + block $case2|0 + block $case0|0 + local.get $4 + br_table $case0|0 $case0|0 $case2|0 $case3|0 $break|0 + end + local.get $0 + br $__inlined_func$~lib/math/NativeMath.atan2 + end + f64.const 3.141592653589793 + br $__inlined_func$~lib/math/NativeMath.atan2 + end + f64.const -3.141592653589793 + br $__inlined_func$~lib/math/NativeMath.atan2 + end + end + block $folding-inner0 + local.get $8 + i32.const 2147483647 + i32.and + local.tee $8 + local.get $6 + i32.or + i32.eqz + br_if $folding-inner0 + local.get $8 + i32.const 2146435072 + i32.eq + if + local.get $9 + i32.const 2146435072 + i32.eq + if (result f64) + f64.const 2.356194490192345 + f64.const 0.7853981633974483 + local.get $4 + i32.const 2 + i32.and + select + local.tee $10 + f64.neg + local.get $10 + local.get $4 + i32.const 1 + i32.and + select + else + f64.const 3.141592653589793 + f64.const 0 + local.get $4 + i32.const 2 + i32.and + select + local.tee $10 + f64.neg + local.get $10 + local.get $4 + i32.const 1 + i32.and + select + end + br $__inlined_func$~lib/math/NativeMath.atan2 + end + local.get $9 + i32.const 2146435072 + i32.eq + local.get $8 + i32.const 67108864 + i32.add + local.get $9 + i32.lt_u + i32.or + br_if $folding-inner0 + local.get $9 + i32.const 67108864 + i32.add + local.get $8 + i32.lt_u + i32.const 0 + local.get $4 + i32.const 2 + i32.and + select + if (result f64) + f64.const 0 + else + local.get $0 + local.get $1 + f64.div + f64.abs + call $~lib/math/NativeMath.atan + end + local.set $10 + block $break|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $4 + br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 + end + local.get $10 + br $__inlined_func$~lib/math/NativeMath.atan2 + end + local.get $10 + f64.neg + br $__inlined_func$~lib/math/NativeMath.atan2 + end + f64.const 3.141592653589793 + local.get $10 + f64.const -1.2246467991473532e-16 + f64.add + f64.sub + br $__inlined_func$~lib/math/NativeMath.atan2 + end + local.get $10 + f64.const -1.2246467991473532e-16 + f64.add + f64.const -3.141592653589793 + f64.add + br $__inlined_func$~lib/math/NativeMath.atan2 + end + unreachable + end + f64.const -1.5707963267948966 + f64.const 1.5707963267948966 + local.get $4 + i32.const 1 + i32.and + select + end + local.get $2 + local.get $3 + call $std/math/check + if (result i32) + local.get $0 + local.get $1 + call $~lib/bindings/dom/Math.atan2 + local.get $2 + local.get $3 + call $std/math/check + else + i32.const 0 + end + ) + (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + local.get $0 + f32.ne + local.get $1 + local.get $1 + f32.ne + i32.or + if + local.get $1 + local.get $0 + f32.add + return + end + local.get $1 + i32.reinterpret_f32 + local.tee $3 + i32.const 1065353216 + i32.eq + if + local.get $0 + call $~lib/math/NativeMathf.atan + return + end + local.get $3 + i32.const 30 + i32.shr_u + i32.const 2 + i32.and + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 31 + i32.shr_u + i32.or + local.set $2 + local.get $4 + i32.const 2147483647 + i32.and + local.tee $4 + i32.eqz + if + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $2 + br_table $case1|0 $case1|0 $case2|0 $case3|0 $break|0 + end + local.get $0 + return + end + f32.const 3.1415927410125732 + return + end + f32.const -3.1415927410125732 + return + end + end + block $folding-inner0 + local.get $3 + i32.const 2147483647 + i32.and + local.tee $3 + i32.eqz + br_if $folding-inner0 + local.get $3 + i32.const 2139095040 + i32.eq + if + local.get $4 + i32.const 2139095040 + i32.eq + if (result f32) + f32.const 2.356194496154785 + f32.const 0.7853981852531433 + local.get $2 + i32.const 2 + i32.and + select + local.tee $0 + f32.neg + local.get $0 + local.get $2 + i32.const 1 + i32.and + select + else + f32.const 3.1415927410125732 + f32.const 0 + local.get $2 + i32.const 2 + i32.and + select + local.tee $0 + f32.neg + local.get $0 + local.get $2 + i32.const 1 + i32.and + select + end + return + end + local.get $4 + i32.const 2139095040 + i32.eq + local.get $3 + i32.const 218103808 + i32.add + local.get $4 + i32.lt_u + i32.or + br_if $folding-inner0 + local.get $4 + i32.const 218103808 + i32.add + local.get $3 + i32.lt_u + i32.const 0 + local.get $2 + i32.const 2 + i32.and + select + if (result f32) + f32.const 0 + else + local.get $0 + local.get $1 + f32.div + f32.abs + call $~lib/math/NativeMathf.atan + end + local.set $0 + block $break|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $2 + br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 + end + local.get $0 + return + end + local.get $0 + f32.neg + return + end + f32.const 3.1415927410125732 + local.get $0 + f32.const 8.742277657347586e-08 + f32.add + f32.sub + return + end + local.get $0 + f32.const 8.742277657347586e-08 + f32.add + f32.const -3.1415927410125732 + f32.add + return + end + unreachable + end + f32.const -1.5707963705062866 + f32.const 1.5707963705062866 + local.get $2 + i32.const 1 + i32.and + select + ) + (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 f64) + (local $4 i32) + (local $5 i64) + (local $6 f64) + local.get $0 + local.get $0 + f64.add + local.set $3 + block $__inlined_func$~lib/math/NativeMath.cbrt$18 + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 2146435072 + i32.ge_u + br_if $__inlined_func$~lib/math/NativeMath.cbrt$18 + local.get $4 + i32.const 1048576 + i32.lt_u + if (result i32) + local.get $0 + local.tee $3 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $4 + i32.eqz + br_if $__inlined_func$~lib/math/NativeMath.cbrt$18 + local.get $4 + i32.const 3 + i32.div_u + i32.const 696219795 + i32.add + else + local.get $4 + i32.const 3 + i32.div_u + i32.const 715094163 + i32.add + end + local.set $4 + local.get $5 + i64.const -9223372036854775808 + i64.and + local.get $4 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + local.tee $3 + local.get $3 + f64.mul + local.get $3 + local.get $0 + f64.div + f64.mul + local.set $6 + local.get $0 + local.get $3 + local.get $6 + local.get $6 + f64.const 1.6214297201053545 + f64.mul + f64.const -1.8849797954337717 + f64.add + f64.mul + f64.const 1.87595182427177 + f64.add + local.get $6 + local.get $6 + f64.mul + local.get $6 + f64.mul + local.get $6 + f64.const 0.14599619288661245 + f64.mul + f64.const -0.758397934778766 + f64.add + f64.mul + f64.add + f64.mul + i64.reinterpret_f64 + i64.const 2147483648 + i64.add + i64.const -1073741824 + i64.and + f64.reinterpret_i64 + local.tee $3 + local.get $3 + f64.mul + f64.div + local.set $6 + local.get $3 + local.get $3 + local.get $6 + local.get $3 + f64.sub + local.get $3 + local.get $3 + f64.add + local.get $6 + f64.add + f64.div + f64.mul + f64.add + local.set $3 + end + local.get $3 + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.cbrt + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_cbrtf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 f64) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 f64) + (local $8 f64) + block $__inlined_func$~lib/math/NativeMathf.cbrt$19 (result f32) + local.get $0 + local.get $0 + f32.add + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 2147483647 + i32.and + local.tee $6 + i32.const 2139095040 + i32.ge_u + br_if $__inlined_func$~lib/math/NativeMathf.cbrt$19 + drop + local.get $6 + i32.const 8388608 + i32.lt_u + if (result i32) + local.get $0 + local.get $6 + i32.eqz + br_if $__inlined_func$~lib/math/NativeMathf.cbrt$19 + drop + local.get $0 + f32.const 16777216 + f32.mul + i32.reinterpret_f32 + local.tee $4 + i32.const 2147483647 + i32.and + i32.const 3 + i32.div_u + i32.const 642849266 + i32.add + else + local.get $6 + i32.const 3 + i32.div_u + i32.const 709958130 + i32.add + end + local.get $4 + i32.const -2147483648 + i32.and + i32.or + f32.reinterpret_i32 + f64.promote_f32 + local.tee $3 + local.get $3 + f64.mul + local.get $3 + f64.mul + local.set $7 + local.get $3 + local.get $0 + f64.promote_f32 + local.tee $5 + local.get $5 + f64.add + local.tee $3 + local.get $7 + f64.add + f64.mul + local.get $5 + local.get $7 + f64.add + local.get $7 + f64.add + f64.div + local.tee $7 + local.get $7 + f64.mul + local.get $7 + f64.mul + local.set $8 + local.get $7 + local.get $3 + local.get $8 + f64.add + f64.mul + local.get $5 + local.get $8 + f64.add + local.get $8 + f64.add + f64.div + f32.demote_f64 + end + local.get $1 + local.get $2 + call $std/math/check + ) + (func $~lib/math/pio2_large_quot (param $0 i64) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i32) + (local $5 f64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i64) + local.get $0 + i64.const 9223372036854775807 + i64.and + i64.const 52 + i64.shr_u + i64.const 1045 + i64.sub + local.tee $1 + i64.const 63 + i64.and + local.set $6 + local.get $1 + i64.const 6 + i64.shr_s + i32.wrap_i64 + i32.const 3 + i32.shl + i32.const 5440 + i32.add + local.tee $4 + i64.load + local.set $3 + local.get $4 + i64.load offset=8 + local.set $2 + local.get $4 + i64.load offset=16 + local.set $1 + local.get $6 + i64.const 0 + i64.ne + if + local.get $3 + local.get $6 + i64.shl + local.get $2 + i64.const 64 + local.get $6 + i64.sub + local.tee $7 + i64.shr_u + i64.or + local.set $3 + local.get $2 + local.get $6 + i64.shl + local.get $1 + local.get $7 + i64.shr_u + i64.or + local.set $2 + local.get $1 + local.get $6 + i64.shl + local.get $4 + i64.load offset=24 + local.get $7 + i64.shr_u + i64.or + local.set $1 + end + local.get $0 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + local.tee $6 + i64.const 4294967295 + i64.and + local.set $7 + local.get $2 + i64.const 4294967295 + i64.and + local.tee $8 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $9 + i64.mul + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + local.get $7 + i64.mul + local.get $7 + local.get $8 + i64.mul + local.tee $7 + i64.const 32 + i64.shr_u + i64.add + local.tee $8 + i64.const 4294967295 + i64.and + i64.add + local.set $10 + local.get $2 + local.get $9 + i64.mul + local.get $8 + i64.const 32 + i64.shr_u + i64.add + local.get $10 + i64.const 32 + i64.shr_u + i64.add + global.set $~lib/math/res128_hi + local.get $9 + local.get $1 + i64.const 32 + i64.shr_u + i64.mul + local.tee $1 + local.get $7 + i64.const 4294967295 + i64.and + local.get $10 + i64.const 32 + i64.shl + i64.add + i64.add + local.tee $2 + local.get $1 + i64.lt_u + i64.extend_i32_u + global.get $~lib/math/res128_hi + local.get $3 + local.get $6 + i64.mul + i64.add + i64.add + local.tee $3 + i64.const 2 + i64.shl + local.get $2 + i64.const 62 + i64.shr_u + i64.or + local.tee $6 + i64.const 63 + i64.shr_s + local.tee $7 + local.get $2 + i64.const 2 + i64.shl + i64.xor + local.set $2 + local.get $6 + local.get $7 + i64.const 1 + i64.shr_s + i64.xor + local.tee $1 + i64.clz + local.set $8 + local.get $1 + local.get $8 + i64.shl + local.get $2 + i64.const 64 + local.get $8 + i64.sub + i64.shr_u + i64.or + local.tee $9 + i64.const 4294967295 + i64.and + local.set $1 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $10 + i64.const 560513588 + i64.mul + local.get $1 + i64.const 3373259426 + i64.mul + local.get $1 + i64.const 560513588 + i64.mul + local.tee $11 + i64.const 32 + i64.shr_u + i64.add + local.tee $12 + i64.const 4294967295 + i64.and + i64.add + local.set $1 + local.get $10 + i64.const 3373259426 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + i64.const 32 + i64.shr_u + i64.add + global.set $~lib/math/res128_hi + local.get $9 + f64.convert_i64_u + f64.const 3.753184150245214e-04 + f64.mul + local.get $2 + local.get $8 + i64.shl + f64.convert_i64_u + f64.const 3.834951969714103e-04 + f64.mul + f64.add + i64.trunc_sat_f64_u + local.tee $2 + local.get $11 + i64.const 4294967295 + i64.and + local.get $1 + i64.const 32 + i64.shl + i64.add + local.tee $1 + i64.gt_u + i64.extend_i32_u + global.get $~lib/math/res128_hi + local.tee $9 + i64.const 11 + i64.shr_u + i64.add + f64.convert_i64_u + global.set $~lib/math/rempio2_y0 + local.get $9 + i64.const 53 + i64.shl + local.get $1 + i64.const 11 + i64.shr_u + i64.or + local.get $2 + i64.add + f64.convert_i64_u + f64.const 5.421010862427522e-20 + f64.mul + global.set $~lib/math/rempio2_y1 + global.get $~lib/math/rempio2_y0 + i64.const 4372995238176751616 + local.get $8 + i64.const 52 + i64.shl + i64.sub + local.get $0 + local.get $6 + i64.xor + i64.const -9223372036854775808 + i64.and + i64.or + f64.reinterpret_i64 + local.tee $5 + f64.mul + global.set $~lib/math/rempio2_y0 + global.get $~lib/math/rempio2_y1 + local.get $5 + f64.mul + global.set $~lib/math/rempio2_y1 + local.get $3 + i64.const 62 + i64.shr_s + local.get $7 + i64.sub + i32.wrap_i64 + ) + (func $~lib/math/NativeMath.cos (param $0 f64) (result f64) + (local $1 f64) + (local $2 f64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 31 + i32.shr_u + local.set $6 + local.get $3 + i32.const 2147483647 + i32.and + local.tee $3 + i32.const 1072243195 + i32.le_u + if + local.get $3 + i32.const 1044816030 + i32.lt_u + if + f64.const 1 + return + end + local.get $0 + local.get $0 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + f64.const 1 + local.get $1 + f64.const 0.5 + f64.mul + local.tee $7 + f64.sub + local.tee $8 + f64.const 1 + local.get $8 + f64.sub + local.get $7 + f64.sub + local.get $1 + local.get $1 + local.get $1 + local.get $1 + f64.const 2.480158728947673e-05 + f64.mul + f64.const -0.001388888888887411 + f64.add + f64.mul + f64.const 0.0416666666666666 + f64.add + f64.mul + local.get $2 + local.get $2 + f64.mul + local.get $1 + local.get $1 + f64.const -1.1359647557788195e-11 + f64.mul + f64.const 2.087572321298175e-09 + f64.add + f64.mul + f64.const -2.7557314351390663e-07 + f64.add + f64.mul + f64.add + f64.mul + local.get $0 + f64.const 0 + f64.mul + f64.sub + f64.add + f64.add + return + end + local.get $3 + i32.const 2146435072 + i32.ge_u + if + local.get $0 + local.get $0 + f64.sub + return + end + block $~lib/math/rempio2|inlined.0 (result i32) + local.get $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 1073928572 + i32.lt_u + if + i32.const 1 + local.set $3 + local.get $6 + if (result f64) + local.get $0 + f64.const 1.5707963267341256 + f64.add + local.set $0 + i32.const -1 + local.set $3 + local.get $4 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.add + local.tee $1 + f64.const 2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + end + else + local.get $0 + f64.const -1.5707963267341256 + f64.add + local.set $0 + local.get $4 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const -6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const -6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const -6.077100506303966e-11 + f64.add + local.tee $1 + f64.const -2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const -2.0222662487959506e-21 + f64.add + end + end + local.get $0 + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 + local.get $3 + br $~lib/math/rempio2|inlined.0 + end + local.get $4 + i32.const 1094263291 + i32.lt_u + if + local.get $4 + i32.const 20 + i32.shr_u + local.tee $3 + local.get $0 + local.get $0 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.tee $7 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.tee $0 + local.get $7 + f64.const 6.077100506506192e-11 + f64.mul + local.tee $2 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 16 + i32.gt_u + if + local.get $7 + f64.const 2.0222662487959506e-21 + f64.mul + local.get $0 + local.get $0 + local.get $7 + f64.const 6.077100506303966e-11 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $2 + local.get $3 + local.get $0 + local.get $2 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 49 + i32.gt_u + if + local.get $7 + f64.const 8.4784276603689e-32 + f64.mul + local.get $0 + local.get $0 + local.get $7 + f64.const 2.0222662487111665e-21 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $2 + local.get $0 + local.get $2 + f64.sub + local.set $1 + end + end + local.get $1 + global.set $~lib/math/rempio2_y0 + local.get $0 + local.get $1 + f64.sub + local.get $2 + f64.sub + global.set $~lib/math/rempio2_y1 + local.get $7 + i32.trunc_sat_f64_s + br $~lib/math/rempio2|inlined.0 + end + i32.const 0 + local.get $5 + call $~lib/math/pio2_large_quot + local.tee $3 + i32.sub + local.get $3 + local.get $6 + select + end + local.set $3 + global.get $~lib/math/rempio2_y0 + local.set $1 + global.get $~lib/math/rempio2_y1 + local.set $2 + local.get $3 + i32.const 1 + i32.and + if (result f64) + local.get $1 + local.get $1 + f64.mul + local.tee $0 + local.get $1 + f64.mul + local.set $7 + local.get $1 + local.get $0 + local.get $2 + f64.const 0.5 + f64.mul + local.get $7 + local.get $0 + local.get $0 + f64.const 2.7557313707070068e-06 + f64.mul + f64.const -1.984126982985795e-04 + f64.add + f64.mul + f64.const 0.00833333333332249 + f64.add + local.get $0 + local.get $0 + local.get $0 + f64.mul + f64.mul + local.get $0 + f64.const 1.58969099521155e-10 + f64.mul + f64.const -2.5050760253406863e-08 + f64.add + f64.mul + f64.add + f64.mul + f64.sub + f64.mul + local.get $2 + f64.sub + local.get $7 + f64.const -0.16666666666666632 + f64.mul + f64.sub + f64.sub + else + local.get $1 + local.get $1 + f64.mul + local.tee $7 + local.get $7 + f64.mul + local.set $8 + f64.const 1 + local.get $7 + f64.const 0.5 + f64.mul + local.tee $0 + f64.sub + local.tee $9 + f64.const 1 + local.get $9 + f64.sub + local.get $0 + f64.sub + local.get $7 + local.get $7 + local.get $7 + local.get $7 + f64.const 2.480158728947673e-05 + f64.mul + f64.const -0.001388888888887411 + f64.add + f64.mul + f64.const 0.0416666666666666 + f64.add + f64.mul + local.get $8 + local.get $8 + f64.mul + local.get $7 + local.get $7 + f64.const -1.1359647557788195e-11 + f64.mul + f64.const 2.087572321298175e-09 + f64.add + f64.mul + f64.const -2.7557314351390663e-07 + f64.add + f64.mul + f64.add + f64.mul + local.get $1 + local.get $2 + f64.mul + f64.sub + f64.add + f64.add + end + local.tee $0 + f64.neg + local.get $0 + local.get $3 + i32.const 1 + i32.add + i32.const 2 + i32.and + select + ) + (func $~lib/math/NativeMathf.cos (param $0 f32) (result f32) + (local $1 f64) + (local $2 f64) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 f64) + (local $7 i32) + (local $8 i64) + (local $9 i64) + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_u + local.set $5 + block $folding-inner0 + local.get $3 + i32.const 2147483647 + i32.and + local.tee $3 + i32.const 1061752794 + i32.le_u + if + local.get $3 + i32.const 964689920 + i32.lt_u + if + f32.const 1 + return + end + local.get $0 + f64.promote_f32 + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + br $folding-inner0 + end + local.get $3 + i32.const 1081824209 + i32.le_u + if + local.get $3 + i32.const 1075235811 + i32.gt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 3.141592653589793 + f64.add + local.get $1 + f64.const -3.141592653589793 + f64.add + local.get $5 + select + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + f32.neg + return + else + local.get $5 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + else + f64.const 1.5707963267948966 + local.get $0 + f64.promote_f32 + f64.sub + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + end + local.set $6 + local.get $2 + local.get $6 + local.get $1 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $6 + local.get $1 + local.get $1 + f64.mul + f64.mul + local.get $1 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 + return + end + unreachable + end + local.get $3 + i32.const 1088565717 + i32.le_u + if + local.get $3 + i32.const 1085271519 + i32.gt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 6.283185307179586 + f64.add + local.get $1 + f64.const -6.283185307179586 + f64.add + local.get $5 + select + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + br $folding-inner0 + else + local.get $5 + if (result f64) + local.get $0 + f32.neg + f64.promote_f32 + f64.const -4.71238898038469 + f64.add + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + else + local.get $0 + f64.promote_f32 + f64.const -4.71238898038469 + f64.add + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + end + local.set $6 + local.get $2 + local.get $6 + local.get $1 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $6 + local.get $1 + local.get $1 + f64.mul + f64.mul + local.get $1 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 + return + end + unreachable + end + local.get $3 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + local.get $0 + f32.sub + return + end + block $~lib/math/rempio2f|inlined.0 (result i32) + local.get $3 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $2 + local.get $1 + local.get $2 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $2 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $2 + i32.trunc_sat_f64_s + br $~lib/math/rempio2f|inlined.0 + end + local.get $3 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $7 + i32.const 63 + i32.and + i64.extend_i32_s + local.set $8 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.const 5632 + i32.add + local.tee $7 + i64.load offset=8 + local.set $4 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $3 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $9 + local.get $7 + i64.load + local.get $8 + i64.shl + local.get $4 + i64.const 64 + local.get $8 + i64.sub + i64.shr_u + i64.or + i64.mul + local.get $8 + i64.const 32 + i64.gt_u + if (result i64) + local.get $4 + local.get $8 + i64.const 32 + i64.sub + i64.shl + local.get $7 + i64.load offset=16 + i64.const 96 + local.get $8 + i64.sub + i64.shr_u + i64.or + else + local.get $4 + i64.const 32 + local.get $8 + i64.sub + i64.shr_u + end + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $4 + i64.const 2 + i64.shl + local.tee $8 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + i32.const 0 + local.get $4 + i64.const 62 + i64.shr_u + local.get $8 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.tee $3 + i32.sub + local.get $3 + local.get $5 + select + end + local.set $3 + global.get $~lib/math/rempio2f_y + local.set $1 + local.get $3 + i32.const 1 + i32.and + if (result f32) + local.get $1 + local.get $1 + local.get $1 + f64.mul + local.tee $2 + local.get $1 + f64.mul + local.tee $1 + local.get $2 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $1 + local.get $2 + local.get $2 + f64.mul + f64.mul + local.get $2 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 + else + local.get $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + end + local.tee $0 + f32.neg + local.get $0 + local.get $3 + i32.const 1 + i32.add + i32.const 2 + i32.and + select + return + end + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + ) + (func $~lib/math/NativeMath.expm1 (param $0 f64) (result f64) + (local $1 i32) + (local $2 f64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 f64) + (local $7 f64) + (local $8 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.set $3 + local.get $5 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.set $4 + local.get $3 + i32.const 1078159482 + i32.ge_u + if + local.get $0 + local.get $0 + f64.ne + if + local.get $0 + return + end + local.get $4 + if + f64.const -1 + return + end + local.get $0 + f64.const 709.782712893384 + f64.gt + if + local.get $0 + f64.const 8988465674311579538646525e283 + f64.mul + return + end + end + local.get $3 + i32.const 1071001154 + i32.gt_u + if + local.get $0 + i32.const 1 + local.get $4 + i32.const 1 + i32.shl + i32.sub + local.get $0 + f64.const 1.4426950408889634 + f64.mul + f64.const 0.5 + local.get $0 + f64.copysign + f64.add + i32.trunc_sat_f64_s + local.get $3 + i32.const 1072734898 + i32.lt_u + select + local.tee $1 + f64.convert_i32_s + local.tee $0 + f64.const 0.6931471803691238 + f64.mul + f64.sub + local.tee $2 + local.get $2 + local.get $0 + f64.const 1.9082149292705877e-10 + f64.mul + local.tee $2 + f64.sub + local.tee $0 + f64.sub + local.get $2 + f64.sub + local.set $2 + else + local.get $3 + i32.const 1016070144 + i32.lt_u + if + local.get $0 + return + end + end + local.get $0 + local.get $0 + f64.const 0.5 + f64.mul + local.tee $7 + f64.mul + local.tee $6 + local.get $6 + f64.mul + local.set $8 + f64.const 3 + local.get $6 + f64.const -0.03333333333333313 + f64.mul + f64.const 1 + f64.add + local.get $8 + local.get $6 + f64.const -7.93650757867488e-05 + f64.mul + f64.const 1.5873015872548146e-03 + f64.add + local.get $8 + local.get $6 + f64.const -2.0109921818362437e-07 + f64.mul + f64.const 4.008217827329362e-06 + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.tee $8 + local.get $7 + f64.mul + f64.sub + local.set $7 + local.get $6 + local.get $8 + local.get $7 + f64.sub + f64.const 6 + local.get $0 + local.get $7 + f64.mul + f64.sub + f64.div + f64.mul + local.set $7 + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + local.get $7 + f64.mul + local.get $6 + f64.sub + f64.sub + return + end + local.get $0 + local.get $7 + local.get $2 + f64.sub + f64.mul + local.get $2 + f64.sub + local.get $6 + f64.sub + local.set $2 + local.get $1 + i32.const -1 + i32.eq + if + local.get $0 + local.get $2 + f64.sub + f64.const 0.5 + f64.mul + f64.const -0.5 + f64.add + return + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + f64.const -0.25 + f64.lt + if + local.get $2 + local.get $0 + f64.const 0.5 + f64.add + f64.sub + f64.const -2 + f64.mul + return + end + local.get $0 + local.get $2 + f64.sub + f64.const 2 + f64.mul + f64.const 1 + f64.add + return + end + local.get $1 + i64.extend_i32_s + i64.const 1023 + i64.add + i64.const 52 + i64.shl + f64.reinterpret_i64 + local.set $6 + local.get $1 + i32.const 0 + i32.lt_s + local.get $1 + i32.const 56 + i32.gt_s + i32.or + if + local.get $0 + local.get $2 + f64.sub + f64.const 1 + f64.add + local.tee $0 + local.get $0 + f64.add + f64.const 8988465674311579538646525e283 + f64.mul + local.get $0 + local.get $6 + f64.mul + local.get $1 + i32.const 1024 + i32.eq + select + f64.const -1 + f64.add + return + end + local.get $0 + f64.const 1 + i64.const 1023 + local.get $1 + i64.extend_i32_s + i64.sub + i64.const 52 + i64.shl + f64.reinterpret_i64 + local.tee $0 + f64.sub + local.get $2 + f64.sub + f64.const 1 + local.get $2 + local.get $0 + f64.add + f64.sub + local.get $1 + i32.const 20 + i32.lt_s + select + f64.add + local.get $6 + f64.mul + ) + (func $~lib/math/NativeMath.exp (param $0 f64) (result f64) + (local $1 i32) + (local $2 i64) + (local $3 f64) + (local $4 f64) + (local $5 i32) + (local $6 i64) + (local $7 f64) + (local $8 f64) + block $~lib/util/math/exp_lut|inlined.0 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.tee $1 + i32.const 969 + i32.sub + local.tee $5 + i32.const 63 + i32.ge_u + if + f64.const 1 + local.get $5 + i32.const -2147483648 + i32.ge_u + br_if $~lib/util/math/exp_lut|inlined.0 + drop + local.get $1 + i32.const 1033 + i32.ge_u + if + f64.const 0 + local.get $2 + i64.const -4503599627370496 + i64.eq + br_if $~lib/util/math/exp_lut|inlined.0 + drop + local.get $0 + f64.const 1 + f64.add + local.get $1 + i32.const 2047 + i32.ge_u + br_if $~lib/util/math/exp_lut|inlined.0 + drop + f64.const 0 + f64.const inf + local.get $2 + i64.const 0 + i64.lt_s + select + br $~lib/util/math/exp_lut|inlined.0 + end + i32.const 0 + local.set $1 + end + local.get $0 + f64.const 184.6649652337873 + f64.mul + f64.const 6755399441055744 + f64.add + local.tee $3 + i64.reinterpret_f64 + local.tee $6 + i64.const 127 + i64.and + i64.const 1 + i64.shl + i32.wrap_i64 + i32.const 3 + i32.shl + i32.const 5664 + i32.add + local.tee $5 + i64.load offset=8 + local.get $6 + i64.const 45 + i64.shl + i64.add + local.set $2 + local.get $0 + local.get $3 + f64.const -6755399441055744 + f64.add + local.tee $0 + f64.const -0.005415212348111709 + f64.mul + f64.add + local.get $0 + f64.const -1.2864023111638346e-14 + f64.mul + f64.add + local.tee $0 + local.get $0 + f64.mul + local.set $3 + local.get $5 + f64.load + local.get $0 + f64.add + local.get $3 + local.get $0 + f64.const 0.16666666666665886 + f64.mul + f64.const 0.49999999999996786 + f64.add + f64.mul + f64.add + local.get $3 + local.get $3 + f64.mul + local.get $0 + f64.const 0.008333335853059549 + f64.mul + f64.const 0.0416666808410674 + f64.add + f64.mul + f64.add + local.set $0 + local.get $1 + i32.eqz + if + block $~lib/util/math/specialcase|inlined.0 (result f64) + local.get $6 + i64.const 2147483648 + i64.and + i64.eqz + if + local.get $2 + i64.const 4544132024016830464 + i64.sub + f64.reinterpret_i64 + local.tee $3 + local.get $3 + local.get $0 + f64.mul + f64.add + f64.const 5486124068793688683255936e279 + f64.mul + br $~lib/util/math/specialcase|inlined.0 + end + local.get $2 + i64.const 4602678819172646912 + i64.add + local.tee $2 + f64.reinterpret_i64 + local.tee $3 + local.get $0 + f64.mul + local.set $7 + local.get $3 + local.get $7 + f64.add + local.tee $4 + f64.abs + f64.const 1 + f64.lt + if (result f64) + f64.const 1 + local.get $4 + f64.copysign + local.tee $8 + local.get $4 + f64.add + local.tee $0 + local.get $8 + local.get $0 + f64.sub + local.get $4 + f64.add + local.get $3 + local.get $4 + f64.sub + local.get $7 + f64.add + f64.add + f64.add + local.get $8 + f64.sub + local.tee $0 + f64.const 0 + f64.eq + if (result f64) + local.get $2 + i64.const -9223372036854775808 + i64.and + f64.reinterpret_i64 + else + local.get $0 + end + else + local.get $4 + end + f64.const 2.2250738585072014e-308 + f64.mul + end + br $~lib/util/math/exp_lut|inlined.0 + end + local.get $2 + f64.reinterpret_i64 + local.tee $3 + local.get $3 + local.get $0 + f64.mul + f64.add + end + ) + (func $std/math/test_cosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 f64) + block $__inlined_func$~lib/math/NativeMath.cosh$20 (result f64) + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + f64.reinterpret_i64 + local.set $5 + local.get $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 1072049730 + i32.lt_u + if + f64.const 1 + local.get $3 + i32.const 1045430272 + i32.lt_u + br_if $__inlined_func$~lib/math/NativeMath.cosh$20 + drop + local.get $5 + call $~lib/math/NativeMath.expm1 + local.tee $5 + local.get $5 + f64.mul + local.get $5 + local.get $5 + f64.add + f64.const 2 + f64.add + f64.div + f64.const 1 + f64.add + br $__inlined_func$~lib/math/NativeMath.cosh$20 + end + local.get $3 + i32.const 1082535490 + i32.lt_u + if + local.get $5 + call $~lib/math/NativeMath.exp + local.tee $5 + f64.const 1 + local.get $5 + f64.div + f64.add + f64.const 0.5 + f64.mul + br $__inlined_func$~lib/math/NativeMath.cosh$20 + end + local.get $5 + f64.const -1416.0996898839683 + f64.add + call $~lib/math/NativeMath.exp + f64.const 2247116418577894884661631e283 + f64.mul + f64.const 2247116418577894884661631e283 + f64.mul + end + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.cosh + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end + ) + (func $~lib/math/NativeMathf.expm1 (param $0 f32) (result f32) + (local $1 i32) + (local $2 f32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 f32) + (local $7 f32) + local.get $0 + i32.reinterpret_f32 + local.tee $5 + i32.const 2147483647 + i32.and + local.set $3 + local.get $5 + i32.const 31 + i32.shr_u + local.set $5 + local.get $3 + i32.const 1100331076 + i32.ge_u + if + local.get $3 + i32.const 2139095040 + i32.gt_u + if + local.get $0 + return + end + local.get $5 + if + f32.const -1 + return + end + local.get $3 + i32.const 1118925335 + i32.gt_u + if + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul + return + end + end + local.get $3 + i32.const 1051816472 + i32.gt_u + if + local.get $0 + i32.const 1 + local.get $5 + i32.const 1 + i32.shl + i32.sub + local.get $0 + f32.const 1.4426950216293335 + f32.mul + f32.const 0.5 + local.get $0 + f32.copysign + f32.add + i32.trunc_sat_f32_s + local.get $3 + i32.const 1065686418 + i32.lt_u + select + local.tee $1 + f32.convert_i32_s + local.tee $0 + f32.const 0.6931381225585938 + f32.mul + f32.sub + local.tee $2 + local.get $2 + local.get $0 + f32.const 9.05800061445916e-06 + f32.mul + local.tee $2 + f32.sub + local.tee $0 + f32.sub + local.get $2 + f32.sub + local.set $2 + else + local.get $3 + i32.const 855638016 + i32.lt_u + if + local.get $0 + return + end + end + f32.const 3 + local.get $0 + local.get $0 + f32.const 0.5 + f32.mul + local.tee $6 + f32.mul + local.tee $4 + local.get $4 + f32.const 1.5807170420885086e-03 + f32.mul + f32.const -0.03333321213722229 + f32.add + f32.mul + f32.const 1 + f32.add + local.tee $7 + local.get $6 + f32.mul + f32.sub + local.set $6 + local.get $4 + local.get $7 + local.get $6 + f32.sub + f32.const 6 + local.get $0 + local.get $6 + f32.mul + f32.sub + f32.div + f32.mul + local.set $6 + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + local.get $6 + f32.mul + local.get $4 + f32.sub + f32.sub + return + end + local.get $0 + local.get $6 + local.get $2 + f32.sub + f32.mul + local.get $2 + f32.sub + local.get $4 + f32.sub + local.set $2 + local.get $1 + i32.const -1 + i32.eq + if + local.get $0 + local.get $2 + f32.sub + f32.const 0.5 + f32.mul + f32.const -0.5 + f32.add + return + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + f32.const -0.25 + f32.lt + if + local.get $2 + local.get $0 + f32.const 0.5 + f32.add + f32.sub + f32.const -2 + f32.mul + return + end + local.get $0 + local.get $2 + f32.sub + f32.const 2 + f32.mul + f32.const 1 + f32.add + return + end + local.get $1 + i32.const 127 + i32.add + i32.const 23 + i32.shl + f32.reinterpret_i32 + local.set $4 + local.get $1 + i32.const 0 + i32.lt_s + local.get $1 + i32.const 56 + i32.gt_s + i32.or + if + local.get $0 + local.get $2 + f32.sub + f32.const 1 + f32.add + local.tee $0 + local.get $0 + f32.add + f32.const 1701411834604692317316873e14 + f32.mul + local.get $0 + local.get $4 + f32.mul + local.get $1 + i32.const 128 + i32.eq + select + f32.const -1 + f32.add + return + end + local.get $0 + f32.const 1 + i32.const 127 + local.get $1 + i32.sub + i32.const 23 + i32.shl + f32.reinterpret_i32 + local.tee $0 + f32.sub + local.get $2 + f32.sub + f32.const 1 + local.get $2 + local.get $0 + f32.add + f32.sub + local.get $1 + i32.const 20 + i32.lt_s + select + f32.add + local.get $4 + f32.mul + ) + (func $~lib/math/NativeMathf.exp (param $0 f32) (result f32) + (local $1 f64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 f64) + block $~lib/util/math/expf_lut|inlined.0 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + local.tee $4 + i32.const 1067 + i32.ge_u + if + f32.const 0 + local.get $3 + i32.const -8388608 + i32.eq + br_if $~lib/util/math/expf_lut|inlined.0 + drop + local.get $0 + local.get $0 + f32.add + local.get $4 + i32.const 2040 + i32.ge_u + br_if $~lib/util/math/expf_lut|inlined.0 + drop + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul + local.get $0 + f32.const 88.72283172607422 + f32.gt + br_if $~lib/util/math/expf_lut|inlined.0 + drop + f32.const 0 + local.get $0 + f32.const -103.97207641601562 + f32.lt + br_if $~lib/util/math/expf_lut|inlined.0 + drop + end + local.get $0 + f64.promote_f32 + f64.const 46.16624130844683 + f64.mul + local.tee $1 + f64.const 6755399441055744 + f64.add + local.tee $5 + i64.reinterpret_f64 + local.set $2 + local.get $1 + local.get $5 + f64.const -6755399441055744 + f64.add + f64.sub + local.tee $1 + f64.const 0.021660849396613134 + f64.mul + f64.const 1 + f64.add + local.get $1 + f64.const 1.6938359250920212e-06 + f64.mul + f64.const 2.3459809789509004e-04 + f64.add + local.get $1 + local.get $1 + f64.mul + f64.mul + f64.add + local.get $2 + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.const 7712 + i32.add + i64.load + local.get $2 + i64.const 47 + i64.shl + i64.add + f64.reinterpret_i64 + f64.mul + f32.demote_f64 + end + ) + (func $std/math/test_coshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + block $__inlined_func$~lib/math/NativeMathf.cosh$21 (result f32) + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $3 + f32.reinterpret_i32 + local.set $0 + local.get $3 + i32.const 1060205079 + i32.lt_u + if + f32.const 1 + local.get $3 + i32.const 964689920 + i32.lt_u + br_if $__inlined_func$~lib/math/NativeMathf.cosh$21 + drop + local.get $0 + call $~lib/math/NativeMathf.expm1 + local.tee $0 + local.get $0 + f32.mul + local.get $0 + local.get $0 + f32.add + f32.const 2 + f32.add + f32.div + f32.const 1 + f32.add + br $__inlined_func$~lib/math/NativeMathf.cosh$21 + end + local.get $3 + i32.const 1118925335 + i32.lt_u + if + local.get $0 + call $~lib/math/NativeMathf.exp + local.tee $0 + f32.const 0.5 + f32.mul + f32.const 0.5 + local.get $0 + f32.div + f32.add + br $__inlined_func$~lib/math/NativeMathf.cosh$21 + end + local.get $0 + f32.const -162.88958740234375 + f32.add + call $~lib/math/NativeMathf.exp + f32.const 1661534994731144841129758e11 + f32.mul + f32.const 1661534994731144841129758e11 + f32.mul + end + local.get $1 + local.get $2 + call $std/math/check + ) + (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 f64) + (local $6 f64) + (local $7 i32) + (local $8 i64) + (local $9 f64) + (local $10 f64) + block $~lib/util/math/exp2_lut|inlined.0 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.tee $3 + i32.const 969 + i32.sub + local.tee $7 + i32.const 63 + i32.ge_u + if + f64.const 1 + local.get $7 + i32.const -2147483648 + i32.ge_u + br_if $~lib/util/math/exp2_lut|inlined.0 + drop + local.get $3 + i32.const 1033 + i32.ge_u + if + f64.const 0 + local.get $4 + i64.const -4503599627370496 + i64.eq + br_if $~lib/util/math/exp2_lut|inlined.0 + drop + local.get $0 + f64.const 1 + f64.add + local.get $3 + i32.const 2047 + i32.ge_u + br_if $~lib/util/math/exp2_lut|inlined.0 + drop + f64.const inf + local.get $4 + i64.const 0 + i64.ge_s + br_if $~lib/util/math/exp2_lut|inlined.0 + drop + f64.const 0 + local.get $4 + i64.const -4570929321408987136 + i64.ge_u + br_if $~lib/util/math/exp2_lut|inlined.0 + drop + end + local.get $3 + i32.const 0 + local.get $4 + i64.const 1 + i64.shl + i64.const -9143996093422370816 + i64.le_u + select + local.set $3 + end + local.get $0 + f64.const 52776558133248 + f64.add + local.tee $5 + i64.reinterpret_f64 + local.tee $8 + i64.const 127 + i64.and + i64.const 1 + i64.shl + i32.wrap_i64 + i32.const 3 + i32.shl + i32.const 5664 + i32.add + local.tee $7 + i64.load offset=8 + local.get $8 + i64.const 45 + i64.shl + i64.add + local.set $4 + local.get $0 + local.get $5 + f64.const -52776558133248 + f64.add + f64.sub + local.tee $5 + local.get $5 + f64.mul + local.set $6 + local.get $7 + f64.load + local.get $5 + f64.const 0.6931471805599453 + f64.mul + f64.add + local.get $6 + local.get $5 + f64.const 0.0555041086686087 + f64.mul + f64.const 0.24022650695909065 + f64.add + f64.mul + f64.add + local.get $6 + local.get $6 + f64.mul + local.get $5 + f64.const 1.3332074570119598e-03 + f64.mul + f64.const 0.009618131975721055 + f64.add + f64.mul + f64.add + local.set $5 + local.get $3 + i32.eqz + if + block $~lib/util/math/specialcase2|inlined.0 (result f64) + local.get $8 + i64.const 2147483648 + i64.and + i64.eqz + if + local.get $4 + i64.const 4503599627370496 + i64.sub + f64.reinterpret_i64 + local.tee $6 + local.get $5 + f64.mul + local.get $6 + f64.add + f64.const 2 + f64.mul + br $~lib/util/math/specialcase2|inlined.0 + end + local.get $4 + i64.const 4602678819172646912 + i64.add + f64.reinterpret_i64 + local.tee $6 + local.get $5 + f64.mul + local.tee $9 + local.get $6 + f64.add + local.tee $10 + f64.const 1 + f64.lt + if (result f64) + local.get $10 + f64.const 1 + f64.add + local.tee $5 + f64.const 1 + local.get $5 + f64.sub + local.get $10 + f64.add + local.get $6 + local.get $10 + f64.sub + local.get $9 + f64.add + f64.add + f64.add + f64.const -1 + f64.add + else + local.get $10 + end + f64.const 2.2250738585072014e-308 + f64.mul + end + br $~lib/util/math/exp2_lut|inlined.0 + end + local.get $4 + f64.reinterpret_i64 + local.tee $6 + local.get $5 + f64.mul + local.get $6 + f64.add + end + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + f64.const 2 + local.get $0 + call $~lib/bindings/dom/Math.pow + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_exp2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 f64) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 f64) + block $~lib/util/math/exp2f_lut|inlined.0 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $5 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + local.tee $6 + i32.const 1072 + i32.ge_u + if + f32.const 0 + local.get $5 + i32.const -8388608 + i32.eq + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop + local.get $0 + local.get $0 + f32.add + local.get $6 + i32.const 2040 + i32.ge_u + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul + local.get $0 + f32.const 0 + f32.gt + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop + f32.const 0 + local.get $0 + f32.const -150 + f32.le + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop + end + local.get $0 + f64.promote_f32 + local.tee $3 + f64.const 211106232532992 + f64.add + local.tee $7 + i64.reinterpret_f64 + local.set $4 + local.get $3 + local.get $7 + f64.const -211106232532992 + f64.add + f64.sub + local.tee $3 + f64.const 0.6931471806916203 + f64.mul + f64.const 1 + f64.add + local.get $3 + f64.const 0.05550361559341535 + f64.mul + f64.const 0.2402284522445722 + f64.add + local.get $3 + local.get $3 + f64.mul + f64.mul + f64.add + local.get $4 + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.const 7712 + i32.add + i64.load + local.get $4 + i64.const 47 + i64.shl + i64.add + f64.reinterpret_i64 + f64.mul + f32.demote_f64 + end + local.get $1 + local.get $2 + call $std/math/check + ) + (func $std/math/test_hypot (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) + (local $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 f64) + (local $10 f64) + (local $11 f64) + (local $12 f64) + (local $13 f64) + local.get $1 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $5 + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + i64.gt_u + if + local.get $4 + local.get $5 + local.set $4 + local.set $5 + end + local.get $5 + f64.reinterpret_i64 + local.tee $9 + local.set $0 + block $__inlined_func$~lib/math/NativeMath.hypot$23 + local.get $5 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $7 + i32.const 2047 + i32.eq + br_if $__inlined_func$~lib/math/NativeMath.hypot$23 + local.get $4 + f64.reinterpret_i64 + local.tee $1 + local.set $0 + local.get $5 + i64.eqz + local.get $4 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $8 + i32.const 2047 + i32.eq + i32.or + br_if $__inlined_func$~lib/math/NativeMath.hypot$23 + local.get $1 + local.get $9 + f64.add + local.set $0 + local.get $8 + local.get $7 + i32.sub + i32.const 64 + i32.gt_s + br_if $__inlined_func$~lib/math/NativeMath.hypot$23 + f64.const 1 + local.set $0 + local.get $8 + i32.const 1533 + i32.gt_u + if (result f64) + f64.const 5260135901548373507240989e186 + local.set $0 + local.get $1 + f64.const 1.90109156629516e-211 + f64.mul + local.set $1 + local.get $9 + f64.const 1.90109156629516e-211 + f64.mul + else + local.get $7 + i32.const 573 + i32.lt_u + if (result f64) + f64.const 1.90109156629516e-211 + local.set $0 + local.get $1 + f64.const 5260135901548373507240989e186 + f64.mul + local.set $1 + local.get $9 + f64.const 5260135901548373507240989e186 + f64.mul + else + local.get $9 + end + end + local.set $11 + local.get $1 + local.get $1 + local.get $1 + f64.const 134217729 + f64.mul + local.tee $9 + f64.sub + local.get $9 + f64.add + local.tee $9 + f64.sub + local.set $12 + local.get $11 + local.get $11 + local.get $11 + f64.const 134217729 + f64.mul + local.tee $10 + f64.sub + local.get $10 + f64.add + local.tee $10 + f64.sub + local.set $13 + local.get $0 + local.get $10 + local.get $10 + f64.mul + local.get $11 + local.get $11 + f64.mul + local.tee $0 + f64.sub + local.get $10 + local.get $10 + f64.add + local.get $13 + f64.add + local.get $13 + f64.mul + f64.add + local.get $9 + local.get $9 + f64.mul + local.get $1 + local.get $1 + f64.mul + local.tee $1 + f64.sub + local.get $9 + local.get $9 + f64.add + local.get $12 + f64.add + local.get $12 + f64.mul + f64.add + f64.add + local.get $0 + f64.add + local.get $1 + f64.add + f64.sqrt + f64.mul + local.set $0 + end + local.get $0 + local.get $2 + local.get $3 + call $std/math/check + ) + (func $std/math/test_hypotf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 f64) + local.get $1 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $5 + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $4 + i32.gt_u + if + local.get $4 + local.get $5 + local.set $4 + local.set $5 + end + local.get $4 + f32.reinterpret_i32 + local.set $0 + block $__inlined_func$~lib/math/NativeMathf.hypot$24 (result f32) + local.get $5 + f32.reinterpret_i32 + local.tee $1 + local.get $5 + i32.const 2139095040 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.hypot$24 + drop + local.get $0 + local.get $1 + f32.add + local.get $5 + i32.eqz + local.get $4 + i32.const 2139095040 + i32.ge_u + i32.or + local.get $4 + local.get $5 + i32.sub + i32.const 209715200 + i32.ge_u + i32.or + br_if $__inlined_func$~lib/math/NativeMathf.hypot$24 + drop + local.get $4 + i32.const 1568669696 + i32.ge_u + if (result f32) + local.get $0 + f32.const 8.077935669463161e-28 + f32.mul + local.set $0 + local.get $1 + f32.const 8.077935669463161e-28 + f32.mul + local.set $1 + f32.const 1237940039285380274899124e3 + else + local.get $5 + i32.const 562036736 + i32.lt_u + if (result f32) + local.get $0 + f32.const 1237940039285380274899124e3 + f32.mul + local.set $0 + local.get $1 + f32.const 1237940039285380274899124e3 + f32.mul + local.set $1 + f32.const 8.077935669463161e-28 + else + f32.const 1 + end + end + local.get $0 + f64.promote_f32 + local.tee $7 + local.get $7 + f64.mul + local.get $1 + f64.promote_f32 + local.tee $7 + local.get $7 + f64.mul + f64.add + f32.demote_f64 + f32.sqrt + f32.mul + end + local.get $2 + local.get $3 + call $std/math/check + ) + (func $std/math/test_log10 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 f64) + (local $12 f64) + block $__inlined_func$~lib/math/NativeMath.log10$1 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 31 + i32.shr_u + local.tee $6 + local.get $3 + i32.const 1048576 + i32.lt_u + i32.or + if + f64.const -1 + local.get $0 + local.get $0 + f64.mul + f64.div + local.get $4 + i64.const 1 + i64.shl + i64.eqz + br_if $__inlined_func$~lib/math/NativeMath.log10$1 + drop + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.div + local.get $6 + br_if $__inlined_func$~lib/math/NativeMath.log10$1 + drop + i32.const -54 + local.set $5 + local.get $0 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $3 + else + local.get $3 + i32.const 2146435072 + i32.ge_u + if + local.get $0 + br $__inlined_func$~lib/math/NativeMath.log10$1 + else + f64.const 0 + local.get $4 + i64.const 32 + i64.shl + i64.eqz + local.get $3 + i32.const 1072693248 + i32.eq + i32.and + br_if $__inlined_func$~lib/math/NativeMath.log10$1 + drop + end + end + local.get $4 + i64.const 4294967295 + i64.and + local.get $3 + i32.const 614242 + i32.add + local.tee $3 + i32.const 1048575 + i32.and + i32.const 1072079006 + i32.add + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + f64.const -1 + f64.add + local.tee $7 + f64.const 0.5 + f64.mul + local.get $7 + f64.mul + local.set $8 + local.get $7 + local.get $7 + f64.const 2 + f64.add + f64.div + local.tee $9 + local.get $9 + f64.mul + local.tee $10 + local.get $10 + f64.mul + local.set $11 + local.get $7 + local.get $7 + local.get $8 + f64.sub + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $12 + f64.sub + local.get $8 + f64.sub + local.get $9 + local.get $8 + local.get $10 + local.get $11 + local.get $11 + local.get $11 + f64.const 0.14798198605116586 + f64.mul + f64.const 0.1818357216161805 + f64.add + f64.mul + f64.const 0.2857142874366239 + f64.add + f64.mul + f64.const 0.6666666666666735 + f64.add + f64.mul + local.get $11 + local.get $11 + local.get $11 + f64.const 0.15313837699209373 + f64.mul + f64.const 0.22222198432149784 + f64.add + f64.mul + f64.const 0.3999999999940942 + f64.add + f64.mul + f64.add + f64.add + f64.mul + f64.add + local.set $8 + local.get $5 + local.get $3 + i32.const 20 + i32.shr_u + i32.const 1023 + i32.sub + i32.add + f64.convert_i32_s + local.tee $9 + f64.const 0.30102999566361177 + f64.mul + local.tee $10 + local.get $12 + f64.const 0.4342944818781689 + f64.mul + local.tee $11 + f64.add + local.set $7 + local.get $9 + f64.const 3.694239077158931e-13 + f64.mul + local.get $8 + local.get $12 + f64.add + f64.const 2.5082946711645275e-11 + f64.mul + f64.add + local.get $8 + f64.const 0.4342944818781689 + f64.mul + f64.add + local.get $10 + local.get $7 + f64.sub + local.get $11 + f64.add + f64.add + local.get $7 + f64.add + end + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.log10 + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_log10f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) + (local $8 f32) + (local $9 f32) + (local $10 f32) + block $__inlined_func$~lib/math/NativeMathf.log10$25 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_u + local.tee $4 + local.get $3 + i32.const 8388608 + i32.lt_u + i32.or + if + f32.const -1 + local.get $0 + local.get $0 + f32.mul + f32.div + local.get $3 + i32.const 1 + i32.shl + i32.eqz + br_if $__inlined_func$~lib/math/NativeMathf.log10$25 + drop + local.get $0 + local.get $0 + f32.sub + f32.const 0 + f32.div + local.get $4 + br_if $__inlined_func$~lib/math/NativeMathf.log10$25 + drop + i32.const -25 + local.set $6 + local.get $0 + f32.const 33554432 + f32.mul + i32.reinterpret_f32 + local.set $3 + else + local.get $3 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + br $__inlined_func$~lib/math/NativeMathf.log10$25 + else + f32.const 0 + local.get $3 + i32.const 1065353216 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.log10$25 + drop + end + end + local.get $3 + i32.const 4913933 + i32.add + local.tee $3 + i32.const 8388607 + i32.and + i32.const 1060439283 + i32.add + f32.reinterpret_i32 + f32.const -1 + f32.add + local.tee $8 + local.get $8 + f32.const 2 + f32.add + f32.div + local.tee $0 + local.get $0 + f32.mul + local.tee $5 + local.get $5 + f32.mul + local.set $9 + local.get $6 + local.get $3 + i32.const 23 + i32.shr_u + i32.const 127 + i32.sub + i32.add + f32.convert_i32_s + local.tee $7 + f32.const 7.903415166765626e-07 + f32.mul + local.get $8 + local.get $8 + local.get $8 + f32.const 0.5 + f32.mul + local.get $8 + f32.mul + local.tee $8 + f32.sub + i32.reinterpret_f32 + i32.const -4096 + i32.and + f32.reinterpret_i32 + local.tee $10 + f32.sub + local.get $8 + f32.sub + local.get $0 + local.get $8 + local.get $5 + local.get $9 + f32.const 0.2849878668785095 + f32.mul + f32.const 0.6666666269302368 + f32.add + f32.mul + local.get $9 + local.get $9 + f32.const 0.24279078841209412 + f32.mul + f32.const 0.40000972151756287 + f32.add + f32.mul + f32.add + f32.add + f32.mul + f32.add + local.tee $0 + local.get $10 + f32.add + f32.const -3.168997136526741e-05 + f32.mul + f32.add + local.get $0 + f32.const 0.434326171875 + f32.mul + f32.add + local.get $10 + f32.const 0.434326171875 + f32.mul + f32.add + local.get $7 + f32.const 0.3010292053222656 + f32.mul + f32.add + end + local.get $1 + local.get $2 + call $std/math/check + ) + (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) + (local $1 i64) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 f64) + (local $6 f64) + (local $7 f64) + (local $8 f64) + (local $9 f64) + (local $10 i32) + block $~lib/util/math/log2_lut|inlined.0 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $1 + i64.const 4606800540372828160 + i64.sub + i64.const 581272283906048 + i64.lt_u + if + local.get $0 + f64.const -1 + f64.add + local.tee $5 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $6 + f64.const 1.4426950407214463 + f64.mul + local.set $7 + local.get $5 + local.get $5 + f64.mul + local.tee $8 + local.get $8 + f64.mul + local.set $0 + local.get $7 + local.get $8 + local.get $5 + f64.const 0.48089834696298744 + f64.mul + f64.const -0.7213475204444817 + f64.add + f64.mul + local.tee $4 + f64.add + local.tee $9 + local.get $5 + local.get $6 + f64.sub + f64.const 1.4426950407214463 + f64.mul + local.get $5 + f64.const 1.6751713164886512e-10 + f64.mul + f64.add + local.get $7 + local.get $9 + f64.sub + local.get $4 + f64.add + f64.add + local.get $0 + local.get $5 + f64.const 0.2885390081805197 + f64.mul + f64.const -0.360673760222145 + f64.add + local.get $8 + local.get $5 + f64.const 0.2060992861022954 + f64.mul + f64.const -0.24044917405728863 + f64.add + f64.mul + f64.add + local.get $0 + local.get $5 + f64.const 0.1603032746063156 + f64.mul + f64.const -0.18033596705327856 + f64.add + local.get $8 + local.get $5 + f64.const 0.13046826811283835 + f64.mul + f64.const -0.14483316576701266 + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.add + br $~lib/util/math/log2_lut|inlined.0 + end + local.get $1 + i64.const 48 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.const 16 + i32.sub + i32.const 32736 + i32.ge_u + if + f64.const -1 + local.get $0 + local.get $0 + f64.mul + f64.div + local.get $1 + i64.const 1 + i64.shl + i64.eqz + br_if $~lib/util/math/log2_lut|inlined.0 + drop + local.get $0 + local.get $1 + i64.const 9218868437227405312 + i64.eq + br_if $~lib/util/math/log2_lut|inlined.0 + drop + i32.const 1 + local.get $2 + i32.const 32752 + i32.and + i32.const 32752 + i32.eq + local.get $2 + i32.const 32768 + i32.and + select + if + local.get $0 + local.get $0 + f64.sub + local.tee $0 + local.get $0 + f64.div + br $~lib/util/math/log2_lut|inlined.0 + end + local.get $0 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + i64.const 234187180623265792 + i64.sub + local.set $1 + end + local.get $1 + i64.const 4604367669032910848 + i64.sub + local.tee $3 + i64.const 46 + i64.shr_u + i64.const 63 + i64.and + i32.wrap_i64 + i32.const 4 + i32.shl + local.tee $2 + i32.const 7968 + i32.add + local.set $10 + local.get $3 + i64.const 52 + i64.shr_s + f64.convert_i64_s + local.get $10 + f64.load offset=8 + f64.add + local.tee $0 + local.get $1 + local.get $3 + i64.const -4503599627370496 + i64.and + i64.sub + f64.reinterpret_i64 + local.get $2 + i32.const 8992 + i32.add + local.tee $2 + f64.load + f64.sub + local.get $2 + f64.load offset=8 + f64.sub + local.get $10 + f64.load + f64.mul + local.tee $4 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $5 + f64.const 1.4426950407214463 + f64.mul + local.tee $6 + f64.add + local.set $7 + local.get $0 + local.get $7 + f64.sub + local.get $6 + f64.add + local.get $4 + local.get $5 + f64.sub + f64.const 1.4426950407214463 + f64.mul + local.get $4 + f64.const 1.6751713164886512e-10 + f64.mul + f64.add + f64.add + local.get $4 + local.get $4 + f64.mul + local.tee $0 + local.get $4 + f64.const 0.4808983469629985 + f64.mul + f64.const -0.7213475204444882 + f64.add + local.get $0 + local.get $4 + f64.const 0.2885390073180969 + f64.mul + f64.const -0.36067375954075914 + f64.add + f64.mul + f64.add + local.get $0 + local.get $0 + f64.mul + local.get $4 + f64.const 0.2061202382173603 + f64.mul + f64.const -0.2404693555628422 + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.get $7 + f64.add + end + ) + (func $std/math/test_log2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 i32) + block $~lib/util/math/log2f_lut|inlined.0 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 8388608 + i32.sub + i32.const 2130706432 + i32.ge_u + if + f32.const -inf + local.get $3 + i32.const 1 + i32.shl + local.tee $6 + i32.eqz + br_if $~lib/util/math/log2f_lut|inlined.0 + drop + local.get $0 + local.get $3 + i32.const 2139095040 + i32.eq + br_if $~lib/util/math/log2f_lut|inlined.0 + drop + local.get $3 + i32.const 31 + i32.shr_u + local.get $6 + i32.const -16777216 + i32.ge_u + i32.or + if + local.get $0 + local.get $0 + f32.sub + local.tee $0 + local.get $0 + f32.div + br $~lib/util/math/log2f_lut|inlined.0 + end + local.get $0 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + i32.const 192937984 + i32.sub + local.set $3 + end + local.get $3 + i32.const 1060306944 + i32.sub + local.tee $6 + i32.const 19 + i32.shr_u + i32.const 15 + i32.and + i32.const 4 + i32.shl + i32.const 10016 + i32.add + local.set $7 + local.get $3 + local.get $6 + i32.const -8388608 + i32.and + i32.sub + f32.reinterpret_i32 + f64.promote_f32 + local.get $7 + f64.load + f64.mul + f64.const -1 + f64.add + local.tee $4 + local.get $4 + f64.mul + local.set $5 + local.get $4 + f64.const 0.4811247078767291 + f64.mul + f64.const -0.7213476299867769 + f64.add + local.get $5 + f64.const -0.36051725506874704 + f64.mul + f64.add + local.get $5 + f64.mul + local.get $4 + f64.const 1.4426950186867042 + f64.mul + local.get $7 + f64.load offset=8 + local.get $6 + i32.const 23 + i32.shr_s + f64.convert_i32_s + f64.add + f64.add + f64.add + f32.demote_f64 + end + local.get $1 + local.get $2 + call $std/math/check + ) + (func $std/math/test_max (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + local.get $0 + local.get $1 + f64.max + local.get $2 + f64.const 0 + call $std/math/check + if (result i32) + local.get $0 + local.get $1 + call $~lib/bindings/dom/Math.max + local.get $2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_min (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + local.get $0 + local.get $1 + f64.min + local.get $2 + f64.const 0 + call $std/math/check + if (result i32) + local.get $0 + local.get $1 + call $~lib/bindings/dom/Math.min + local.get $2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_mod (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 f64) + (local $9 i64) + (local $10 i64) + block $__inlined_func$~lib/math/NativeMath.mod$2 (result f64) + local.get $0 + local.get $0 + f64.trunc + f64.sub + local.get $0 + f64.copysign + local.get $1 + f64.abs + f64.const 1 + f64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$2 + drop + local.get $1 + i64.reinterpret_f64 + local.tee $7 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $9 + local.get $7 + i64.const 1 + i64.shl + local.tee $5 + i64.eqz + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $10 + i64.const 2047 + i64.eq + i32.or + local.get $1 + local.get $1 + f64.ne + i32.or + if + local.get $0 + local.get $1 + f64.mul + local.tee $8 + local.get $8 + f64.div + br $__inlined_func$~lib/math/NativeMath.mod$2 + end + local.get $4 + i64.const 1 + i64.shl + local.tee $3 + local.get $5 + i64.le_u + if + local.get $0 + local.get $3 + local.get $5 + i64.ne + f64.convert_i32_u + f64.mul + br $__inlined_func$~lib/math/NativeMath.mod$2 + end + local.get $4 + i64.const 63 + i64.shr_u + local.set $6 + local.get $10 + i64.eqz + if (result i64) + local.get $4 + i64.const 1 + local.get $10 + local.get $4 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $10 + i64.sub + i64.shl + else + local.get $4 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $3 + local.get $9 + i64.eqz + if (result i64) + local.get $7 + i64.const 1 + local.get $9 + local.get $7 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $9 + i64.sub + i64.shl + else + local.get $7 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $4 + loop $while-continue|0 + local.get $9 + local.get $10 + i64.lt_s + if + local.get $3 + local.get $4 + i64.ge_u + if (result i64) + local.get $0 + f64.const 0 + f64.mul + local.get $3 + local.get $4 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$2 + drop + local.get $3 + local.get $4 + i64.sub + else + local.get $3 + end + i64.const 1 + i64.shl + local.set $3 + local.get $10 + i64.const 1 + i64.sub + local.set $10 + br $while-continue|0 + end + end + local.get $3 + local.get $4 + i64.ge_u + if + local.get $0 + f64.const 0 + f64.mul + local.get $3 + local.get $4 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$2 + drop + local.get $3 + local.get $4 + i64.sub + local.set $3 + end + local.get $10 + local.get $3 + i64.const 11 + i64.shl + i64.clz + local.tee $5 + i64.sub + local.set $4 + local.get $3 + local.get $5 + i64.shl + local.set $3 + local.get $4 + i64.const 0 + i64.gt_s + if (result i64) + local.get $3 + i64.const 4503599627370496 + i64.sub + local.get $4 + i64.const 52 + i64.shl + i64.or + else + local.get $3 + i64.const 1 + local.get $4 + i64.sub + i64.shr_u + end + local.get $6 + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + end + local.get $2 + f64.const 0 + call $std/math/check + if (result i32) + local.get $0 + local.get $1 + call $std/math/mod + local.get $2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + ) + (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + f32.abs + f32.const 1 + f32.eq + if + local.get $0 + local.get $0 + f32.trunc + f32.sub + local.get $0 + f32.copysign + return + end + local.get $1 + i32.reinterpret_f32 + local.tee $6 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $7 + local.get $6 + i32.const 1 + i32.shl + local.tee $4 + i32.eqz + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $8 + i32.const 255 + i32.eq + i32.or + local.get $1 + local.get $1 + f32.ne + i32.or + if + local.get $0 + local.get $1 + f32.mul + local.tee $0 + local.get $0 + f32.div + return + end + local.get $3 + i32.const 1 + i32.shl + local.tee $2 + local.get $4 + i32.le_u + if + local.get $0 + local.get $2 + local.get $4 + i32.ne + f32.convert_i32_u + f32.mul + return + end + local.get $3 + i32.const -2147483648 + i32.and + local.set $5 + local.get $8 + if (result i32) + local.get $3 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $3 + i32.const 1 + local.get $8 + local.get $3 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $8 + i32.sub + i32.shl + end + local.set $2 + local.get $7 + if (result i32) + local.get $6 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $6 + i32.const 1 + local.get $7 + local.get $6 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $7 + i32.sub + i32.shl + end + local.set $3 + loop $while-continue|0 + local.get $7 + local.get $8 + i32.lt_s + if + local.get $2 + local.get $3 + i32.ge_u + if (result i32) + local.get $2 + local.get $3 + i32.eq + if + local.get $0 + f32.const 0 + f32.mul + return + end + local.get $2 + local.get $3 + i32.sub + else + local.get $2 + end + i32.const 1 + i32.shl + local.set $2 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + br $while-continue|0 + end + end + local.get $2 + local.get $3 + i32.ge_u + if + local.get $2 + local.get $3 + i32.eq + if + local.get $0 + f32.const 0 + f32.mul + return + end + local.get $2 + local.get $3 + i32.sub + local.set $2 + end + local.get $8 + local.get $2 + i32.const 8 + i32.shl + i32.clz + local.tee $4 + i32.sub + local.set $3 + local.get $2 + local.get $4 + i32.shl + local.set $2 + local.get $3 + i32.const 0 + i32.gt_s + if (result i32) + local.get $2 + i32.const 8388608 + i32.sub + local.get $3 + i32.const 23 + i32.shl + i32.or + else + local.get $2 + i32.const 1 + local.get $3 + i32.sub + i32.shr_u + end + local.get $5 + i32.or + f32.reinterpret_i32 + ) + (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 f64) + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 i64) + (local $12 i64) + (local $13 f64) + (local $14 f64) + (local $15 f64) + (local $16 f64) + (local $17 f64) + (local $18 i32) + local.get $1 + f64.abs + f64.const 2 + f64.le + if + local.get $1 + f64.const 2 + f64.eq + if + local.get $0 + local.get $0 + f64.mul + return + end + local.get $1 + f64.const 0.5 + f64.eq + if + local.get $0 + f64.sqrt + f64.abs + f64.const inf + local.get $0 + f64.const -inf + f64.ne + select + return + end + local.get $1 + f64.const -1 + f64.eq + if + f64.const 1 + local.get $0 + f64.div + return + end + local.get $1 + f64.const 1 + f64.eq + if + local.get $0 + return + end + local.get $1 + f64.const 0 + f64.eq + if + f64.const 1 + return + end + end + block $~lib/util/math/pow_lut|inlined.0 (result f64) + local.get $1 + i64.reinterpret_f64 + local.tee $11 + i64.const 52 + i64.shr_u + local.set $6 + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 52 + i64.shr_u + local.tee $5 + i64.const 1 + i64.sub + i64.const 2046 + i64.ge_u + if (result i32) + i32.const 1 + else + local.get $6 + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 128 + i64.ge_u + end + if + local.get $11 + i64.const 1 + i64.shl + local.tee $12 + i64.const 1 + i64.sub + i64.const -9007199254740993 + i64.ge_u + if + f64.const 1 + local.get $12 + i64.eqz + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const nan:0x8000000000000 + local.get $2 + i64.const 4607182418800017408 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + local.get $0 + local.get $1 + f64.add + local.get $12 + i64.const -9007199254740992 + i64.gt_u + local.get $2 + i64.const 1 + i64.shl + local.tee $2 + i64.const -9007199254740992 + i64.gt_u + i32.or + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const nan:0x8000000000000 + local.get $2 + i64.const 9214364837600034816 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const 0 + local.get $11 + i64.const 63 + i64.shr_u + i64.eqz + local.get $2 + i64.const 9214364837600034816 + i64.lt_u + i32.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + local.get $1 + local.get $1 + f64.mul + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $2 + i64.const 1 + i64.shl + i64.const 1 + i64.sub + i64.const -9007199254740993 + i64.ge_u + if + f64.const 1 + local.get $0 + local.get $0 + f64.mul + local.tee $0 + f64.neg + local.get $0 + local.get $2 + i64.const 63 + i64.shr_u + i32.wrap_i64 + if (result i32) + block $~lib/util/math/checkint|inlined.0 (result i32) + i32.const 0 + local.get $11 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $2 + i64.const 1023 + i64.lt_u + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 2 + local.get $2 + i64.const 1075 + i64.gt_u + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 0 + local.get $11 + i64.const 1 + i64.const 1075 + local.get $2 + i64.sub + i64.shl + local.tee $2 + i64.const 1 + i64.sub + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 1 + local.get $2 + local.get $11 + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 2 + end + i32.const 1 + i32.eq + else + i32.const 0 + end + select + local.tee $0 + f64.div + local.get $0 + local.get $11 + i64.const 0 + i64.lt_s + select + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $2 + i64.const 0 + i64.lt_s + if + block $~lib/util/math/checkint|inlined.1 (result i32) + i32.const 0 + local.get $11 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $12 + i64.const 1023 + i64.lt_u + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 2 + local.get $12 + i64.const 1075 + i64.gt_u + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 0 + local.get $11 + i64.const 1 + i64.const 1075 + local.get $12 + i64.sub + i64.shl + local.tee $12 + i64.const 1 + i64.sub + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 1 + local.get $11 + local.get $12 + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 2 + end + local.tee $3 + i32.eqz + if + local.get $0 + local.get $0 + f64.sub + local.tee $0 + local.get $0 + f64.div + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $5 + i64.const 2047 + i64.and + local.set $5 + i32.const 262144 + i32.const 0 + local.get $3 + i32.const 1 + i32.eq + select + local.set $4 + local.get $2 + i64.const 9223372036854775807 + i64.and + local.set $2 + end + local.get $6 + i64.const 2047 + i64.and + local.tee $12 + i64.const 958 + i64.sub + i64.const 128 + i64.ge_u + if + f64.const 1 + local.get $2 + i64.const 4607182418800017408 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const 1 + local.get $12 + i64.const 958 + i64.lt_u + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const inf + f64.const 0 + local.get $6 + i64.const 2048 + i64.lt_u + local.get $2 + i64.const 4607182418800017408 + i64.gt_u + i32.eq + select + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $5 + i64.eqz + if + local.get $0 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + i64.const 234187180623265792 + i64.sub + local.set $2 + end + end + local.get $2 + local.get $2 + i64.const 4604531861337669632 + i64.sub + local.tee $2 + i64.const -4503599627370496 + i64.and + i64.sub + local.tee $5 + i64.const 2147483648 + i64.add + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $7 + local.get $2 + i64.const 45 + i64.shr_u + i64.const 127 + i64.and + i32.wrap_i64 + i32.const 5 + i32.shl + i32.const 10272 + i32.add + local.tee $3 + f64.load + local.tee $8 + f64.mul + f64.const -1 + f64.add + local.set $9 + local.get $2 + i64.const 52 + i64.shr_s + f64.convert_i64_s + local.tee $13 + f64.const 0.6931471805598903 + f64.mul + local.get $3 + f64.load offset=16 + f64.add + local.tee $0 + local.get $9 + local.get $5 + f64.reinterpret_i64 + local.get $7 + f64.sub + local.get $8 + f64.mul + local.tee $7 + f64.add + local.tee $14 + f64.add + local.set $15 + local.get $14 + local.get $14 + f64.const -0.5 + f64.mul + local.tee $8 + f64.mul + local.set $16 + local.get $15 + local.get $9 + local.get $9 + f64.const -0.5 + f64.mul + local.tee $17 + f64.mul + local.tee $9 + f64.add + local.tee $10 + local.get $10 + local.get $13 + f64.const 5.497923018708371e-14 + f64.mul + local.get $3 + f64.load offset=24 + f64.add + local.get $0 + local.get $15 + f64.sub + local.get $14 + f64.add + f64.add + local.get $7 + local.get $8 + local.get $17 + f64.add + f64.mul + f64.add + local.get $15 + local.get $10 + f64.sub + local.get $9 + f64.add + f64.add + local.get $14 + local.get $16 + f64.mul + local.get $14 + f64.const 0.5000000000000007 + f64.mul + f64.const -0.6666666666666679 + f64.add + local.get $16 + local.get $14 + f64.const -0.6666666663487739 + f64.mul + f64.const 0.7999999995323976 + f64.add + local.get $16 + local.get $14 + f64.const 1.0000415263675542 + f64.mul + f64.const -1.142909628459501 + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.tee $0 + f64.add + local.tee $7 + f64.sub + local.get $0 + f64.add + global.set $~lib/util/math/log_tail + block $~lib/util/math/exp_inline|inlined.0 (result f64) + local.get $11 + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.tee $0 + local.get $7 + i64.reinterpret_f64 + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.tee $8 + f64.mul + local.tee $9 + i64.reinterpret_f64 + local.tee $2 + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.tee $3 + i32.const 969 + i32.sub + local.tee $18 + i32.const 63 + i32.ge_u + if + f64.const -1 + f64.const 1 + local.get $4 + select + local.get $18 + i32.const -2147483648 + i32.ge_u + br_if $~lib/util/math/exp_inline|inlined.0 + drop + f64.const -0 + f64.const 0 + local.get $4 + select + f64.const -inf + f64.const inf + local.get $4 + select + local.get $2 + i64.const 0 + i64.lt_s + select + local.get $3 + i32.const 1033 + i32.ge_u + br_if $~lib/util/math/exp_inline|inlined.0 + drop + i32.const 0 + local.set $3 + end + local.get $9 + f64.const 184.6649652337873 + f64.mul + f64.const 6755399441055744 + f64.add + local.tee $10 + i64.reinterpret_f64 + local.tee $2 + i64.const 127 + i64.and + i64.const 1 + i64.shl + i32.wrap_i64 + i32.const 3 + i32.shl + i32.const 5664 + i32.add + local.tee $18 + i64.load offset=8 + local.get $2 + local.get $4 + i64.extend_i32_u + i64.add + i64.const 45 + i64.shl + i64.add + local.set $5 + local.get $9 + local.get $10 + f64.const -6755399441055744 + f64.add + local.tee $9 + f64.const -0.005415212348111709 + f64.mul + f64.add + local.get $9 + f64.const -1.2864023111638346e-14 + f64.mul + f64.add + local.get $1 + local.get $0 + f64.sub + local.get $8 + f64.mul + local.get $1 + local.get $7 + local.get $8 + f64.sub + global.get $~lib/util/math/log_tail + f64.add + f64.mul + f64.add + f64.add + local.tee $0 + local.get $0 + f64.mul + local.set $1 + local.get $18 + f64.load + local.get $0 + f64.add + local.get $1 + local.get $0 + f64.const 0.16666666666665886 + f64.mul + f64.const 0.49999999999996786 + f64.add + f64.mul + f64.add + local.get $1 + local.get $1 + f64.mul + local.get $0 + f64.const 0.008333335853059549 + f64.mul + f64.const 0.0416666808410674 + f64.add + f64.mul + f64.add + local.set $0 + local.get $3 + i32.eqz + if + block $~lib/util/math/specialcase|inlined.1 (result f64) + local.get $2 + i64.const 2147483648 + i64.and + i64.eqz + if + local.get $5 + i64.const 4544132024016830464 + i64.sub + f64.reinterpret_i64 + local.tee $1 + local.get $1 + local.get $0 + f64.mul + f64.add + f64.const 5486124068793688683255936e279 + f64.mul + br $~lib/util/math/specialcase|inlined.1 + end + local.get $5 + i64.const 4602678819172646912 + i64.add + local.tee $2 + f64.reinterpret_i64 + local.tee $1 + local.get $0 + f64.mul + local.set $0 + local.get $1 + local.get $0 + f64.add + local.tee $7 + f64.abs + f64.const 1 + f64.lt + if (result f64) + f64.const 1 + local.get $7 + f64.copysign + local.tee $8 + local.get $7 + f64.add + local.tee $9 + local.get $8 + local.get $9 + f64.sub + local.get $7 + f64.add + local.get $1 + local.get $7 + f64.sub + local.get $0 + f64.add + f64.add + f64.add + local.get $8 + f64.sub + local.tee $0 + f64.const 0 + f64.eq + if (result f64) + local.get $2 + i64.const -9223372036854775808 + i64.and + f64.reinterpret_i64 + else + local.get $0 + end + else + local.get $7 + end + f64.const 2.2250738585072014e-308 + f64.mul + end + br $~lib/util/math/exp_inline|inlined.0 + end + local.get $5 + f64.reinterpret_i64 + local.tee $1 + local.get $1 + local.get $0 + f64.mul + f64.add + end + end + ) + (func $std/math/test_pow (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) + local.get $0 + local.get $1 + call $~lib/math/NativeMath.pow + local.get $2 + local.get $3 + call $std/math/check + if (result i32) + local.get $0 + local.get $1 + call $~lib/bindings/dom/Math.pow + local.get $2 + local.get $3 + call $std/math/check + else + i32.const 0 + end + ) + (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f64) + local.get $1 + f32.abs + f32.const 2 + f32.le + if + local.get $1 + f32.const 2 + f32.eq + if + local.get $0 + local.get $0 + f32.mul + return + end + local.get $1 + f32.const 0.5 + f32.eq + if + local.get $0 + f32.sqrt + f32.abs + f32.const inf + local.get $0 + f32.const -inf + f32.ne + select + return + end + local.get $1 + f32.const -1 + f32.eq + if + f32.const 1 + local.get $0 + f32.div + return + end + local.get $1 + f32.const 1 + f32.eq + if + local.get $0 + return + end + local.get $1 + f32.const 0 + f32.eq + if + f32.const 1 + return + end + end + block $~lib/util/math/powf_lut|inlined.0 (result f32) + local.get $1 + i32.reinterpret_f32 + local.tee $8 + i32.const 1 + i32.shl + local.tee $6 + i32.const 1 + i32.sub + i32.const -16777217 + i32.ge_u + local.tee $7 + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 8388608 + i32.sub + i32.const 2130706432 + i32.ge_u + i32.or + if + local.get $7 + if + f32.const 1 + local.get $6 + i32.eqz + br_if $~lib/util/math/powf_lut|inlined.0 + drop + f32.const nan:0x400000 + local.get $2 + i32.const 1065353216 + i32.eq + br_if $~lib/util/math/powf_lut|inlined.0 + drop + local.get $0 + local.get $1 + f32.add + local.get $6 + i32.const -16777216 + i32.gt_u + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + i32.const -16777216 + i32.gt_u + i32.or + br_if $~lib/util/math/powf_lut|inlined.0 + drop + f32.const nan:0x400000 + local.get $2 + i32.const 2130706432 + i32.eq + br_if $~lib/util/math/powf_lut|inlined.0 + drop + f32.const 0 + local.get $8 + i32.const 31 + i32.shr_u + i32.eqz + local.get $2 + i32.const 2130706432 + i32.lt_u + i32.eq + br_if $~lib/util/math/powf_lut|inlined.0 + drop + local.get $1 + local.get $1 + f32.mul + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $2 + i32.const 1 + i32.shl + i32.const 1 + i32.sub + i32.const -16777217 + i32.ge_u + if + f32.const 1 + local.get $0 + local.get $0 + f32.mul + local.tee $0 + f32.neg + local.get $0 + local.get $2 + i32.const 31 + i32.shr_u + if (result i32) + block $~lib/util/math/checkintf|inlined.0 (result i32) + i32.const 0 + local.get $8 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $2 + i32.const 127 + i32.lt_u + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 2 + local.get $2 + i32.const 150 + i32.gt_u + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 0 + local.get $8 + i32.const 1 + i32.const 150 + local.get $2 + i32.sub + i32.shl + local.tee $2 + i32.const 1 + i32.sub + i32.and + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 1 + local.get $2 + local.get $8 + i32.and + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 2 + end + i32.const 1 + i32.eq + else + i32.const 0 + end + select + local.tee $0 + f32.div + local.get $0 + local.get $8 + i32.const 0 + i32.lt_s + select + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $2 + i32.const 0 + i32.lt_s + if + block $~lib/util/math/checkintf|inlined.1 (result i32) + i32.const 0 + local.get $8 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $4 + i32.const 127 + i32.lt_u + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 2 + local.get $4 + i32.const 150 + i32.gt_u + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 0 + local.get $8 + i32.const 1 + i32.const 150 + local.get $4 + i32.sub + i32.shl + local.tee $4 + i32.const 1 + i32.sub + i32.and + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 1 + local.get $4 + local.get $8 + i32.and + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 2 + end + local.tee $4 + i32.eqz + if + local.get $0 + local.get $0 + f32.sub + local.tee $0 + local.get $0 + f32.div + br $~lib/util/math/powf_lut|inlined.0 + end + i32.const 65536 + i32.const 0 + local.get $4 + i32.const 1 + i32.eq + select + local.set $4 + local.get $2 + i32.const 2147483647 + i32.and + local.set $2 + end + local.get $2 + i32.const 8388608 + i32.lt_u + if + local.get $0 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + i32.const 192937984 + i32.sub + local.set $2 + end + end + local.get $2 + local.get $2 + i32.const 1060306944 + i32.sub + local.tee $2 + i32.const -8388608 + i32.and + local.tee $6 + i32.sub + f32.reinterpret_i32 + f64.promote_f32 + local.get $2 + i32.const 19 + i32.shr_u + i32.const 15 + i32.and + i32.const 4 + i32.shl + i32.const 10016 + i32.add + local.tee $2 + f64.load + f64.mul + f64.const -1 + f64.add + local.tee $3 + local.get $3 + f64.mul + local.set $9 + local.get $1 + f64.promote_f32 + local.get $3 + f64.const 0.288457581109214 + f64.mul + f64.const -0.36092606229713164 + f64.add + local.get $9 + local.get $9 + f64.mul + f64.mul + local.get $3 + f64.const 1.4426950408774342 + f64.mul + local.get $2 + f64.load offset=8 + local.get $6 + i32.const 23 + i32.shr_s + f64.convert_i32_s + f64.add + f64.add + local.get $3 + f64.const 0.480898481472577 + f64.mul + f64.const -0.7213474675006291 + f64.add + local.get $9 + f64.mul + f64.add + f64.add + f64.mul + local.tee $3 + i64.reinterpret_f64 + i64.const 47 + i64.shr_u + i64.const 65535 + i64.and + i64.const 32959 + i64.ge_u + if + f32.const -inf + f32.const inf + local.get $4 + select + local.get $3 + f64.const 127.99999995700433 + f64.gt + br_if $~lib/util/math/powf_lut|inlined.0 + drop + f32.const -0 + f32.const 0 + local.get $4 + select + local.get $3 + f64.const -150 + f64.le + br_if $~lib/util/math/powf_lut|inlined.0 + drop + end + local.get $3 + f64.const 211106232532992 + f64.add + local.tee $9 + i64.reinterpret_f64 + local.set $5 + local.get $3 + local.get $9 + f64.const -211106232532992 + f64.add + f64.sub + local.tee $3 + f64.const 0.6931471806916203 + f64.mul + f64.const 1 + f64.add + local.get $3 + f64.const 0.05550361559341535 + f64.mul + f64.const 0.2402284522445722 + f64.add + local.get $3 + local.get $3 + f64.mul + f64.mul + f64.add + local.get $5 + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.const 7712 + i32.add + i64.load + local.get $5 + local.get $4 + i64.extend_i32_u + i64.add + i64.const 47 + i64.shl + i64.add + f64.reinterpret_i64 + f64.mul + f32.demote_f64 + end + ) + (func $~lib/math/NativeMath.seedRandom (param $0 i64) + (local $1 i32) + (local $2 i64) + i64.const -7046029254386353131 + local.get $0 + local.get $0 + i64.eqz + select + local.tee $0 + i64.const 33 + i64.shr_u + local.get $0 + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $2 + i64.const 33 + i64.shr_u + local.get $2 + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $2 + i64.const 33 + i64.shr_u + local.get $2 + i64.xor + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + local.tee $2 + i64.const 33 + i64.shr_u + local.get $2 + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $2 + i64.const 33 + i64.shr_u + local.get $2 + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $2 + i64.const 33 + i64.shr_u + local.get $2 + i64.xor + global.set $~lib/math/random_state1_64 + local.get $0 + i32.wrap_i64 + i32.const 1831565813 + i32.add + local.tee $1 + i32.const 1 + i32.or + local.get $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.mul + local.tee $1 + i32.const 61 + i32.or + local.get $1 + local.get $1 + i32.const 7 + i32.shr_u + i32.xor + i32.mul + local.get $1 + i32.add + local.get $1 + i32.xor + local.tee $1 + i32.const 14 + i32.shr_u + local.get $1 + i32.xor + global.set $~lib/math/random_state0_32 + global.get $~lib/math/random_state0_32 + i32.const 1831565813 + i32.add + local.tee $1 + i32.const 1 + i32.or + local.get $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.mul + local.tee $1 + i32.const 61 + i32.or + local.get $1 + local.get $1 + i32.const 7 + i32.shr_u + i32.xor + i32.mul + local.get $1 + i32.add + local.get $1 + i32.xor + local.tee $1 + i32.const 14 + i32.shr_u + local.get $1 + i32.xor + global.set $~lib/math/random_state1_32 + i32.const 1 + global.set $~lib/math/random_seeded + ) + (func $std/math/test_round (param $0 f64) (param $1 f64) (result i32) + (local $2 f64) + local.get $0 + f64.ceil + local.tee $2 + local.get $2 + f64.const -1 + f64.add + local.get $2 + f64.const -0.5 + f64.add + local.get $0 + f64.le + select + local.get $1 + f64.const 0 + call $std/math/check + ) + (func $std/math/test_roundf (param $0 f32) (param $1 f32) (result i32) + (local $2 f32) + local.get $0 + f32.ceil + local.tee $2 + local.get $2 + f32.const -1 + f32.add + local.get $2 + f32.const -0.5 + f32.add + local.get $0 + f32.le + select + local.get $1 + f32.const 0 + call $std/math/check + ) + (func $std/math/test_sign (param $0 f64) (param $1 f64) (result i32) + f64.const 1 + f64.const -1 + local.get $0 + local.get $0 + f64.const 0 + f64.lt + select + local.get $0 + f64.const 0 + f64.gt + select + local.get $1 + f64.const 0 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.sign + local.get $1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_signf (param $0 f32) (param $1 f32) (result i32) + f32.const 1 + f32.const -1 + local.get $0 + local.get $0 + f32.const 0 + f32.lt + select + local.get $0 + f32.const 0 + f32.gt + select + local.get $1 + f32.const 0 + call $std/math/check + ) + (func $~lib/math/NativeMath.rem (param $0 f64) (param $1 f64) (result f64) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 f64) + local.get $1 + i64.reinterpret_f64 + local.tee $7 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $4 + local.get $7 + i64.const 1 + i64.shl + i64.eqz + local.get $0 + i64.reinterpret_f64 + local.tee $6 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $3 + i64.const 2047 + i64.eq + i32.or + local.get $1 + local.get $1 + f64.ne + i32.or + if + local.get $0 + local.get $1 + f64.mul + local.tee $0 + local.get $0 + f64.div + return + end + local.get $6 + i64.const 1 + i64.shl + i64.eqz + if + local.get $0 + return + end + local.get $3 + i64.eqz + if (result i64) + local.get $6 + i64.const 1 + local.get $3 + local.get $6 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $3 + i64.sub + i64.shl + else + local.get $6 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $2 + local.get $4 + i64.eqz + if (result i64) + local.get $7 + i64.const 1 + local.get $4 + local.get $7 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $4 + i64.sub + i64.shl + else + local.get $7 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $7 + block $do-break|0 + local.get $3 + local.get $4 + i64.lt_s + if + local.get $3 + i64.const 1 + i64.add + local.get $4 + i64.eq + br_if $do-break|0 + local.get $0 + return + end + loop $while-continue|1 + local.get $3 + local.get $4 + i64.gt_s + if + local.get $2 + local.get $7 + i64.ge_u + if (result i64) + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + local.get $7 + i64.sub + else + local.get $2 + end + i64.const 1 + i64.shl + local.set $2 + local.get $5 + i32.const 1 + i32.shl + local.set $5 + local.get $3 + i64.const 1 + i64.sub + local.set $3 + br $while-continue|1 + end + end + local.get $2 + local.get $7 + i64.ge_u + if + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + local.get $7 + i64.sub + local.set $2 + end + local.get $2 + i64.eqz + if + i64.const -60 + local.set $3 + else + local.get $3 + local.get $2 + i64.const 11 + i64.shl + i64.clz + local.tee $7 + i64.sub + local.set $3 + local.get $2 + local.get $7 + i64.shl + local.set $2 + end + end + local.get $1 + f64.abs + local.set $1 + local.get $3 + i64.const 0 + i64.gt_s + if (result i64) + local.get $2 + i64.const 4503599627370496 + i64.sub + local.get $3 + i64.const 52 + i64.shl + i64.or + else + local.get $2 + i64.const 1 + local.get $3 + i64.sub + i64.shr_u + end + f64.reinterpret_i64 + local.tee $0 + local.get $0 + f64.add + local.set $8 + local.get $0 + local.get $1 + f64.sub + local.get $0 + local.get $3 + local.get $4 + i64.eq + if (result i32) + i32.const 1 + else + local.get $3 + i64.const 1 + i64.add + local.get $4 + i64.eq + if (result i32) + local.get $5 + i32.const 1 + i32.and + local.get $1 + local.get $8 + f64.eq + i32.and + local.get $1 + local.get $8 + f64.lt + i32.or + else + i32.const 0 + end + end + select + local.tee $0 + f64.neg + local.get $0 + local.get $6 + i64.const 0 + i64.lt_s + select + ) + (func $~lib/math/NativeMathf.rem (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f32) + local.get $1 + i32.reinterpret_f32 + local.tee $7 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $4 + local.get $7 + i32.const 1 + i32.shl + i32.eqz + local.get $0 + i32.reinterpret_f32 + local.tee $6 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $3 + i32.const 255 + i32.eq + i32.or + local.get $1 + local.get $1 + f32.ne + i32.or + if + local.get $0 + local.get $1 + f32.mul + local.tee $0 + local.get $0 + f32.div + return + end + local.get $6 + i32.const 1 + i32.shl + i32.eqz + if + local.get $0 + return + end + local.get $3 + if (result i32) + local.get $6 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $6 + i32.const 1 + local.get $3 + local.get $6 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $3 + i32.sub + i32.shl + end + local.set $2 + local.get $4 + if (result i32) + local.get $7 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $7 + i32.const 1 + local.get $4 + local.get $7 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $4 + i32.sub + i32.shl + end + local.set $7 + block $do-break|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $3 + i32.const 1 + i32.add + local.get $4 + i32.eq + br_if $do-break|0 + local.get $0 + return + end + loop $while-continue|1 + local.get $3 + local.get $4 + i32.gt_s + if + local.get $2 + local.get $7 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + local.get $7 + i32.sub + else + local.get $2 + end + i32.const 1 + i32.shl + local.set $2 + local.get $5 + i32.const 1 + i32.shl + local.set $5 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + local.get $2 + local.get $7 + i32.ge_u + if + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + local.get $7 + i32.sub + local.set $2 + end + local.get $2 + if + local.get $3 + local.get $2 + i32.const 8 + i32.shl + i32.clz + local.tee $7 + i32.sub + local.set $3 + local.get $2 + local.get $7 + i32.shl + local.set $2 + else + i32.const -30 + local.set $3 + end + end + local.get $1 + f32.abs + local.set $1 + local.get $3 + i32.const 0 + i32.gt_s + if (result i32) + local.get $2 + i32.const 8388608 + i32.sub + local.get $3 + i32.const 23 + i32.shl + i32.or + else + local.get $2 + i32.const 1 + local.get $3 + i32.sub + i32.shr_u + end + f32.reinterpret_i32 + local.tee $0 + local.get $0 + f32.add + local.set $8 + local.get $0 + local.get $1 + f32.sub + local.get $0 + local.get $3 + local.get $4 + i32.eq + if (result i32) + i32.const 1 + else + local.get $3 + i32.const 1 + i32.add + local.get $4 + i32.eq + if (result i32) + local.get $5 + i32.const 1 + i32.and + local.get $1 + local.get $8 + f32.eq + i32.and + local.get $1 + local.get $8 + f32.lt + i32.or + else + i32.const 0 + end + end + select + local.tee $0 + f32.neg + local.get $0 + local.get $6 + i32.const 0 + i32.lt_s + select + ) + (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) + (local $1 f64) + (local $2 f64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 31 + i32.shr_u + local.set $6 + local.get $3 + i32.const 2147483647 + i32.and + local.tee $3 + i32.const 1072243195 + i32.le_u + if + local.get $3 + i32.const 1045430272 + i32.lt_u + if + local.get $0 + return + end + local.get $0 + local.get $0 + local.get $0 + f64.mul + local.tee $1 + local.get $0 + f64.mul + local.get $1 + local.get $1 + local.get $1 + f64.const 2.7557313707070068e-06 + f64.mul + f64.const -1.984126982985795e-04 + f64.add + f64.mul + f64.const 0.00833333333332249 + f64.add + local.get $1 + local.get $1 + local.get $1 + f64.mul + f64.mul + local.get $1 + f64.const 1.58969099521155e-10 + f64.mul + f64.const -2.5050760253406863e-08 + f64.add + f64.mul + f64.add + f64.mul + f64.const -0.16666666666666632 + f64.add + f64.mul + f64.add + return + end + local.get $3 + i32.const 2146435072 + i32.ge_u + if + local.get $0 + local.get $0 + f64.sub + return + end + block $~lib/math/rempio2|inlined.1 (result i32) + local.get $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 1073928572 + i32.lt_u + if + i32.const 1 + local.set $3 + local.get $6 + if (result f64) + local.get $0 + f64.const 1.5707963267341256 + f64.add + local.set $0 + i32.const -1 + local.set $3 + local.get $4 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.add + local.tee $1 + f64.const 2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + end + else + local.get $0 + f64.const -1.5707963267341256 + f64.add + local.set $0 + local.get $4 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const -6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const -6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const -6.077100506303966e-11 + f64.add + local.tee $1 + f64.const -2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const -2.0222662487959506e-21 + f64.add + end + end + local.get $0 + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 + local.get $3 + br $~lib/math/rempio2|inlined.1 + end + local.get $4 + i32.const 1094263291 + i32.lt_u + if + local.get $4 + i32.const 20 + i32.shr_u + local.tee $3 + local.get $0 + local.get $0 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.tee $7 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.tee $0 + local.get $7 + f64.const 6.077100506506192e-11 + f64.mul + local.tee $2 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 16 + i32.gt_u + if + local.get $7 + f64.const 2.0222662487959506e-21 + f64.mul + local.get $0 + local.get $0 + local.get $7 + f64.const 6.077100506303966e-11 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $2 + local.get $3 + local.get $0 + local.get $2 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 49 + i32.gt_u + if + local.get $7 + f64.const 8.4784276603689e-32 + f64.mul + local.get $0 + local.get $0 + local.get $7 + f64.const 2.0222662487111665e-21 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $2 + local.get $0 + local.get $2 + f64.sub + local.set $1 + end + end + local.get $1 + global.set $~lib/math/rempio2_y0 + local.get $0 + local.get $1 + f64.sub + local.get $2 + f64.sub + global.set $~lib/math/rempio2_y1 + local.get $7 + i32.trunc_sat_f64_s + br $~lib/math/rempio2|inlined.1 + end + i32.const 0 + local.get $5 + call $~lib/math/pio2_large_quot + local.tee $3 + i32.sub + local.get $3 + local.get $6 + select + end + local.set $3 + global.get $~lib/math/rempio2_y0 + local.set $2 + global.get $~lib/math/rempio2_y1 + local.set $7 + local.get $3 + i32.const 1 + i32.and + if (result f64) + local.get $2 + local.get $2 + f64.mul + local.tee $0 + local.get $0 + f64.mul + local.set $1 + f64.const 1 + local.get $0 + f64.const 0.5 + f64.mul + local.tee $8 + f64.sub + local.tee $9 + f64.const 1 + local.get $9 + f64.sub + local.get $8 + f64.sub + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 2.480158728947673e-05 + f64.mul + f64.const -0.001388888888887411 + f64.add + f64.mul + f64.const 0.0416666666666666 + f64.add + f64.mul + local.get $1 + local.get $1 + f64.mul + local.get $0 + local.get $0 + f64.const -1.1359647557788195e-11 + f64.mul + f64.const 2.087572321298175e-09 + f64.add + f64.mul + f64.const -2.7557314351390663e-07 + f64.add + f64.mul + f64.add + f64.mul + local.get $2 + local.get $7 + f64.mul + f64.sub + f64.add + f64.add + else + local.get $2 + local.get $2 + f64.mul + local.tee $0 + local.get $2 + f64.mul + local.set $1 + local.get $2 + local.get $0 + local.get $7 + f64.const 0.5 + f64.mul + local.get $1 + local.get $0 + local.get $0 + f64.const 2.7557313707070068e-06 + f64.mul + f64.const -1.984126982985795e-04 + f64.add + f64.mul + f64.const 0.00833333333332249 + f64.add + local.get $0 + local.get $0 + local.get $0 + f64.mul + f64.mul + local.get $0 + f64.const 1.58969099521155e-10 + f64.mul + f64.const -2.5050760253406863e-08 + f64.add + f64.mul + f64.add + f64.mul + f64.sub + f64.mul + local.get $7 + f64.sub + local.get $1 + f64.const -0.16666666666666632 + f64.mul + f64.sub + f64.sub + end + local.tee $0 + f64.neg + local.get $0 + local.get $3 + i32.const 2 + i32.and + select + ) + (func $~lib/math/NativeMathf.sin (param $0 f32) (result f32) + (local $1 f64) + (local $2 f64) + (local $3 i32) + (local $4 f64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_u + local.set $6 + block $folding-inner0 + local.get $3 + i32.const 2147483647 + i32.and + local.tee $3 + i32.const 1061752794 + i32.le_u + if + local.get $3 + i32.const 964689920 + i32.lt_u + if + local.get $0 + return + end + local.get $0 + f64.promote_f32 + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + local.set $4 + br $folding-inner0 + end + local.get $3 + i32.const 1081824209 + i32.le_u + if + local.get $3 + i32.const 1075235811 + i32.le_u + if + local.get $6 + if (result f32) + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + f32.neg + else + local.get $0 + f64.promote_f32 + f64.const -1.5707963267948966 + f64.add + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + end + return + end + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 3.141592653589793 + f64.add + local.get $1 + f64.const -3.141592653589793 + f64.add + local.get $6 + select + f64.neg + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + local.set $4 + br $folding-inner0 + end + local.get $3 + i32.const 1088565717 + i32.le_u + if + local.get $3 + i32.const 1085271519 + i32.le_u + if + local.get $6 + if (result f32) + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 + f64.add + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const -4.71238898038469 + f64.add + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + f32.neg + end + return + end + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 6.283185307179586 + f64.add + local.get $1 + f64.const -6.283185307179586 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + local.set $4 + br $folding-inner0 + end + local.get $3 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + local.get $0 + f32.sub + return + end + block $~lib/math/rempio2f|inlined.1 (result i32) + local.get $3 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $2 + local.get $1 + local.get $2 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $2 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $2 + i32.trunc_sat_f64_s + br $~lib/math/rempio2f|inlined.1 + end + local.get $3 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $7 + i32.const 63 + i32.and + i64.extend_i32_s + local.set $8 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.const 5632 + i32.add + local.tee $7 + i64.load offset=8 + local.set $5 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $3 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $9 + local.get $7 + i64.load + local.get $8 + i64.shl + local.get $5 + i64.const 64 + local.get $8 + i64.sub + i64.shr_u + i64.or + i64.mul + local.get $8 + i64.const 32 + i64.gt_u + if (result i64) + local.get $5 + local.get $8 + i64.const 32 + i64.sub + i64.shl + local.get $7 + i64.load offset=16 + i64.const 96 + local.get $8 + i64.sub + i64.shr_u + i64.or + else + local.get $5 + i64.const 32 + local.get $8 + i64.sub + i64.shr_u + end + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $5 + i64.const 2 + i64.shl + local.tee $8 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + i32.const 0 + local.get $5 + i64.const 62 + i64.shr_u + local.get $8 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.tee $3 + i32.sub + local.get $3 + local.get $6 + select + end + local.set $3 + global.get $~lib/math/rempio2f_y + local.set $1 + local.get $3 + i32.const 1 + i32.and + if (result f32) + local.get $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + else + local.get $1 + local.get $1 + local.get $1 + f64.mul + local.tee $2 + local.get $1 + f64.mul + local.tee $1 + local.get $2 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $1 + local.get $2 + local.get $2 + f64.mul + f64.mul + local.get $2 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 + end + local.tee $0 + f32.neg + local.get $0 + local.get $3 + i32.const 2 + i32.and + select + return + end + local.get $2 + local.get $4 + local.get $1 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $4 + local.get $1 + local.get $1 + f64.mul + f64.mul + local.get $1 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 + ) + (func $std/math/test_sinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 f64) + (local $4 i32) + (local $5 i64) + (local $6 f64) + block $__inlined_func$~lib/math/NativeMath.sinh$35 (result f64) + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $5 + f64.reinterpret_i64 + local.set $6 + f64.const 0.5 + local.get $0 + f64.copysign + local.set $3 + local.get $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $4 + i32.const 1082535490 + i32.lt_u + if + local.get $6 + call $~lib/math/NativeMath.expm1 + local.set $6 + local.get $4 + i32.const 1072693248 + i32.lt_u + if + local.get $0 + local.get $4 + i32.const 1045430272 + i32.lt_u + br_if $__inlined_func$~lib/math/NativeMath.sinh$35 + drop + local.get $3 + local.get $6 + local.get $6 + f64.add + local.get $6 + local.get $6 + f64.mul + local.get $6 + f64.const 1 + f64.add + f64.div + f64.sub + f64.mul + br $__inlined_func$~lib/math/NativeMath.sinh$35 + end + local.get $3 + local.get $6 + local.get $6 + local.get $6 + f64.const 1 + f64.add + f64.div + f64.add + f64.mul + br $__inlined_func$~lib/math/NativeMath.sinh$35 + end + local.get $6 + f64.const -1416.0996898839683 + f64.add + call $~lib/math/NativeMath.exp + local.get $3 + local.get $3 + f64.add + f64.const 2247116418577894884661631e283 + f64.mul + f64.mul + f64.const 2247116418577894884661631e283 + f64.mul + end + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.sinh + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_sinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 f32) + (local $4 i32) + (local $5 f32) + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $4 + f32.reinterpret_i32 + local.set $5 + f32.const 0.5 + local.get $0 + f32.copysign + local.set $3 + block $__inlined_func$~lib/math/NativeMathf.sinh$36 + local.get $4 + i32.const 1118925335 + i32.lt_u + if + local.get $5 + call $~lib/math/NativeMathf.expm1 + local.set $5 + local.get $4 + i32.const 1065353216 + i32.lt_u + if + local.get $4 + i32.const 964689920 + i32.lt_u + br_if $__inlined_func$~lib/math/NativeMathf.sinh$36 + local.get $3 + local.get $5 + local.get $5 + f32.add + local.get $5 + local.get $5 + f32.mul + local.get $5 + f32.const 1 + f32.add + f32.div + f32.sub + f32.mul + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.sinh$36 + end + local.get $3 + local.get $5 + local.get $5 + local.get $5 + f32.const 1 + f32.add + f32.div + f32.add + f32.mul + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.sinh$36 + end + local.get $5 + f32.const -162.88958740234375 + f32.add + call $~lib/math/NativeMathf.exp + local.get $3 + local.get $3 + f32.add + f32.const 1661534994731144841129758e11 + f32.mul + f32.mul + f32.const 1661534994731144841129758e11 + f32.mul + local.set $0 + end + local.get $0 + local.get $1 + local.get $2 + call $std/math/check + ) + (func $~lib/math/tan_kern (param $0 f64) (param $1 f64) (param $2 i32) (result f64) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 f64) + (local $7 f64) + local.get $0 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 2147483647 + i32.and + i32.const 1072010280 + i32.ge_u + local.tee $4 + if + f64.const 0.7853981633974483 + local.get $3 + i32.const 0 + i32.lt_s + if (result f64) + local.get $1 + f64.neg + local.set $1 + local.get $0 + f64.neg + else + local.get $0 + end + f64.sub + f64.const 3.061616997868383e-17 + local.get $1 + f64.sub + f64.add + local.set $0 + f64.const 0 + local.set $1 + end + local.get $0 + local.get $0 + f64.mul + local.tee $5 + local.get $5 + f64.mul + local.set $6 + local.get $0 + local.get $1 + local.get $5 + local.get $5 + local.get $0 + f64.mul + local.tee $7 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + f64.const -1.8558637485527546e-05 + f64.mul + f64.const 7.817944429395571e-05 + f64.add + f64.mul + f64.const 5.880412408202641e-04 + f64.add + f64.mul + f64.const 3.5920791075913124e-03 + f64.add + f64.mul + f64.const 0.021869488294859542 + f64.add + f64.mul + f64.const 0.13333333333320124 + f64.add + local.get $5 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + f64.const 2.590730518636337e-05 + f64.mul + f64.const 7.140724913826082e-05 + f64.add + f64.mul + f64.const 2.464631348184699e-04 + f64.add + f64.mul + f64.const 1.4562094543252903e-03 + f64.add + f64.mul + f64.const 0.0088632398235993 + f64.add + f64.mul + f64.const 0.05396825397622605 + f64.add + f64.mul + f64.add + f64.mul + local.get $1 + f64.add + f64.mul + f64.add + local.get $7 + f64.const 0.3333333333333341 + f64.mul + f64.add + local.tee $1 + f64.add + local.set $5 + local.get $4 + if + f64.const 1 + local.get $3 + i32.const 30 + i32.shr_s + i32.const 2 + i32.and + f64.convert_i32_s + f64.sub + local.get $2 + f64.convert_i32_s + local.tee $6 + local.get $0 + local.get $5 + local.get $5 + f64.mul + local.get $5 + local.get $6 + f64.add + f64.div + local.get $1 + f64.sub + f64.sub + f64.const 2 + f64.mul + f64.sub + f64.mul + return + end + local.get $2 + i32.const 1 + i32.eq + if + local.get $5 + return + end + f64.const -1 + local.get $5 + f64.div + local.tee $6 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $7 + local.get $6 + local.get $7 + local.get $5 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $5 + f64.mul + f64.const 1 + f64.add + local.get $7 + local.get $1 + local.get $5 + local.get $0 + f64.sub + f64.sub + f64.mul + f64.add + f64.mul + f64.add + ) + (func $~lib/math/NativeMath.tan (param $0 f64) (result f64) + (local $1 f64) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 i32) + local.get $0 + i64.reinterpret_f64 + local.tee $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.const 31 + i32.shr_u + local.set $6 + local.get $2 + i32.const 2147483647 + i32.and + local.tee $2 + i32.const 1072243195 + i32.le_u + if + local.get $2 + i32.const 1044381696 + i32.lt_u + if + local.get $0 + return + end + local.get $0 + f64.const 0 + i32.const 1 + call $~lib/math/tan_kern + return + end + local.get $2 + i32.const 2146435072 + i32.ge_u + if + local.get $0 + local.get $0 + f64.sub + return + end + block $~lib/math/rempio2|inlined.2 + local.get $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $7 + i32.const 1073928572 + i32.lt_u + if + i32.const 1 + local.set $2 + local.get $6 + if (result f64) + local.get $0 + f64.const 1.5707963267341256 + f64.add + local.set $0 + i32.const -1 + local.set $2 + local.get $7 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.add + local.tee $1 + f64.const 2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + end + else + local.get $0 + f64.const -1.5707963267341256 + f64.add + local.set $0 + local.get $7 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const -6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const -6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const -6.077100506303966e-11 + f64.add + local.tee $1 + f64.const -2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const -2.0222662487959506e-21 + f64.add + end + end + local.get $0 + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 + br $~lib/math/rempio2|inlined.2 + end + local.get $7 + i32.const 1094263291 + i32.lt_u + if + local.get $7 + i32.const 20 + i32.shr_u + local.tee $2 + local.get $0 + local.get $0 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.tee $4 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.tee $0 + local.get $4 + f64.const 6.077100506506192e-11 + f64.mul + local.tee $5 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 16 + i32.gt_u + if + local.get $4 + f64.const 2.0222662487959506e-21 + f64.mul + local.get $0 + local.get $0 + local.get $4 + f64.const 6.077100506303966e-11 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $5 + local.get $2 + local.get $0 + local.get $5 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 49 + i32.gt_u + if + local.get $4 + f64.const 8.4784276603689e-32 + f64.mul + local.get $0 + local.get $0 + local.get $4 + f64.const 2.0222662487111665e-21 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $5 + local.get $0 + local.get $5 + f64.sub + local.set $1 + end + end + local.get $1 + global.set $~lib/math/rempio2_y0 + local.get $0 + local.get $1 + f64.sub + local.get $5 + f64.sub + global.set $~lib/math/rempio2_y1 + local.get $4 + i32.trunc_sat_f64_s + local.set $2 + br $~lib/math/rempio2|inlined.2 + end + i32.const 0 + local.get $3 + call $~lib/math/pio2_large_quot + local.tee $2 + i32.sub + local.get $2 + local.get $6 + select + local.set $2 + end + global.get $~lib/math/rempio2_y0 + global.get $~lib/math/rempio2_y1 + i32.const 1 + local.get $2 + i32.const 1 + i32.and + i32.const 1 + i32.shl + i32.sub + call $~lib/math/tan_kern + ) + (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) + (local $1 f64) + (local $2 f64) + (local $3 f64) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 31 + i32.shr_u + local.set $6 + block $folding-inner1 + block $folding-inner0 + local.get $4 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 1061752794 + i32.le_u + if + local.get $4 + i32.const 964689920 + i32.lt_u + if + local.get $0 + return + end + local.get $0 + f64.promote_f32 + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner0 + end + local.get $4 + i32.const 1081824209 + i32.le_u + if + local.get $4 + i32.const 1075235811 + i32.le_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 1.5707963267948966 + f64.add + local.get $1 + f64.const -1.5707963267948966 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner1 + else + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 3.141592653589793 + f64.add + local.get $1 + f64.const -3.141592653589793 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner0 + end + unreachable + end + local.get $4 + i32.const 1088565717 + i32.le_u + if + local.get $4 + i32.const 1085271519 + i32.le_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 4.71238898038469 + f64.add + local.get $1 + f64.const -4.71238898038469 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner1 + else + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 6.283185307179586 + f64.add + local.get $1 + f64.const -6.283185307179586 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner0 + end + unreachable + end + local.get $4 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + local.get $0 + f32.sub + return + end + block $~lib/math/rempio2f|inlined.2 (result i32) + local.get $4 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $2 + local.get $1 + local.get $2 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $2 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $2 + i32.trunc_sat_f64_s + br $~lib/math/rempio2f|inlined.2 + end + local.get $4 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $7 + i32.const 63 + i32.and + i64.extend_i32_s + local.set $8 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.const 5632 + i32.add + local.tee $7 + i64.load offset=8 + local.set $5 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $4 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $9 + local.get $7 + i64.load + local.get $8 + i64.shl + local.get $5 + i64.const 64 + local.get $8 + i64.sub + i64.shr_u + i64.or + i64.mul + local.get $8 + i64.const 32 + i64.gt_u + if (result i64) + local.get $5 + local.get $8 + i64.const 32 + i64.sub + i64.shl + local.get $7 + i64.load offset=16 + i64.const 96 + local.get $8 + i64.sub + i64.shr_u + i64.or + else + local.get $5 + i64.const 32 + local.get $8 + i64.sub + i64.shr_u + end + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $5 + i64.const 2 + i64.shl + local.tee $8 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + i32.const 0 + local.get $5 + i64.const 62 + i64.shr_u + local.get $8 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.tee $4 + i32.sub + local.get $4 + local.get $6 + select + end + local.set $4 + global.get $~lib/math/rempio2f_y + local.tee $1 + local.get $1 + f64.mul + local.tee $2 + local.get $2 + f64.mul + local.set $3 + f64.const -1 + local.get $1 + local.get $2 + local.get $1 + f64.mul + local.tee $1 + local.get $2 + f64.const 0.13339200271297674 + f64.mul + f64.const 0.3333313950307914 + f64.add + f64.mul + f64.add + local.get $1 + local.get $3 + f64.mul + local.get $2 + f64.const 0.024528318116654728 + f64.mul + f64.const 0.05338123784456704 + f64.add + local.get $3 + local.get $2 + f64.const 0.009465647849436732 + f64.mul + f64.const 0.002974357433599673 + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.tee $1 + f64.div + local.get $1 + local.get $4 + i32.const 1 + i32.and + select + f32.demote_f64 + return + end + local.get $2 + local.get $1 + local.get $2 + f64.mul + local.tee $2 + local.get $1 + f64.const 0.13339200271297674 + f64.mul + f64.const 0.3333313950307914 + f64.add + f64.mul + f64.add + local.get $2 + local.get $3 + f64.mul + local.get $1 + f64.const 0.024528318116654728 + f64.mul + f64.const 0.05338123784456704 + f64.add + local.get $3 + local.get $1 + f64.const 0.009465647849436732 + f64.mul + f64.const 0.002974357433599673 + f64.add + f64.mul + f64.add + f64.mul + f64.add + f32.demote_f64 + return + end + f64.const -1 + local.get $2 + local.get $1 + local.get $2 + f64.mul + local.tee $2 + local.get $1 + f64.const 0.13339200271297674 + f64.mul + f64.const 0.3333313950307914 + f64.add + f64.mul + f64.add + local.get $2 + local.get $3 + f64.mul + local.get $1 + f64.const 0.024528318116654728 + f64.mul + f64.const 0.05338123784456704 + f64.add + local.get $3 + local.get $1 + f64.const 0.009465647849436732 + f64.mul + f64.const 0.002974357433599673 + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.div + f32.demote_f64 + ) + (func $std/math/test_tanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 f64) + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + f64.reinterpret_i64 + local.set $5 + local.get $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 1071748074 + i32.gt_u + if (result f64) + local.get $3 + i32.const 1077149696 + i32.gt_u + if (result f64) + f64.const 1 + f64.const 0 + local.get $5 + f64.div + f64.sub + else + f64.const 1 + f64.const 2 + local.get $5 + local.get $5 + f64.add + call $~lib/math/NativeMath.expm1 + f64.const 2 + f64.add + f64.div + f64.sub + end + else + local.get $3 + i32.const 1070618798 + i32.gt_u + if (result f64) + local.get $5 + local.get $5 + f64.add + call $~lib/math/NativeMath.expm1 + local.tee $5 + local.get $5 + f64.const 2 + f64.add + f64.div + else + local.get $3 + i32.const 1048576 + i32.ge_u + if (result f64) + local.get $5 + f64.const -2 + f64.mul + call $~lib/math/NativeMath.expm1 + local.tee $5 + f64.neg + local.get $5 + f64.const 2 + f64.add + f64.div + else + local.get $5 + end + end + end + local.get $0 + f64.copysign + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.tanh + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_tanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 f32) + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $3 + f32.reinterpret_i32 + local.set $4 + local.get $3 + i32.const 1057791828 + i32.gt_u + if (result f32) + local.get $3 + i32.const 1092616192 + i32.gt_u + if (result f32) + f32.const 0 + local.get $4 + f32.div + f32.const 1 + f32.add + else + f32.const 1 + f32.const 2 + local.get $4 + local.get $4 + f32.add + call $~lib/math/NativeMathf.expm1 + f32.const 2 + f32.add + f32.div + f32.sub + end + else + local.get $3 + i32.const 1048757624 + i32.gt_u + if (result f32) + local.get $4 + local.get $4 + f32.add + call $~lib/math/NativeMathf.expm1 + local.tee $4 + local.get $4 + f32.const 2 + f32.add + f32.div + else + local.get $3 + i32.const 8388608 + i32.ge_u + if (result f32) + local.get $4 + f32.const -2 + f32.mul + call $~lib/math/NativeMathf.expm1 + local.tee $4 + f32.neg + local.get $4 + f32.const 2 + f32.add + f32.div + else + local.get $4 + end + end + end + local.get $0 + f32.copysign + local.get $1 + local.get $2 + call $std/math/check + ) + (func $~lib/math/NativeMath.sincos (param $0 f64) + (local $1 f64) + (local $2 f64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 f64) + (local $10 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 31 + i32.shr_u + local.set $6 + local.get $3 + i32.const 2147483647 + i32.and + local.tee $3 + i32.const 1072243195 + i32.le_u + if + local.get $3 + i32.const 1044816030 + i32.lt_u + if + local.get $0 + global.set $~lib/math/NativeMath.sincos_sin + f64.const 1 + global.set $~lib/math/NativeMath.sincos_cos + return + end + local.get $0 + local.get $0 + local.get $0 + f64.mul + local.tee $1 + local.get $0 + f64.mul + local.get $1 + local.get $1 + local.get $1 + f64.const 2.7557313707070068e-06 + f64.mul + f64.const -1.984126982985795e-04 + f64.add + f64.mul + f64.const 0.00833333333332249 + f64.add + local.get $1 + local.get $1 + local.get $1 + f64.mul + local.tee $2 + f64.mul + local.get $1 + f64.const 1.58969099521155e-10 + f64.mul + f64.const -2.5050760253406863e-08 + f64.add + f64.mul + f64.add + f64.mul + f64.const -0.16666666666666632 + f64.add + f64.mul + f64.add + global.set $~lib/math/NativeMath.sincos_sin + f64.const 1 + local.get $1 + f64.const 0.5 + f64.mul + local.tee $7 + f64.sub + local.tee $8 + f64.const 1 + local.get $8 + f64.sub + local.get $7 + f64.sub + local.get $1 + local.get $1 + local.get $1 + local.get $1 + f64.const 2.480158728947673e-05 + f64.mul + f64.const -0.001388888888887411 + f64.add + f64.mul + f64.const 0.0416666666666666 + f64.add + f64.mul + local.get $2 + local.get $2 + f64.mul + local.get $1 + local.get $1 + f64.const -1.1359647557788195e-11 + f64.mul + f64.const 2.087572321298175e-09 + f64.add + f64.mul + f64.const -2.7557314351390663e-07 + f64.add + f64.mul + f64.add + f64.mul + local.get $0 + f64.const 0 + f64.mul + f64.sub + f64.add + f64.add + global.set $~lib/math/NativeMath.sincos_cos + return + end + local.get $3 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + local.get $0 + f64.sub + local.tee $0 + global.set $~lib/math/NativeMath.sincos_sin + local.get $0 + global.set $~lib/math/NativeMath.sincos_cos + return + end + block $~lib/math/rempio2|inlined.3 (result i32) + local.get $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 1073928572 + i32.lt_u + if + i32.const 1 + local.set $3 + local.get $6 + if (result f64) + local.get $0 + f64.const 1.5707963267341256 + f64.add + local.set $0 + i32.const -1 + local.set $3 + local.get $4 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.add + local.tee $1 + f64.const 2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + end + else + local.get $0 + f64.const -1.5707963267341256 + f64.add + local.set $0 + local.get $4 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const -6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const -6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const -6.077100506303966e-11 + f64.add + local.tee $1 + f64.const -2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const -2.0222662487959506e-21 + f64.add + end + end + local.get $0 + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 + local.get $3 + br $~lib/math/rempio2|inlined.3 + end + local.get $4 + i32.const 1094263291 + i32.lt_u + if + local.get $4 + i32.const 20 + i32.shr_u + local.tee $3 + local.get $0 + local.get $0 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.tee $7 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.tee $0 + local.get $7 + f64.const 6.077100506506192e-11 + f64.mul + local.tee $1 + f64.sub + local.tee $2 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 16 + i32.gt_u + if + local.get $7 + f64.const 2.0222662487959506e-21 + f64.mul + local.get $0 + local.get $0 + local.get $7 + f64.const 6.077100506303966e-11 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $1 + local.get $3 + local.get $0 + local.get $1 + f64.sub + local.tee $2 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 49 + i32.gt_u + if + local.get $7 + f64.const 8.4784276603689e-32 + f64.mul + local.get $0 + local.get $0 + local.get $7 + f64.const 2.0222662487111665e-21 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $1 + local.get $0 + local.get $1 + f64.sub + local.set $2 + end + end + local.get $2 + global.set $~lib/math/rempio2_y0 + local.get $0 + local.get $2 + f64.sub + local.get $1 + f64.sub + global.set $~lib/math/rempio2_y1 + local.get $7 + i32.trunc_sat_f64_s + br $~lib/math/rempio2|inlined.3 + end + i32.const 0 + local.get $5 + call $~lib/math/pio2_large_quot + local.tee $3 + i32.sub + local.get $3 + local.get $6 + select + end + local.set $3 + global.get $~lib/math/rempio2_y0 + local.tee $7 + local.get $7 + f64.mul + local.tee $8 + local.tee $0 + local.get $7 + f64.mul + local.set $1 + local.get $7 + local.get $0 + global.get $~lib/math/rempio2_y1 + local.tee $9 + f64.const 0.5 + f64.mul + local.get $1 + local.get $0 + local.get $0 + f64.const 2.7557313707070068e-06 + f64.mul + f64.const -1.984126982985795e-04 + f64.add + f64.mul + f64.const 0.00833333333332249 + f64.add + local.get $0 + local.get $0 + local.get $0 + f64.mul + f64.mul + local.get $0 + f64.const 1.58969099521155e-10 + f64.mul + f64.const -2.5050760253406863e-08 + f64.add + f64.mul + f64.add + f64.mul + f64.sub + f64.mul + local.get $9 + f64.sub + local.get $1 + f64.const -0.16666666666666632 + f64.mul + f64.sub + f64.sub + local.tee $2 + local.set $0 + f64.const 1 + local.get $8 + f64.const 0.5 + f64.mul + local.tee $1 + f64.sub + local.tee $10 + f64.const 1 + local.get $10 + f64.sub + local.get $1 + f64.sub + local.get $8 + local.get $8 + local.get $8 + local.get $8 + f64.const 2.480158728947673e-05 + f64.mul + f64.const -0.001388888888887411 + f64.add + f64.mul + f64.const 0.0416666666666666 + f64.add + f64.mul + local.get $8 + local.get $8 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.get $8 + local.get $8 + f64.const -1.1359647557788195e-11 + f64.mul + f64.const 2.087572321298175e-09 + f64.add + f64.mul + f64.const -2.7557314351390663e-07 + f64.add + f64.mul + f64.add + f64.mul + local.get $7 + local.get $9 + f64.mul + f64.sub + f64.add + f64.add + local.set $1 + local.get $3 + i32.const 1 + i32.and + if + local.get $1 + local.set $0 + local.get $2 + f64.neg + local.set $1 + end + local.get $3 + i32.const 2 + i32.and + if (result f64) + local.get $1 + f64.neg + local.set $1 + local.get $0 + f64.neg + else + local.get $0 + end + global.set $~lib/math/NativeMath.sincos_sin + local.get $1 + global.set $~lib/math/NativeMath.sincos_cos + ) + (func $std/math/test_sincos (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) + (local $5 f64) + local.get $0 + f64.reinterpret_i64 + call $~lib/math/NativeMath.sincos + global.get $~lib/math/NativeMath.sincos_sin + local.get $1 + f64.reinterpret_i64 + local.get $2 + f64.reinterpret_i64 + call $std/math/check + if + global.get $~lib/math/NativeMath.sincos_cos + local.get $3 + f64.reinterpret_i64 + local.get $4 + f64.reinterpret_i64 + call $std/math/check + drop + end + ) + (func $~lib/math/NativeMath.imul (param $0 f64) (param $1 f64) (result f64) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 i64) + local.get $0 + local.get $1 + f64.add + local.tee $4 + local.get $4 + f64.sub + f64.const 0 + f64.ne + if + f64.const 0 + return + end + local.get $0 + i64.reinterpret_f64 + local.tee $3 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $5 + i64.const 1053 + i64.le_u + if (result i32) + local.get $0 + i32.trunc_sat_f64_s + else + local.get $5 + i64.const 1106 + i64.le_u + if (result i32) + i32.const 0 + local.get $3 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + local.get $5 + i64.const 1043 + i64.sub + i64.shl + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.sub + local.get $2 + local.get $3 + i64.const 0 + i64.lt_s + select + else + i32.const 0 + end + end + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $5 + i64.const 1053 + i64.le_u + if (result i32) + local.get $1 + i32.trunc_sat_f64_s + else + local.get $5 + i64.const 1106 + i64.le_u + if (result i32) + i32.const 0 + local.get $3 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + local.get $5 + i64.const 1043 + i64.sub + i64.shl + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.sub + local.get $2 + local.get $3 + i64.const 0 + i64.lt_s + select + else + i32.const 0 + end + end + i32.mul + f64.convert_i32_s + ) + (func $~lib/math/ipow64 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + i64.const 1 + local.set $2 + local.get $0 + i64.const 2 + i64.eq + if + i64.const 1 + local.get $1 + i64.shl + i64.const 0 + local.get $1 + i64.const 64 + i64.lt_u + select + return + end + local.get $1 + i64.const 0 + i64.le_s + if + local.get $0 + i64.const -1 + i64.eq + if + i64.const -1 + i64.const 1 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + return + end + local.get $1 + i64.eqz + i64.extend_i32_u + local.get $0 + i64.const 1 + i64.eq + i64.extend_i32_u + i64.or + return + else + local.get $1 + i64.const 1 + i64.eq + if + local.get $0 + return + else + local.get $1 + i64.const 2 + i64.eq + if + local.get $0 + local.get $0 + i64.mul + return + else + local.get $1 + i64.const 64 + i64.lt_s + if + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + i32.const 63 + local.get $1 + i64.clz + i32.wrap_i64 + i32.sub + br_table $case5|0 $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i64.const 1 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + end + local.get $2 + return + end + end + end + end + loop $while-continue|1 + local.get $1 + i64.const 0 + i64.ne + if + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + br $while-continue|1 + end + end + local.get $2 + ) + (func $start:std/math + (local $0 f64) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 f32) + (local $5 i64) + (local $6 i32) + f64.const 2.718281828459045 + global.get $~lib/bindings/dom/Math.E + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6931471805599453 + global.get $~lib/bindings/dom/Math.LN2 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.302585092994046 + global.get $~lib/bindings/dom/Math.LN10 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4426950408889634 + global.get $~lib/bindings/dom/Math.LOG2E + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.141592653589793 + global.get $~lib/bindings/dom/Math.PI + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7071067811865476 + global.get $~lib/bindings/dom/Math.SQRT1_2 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4142135623730951 + global.get $~lib/bindings/dom/Math.SQRT2 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.7182817459106445 + global.get $~lib/bindings/dom/Math.E + f32.demote_f64 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6931471824645996 + global.get $~lib/bindings/dom/Math.LN2 + f32.demote_f64 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3025851249694824 + global.get $~lib/bindings/dom/Math.LN10 + f32.demote_f64 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.4426950216293335 + global.get $~lib/bindings/dom/Math.LOG2E + f32.demote_f64 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 122 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3.1415927410125732 + global.get $~lib/bindings/dom/Math.PI + f32.demote_f64 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7071067690849304 + global.get $~lib/bindings/dom/Math.SQRT1_2 + f32.demote_f64 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.4142135381698608 + global.get $~lib/bindings/dom/Math.SQRT2 + f32.demote_f64 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + i32.const -2 + call $~lib/math/NativeMath.scalbn + f64.const -2.01671209764492 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 136 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + i32.const -1 + call $~lib/math/NativeMath.scalbn + f64.const 2.1726199246691524 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + i32.const 0 + call $~lib/math/NativeMath.scalbn + f64.const -8.38143342755525 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 138 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + i32.const 1 + call $~lib/math/NativeMath.scalbn + f64.const -13.063347163826968 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 139 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + i32.const 2 + call $~lib/math/NativeMath.scalbn + f64.const 37.06822786789034 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + i32.const 3 + call $~lib/math/NativeMath.scalbn + f64.const 5.295887184796036 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 141 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + i32.const 4 + call $~lib/math/NativeMath.scalbn + f64.const -6.505662758165685 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + i32.const 5 + call $~lib/math/NativeMath.scalbn + f64.const 17.97631187906317 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + i32.const 6 + call $~lib/math/NativeMath.scalbn + f64.const 49.545746981843436 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + i32.const 7 + call $~lib/math/NativeMath.scalbn + f64.const -86.88175393784351 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 145 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + i32.const 2147483647 + call $~lib/math/NativeMath.scalbn + f64.const 0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 148 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + i32.const -2147483647 + call $~lib/math/NativeMath.scalbn + f64.const 0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 149 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + i32.const 2147483647 + call $~lib/math/NativeMath.scalbn + f64.const -0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 150 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/math/NativeMath.scalbn + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + i32.const 0 + call $~lib/math/NativeMath.scalbn + f64.const inf + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + i32.const 0 + call $~lib/math/NativeMath.scalbn + f64.const -inf + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + i32.const 0 + call $~lib/math/NativeMath.scalbn + f64.const 1 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + i32.const 1 + call $~lib/math/NativeMath.scalbn + f64.const 2 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + i32.const -1 + call $~lib/math/NativeMath.scalbn + f64.const 0.5 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + i32.const 2147483647 + call $~lib/math/NativeMath.scalbn + f64.const inf + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + i32.const 1 + call $~lib/math/NativeMath.scalbn + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + i32.const 2147483647 + call $~lib/math/NativeMath.scalbn + f64.const inf + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 159 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + i32.const -2147483647 + call $~lib/math/NativeMath.scalbn + f64.const inf + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 160 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + i32.const 2147483647 + call $~lib/math/NativeMath.scalbn + f64.const -inf + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8988465674311579538646525e283 + i32.const -2097 + call $~lib/math/NativeMath.scalbn + f64.const 5e-324 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + i32.const 2097 + call $~lib/math/NativeMath.scalbn + f64.const 8988465674311579538646525e283 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.000244140625 + i32.const -1074 + call $~lib/math/NativeMath.scalbn + f64.const 5e-324 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 164 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7499999999999999 + i32.const -1073 + call $~lib/math/NativeMath.scalbn + f64.const 5e-324 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 165 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5000000000000012 + i32.const -1024 + call $~lib/math/NativeMath.scalbn + f64.const 2.781342323134007e-309 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.016712188720703 + f32.const -2.016712188720703 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.1726198196411133 + f32.const 2.1726198196411133 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 176 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -8.381433486938477 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -13.063346862792969 + f32.const -13.063346862792969 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 178 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 37.06822967529297 + f32.const 37.06822967529297 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 179 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.295886993408203 + f32.const 5.295886993408203 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 180 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.50566291809082 + f32.const -6.50566291809082 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 17.9763126373291 + f32.const 17.9763126373291 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 182 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 49.545745849609375 + f32.const 49.545745849609375 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -86.88175201416016 + f32.const -86.88175201416016 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 184 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 188 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 189 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 190 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 191 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 192 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const 2 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 194 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 195 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 196 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 197 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 198 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + f32.const 1.401298464324817e-45 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 201 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1701411834604692317316873e14 + f32.const 1701411834604692317316873e14 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 202 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + f32.const 1.401298464324817e-45 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 203 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + f32.const 1.401298464324817e-45 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 204 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.4693693398263237e-39 + f32.const 1.4693693398263237e-39 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 205 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.06684839057968 + f64.const 8.06684839057968 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.abs + f64.const 8.06684839057968 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 217 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 4.345239849338305 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.abs + f64.const 4.345239849338305 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 218 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.38143342755525 + f64.const 8.38143342755525 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.abs + f64.const 8.38143342755525 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 6.531673581913484 + f64.const 6.531673581913484 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.abs + f64.const 6.531673581913484 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 220 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 9.267056966972586 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.abs + f64.const 9.267056966972586 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 221 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.6619858980995045 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.abs + f64.const 0.6619858980995045 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 222 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.4066039223853553 + f64.const 0.4066039223853553 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.abs + f64.const 0.4066039223853553 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 223 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.5617597462207241 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.abs + f64.const 0.5617597462207241 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 224 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.7741522965913037 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.abs + f64.const 0.7741522965913037 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 225 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6787637026394024 + f64.const 0.6787637026394024 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.abs + f64.const 0.6787637026394024 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 226 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.abs + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 229 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.abs + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 230 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.abs + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 231 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.abs + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 232 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.abs + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 233 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.abs + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 234 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.abs + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 235 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 8.066848754882812 + f32.const 8.066848754882812 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 244 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 4.345239639282227 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 245 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 8.381433486938477 + f32.const 8.381433486938477 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 246 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 6.531673431396484 + f32.const 6.531673431396484 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 247 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 9.267057418823242 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 248 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.6619858741760254 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 249 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.40660393238067627 + f32.const 0.40660393238067627 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 250 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.5617597699165344 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 251 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.7741522789001465 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 252 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6787636876106262 + f32.const 0.6787636876106262 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 253 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 256 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 258 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 259 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 260 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 261 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 262 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + call $~lib/math/NativeMath.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 274 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + call $~lib/math/NativeMath.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 275 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + call $~lib/math/NativeMath.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 276 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + call $~lib/math/NativeMath.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 277 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + call $~lib/math/NativeMath.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 278 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + call $~lib/math/NativeMath.acos + f64.const 0.8473310828433507 + f64.const -0.41553276777267456 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.acos + f64.const 0.8473310828433507 + f64.const -0.41553276777267456 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 279 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + call $~lib/math/NativeMath.acos + f64.const 1.989530071088669 + f64.const 0.4973946213722229 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.acos + f64.const 1.989530071088669 + f64.const 0.4973946213722229 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 280 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + call $~lib/math/NativeMath.acos + f64.const 0.9742849645674904 + f64.const -0.4428897500038147 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.acos + f64.const 0.9742849645674904 + f64.const -0.4428897500038147 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 281 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + call $~lib/math/NativeMath.acos + f64.const 0.6854215158636222 + f64.const -0.12589527666568756 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.acos + f64.const 0.6854215158636222 + f64.const -0.12589527666568756 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 282 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + call $~lib/math/NativeMath.acos + f64.const 2.316874138205964 + f64.const -0.17284949123859406 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.acos + f64.const 2.316874138205964 + f64.const -0.17284949123859406 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 283 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.acos + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.acos + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 286 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/math/NativeMath.acos + f64.const 3.141592653589793 + f64.const -0.27576595544815063 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.acos + f64.const 3.141592653589793 + f64.const -0.27576595544815063 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 287 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/math/NativeMath.acos + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.acos + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000000000000002 + call $~lib/math/NativeMath.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.0000000000000002 + call $~lib/bindings/dom/Math.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 289 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0000000000000002 + call $~lib/math/NativeMath.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.0000000000000002 + call $~lib/bindings/dom/Math.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 290 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/math/NativeMath.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 291 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/math/NativeMath.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 292 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.acos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 293 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5309227209592985 + call $~lib/math/NativeMath.acos + f64.const 2.1304853799705463 + f64.const 0.1391008496284485 + call $std/math/check + if (result i32) + f64.const -0.5309227209592985 + call $~lib/bindings/dom/Math.acos + f64.const 2.1304853799705463 + f64.const 0.1391008496284485 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 294 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.4939556746399746 + call $~lib/math/NativeMath.acos + f64.const 1.0541629875851946 + f64.const 0.22054767608642578 + call $std/math/check + if (result i32) + f64.const 0.4939556746399746 + call $~lib/bindings/dom/Math.acos + f64.const 1.0541629875851946 + f64.const 0.22054767608642578 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 295 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + call $~lib/math/NativeMathf.acos + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 304 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + call $~lib/math/NativeMathf.acos + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 305 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + call $~lib/math/NativeMathf.acos + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 306 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + call $~lib/math/NativeMathf.acos + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 307 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + call $~lib/math/NativeMathf.acos + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 308 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + call $~lib/math/NativeMathf.acos + f32.const 0.8473311066627502 + f32.const -0.13588131964206696 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 309 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + call $~lib/math/NativeMathf.acos + f32.const 1.989530086517334 + f32.const 0.03764917701482773 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 310 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + call $~lib/math/NativeMathf.acos + f32.const 0.9742849469184875 + f32.const 0.18443739414215088 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 311 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + call $~lib/math/NativeMathf.acos + f32.const 0.6854215264320374 + f32.const -0.29158344864845276 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 312 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + call $~lib/math/NativeMathf.acos + f32.const 2.3168740272521973 + f32.const -0.3795364499092102 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 313 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/math/NativeMathf.acos + f32.const 1.5707963705062866 + f32.const 0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 316 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + call $~lib/math/NativeMathf.acos + f32.const 3.1415927410125732 + f32.const 0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 317 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + call $~lib/math/NativeMathf.acos + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 318 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000001192092896 + call $~lib/math/NativeMathf.acos + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 319 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000001192092896 + call $~lib/math/NativeMathf.acos + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 320 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + call $~lib/math/NativeMathf.acos + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 321 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + call $~lib/math/NativeMathf.acos + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 322 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + call $~lib/math/NativeMathf.acos + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 323 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.49965065717697144 + call $~lib/math/NativeMathf.acos + f32.const 1.0476008653640747 + f32.const -0.21161814033985138 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 324 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5051405429840088 + call $~lib/math/NativeMathf.acos + f32.const 2.1003410816192627 + f32.const -0.20852705836296082 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 325 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5189794898033142 + call $~lib/math/NativeMathf.acos + f32.const 2.116452932357788 + f32.const -0.14600826799869537 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 326 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 338 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 2.1487163980597503 + f64.const -0.291634738445282 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 339 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 340 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 341 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 2.91668914109908 + f64.const -0.24191908538341522 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 342 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 343 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 344 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 345 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 346 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 347 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 350 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 351 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 352 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999923706054688 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 353 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9784.820766473835 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 354 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 355 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 356 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 357 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1060831199926429 + f64.const 0.4566373404384803 + f64.const -0.29381608963012695 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 373 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1089809557628658 + f64.const 0.4627246859959428 + f64.const -0.3990095555782318 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 375 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1169429159875521 + f64.const 0.47902433134075284 + f64.const -0.321674108505249 + call $std/math/test_acosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 376 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 385 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 2.148716449737549 + f32.const 0.4251045286655426 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 386 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 387 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 388 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 2.916689157485962 + f32.const -0.1369788944721222 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 389 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 390 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 391 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 392 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 393 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 394 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 397 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 398 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 399 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999923706054688 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 400 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 401 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 402 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 403 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1125899906842624 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_acoshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 404 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + call $~lib/math/NativeMath.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 416 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + call $~lib/math/NativeMath.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 417 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + call $~lib/math/NativeMath.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 418 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + call $~lib/math/NativeMath.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 419 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + call $~lib/math/NativeMath.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 420 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + call $~lib/math/NativeMath.asin + f64.const 0.7234652439515459 + f64.const -0.13599912822246552 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.asin + f64.const 0.7234652439515459 + f64.const -0.13599912822246552 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 421 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + call $~lib/math/NativeMath.asin + f64.const -0.41873374429377225 + f64.const -0.09264230728149414 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.asin + f64.const -0.41873374429377225 + f64.const -0.09264230728149414 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 422 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + call $~lib/math/NativeMath.asin + f64.const 0.5965113622274062 + f64.const -0.10864213854074478 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.asin + f64.const 0.5965113622274062 + f64.const -0.10864213854074478 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 423 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + call $~lib/math/NativeMath.asin + f64.const 0.8853748109312743 + f64.const -0.4256366193294525 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.asin + f64.const 0.8853748109312743 + f64.const -0.4256366193294525 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 424 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + call $~lib/math/NativeMath.asin + f64.const -0.7460778114110673 + f64.const 0.13986606895923615 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.asin + f64.const -0.7460778114110673 + f64.const 0.13986606895923615 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 425 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/math/NativeMath.asin + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.asin + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 428 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/math/NativeMath.asin + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.asin + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 429 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.asin + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.asin + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 430 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/math/NativeMath.asin + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.asin + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 431 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000000000000002 + call $~lib/math/NativeMath.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.0000000000000002 + call $~lib/bindings/dom/Math.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 432 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0000000000000002 + call $~lib/math/NativeMath.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.0000000000000002 + call $~lib/bindings/dom/Math.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 433 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/math/NativeMath.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 434 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/math/NativeMath.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 435 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.asin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 436 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5073043929119148 + call $~lib/math/NativeMath.asin + f64.const 0.5320538997772349 + f64.const -0.16157317161560059 + call $std/math/check + if (result i32) + f64.const 0.5073043929119148 + call $~lib/bindings/dom/Math.asin + f64.const 0.5320538997772349 + f64.const -0.16157317161560059 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 437 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + call $~lib/math/NativeMathf.asin + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 446 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + call $~lib/math/NativeMathf.asin + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 447 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + call $~lib/math/NativeMathf.asin + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 448 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + call $~lib/math/NativeMathf.asin + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 449 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + call $~lib/math/NativeMathf.asin + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 450 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + call $~lib/math/NativeMathf.asin + f32.const 0.7234652042388916 + f32.const -0.1307632476091385 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 451 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + call $~lib/math/NativeMathf.asin + f32.const -0.41873374581336975 + f32.const 0.3161141574382782 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 452 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + call $~lib/math/NativeMathf.asin + f32.const 0.5965113639831543 + f32.const -0.4510819613933563 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 453 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + call $~lib/math/NativeMathf.asin + f32.const 0.8853747844696045 + f32.const 0.02493886835873127 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 454 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + call $~lib/math/NativeMathf.asin + f32.const -0.7460777759552002 + f32.const 0.2515012323856354 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 455 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + call $~lib/math/NativeMathf.asin + f32.const 1.5707963705062866 + f32.const 0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 458 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + call $~lib/math/NativeMathf.asin + f32.const -1.5707963705062866 + f32.const -0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 459 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/math/NativeMathf.asin + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 460 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + call $~lib/math/NativeMathf.asin + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 461 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000001192092896 + call $~lib/math/NativeMathf.asin + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 462 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000001192092896 + call $~lib/math/NativeMathf.asin + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 463 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + call $~lib/math/NativeMathf.asin + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 464 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + call $~lib/math/NativeMathf.asin + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 465 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + call $~lib/math/NativeMathf.asin + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 466 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5004770159721375 + call $~lib/math/NativeMathf.asin + f32.const 0.5241496562957764 + f32.const -0.29427099227905273 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -2.784729878387861 + f64.const -0.4762189984321594 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 479 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 2.175213389013164 + f64.const -0.02728751301765442 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 480 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.822706083697696 + f64.const 0.20985257625579834 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 481 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -2.575619446591922 + f64.const 0.3113134205341339 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 482 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 2.9225114951048674 + f64.const 0.4991756081581116 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 483 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.6212462762707166 + f64.const -0.4697347581386566 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 484 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.39615990393192035 + f64.const -0.40814438462257385 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 485 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.5357588870255474 + f64.const 0.3520713150501251 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 486 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.7123571263197349 + f64.const 0.13371451199054718 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 487 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.635182348903198 + f64.const 0.04749670997262001 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 488 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 491 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 492 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const 0 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 493 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 494 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/test_asinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 495 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -2.7847299575805664 + f32.const -0.14418013393878937 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 524 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 2.17521333694458 + f32.const -0.020796965807676315 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 525 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.8227059841156006 + f32.const 0.44718533754348755 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 526 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -2.5756194591522217 + f32.const -0.14822272956371307 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 527 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 2.922511577606201 + f32.const 0.14270681142807007 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 528 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.6212462782859802 + f32.const 0.3684912919998169 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 529 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.39615991711616516 + f32.const -0.13170306384563446 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 530 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.535758912563324 + f32.const 0.08184859901666641 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 531 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.7123571038246155 + f32.const -0.14270737767219543 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 532 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.6351823210716248 + f32.const 0.2583143711090088 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 533 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 536 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 537 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 538 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 539 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/test_asinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 540 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + call $~lib/math/NativeMath.atan + f64.const -1.4474613762633468 + f64.const 0.14857111871242523 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.atan + f64.const -1.4474613762633468 + f64.const 0.14857111871242523 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 552 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + call $~lib/math/NativeMath.atan + f64.const 1.344597927114538 + f64.const -0.08170335739850998 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.atan + f64.const 1.344597927114538 + f64.const -0.08170335739850998 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 553 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + call $~lib/math/NativeMath.atan + f64.const -1.4520463463295539 + f64.const -0.07505480200052261 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.atan + f64.const -1.4520463463295539 + f64.const -0.07505480200052261 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 554 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + call $~lib/math/NativeMath.atan + f64.const -1.4188758658752532 + f64.const -0.057633496820926666 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.atan + f64.const -1.4188758658752532 + f64.const -0.057633496820926666 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 555 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + call $~lib/math/NativeMath.atan + f64.const 1.463303145448706 + f64.const 0.1606956422328949 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.atan + f64.const 1.463303145448706 + f64.const 0.1606956422328949 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 556 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + call $~lib/math/NativeMath.atan + f64.const 0.5847550670238325 + f64.const 0.4582556486129761 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.atan + f64.const 0.5847550670238325 + f64.const 0.4582556486129761 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 557 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + call $~lib/math/NativeMath.atan + f64.const -0.3861864177552131 + f64.const -0.2574281692504883 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.atan + f64.const -0.3861864177552131 + f64.const -0.2574281692504883 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 558 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + call $~lib/math/NativeMath.atan + f64.const 0.5118269531628881 + f64.const -0.11444277316331863 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.atan + f64.const 0.5118269531628881 + f64.const -0.11444277316331863 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 559 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + call $~lib/math/NativeMath.atan + f64.const 0.6587802431653822 + f64.const -0.11286488175392151 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.atan + f64.const 0.6587802431653822 + f64.const -0.11286488175392151 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 560 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + call $~lib/math/NativeMath.atan + f64.const -0.5963307826973472 + f64.const -0.2182842344045639 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.atan + f64.const -0.5963307826973472 + f64.const -0.2182842344045639 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 561 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.atan + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.atan + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 564 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/math/NativeMath.atan + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.atan + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 565 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/math/NativeMath.atan + f64.const 0.7853981633974483 + f64.const -0.27576595544815063 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.atan + f64.const 0.7853981633974483 + f64.const -0.27576595544815063 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 566 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/math/NativeMath.atan + f64.const -0.7853981633974483 + f64.const 0.27576595544815063 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.atan + f64.const -0.7853981633974483 + f64.const 0.27576595544815063 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 567 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/math/NativeMath.atan + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.atan + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 568 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/math/NativeMath.atan + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.atan + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 569 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.atan + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.atan + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 570 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6929821535674624 + call $~lib/math/NativeMath.atan + f64.const 0.6060004555152562 + f64.const -0.17075790464878082 + call $std/math/check + if (result i32) + f64.const 0.6929821535674624 + call $~lib/bindings/dom/Math.atan + f64.const 0.6060004555152562 + f64.const -0.17075790464878082 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 571 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + call $~lib/math/NativeMathf.atan + f32.const -1.4474613666534424 + f32.const 0.12686480581760406 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 580 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + call $~lib/math/NativeMathf.atan + f32.const 1.3445979356765747 + f32.const 0.16045434772968292 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 581 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + call $~lib/math/NativeMathf.atan + f32.const -1.4520463943481445 + f32.const -0.39581751823425293 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 582 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + call $~lib/math/NativeMathf.atan + f32.const -1.418875813484192 + f32.const 0.410570353269577 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 583 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + call $~lib/math/NativeMathf.atan + f32.const 1.4633032083511353 + f32.const 0.48403501510620117 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 584 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + call $~lib/math/NativeMathf.atan + f32.const 0.5847550630569458 + f32.const 0.2125193476676941 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + call $~lib/math/NativeMathf.atan + f32.const -0.386186420917511 + f32.const 0.18169628083705902 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 586 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + call $~lib/math/NativeMathf.atan + f32.const 0.5118269920349121 + f32.const 0.3499770760536194 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 587 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + call $~lib/math/NativeMathf.atan + f32.const 0.6587802171707153 + f32.const -0.2505330741405487 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 588 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + call $~lib/math/NativeMathf.atan + f32.const -0.5963307619094849 + f32.const 0.17614826560020447 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 589 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/math/NativeMathf.atan + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 592 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + call $~lib/math/NativeMathf.atan + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 593 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + call $~lib/math/NativeMathf.atan + f32.const 0.7853981852531433 + f32.const 0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 594 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + call $~lib/math/NativeMathf.atan + f32.const -0.7853981852531433 + f32.const -0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 595 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + call $~lib/math/NativeMathf.atan + f32.const 1.5707963705062866 + f32.const 0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 596 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + call $~lib/math/NativeMathf.atan + f32.const -1.5707963705062866 + f32.const -0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + call $~lib/math/NativeMathf.atan + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 598 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 610 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 611 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 612 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 613 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 614 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.7963404371347943 + f64.const 0.21338365972042084 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 615 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.43153570730602897 + f64.const -0.4325666129589081 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 616 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.6354006111644578 + f64.const -0.06527865678071976 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 617 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 1.0306085575277995 + f64.const 0.14632052183151245 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 618 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.8268179645205255 + f64.const 0.1397128701210022 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 619 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 622 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 623 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 624 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 625 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 626 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 627 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -inf + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 628 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000152587890625 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 629 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0000152587890625 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 630 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.3552527156068805e-20 + f64.const 1.3552527156068805e-20 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 631 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.332636185032189e-302 + f64.const 9.332636185032189e-302 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 632 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.562684646268003e-309 + f64.const 5.562684646268003e-309 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 633 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5.562684646268003e-309 + f64.const -5.562684646268003e-309 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 634 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8988465674311579538646525e283 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_atanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 635 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 644 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 645 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 646 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 647 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 648 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.7963404059410095 + f32.const 0.19112196564674377 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 649 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.4315357208251953 + f32.const -0.05180925130844116 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 650 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.635400652885437 + f32.const 0.11911056190729141 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 651 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 1.0306085348129272 + f32.const 0.1798270344734192 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 652 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.8268179297447205 + f32.const 0.11588983237743378 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 653 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 656 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 657 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 658 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 659 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 660 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 661 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -inf + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 662 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000152587890625 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 663 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000152587890625 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 664 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.3552527156068805e-20 + f32.const 1.3552527156068805e-20 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 665 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.888609052210118e-31 + f32.const 7.888609052210118e-31 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 666 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.938735877055719e-39 + f32.const 2.938735877055719e-39 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 667 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.938735877055719e-39 + f32.const -2.938735877055719e-39 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 668 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1701411834604692317316873e14 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_atanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 669 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.535662560676869 + f64.const -1.0585895402489023 + f64.const 0.09766263514757156 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 681 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + f64.const 2.6868734126013067 + f64.const 0.35833948850631714 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 682 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + f64.const -1.889300091849528 + f64.const -0.46235957741737366 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 683 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + f64.const -0.9605469021111489 + f64.const -0.21524477005004883 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 684 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + f64.const 1.0919123946142109 + f64.const 0.3894443213939667 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 685 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + f64.const -1.468508500616424 + f64.const -0.448591411113739 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 686 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + f64.const 1.5641600512601268 + f64.const 0.3784842789173126 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 687 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + f64.const -0.10281658910678508 + f64.const -0.13993260264396667 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 688 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + f64.const 0.29697974004493516 + f64.const 0.44753071665763855 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 689 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + f64.const -1.5131612053303916 + f64.const 0.39708876609802246 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 690 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 693 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + f64.const 3.141592653589793 + f64.const -0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 694 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + f64.const 3.141592653589793 + f64.const -0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 695 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -inf + f64.const 3.141592653589793 + f64.const -0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 696 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + f64.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 697 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.const 0 + f64.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 698 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const -0 + f64.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 699 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const -3.141592653589793 + f64.const 0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 700 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + f64.const -3.141592653589793 + f64.const 0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 701 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -inf + f64.const -3.141592653589793 + f64.const 0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 702 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const -0 + f64.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 703 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.const -0 + f64.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 704 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 705 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 706 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 707 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -0 + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 708 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.const -0 + f64.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 709 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const 0 + f64.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 710 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -inf + f64.const -3.141592653589793 + f64.const 0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 711 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -inf + f64.const 3.141592653589793 + f64.const -0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 712 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + f64.const 1.5707963267948966 + f64.const -0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 713 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 0 + f64.const -1.5707963267948966 + f64.const 0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 714 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0.7853981633974483 + f64.const -0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 715 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -inf + f64.const 2.356194490192345 + f64.const -0.20682445168495178 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 716 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const inf + f64.const -0.7853981633974483 + f64.const 0.27576595544815063 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 717 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const -2.356194490192345 + f64.const 0.20682445168495178 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 718 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1125369292536007e-308 + f64.const 1 + f64.const 1.1125369292536007e-308 + f64.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 719 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 8988465674311579538646525e283 + f64.const 1.1125369292536007e-308 + f64.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 720 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 8988465674311579538646525e283 + f64.const 1.668805393880401e-308 + f64.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 721 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const -8988465674311579538646525e283 + f64.const 3.141592653589793 + f64.const 0 + call $std/math/test_atan2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 722 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 4.535662651062012 + call $~lib/math/NativeMathf.atan2 + f32.const -1.0585895776748657 + f32.const -0.22352588176727295 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 731 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -8.887990951538086 + call $~lib/math/NativeMathf.atan2 + f32.const 2.686873435974121 + f32.const 0.09464472532272339 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 732 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.7636072635650635 + call $~lib/math/NativeMathf.atan2 + f32.const -1.8893001079559326 + f32.const -0.21941901743412018 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 733 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 4.567535400390625 + call $~lib/math/NativeMathf.atan2 + f32.const -0.9605468511581421 + f32.const 0.46015575528144836 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 734 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 4.811392307281494 + call $~lib/math/NativeMathf.atan2 + f32.const 1.0919123888015747 + f32.const -0.05708503723144531 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 735 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.450045585632324 + f32.const 0.6620717644691467 + call $~lib/math/NativeMathf.atan2 + f32.const -1.4685084819793701 + f32.const 0.19611206650733948 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 736 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.858890056610107 + f32.const 0.052154526114463806 + call $~lib/math/NativeMathf.atan2 + f32.const 1.5641601085662842 + f32.const 0.48143187165260315 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 737 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.7920545339584351 + f32.const 7.676402568817139 + call $~lib/math/NativeMathf.atan2 + f32.const -0.10281659662723541 + f32.const -0.4216274917125702 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 738 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6157026886940002 + f32.const 2.0119025707244873 + call $~lib/math/NativeMathf.atan2 + f32.const 0.29697975516319275 + f32.const 0.2322007566690445 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 739 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5587586760520935 + f32.const 0.03223983198404312 + call $~lib/math/NativeMathf.atan2 + f32.const -1.5131611824035645 + f32.const 0.16620726883411407 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 740 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + call $~lib/math/NativeMathf.atan2 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 743 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0 + call $~lib/math/NativeMathf.atan2 + f32.const 3.1415927410125732 + f32.const 0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 744 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -1 + call $~lib/math/NativeMathf.atan2 + f32.const 3.1415927410125732 + f32.const 0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 745 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -inf + call $~lib/math/NativeMathf.atan2 + f32.const 3.1415927410125732 + f32.const 0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 746 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + call $~lib/math/NativeMathf.atan2 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 747 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + call $~lib/math/NativeMathf.atan2 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 748 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + call $~lib/math/NativeMathf.atan2 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 749 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + call $~lib/math/NativeMathf.atan2 + f32.const -3.1415927410125732 + f32.const -0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 750 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -1 + call $~lib/math/NativeMathf.atan2 + f32.const -3.1415927410125732 + f32.const -0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 751 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -inf + call $~lib/math/NativeMathf.atan2 + f32.const -3.1415927410125732 + f32.const -0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 752 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + call $~lib/math/NativeMathf.atan2 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 753 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + call $~lib/math/NativeMathf.atan2 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 754 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0 + call $~lib/math/NativeMathf.atan2 + f32.const -1.5707963705062866 + f32.const -0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 755 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0 + call $~lib/math/NativeMathf.atan2 + f32.const -1.5707963705062866 + f32.const -0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 756 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + call $~lib/math/NativeMathf.atan2 + f32.const 1.5707963705062866 + f32.const 0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 757 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -0 + call $~lib/math/NativeMathf.atan2 + f32.const 1.5707963705062866 + f32.const 0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 758 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + call $~lib/math/NativeMathf.atan2 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 759 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + call $~lib/math/NativeMathf.atan2 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 760 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -inf + call $~lib/math/NativeMathf.atan2 + f32.const -3.1415927410125732 + f32.const -0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 761 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -inf + call $~lib/math/NativeMathf.atan2 + f32.const 3.1415927410125732 + f32.const 0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 762 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + call $~lib/math/NativeMathf.atan2 + f32.const 1.5707963705062866 + f32.const 0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 763 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 0 + call $~lib/math/NativeMathf.atan2 + f32.const -1.5707963705062866 + f32.const -0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 764 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + call $~lib/math/NativeMathf.atan2 + f32.const 0.7853981852531433 + f32.const 0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 765 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -inf + call $~lib/math/NativeMathf.atan2 + f32.const 2.356194496154785 + f32.const 0.02500828728079796 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 766 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const inf + call $~lib/math/NativeMathf.atan2 + f32.const -0.7853981852531433 + f32.const -0.3666777014732361 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 767 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + call $~lib/math/NativeMathf.atan2 + f32.const -2.356194496154785 + f32.const -0.02500828728079796 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 768 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.877471754111438e-39 + f32.const 1 + call $~lib/math/NativeMathf.atan2 + f32.const 5.877471754111438e-39 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 769 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1701411834604692317316873e14 + call $~lib/math/NativeMathf.atan2 + f32.const 5.877471754111438e-39 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 770 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -2.0055552545020245 + f64.const 0.46667951345443726 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 782 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 1.6318162410515635 + f64.const -0.08160271495580673 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 783 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.031293910673361 + f64.const -0.048101816326379776 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 784 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -1.8692820012204925 + f64.const 0.08624018728733063 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 785 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 2.100457720859702 + f64.const -0.2722989022731781 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 786 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.8715311470455973 + f64.const 0.4414918124675751 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 787 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.740839030300223 + f64.const 0.016453813761472702 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 788 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.8251195400559286 + f64.const 0.30680638551712036 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 789 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.9182102478959914 + f64.const 0.06543998420238495 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 790 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.8788326906580094 + f64.const -0.2016713172197342 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 791 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 794 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 795 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 796 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 797 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 798 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.313225746154785e-10 + f64.const 0.0009765625 + f64.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 799 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9.313225746154785e-10 + f64.const -0.0009765625 + f64.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 800 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 801 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 802 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8 + f64.const 2 + f64.const 0 + call $std/math/test_cbrt + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 803 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -2.0055553913116455 + f32.const -0.44719240069389343 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 812 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 1.6318162679672241 + f32.const 0.44636252522468567 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 813 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.0312938690185547 + f32.const 0.19483426213264465 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 814 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -1.8692820072174072 + f32.const -0.17075514793395996 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 815 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 2.1004576683044434 + f32.const -0.36362043023109436 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 816 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.8715311288833618 + f32.const -0.12857209146022797 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 817 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.7408390641212463 + f32.const -0.4655757546424866 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 818 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.8251195549964905 + f32.const 0.05601907894015312 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 819 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.9182102680206299 + f32.const 0.45498204231262207 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 820 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.8788326978683472 + f32.const -0.22978967428207397 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 821 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 824 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 825 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 826 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 827 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 828 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.313225746154785e-10 + f32.const 0.0009765625 + f32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 829 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -9.313225746154785e-10 + f32.const -0.0009765625 + f32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 830 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 831 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 832 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 8 + f32.const 2 + f32.const 0 + call $std/math/test_cbrtf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 833 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8 + f64.const -8 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.ceil + f64.const -8 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 845 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5 + f64.const 5 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.ceil + f64.const 5 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 846 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8 + f64.const -8 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.ceil + f64.const -8 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 847 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6 + f64.const -6 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.ceil + f64.const -6 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 848 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10 + f64.const 10 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.ceil + f64.const 10 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 849 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 850 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 851 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 852 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 853 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 854 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.ceil + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 857 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.ceil + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 858 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.ceil + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 859 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.ceil + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 860 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 861 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 862 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.ceil + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 863 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 864 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.5 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 865 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const 2 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.0000152587890625 + call $~lib/bindings/dom/Math.ceil + f64.const 2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 866 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.0000152587890625 + call $~lib/bindings/dom/Math.ceil + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 867 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.9999923706054688 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 868 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.9999923706054688 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 869 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 7.888609052210118e-31 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 870 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 871 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.ceil + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 872 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.ceil + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 873 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.ceil + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 874 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.ceil + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 875 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 876 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 877 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.ceil + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 878 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 879 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.5 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 880 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const 2 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.0000152587890625 + call $~lib/bindings/dom/Math.ceil + f64.const 2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 881 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.0000152587890625 + call $~lib/bindings/dom/Math.ceil + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 882 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.9999923706054688 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 883 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.9999923706054688 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 884 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 7.888609052210118e-31 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 885 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 886 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.ceil + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 887 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.ceil + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 888 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.ceil + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 889 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.ceil + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 890 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 891 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 892 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.ceil + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 893 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 894 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.5 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 895 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const 2 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.0000152587890625 + call $~lib/bindings/dom/Math.ceil + f64.const 2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 896 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.0000152587890625 + call $~lib/bindings/dom/Math.ceil + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 897 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.9999923706054688 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 898 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.9999923706054688 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 899 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 7.888609052210118e-31 + call $~lib/bindings/dom/Math.ceil + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 900 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/dom/Math.ceil + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 901 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8 + f32.const -8 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 910 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5 + f32.const 5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 911 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8 + f32.const -8 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 912 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6 + f32.const -6 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 913 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 10 + f32.const 10 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 914 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 915 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 916 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 917 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 918 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 919 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 922 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 923 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 924 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 925 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 926 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 927 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 928 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 929 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 930 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const 2 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 931 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 932 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 933 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 934 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 935 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 936 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 937 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 938 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 939 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 940 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 941 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 942 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 943 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 944 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 945 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const 2 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 946 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 947 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 948 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 949 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 950 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 951 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 952 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 953 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 954 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 955 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 956 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 957 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 958 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 959 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 960 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const 2 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 961 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 962 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 963 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 964 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 965 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 966 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + call $~lib/math/NativeMath.cos + f64.const -0.21126281599887137 + f64.const -0.10962469130754471 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.cos + f64.const -0.21126281599887137 + f64.const -0.10962469130754471 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 977 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + call $~lib/math/NativeMath.cos + f64.const -0.35895602297578955 + f64.const -0.10759828239679337 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.cos + f64.const -0.35895602297578955 + f64.const -0.10759828239679337 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 978 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + call $~lib/math/NativeMath.cos + f64.const -0.503333091765516 + f64.const -0.021430473774671555 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.cos + f64.const -0.503333091765516 + f64.const -0.021430473774671555 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 979 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + call $~lib/math/NativeMath.cos + f64.const 0.9692853212503283 + f64.const -0.4787876307964325 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.cos + f64.const 0.9692853212503283 + f64.const -0.4787876307964325 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 980 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + call $~lib/math/NativeMath.cos + f64.const -0.9875878064788627 + f64.const 0.4880668818950653 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.cos + f64.const -0.9875878064788627 + f64.const 0.4880668818950653 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 981 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + call $~lib/math/NativeMath.cos + f64.const 0.7887730869248576 + f64.const 0.12708666920661926 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.cos + f64.const 0.7887730869248576 + f64.const 0.12708666920661926 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 982 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + call $~lib/math/NativeMath.cos + f64.const 0.9184692397007294 + f64.const -0.26120713353157043 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.cos + f64.const 0.9184692397007294 + f64.const -0.26120713353157043 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 983 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + call $~lib/math/NativeMath.cos + f64.const 0.8463190467415896 + f64.const -0.302586168050766 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.cos + f64.const 0.8463190467415896 + f64.const -0.302586168050766 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 984 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + call $~lib/math/NativeMath.cos + f64.const 0.7150139289952383 + f64.const -0.08537746220827103 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.cos + f64.const 0.7150139289952383 + f64.const -0.08537746220827103 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 985 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + call $~lib/math/NativeMath.cos + f64.const 0.7783494994757447 + f64.const 0.30890750885009766 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.cos + f64.const 0.7783494994757447 + f64.const 0.30890750885009766 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 986 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 989 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 990 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/math/NativeMath.cos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.cos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 991 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/math/NativeMath.cos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.cos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 992 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.cos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.cos + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 993 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/math/NativeMath.cos + f64.const 0.5403023058681398 + f64.const 0.4288286566734314 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.cos + f64.const 0.5403023058681398 + f64.const 0.4288286566734314 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 994 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + call $~lib/math/NativeMath.cos + f64.const -0.4161468365471424 + f64.const -0.35859397053718567 + call $std/math/check + if (result i32) + f64.const 2 + call $~lib/bindings/dom/Math.cos + f64.const -0.4161468365471424 + f64.const -0.35859397053718567 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 995 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3 + call $~lib/math/NativeMath.cos + f64.const -0.9899924966004454 + f64.const 0.3788451552391052 + call $std/math/check + if (result i32) + f64.const 3 + call $~lib/bindings/dom/Math.cos + f64.const -0.9899924966004454 + f64.const 0.3788451552391052 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 996 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4 + call $~lib/math/NativeMath.cos + f64.const -0.6536436208636119 + f64.const -0.23280560970306396 + call $std/math/check + if (result i32) + f64.const 4 + call $~lib/bindings/dom/Math.cos + f64.const -0.6536436208636119 + f64.const -0.23280560970306396 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 997 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5 + call $~lib/math/NativeMath.cos + f64.const 0.28366218546322625 + f64.const -0.3277357816696167 + call $std/math/check + if (result i32) + f64.const 5 + call $~lib/bindings/dom/Math.cos + f64.const 0.28366218546322625 + f64.const -0.3277357816696167 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 998 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.1 + call $~lib/math/NativeMath.cos + f64.const 0.9950041652780258 + f64.const 0.49558526277542114 + call $std/math/check + if (result i32) + f64.const 0.1 + call $~lib/bindings/dom/Math.cos + f64.const 0.9950041652780258 + f64.const 0.49558526277542114 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 999 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.2 + call $~lib/math/NativeMath.cos + f64.const 0.9800665778412416 + f64.const -0.02407640963792801 + call $std/math/check + if (result i32) + f64.const 0.2 + call $~lib/bindings/dom/Math.cos + f64.const 0.9800665778412416 + f64.const -0.02407640963792801 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1000 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.3 + call $~lib/math/NativeMath.cos + f64.const 0.955336489125606 + f64.const -0.37772229313850403 + call $std/math/check + if (result i32) + f64.const 0.3 + call $~lib/bindings/dom/Math.cos + f64.const 0.955336489125606 + f64.const -0.37772229313850403 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1001 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.4 + call $~lib/math/NativeMath.cos + f64.const 0.9210609940028851 + f64.const 0.25818485021591187 + call $std/math/check + if (result i32) + f64.const 0.4 + call $~lib/bindings/dom/Math.cos + f64.const 0.9210609940028851 + f64.const 0.25818485021591187 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1002 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + call $~lib/math/NativeMath.cos + f64.const 0.8775825618903728 + f64.const 0.3839152157306671 + call $std/math/check + if (result i32) + f64.const 0.5 + call $~lib/bindings/dom/Math.cos + f64.const 0.8775825618903728 + f64.const 0.3839152157306671 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1003 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3641409746639015e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.3641409746639015e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1004 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1820704873319507e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.1820704873319507e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1005 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 5e-324 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1006 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5e-324 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -5e-324 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1007 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3.14 + call $~lib/math/NativeMath.cos + f64.const -0.9999987317275395 + f64.const 0.3855516016483307 + call $std/math/check + if (result i32) + f64.const -3.14 + call $~lib/bindings/dom/Math.cos + f64.const -0.9999987317275395 + f64.const 0.3855516016483307 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1008 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8988465674311579538646525e283 + call $~lib/math/NativeMath.cos + f64.const -0.826369834614148 + f64.const -0.3695965111255646 + call $std/math/check + if (result i32) + f64.const 8988465674311579538646525e283 + call $~lib/bindings/dom/Math.cos + f64.const -0.826369834614148 + f64.const -0.3695965111255646 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1009 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + call $~lib/math/NativeMath.cos + f64.const -0.9999876894265599 + f64.const 0.23448343575000763 + call $std/math/check + if (result i32) + f64.const 1797693134862315708145274e284 + call $~lib/bindings/dom/Math.cos + f64.const -0.9999876894265599 + f64.const 0.23448343575000763 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1010 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8988465674311579538646525e283 + call $~lib/math/NativeMath.cos + f64.const -0.826369834614148 + f64.const -0.3695965111255646 + call $std/math/check + if (result i32) + f64.const -8988465674311579538646525e283 + call $~lib/bindings/dom/Math.cos + f64.const -0.826369834614148 + f64.const -0.3695965111255646 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1011 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.14 + call $~lib/math/NativeMath.cos + f64.const -0.9999987317275395 + f64.const 0.3855516016483307 + call $std/math/check + if (result i32) + f64.const 3.14 + call $~lib/bindings/dom/Math.cos + f64.const -0.9999987317275395 + f64.const 0.3855516016483307 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1012 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.1415 + call $~lib/math/NativeMath.cos + f64.const -0.9999999957076562 + f64.const -0.30608975887298584 + call $std/math/check + if (result i32) + f64.const 3.1415 + call $~lib/bindings/dom/Math.cos + f64.const -0.9999999957076562 + f64.const -0.30608975887298584 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1013 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.141592 + call $~lib/math/NativeMath.cos + f64.const -0.9999999999997864 + f64.const 0.15403328835964203 + call $std/math/check + if (result i32) + f64.const 3.141592 + call $~lib/bindings/dom/Math.cos + f64.const -0.9999999999997864 + f64.const 0.15403328835964203 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1014 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.14159265 + call $~lib/math/NativeMath.cos + f64.const -1 + f64.const -0.02901807427406311 + call $std/math/check + if (result i32) + f64.const 3.14159265 + call $~lib/bindings/dom/Math.cos + f64.const -1 + f64.const -0.02901807427406311 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1015 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.1415926535 + call $~lib/math/NativeMath.cos + f64.const -1 + f64.const -1.8155848010792397e-05 + call $std/math/check + if (result i32) + f64.const 3.1415926535 + call $~lib/bindings/dom/Math.cos + f64.const -1 + f64.const -1.8155848010792397e-05 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1016 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.141592653589 + call $~lib/math/NativeMath.cos + f64.const -1 + f64.const -1.4169914130945926e-09 + call $std/math/check + if (result i32) + f64.const 3.141592653589 + call $~lib/bindings/dom/Math.cos + f64.const -1 + f64.const -1.4169914130945926e-09 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1017 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.14159265358979 + call $~lib/math/NativeMath.cos + f64.const -1 + f64.const -2.350864897985184e-14 + call $std/math/check + if (result i32) + f64.const 3.14159265358979 + call $~lib/bindings/dom/Math.cos + f64.const -1 + f64.const -2.350864897985184e-14 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1018 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.141592653589793 + call $~lib/math/NativeMath.cos + f64.const -1 + f64.const -3.377158741883318e-17 + call $std/math/check + if (result i32) + f64.const 3.141592653589793 + call $~lib/bindings/dom/Math.cos + f64.const -1 + f64.const -3.377158741883318e-17 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1019 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.57 + call $~lib/math/NativeMath.cos + f64.const 7.963267107332633e-04 + f64.const 0.2968159317970276 + call $std/math/check + if (result i32) + f64.const 1.57 + call $~lib/bindings/dom/Math.cos + f64.const 7.963267107332633e-04 + f64.const 0.2968159317970276 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1020 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.570796 + call $~lib/math/NativeMath.cos + f64.const 3.2679489653813835e-07 + f64.const -0.32570895552635193 + call $std/math/check + if (result i32) + f64.const 1.570796 + call $~lib/bindings/dom/Math.cos + f64.const 3.2679489653813835e-07 + f64.const -0.32570895552635193 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1021 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5707963267 + call $~lib/math/NativeMath.cos + f64.const 9.489659630678013e-11 + f64.const -0.27245646715164185 + call $std/math/check + if (result i32) + f64.const 1.5707963267 + call $~lib/bindings/dom/Math.cos + f64.const 9.489659630678013e-11 + f64.const -0.27245646715164185 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1022 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.57079632679489 + call $~lib/math/NativeMath.cos + f64.const 6.722570487708307e-15 + f64.const -0.10747683793306351 + call $std/math/check + if (result i32) + f64.const 1.57079632679489 + call $~lib/bindings/dom/Math.cos + f64.const 6.722570487708307e-15 + f64.const -0.10747683793306351 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1023 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5707963267948966 + call $~lib/math/NativeMath.cos + f64.const 6.123233995736766e-17 + f64.const 0.12148229777812958 + call $std/math/check + if (result i32) + f64.const 1.5707963267948966 + call $~lib/bindings/dom/Math.cos + f64.const 6.123233995736766e-17 + f64.const 0.12148229777812958 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1024 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6700635199486106 + call $~lib/math/NativeMath.cos + f64.const 0.7837822193016158 + f64.const -0.07278502732515335 + call $std/math/check + if (result i32) + f64.const 0.6700635199486106 + call $~lib/bindings/dom/Math.cos + f64.const 0.7837822193016158 + f64.const -0.07278502732515335 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1025 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5343890189437553 + call $~lib/math/NativeMath.cos + f64.const 0.8605799719039517 + f64.const -0.48434028029441833 + call $std/math/check + if (result i32) + f64.const 0.5343890189437553 + call $~lib/bindings/dom/Math.cos + f64.const 0.8605799719039517 + f64.const -0.48434028029441833 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1026 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.43999702754890085 + call $~lib/math/NativeMath.cos + f64.const 0.9047529293001976 + f64.const 0.029777472838759422 + call $std/math/check + if (result i32) + f64.const 0.43999702754890085 + call $~lib/bindings/dom/Math.cos + f64.const 0.9047529293001976 + f64.const 0.029777472838759422 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1027 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9902840844687313 + call $~lib/math/NativeMath.cos + f64.const 0.5484523364480768 + f64.const 0.19765280187129974 + call $std/math/check + if (result i32) + f64.const 0.9902840844687313 + call $~lib/bindings/dom/Math.cos + f64.const 0.5484523364480768 + f64.const 0.19765280187129974 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1028 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.45381447534338915 + call $~lib/math/NativeMath.cos + f64.const 0.8987813902263783 + f64.const -0.017724866047501564 + call $std/math/check + if (result i32) + f64.const 0.45381447534338915 + call $~lib/bindings/dom/Math.cos + f64.const 0.8987813902263783 + f64.const -0.017724866047501564 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1029 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.4609888813583589 + call $~lib/math/NativeMath.cos + f64.const 0.8956130474713057 + f64.const 0.36449819803237915 + call $std/math/check + if (result i32) + f64.const 0.4609888813583589 + call $~lib/bindings/dom/Math.cos + f64.const 0.8956130474713057 + f64.const 0.36449819803237915 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1030 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9285434097956422 + call $~lib/math/NativeMath.cos + f64.const 0.5990009794292984 + f64.const -0.2899416387081146 + call $std/math/check + if (result i32) + f64.const 0.9285434097956422 + call $~lib/bindings/dom/Math.cos + f64.const 0.5990009794292984 + f64.const -0.2899416387081146 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1031 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9109092124488352 + call $~lib/math/NativeMath.cos + f64.const 0.6130276692774378 + f64.const -0.49353134632110596 + call $std/math/check + if (result i32) + f64.const 0.9109092124488352 + call $~lib/bindings/dom/Math.cos + f64.const 0.6130276692774378 + f64.const -0.49353134632110596 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1032 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.8328600650359556 + call $~lib/math/NativeMath.cos + f64.const 0.6727624710046357 + f64.const -0.36606088280677795 + call $std/math/check + if (result i32) + f64.const 0.8328600650359556 + call $~lib/bindings/dom/Math.cos + f64.const 0.6727624710046357 + f64.const -0.36606088280677795 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1033 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9536201252203433 + call $~lib/math/NativeMath.cos + f64.const 0.5787346183487084 + f64.const -0.17089833319187164 + call $std/math/check + if (result i32) + f64.const 0.9536201252203433 + call $~lib/bindings/dom/Math.cos + f64.const 0.5787346183487084 + f64.const -0.17089833319187164 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1034 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.8726590065457699 + call $~lib/math/NativeMath.cos + f64.const 0.6427919144259047 + f64.const -0.2744986116886139 + call $std/math/check + if (result i32) + f64.const 0.8726590065457699 + call $~lib/bindings/dom/Math.cos + f64.const 0.6427919144259047 + f64.const -0.2744986116886139 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1035 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.18100447535968447 + call $~lib/math/NativeMath.cos + f64.const 0.9836633656884893 + f64.const 3.0195272993296385e-03 + call $std/math/check + if (result i32) + f64.const 0.18100447535968447 + call $~lib/bindings/dom/Math.cos + f64.const 0.9836633656884893 + f64.const 3.0195272993296385e-03 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1036 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.356194490349839 + call $~lib/math/NativeMath.cos + f64.const -0.7071067812979126 + f64.const -0.48278746008872986 + call $std/math/check + if (result i32) + f64.const 2.356194490349839 + call $~lib/bindings/dom/Math.cos + f64.const -0.7071067812979126 + f64.const -0.48278746008872986 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1037 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.356194490372272 + call $~lib/math/NativeMath.cos + f64.const -0.7071067813137752 + f64.const -0.4866050183773041 + call $std/math/check + if (result i32) + f64.const 2.356194490372272 + call $~lib/bindings/dom/Math.cos + f64.const -0.7071067813137752 + f64.const -0.4866050183773041 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1038 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3561944902251115 + call $~lib/math/NativeMath.cos + f64.const -0.707106781209717 + f64.const -0.3533952236175537 + call $std/math/check + if (result i32) + f64.const 2.3561944902251115 + call $~lib/bindings/dom/Math.cos + f64.const -0.707106781209717 + f64.const -0.3533952236175537 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1039 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3561944903149996 + call $~lib/math/NativeMath.cos + f64.const -0.7071067812732775 + f64.const -0.41911986470222473 + call $std/math/check + if (result i32) + f64.const 2.3561944903149996 + call $~lib/bindings/dom/Math.cos + f64.const -0.7071067812732775 + f64.const -0.41911986470222473 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1040 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3561944903603527 + call $~lib/math/NativeMath.cos + f64.const -0.707106781305347 + f64.const -0.4706200063228607 + call $std/math/check + if (result i32) + f64.const 2.3561944903603527 + call $~lib/bindings/dom/Math.cos + f64.const -0.707106781305347 + f64.const -0.4706200063228607 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1041 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3561944903826197 + call $~lib/math/NativeMath.cos + f64.const -0.7071067813210922 + f64.const -0.30618351697921753 + call $std/math/check + if (result i32) + f64.const 2.3561944903826197 + call $~lib/bindings/dom/Math.cos + f64.const -0.7071067813210922 + f64.const -0.30618351697921753 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1042 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.356194490371803 + call $~lib/math/NativeMath.cos + f64.const -0.7071067813134436 + f64.const -0.30564820766448975 + call $std/math/check + if (result i32) + f64.const 2.356194490371803 + call $~lib/bindings/dom/Math.cos + f64.const -0.7071067813134436 + f64.const -0.30564820766448975 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1043 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.356194490399931 + call $~lib/math/NativeMath.cos + f64.const -0.7071067813333329 + f64.const -0.38845571875572205 + call $std/math/check + if (result i32) + f64.const 2.356194490399931 + call $~lib/bindings/dom/Math.cos + f64.const -0.7071067813333329 + f64.const -0.38845571875572205 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1044 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.356194490260191 + call $~lib/math/NativeMath.cos + f64.const -0.707106781234522 + f64.const -0.23796851933002472 + call $std/math/check + if (result i32) + f64.const 2.356194490260191 + call $~lib/bindings/dom/Math.cos + f64.const -0.707106781234522 + f64.const -0.23796851933002472 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1045 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3561944904043153 + call $~lib/math/NativeMath.cos + f64.const -0.7071067813364332 + f64.const -0.3274589478969574 + call $std/math/check + if (result i32) + f64.const 2.3561944904043153 + call $~lib/bindings/dom/Math.cos + f64.const -0.7071067813364332 + f64.const -0.3274589478969574 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1046 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0943951024759446 + call $~lib/math/NativeMath.cos + f64.const -0.5000000000716629 + f64.const -0.41711342334747314 + call $std/math/check + if (result i32) + f64.const 2.0943951024759446 + call $~lib/bindings/dom/Math.cos + f64.const -0.5000000000716629 + f64.const -0.41711342334747314 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1047 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.09439510243324 + call $~lib/math/NativeMath.cos + f64.const -0.5000000000346797 + f64.const -0.3566164970397949 + call $std/math/check + if (result i32) + f64.const 2.09439510243324 + call $~lib/bindings/dom/Math.cos + f64.const -0.5000000000346797 + f64.const -0.3566164970397949 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1048 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0943951025133885 + call $~lib/math/NativeMath.cos + f64.const -0.5000000001040902 + f64.const -0.2253485918045044 + call $std/math/check + if (result i32) + f64.const 2.0943951025133885 + call $~lib/bindings/dom/Math.cos + f64.const -0.5000000001040902 + f64.const -0.2253485918045044 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1049 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0943951025466707 + call $~lib/math/NativeMath.cos + f64.const -0.5000000001329135 + f64.const -0.12982259690761566 + call $std/math/check + if (result i32) + f64.const 2.0943951025466707 + call $~lib/bindings/dom/Math.cos + f64.const -0.5000000001329135 + f64.const -0.12982259690761566 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1050 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.094395102413896 + call $~lib/math/NativeMath.cos + f64.const -0.5000000000179272 + f64.const -0.15886764228343964 + call $std/math/check + if (result i32) + f64.const 2.094395102413896 + call $~lib/bindings/dom/Math.cos + f64.const -0.5000000000179272 + f64.const -0.15886764228343964 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1051 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0943951024223404 + call $~lib/math/NativeMath.cos + f64.const -0.5000000000252403 + f64.const -0.266656756401062 + call $std/math/check + if (result i32) + f64.const 2.0943951024223404 + call $~lib/bindings/dom/Math.cos + f64.const -0.5000000000252403 + f64.const -0.266656756401062 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1052 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0943951024960477 + call $~lib/math/NativeMath.cos + f64.const -0.5000000000890726 + f64.const -0.4652077853679657 + call $std/math/check + if (result i32) + f64.const 2.0943951024960477 + call $~lib/bindings/dom/Math.cos + f64.const -0.5000000000890726 + f64.const -0.4652077853679657 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1053 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0943951025173315 + call $~lib/math/NativeMath.cos + f64.const -0.500000000107505 + f64.const -0.46710994839668274 + call $std/math/check + if (result i32) + f64.const 2.0943951025173315 + call $~lib/bindings/dom/Math.cos + f64.const -0.500000000107505 + f64.const -0.46710994839668274 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1054 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.094395102405924 + call $~lib/math/NativeMath.cos + f64.const -0.5000000000110234 + f64.const -0.2469603717327118 + call $std/math/check + if (result i32) + f64.const 2.094395102405924 + call $~lib/bindings/dom/Math.cos + f64.const -0.5000000000110234 + f64.const -0.2469603717327118 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1055 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.094395102428558 + call $~lib/math/NativeMath.cos + f64.const -0.500000000030625 + f64.const -0.3799441158771515 + call $std/math/check + if (result i32) + f64.const 2.094395102428558 + call $~lib/bindings/dom/Math.cos + f64.const -0.500000000030625 + f64.const -0.3799441158771515 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1056 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.513210770864056 + call $~lib/math/NativeMath.cos + f64.const -0.6125076939987759 + f64.const 0.4989966154098511 + call $std/math/check + if (result i32) + f64.const 8.513210770864056 + call $~lib/bindings/dom/Math.cos + f64.const -0.6125076939987759 + f64.const 0.4989966154098511 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1057 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 6.802886129801017 + call $~lib/math/NativeMath.cos + f64.const 0.8679677961345452 + f64.const 0.4972165524959564 + call $std/math/check + if (result i32) + f64.const 6.802886129801017 + call $~lib/bindings/dom/Math.cos + f64.const 0.8679677961345452 + f64.const 0.4972165524959564 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1058 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.171925393086408 + call $~lib/math/NativeMath.cos + f64.const -0.9682027440424544 + f64.const -0.49827584624290466 + call $std/math/check + if (result i32) + f64.const 9.171925393086408 + call $~lib/bindings/dom/Math.cos + f64.const -0.9682027440424544 + f64.const -0.49827584624290466 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1059 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.854690112888573 + call $~lib/math/NativeMath.cos + f64.const -0.8418535663818527 + f64.const 0.4974979758262634 + call $std/math/check + if (result i32) + f64.const 8.854690112888573 + call $~lib/bindings/dom/Math.cos + f64.const -0.8418535663818527 + f64.const 0.4974979758262634 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1060 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.213510813859608 + call $~lib/math/NativeMath.cos + f64.const -0.9777659802838506 + f64.const -0.4995604455471039 + call $std/math/check + if (result i32) + f64.const 9.213510813859608 + call $~lib/bindings/dom/Math.cos + f64.const -0.9777659802838506 + f64.const -0.4995604455471039 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1061 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.782449081542151 + call $~lib/math/NativeMath.cos + f64.const 0.07147156381293339 + f64.const 0.49858126044273376 + call $std/math/check + if (result i32) + f64.const 7.782449081542151 + call $~lib/bindings/dom/Math.cos + f64.const 0.07147156381293339 + f64.const 0.49858126044273376 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1062 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.500261332273616 + call $~lib/math/NativeMath.cos + f64.const 0.34639017633458113 + f64.const -0.4996210038661957 + call $std/math/check + if (result i32) + f64.const 7.500261332273616 + call $~lib/bindings/dom/Math.cos + f64.const 0.34639017633458113 + f64.const -0.4996210038661957 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1063 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.121739418731588 + call $~lib/math/NativeMath.cos + f64.const -0.9544341297541811 + f64.const 0.4982815086841583 + call $std/math/check + if (result i32) + f64.const 9.121739418731588 + call $~lib/bindings/dom/Math.cos + f64.const -0.9544341297541811 + f64.const 0.4982815086841583 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1064 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 6.784954020476316 + call $~lib/math/NativeMath.cos + f64.const 0.8767332233166646 + f64.const -0.4988083839416504 + call $std/math/check + if (result i32) + f64.const 6.784954020476316 + call $~lib/bindings/dom/Math.cos + f64.const 0.8767332233166646 + f64.const -0.4988083839416504 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1065 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.770846542666664 + call $~lib/math/NativeMath.cos + f64.const -0.7936984117400705 + f64.const 0.4999682903289795 + call $std/math/check + if (result i32) + f64.const 8.770846542666664 + call $~lib/bindings/dom/Math.cos + f64.const -0.7936984117400705 + f64.const 0.4999682903289795 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1066 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.313225746154785e-10 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0.001953125 + call $std/math/check + if (result i32) + f64.const 9.313225746154785e-10 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0.001953125 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1069 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9.313225746154785e-10 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0.001953125 + call $std/math/check + if (result i32) + f64.const -9.313225746154785e-10 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0.001953125 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1070 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.2250738585072014e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1071 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072014e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.2250738585072014e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1072 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 5e-324 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1073 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5e-324 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -5e-324 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1074 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1075 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1076 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-323 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1e-323 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1077 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.4e-323 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.4e-323 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1078 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.562684646268003e-309 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 5.562684646268003e-309 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1079 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1125369292536007e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.1125369292536007e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1080 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072004e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.2250738585072004e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1081 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507201e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.225073858507201e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1082 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507202e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.225073858507202e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1083 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072024e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.2250738585072024e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1084 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.4501477170144003e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.4501477170144003e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1085 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.450147717014403e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.450147717014403e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1086 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.450147717014406e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.450147717014406e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1087 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.900295434028806e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 8.900295434028806e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1088 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.450580596923828e-09 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0.125 + call $std/math/check + if (result i32) + f64.const 7.450580596923828e-09 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0.125 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1089 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4901161193847656e-08 + call $~lib/math/NativeMath.cos + f64.const 0.9999999999999999 + f64.const -1.850372590034581e-17 + call $std/math/check + if (result i32) + f64.const 1.4901161193847656e-08 + call $~lib/bindings/dom/Math.cos + f64.const 0.9999999999999999 + f64.const -1.850372590034581e-17 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1090 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.470348358154297e-08 + call $~lib/math/NativeMath.cos + f64.const 0.999999999999999 + f64.const -1.4988010832439613e-15 + call $std/math/check + if (result i32) + f64.const 4.470348358154297e-08 + call $~lib/bindings/dom/Math.cos + f64.const 0.999999999999999 + f64.const -1.4988010832439613e-15 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1091 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-323 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1e-323 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1092 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.4e-323 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -4.4e-323 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1093 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5.562684646268003e-309 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -5.562684646268003e-309 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1094 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.1125369292536007e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.1125369292536007e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1095 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072004e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.2250738585072004e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1096 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507201e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.225073858507201e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1097 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507202e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.225073858507202e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1098 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072024e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.2250738585072024e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1099 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.4501477170144003e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -4.4501477170144003e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.450147717014403e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -4.450147717014403e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.450147717014406e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -4.450147717014406e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.900295434028806e-308 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.900295434028806e-308 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1103 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.450580596923828e-09 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.const 0.125 + call $std/math/check + if (result i32) + f64.const -7.450580596923828e-09 + call $~lib/bindings/dom/Math.cos + f64.const 1 + f64.const 0.125 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1104 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.4901161193847656e-08 + call $~lib/math/NativeMath.cos + f64.const 0.9999999999999999 + f64.const -1.850372590034581e-17 + call $std/math/check + if (result i32) + f64.const -1.4901161193847656e-08 + call $~lib/bindings/dom/Math.cos + f64.const 0.9999999999999999 + f64.const -1.850372590034581e-17 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.470348358154297e-08 + call $~lib/math/NativeMath.cos + f64.const 0.999999999999999 + f64.const -1.4988010832439613e-15 + call $std/math/check + if (result i32) + f64.const -4.470348358154297e-08 + call $~lib/bindings/dom/Math.cos + f64.const 0.999999999999999 + f64.const -1.4988010832439613e-15 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5707963267948966 + call $~lib/math/NativeMath.cos + f64.const 1.5707963267948966 + call $~lib/bindings/dom/Math.cos + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.141592653589793 + call $~lib/math/NativeMath.cos + f64.const 3.141592653589793 + call $~lib/bindings/dom/Math.cos + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3141592653589793231804887e66 + call $~lib/math/NativeMath.cos + f64.const 3141592653589793231804887e66 + call $~lib/bindings/dom/Math.cos + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3283064365386963e-10 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.3283064365386963e-10 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.15707963267948966 + call $~lib/math/NativeMath.cos + f64.const 0.9876883405951378 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1118 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7812504768371582 + call $~lib/math/NativeMath.cos + f64.const 0.7100335477927638 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.78125 + call $~lib/math/NativeMath.cos + f64.const 0.7100338835660797 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.39269908169872414 + call $~lib/math/NativeMath.cos + f64.const 0.9238795325112867 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.39269908169872414 + call $~lib/math/NativeMath.cos + f64.const 0.9238795325112867 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.725290298461914e-09 + call $~lib/math/NativeMath.cos + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.25 + call $~lib/math/NativeMath.cos + f64.const 0.9689124217106447 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + call $~lib/math/NativeMath.cos + f64.const 0.8775825618903728 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1132 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.785 + call $~lib/math/NativeMath.cos + f64.const 0.7073882691671998 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1133 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5707963267948966 + call $~lib/math/NativeMath.cos + f64.const 6.123233995736766e-17 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1135 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.497787143782138 + call $~lib/math/NativeMath.cos + f64.const 0.7071067811865474 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.0685834705770345 + call $~lib/math/NativeMath.cos + f64.const 0.7071067811865477 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1138 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.63937979737193 + call $~lib/math/NativeMath.cos + f64.const -0.7071067811865467 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1139 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10.210176124166829 + call $~lib/math/NativeMath.cos + f64.const -0.7071067811865471 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e6 + call $~lib/math/NativeMath.cos + f64.const 0.9367521275331447 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1141 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1647097.7583689587 + call $~lib/math/NativeMath.cos + f64.const -3.435757038074824e-12 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 1142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + call $~lib/math/NativeMathf.cos + f32.const -0.21126316487789154 + f32.const 0.48328569531440735 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + call $~lib/math/NativeMathf.cos + f32.const -0.3589562177658081 + f32.const 0.042505208402872086 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + call $~lib/math/NativeMathf.cos + f32.const -0.5033331513404846 + f32.const -0.1386195719242096 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + call $~lib/math/NativeMathf.cos + f32.const 0.9692853689193726 + f32.const 0.1786951720714569 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + call $~lib/math/NativeMathf.cos + f32.const -0.9875878691673279 + f32.const 0.1389600932598114 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + call $~lib/math/NativeMathf.cos + f32.const 0.7887731194496155 + f32.const 0.2989593744277954 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + call $~lib/math/NativeMathf.cos + f32.const 0.918469250202179 + f32.const 0.24250665307044983 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + call $~lib/math/NativeMathf.cos + f32.const 0.8463190197944641 + f32.const -0.24033240973949432 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + call $~lib/math/NativeMathf.cos + f32.const 0.7150139212608337 + f32.const -0.3372635245323181 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1159 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + call $~lib/math/NativeMathf.cos + f32.const 0.7783495187759399 + f32.const 0.16550153493881226 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1160 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1164 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + call $~lib/math/NativeMathf.cos + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1165 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + call $~lib/math/NativeMathf.cos + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + call $~lib/math/NativeMathf.cos + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1167 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.862645149230957e-09 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 1.4551915228366852e-11 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1170 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.862645149230957e-09 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 1.4551915228366852e-11 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1171 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754943508222875e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1172 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754943508222875e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1173 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1174 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.401298464324817e-45 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.802596928649634e-45 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1176 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.2611686178923354e-44 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.938735877055719e-39 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1178 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.877471754111438e-39 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1179 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754940705625946e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1180 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754942106924411e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.175494490952134e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1182 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754946310819804e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3509880009953429e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1184 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.350988701644575e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1185 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3509895424236536e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1186 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.70197740328915e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.450580596923828e-09 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 2.3283064365386963e-10 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1188 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.000244140625 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0.25 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1189 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.00048828125 + call $~lib/math/NativeMathf.cos + f32.const 0.9999998807907104 + f32.const -3.973643103449831e-08 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1190 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.0009765625 + call $~lib/math/NativeMathf.cos + f32.const 0.9999995231628418 + f32.const -6.357828397085541e-07 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1191 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.802596928649634e-45 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1192 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.2611686178923354e-44 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.938735877055719e-39 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1194 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -5.877471754111438e-39 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1195 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754940705625946e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1196 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754942106924411e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1197 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.175494490952134e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1198 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754946310819804e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.3509880009953429e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.350988701644575e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1201 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.3509895424236536e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1202 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -4.70197740328915e-38 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1203 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.450580596923828e-09 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 2.3283064365386963e-10 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1204 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.000244140625 + call $~lib/math/NativeMathf.cos + f32.const 1 + f32.const 0.25 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1205 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.00048828125 + call $~lib/math/NativeMathf.cos + f32.const 0.9999998807907104 + f32.const -3.973643103449831e-08 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1206 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.0009765625 + call $~lib/math/NativeMathf.cos + f32.const 0.9999995231628418 + f32.const -6.357828397085541e-07 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1207 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 255.99993896484375 + call $~lib/math/NativeMathf.cos + f32.const -0.03985174745321274 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1210 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5033165 + call $~lib/math/NativeMathf.cos + f32.const 0.8471871614456177 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1211 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 421657440 + call $~lib/math/NativeMathf.cos + f32.const 0.6728929281234741 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1212 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2147483392 + call $~lib/math/NativeMathf.cos + f32.const 0.9610780477523804 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1213 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 68719476736 + call $~lib/math/NativeMathf.cos + f32.const 0.1694190502166748 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1214 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 549755813888 + call $~lib/math/NativeMathf.cos + f32.const 0.20735950767993927 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1215 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3402823466385288598117041e14 + call $~lib/math/NativeMathf.cos + f32.const 0.8530210256576538 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -255.99993896484375 + call $~lib/math/NativeMathf.cos + f32.const -0.03985174745321274 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1217 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -5033165 + call $~lib/math/NativeMathf.cos + f32.const 0.8471871614456177 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1218 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -421657440 + call $~lib/math/NativeMathf.cos + f32.const 0.6728929281234741 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2147483392 + call $~lib/math/NativeMathf.cos + f32.const 0.9610780477523804 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1220 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -68719476736 + call $~lib/math/NativeMathf.cos + f32.const 0.1694190502166748 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1221 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -549755813888 + call $~lib/math/NativeMathf.cos + f32.const 0.20735950767993927 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1222 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3402823466385288598117041e14 + call $~lib/math/NativeMathf.cos + f32.const 0.8530210256576538 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1223 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 1593.5209938862329 + f64.const -0.38098856806755066 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1234 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 38.56174928426729 + f64.const -0.2712278366088867 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1235 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const 2182.630979595893 + f64.const 0.0817827582359314 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1236 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 343.273849250879 + f64.const -0.429940402507782 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 5291.779170005587 + f64.const -0.1592995822429657 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1238 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 1.2272321957342842 + f64.const 0.23280741274356842 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1239 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const 1.083808541871197 + f64.const -0.3960916996002197 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1240 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 1.1619803583175077 + f64.const 0.37748390436172485 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1241 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 1.3149236876276706 + f64.const 0.43587008118629456 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1242 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const 1.2393413245934533 + f64.const 0.10201606154441833 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1243 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1246 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const 0 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1247 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1248 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const inf + f64.const 0 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1249 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_cosh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1250 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 1593.5216064453125 + f32.const 0.26242581009864807 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1259 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 38.56174087524414 + f32.const -0.08168885856866837 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1260 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const 2182.631103515625 + f32.const -0.02331414446234703 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1261 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 343.2738037109375 + f32.const 0.20081493258476257 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1262 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 5291.78173828125 + f32.const 0.36286723613739014 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1263 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 1.2272322177886963 + f32.const 0.32777416706085205 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1264 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const 1.0838085412979126 + f32.const -0.039848703891038895 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1265 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 1.161980390548706 + f32.const 0.15274477005004883 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1266 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 1.314923644065857 + f32.const -0.2387111485004425 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1267 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const 1.2393412590026855 + f32.const -0.45791932940483093 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1268 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + f32.const 0 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1271 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + f32.const 0 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1272 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1273 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const inf + f32.const 0 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1274 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_coshf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1275 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + call $~lib/math/NativeMath.exp + f64.const 3.137706068161745e-04 + f64.const -0.2599197328090668 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.exp + f64.const 3.137706068161745e-04 + f64.const -0.2599197328090668 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1287 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + call $~lib/math/NativeMath.exp + f64.const 77.11053017112141 + f64.const -0.02792675793170929 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.exp + f64.const 77.11053017112141 + f64.const -0.02792675793170929 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + call $~lib/math/NativeMath.exp + f64.const 2.290813384916323e-04 + f64.const -0.24974334239959717 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.exp + f64.const 2.290813384916323e-04 + f64.const -0.24974334239959717 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1289 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + call $~lib/math/NativeMath.exp + f64.const 1.4565661260931588e-03 + f64.const -0.4816822409629822 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.exp + f64.const 1.4565661260931588e-03 + f64.const -0.4816822409629822 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1290 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + call $~lib/math/NativeMath.exp + f64.const 10583.558245524993 + f64.const 0.17696762084960938 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.exp + f64.const 10583.558245524993 + f64.const 0.17696762084960938 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1291 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + call $~lib/math/NativeMath.exp + f64.const 1.9386384525571998 + f64.const -0.4964246451854706 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.exp + f64.const 1.9386384525571998 + f64.const -0.4964246451854706 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1292 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + call $~lib/math/NativeMath.exp + f64.const 0.6659078892838025 + f64.const -0.10608318448066711 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.exp + f64.const 0.6659078892838025 + f64.const -0.10608318448066711 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1293 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + call $~lib/math/NativeMath.exp + f64.const 1.7537559518626311 + f64.const -0.39162111282348633 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.exp + f64.const 1.7537559518626311 + f64.const -0.39162111282348633 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1294 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + call $~lib/math/NativeMath.exp + f64.const 2.1687528885129246 + f64.const -0.2996125817298889 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.exp + f64.const 2.1687528885129246 + f64.const -0.2996125817298889 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1295 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + call $~lib/math/NativeMath.exp + f64.const 0.5072437089402843 + f64.const 0.47261738777160645 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.exp + f64.const 0.5072437089402843 + f64.const 0.47261738777160645 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1296 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.exp + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.exp + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1299 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/math/NativeMath.exp + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.exp + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1300 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/math/NativeMath.exp + f64.const 2.718281828459045 + f64.const -0.3255307376384735 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.exp + f64.const 2.718281828459045 + f64.const -0.3255307376384735 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1301 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/math/NativeMath.exp + f64.const 0.36787944117144233 + f64.const 0.22389651834964752 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.exp + f64.const 0.36787944117144233 + f64.const 0.22389651834964752 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1302 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/math/NativeMath.exp + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.exp + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1303 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/math/NativeMath.exp + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.exp + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1304 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.exp + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.exp + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1305 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0397214889526365 + call $~lib/math/NativeMath.exp + f64.const 2.828429155876411 + f64.const 0.18803080916404724 + call $std/math/check + if (result i32) + f64.const 1.0397214889526365 + call $~lib/bindings/dom/Math.exp + f64.const 2.828429155876411 + f64.const 0.18803080916404724 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1306 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0397214889526365 + call $~lib/math/NativeMath.exp + f64.const 0.35355313670217847 + f64.const 0.2527272403240204 + call $std/math/check + if (result i32) + f64.const -1.0397214889526365 + call $~lib/bindings/dom/Math.exp + f64.const 0.35355313670217847 + f64.const 0.2527272403240204 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1307 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0397210121154785 + call $~lib/math/NativeMath.exp + f64.const 2.8284278071766122 + f64.const -0.4184139370918274 + call $std/math/check + if (result i32) + f64.const 1.0397210121154785 + call $~lib/bindings/dom/Math.exp + f64.const 2.8284278071766122 + f64.const -0.4184139370918274 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1308 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0397214889526367 + call $~lib/math/NativeMath.exp + f64.const 2.8284291558764116 + f64.const -0.22618377208709717 + call $std/math/check + if (result i32) + f64.const 1.0397214889526367 + call $~lib/bindings/dom/Math.exp + f64.const 2.8284291558764116 + f64.const -0.22618377208709717 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1309 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + call $~lib/math/NativeMath.exp + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 5e-324 + call $~lib/bindings/dom/Math.exp + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1312 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5e-324 + call $~lib/math/NativeMath.exp + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -5e-324 + call $~lib/bindings/dom/Math.exp + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1313 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 709.782712893384 + call $~lib/math/NativeMath.exp + f64.const 1797693134862273196746681e284 + f64.const -0.10568465292453766 + call $std/math/check + if (result i32) + f64.const 709.782712893384 + call $~lib/bindings/dom/Math.exp + f64.const 1797693134862273196746681e284 + f64.const -0.10568465292453766 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1315 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 709.7827128933841 + call $~lib/math/NativeMath.exp + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const 709.7827128933841 + call $~lib/bindings/dom/Math.exp + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1322 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -745.1332191019411 + call $~lib/math/NativeMath.exp + f64.const 5e-324 + f64.const 0.5 + call $std/math/check + if (result i32) + f64.const -745.1332191019411 + call $~lib/bindings/dom/Math.exp + f64.const 5e-324 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1323 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -745.1332191019412 + call $~lib/math/NativeMath.exp + f64.const 0 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const -745.1332191019412 + call $~lib/bindings/dom/Math.exp + f64.const 0 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1330 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -708.3964185322641 + call $~lib/math/NativeMath.exp + f64.const 2.2250738585072626e-308 + f64.const 0.26172348856925964 + call $std/math/check + if (result i32) + f64.const -708.3964185322641 + call $~lib/bindings/dom/Math.exp + f64.const 2.2250738585072626e-308 + f64.const 0.26172348856925964 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1337 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -708.3964185322642 + call $~lib/math/NativeMath.exp + f64.const 2.2250738585070097e-308 + f64.const 2.2250738585070097e-308 + call $std/math/check + if (result i32) + f64.const -708.3964185322642 + call $~lib/bindings/dom/Math.exp + f64.const 2.2250738585070097e-308 + f64.const 2.2250738585070097e-308 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1344 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5006933289508785 + call $~lib/math/NativeMath.exp + f64.const 1.6498647732549399 + f64.const 0.5 + call $std/math/check + if (result i32) + f64.const 0.5006933289508785 + call $~lib/bindings/dom/Math.exp + f64.const 1.6498647732549399 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1351 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.628493326460252 + call $~lib/math/NativeMath.exp + f64.const 1.8747837631658781 + f64.const 0.5 + call $std/math/check + if (result i32) + f64.const 0.628493326460252 + call $~lib/bindings/dom/Math.exp + f64.const 1.8747837631658781 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1358 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.837522455340574 + call $~lib/math/NativeMath.exp + f64.const 2.3106351774748006 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 0.837522455340574 + call $~lib/bindings/dom/Math.exp + f64.const 2.3106351774748006 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1365 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.8504909932810999 + call $~lib/math/NativeMath.exp + f64.const 2.3407958848710777 + f64.const 0.5 + call $std/math/check + if (result i32) + f64.const 0.8504909932810999 + call $~lib/bindings/dom/Math.exp + f64.const 2.3407958848710777 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1371 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.6270060846924657 + call $~lib/math/NativeMath.exp + f64.const 5.088617001442459 + f64.const 0.5 + call $std/math/check + if (result i32) + f64.const 1.6270060846924657 + call $~lib/bindings/dom/Math.exp + f64.const 5.088617001442459 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1377 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.6744336219614115 + call $~lib/math/NativeMath.exp + f64.const 5.335772228886831 + f64.const 0.5 + call $std/math/check + if (result i32) + f64.const 1.6744336219614115 + call $~lib/bindings/dom/Math.exp + f64.const 5.335772228886831 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1383 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 6.657914718791208 + call $~lib/math/NativeMath.exp + f64.const 778.924964819056 + f64.const 0.5 + call $std/math/check + if (result i32) + f64.const 6.657914718791208 + call $~lib/bindings/dom/Math.exp + f64.const 778.924964819056 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1390 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 11.022872793631722 + call $~lib/math/NativeMath.exp + f64.const 61259.41271820104 + f64.const 0.5 + call $std/math/check + if (result i32) + f64.const 11.022872793631722 + call $~lib/bindings/dom/Math.exp + f64.const 61259.41271820104 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1397 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 11.411195701885317 + call $~lib/math/NativeMath.exp + f64.const 90327.36165653409 + f64.const 0.5 + call $std/math/check + if (result i32) + f64.const 11.411195701885317 + call $~lib/bindings/dom/Math.exp + f64.const 90327.36165653409 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1404 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 11.794490387560606 + call $~lib/math/NativeMath.exp + f64.const 132520.20290772576 + f64.const 0.5 + call $std/math/check + if (result i32) + f64.const 11.794490387560606 + call $~lib/bindings/dom/Math.exp + f64.const 132520.20290772576 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1411 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 412.83872756953286 + call $~lib/math/NativeMath.exp + f64.const 1965989977109266413433084e155 + f64.const 0.5 + call $std/math/check + if (result i32) + f64.const 412.83872756953286 + call $~lib/bindings/dom/Math.exp + f64.const 1965989977109266413433084e155 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1418 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 510.87569028483415 + call $~lib/math/NativeMath.exp + f64.const 7421526272656495968225491e197 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 510.87569028483415 + call $~lib/bindings/dom/Math.exp + f64.const 7421526272656495968225491e197 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1425 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.6589841439772853e-14 + call $~lib/math/NativeMath.exp + f64.const 0.9999999999999735 + f64.const 0.5 + call $std/math/check + if (result i32) + f64.const -2.6589841439772853e-14 + call $~lib/bindings/dom/Math.exp + f64.const 0.9999999999999735 + f64.const 0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1432 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.7144952952085447e-14 + call $~lib/math/NativeMath.exp + f64.const 0.9999999999999728 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const -2.7144952952085447e-14 + call $~lib/bindings/dom/Math.exp + f64.const 0.9999999999999728 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1439 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + call $~lib/math/NativeMathf.exp + f32.const 3.1377049162983894e-04 + f32.const -0.030193336308002472 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1453 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + call $~lib/math/NativeMathf.exp + f32.const 77.11051177978516 + f32.const -0.2875460684299469 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1454 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + call $~lib/math/NativeMathf.exp + f32.const 2.2908132814336568e-04 + f32.const 0.2237040400505066 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1455 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + call $~lib/math/NativeMathf.exp + f32.const 1.4565663877874613e-03 + f32.const 0.36469703912734985 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1456 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + call $~lib/math/NativeMathf.exp + f32.const 10583.5634765625 + f32.const 0.45962104201316833 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1457 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + call $~lib/math/NativeMathf.exp + f32.const 1.93863844871521 + f32.const 0.3568260967731476 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1458 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + call $~lib/math/NativeMathf.exp + f32.const 0.6659078598022461 + f32.const -0.38294991850852966 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1459 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + call $~lib/math/NativeMathf.exp + f32.const 1.753756046295166 + f32.const 0.44355490803718567 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1460 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + call $~lib/math/NativeMathf.exp + f32.const 2.168752908706665 + f32.const 0.24562469124794006 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1461 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + call $~lib/math/NativeMathf.exp + f32.const 0.5072436928749084 + f32.const -0.3974292278289795 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1462 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/math/NativeMathf.exp + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1465 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + call $~lib/math/NativeMathf.exp + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1466 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + call $~lib/math/NativeMathf.exp + f32.const 2.7182817459106445 + f32.const -0.3462330996990204 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + call $~lib/math/NativeMathf.exp + f32.const 0.3678794503211975 + f32.const 0.3070148527622223 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1468 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + call $~lib/math/NativeMathf.exp + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1469 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + call $~lib/math/NativeMathf.exp + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1470 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + call $~lib/math/NativeMathf.exp + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1471 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 88.72283172607422 + call $~lib/math/NativeMathf.exp + f32.const 340279851902147610656242e15 + f32.const -0.09067153930664062 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1472 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 88.72283935546875 + call $~lib/math/NativeMathf.exp + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1473 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -103.97207641601562 + call $~lib/math/NativeMathf.exp + f32.const 1.401298464324817e-45 + f32.const 0.49999967217445374 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1474 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -103.97208404541016 + call $~lib/math/NativeMathf.exp + f32.const 0 + f32.const -0.49999651312828064 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1475 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.3465735614299774 + call $~lib/math/NativeMathf.exp + f32.const 1.4142135381698608 + f32.const 0.13922421634197235 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1476 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.3465735912322998 + call $~lib/math/NativeMathf.exp + f32.const 1.4142135381698608 + f32.const -0.21432916820049286 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1477 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.3465736210346222 + call $~lib/math/NativeMathf.exp + f32.const 1.4142136573791504 + f32.const 0.43211743235588074 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1478 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + call $~lib/math/NativeMath.expm1 + f64.const -0.9996862293931839 + f64.const -0.2760058343410492 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.expm1 + f64.const -0.9996862293931839 + f64.const -0.2760058343410492 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1490 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + call $~lib/math/NativeMath.expm1 + f64.const 76.11053017112141 + f64.const -0.02792675793170929 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.expm1 + f64.const 76.11053017112141 + f64.const -0.02792675793170929 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1491 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + call $~lib/math/NativeMath.expm1 + f64.const -0.9997709186615084 + f64.const 0.10052496194839478 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.expm1 + f64.const -0.9997709186615084 + f64.const 0.10052496194839478 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1492 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + call $~lib/math/NativeMath.expm1 + f64.const -0.9985434338739069 + f64.const -0.27437829971313477 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.expm1 + f64.const -0.9985434338739069 + f64.const -0.27437829971313477 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1493 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + call $~lib/math/NativeMath.expm1 + f64.const 10582.558245524993 + f64.const 0.17696762084960938 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.expm1 + f64.const 10582.558245524993 + f64.const 0.17696762084960938 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1494 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + call $~lib/math/NativeMath.expm1 + f64.const 0.9386384525571999 + f64.const 0.007150684483349323 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.expm1 + f64.const 0.9386384525571999 + f64.const 0.007150684483349323 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1495 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + call $~lib/math/NativeMath.expm1 + f64.const -0.3340921107161975 + f64.const -0.21216636896133423 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.expm1 + f64.const -0.3340921107161975 + f64.const -0.21216636896133423 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1496 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + call $~lib/math/NativeMath.expm1 + f64.const 0.7537559518626312 + f64.const 0.21675777435302734 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.expm1 + f64.const 0.7537559518626312 + f64.const 0.21675777435302734 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1497 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + call $~lib/math/NativeMath.expm1 + f64.const 1.1687528885129248 + f64.const 0.4007748067378998 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.expm1 + f64.const 1.1687528885129248 + f64.const 0.4007748067378998 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1498 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + call $~lib/math/NativeMath.expm1 + f64.const -0.4927562910597158 + f64.const -0.05476519837975502 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.expm1 + f64.const -0.4927562910597158 + f64.const -0.05476519837975502 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1499 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.expm1 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.expm1 + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1502 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/math/NativeMath.expm1 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.expm1 + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1503 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/math/NativeMath.expm1 + f64.const 1.7182818284590453 + f64.const 0.348938524723053 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.expm1 + f64.const 1.7182818284590453 + f64.const 0.348938524723053 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1504 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/math/NativeMath.expm1 + f64.const -0.6321205588285577 + f64.const 0.11194825917482376 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.expm1 + f64.const -0.6321205588285577 + f64.const 0.11194825917482376 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1505 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/math/NativeMath.expm1 + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.expm1 + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1506 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/math/NativeMath.expm1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.expm1 + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1507 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.expm1 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.expm1 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1508 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507201e-308 + call $~lib/math/NativeMath.expm1 + f64.const 2.225073858507201e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.225073858507201e-308 + call $~lib/bindings/dom/Math.expm1 + f64.const 2.225073858507201e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1509 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507201e-308 + call $~lib/math/NativeMath.expm1 + f64.const -2.225073858507201e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.225073858507201e-308 + call $~lib/bindings/dom/Math.expm1 + f64.const -2.225073858507201e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1510 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + call $~lib/math/NativeMathf.expm1 + f32.const -0.9996862411499023 + f32.const -0.19532723724842072 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1519 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + call $~lib/math/NativeMathf.expm1 + f32.const 76.11051177978516 + f32.const -0.2875460684299469 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1520 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + call $~lib/math/NativeMathf.expm1 + f32.const -0.9997709393501282 + f32.const -0.34686920046806335 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1521 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + call $~lib/math/NativeMathf.expm1 + f32.const -0.9985434412956238 + f32.const -0.1281939446926117 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1522 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + call $~lib/math/NativeMathf.expm1 + f32.const 10582.5634765625 + f32.const 0.45962104201316833 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1523 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + call $~lib/math/NativeMathf.expm1 + f32.const 0.9386383891105652 + f32.const -0.28634780645370483 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1524 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + call $~lib/math/NativeMathf.expm1 + f32.const -0.3340921103954315 + f32.const 0.23410017788410187 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1525 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + call $~lib/math/NativeMathf.expm1 + f32.const 0.7537559866905212 + f32.const -0.11289017647504807 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1526 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + call $~lib/math/NativeMathf.expm1 + f32.const 1.168752908706665 + f32.const 0.4912493824958801 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1527 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + call $~lib/math/NativeMathf.expm1 + f32.const -0.49275627732276917 + f32.const 0.20514154434204102 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1528 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/math/NativeMathf.expm1 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1531 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + call $~lib/math/NativeMathf.expm1 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1532 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + call $~lib/math/NativeMathf.expm1 + f32.const 1.718281865119934 + f32.const 0.3075338304042816 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1533 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + call $~lib/math/NativeMathf.expm1 + f32.const -0.6321205496788025 + f32.const 0.15350742638111115 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1534 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + call $~lib/math/NativeMathf.expm1 + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1535 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + call $~lib/math/NativeMathf.expm1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1536 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + call $~lib/math/NativeMathf.expm1 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1537 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 0.003729380227666592 + f64.const 0.1281578093767166 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1549 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 20.32579462123892 + f64.const 0.03073759749531746 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1550 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const 2.9987283924334954e-03 + f64.const -0.31000515818595886 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1551 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 0.010808622025681005 + f64.const -0.28607869148254395 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1552 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 616.1154770730207 + f64.const -0.08883064985275269 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1553 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 1.5822591361986904 + f64.const -0.1258980929851532 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1554 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const 0.7543971221632684 + f64.const -0.24229088425636292 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1555 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 1.4760685736993149 + f64.const 0.27173060178756714 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1556 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 1.710184880131433 + f64.const -0.0205493476241827 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1557 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const 0.6247003734030933 + f64.const -0.31195688247680664 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1558 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1561 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1562 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 2 + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1563 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0.5 + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1564 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1565 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 0 + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1566 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1567 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.998046875 + f64.const 3.9945884515638808 + f64.const 0.1476455181837082 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1568 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1021.9 + f64.const 2.384775113731291e-308 + f64.const -0.2217157781124115 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1569 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1022 + f64.const 2.2250738585072014e-308 + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1570 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1022.1 + f64.const 2.0760673185932884e-308 + f64.const 0.198451966047287 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1571 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1023 + f64.const 1.1125369292536007e-308 + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1572 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1023.9 + f64.const 1677307003485741635311718e284 + f64.const 0.396903932094574 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1573 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1024 + f64.const inf + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1574 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1024.1 + f64.const inf + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1575 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.14 + f64.const 8.815240927012887 + f64.const 0.39309585094451904 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1576 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1022.5 + f64.const 1.5733648139913585e-308 + f64.const -0.28231191635131836 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1577 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1023 + f64.const 1.1125369292536007e-308 + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1578 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1023.5 + f64.const 7.866824069956793e-309 + f64.const -0.14115595817565918 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1579 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1024 + f64.const 5.562684646268003e-309 + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1580 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1025 + f64.const 2.781342323134e-309 + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1581 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1074 + f64.const 5e-324 + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1582 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1074.5 + f64.const 5e-324 + f64.const 0.2928932309150696 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1583 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1075 + f64.const 0 + f64.const -0.5 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1584 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2048 + f64.const 0 + f64.const 0 + call $std/math/test_exp2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 3.7293792702257633e-03 + f32.const -0.0674908235669136 + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1596 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 20.32579231262207 + f32.const 0.34121403098106384 + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const 2.9987283051013947e-03 + f32.const 0.15504619479179382 + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1598 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 0.010808623395860195 + f32.const 0.2603940963745117 + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1599 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 616.1156616210938 + f32.const -0.1379322111606598 + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1600 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 1.5822590589523315 + f32.const -0.427890807390213 + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1601 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const 0.7543970942497253 + f32.const -0.38062313199043274 + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1602 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 1.4760686159133911 + f32.const 0.1507442593574524 + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1603 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 1.7101848125457764 + f32.const -0.39102980494499207 + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1604 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const 0.6247003674507141 + f32.const -0.20904375612735748 + call $std/math/test_exp2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1605 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9 + f64.const -9 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.floor + f64.const -9 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1617 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4 + f64.const 4 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.floor + f64.const 4 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1618 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9 + f64.const -9 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.floor + f64.const -9 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1619 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7 + f64.const -7 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.floor + f64.const -7 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1620 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9 + f64.const 9 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.floor + f64.const 9 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1621 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1622 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.floor + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1623 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1624 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1625 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.floor + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1626 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.floor + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1629 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.floor + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1630 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.floor + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1631 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1632 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.floor + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1633 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.floor + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1634 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.floor + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1635 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5 + call $~lib/bindings/dom/Math.floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1636 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.5 + call $~lib/bindings/dom/Math.floor + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1637 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.0000152587890625 + call $~lib/bindings/dom/Math.floor + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1638 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const -2 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.0000152587890625 + call $~lib/bindings/dom/Math.floor + f64.const -2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1639 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.9999923706054688 + call $~lib/bindings/dom/Math.floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1640 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.9999923706054688 + call $~lib/bindings/dom/Math.floor + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1641 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 7.888609052210118e-31 + call $~lib/bindings/dom/Math.floor + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1642 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/dom/Math.floor + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1643 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -9 + f32.const -9 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1652 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4 + f32.const 4 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1653 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -9 + f32.const -9 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1654 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7 + f32.const -7 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1655 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9 + f32.const 9 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1656 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1657 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1658 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1659 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1660 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1661 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1664 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1665 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1666 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1667 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1668 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1669 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1670 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1671 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1672 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1673 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const -2 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1674 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1675 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1676 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1677 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1678 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.535662560676869 + f64.const 9.25452742288464 + f64.const -0.31188681721687317 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1692 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + f64.const 9.893305808328252 + f64.const 0.4593673348426819 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1693 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + f64.const 8.825301797432132 + f64.const -0.1701754331588745 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1694 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + f64.const 7.970265885519092 + f64.const -0.3176782727241516 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1695 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + f64.const 10.441639651824575 + f64.const -0.2693633437156677 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1696 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + f64.const 6.483936052542593 + f64.const 0.35618898272514343 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1697 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + f64.const 7.859063309581766 + f64.const 0.08044655621051788 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1698 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + f64.const 7.717156764899584 + f64.const 0.05178084969520569 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1699 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + f64.const 2.104006123874314 + f64.const -0.0918039008975029 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1700 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + f64.const 0.5596880129062913 + f64.const 0.1383407711982727 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1701 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3 + f64.const 4 + f64.const 5 + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1704 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3 + f64.const 4 + f64.const 5 + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1705 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4 + f64.const 3 + f64.const 5 + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1706 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4 + f64.const -3 + f64.const 5 + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1707 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3 + f64.const -4 + f64.const 5 + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1708 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + f64.const 0 + f64.const 1797693134862315708145274e284 + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1709 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + f64.const -0 + f64.const 1797693134862315708145274e284 + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1710 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + f64.const 0 + f64.const 5e-324 + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1711 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + f64.const -0 + f64.const 5e-324 + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1712 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const inf + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1713 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const inf + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1714 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const inf + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1715 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const inf + f64.const inf + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1716 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 1 + f64.const inf + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1717 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -inf + f64.const inf + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1718 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const nan:0x8000000000000 + f64.const inf + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1719 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -inf + f64.const inf + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1720 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1721 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1722 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1723 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_hypot + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1724 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 4.535662651062012 + f32.const 9.254528045654297 + f32.const 0.2735958993434906 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1733 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -8.887990951538086 + f32.const 9.893305778503418 + f32.const 0.4530770778656006 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1734 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.7636072635650635 + f32.const 8.825302124023438 + f32.const 0.30755728483200073 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1735 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 4.567535400390625 + f32.const 7.970265865325928 + f32.const 0.06785223633050919 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1736 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 4.811392307281494 + f32.const 10.44163990020752 + f32.const -0.26776307821273804 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1737 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.450045585632324 + f32.const 0.6620717644691467 + f32.const 6.483936309814453 + f32.const 0.48381292819976807 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1738 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.858890056610107 + f32.const 0.052154526114463806 + f32.const 7.859063148498535 + f32.const 0.07413065433502197 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1739 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.7920545339584351 + f32.const 7.676402568817139 + f32.const 7.717156887054443 + f32.const 0.4940592646598816 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1740 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6157026886940002 + f32.const 2.0119025707244873 + f32.const 2.104006052017212 + f32.const -0.287089467048645 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1741 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5587586760520935 + f32.const 0.03223983198404312 + f32.const 0.5596880316734314 + f32.const 0.4191940724849701 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1742 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3 + f32.const 4 + f32.const 5 + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1745 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3 + f32.const 4 + f32.const 5 + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1746 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4 + f32.const 3 + f32.const 5 + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1747 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4 + f32.const -3 + f32.const 5 + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1748 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3 + f32.const -4 + f32.const 5 + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1749 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3402823466385288598117041e14 + f32.const 0 + f32.const 3402823466385288598117041e14 + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1750 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3402823466385288598117041e14 + f32.const -0 + f32.const 3402823466385288598117041e14 + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1751 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + f32.const 0 + f32.const 1.401298464324817e-45 + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1752 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + f32.const -0 + f32.const 1.401298464324817e-45 + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1753 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + f32.const inf + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1754 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.const inf + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1755 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const inf + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1756 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const inf + f32.const inf + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1757 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 1 + f32.const inf + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1758 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -inf + f32.const inf + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1759 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const nan:0x400000 + f32.const inf + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1760 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -inf + f32.const inf + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1761 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1762 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_hypotf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1763 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + call $~lib/math/NativeMath.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1775 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + call $~lib/math/NativeMath.log + f64.const 1.4690809584224322 + f64.const -0.3412533402442932 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.log + f64.const 1.4690809584224322 + f64.const -0.3412533402442932 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1776 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + call $~lib/math/NativeMath.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1777 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + call $~lib/math/NativeMath.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1778 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + call $~lib/math/NativeMath.log + f64.const 2.2264658498795615 + f64.const 0.3638114035129547 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.log + f64.const 2.2264658498795615 + f64.const 0.3638114035129547 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1779 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + call $~lib/math/NativeMath.log + f64.const -0.4125110252365137 + f64.const -0.29108747839927673 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.log + f64.const -0.4125110252365137 + f64.const -0.29108747839927673 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1780 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + call $~lib/math/NativeMath.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1781 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + call $~lib/math/NativeMath.log + f64.const -0.5766810183195862 + f64.const -0.10983199626207352 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.log + f64.const -0.5766810183195862 + f64.const -0.10983199626207352 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1782 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + call $~lib/math/NativeMath.log + f64.const -0.2559866591263865 + f64.const -0.057990044355392456 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.log + f64.const -0.2559866591263865 + f64.const -0.057990044355392456 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1783 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + call $~lib/math/NativeMath.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1784 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.log + f64.const -inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.log + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1787 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/math/NativeMath.log + f64.const -inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.log + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1788 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + call $~lib/math/NativeMath.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/dom/Math.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1789 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/math/NativeMath.log + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.log + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1790 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/math/NativeMath.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1791 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/math/NativeMath.log + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.log + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1792 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/math/NativeMath.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1793 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.log + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1794 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/math/NativeMathf.log + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1803 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + call $~lib/math/NativeMathf.log + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1804 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + call $~lib/math/NativeMathf.log + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1805 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + call $~lib/math/NativeMathf.log + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1806 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + call $~lib/math/NativeMathf.log + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1807 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + call $~lib/math/NativeMathf.log + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1808 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + call $~lib/math/NativeMathf.log + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1809 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + call $~lib/math/NativeMathf.log + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1810 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/math/NativeMathf.log + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1813 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + call $~lib/math/NativeMathf.log + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1814 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + call $~lib/math/NativeMathf.log + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1815 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + call $~lib/math/NativeMathf.log + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1816 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + call $~lib/math/NativeMathf.log + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1817 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + call $~lib/math/NativeMathf.log + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1818 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + call $~lib/math/NativeMathf.log + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1819 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + call $~lib/math/NativeMathf.log + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1820 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1832 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 0.6380137537120029 + f64.const -0.2088824063539505 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1833 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1834 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1835 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 0.9669418327487274 + f64.const -0.06120431795716286 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1836 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const -0.17915126198447093 + f64.const 0.39090874791145325 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1837 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1838 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const -0.25044938407454437 + f64.const -0.3046841621398926 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1839 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const -0.11117359349943837 + f64.const -0.31503361463546753 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1840 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1841 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -inf + f64.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1844 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -inf + f64.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1845 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1846 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1847 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1848 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1849 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1850 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_log10 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1851 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1860 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 0.6380137205123901 + f32.const -0.20476758480072021 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1861 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1862 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1863 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 0.9669418334960938 + f32.const -0.34273025393486023 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1864 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const -0.1791512817144394 + f32.const -0.27078554034233093 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1865 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1866 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const -0.25044935941696167 + f32.const 0.2126826047897339 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1867 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const -0.1111735999584198 + f32.const 0.46515095233917236 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1868 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1869 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -inf + f32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1872 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -inf + f32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1873 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1874 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1875 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1876 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1877 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1878 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log10f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1879 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + call $~lib/math/NativeMath.log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1891 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + call $~lib/math/NativeMath.log1p + f64.const 1.6762064170601734 + f64.const 0.46188199520111084 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.log1p + f64.const 1.6762064170601734 + f64.const 0.46188199520111084 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1892 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + call $~lib/math/NativeMath.log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1893 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + call $~lib/math/NativeMath.log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1894 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + call $~lib/math/NativeMath.log1p + f64.const 2.3289404168523826 + f64.const -0.411114901304245 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.log1p + f64.const 2.3289404168523826 + f64.const -0.411114901304245 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1895 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + call $~lib/math/NativeMath.log1p + f64.const 0.5080132114992477 + f64.const -0.29306045174598694 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.log1p + f64.const 0.5080132114992477 + f64.const -0.29306045174598694 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1896 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + call $~lib/math/NativeMath.log1p + f64.const -0.5218931811663979 + f64.const -0.25825726985931396 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.log1p + f64.const -0.5218931811663979 + f64.const -0.25825726985931396 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1897 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + call $~lib/math/NativeMath.log1p + f64.const 0.4458132279488102 + f64.const -0.13274887204170227 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.log1p + f64.const 0.4458132279488102 + f64.const -0.13274887204170227 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1898 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + call $~lib/math/NativeMath.log1p + f64.const 0.5733227294648414 + f64.const 0.02716583013534546 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.log1p + f64.const 0.5733227294648414 + f64.const 0.02716583013534546 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1899 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + call $~lib/math/NativeMath.log1p + f64.const -1.1355782978128564 + f64.const 0.2713092863559723 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.log1p + f64.const -1.1355782978128564 + f64.const 0.2713092863559723 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1900 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.log1p + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.log1p + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1903 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/math/NativeMath.log1p + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.log1p + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1904 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + call $~lib/math/NativeMath.log1p + f64.const -7.888609052210118e-31 + f64.const 1.7763568394002505e-15 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/dom/Math.log1p + f64.const -7.888609052210118e-31 + f64.const 1.7763568394002505e-15 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1905 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/math/NativeMath.log1p + f64.const 0.6931471805599453 + f64.const -0.2088811695575714 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.log1p + f64.const 0.6931471805599453 + f64.const -0.2088811695575714 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1906 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/math/NativeMath.log1p + f64.const -inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.log1p + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1907 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/math/NativeMath.log1p + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.log1p + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1908 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/math/NativeMath.log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1909 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.log1p + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1910 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + call $~lib/math/NativeMathf.log1p + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1919 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + call $~lib/math/NativeMathf.log1p + f32.const 1.676206350326538 + f32.const -0.23014859855175018 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1920 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + call $~lib/math/NativeMathf.log1p + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1921 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + call $~lib/math/NativeMathf.log1p + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1922 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + call $~lib/math/NativeMathf.log1p + f32.const 2.3289403915405273 + f32.const -0.29075589776039124 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1923 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + call $~lib/math/NativeMathf.log1p + f32.const 0.5080131888389587 + f32.const -0.1386766880750656 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1924 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + call $~lib/math/NativeMathf.log1p + f32.const -0.5218932032585144 + f32.const -0.08804433047771454 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1925 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + call $~lib/math/NativeMathf.log1p + f32.const 0.44581323862075806 + f32.const -0.15101368725299835 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1926 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + call $~lib/math/NativeMathf.log1p + f32.const 0.5733227133750916 + f32.const -0.10264533013105392 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1927 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + call $~lib/math/NativeMathf.log1p + f32.const -1.1355782747268677 + f32.const -0.19879481196403503 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1928 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/math/NativeMathf.log1p + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1931 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + call $~lib/math/NativeMathf.log1p + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1932 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + call $~lib/math/NativeMathf.log1p + f32.const -7.888609052210118e-31 + f32.const 3.308722450212111e-24 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1933 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + call $~lib/math/NativeMathf.log1p + f32.const 0.6931471824645996 + f32.const 0.031954795122146606 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1934 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + call $~lib/math/NativeMathf.log1p + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1935 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + call $~lib/math/NativeMathf.log1p + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1936 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + call $~lib/math/NativeMathf.log1p + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1937 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + call $~lib/math/NativeMathf.log1p + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1938 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754942106924411e-38 + call $~lib/math/NativeMathf.log1p + f32.const -1.1754942106924411e-38 + f32.const 4.930380657631324e-32 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1939 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + call $~lib/math/NativeMath.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1951 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + call $~lib/math/NativeMath.log2 + f64.const 2.1194358133804485 + f64.const -0.10164877772331238 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.log2 + f64.const 2.1194358133804485 + f64.const -0.10164877772331238 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1952 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + call $~lib/math/NativeMath.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1953 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + call $~lib/math/NativeMath.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1954 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + call $~lib/math/NativeMath.log2 + f64.const 3.2121112403298744 + f64.const -0.15739446878433228 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.log2 + f64.const 3.2121112403298744 + f64.const -0.15739446878433228 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1955 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + call $~lib/math/NativeMath.log2 + f64.const -0.5951276104207402 + f64.const 0.3321485221385956 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.log2 + f64.const -0.5951276104207402 + f64.const 0.3321485221385956 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1956 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + call $~lib/math/NativeMath.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1957 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + call $~lib/math/NativeMath.log2 + f64.const -0.8319748453044644 + f64.const 0.057555437088012695 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.log2 + f64.const -0.8319748453044644 + f64.const 0.057555437088012695 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1958 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + call $~lib/math/NativeMath.log2 + f64.const -0.36931068365537134 + f64.const -0.19838279485702515 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.log2 + f64.const -0.36931068365537134 + f64.const -0.19838279485702515 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1959 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + call $~lib/math/NativeMath.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1960 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.log2 + f64.const -inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.log2 + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1963 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/math/NativeMath.log2 + f64.const -inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.log2 + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1964 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + call $~lib/math/NativeMath.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/dom/Math.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1965 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/math/NativeMath.log2 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.log2 + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1966 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/math/NativeMath.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1967 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/math/NativeMath.log2 + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.log2 + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1968 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/math/NativeMath.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1969 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.log2 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1970 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1979 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 2.1194357872009277 + f32.const 0.18271538615226746 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1980 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1981 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1982 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 3.212111234664917 + f32.const -0.3188050389289856 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1983 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const -0.5951276421546936 + f32.const 0.34231460094451904 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1984 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1985 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const -0.8319748044013977 + f32.const -0.33473604917526245 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1986 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const -0.3693107068538666 + f32.const 0.3278401792049408 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1987 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1988 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -inf + f32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1991 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -inf + f32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1992 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1993 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1994 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1995 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1996 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1997 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_log2f + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 1998 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.535662560676869 + f64.const 4.535662560676869 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2010 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + f64.const 4.345239849338305 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2011 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + f64.const -2.763607337379588 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2012 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + f64.const 4.567535276842744 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2013 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + f64.const 9.267056966972586 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2014 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + f64.const 0.6620717923376739 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2015 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + f64.const 7.858890253041697 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2016 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + f64.const 7.67640268511754 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2017 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + f64.const 2.0119025790324803 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2018 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + f64.const 0.03223983060263804 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2019 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 1 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2022 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const 1 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2023 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + f64.const 1 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2024 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 1 + f64.const 1 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2025 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 1 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2026 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 1 + f64.const 1 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2027 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2028 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 1 + f64.const 1 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2029 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2030 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + f64.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2031 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + f64.const -0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2032 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const -1 + f64.const 0.5 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2033 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -1 + f64.const -0.5 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2034 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -1 + f64.const 1 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2035 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const -1 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2036 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + f64.const inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2037 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -1 + f64.const -1 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2038 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + f64.const nan:0x8000000000000 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2039 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2040 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + f64.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2041 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.const inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2042 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -inf + f64.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2043 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2044 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2045 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const -0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2046 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.const inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2047 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -inf + f64.const -0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2048 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2049 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 1 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2050 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + f64.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2051 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + f64.const inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2052 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 0 + f64.const 0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2053 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2054 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + f64.const -0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2055 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0 + f64.const inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2056 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -0 + f64.const -0 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2057 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2058 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 2 + f64.const inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2059 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0.5 + f64.const inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2060 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2061 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 2 + f64.const 2 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2062 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -0.5 + f64.const -0.5 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2063 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2064 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2065 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2066 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2067 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2068 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.const inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2069 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2070 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const inf + f64.const inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2071 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -inf + f64.const 1 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2072 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -inf + f64.const -1 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2073 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -inf + f64.const inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2074 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const -inf + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2075 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const 0.5 + f64.const 1.75 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2076 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const 0.5 + f64.const 0.5 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2077 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const -0.5 + f64.const 1.75 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2078 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const -0.5 + f64.const -0.5 + call $std/math/test_max + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2079 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.535662651062012 + f32.const 4.535662651062012 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2088 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 4.345239639282227 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2089 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.7636072635650635 + f32.const -2.7636072635650635 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2090 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.567535400390625 + f32.const 4.567535400390625 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2091 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 9.267057418823242 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2092 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6620717644691467 + f32.const 0.6620717644691467 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2093 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.858890056610107 + f32.const 7.858890056610107 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2094 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.676402568817139 + f32.const 7.676402568817139 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2095 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.0119025707244873 + f32.const 2.0119025707244873 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2096 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.03223983198404312 + f32.const 0.03223983198404312 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2097 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2103 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2104 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2118 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2122 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2130 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2132 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2133 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2134 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2135 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2136 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2138 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2139 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const 2 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2141 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2145 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2146 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2147 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2148 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2149 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2150 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const 1.75 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const 1.75 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.535662560676869 + f64.const -8.06684839057968 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2169 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + f64.const -8.88799136300345 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2170 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + f64.const -8.38143342755525 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2171 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + f64.const -6.531673581913484 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2172 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + f64.const 4.811392084359796 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2173 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + f64.const -6.450045556060236 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2174 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + f64.const 0.05215452675006225 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + f64.const -0.792054511984896 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2176 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + f64.const 0.615702673197924 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + f64.const -0.5587586823609152 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2178 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const -0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2182 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + f64.const 0.5 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 1 + f64.const -0.5 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2184 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2185 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 1 + f64.const -1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2186 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const 1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 1 + f64.const -inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2188 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2189 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + f64.const -1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2190 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + f64.const -1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2191 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const -1 + f64.const -1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2192 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -1 + f64.const -1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -1 + f64.const -1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2194 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const -1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2195 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + f64.const -1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2196 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -1 + f64.const -inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2197 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + f64.const nan:0x8000000000000 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2198 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + f64.const -0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2201 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -inf + f64.const -inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2202 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2203 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const -0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2204 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const -0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2205 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.const -0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2206 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -inf + f64.const -inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2207 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2208 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + f64.const -1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2210 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + f64.const 0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2211 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 0 + f64.const -inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2212 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2213 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + f64.const -1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2214 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0 + f64.const -0 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2215 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -0 + f64.const -inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2217 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 2 + f64.const 2 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2218 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0.5 + f64.const -0.5 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2220 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 2 + f64.const -inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2221 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -0.5 + f64.const -inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2222 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2223 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2224 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2225 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2226 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const 1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2227 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.const -1 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2228 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2229 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const inf + f64.const -inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2230 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -inf + f64.const -inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2231 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -inf + f64.const -inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2232 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -inf + f64.const -inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2233 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const -inf + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2234 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const 0.5 + f64.const 0.5 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2235 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const 0.5 + f64.const -1.75 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2236 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const -0.5 + f64.const -0.5 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const -0.5 + f64.const -1.75 + call $std/math/test_min + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2238 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -8.066848754882812 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2247 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.887990951538086 + f32.const -8.887990951538086 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2248 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -8.381433486938477 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2249 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -6.531673431396484 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2250 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.811392307281494 + f32.const 4.811392307281494 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2251 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.450045585632324 + f32.const -6.450045585632324 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2252 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.052154526114463806 + f32.const 0.052154526114463806 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2253 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.7920545339584351 + f32.const -0.7920545339584351 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2254 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6157026886940002 + f32.const 0.6157026886940002 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2255 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5587586760520935 + f32.const -0.5587586760520935 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2256 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2259 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2260 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2261 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2262 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2263 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2264 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2265 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2266 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2267 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2268 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2269 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2270 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2271 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2272 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2273 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2274 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2275 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2276 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2277 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2278 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2279 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2280 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2281 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2282 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2283 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2284 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2285 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2286 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2287 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2289 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2290 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2291 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2292 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2293 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2294 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2295 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const 2 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2296 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2297 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2298 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2299 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2300 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2301 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2302 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2303 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2304 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2305 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2306 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2307 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2308 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2309 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2310 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2311 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2312 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2313 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const -1.75 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2314 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2315 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const -1.75 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2316 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.535662560676869 + f64.const -3.531185829902812 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2330 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + f64.const 4.345239849338305 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2331 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + f64.const -0.09061141541648476 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2332 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + f64.const -1.9641383050707404 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2333 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + f64.const 4.45566488261279 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2334 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + f64.const -0.4913994250211714 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2335 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + f64.const 0.035711240532359426 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2336 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + f64.const -0.792054511984896 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2337 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + f64.const 0.615702673197924 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2338 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + f64.const -0.0106815621160685 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2339 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2342 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2343 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + f64.const 0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2344 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 1 + f64.const -0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2345 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2346 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 1 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2347 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 1 + f64.const 0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2348 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const 1 + f64.const -0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2349 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const 1 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2350 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const 1 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2351 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2352 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 1 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2353 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2354 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2355 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2356 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const -1 + f64.const 0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2357 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -1 + f64.const -0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2358 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -1 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2359 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2360 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const -1 + f64.const 0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2361 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const -1 + f64.const -0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2362 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const -1 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2363 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const -1 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2364 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2365 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -1 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2366 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2367 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2368 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2370 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -inf + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2371 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2372 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2373 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2374 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2375 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -inf + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2376 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2377 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2378 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2379 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2380 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 0 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2381 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2382 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2383 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2384 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -0 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2385 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2386 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 2 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2387 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0.5 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2388 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2389 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 2 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2390 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -0.5 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2391 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2392 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2393 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2394 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2395 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const 1 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2396 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.const -1 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2397 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2398 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const inf + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2399 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -inf + f64.const 1 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2400 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -inf + f64.const -1 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2401 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -inf + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2402 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const nan:0x8000000000000 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2403 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const 0.5 + f64.const 0.25 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2404 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const 0.5 + f64.const -0.25 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2405 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const -0.5 + f64.const 0.25 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2406 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const -0.5 + f64.const -0.25 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2407 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + f64.const 2.2250738585072014e-308 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2410 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + f64.const -2.2250738585072014e-308 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2411 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072014e-308 + f64.const 2.2250738585072014e-308 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2412 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072014e-308 + f64.const -2.2250738585072014e-308 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2413 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + f64.const 1797693134862315708145274e284 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2414 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + f64.const -1797693134862315708145274e284 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2415 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1797693134862315708145274e284 + f64.const 1797693134862315708145274e284 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2416 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1797693134862315708145274e284 + f64.const -1797693134862315708145274e284 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2417 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 2.2250738585072014e-308 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2420 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1797693134862315708145274e284 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2421 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -2.2250738585072014e-308 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2422 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1797693134862315708145274e284 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2423 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 2.2250738585072014e-308 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2424 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1797693134862315708145274e284 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2425 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -2.2250738585072014e-308 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2426 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1797693134862315708145274e284 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2427 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + f64.const 1797693134862315508561243e284 + f64.const 1995840309534719811656372e268 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2430 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1797693134862315708145274e284 + f64.const 1797693134862315508561243e284 + f64.const -1995840309534719811656372e268 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2431 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + f64.const -8988465674311579538646525e283 + f64.const 8988465674311577542806216e283 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2433 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1797693134862315708145274e284 + f64.const -8988465674311579538646525e283 + f64.const -8988465674311577542806216e283 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2434 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + f64.const 8988465674311578540726371e283 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2436 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1797693134862315708145274e284 + f64.const 8988465674311578540726371e283 + f64.const -0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2437 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + f64.const -8988465674311577542806216e283 + f64.const 1995840309534719811656372e268 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2439 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1797693134862315708145274e284 + f64.const -8988465674311577542806216e283 + f64.const -1995840309534719811656372e268 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2440 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8988465674311579538646525e283 + f64.const 1797693134862315708145274e284 + f64.const 8988465674311579538646525e283 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2442 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8988465674311579538646525e283 + f64.const 1797693134862315708145274e284 + f64.const -8988465674311579538646525e283 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2443 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8988465674311578540726371e283 + f64.const -1797693134862315708145274e284 + f64.const 8988465674311578540726371e283 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2445 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8988465674311578540726371e283 + f64.const -1797693134862315708145274e284 + f64.const -8988465674311578540726371e283 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2446 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8988465674311577542806216e283 + f64.const 1797693134862315708145274e284 + f64.const 8988465674311577542806216e283 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2448 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8988465674311577542806216e283 + f64.const 1797693134862315708145274e284 + f64.const -8988465674311577542806216e283 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2449 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315508561243e284 + f64.const -1797693134862315708145274e284 + f64.const 1797693134862315508561243e284 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2451 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1797693134862315508561243e284 + f64.const -1797693134862315708145274e284 + f64.const -1797693134862315508561243e284 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2452 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315508561243e284 + f64.const 8988465674311578540726371e283 + f64.const 8988465674311576544886061e283 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2454 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1797693134862315508561243e284 + f64.const 8988465674311578540726371e283 + f64.const -8988465674311576544886061e283 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2455 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.5 + f64.const 1 + f64.const 0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2457 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 6.5 + f64.const 1 + f64.const 0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2458 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.5 + f64.const 1 + f64.const 0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2459 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.5 + f64.const 1 + f64.const 0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2460 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.5 + f64.const 1 + f64.const -0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2461 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.5 + f64.const 1 + f64.const -0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2462 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5.5 + f64.const 1 + f64.const -0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2463 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.5 + f64.const 1 + f64.const -0.5 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2464 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585071994e-308 + f64.const 2.2250738585072004e-308 + f64.const 2.2250738585071994e-308 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2466 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585071994e-308 + f64.const -2.2250738585072004e-308 + f64.const 2.2250738585071994e-308 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507201e-308 + f64.const 1.5e-323 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2468 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507201e-308 + f64.const 4.4501477170144023e-308 + f64.const 2.225073858507201e-308 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2469 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507201e-308 + f64.const inf + f64.const 2.225073858507201e-308 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2470 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507201e-308 + f64.const -1.5e-323 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2471 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + f64.const 1.5e-323 + f64.const 5e-324 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2472 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + f64.const 2.2250738585072004e-308 + f64.const 1e-323 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2473 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + f64.const 4.4501477170144023e-308 + f64.const 2.2250738585072014e-308 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2474 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + f64.const -1.5e-323 + f64.const 5e-324 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2475 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507202e-308 + f64.const 2.2250738585072004e-308 + f64.const 1.5e-323 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2476 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072024e-308 + f64.const 1.5e-323 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2477 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072024e-308 + f64.const -1.5e-323 + f64.const 0 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2478 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507203e-308 + f64.const 1.5e-323 + f64.const 5e-324 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2479 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507203e-308 + f64.const 2.225073858507204e-308 + f64.const 2.225073858507203e-308 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2480 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507203e-308 + f64.const -1.5e-323 + f64.const 5e-324 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2481 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072034e-308 + f64.const 2.225073858507204e-308 + f64.const 2.2250738585072034e-308 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2482 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072043e-308 + f64.const 2.225073858507204e-308 + f64.const 5e-324 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2483 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.4501477170144023e-308 + f64.const 4.450147717014403e-308 + f64.const 4.4501477170144023e-308 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2484 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.139237815555687e-305 + f64.const 5.696189077778436e-306 + f64.const 5.696189077778434e-306 + call $std/math/test_mod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2485 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 4.535662651062012 + call $~lib/math/NativeMathf.mod + f32.const -3.531186103820801 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2494 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -8.887990951538086 + call $~lib/math/NativeMathf.mod + f32.const 4.345239639282227 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2495 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.7636072635650635 + call $~lib/math/NativeMathf.mod + f32.const -0.09061169624328613 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2496 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 4.567535400390625 + call $~lib/math/NativeMathf.mod + f32.const -1.9641380310058594 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2497 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 4.811392307281494 + call $~lib/math/NativeMathf.mod + f32.const 4.455665111541748 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2498 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.450045585632324 + f32.const 0.6620717644691467 + call $~lib/math/NativeMathf.mod + f32.const -0.49139970541000366 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2499 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.858890056610107 + f32.const 0.052154526114463806 + call $~lib/math/NativeMathf.mod + f32.const 0.0357111394405365 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2500 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.7920545339584351 + f32.const 7.676402568817139 + call $~lib/math/NativeMathf.mod + f32.const -0.7920545339584351 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2501 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6157026886940002 + f32.const 2.0119025707244873 + call $~lib/math/NativeMathf.mod + f32.const 0.6157026886940002 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2502 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5587586760520935 + f32.const 0.03223983198404312 + call $~lib/math/NativeMathf.mod + f32.const -0.010681532323360443 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2503 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2506 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2507 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const 0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2508 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2509 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2510 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2511 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const 0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2512 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2513 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2514 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2515 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2516 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2517 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2518 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2519 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2520 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const 0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2521 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2522 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2523 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2524 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const 0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2525 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2526 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2527 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2528 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2529 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2530 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2531 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2532 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2533 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + call $~lib/math/NativeMathf.mod + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2534 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -inf + call $~lib/math/NativeMathf.mod + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2535 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2536 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2537 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2538 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + call $~lib/math/NativeMathf.mod + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2539 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -inf + call $~lib/math/NativeMathf.mod + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2540 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2541 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2542 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2543 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2544 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 0 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2545 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2546 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2547 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2548 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -0 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2549 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -0 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2550 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 2 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2551 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0.5 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2552 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2553 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 2 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2554 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -0.5 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2555 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2556 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2557 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2558 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2559 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + call $~lib/math/NativeMathf.mod + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2560 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + call $~lib/math/NativeMathf.mod + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2561 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2562 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const inf + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2563 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -inf + call $~lib/math/NativeMathf.mod + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2564 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -inf + call $~lib/math/NativeMathf.mod + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2565 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -inf + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2566 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + call $~lib/math/NativeMathf.mod + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2567 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const 0.5 + call $~lib/math/NativeMathf.mod + f32.const 0.25 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2568 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const 0.5 + call $~lib/math/NativeMathf.mod + f32.const -0.25 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2569 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const -0.5 + call $~lib/math/NativeMathf.mod + f32.const 0.25 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2570 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const -0.5 + call $~lib/math/NativeMathf.mod + f32.const -0.25 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2571 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.535662560676869 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2583 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + f64.const 2.1347118825587285e-06 + f64.const 0.3250160217285156 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2584 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2586 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + f64.const 44909.29941512966 + f64.const -0.26659080386161804 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2587 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2588 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + f64.const 1.1135177413458652 + f64.const -0.37168607115745544 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2589 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2590 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + f64.const 0.37690773521380183 + f64.const 0.32473301887512207 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2591 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2592 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2595 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2596 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 3 + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 2 + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2598 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2599 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0.5 + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2600 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2601 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2602 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0.5 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2603 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2604 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -2 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2605 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -3 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2606 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -4 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2607 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -inf + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2608 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2609 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2610 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 3 + f64.const -0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2611 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 2 + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2612 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const -0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2613 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0.5 + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2614 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2615 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2616 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0.5 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2617 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + f64.const -inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2618 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -2 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2619 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -3 + f64.const -inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2620 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -4 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2621 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -inf + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2622 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2623 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2624 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2625 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2626 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2627 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2628 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2629 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2630 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2631 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2632 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2633 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -0 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2634 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2635 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2636 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -inf + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2637 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 2 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2638 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2639 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -2 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2640 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -3 + f64.const -1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2641 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0.5 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2642 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2643 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2644 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -inf + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2645 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 3 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2646 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0.5 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2647 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -0.5 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2648 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -3 + f64.const 1 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2649 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 0.5 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2650 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 1.5 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2651 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 2 + f64.const 0.25 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2652 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 3 + f64.const -0.125 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2653 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const inf + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2654 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -inf + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2655 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2656 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const inf + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2657 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const -inf + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2658 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2659 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const inf + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2660 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const -inf + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2661 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2662 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2663 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2664 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -inf + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2665 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 3 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2666 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 2 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2667 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2668 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0.5 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2669 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0.5 + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2670 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2671 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -2 + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2672 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2673 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const inf + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2674 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2675 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 3 + f64.const -inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2676 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 2 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2677 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 1 + f64.const -inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2678 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 0.5 + f64.const inf + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2679 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -0.5 + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2680 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -1 + f64.const -0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2681 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -2 + f64.const 0 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2682 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2683 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2684 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const 1 + f64.const -2 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2685 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const -1 + f64.const -0.5 + f64.const 0 + call $std/math/test_pow + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2686 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2689 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2690 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2691 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2692 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2693 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2694 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2695 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2696 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + call $~lib/math/NativeMath.pow + i64.reinterpret_f64 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2698 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + call $~lib/math/NativeMath.pow + i64.reinterpret_f64 + i64.const -9223372036854775808 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2699 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 1 + call $~lib/math/NativeMath.pow + f64.const -1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2700 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + call $~lib/math/NativeMath.pow + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2701 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 1 + call $~lib/math/NativeMath.pow + f64.const -inf + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2702 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + call $~lib/math/NativeMath.pow + local.tee $0 + local.get $0 + f64.eq + if + i32.const 0 + i32.const 1056 + i32.const 2703 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2705 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const -inf + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2706 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const -1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2707 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const 2 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2708 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2709 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + call $~lib/math/NativeMath.pow + i64.reinterpret_f64 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2710 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -1 + call $~lib/math/NativeMath.pow + i64.reinterpret_f64 + i64.const -9223372036854775808 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2711 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + call $~lib/math/NativeMath.pow + local.tee $0 + local.get $0 + f64.eq + if + i32.const 0 + i32.const 1056 + i32.const 2712 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2714 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2715 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2716 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const 0.25 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2717 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2718 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2719 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 2 + call $~lib/math/NativeMath.pow + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2720 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 2 + call $~lib/math/NativeMath.pow + local.tee $0 + local.get $0 + f64.eq + if + i32.const 0 + i32.const 1056 + i32.const 2721 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2723 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2724 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0.5 + call $~lib/math/NativeMath.pow + local.tee $0 + local.get $0 + f64.eq + if + i32.const 0 + i32.const 1056 + i32.const 2725 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4 + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const 2 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2726 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2727 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2728 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 2729 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0.5 + call $~lib/math/NativeMath.pow + local.tee $0 + local.get $0 + f64.eq + if + i32.const 0 + i32.const 1056 + i32.const 2730 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 4.535662651062012 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2739 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -8.887990951538086 + call $~lib/math/NativeMathf.pow + f32.const 2.134714122803416e-06 + f32.const 0.1436440795660019 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2740 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.7636072635650635 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2741 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 4.567535400390625 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2742 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 4.811392307281494 + call $~lib/math/NativeMathf.pow + f32.const 44909.33203125 + f32.const -0.05356409028172493 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2743 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.450045585632324 + f32.const 0.6620717644691467 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2744 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.858890056610107 + f32.const 0.052154526114463806 + call $~lib/math/NativeMathf.pow + f32.const 1.1135177612304688 + f32.const 0.19122089445590973 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2745 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.7920545339584351 + f32.const 7.676402568817139 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2746 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6157026886940002 + f32.const 2.0119025707244873 + call $~lib/math/NativeMathf.pow + f32.const 0.3769077658653259 + f32.const 0.337149053812027 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2747 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5587586760520935 + f32.const 0.03223983198404312 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2748 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2751 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2752 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 3 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2753 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 2 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2754 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2755 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2756 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2757 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2758 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0.5 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2759 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2760 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -2 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2761 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -3 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2762 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -4 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2763 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2764 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2765 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2766 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 3 + call $~lib/math/NativeMathf.pow + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2767 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 2 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2768 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2769 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2770 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2771 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2772 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0.5 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2773 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2774 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -2 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2775 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -3 + call $~lib/math/NativeMathf.pow + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2776 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -4 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2777 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2778 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2779 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2780 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2781 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2782 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2783 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2784 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2785 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2786 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2787 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2788 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2789 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2790 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2791 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2792 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2793 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 2 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2794 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2795 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -2 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2796 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -3 + call $~lib/math/NativeMathf.pow + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2797 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2798 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2799 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2800 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2801 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 3 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2802 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2803 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -0.5 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2804 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -3 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2805 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2806 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 1.5 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2807 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 2 + call $~lib/math/NativeMathf.pow + f32.const 0.25 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2808 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 3 + call $~lib/math/NativeMathf.pow + f32.const -0.125 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2809 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2810 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2811 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2812 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2813 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2814 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2815 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2816 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2817 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2818 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2819 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2820 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2821 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 3 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2822 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 2 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2823 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2824 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2825 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0.5 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2826 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2827 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -2 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2828 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2829 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2830 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2831 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 3 + call $~lib/math/NativeMathf.pow + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2832 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 2 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2833 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2834 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2835 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -0.5 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2836 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2837 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -2 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2838 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2839 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2840 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const -2 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2841 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2842 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2845 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2846 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754943508222875e-38 + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const 1.1754943508222875e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2847 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754943508222875e-38 + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const -1.1754943508222875e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2848 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3402823466385288598117041e14 + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const 3402823466385288598117041e14 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2849 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3402823466385288598117041e14 + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const -3402823466385288598117041e14 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2850 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 3402823466385288598117041e14 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2852 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1.1754943508222875e-38 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2853 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 3402823466385288598117041e14 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2854 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 17 + call $~lib/math/NativeMathf.pow + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2855 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 2 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2856 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1.1754943508222875e-38 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2857 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.100000023841858 + f32.const 101 + call $~lib/math/NativeMathf.pow + f32.const -15158.70703125 + f32.const -0.2798735499382019 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2859 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 19 + f32.const 5 + call $~lib/math/NativeMathf.pow + f32.const 2476099 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2861 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -19 + f32.const 5 + call $~lib/math/NativeMathf.pow + f32.const -2476099 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2862 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -193 + f32.const 3 + call $~lib/math/NativeMathf.pow + f32.const -7189057 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2863 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1201 + f32.const 2 + call $~lib/math/NativeMathf.pow + f32.const 1442401 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2864 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.312918663024902 + f32.const 17.122268676757812 + call $~lib/math/NativeMathf.pow + f32.const 624013315407872 + f32.const -0.14995409548282623 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2866 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 18.804489135742188 + f32.const 3.3214492797851562 + call $~lib/math/NativeMathf.pow + f32.const 17076.3515625 + f32.const 0.3042995035648346 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2867 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.290969371795654 + f32.const 9.60707950592041 + call $~lib/math/NativeMathf.pow + f32.const 194467360 + f32.const -0.10728006064891815 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2868 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 15.783316612243652 + f32.const 18.55087661743164 + call $~lib/math/NativeMathf.pow + f32.const 16889945384019652771840 + f32.const 0.09180249273777008 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2869 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 8.319306373596191 + f32.const 0.4197559952735901 + call $~lib/math/NativeMathf.pow + f32.const 2.43339204788208 + f32.const 0.009661106392741203 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2870 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.831245422363281 + f32.const 10.462174415588379 + call $~lib/math/NativeMathf.pow + f32.const 102690080 + f32.const -1.4237762661650777e-03 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2871 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.415773391723633 + f32.const 17.12181282043457 + call $~lib/math/NativeMathf.pow + f32.const 3619232.25 + f32.const 0.2961936891078949 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2872 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.03832307085394859 + f32.const 0.011254354380071163 + call $~lib/math/NativeMathf.pow + f32.const 0.9639571905136108 + f32.const -0.4840981066226959 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2873 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.4462971687316895 + f32.const 15.814705848693848 + call $~lib/math/NativeMathf.pow + f32.const 437749907456 + f32.const -0.40305933356285095 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2874 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 12.87027645111084 + f32.const 14.93734359741211 + call $~lib/math/NativeMathf.pow + f32.const 37522809982812160 + f32.const 0.10445278882980347 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2875 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2877 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2878 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2879 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2880 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2881 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.401298464324817e-45 + f32.const 0 + call $~lib/math/NativeMathf.pow + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2882 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2884 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2885 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2886 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 1 + call $~lib/math/NativeMathf.pow + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2887 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2889 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2890 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2891 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2892 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2893 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2894 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2895 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000001192092896 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2897 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2898 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000001192092896 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2899 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2900 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000001192092896 + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2902 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2903 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000001192092896 + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2904 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2905 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999999403953552 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2907 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2908 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2909 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.9999999403953552 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2910 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.401298464324817e-45 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2911 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2912 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1.401298464324817e-45 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2914 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1.401298464324817e-45 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2915 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -3402823466385288598117041e14 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2917 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -1.401298464324817e-45 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2918 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -3402823466385288598117041e14 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2919 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -2 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2920 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -1.401298464324817e-45 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2921 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2922 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -17 + call $~lib/math/NativeMathf.pow + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2923 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1.401298464324817e-45 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2925 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -1.401298464324817e-45 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2926 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 3402823466385288598117041e14 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2928 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 1.401298464324817e-45 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2929 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -3402823466385288598117041e14 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2930 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -1.401298464324817e-45 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2931 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 5 + call $~lib/math/NativeMathf.pow + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2932 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -5 + call $~lib/math/NativeMathf.pow + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2933 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 6 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2934 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -6 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2935 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 2.000000238418579 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2937 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 1.0000001192092896 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2938 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.401298464324817e-45 + f32.const -1.9999998807907104 + call $~lib/math/NativeMathf.pow + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2939 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -10 + f32.const 309 + call $~lib/math/NativeMathf.pow + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2941 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2942 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.802596928649634e-45 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 5.293955920339377e-23 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2944 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1210387714598537e-44 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 1.0587911840678754e-22 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2945 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.938735877055719e-39 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 5.421010862427522e-20 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2946 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.877471754111438e-39 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const 1701411834604692317316873e14 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2947 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754943508222875e-38 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 1.0842021724855044e-19 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2948 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754943508222875e-38 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const 8507059173023461586584365e13 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2949 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.350988701644575e-38 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const 4253529586511730793292182e13 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2950 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.70197740328915e-38 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 2.168404344971009e-19 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2951 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.70197740328915e-38 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const 2126764793255865396646091e13 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2952 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.293955920339377e-23 + f32.const 2 + call $~lib/math/NativeMathf.pow + f32.const 2.802596928649634e-45 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2953 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.168404344971009e-19 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 4.656612873077393e-10 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2954 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3283064365386963e-10 + f32.const 2 + call $~lib/math/NativeMathf.pow + f32.const 5.421010862427522e-20 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2955 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.656612873077393e-10 + f32.const 2 + call $~lib/math/NativeMathf.pow + f32.const 2.168404344971009e-19 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2956 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1920928955078125e-07 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const 8388608 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2957 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.000034332275390625 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 0.005859375 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2958 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.00006103515625 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 0.0078125 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2959 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.00390625 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 0.0625 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2960 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.03515625 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 0.1875 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2961 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.0625 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 0.25 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2962 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.25 + f32.const 2 + call $~lib/math/NativeMathf.pow + f32.const 0.0625 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2963 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2126764793255865396646091e13 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 4611686018427387904 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2965 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2126764793255865396646091e13 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const 4.70197740328915e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2966 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4253529586511730793292182e13 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2967 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4253529586511730793292182e13 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const 2.350988701644575e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2968 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4253529586511730793292182e13 + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2969 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 8507059173023461586584365e13 + f32.const 0.5 + call $~lib/math/NativeMathf.pow + f32.const 9223372036854775808 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2970 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 8507059173023461586584365e13 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const 1.1754943508222875e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2971 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3402823466385288598117041e14 + f32.const inf + call $~lib/math/NativeMathf.pow + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2973 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3402823466385288598117041e14 + f32.const -inf + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2974 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1701411834604692317316873e14 + f32.const -2 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const -2.465190328815662e-32 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2976 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1701411834604692317316873e14 + f32.const -3 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const -0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2977 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1701411834604692317316873e14 + f32.const -255 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const -0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2978 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1701411834604692317316873e14 + f32.const -256 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const -0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2979 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1701411834604692317316873e14 + f32.const -257 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const -0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2980 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1701411834604692317316873e14 + f32.const -260 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const -0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2981 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1701411834604692317316873e14 + f32.const -261 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const -0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2982 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1701411834604692317316873e14 + f32.const -32767 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const -0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2983 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1701411834604692317316873e14 + f32.const -32768 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const -0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2984 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3402822046616616342500112e14 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const 2.938737278354183e-39 + f32.const -4.768373855768004e-07 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2985 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3402822046616616342500112e14 + f32.const -2 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const -6.162981699510909e-33 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2986 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1701411834604692317316873e14 + f32.const -32767 + call $~lib/math/NativeMathf.pow + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2988 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1701411834604692317316873e14 + f32.const -32768 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const -0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2989 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3402822046616616342500112e14 + f32.const -1 + call $~lib/math/NativeMathf.pow + f32.const -2.938737278354183e-39 + f32.const 4.768373855768004e-07 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2990 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3402822046616616342500112e14 + f32.const -2 + call $~lib/math/NativeMathf.pow + f32.const 0 + f32.const -6.162981699510909e-33 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 2991 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $~lib/bindings/dom/Math.random + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + loop $for-loop|0 + local.get $1 + f64.convert_i32_s + f64.const 1e6 + f64.lt + if + global.get $~lib/math/random_seeded + i32.eqz + if + call $~lib/builtins/seed + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + end + global.get $~lib/math/random_state0_64 + local.set $5 + global.get $~lib/math/random_state1_64 + local.tee $2 + global.set $~lib/math/random_state0_64 + local.get $2 + local.get $5 + local.get $5 + i64.const 23 + i64.shl + i64.xor + local.tee $5 + i64.const 17 + i64.shr_u + local.get $5 + i64.xor + i64.xor + local.get $2 + i64.const 26 + i64.shr_u + i64.xor + global.set $~lib/math/random_state1_64 + local.get $2 + i64.const 12 + i64.shr_u + i64.const 4607182418800017408 + i64.or + f64.reinterpret_i64 + f64.const -1 + f64.add + local.tee $0 + f64.const 1 + f64.lt + local.get $0 + f64.const 0 + f64.ge + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3000 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + call $~lib/bindings/dom/Math.random + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + loop $for-loop|1 + local.get $3 + f64.convert_i32_s + f64.const 1e6 + f64.lt + if + global.get $~lib/math/random_seeded + i32.eqz + if + call $~lib/builtins/seed + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + end + global.get $~lib/math/random_state0_32 + local.tee $1 + global.get $~lib/math/random_state1_32 + i32.xor + local.tee $6 + local.get $1 + i32.const 26 + i32.rotl + i32.xor + local.get $6 + i32.const 9 + i32.shl + i32.xor + global.set $~lib/math/random_state0_32 + local.get $6 + i32.const 13 + i32.rotl + global.set $~lib/math/random_state1_32 + local.get $1 + i32.const -1640531525 + i32.mul + i32.const 5 + i32.rotl + i32.const 5 + i32.mul + i32.const 9 + i32.shr_u + i32.const 1065353216 + i32.or + f32.reinterpret_i32 + f32.const -1 + f32.add + local.tee $4 + f32.const 1 + f32.lt + local.get $4 + f32.const 0 + f32.ge + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3008 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + f64.const -8.06684839057968 + f64.const -8 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3022 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 4 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3023 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -8 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3024 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -7 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3025 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 9 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3026 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 1 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3027 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3028 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 1 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3029 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 1 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3030 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -1 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3031 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3034 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3035 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3036 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3037 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3038 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3039 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3040 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3041 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -0 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3042 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 2 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3043 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const -1 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3044 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0000152587890625 + f64.const 1 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3045 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.0000152587890625 + f64.const -1 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3046 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999923706054688 + f64.const 1 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3047 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.9999923706054688 + f64.const -1 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3048 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.888609052210118e-31 + f64.const 0 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3049 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -7.888609052210118e-31 + f64.const -0 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3050 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -8 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3065 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 4 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3066 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -8 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3067 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -7 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3068 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 9 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3069 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 1 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3070 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3071 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 1 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3072 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 1 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3073 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -1 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3074 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3077 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3078 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3079 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3080 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3081 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3082 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3083 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 1 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3084 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -0 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3085 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 2 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3086 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const -1 + call $std/math/test_round + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3087 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000152587890625 + f32.const 1 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3088 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.0000152587890625 + f32.const -1 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3089 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999923706054688 + f32.const 1 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3090 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.9999923706054688 + f32.const -1 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3091 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.888609052210118e-31 + f32.const 0 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3092 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -7.888609052210118e-31 + f32.const -0 + call $std/math/test_roundf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3093 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3104 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const 1 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const -1 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -1 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/math/test_sign + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3122 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const 1 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const -1 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -1 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + call $std/math/test_signf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const 4.535662560676869 + call $~lib/math/NativeMath.rem + f64.const 1.0044767307740567 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3165 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const -8.88799136300345 + call $~lib/math/NativeMath.rem + f64.const 4.345239849338305 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2.763607337379588 + call $~lib/math/NativeMath.rem + f64.const -0.09061141541648476 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3167 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const 4.567535276842744 + call $~lib/math/NativeMath.rem + f64.const -1.9641383050707404 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3168 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 4.811392084359796 + call $~lib/math/NativeMath.rem + f64.const -0.35572720174700656 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3169 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.450045556060236 + f64.const 0.6620717923376739 + call $~lib/math/NativeMath.rem + f64.const 0.17067236731650248 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3170 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.858890253041697 + f64.const 0.05215452675006225 + call $~lib/math/NativeMath.rem + f64.const -0.016443286217702822 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3171 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.792054511984896 + f64.const 7.67640268511754 + call $~lib/math/NativeMath.rem + f64.const -0.792054511984896 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3172 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.615702673197924 + f64.const 2.0119025790324803 + call $~lib/math/NativeMath.rem + f64.const 0.615702673197924 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3173 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5587586823609152 + f64.const 0.03223983060263804 + call $~lib/math/NativeMath.rem + f64.const -0.0106815621160685 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3174 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + call $~lib/math/NativeMath.rem + f64.const 0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + call $~lib/math/NativeMath.rem + f64.const -0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3178 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + call $~lib/math/NativeMath.rem + f64.const 0.5 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3179 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 1 + call $~lib/math/NativeMath.rem + f64.const -0.5 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3180 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + call $~lib/math/NativeMath.rem + f64.const 0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 1 + call $~lib/math/NativeMath.rem + f64.const -0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3182 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 1 + call $~lib/math/NativeMath.rem + f64.const -0.5 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const 1 + call $~lib/math/NativeMath.rem + f64.const 0.5 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3184 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const 1 + call $~lib/math/NativeMath.rem + f64.const 0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3185 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const 1 + call $~lib/math/NativeMath.rem + f64.const -0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3186 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 1 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3188 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3189 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + call $~lib/math/NativeMath.rem + f64.const 0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3190 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + call $~lib/math/NativeMath.rem + f64.const -0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3191 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const -1 + call $~lib/math/NativeMath.rem + f64.const 0.5 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3192 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -1 + call $~lib/math/NativeMath.rem + f64.const -0.5 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -1 + call $~lib/math/NativeMath.rem + f64.const 0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3194 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + call $~lib/math/NativeMath.rem + f64.const -0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3195 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const -1 + call $~lib/math/NativeMath.rem + f64.const -0.5 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3196 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const -1 + call $~lib/math/NativeMath.rem + f64.const 0.5 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3197 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const -1 + call $~lib/math/NativeMath.rem + f64.const 0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3198 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const -1 + call $~lib/math/NativeMath.rem + f64.const -0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -1 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3201 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3202 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3203 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3204 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + call $~lib/math/NativeMath.rem + f64.const 0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3205 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -inf + call $~lib/math/NativeMath.rem + f64.const 0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3206 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3207 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3208 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + call $~lib/math/NativeMath.rem + f64.const -0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3210 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -inf + call $~lib/math/NativeMath.rem + f64.const -0 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3211 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3212 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3213 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3214 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3215 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 0 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3217 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3218 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -0 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3220 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3221 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 2 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3222 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0.5 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3223 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3224 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 2 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3225 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -0.5 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3226 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3227 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3228 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3229 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3230 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + call $~lib/math/NativeMath.rem + f64.const 1 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3231 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + call $~lib/math/NativeMath.rem + f64.const -1 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3232 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3233 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const inf + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3234 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -inf + call $~lib/math/NativeMath.rem + f64.const 1 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3235 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -inf + call $~lib/math/NativeMath.rem + f64.const -1 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3236 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -inf + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + call $~lib/math/NativeMath.rem + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3238 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const 0.5 + call $~lib/math/NativeMath.rem + f64.const -0.25 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3239 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const 0.5 + call $~lib/math/NativeMath.rem + f64.const 0.25 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3240 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.75 + f64.const -0.5 + call $~lib/math/NativeMath.rem + f64.const -0.25 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3241 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.75 + f64.const -0.5 + call $~lib/math/NativeMath.rem + f64.const 0.25 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3242 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8e-323 + f64.const inf + call $~lib/math/NativeMath.rem + f64.const 8e-323 + f64.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3243 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const 4.535662651062012 + call $~lib/math/NativeMathf.rem + f32.const 1.004476547241211 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3252 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const -8.887990951538086 + call $~lib/math/NativeMathf.rem + f32.const 4.345239639282227 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3253 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2.7636072635650635 + call $~lib/math/NativeMathf.rem + f32.const -0.09061169624328613 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3254 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const 4.567535400390625 + call $~lib/math/NativeMathf.rem + f32.const -1.9641380310058594 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3255 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 4.811392307281494 + call $~lib/math/NativeMathf.rem + f32.const -0.3557271957397461 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3256 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.450045585632324 + f32.const 0.6620717644691467 + call $~lib/math/NativeMathf.rem + f32.const 0.17067205905914307 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 7.858890056610107 + f32.const 0.052154526114463806 + call $~lib/math/NativeMathf.rem + f32.const -0.016443386673927307 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3258 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.7920545339584351 + f32.const 7.676402568817139 + call $~lib/math/NativeMathf.rem + f32.const -0.7920545339584351 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3259 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6157026886940002 + f32.const 2.0119025707244873 + call $~lib/math/NativeMathf.rem + f32.const 0.6157026886940002 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3260 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5587586760520935 + f32.const 0.03223983198404312 + call $~lib/math/NativeMathf.rem + f32.const -0.010681532323360443 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3261 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + call $~lib/math/NativeMathf.rem + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3264 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 1 + call $~lib/math/NativeMathf.rem + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3265 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 1 + call $~lib/math/NativeMathf.rem + f32.const 0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3266 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 1 + call $~lib/math/NativeMathf.rem + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3267 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + call $~lib/math/NativeMathf.rem + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3268 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 1 + call $~lib/math/NativeMathf.rem + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3269 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const 1 + call $~lib/math/NativeMathf.rem + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3270 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + f32.const 1 + call $~lib/math/NativeMathf.rem + f32.const 0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3271 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const 1 + call $~lib/math/NativeMathf.rem + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3272 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const 1 + call $~lib/math/NativeMathf.rem + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3273 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3274 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 1 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3275 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3276 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -1 + call $~lib/math/NativeMathf.rem + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3277 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -1 + call $~lib/math/NativeMathf.rem + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3278 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const -1 + call $~lib/math/NativeMathf.rem + f32.const 0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3279 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -1 + call $~lib/math/NativeMathf.rem + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3280 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -1 + call $~lib/math/NativeMathf.rem + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3281 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + call $~lib/math/NativeMathf.rem + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3282 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const -1 + call $~lib/math/NativeMathf.rem + f32.const -0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3283 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + f32.const -1 + call $~lib/math/NativeMathf.rem + f32.const 0.5 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3284 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const -1 + call $~lib/math/NativeMathf.rem + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3285 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2 + f32.const -1 + call $~lib/math/NativeMathf.rem + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3286 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -1 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3287 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -1 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -1 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3289 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3290 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3291 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + call $~lib/math/NativeMathf.rem + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3292 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -inf + call $~lib/math/NativeMathf.rem + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3293 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3294 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3295 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3296 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + call $~lib/math/NativeMathf.rem + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3297 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -inf + call $~lib/math/NativeMathf.rem + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3298 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3299 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3300 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3301 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3302 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 0 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3303 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3304 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3305 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3306 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -0 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3307 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -0 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3308 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 2 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3309 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0.5 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3310 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3311 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 2 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3312 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -0.5 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3313 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const nan:0x400000 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3314 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3315 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3316 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const nan:0x400000 + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3317 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + call $~lib/math/NativeMathf.rem + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3318 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + call $~lib/math/NativeMathf.rem + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3319 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3320 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const inf + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3321 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -inf + call $~lib/math/NativeMathf.rem + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3322 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -inf + call $~lib/math/NativeMathf.rem + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3323 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -inf + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3324 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + call $~lib/math/NativeMathf.rem + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3325 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const 0.5 + call $~lib/math/NativeMathf.rem + f32.const -0.25 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3326 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const 0.5 + call $~lib/math/NativeMathf.rem + f32.const 0.25 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3327 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.75 + f32.const -0.5 + call $~lib/math/NativeMathf.rem + f32.const -0.25 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3328 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.75 + f32.const -0.5 + call $~lib/math/NativeMathf.rem + f32.const 0.25 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3329 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.877471754111438e-39 + f32.const inf + call $~lib/math/NativeMathf.rem + f32.const 5.877471754111438e-39 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3330 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + call $~lib/math/NativeMath.sin + f64.const -0.9774292928781227 + f64.const -0.14564912021160126 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.sin + f64.const -0.9774292928781227 + f64.const -0.14564912021160126 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3342 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + call $~lib/math/NativeMath.sin + f64.const -0.9333544736965718 + f64.const -0.08813747018575668 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.sin + f64.const -0.9333544736965718 + f64.const -0.08813747018575668 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3343 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + call $~lib/math/NativeMath.sin + f64.const -0.8640924711706304 + f64.const -0.11743883043527603 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.sin + f64.const -0.8640924711706304 + f64.const -0.11743883043527603 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3344 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + call $~lib/math/NativeMath.sin + f64.const -0.24593894772615374 + f64.const -0.12697851657867432 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.sin + f64.const -0.24593894772615374 + f64.const -0.12697851657867432 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3345 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + call $~lib/math/NativeMath.sin + f64.const 0.15706789772028007 + f64.const -0.029550159350037575 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.sin + f64.const 0.15706789772028007 + f64.const -0.029550159350037575 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3346 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + call $~lib/math/NativeMath.sin + f64.const 0.6146844860113447 + f64.const -0.09976737946271896 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.sin + f64.const 0.6146844860113447 + f64.const -0.09976737946271896 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3347 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + call $~lib/math/NativeMath.sin + f64.const -0.39549242182823696 + f64.const -0.3668774962425232 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.sin + f64.const -0.39549242182823696 + f64.const -0.3668774962425232 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3348 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + call $~lib/math/NativeMath.sin + f64.const 0.5326763286672376 + f64.const -0.3550407588481903 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.sin + f64.const 0.5326763286672376 + f64.const -0.3550407588481903 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3349 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + call $~lib/math/NativeMath.sin + f64.const 0.6991102068649779 + f64.const -0.427672415971756 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.sin + f64.const 0.6991102068649779 + f64.const -0.427672415971756 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3350 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + call $~lib/math/NativeMath.sin + f64.const -0.6278312326301215 + f64.const -0.3828115463256836 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.sin + f64.const -0.6278312326301215 + f64.const -0.3828115463256836 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3351 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.313225746154785e-10 + call $~lib/math/NativeMath.sin + f64.const 9.313225746154785e-10 + f64.const 6.510416860692203e-04 + call $std/math/check + if (result i32) + f64.const 9.313225746154785e-10 + call $~lib/bindings/dom/Math.sin + f64.const 9.313225746154785e-10 + f64.const 6.510416860692203e-04 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3354 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9.313225746154785e-10 + call $~lib/math/NativeMath.sin + f64.const -9.313225746154785e-10 + f64.const -6.510416860692203e-04 + call $std/math/check + if (result i32) + f64.const -9.313225746154785e-10 + call $~lib/bindings/dom/Math.sin + f64.const -9.313225746154785e-10 + f64.const -6.510416860692203e-04 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3355 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + call $~lib/math/NativeMath.sin + f64.const 2.2250738585072014e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.2250738585072014e-308 + call $~lib/bindings/dom/Math.sin + f64.const 2.2250738585072014e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3356 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072014e-308 + call $~lib/math/NativeMath.sin + f64.const -2.2250738585072014e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.2250738585072014e-308 + call $~lib/bindings/dom/Math.sin + f64.const -2.2250738585072014e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3357 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + call $~lib/math/NativeMath.sin + f64.const 5e-324 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 5e-324 + call $~lib/bindings/dom/Math.sin + f64.const 5e-324 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3358 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5e-324 + call $~lib/math/NativeMath.sin + f64.const -5e-324 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -5e-324 + call $~lib/bindings/dom/Math.sin + f64.const -5e-324 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3359 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.sin + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.sin + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3360 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/math/NativeMath.sin + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.sin + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3361 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507202e-308 + call $~lib/math/NativeMath.sin + f64.const 2.225073858507202e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.225073858507202e-308 + call $~lib/bindings/dom/Math.sin + f64.const 2.225073858507202e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3362 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072024e-308 + call $~lib/math/NativeMath.sin + f64.const 2.2250738585072024e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.2250738585072024e-308 + call $~lib/bindings/dom/Math.sin + f64.const 2.2250738585072024e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3363 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.4501477170144003e-308 + call $~lib/math/NativeMath.sin + f64.const 4.4501477170144003e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.4501477170144003e-308 + call $~lib/bindings/dom/Math.sin + f64.const 4.4501477170144003e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3364 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.450147717014403e-308 + call $~lib/math/NativeMath.sin + f64.const 4.450147717014403e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.450147717014403e-308 + call $~lib/bindings/dom/Math.sin + f64.const 4.450147717014403e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3365 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.450147717014406e-308 + call $~lib/math/NativeMath.sin + f64.const 4.450147717014406e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.450147717014406e-308 + call $~lib/bindings/dom/Math.sin + f64.const 4.450147717014406e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3366 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.900295434028806e-308 + call $~lib/math/NativeMath.sin + f64.const 8.900295434028806e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 8.900295434028806e-308 + call $~lib/bindings/dom/Math.sin + f64.const 8.900295434028806e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3367 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1175870895385742e-08 + call $~lib/math/NativeMath.sin + f64.const 1.1175870895385742e-08 + f64.const 0.140625 + call $std/math/check + if (result i32) + f64.const 1.1175870895385742e-08 + call $~lib/bindings/dom/Math.sin + f64.const 1.1175870895385742e-08 + f64.const 0.140625 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3368 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4901161193847656e-08 + call $~lib/math/NativeMath.sin + f64.const 1.4901161193847656e-08 + f64.const 0.1666666716337204 + call $std/math/check + if (result i32) + f64.const 1.4901161193847656e-08 + call $~lib/bindings/dom/Math.sin + f64.const 1.4901161193847656e-08 + f64.const 0.1666666716337204 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507202e-308 + call $~lib/math/NativeMath.sin + f64.const -2.225073858507202e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.225073858507202e-308 + call $~lib/bindings/dom/Math.sin + f64.const -2.225073858507202e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3370 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072024e-308 + call $~lib/math/NativeMath.sin + f64.const -2.2250738585072024e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.2250738585072024e-308 + call $~lib/bindings/dom/Math.sin + f64.const -2.2250738585072024e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3371 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.4501477170144003e-308 + call $~lib/math/NativeMath.sin + f64.const -4.4501477170144003e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -4.4501477170144003e-308 + call $~lib/bindings/dom/Math.sin + f64.const -4.4501477170144003e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3372 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.450147717014403e-308 + call $~lib/math/NativeMath.sin + f64.const -4.450147717014403e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -4.450147717014403e-308 + call $~lib/bindings/dom/Math.sin + f64.const -4.450147717014403e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3373 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.450147717014406e-308 + call $~lib/math/NativeMath.sin + f64.const -4.450147717014406e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -4.450147717014406e-308 + call $~lib/bindings/dom/Math.sin + f64.const -4.450147717014406e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3374 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.900295434028806e-308 + call $~lib/math/NativeMath.sin + f64.const -8.900295434028806e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.900295434028806e-308 + call $~lib/bindings/dom/Math.sin + f64.const -8.900295434028806e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3375 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.1175870895385742e-08 + call $~lib/math/NativeMath.sin + f64.const -1.1175870895385742e-08 + f64.const -0.140625 + call $std/math/check + if (result i32) + f64.const -1.1175870895385742e-08 + call $~lib/bindings/dom/Math.sin + f64.const -1.1175870895385742e-08 + f64.const -0.140625 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3376 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.4901161193847656e-08 + call $~lib/math/NativeMath.sin + f64.const -1.4901161193847656e-08 + f64.const -0.1666666716337204 + call $std/math/check + if (result i32) + f64.const -1.4901161193847656e-08 + call $~lib/bindings/dom/Math.sin + f64.const -1.4901161193847656e-08 + f64.const -0.1666666716337204 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3377 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.4901161193847656e-08 + call $~lib/math/NativeMath.sin + f64.const -1.4901161193847656e-08 + f64.const -0.1666666716337204 + call $std/math/check + if (result i32) + f64.const -1.4901161193847656e-08 + call $~lib/bindings/dom/Math.sin + f64.const -1.4901161193847656e-08 + f64.const -0.1666666716337204 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3378 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-323 + call $~lib/math/NativeMath.sin + f64.const 1e-323 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1e-323 + call $~lib/bindings/dom/Math.sin + f64.const 1e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3379 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.4e-323 + call $~lib/math/NativeMath.sin + f64.const 4.4e-323 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.4e-323 + call $~lib/bindings/dom/Math.sin + f64.const 4.4e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3380 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.562684646268003e-309 + call $~lib/math/NativeMath.sin + f64.const 5.562684646268003e-309 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 5.562684646268003e-309 + call $~lib/bindings/dom/Math.sin + f64.const 5.562684646268003e-309 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3381 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1125369292536007e-308 + call $~lib/math/NativeMath.sin + f64.const 1.1125369292536007e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.1125369292536007e-308 + call $~lib/bindings/dom/Math.sin + f64.const 1.1125369292536007e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3382 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072004e-308 + call $~lib/math/NativeMath.sin + f64.const 2.2250738585072004e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.2250738585072004e-308 + call $~lib/bindings/dom/Math.sin + f64.const 2.2250738585072004e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3383 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507201e-308 + call $~lib/math/NativeMath.sin + f64.const 2.225073858507201e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.225073858507201e-308 + call $~lib/bindings/dom/Math.sin + f64.const 2.225073858507201e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3384 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-323 + call $~lib/math/NativeMath.sin + f64.const -1e-323 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1e-323 + call $~lib/bindings/dom/Math.sin + f64.const -1e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3385 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.4e-323 + call $~lib/math/NativeMath.sin + f64.const -4.4e-323 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -4.4e-323 + call $~lib/bindings/dom/Math.sin + f64.const -4.4e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3386 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5.562684646268003e-309 + call $~lib/math/NativeMath.sin + f64.const -5.562684646268003e-309 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -5.562684646268003e-309 + call $~lib/bindings/dom/Math.sin + f64.const -5.562684646268003e-309 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3387 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.1125369292536007e-308 + call $~lib/math/NativeMath.sin + f64.const -1.1125369292536007e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.1125369292536007e-308 + call $~lib/bindings/dom/Math.sin + f64.const -1.1125369292536007e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3388 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072004e-308 + call $~lib/math/NativeMath.sin + f64.const -2.2250738585072004e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.2250738585072004e-308 + call $~lib/bindings/dom/Math.sin + f64.const -2.2250738585072004e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3389 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507201e-308 + call $~lib/math/NativeMath.sin + f64.const -2.225073858507201e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.225073858507201e-308 + call $~lib/bindings/dom/Math.sin + f64.const -2.225073858507201e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3390 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.sin + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.sin + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3393 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/math/NativeMath.sin + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.sin + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3394 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/math/NativeMath.sin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.sin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3395 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/math/NativeMath.sin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.sin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3396 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.sin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.sin + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3397 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5707963267948966 + call $~lib/math/NativeMath.sin + f64.const 1.5707963267948966 + call $~lib/bindings/dom/Math.sin + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3400 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.141592653589793 + call $~lib/math/NativeMath.sin + f64.const 3.141592653589793 + call $~lib/bindings/dom/Math.sin + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3401 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3283064365386963e-10 + call $~lib/math/NativeMath.sin + f64.const 2.3283064365386963e-10 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3404 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.3283064365386963e-10 + call $~lib/math/NativeMath.sin + f64.const -2.3283064365386963e-10 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3405 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.39269908169872414 + call $~lib/math/NativeMath.sin + f64.const 0.3826834323650898 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3407 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.39269908169872414 + call $~lib/math/NativeMath.sin + f64.const -0.3826834323650898 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3408 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + call $~lib/math/NativeMath.sin + f64.const 0.479425538604203 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3411 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + call $~lib/math/NativeMath.sin + f64.const -0.479425538604203 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3412 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5707963267948966 + call $~lib/math/NativeMath.sin + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3413 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5707963267948966 + call $~lib/math/NativeMath.sin + f64.const -1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3414 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.141592653589793 + call $~lib/math/NativeMath.sin + f64.const 1.2246467991473532e-16 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3416 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 6911.503837897545 + call $~lib/math/NativeMath.sin + f64.const -7.047032979958965e-14 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3417 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.497787143782138 + call $~lib/math/NativeMath.sin + f64.const -0.7071067811865477 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3419 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.0685834705770345 + call $~lib/math/NativeMath.sin + f64.const 0.7071067811865474 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3420 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.63937979737193 + call $~lib/math/NativeMath.sin + f64.const 0.7071067811865483 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3421 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10.210176124166829 + call $~lib/math/NativeMath.sin + f64.const -0.7071067811865479 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3422 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 823549.6645826427 + call $~lib/math/NativeMath.sin + f64.const -3.2103381051568376e-11 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3423 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1329227995784915872903807e12 + call $~lib/math/NativeMath.sin + f64.const 0.377820109360752 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3426 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1329227995784915872903807e12 + call $~lib/math/NativeMath.sin + f64.const -0.377820109360752 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3427 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + call $~lib/math/NativeMathf.sin + f32.const -0.977429211139679 + f32.const 0.0801057294011116 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3436 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + call $~lib/math/NativeMathf.sin + f32.const -0.933354377746582 + f32.const 0.34475627541542053 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3437 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + call $~lib/math/NativeMathf.sin + f32.const -0.8640924692153931 + f32.const -0.468659907579422 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3438 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + call $~lib/math/NativeMathf.sin + f32.const -0.24593880772590637 + f32.const -0.3955177664756775 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3439 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + call $~lib/math/NativeMathf.sin + f32.const 0.1570674479007721 + f32.const -0.24006809294223785 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3440 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + call $~lib/math/NativeMathf.sin + f32.const 0.6146844625473022 + f32.const -0.07707194238901138 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3441 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + call $~lib/math/NativeMathf.sin + f32.const -0.39549243450164795 + f32.const -0.11720617115497589 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3442 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + call $~lib/math/NativeMathf.sin + f32.const 0.5326763391494751 + f32.const -0.16059114038944244 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3443 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + call $~lib/math/NativeMathf.sin + f32.const 0.699110209941864 + f32.const 0.26384368538856506 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3444 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + call $~lib/math/NativeMathf.sin + f32.const -0.627831220626831 + f32.const 0.005127954296767712 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3445 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/math/NativeMathf.sin + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3448 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + call $~lib/math/NativeMathf.sin + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3449 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + call $~lib/math/NativeMathf.sin + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3450 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + call $~lib/math/NativeMathf.sin + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3451 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + call $~lib/math/NativeMathf.sin + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3452 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.862645149230957e-09 + call $~lib/math/NativeMathf.sin + f32.const 1.862645149230957e-09 + f32.const 4.850638554015907e-12 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3455 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.862645149230957e-09 + call $~lib/math/NativeMathf.sin + f32.const -1.862645149230957e-09 + f32.const -4.850638554015907e-12 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3456 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754943508222875e-38 + call $~lib/math/NativeMathf.sin + f32.const 1.1754943508222875e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3457 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754943508222875e-38 + call $~lib/math/NativeMathf.sin + f32.const -1.1754943508222875e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3458 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + call $~lib/math/NativeMathf.sin + f32.const 1.401298464324817e-45 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3459 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.401298464324817e-45 + call $~lib/math/NativeMathf.sin + f32.const -1.401298464324817e-45 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3460 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.175494490952134e-38 + call $~lib/math/NativeMathf.sin + f32.const 1.175494490952134e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3461 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754946310819804e-38 + call $~lib/math/NativeMathf.sin + f32.const 1.1754946310819804e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3462 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3509880009953429e-38 + call $~lib/math/NativeMathf.sin + f32.const 2.3509880009953429e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3463 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.350988701644575e-38 + call $~lib/math/NativeMathf.sin + f32.const 2.350988701644575e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3464 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3509895424236536e-38 + call $~lib/math/NativeMathf.sin + f32.const 2.3509895424236536e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3465 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.70197740328915e-38 + call $~lib/math/NativeMathf.sin + f32.const 4.70197740328915e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3466 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1175870895385742e-08 + call $~lib/math/NativeMathf.sin + f32.const 1.1175870895385742e-08 + f32.const 2.6193447411060333e-10 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.4901161193847656e-08 + call $~lib/math/NativeMathf.sin + f32.const 1.4901161193847656e-08 + f32.const 3.1044086745701804e-10 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3468 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.000244140625 + call $~lib/math/NativeMathf.sin + f32.const 0.000244140625 + f32.const 0.0833333358168602 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3469 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.0003662109375 + call $~lib/math/NativeMathf.sin + f32.const 0.0003662109375 + f32.const 0.28125 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3470 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.175494490952134e-38 + call $~lib/math/NativeMathf.sin + f32.const -1.175494490952134e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3471 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754946310819804e-38 + call $~lib/math/NativeMathf.sin + f32.const -1.1754946310819804e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3472 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.3509880009953429e-38 + call $~lib/math/NativeMathf.sin + f32.const -2.3509880009953429e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3473 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.350988701644575e-38 + call $~lib/math/NativeMathf.sin + f32.const -2.350988701644575e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3474 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.3509895424236536e-38 + call $~lib/math/NativeMathf.sin + f32.const -2.3509895424236536e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3475 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -4.70197740328915e-38 + call $~lib/math/NativeMathf.sin + f32.const -4.70197740328915e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3476 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1175870895385742e-08 + call $~lib/math/NativeMathf.sin + f32.const -1.1175870895385742e-08 + f32.const -2.6193447411060333e-10 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3477 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.4901161193847656e-08 + call $~lib/math/NativeMathf.sin + f32.const -1.4901161193847656e-08 + f32.const -3.1044086745701804e-10 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3478 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.000244140625 + call $~lib/math/NativeMathf.sin + f32.const -0.000244140625 + f32.const -0.0833333358168602 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3479 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.0003662109375 + call $~lib/math/NativeMathf.sin + f32.const -0.0003662109375 + f32.const -0.28125 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3480 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.802596928649634e-45 + call $~lib/math/NativeMathf.sin + f32.const 2.802596928649634e-45 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3481 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.2611686178923354e-44 + call $~lib/math/NativeMathf.sin + f32.const 1.2611686178923354e-44 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3482 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.938735877055719e-39 + call $~lib/math/NativeMathf.sin + f32.const 2.938735877055719e-39 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3483 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.877471754111438e-39 + call $~lib/math/NativeMathf.sin + f32.const 5.877471754111438e-39 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3484 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754940705625946e-38 + call $~lib/math/NativeMathf.sin + f32.const 1.1754940705625946e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3485 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754942106924411e-38 + call $~lib/math/NativeMathf.sin + f32.const 1.1754942106924411e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3486 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.802596928649634e-45 + call $~lib/math/NativeMathf.sin + f32.const -2.802596928649634e-45 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3487 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.2611686178923354e-44 + call $~lib/math/NativeMathf.sin + f32.const -1.2611686178923354e-44 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3488 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.938735877055719e-39 + call $~lib/math/NativeMathf.sin + f32.const -2.938735877055719e-39 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3489 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -5.877471754111438e-39 + call $~lib/math/NativeMathf.sin + f32.const -5.877471754111438e-39 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3490 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754940705625946e-38 + call $~lib/math/NativeMathf.sin + f32.const -1.1754940705625946e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3491 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754942106924411e-38 + call $~lib/math/NativeMathf.sin + f32.const -1.1754942106924411e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3492 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 255.99993896484375 + call $~lib/math/NativeMathf.sin + f32.const -0.9992055892944336 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3495 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5033165 + call $~lib/math/NativeMathf.sin + f32.const 0.5312945246696472 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3496 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 421657440 + call $~lib/math/NativeMathf.sin + f32.const -0.7397398948669434 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3497 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2147483392 + call $~lib/math/NativeMathf.sin + f32.const 0.2762770354747772 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3498 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 68719476736 + call $~lib/math/NativeMathf.sin + f32.const 0.9855440855026245 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3499 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 549755813888 + call $~lib/math/NativeMathf.sin + f32.const -0.9782648086547852 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3500 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3402823466385288598117041e14 + call $~lib/math/NativeMathf.sin + f32.const -0.5218765139579773 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3501 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -255.99993896484375 + call $~lib/math/NativeMathf.sin + f32.const 0.9992055892944336 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3502 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -5033165 + call $~lib/math/NativeMathf.sin + f32.const -0.5312945246696472 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3503 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -421657440 + call $~lib/math/NativeMathf.sin + f32.const 0.7397398948669434 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3504 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2147483392 + call $~lib/math/NativeMathf.sin + f32.const -0.2762770354747772 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3505 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -68719476736 + call $~lib/math/NativeMathf.sin + f32.const -0.9855440855026245 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3506 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -549755813888 + call $~lib/math/NativeMathf.sin + f32.const 0.9782648086547852 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3507 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3402823466385288598117041e14 + call $~lib/math/NativeMathf.sin + f32.const 0.5218765139579773 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3508 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -1593.5206801156262 + f64.const -0.2138727605342865 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3520 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 38.54878088685412 + f64.const 0.21537430584430695 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3521 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -2182.6307505145546 + f64.const 0.16213826835155487 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3522 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -343.2723926847529 + f64.const 0.20479513704776764 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3523 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 5291.7790755194055 + f64.const -0.48676517605781555 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3524 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.7114062568229157 + f64.const -0.4584641456604004 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3525 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.41790065258739445 + f64.const 0.37220045924186707 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3526 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.5917755935451237 + f64.const 0.46178996562957764 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3527 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.8538292008852542 + f64.const -0.07019051909446716 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3528 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.732097615653169 + f64.const 0.26858529448509216 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3529 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3532 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3533 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3534 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const 0 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3535 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_sinh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3536 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -1593.521240234375 + f32.const 0.1671663224697113 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3545 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 38.548770904541016 + f32.const -0.49340328574180603 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3546 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -2182.630859375 + f32.const 0.0849970355629921 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3547 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -343.2723388671875 + f32.const 0.0704190656542778 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3548 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 5291.78125 + f32.const -0.44362515211105347 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3549 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.7114062309265137 + f32.const 0.058103885501623154 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3550 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.4179006516933441 + f32.const 0.39349499344825745 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3551 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.5917755961418152 + f32.const -0.4183797240257263 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3552 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.8538292050361633 + f32.const 0.45992106199264526 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3553 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.7320976257324219 + f32.const -0.48159059882164 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3554 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3557 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3558 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3559 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3560 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_sinhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3561 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3573 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.0845238903256313 + f64.const 2.0845238903256313 + f64.const -0.07180261611938477 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.sqrt + f64.const 2.0845238903256313 + f64.const -0.07180261611938477 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3574 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3575 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3576 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.0441841217266385 + f64.const 3.0441841217266385 + f64.const -0.01546262577176094 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.sqrt + f64.const 3.0441841217266385 + f64.const -0.01546262577176094 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3577 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.8136251582267503 + f64.const 0.8136251582267503 + f64.const -0.08618157356977463 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.sqrt + f64.const 0.8136251582267503 + f64.const -0.08618157356977463 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3578 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3579 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7495063350104014 + f64.const 0.7495063350104014 + f64.const -0.0981396734714508 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.sqrt + f64.const 0.7495063350104014 + f64.const -0.0981396734714508 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3580 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.879859248170583 + f64.const 0.879859248170583 + f64.const -0.37124353647232056 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.sqrt + f64.const 0.879859248170583 + f64.const -0.37124353647232056 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3581 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3582 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.sqrt + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3586 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3587 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.sqrt + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3588 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.sqrt + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3589 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.sqrt + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3590 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3591 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2 + f64.const 2 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4 + call $~lib/bindings/dom/Math.sqrt + f64.const 2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3592 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.1434555694052576e-162 + f64.const 3.1434555694052576e-162 + f64.const 0.43537619709968567 + call $std/math/check + if (result i32) + f64.const 1e-323 + call $~lib/bindings/dom/Math.sqrt + f64.const 3.1434555694052576e-162 + f64.const 0.43537619709968567 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3593 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.849931087076416e-162 + f64.const 3.849931087076416e-162 + f64.const -0.45194002985954285 + call $std/math/check + if (result i32) + f64.const 1.5e-323 + call $~lib/bindings/dom/Math.sqrt + f64.const 3.849931087076416e-162 + f64.const -0.45194002985954285 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3594 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2227587494850775e-162 + f64.const 2.2227587494850775e-162 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 5e-324 + call $~lib/bindings/dom/Math.sqrt + f64.const 2.2227587494850775e-162 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3595 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -5e-324 + call $~lib/bindings/dom/Math.sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3596 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999999999999999 + f64.const 0.9999999999999999 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 0.9999999999999999 + call $~lib/bindings/dom/Math.sqrt + f64.const 0.9999999999999999 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.414213562373095 + f64.const 1.414213562373095 + f64.const -0.21107041835784912 + call $std/math/check + if (result i32) + f64.const 1.9999999999999998 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.414213562373095 + f64.const -0.21107041835784912 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3598 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 1.0000000000000002 + call $~lib/bindings/dom/Math.sqrt + f64.const 1 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3599 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4142135623730951 + f64.const 1.4142135623730951 + f64.const -0.27173060178756714 + call $std/math/check + if (result i32) + f64.const 2.0000000000000004 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.4142135623730951 + f64.const -0.27173060178756714 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3600 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 1.0000000000000002 + call $~lib/bindings/dom/Math.sqrt + f64.const 1 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3601 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999999999999999 + f64.const 0.9999999999999999 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 0.9999999999999999 + call $~lib/bindings/dom/Math.sqrt + f64.const 0.9999999999999999 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3602 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1797693134862315708145274e284 + call $~lib/bindings/dom/Math.sqrt + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3603 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1340780792994259561100831e130 + f64.const 1340780792994259561100831e130 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 1797693134862315708145274e284 + call $~lib/bindings/dom/Math.sqrt + f64.const 1340780792994259561100831e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3604 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 134078079299425926338769e131 + f64.const 134078079299425926338769e131 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 179769313486231490980915e285 + call $~lib/bindings/dom/Math.sqrt + f64.const 134078079299425926338769e131 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3605 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1340780792994258965674548e130 + f64.const 1340780792994258965674548e130 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 1797693134862314111473026e284 + call $~lib/bindings/dom/Math.sqrt + f64.const 1340780792994258965674548e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3606 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1340780792994258667961407e130 + f64.const 1340780792994258667961407e130 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 1797693134862313313136902e284 + call $~lib/bindings/dom/Math.sqrt + f64.const 1340780792994258667961407e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3607 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1340780792994258370248265e130 + f64.const 1340780792994258370248265e130 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 1797693134862312514800778e284 + call $~lib/bindings/dom/Math.sqrt + f64.const 1340780792994258370248265e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3608 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1340780792994258072535124e130 + f64.const 1340780792994258072535124e130 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 1797693134862311716464655e284 + call $~lib/bindings/dom/Math.sqrt + f64.const 1340780792994258072535124e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3609 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1340780792994257774821982e130 + f64.const 1340780792994257774821982e130 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 1797693134862310918128531e284 + call $~lib/bindings/dom/Math.sqrt + f64.const 1340780792994257774821982e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3610 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1340780792994257477108841e130 + f64.const 1340780792994257477108841e130 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 1797693134862310119792407e284 + call $~lib/bindings/dom/Math.sqrt + f64.const 1340780792994257477108841e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3611 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1340780792994257179395699e130 + f64.const 1340780792994257179395699e130 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 1797693134862309321456283e284 + call $~lib/bindings/dom/Math.sqrt + f64.const 1340780792994257179395699e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3612 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1340780792994256881682558e130 + f64.const 1340780792994256881682558e130 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 1797693134862308523120159e284 + call $~lib/bindings/dom/Math.sqrt + f64.const 1340780792994256881682558e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3613 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1340780792994256583969417e130 + f64.const 1340780792994256583969417e130 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 1797693134862307724784036e284 + call $~lib/bindings/dom/Math.sqrt + f64.const 1340780792994256583969417e130 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3614 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4916681462400417e-154 + f64.const 1.4916681462400417e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.225073858507203e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.4916681462400417e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3615 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4916681462400423e-154 + f64.const 1.4916681462400423e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.225073858507205e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.4916681462400423e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3616 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.491668146240043e-154 + f64.const 1.491668146240043e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.225073858507207e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.491668146240043e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3617 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4916681462400437e-154 + f64.const 1.4916681462400437e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.225073858507209e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.4916681462400437e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3618 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4916681462400443e-154 + f64.const 1.4916681462400443e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.225073858507211e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.4916681462400443e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3619 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.491668146240045e-154 + f64.const 1.491668146240045e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.2250738585072127e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.491668146240045e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3620 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4916681462400457e-154 + f64.const 1.4916681462400457e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.2250738585072147e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.4916681462400457e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3621 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4916681462400463e-154 + f64.const 1.4916681462400463e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.2250738585072167e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.4916681462400463e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3622 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.491668146240047e-154 + f64.const 1.491668146240047e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.2250738585072187e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.491668146240047e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3623 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4916681462400476e-154 + f64.const 1.4916681462400476e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.2250738585072207e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.4916681462400476e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3624 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4916681462400483e-154 + f64.const 1.4916681462400483e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.2250738585072226e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.4916681462400483e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3625 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.491668146240049e-154 + f64.const 1.491668146240049e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.2250738585072246e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.491668146240049e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3626 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4916681462400496e-154 + f64.const 1.4916681462400496e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.2250738585072266e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.4916681462400496e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3627 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4916681462400503e-154 + f64.const 1.4916681462400503e-154 + f64.const -0.5 + call $std/math/check + if (result i32) + f64.const 2.2250738585072286e-308 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.4916681462400503e-154 + f64.const -0.5 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3628 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.609958580499006 + f64.const 9.609958580499006 + f64.const 0.4998137056827545 + call $std/math/check + if (result i32) + f64.const 92.35130391890645 + call $~lib/bindings/dom/Math.sqrt + f64.const 9.609958580499006 + f64.const 0.4998137056827545 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3629 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.662295774757238 + f64.const 9.662295774757238 + f64.const -0.49979978799819946 + call $std/math/check + if (result i32) + f64.const 93.3599596388916 + call $~lib/bindings/dom/Math.sqrt + f64.const 9.662295774757238 + f64.const -0.49979978799819946 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3630 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.76834153215689 + f64.const 9.76834153215689 + f64.const -0.49997270107269287 + call $std/math/check + if (result i32) + f64.const 95.42049628886124 + call $~lib/bindings/dom/Math.sqrt + f64.const 9.76834153215689 + f64.const -0.49997270107269287 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3631 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.791790919890728 + f64.const 9.791790919890728 + f64.const 0.4998766779899597 + call $std/math/check + if (result i32) + f64.const 95.87916941885449 + call $~lib/bindings/dom/Math.sqrt + f64.const 9.791790919890728 + f64.const 0.4998766779899597 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3632 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.841140266698785 + f64.const 9.841140266698785 + f64.const 0.499801903963089 + call $std/math/check + if (result i32) + f64.const 96.84804174884022 + call $~lib/bindings/dom/Math.sqrt + f64.const 9.841140266698785 + f64.const 0.499801903963089 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3633 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.87098731175517 + f64.const 9.87098731175517 + f64.const 0.4997696280479431 + call $std/math/check + if (result i32) + f64.const 97.43639050883155 + call $~lib/bindings/dom/Math.sqrt + f64.const 9.87098731175517 + f64.const 0.4997696280479431 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3634 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.874693909120955 + f64.const 9.874693909120955 + f64.const 0.49999818205833435 + call $std/math/check + if (result i32) + f64.const 97.50957979883047 + call $~lib/bindings/dom/Math.sqrt + f64.const 9.874693909120955 + f64.const 0.49999818205833435 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3635 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.88963947466368 + f64.const 9.88963947466368 + f64.const -0.4999580681324005 + call $std/math/check + if (result i32) + f64.const 97.80496893882612 + call $~lib/bindings/dom/Math.sqrt + f64.const 9.88963947466368 + f64.const -0.4999580681324005 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3636 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.913383997849534 + f64.const 9.913383997849534 + f64.const 0.49979931116104126 + call $std/math/check + if (result i32) + f64.const 98.2751822888192 + call $~lib/bindings/dom/Math.sqrt + f64.const 9.913383997849534 + f64.const 0.49979931116104126 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3637 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.973611966023219 + f64.const 9.973611966023219 + f64.const -0.4999540448188782 + call $std/math/check + if (result i32) + f64.const 99.47293564880155 + call $~lib/bindings/dom/Math.sqrt + f64.const 9.973611966023219 + f64.const -0.4999540448188782 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3638 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10.028483001370914 + f64.const 10.028483001370914 + f64.const -0.49996453523635864 + call $std/math/check + if (result i32) + f64.const 100.57047130878539 + call $~lib/bindings/dom/Math.sqrt + f64.const 10.028483001370914 + f64.const -0.49996453523635864 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3639 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10.030431002144665 + f64.const 10.030431002144665 + f64.const 0.49975672364234924 + call $std/math/check + if (result i32) + f64.const 100.60954608878481 + call $~lib/bindings/dom/Math.sqrt + f64.const 10.030431002144665 + f64.const 0.49975672364234924 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3640 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10.033897104255344 + f64.const 10.033897104255344 + f64.const -0.4997771382331848 + call $std/math/check + if (result i32) + f64.const 100.67909109878379 + call $~lib/bindings/dom/Math.sqrt + f64.const 10.033897104255344 + f64.const -0.4997771382331848 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3641 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10.055977374615422 + f64.const 10.055977374615422 + f64.const 0.49988678097724915 + call $std/math/check + if (result i32) + f64.const 101.12268095877725 + call $~lib/bindings/dom/Math.sqrt + f64.const 10.055977374615422 + f64.const 0.49988678097724915 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3642 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 10.064927676281366 + f64.const 10.064927676281366 + f64.const 0.4999105632305145 + call $std/math/check + if (result i32) + f64.const 101.3027691287746 + call $~lib/bindings/dom/Math.sqrt + f64.const 10.064927676281366 + f64.const 0.4999105632305145 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3643 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.9591563149945874e-154 + f64.const 4.9591563149945874e-154 + f64.const -0.4998999834060669 + call $std/math/check + if (result i32) + f64.const 2.45932313565507e-307 + call $~lib/bindings/dom/Math.sqrt + f64.const 4.9591563149945874e-154 + f64.const -0.4998999834060669 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3644 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.490632353266584e-154 + f64.const 7.490632353266584e-154 + f64.const -0.4999343752861023 + call $std/math/check + if (result i32) + f64.const 5.610957305180409e-307 + call $~lib/bindings/dom/Math.sqrt + f64.const 7.490632353266584e-154 + f64.const -0.4999343752861023 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3645 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.62062254526548e-154 + f64.const 7.62062254526548e-154 + f64.const -0.49989569187164307 + call $std/math/check + if (result i32) + f64.const 5.8073887977408524e-307 + call $~lib/bindings/dom/Math.sqrt + f64.const 7.62062254526548e-154 + f64.const -0.49989569187164307 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3646 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.382205605013174e-154 + f64.const 8.382205605013174e-154 + f64.const 0.49980640411376953 + call $std/math/check + if (result i32) + f64.const 7.026137080471427e-307 + call $~lib/bindings/dom/Math.sqrt + f64.const 8.382205605013174e-154 + f64.const 0.49980640411376953 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3647 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.186238495268328e-154 + f64.const 9.186238495268328e-154 + f64.const -0.4999065697193146 + call $std/math/check + if (result i32) + f64.const 8.438697769194972e-307 + call $~lib/bindings/dom/Math.sqrt + f64.const 9.186238495268328e-154 + f64.const -0.4999065697193146 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3648 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.0773946591586944e-153 + f64.const 1.0773946591586944e-153 + f64.const -0.49997684359550476 + call $std/math/check + if (result i32) + f64.const 1.1607792515836795e-306 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.0773946591586944e-153 + f64.const -0.49997684359550476 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3649 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1325817333606962e-153 + f64.const 1.1325817333606962e-153 + f64.const -0.4999513030052185 + call $std/math/check + if (result i32) + f64.const 1.2827413827423193e-306 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.1325817333606962e-153 + f64.const -0.4999513030052185 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3650 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.3083044216117078e-153 + f64.const 1.3083044216117078e-153 + f64.const -0.49986395239830017 + call $std/math/check + if (result i32) + f64.const 1.7116604596087457e-306 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.3083044216117078e-153 + f64.const -0.49986395239830017 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3651 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4276460526639628e-153 + f64.const 1.4276460526639628e-153 + f64.const 0.4998403787612915 + call $std/math/check + if (result i32) + f64.const 2.038173251686994e-306 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.4276460526639628e-153 + f64.const 0.4998403787612915 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3652 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4736254818836879e-153 + f64.const 1.4736254818836879e-153 + f64.const 0.4999290406703949 + call $std/math/check + if (result i32) + f64.const 2.171572060856931e-306 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.4736254818836879e-153 + f64.const 0.4999290406703949 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3653 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5710314965589996e-153 + f64.const 1.5710314965589996e-153 + f64.const 0.49989044666290283 + call $std/math/check + if (result i32) + f64.const 2.4681399631804094e-306 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.5710314965589996e-153 + f64.const 0.49989044666290283 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3654 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5866799918131124e-153 + f64.const 1.5866799918131124e-153 + f64.const -0.4997701048851013 + call $std/math/check + if (result i32) + f64.const 2.5175533964200588e-306 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.5866799918131124e-153 + f64.const -0.4997701048851013 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3655 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.6266992797941982e-153 + f64.const 1.6266992797941982e-153 + f64.const 0.4998672902584076 + call $std/math/check + if (result i32) + f64.const 2.6461505468829625e-306 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.6266992797941982e-153 + f64.const 0.4998672902584076 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3656 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.9536395872248397e-153 + f64.const 1.9536395872248397e-153 + f64.const 0.49983471632003784 + call $std/math/check + if (result i32) + f64.const 3.8167076367720413e-306 + call $~lib/bindings/dom/Math.sqrt + f64.const 1.9536395872248397e-153 + f64.const 0.49983471632003784 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3657 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.1387664851161936e-153 + f64.const 2.1387664851161936e-153 + f64.const 0.49985939264297485 + call $std/math/check + if (result i32) + f64.const 4.5743220778562766e-306 + call $~lib/bindings/dom/Math.sqrt + f64.const 2.1387664851161936e-153 + f64.const 0.49985939264297485 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3658 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3667 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.084523916244507 + f32.const 2.084523916244507 + f32.const 0.3200402557849884 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3668 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3669 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3670 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3.0441842079162598 + f32.const 3.0441842079162598 + f32.const 0.05022354796528816 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3671 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.813625156879425 + f32.const 0.813625156879425 + f32.const 0.2240506112575531 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3672 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3673 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7495063543319702 + f32.const 0.7495063543319702 + f32.const 0.05895441770553589 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3674 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.879859209060669 + f32.const 0.879859209060669 + f32.const -0.4874873757362366 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3675 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3676 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3679 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3680 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3681 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3682 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3683 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3684 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3685 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + f32.const 2 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3686 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.293955920339377e-23 + f32.const 5.293955920339377e-23 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3687 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 6.483745598763743e-23 + f32.const 6.483745598763743e-23 + f32.const 0.37388554215431213 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3688 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3.743392066509216e-23 + f32.const 3.743392066509216e-23 + f32.const -0.20303145051002502 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3689 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3690 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 18446742974197923840 + f32.const 18446742974197923840 + f32.const -0.5 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3691 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3692 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999999403953552 + f32.const 0.9999999403953552 + f32.const 2.980232594040899e-08 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3693 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.9999999403953552 + f32.const 0.9999999403953552 + f32.const -0.5 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3694 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.4142134189605713 + f32.const 1.4142134189605713 + f32.const -0.4959246516227722 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3695 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.4142135381698608 + f32.const 1.4142135381698608 + f32.const 0.15052194893360138 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3696 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const -0.5 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3697 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.0000001192092896 + f32.const 1.0000001192092896 + f32.const 5.960463766996327e-08 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3698 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.4142136573791504 + f32.const 1.4142136573791504 + f32.const 0.08986179530620575 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3699 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.41421377658844 + f32.const 1.41421377658844 + f32.const 0.3827550709247589 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3700 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + call $~lib/math/NativeMath.tan + f64.const 4.626603542401633 + f64.const -0.2727603316307068 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.tan + f64.const 4.626603542401633 + f64.const -0.2727603316307068 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3712 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + call $~lib/math/NativeMath.tan + f64.const 2.600191705822202 + f64.const 0.2651003301143646 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.tan + f64.const 2.600191705822202 + f64.const 0.2651003301143646 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3713 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + call $~lib/math/NativeMath.tan + f64.const 1.7167408328741052 + f64.const -0.24687519669532776 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.tan + f64.const 1.7167408328741052 + f64.const -0.24687519669532776 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3714 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + call $~lib/math/NativeMath.tan + f64.const -0.2537322523453725 + f64.const -0.4679703712463379 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.tan + f64.const -0.2537322523453725 + f64.const -0.4679703712463379 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3715 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + call $~lib/math/NativeMath.tan + f64.const -0.15904195727191958 + f64.const -0.06704077869653702 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.tan + f64.const -0.15904195727191958 + f64.const -0.06704077869653702 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3716 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + call $~lib/math/NativeMath.tan + f64.const 0.7792919106910434 + f64.const -0.038056135177612305 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.tan + f64.const 0.7792919106910434 + f64.const -0.038056135177612305 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3717 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + call $~lib/math/NativeMath.tan + f64.const -0.43059952879543656 + f64.const -0.09242714196443558 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.tan + f64.const -0.43059952879543656 + f64.const -0.09242714196443558 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3718 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + call $~lib/math/NativeMath.tan + f64.const 0.62940368731874 + f64.const -0.321913480758667 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.tan + f64.const 0.62940368731874 + f64.const -0.321913480758667 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3719 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + call $~lib/math/NativeMath.tan + f64.const 0.9777574652949645 + f64.const -0.1966651827096939 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.tan + f64.const 0.9777574652949645 + f64.const -0.1966651827096939 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3720 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + call $~lib/math/NativeMath.tan + f64.const -0.8066186630209123 + f64.const -0.067665696144104 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.tan + f64.const -0.8066186630209123 + f64.const -0.067665696144104 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3721 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.313225746154785e-10 + call $~lib/math/NativeMath.tan + f64.const 9.313225746154785e-10 + f64.const -1.3020833721384406e-03 + call $std/math/check + if (result i32) + f64.const 9.313225746154785e-10 + call $~lib/bindings/dom/Math.tan + f64.const 9.313225746154785e-10 + f64.const -1.3020833721384406e-03 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3724 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -9.313225746154785e-10 + call $~lib/math/NativeMath.tan + f64.const -9.313225746154785e-10 + f64.const 1.3020833721384406e-03 + call $std/math/check + if (result i32) + f64.const -9.313225746154785e-10 + call $~lib/bindings/dom/Math.tan + f64.const -9.313225746154785e-10 + f64.const 1.3020833721384406e-03 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3725 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + call $~lib/math/NativeMath.tan + f64.const 2.2250738585072014e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.2250738585072014e-308 + call $~lib/bindings/dom/Math.tan + f64.const 2.2250738585072014e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3726 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072014e-308 + call $~lib/math/NativeMath.tan + f64.const -2.2250738585072014e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.2250738585072014e-308 + call $~lib/bindings/dom/Math.tan + f64.const -2.2250738585072014e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3727 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + call $~lib/math/NativeMath.tan + f64.const 5e-324 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 5e-324 + call $~lib/bindings/dom/Math.tan + f64.const 5e-324 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3728 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5e-324 + call $~lib/math/NativeMath.tan + f64.const -5e-324 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -5e-324 + call $~lib/bindings/dom/Math.tan + f64.const -5e-324 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3729 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.tan + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.tan + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3730 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/math/NativeMath.tan + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.tan + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3731 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7853981633974483 + call $~lib/math/NativeMath.tan + f64.const 0.9999999999999999 + f64.const -0.4484681189060211 + call $std/math/check + if (result i32) + f64.const 0.7853981633974483 + call $~lib/bindings/dom/Math.tan + f64.const 0.9999999999999999 + f64.const -0.4484681189060211 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3732 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.7853981633974483 + call $~lib/math/NativeMath.tan + f64.const -0.9999999999999999 + f64.const 0.4484681189060211 + call $std/math/check + if (result i32) + f64.const -0.7853981633974483 + call $~lib/bindings/dom/Math.tan + f64.const -0.9999999999999999 + f64.const 0.4484681189060211 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3733 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507202e-308 + call $~lib/math/NativeMath.tan + f64.const 2.225073858507202e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.225073858507202e-308 + call $~lib/bindings/dom/Math.tan + f64.const 2.225073858507202e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3734 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072024e-308 + call $~lib/math/NativeMath.tan + f64.const 2.2250738585072024e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.2250738585072024e-308 + call $~lib/bindings/dom/Math.tan + f64.const 2.2250738585072024e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3735 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.4501477170144003e-308 + call $~lib/math/NativeMath.tan + f64.const 4.4501477170144003e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.4501477170144003e-308 + call $~lib/bindings/dom/Math.tan + f64.const 4.4501477170144003e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3736 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.450147717014403e-308 + call $~lib/math/NativeMath.tan + f64.const 4.450147717014403e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.450147717014403e-308 + call $~lib/bindings/dom/Math.tan + f64.const 4.450147717014403e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3737 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.450147717014406e-308 + call $~lib/math/NativeMath.tan + f64.const 4.450147717014406e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.450147717014406e-308 + call $~lib/bindings/dom/Math.tan + f64.const 4.450147717014406e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3738 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 8.900295434028806e-308 + call $~lib/math/NativeMath.tan + f64.const 8.900295434028806e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 8.900295434028806e-308 + call $~lib/bindings/dom/Math.tan + f64.const 8.900295434028806e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3739 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1175870895385742e-08 + call $~lib/math/NativeMath.tan + f64.const 1.1175870895385742e-08 + f64.const -0.28125 + call $std/math/check + if (result i32) + f64.const 1.1175870895385742e-08 + call $~lib/bindings/dom/Math.tan + f64.const 1.1175870895385742e-08 + f64.const -0.28125 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3740 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.4901161193847656e-08 + call $~lib/math/NativeMath.tan + f64.const 1.4901161193847656e-08 + f64.const -0.3333333432674408 + call $std/math/check + if (result i32) + f64.const 1.4901161193847656e-08 + call $~lib/bindings/dom/Math.tan + f64.const 1.4901161193847656e-08 + f64.const -0.3333333432674408 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3741 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507202e-308 + call $~lib/math/NativeMath.tan + f64.const -2.225073858507202e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.225073858507202e-308 + call $~lib/bindings/dom/Math.tan + f64.const -2.225073858507202e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3742 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072024e-308 + call $~lib/math/NativeMath.tan + f64.const -2.2250738585072024e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.2250738585072024e-308 + call $~lib/bindings/dom/Math.tan + f64.const -2.2250738585072024e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3743 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.4501477170144003e-308 + call $~lib/math/NativeMath.tan + f64.const -4.4501477170144003e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -4.4501477170144003e-308 + call $~lib/bindings/dom/Math.tan + f64.const -4.4501477170144003e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3744 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.450147717014403e-308 + call $~lib/math/NativeMath.tan + f64.const -4.450147717014403e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -4.450147717014403e-308 + call $~lib/bindings/dom/Math.tan + f64.const -4.450147717014403e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3745 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.450147717014406e-308 + call $~lib/math/NativeMath.tan + f64.const -4.450147717014406e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -4.450147717014406e-308 + call $~lib/bindings/dom/Math.tan + f64.const -4.450147717014406e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3746 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.900295434028806e-308 + call $~lib/math/NativeMath.tan + f64.const -8.900295434028806e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.900295434028806e-308 + call $~lib/bindings/dom/Math.tan + f64.const -8.900295434028806e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3747 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.1175870895385742e-08 + call $~lib/math/NativeMath.tan + f64.const -1.1175870895385742e-08 + f64.const 0.28125 + call $std/math/check + if (result i32) + f64.const -1.1175870895385742e-08 + call $~lib/bindings/dom/Math.tan + f64.const -1.1175870895385742e-08 + f64.const 0.28125 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3748 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.4901161193847656e-08 + call $~lib/math/NativeMath.tan + f64.const -1.4901161193847656e-08 + f64.const 0.3333333432674408 + call $std/math/check + if (result i32) + f64.const -1.4901161193847656e-08 + call $~lib/bindings/dom/Math.tan + f64.const -1.4901161193847656e-08 + f64.const 0.3333333432674408 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3749 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-323 + call $~lib/math/NativeMath.tan + f64.const 1e-323 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1e-323 + call $~lib/bindings/dom/Math.tan + f64.const 1e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3750 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.4e-323 + call $~lib/math/NativeMath.tan + f64.const 4.4e-323 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.4e-323 + call $~lib/bindings/dom/Math.tan + f64.const 4.4e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3751 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.562684646268003e-309 + call $~lib/math/NativeMath.tan + f64.const 5.562684646268003e-309 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 5.562684646268003e-309 + call $~lib/bindings/dom/Math.tan + f64.const 5.562684646268003e-309 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3752 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1125369292536007e-308 + call $~lib/math/NativeMath.tan + f64.const 1.1125369292536007e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.1125369292536007e-308 + call $~lib/bindings/dom/Math.tan + f64.const 1.1125369292536007e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3753 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072004e-308 + call $~lib/math/NativeMath.tan + f64.const 2.2250738585072004e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.2250738585072004e-308 + call $~lib/bindings/dom/Math.tan + f64.const 2.2250738585072004e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3754 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.225073858507201e-308 + call $~lib/math/NativeMath.tan + f64.const 2.225073858507201e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 2.225073858507201e-308 + call $~lib/bindings/dom/Math.tan + f64.const 2.225073858507201e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3755 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-323 + call $~lib/math/NativeMath.tan + f64.const -1e-323 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1e-323 + call $~lib/bindings/dom/Math.tan + f64.const -1e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3756 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -4.4e-323 + call $~lib/math/NativeMath.tan + f64.const -4.4e-323 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -4.4e-323 + call $~lib/bindings/dom/Math.tan + f64.const -4.4e-323 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3757 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -5.562684646268003e-309 + call $~lib/math/NativeMath.tan + f64.const -5.562684646268003e-309 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -5.562684646268003e-309 + call $~lib/bindings/dom/Math.tan + f64.const -5.562684646268003e-309 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3758 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.1125369292536007e-308 + call $~lib/math/NativeMath.tan + f64.const -1.1125369292536007e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.1125369292536007e-308 + call $~lib/bindings/dom/Math.tan + f64.const -1.1125369292536007e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3759 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.2250738585072004e-308 + call $~lib/math/NativeMath.tan + f64.const -2.2250738585072004e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.2250738585072004e-308 + call $~lib/bindings/dom/Math.tan + f64.const -2.2250738585072004e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3760 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.225073858507201e-308 + call $~lib/math/NativeMath.tan + f64.const -2.225073858507201e-308 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -2.225073858507201e-308 + call $~lib/bindings/dom/Math.tan + f64.const -2.225073858507201e-308 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3761 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.3283064365386963e-10 + call $~lib/math/NativeMath.tan + f64.const 2.3283064365386963e-10 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3764 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.3283064365386963e-10 + call $~lib/math/NativeMath.tan + f64.const -2.3283064365386963e-10 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3765 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6875 + call $~lib/math/NativeMath.tan + f64.const 0.6875 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3766 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6875 + call $~lib/math/NativeMath.tan + f64.const -0.6875 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3767 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.39269908169872414 + call $~lib/math/NativeMath.tan + f64.const 0.39269908169872414 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3768 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6743358 + call $~lib/math/NativeMath.tan + f64.const 0.6743358 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3769 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.725290298461914e-09 + call $~lib/math/NativeMath.tan + f64.const 3.725290298461914e-09 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3770 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5707963267948966 + call $~lib/math/NativeMath.tan + f64.const 1.5707963267948966 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3771 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + call $~lib/math/NativeMath.tan + f64.const 0.5 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3773 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.107148717794091 + call $~lib/math/NativeMath.tan + f64.const 1.107148717794091 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3774 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5.497787143782138 + call $~lib/math/NativeMath.tan + f64.const 5.497787143782138 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3775 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 7.0685834705770345 + call $~lib/math/NativeMath.tan + f64.const 7.0685834705770345 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3776 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1647099.3291652855 + call $~lib/math/NativeMath.tan + f64.const 1647099.3291652855 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3777 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1647097.7583689587 + call $~lib/math/NativeMath.tan + f64.const 1647097.7583689587 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3778 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1329227995784915872903807e12 + call $~lib/math/NativeMath.tan + f64.const 1329227995784915872903807e12 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3779 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1329227995784915872903807e12 + call $~lib/math/NativeMath.tan + f64.const -1329227995784915872903807e12 + call $~lib/bindings/dom/Math.tan + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 3780 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/math/NativeMath.tan + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.tan + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3783 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/math/NativeMath.tan + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.tan + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3784 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/math/NativeMath.tan + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.tan + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3785 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/math/NativeMath.tan + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.tan + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3786 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.tan + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.tan + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3787 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + call $~lib/math/NativeMathf.tan + f32.const 4.626595497131348 + f32.const 0.2455666959285736 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3796 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + call $~lib/math/NativeMathf.tan + f32.const 2.6001901626586914 + f32.const 0.3652407228946686 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3797 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + call $~lib/math/NativeMathf.tan + f32.const 1.716740608215332 + f32.const 0.08169349282979965 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3798 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + call $~lib/math/NativeMathf.tan + f32.const -0.2537320852279663 + f32.const 0.23186513781547546 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3799 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + call $~lib/math/NativeMathf.tan + f32.const -0.15904149413108826 + f32.const -0.009332014247775078 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3800 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + call $~lib/math/NativeMathf.tan + f32.const 0.7792918682098389 + f32.const -0.06759700924158096 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3801 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + call $~lib/math/NativeMathf.tan + f32.const -0.43059954047203064 + f32.const 0.005771996453404427 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3802 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + call $~lib/math/NativeMathf.tan + f32.const 0.6294037103652954 + f32.const -0.16838163137435913 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3803 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + call $~lib/math/NativeMathf.tan + f32.const 0.977757453918457 + f32.const 0.38969388604164124 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3804 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + call $~lib/math/NativeMathf.tan + f32.const -0.8066186308860779 + f32.const 0.12294059991836548 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3805 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/math/NativeMathf.tan + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3808 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + call $~lib/math/NativeMathf.tan + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3809 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + call $~lib/math/NativeMathf.tan + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3810 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + call $~lib/math/NativeMathf.tan + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3811 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + call $~lib/math/NativeMathf.tan + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3812 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.862645149230957e-09 + call $~lib/math/NativeMathf.tan + f32.const 1.862645149230957e-09 + f32.const -9.701277108031814e-12 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3815 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.862645149230957e-09 + call $~lib/math/NativeMathf.tan + f32.const -1.862645149230957e-09 + f32.const 9.701277108031814e-12 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3816 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754943508222875e-38 + call $~lib/math/NativeMathf.tan + f32.const 1.1754943508222875e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3817 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754943508222875e-38 + call $~lib/math/NativeMathf.tan + f32.const -1.1754943508222875e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3818 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.401298464324817e-45 + call $~lib/math/NativeMathf.tan + f32.const 1.401298464324817e-45 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3819 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.401298464324817e-45 + call $~lib/math/NativeMathf.tan + f32.const -1.401298464324817e-45 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3820 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.175494490952134e-38 + call $~lib/math/NativeMathf.tan + f32.const 1.175494490952134e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3821 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754946310819804e-38 + call $~lib/math/NativeMathf.tan + f32.const 1.1754946310819804e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3822 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3509880009953429e-38 + call $~lib/math/NativeMathf.tan + f32.const 2.3509880009953429e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3823 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.350988701644575e-38 + call $~lib/math/NativeMathf.tan + f32.const 2.350988701644575e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3824 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.3509895424236536e-38 + call $~lib/math/NativeMathf.tan + f32.const 2.3509895424236536e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3825 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.70197740328915e-38 + call $~lib/math/NativeMathf.tan + f32.const 4.70197740328915e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3826 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1175870895385742e-08 + call $~lib/math/NativeMathf.tan + f32.const 1.1175870895385742e-08 + f32.const -5.238689482212067e-10 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3827 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.4901161193847656e-08 + call $~lib/math/NativeMathf.tan + f32.const 1.4901161193847656e-08 + f32.const -6.208817349140361e-10 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3828 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.000244140625 + call $~lib/math/NativeMathf.tan + f32.const 0.000244140625 + f32.const -0.1666666716337204 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3829 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.175494490952134e-38 + call $~lib/math/NativeMathf.tan + f32.const -1.175494490952134e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3830 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754946310819804e-38 + call $~lib/math/NativeMathf.tan + f32.const -1.1754946310819804e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3831 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.3509880009953429e-38 + call $~lib/math/NativeMathf.tan + f32.const -2.3509880009953429e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3832 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.350988701644575e-38 + call $~lib/math/NativeMathf.tan + f32.const 2.350988701644575e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3833 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.3509895424236536e-38 + call $~lib/math/NativeMathf.tan + f32.const -2.3509895424236536e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3834 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -4.70197740328915e-38 + call $~lib/math/NativeMathf.tan + f32.const -4.70197740328915e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3835 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1175870895385742e-08 + call $~lib/math/NativeMathf.tan + f32.const -1.1175870895385742e-08 + f32.const 5.238689482212067e-10 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3836 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.4901161193847656e-08 + call $~lib/math/NativeMathf.tan + f32.const -1.4901161193847656e-08 + f32.const 6.208817349140361e-10 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3837 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.000244140625 + call $~lib/math/NativeMathf.tan + f32.const -0.000244140625 + f32.const 0.1666666716337204 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3838 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.802596928649634e-45 + call $~lib/math/NativeMathf.tan + f32.const 2.802596928649634e-45 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3839 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.2611686178923354e-44 + call $~lib/math/NativeMathf.tan + f32.const 1.2611686178923354e-44 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3840 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2.938735877055719e-39 + call $~lib/math/NativeMathf.tan + f32.const 2.938735877055719e-39 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3841 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 5.877471754111438e-39 + call $~lib/math/NativeMathf.tan + f32.const 5.877471754111438e-39 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3842 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754940705625946e-38 + call $~lib/math/NativeMathf.tan + f32.const 1.1754940705625946e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3843 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1754942106924411e-38 + call $~lib/math/NativeMathf.tan + f32.const 1.1754942106924411e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3844 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.802596928649634e-45 + call $~lib/math/NativeMathf.tan + f32.const -2.802596928649634e-45 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3845 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.2611686178923354e-44 + call $~lib/math/NativeMathf.tan + f32.const -1.2611686178923354e-44 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3846 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -2.938735877055719e-39 + call $~lib/math/NativeMathf.tan + f32.const -2.938735877055719e-39 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3847 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -5.877471754111438e-39 + call $~lib/math/NativeMathf.tan + f32.const -5.877471754111438e-39 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3848 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754940705625946e-38 + call $~lib/math/NativeMathf.tan + f32.const -1.1754940705625946e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3849 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1754942106924411e-38 + call $~lib/math/NativeMathf.tan + f32.const -1.1754942106924411e-38 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3850 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.06684839057968 + f64.const -0.999999803096032 + f64.const 0.012793331407010555 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3862 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.345239849338305 + f64.const 0.9996636978961307 + f64.const 0.1573508232831955 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3863 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8.38143342755525 + f64.const -0.9999998950434862 + f64.const 0.27985066175460815 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3864 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6.531673581913484 + f64.const -0.9999957568392429 + f64.const -0.44285574555397034 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3865 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9.267056966972586 + f64.const 0.9999999821447234 + f64.const 0.4462755024433136 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3866 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.6619858980995045 + f64.const 0.5796835018635275 + f64.const 0.4892043173313141 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3867 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.4066039223853553 + f64.const -0.3855853099901652 + f64.const 0.35993871092796326 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3868 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5617597462207241 + f64.const 0.5092819248700439 + f64.const -0.39436522126197815 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3869 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.7741522965913037 + f64.const 0.6493374550318555 + f64.const -0.4899396002292633 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3870 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.6787637026394024 + f64.const -0.590715084799841 + f64.const -0.0145387789234519 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3871 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3874 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3875 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const 0 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3876 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -1 + f64.const 0 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3877 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/test_tanh + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3878 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.066848754882812 + f32.const -0.9999998211860657 + f32.const -0.3034979999065399 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3887 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4.345239639282227 + f32.const 0.9996637105941772 + f32.const 0.2154078334569931 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3888 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8.381433486938477 + f32.const -0.9999998807907104 + f32.const 0.23912210762500763 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3889 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6.531673431396484 + f32.const -0.999995768070221 + f32.const -0.18844597041606903 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3890 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9.267057418823242 + f32.const 1 + f32.const 0.1497807800769806 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3891 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.6619858741760254 + f32.const 0.5796834826469421 + f32.const -0.05590476095676422 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3892 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.40660393238067627 + f32.const -0.38558530807495117 + f32.const 0.349787175655365 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3893 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5617597699165344 + f32.const 0.5092819333076477 + f32.const -0.1528785079717636 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3894 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.7741522789001465 + f32.const 0.6493374705314636 + f32.const 0.4317026138305664 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3895 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.6787636876106262 + f32.const -0.5907150506973267 + f32.const 0.4079873859882355 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3896 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3899 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3900 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + f32.const 0 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3901 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -1 + f32.const 0 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3902 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/test_tanhf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3903 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8 + f64.const -8 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/dom/Math.trunc + f64.const -8 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3915 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4 + f64.const 4 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/dom/Math.trunc + f64.const 4 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3916 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -8 + f64.const -8 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/dom/Math.trunc + f64.const -8 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3917 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -6 + f64.const -6 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/dom/Math.trunc + f64.const -6 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3918 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9 + f64.const 9 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/dom/Math.trunc + f64.const 9 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3919 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/dom/Math.trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3920 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/dom/Math.trunc + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3921 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/dom/Math.trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3922 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/dom/Math.trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3923 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/dom/Math.trunc + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3924 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/dom/Math.trunc + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3927 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/dom/Math.trunc + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3928 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const 0 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/dom/Math.trunc + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3929 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/dom/Math.trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3930 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/dom/Math.trunc + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3931 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/dom/Math.trunc + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3932 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/dom/Math.trunc + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3933 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.5 + call $~lib/bindings/dom/Math.trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3934 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.5 + call $~lib/bindings/dom/Math.trunc + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3935 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 1.0000152587890625 + call $~lib/bindings/dom/Math.trunc + f64.const 1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3936 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -1.0000152587890625 + call $~lib/bindings/dom/Math.trunc + f64.const -1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3937 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 0.9999923706054688 + call $~lib/bindings/dom/Math.trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3938 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -0.9999923706054688 + call $~lib/bindings/dom/Math.trunc + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3939 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const 7.888609052210118e-31 + call $~lib/bindings/dom/Math.trunc + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3940 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const 0 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/dom/Math.trunc + f64.const -0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3941 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8 + f32.const -8 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3950 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 4 + f32.const 4 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3951 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -8 + f32.const -8 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3952 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -6 + f32.const -6 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3953 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 9 + f32.const 9 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3954 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3955 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3956 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3957 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3958 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3959 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3962 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3963 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3964 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3965 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3966 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3967 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3968 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3969 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3970 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3971 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -1 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3972 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3973 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3974 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3975 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const 0 + call $std/math/check + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 3976 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4602641186874283791 + i64.const -4616392916911125550 + i64.const -4628956453976145920 + i64.const -4626592471448962314 + i64.const -4630808324688838656 + call $std/math/test_sincos + i64.const 4616578323568966759 + i64.const -4616789907589610460 + i64.const -4632356642145435648 + i64.const -4623234040091605244 + i64.const -4630954342839484416 + call $std/math/test_sincos + i64.const -4602464091242371353 + i64.const -4617413764247143988 + i64.const -4630245256623816704 + i64.const -4620663195860462557 + i64.const -4641537901929168896 + call $std/math/test_sincos + i64.const -4604332007749985084 + i64.const -4625343132137557201 + i64.const -4629629133364658176 + i64.const 4606905765568473756 + i64.const -4621075345754292224 + call $std/math/test_sincos + i64.const 4621406507342668262 + i64.const 4594826987695694788 + i64.const -4639197561901547520 + i64.const -4616301417154991689 + i64.const 4602463851227643904 + call $std/math/test_sincos + i64.const 4604137858433287319 + i64.const 4603711805189578650 + i64.const -4631518618864058368 + i64.const 4605279855905985745 + i64.const 4593746800099196928 + call $std/math/test_sincos + i64.const -4622375691843501615 + i64.const -4622575858842575876 + i64.const -4623091339515396096 + i64.const 4606448054996611351 + i64.const -4624994927539912704 + call $std/math/test_sincos + i64.const 4603235101512779211 + i64.const 4602973141375866126 + i64.const -4623304571219869696 + i64.const 4605798183832360369 + i64.const -4624249509122146304 + call $std/math/test_sincos + i64.const 4605148163534189634 + i64.const 4604472244479532466 + i64.const -4621996155604041728 + i64.const 4604615492473651755 + i64.const -4632555521679818752 + call $std/math/test_sincos + i64.const -4619083057392940530 + i64.const -4619541816298850243 + i64.const -4622804297187328000 + i64.const 4605185968576882368 + i64.const 4599236402884902912 + call $std/math/test_sincos + f64.const 2 + f64.const 4 + call $~lib/math/NativeMath.imul + f64.const 8 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4017 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 8 + call $~lib/math/NativeMath.imul + f64.const -8 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4018 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2 + f64.const -2 + call $~lib/math/NativeMath.imul + f64.const 4 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4019 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4294967295 + f64.const 5 + call $~lib/math/NativeMath.imul + f64.const -5 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4020 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4294967294 + f64.const 5 + call $~lib/math/NativeMath.imul + f64.const -10 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4021 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.e+60 + f64.const 1.e+60 + call $~lib/math/NativeMath.imul + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4022 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.e+60 + f64.const -1.e+60 + call $~lib/math/NativeMath.imul + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4023 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.e+60 + f64.const -1.e+60 + call $~lib/math/NativeMath.imul + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4024 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.e+24 + f64.const 100 + call $~lib/math/NativeMath.imul + f64.const -2147483648 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4025 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + call $~lib/math/NativeMath.imul + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4026 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + call $~lib/math/NativeMath.imul + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4027 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + f64.const 1797693134862315708145274e284 + call $~lib/math/NativeMath.imul + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4028 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i64.const 0 + call $~lib/math/ipow64 + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4051 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i64.const 1 + call $~lib/math/ipow64 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4052 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i64.const 2 + call $~lib/math/ipow64 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4053 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i64.const 3 + call $~lib/math/ipow64 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4054 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 0 + call $~lib/math/ipow64 + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4056 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 1 + call $~lib/math/ipow64 + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4057 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 2 + call $~lib/math/ipow64 + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4058 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const 3 + call $~lib/math/ipow64 + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4059 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 0 + call $~lib/math/ipow64 + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4061 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 1 + call $~lib/math/ipow64 + i64.const 2 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4062 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 2 + call $~lib/math/ipow64 + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4063 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 3 + call $~lib/math/ipow64 + i64.const 8 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4064 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i64.const 0 + call $~lib/math/ipow64 + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4066 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i64.const 1 + call $~lib/math/ipow64 + i64.const -1 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4067 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i64.const 2 + call $~lib/math/ipow64 + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4068 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i64.const 3 + call $~lib/math/ipow64 + i64.const -1 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4069 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -2 + i64.const 0 + call $~lib/math/ipow64 + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4071 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -2 + i64.const 1 + call $~lib/math/ipow64 + i64.const -2 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4072 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -2 + i64.const 2 + call $~lib/math/ipow64 + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4073 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -2 + i64.const 3 + call $~lib/math/ipow64 + i64.const -8 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4074 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 63 + call $~lib/math/ipow64 + i64.const -9223372036854775808 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4076 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 3 + i64.const 40 + call $~lib/math/ipow64 + i64.const -6289078614652622815 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4077 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 64 + call $~lib/math/ipow64 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4078 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 3 + i64.const 41 + call $~lib/math/ipow64 + i64.const -420491770248316829 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4079 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 3 + i64.const 128 + call $~lib/math/ipow64 + i64.const -9204772141784466943 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4080 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i64.const -1 + call $~lib/math/ipow64 + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4082 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const -1 + call $~lib/math/ipow64 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4083 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 64 + call $~lib/math/ipow64 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4084 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + i64.const 128 + call $~lib/math/ipow64 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4085 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0.5 + call $~lib/math/NativeMath.pow + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4130 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + call $~lib/math/NativeMath.pow + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1056 + i32.const 4131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:std/math + ) +) diff --git a/tests/compiler/std/math.ts b/tests/compiler/std/math.ts index d9afeed0c2..9b8ec7f3e7 100644 --- a/tests/compiler/std/math.ts +++ b/tests/compiler/std/math.ts @@ -351,6 +351,7 @@ assert(test_acosh(NaN, NaN, 0.0, 0)); assert(test_acosh(Infinity, Infinity, 0.0, 0)); assert(test_acosh(1.0, 0.0, 0.0, 0)); assert(test_acosh(0.99999237060546875, NaN, 0.0, INVALID)); +assert(test_acosh(-9784.8207664738350, NaN, 0.0, INVALID)); assert(test_acosh(0.0, NaN, 0.0, INVALID)); assert(test_acosh(-0.0, NaN, 0.0, INVALID)); assert(test_acosh(-Infinity, NaN, 0.0, INVALID)); @@ -1557,31 +1558,31 @@ assert(test_exp2(reinterpret(0x3FE8C5DB097F7442), reinterpret(0x3FFB5C assert(test_exp2(reinterpret(0xBFE5B86EA8118A0E), reinterpret(0x3FE3FD8BA33216B9), reinterpret(0xBFD3F71A00000000), INEXACT)); // special -assert(test_exp2( 0, reinterpret(0x3FF0000000000000), 0, 0)); -assert(test_exp2( -0, reinterpret(0x3FF0000000000000), 0, 0)); -assert(test_exp2( 1, reinterpret(0x4000000000000000), 0, 0)); -assert(test_exp2( -1, reinterpret(0x3FE0000000000000), 0, 0)); +assert(test_exp2( 0.0, reinterpret(0x3FF0000000000000), 0, 0)); +assert(test_exp2( -0.0, reinterpret(0x3FF0000000000000), 0, 0)); +assert(test_exp2( 1.0, reinterpret(0x4000000000000000), 0, 0)); +assert(test_exp2( -1.0, reinterpret(0x3FE0000000000000), 0, 0)); assert(test_exp2( Infinity, Infinity, 0, 0)); assert(test_exp2( -Infinity, 0, 0, 0)); assert(test_exp2( NaN, NaN, 0, 0)); assert(test_exp2(reinterpret(0x3FFFF80000000000), reinterpret(0x400FF4EACA4391B6), reinterpret(0x3FC2E60C60000000), INEXACT)); -assert(test_exp2(reinterpret(0xC08FEF3333333333), reinterpret(0x1125FBEE2506B0), reinterpret(0xBFCC612EC0000000), INEXACT)); -assert(test_exp2(reinterpret(0xC08FF00000000000), reinterpret(0x10000000000000), 0, 0)); -assert(test_exp2(reinterpret(0xC08FF0CCCCCCCCCD), reinterpret(0xEEDB4008BD547), reinterpret(0x3FC966DFC0000000), INEXACT | UNDERFLOW)); -assert(test_exp2(reinterpret(0xC08FF80000000000), reinterpret(0x8000000000000), 0, 0)); +assert(test_exp2(reinterpret(0xC08FEF3333333333), reinterpret(0x001125FBEE2506B0), reinterpret(0xBFCC612EC0000000), INEXACT)); +assert(test_exp2(reinterpret(0xC08FF00000000000), reinterpret(0x0010000000000000), 0, 0)); +assert(test_exp2(reinterpret(0xC08FF0CCCCCCCCCD), reinterpret(0x000EEDB4008BD547), reinterpret(0x3FC966DFC0000000), INEXACT | UNDERFLOW)); +assert(test_exp2(reinterpret(0xC08FF80000000000), reinterpret(0x0008000000000000), 0, 0)); assert(test_exp2(reinterpret(0x408FFF3333333333), reinterpret(0x7FEDDB680117AA8E), reinterpret(0x3FD966DFC0000000), INEXACT)); assert(test_exp2(reinterpret(0x4090000000000000), Infinity, 0, INEXACT | UNDERFLOW)); assert(test_exp2(reinterpret(0x4090006666666666), Infinity, 0, INEXACT | UNDERFLOW)); assert(test_exp2(reinterpret(0x40091EB851EB851F), reinterpret(0x4021A167423FC31C), reinterpret(0x3FD9287B80000000), INEXACT)); -assert(test_exp2(reinterpret(0xC08FF40000000000), reinterpret(0xB504F333F9DE6), reinterpret(0xBFD2116600000000), INEXACT | UNDERFLOW)); -assert(test_exp2(reinterpret(0xC08FF80000000000), reinterpret(0x8000000000000), 0, 0)); -assert(test_exp2(reinterpret(0xC08FFC0000000000), reinterpret(0x5A827999FCEF3), reinterpret(0xBFC2116600000000), INEXACT | UNDERFLOW)); -assert(test_exp2(reinterpret(0xC090000000000000), reinterpret(0x4000000000000), 0, 0)); -assert(test_exp2(reinterpret(0xC090040000000000), reinterpret(0x2000000000000), 0, 0)); -assert(test_exp2(reinterpret(0xC090C80000000000), reinterpret(0x1), 0, 0)); -assert(test_exp2(reinterpret(0xC090CA0000000000), reinterpret(0x1), reinterpret(0x3FD2BEC340000000), INEXACT | UNDERFLOW)); -assert(test_exp2(reinterpret(0xC090CC0000000000), 0, reinterpret(0xBFE0000000000000), INEXACT | UNDERFLOW)); -assert(test_exp2(reinterpret(0xC0A0000000000000), 0, 0, INEXACT | UNDERFLOW)); +assert(test_exp2(reinterpret(0xC08FF40000000000), reinterpret(0x000B504F333F9DE6), reinterpret(0xBFD2116600000000), INEXACT | UNDERFLOW)); +assert(test_exp2(reinterpret(0xC08FF80000000000), reinterpret(0x0008000000000000), 0, 0)); +assert(test_exp2(reinterpret(0xC08FFC0000000000), reinterpret(0x0005A827999FCEF3), reinterpret(0xBFC2116600000000), INEXACT | UNDERFLOW)); +assert(test_exp2(reinterpret(0xC090000000000000), reinterpret(0x0004000000000000), 0, 0)); +assert(test_exp2(reinterpret(0xC090040000000000), reinterpret(0x0002000000000000), 0, 0)); +assert(test_exp2(reinterpret(0xC090C80000000000), reinterpret(1), 0, 0)); +assert(test_exp2(reinterpret(0xC090CA0000000000), reinterpret(1), reinterpret(0x3FD2BEC340000000), INEXACT | UNDERFLOW)); +assert(test_exp2(reinterpret(0xC090CC0000000000), 0, reinterpret(0xBFE0000000000000), INEXACT | UNDERFLOW)); +assert(test_exp2(reinterpret(0xC0A0000000000000), 0, 0, INEXACT | UNDERFLOW)); //////////////////////////////////////////////////////////////////////////////////////////////////// // Mathf.exp2 @@ -2694,8 +2695,8 @@ assert(NativeMath.pow(+Infinity, 0.0) == 1.0); assert(NativeMath.pow(-Infinity, 0.0) == 1.0); assert(NativeMath.pow(NaN, 0.0) == 1.0); -assert(NativeMath.pow(+0.0,+1.0) == +0.0); -assert(NativeMath.pow(-0.0,+1.0) == -0.0); +assert(Object.is(NativeMath.pow(+0.0,+1.0), +0.0)); +assert(Object.is(NativeMath.pow(-0.0,+1.0), -0.0)); assert(NativeMath.pow(-1.0, 1.0) == -1.0); assert(NativeMath.pow(+Infinity, 1.0) == +Infinity); assert(NativeMath.pow(-Infinity, 1.0) == -Infinity); @@ -2706,8 +2707,8 @@ assert(NativeMath.pow(-0.0,-1.0) == -Infinity); assert(NativeMath.pow(-1.0,-1.0) == -1.0); assert(NativeMath.pow( 0.5,-1.0) == +2.0); assert(NativeMath.pow( 1.0,-1.0) == +1.0); -assert(NativeMath.pow(+Infinity,-1.0) == +0.0); -assert(NativeMath.pow(-Infinity,-1.0) == -0.0); +assert(Object.is(NativeMath.pow(+Infinity,-1.0), +0.0)); +assert(Object.is(NativeMath.pow(-Infinity,-1.0), -0.0)); assert(isNaN(NativeMath.pow(NaN,-1.0))); assert(NativeMath.pow(+0.0, 2.0) == +0.0); @@ -3048,6 +3049,12 @@ assert(test_round(-0.999992370605468750, -1.0, 0.0, INEXACT)); assert(test_round(7.88860905221011805e-31, 0.0, 0.0, INEXACT)); assert(test_round(-7.88860905221011805e-31, -0.0, 0.0, INEXACT)); +assert(NativeMath.round( 9007199254740990.0) == 9007199254740990.0); // round(+2 ** 53) == +2 ** 53 +assert(NativeMath.round(-9007199254740990.0) == -9007199254740990.0); // round(-2 ** 53) == -2 ** 53 +assert(NativeMath.round( 9007199254740991.0) == 9007199254740991.0); // round(+(2 ** 53 - 1)) == +(2 ** 53 - 1) +assert(NativeMath.round(-9007199254740991.0) == -9007199254740991.0); // round(-(2 ** 53 - 1)) == -(2 ** 53 - 1) +assert(NativeMath.round(-1.7976931348623157e+308) == -1.7976931348623157e+308); + // Mathf.round ///////////////////////////////////////////////////////////////////////////////////// function test_roundf(value: f32, expected: f32, error: f32, flags: i32): bool { @@ -3129,7 +3136,7 @@ assert(NativeMath.signbit(-0.0) == true); assert(NativeMath.signbit(1.0) == false); assert(NativeMath.signbit(-1.0) == true); assert(NativeMath.signbit(+NaN) == false); -assert(NativeMath.signbit(-NaN) == false); +assert(NativeMath.signbit(-NaN) == true); assert(NativeMath.signbit(+Infinity) == false); assert(NativeMath.signbit(-Infinity) == true); @@ -3142,7 +3149,7 @@ assert(NativeMathf.signbit(-0.0) == true); assert(NativeMathf.signbit(1.0) == false); assert(NativeMathf.signbit(-1.0) == true); assert(NativeMathf.signbit(+NaN) == false); -assert(NativeMathf.signbit(-NaN) == false); +assert(NativeMathf.signbit(-NaN) == true); assert(NativeMathf.signbit(+Infinity) == false); assert(NativeMathf.signbit(-Infinity) == true); @@ -4074,6 +4081,8 @@ assert(ipow64(3, 128) == -9204772141784466943); // should overflow assert(ipow64(1, -1) == 1); assert(ipow64(2, -1) == 0); +assert(ipow64(2, 64) == 0); +assert(ipow64(2, 128) == 0); // integer pow operators @@ -4121,4 +4130,21 @@ assert(1 ** 0.5 == 1.0); assert(0 ** 0.5 == 0.0); assert(0 ** -1.0 == Infinity); assert(0.0 ** 0 == 1.0); -assert(1.0 ** 1 == 1.0); \ No newline at end of file +assert(1.0 ** 1 == 1.0); + +// Special cases for test constant fold correctness +assert(10.0 ** +308 == 1e+308); +assert(10.0 ** -308 == 1e-308); +assert(10.0 ** -323 == 1e-323); +assert(10.0 ** +208 == 1e+208); +assert(10.0 ** +64 == 1e+64); +assert(10.0 ** -64 == 1e-64); +assert(10.0 ** +53 == 1e+53); +assert(10.0 ** -53 == 1e-53); +assert(10.0 ** 0 == 1e+0); +assert(10.0 ** +5 == 1e+5); +assert(10.0 ** -5 == 1e-5); +assert(10.0 ** +3 == 1e+3); +assert(10.0 ** -3 == 1e-3); +assert(f32(10) ** 38 == f32(1e38)); +assert(f32(10) ** -5 == f32(1e-5)); diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat deleted file mode 100644 index 7becd266bf..0000000000 --- a/tests/compiler/std/math.untouched.wat +++ /dev/null @@ -1,59413 +0,0 @@ -(module - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $f32_f32_f32_i32_=>_i32 (func (param f32 f32 f32 i32) (result i32))) - (type $f64_f64_f64_i32_=>_i32 (func (param f64 f64 f64 i32) (result i32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $f32_f32_f32_f32_i32_=>_i32 (func (param f32 f32 f32 f32 i32) (result i32))) - (type $f64_f64_f64_f64_i32_=>_i32 (func (param f64 f64 f64 f64 i32) (result i32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $none_=>_f64 (func (result f64))) - (type $none_=>_none (func)) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i64_=>_none (func (param i64))) - (type $f64_=>_none (func (param f64))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i64_i64_i64_i64_i64_i32_=>_i32 (func (param i64 i64 i64 i64 i64 i32) (result i32))) - (type $f32_=>_i32 (func (param f32) (result i32))) - (type $f32_i32_f32_f32_i32_=>_i32 (func (param f32 i32 f32 f32 i32) (result i32))) - (type $f64_i32_f64_f64_i32_=>_i32 (func (param f64 i32 f64 f64 i32) (result i32))) - (type $f64_i64_=>_i32 (func (param f64 i64) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (type $none_=>_f32 (func (result f32))) - (type $f32_i32_=>_f32 (func (param f32 i32) (result f32))) - (type $f32_f32_f32_=>_f32 (func (param f32 f32 f32) (result f32))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) - (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) - (type $f64_f64_f64_=>_f64 (func (param f64 f64 f64) (result f64))) - (import "Math" "E" (global $~lib/bindings/Math/E f64)) - (import "Math" "LN2" (global $~lib/bindings/Math/LN2 f64)) - (import "Math" "LN10" (global $~lib/bindings/Math/LN10 f64)) - (import "Math" "LOG2E" (global $~lib/bindings/Math/LOG2E f64)) - (import "Math" "PI" (global $~lib/bindings/Math/PI f64)) - (import "Math" "SQRT1_2" (global $~lib/bindings/Math/SQRT1_2 f64)) - (import "Math" "SQRT2" (global $~lib/bindings/Math/SQRT2 f64)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "Math" "abs" (func $~lib/bindings/Math/abs (param f64) (result f64))) - (import "Math" "acos" (func $~lib/bindings/Math/acos (param f64) (result f64))) - (import "Math" "acosh" (func $~lib/bindings/Math/acosh (param f64) (result f64))) - (import "Math" "asin" (func $~lib/bindings/Math/asin (param f64) (result f64))) - (import "Math" "asinh" (func $~lib/bindings/Math/asinh (param f64) (result f64))) - (import "Math" "atan" (func $~lib/bindings/Math/atan (param f64) (result f64))) - (import "Math" "atanh" (func $~lib/bindings/Math/atanh (param f64) (result f64))) - (import "Math" "atan2" (func $~lib/bindings/Math/atan2 (param f64 f64) (result f64))) - (import "Math" "cbrt" (func $~lib/bindings/Math/cbrt (param f64) (result f64))) - (import "Math" "ceil" (func $~lib/bindings/Math/ceil (param f64) (result f64))) - (import "Math" "cos" (func $~lib/bindings/Math/cos (param f64) (result f64))) - (import "Math" "cosh" (func $~lib/bindings/Math/cosh (param f64) (result f64))) - (import "Math" "exp" (func $~lib/bindings/Math/exp (param f64) (result f64))) - (import "Math" "expm1" (func $~lib/bindings/Math/expm1 (param f64) (result f64))) - (import "Math" "pow" (func $~lib/bindings/Math/pow (param f64 f64) (result f64))) - (import "Math" "floor" (func $~lib/bindings/Math/floor (param f64) (result f64))) - (import "Math" "log" (func $~lib/bindings/Math/log (param f64) (result f64))) - (import "Math" "log10" (func $~lib/bindings/Math/log10 (param f64) (result f64))) - (import "Math" "log1p" (func $~lib/bindings/Math/log1p (param f64) (result f64))) - (import "Math" "log2" (func $~lib/bindings/Math/log2 (param f64) (result f64))) - (import "Math" "max" (func $~lib/bindings/Math/max (param f64 f64) (result f64))) - (import "Math" "min" (func $~lib/bindings/Math/min (param f64 f64) (result f64))) - (import "math" "mod" (func $std/math/mod (param f64 f64) (result f64))) - (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) - (import "env" "seed" (func $~lib/builtins/seed (result f64))) - (import "Math" "sign" (func $~lib/bindings/Math/sign (param f64) (result f64))) - (import "Math" "sin" (func $~lib/bindings/Math/sin (param f64) (result f64))) - (import "Math" "sinh" (func $~lib/bindings/Math/sinh (param f64) (result f64))) - (import "Math" "sqrt" (func $~lib/bindings/Math/sqrt (param f64) (result f64))) - (import "Math" "tan" (func $~lib/bindings/Math/tan (param f64) (result f64))) - (import "Math" "tanh" (func $~lib/bindings/Math/tanh (param f64) (result f64))) - (import "Math" "trunc" (func $~lib/bindings/Math/trunc (param f64) (result f64))) - (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s\00") - (data (i32.const 56) "\9f\de\e0\c3\f04\f7?\00\90\e6y\7f\cc\d7\bf\1f\e9,jx\13\f7?\00\00\0d\c2\eeo\d7\bf\a0\b5\fa\08`\f2\f6?\00\e0Q\13\e3\13\d7\bf}\8c\13\1f\a6\d1\f6?\00x(8[\b8\d6\bf\d1\b4\c5\0bI\b1\f6?\00x\80\90U]\d6\bf\ba\0c/3G\91\f6?\00\00\18v\d0\02\d6\bf#B\"\18\9fq\f6?\00\90\90\86\ca\a8\d5\bf\d9\1e\a5\99OR\f6?\00P\03VCO\d5\bf\c4$\8f\aaV3\f6?\00@k\c37\f6\d4\bf\14\dc\9dk\b3\14\f6?\00P\a8\fd\a7\9d\d4\bfL\\\c6Rd\f6\f5?\00\a8\899\92E\d4\bfO,\91\b5g\d8\f5?\00\b8\b09\f4\ed\d3\bf\de\90[\cb\bc\ba\f5?\00p\8fD\ce\96\d3\bfx\1a\d9\f2a\9d\f5?\00\a0\bd\17\1e@\d3\bf\87VF\12V\80\f5?\00\80F\ef\e2\e9\d2\bf\d3k\e7\ce\97c\f5?\00\e008\1b\94\d2\bf\93\7f\a7\e2%G\f5?\00\88\da\8c\c5>\d2\bf\83E\06B\ff*\f5?\00\90\')\e1\e9\d1\bf\df\bd\b2\db\"\0f\f5?\00\f8H+m\95\d1\bf\d7\de4G\8f\f3\f4?\00\f8\b9\9agA\d1\bf@(\de\cfC\d8\f4?\00\98\ef\94\d0\ed\d0\bf\c8\a3x\c0>\bd\f4?\00\10\db\18\a5\9a\d0\bf\8a%\e0\c3\7f\a2\f4?\00\b8cR\e6G\d0\bf4\84\d4$\05\88\f4?\00\f0\86E\"\eb\cf\bf\0b-\19\1b\cem\f4?\00\b0\17uJG\cf\bfT\189\d3\d9S\f4?\000\10=D\a4\ce\bfZ\84\b4D\':\f4?\00\b0\e9D\0d\02\ce\bf\fb\f8\15A\b5 \f4?\00\f0w)\a2`\cd\bf\b1\f4>\da\82\07\f4?\00\90\95\04\01\c0\cc\bf\8f\feW]\8f\ee\f3?\00\10\89V) \cc\bf\e9L\0b\a0\d9\d5\f3?\00\10\81\8d\17\81\cb\bf+\c1\10\c0`\bd\f3?\00\d0\d3\cc\c9\e2\ca\bf\b8\dau+$\a5\f3?\00\90\12.@E\ca\bf\02\d0\9f\cd\"\8d\f3?\00\f0\1dhw\a8\c9\bf\1cz\84\c5[u\f3?\000Him\0c\c9\bf\e26\adI\ce]\f3?\00\c0E\a6 q\c8\bf@\d4M\98yF\f3?\000\14\b4\8f\d6\c7\bf$\cb\ff\ce\\/\f3?\00pb<\b8<\c7\bfI\0d\a1uw\18\f3?\00`7\9b\9a\a3\c6\bf\909>7\c8\01\f3?\00\a0\b7T1\0b\c6\bfA\f8\95\bbN\eb\f2?\000$v}s\c5\bf\d1\a9\19\02\n\d5\f2?\000\c2\8f{\dc\c4\bf*\fd\b7\a8\f9\be\f2?\00\00\d2Q,F\c4\bf\ab\1b\0cz\1c\a9\f2?\00\00\83\bc\8a\b0\c3\bf0\b5\14`r\93\f2?\00\00Ik\99\1b\c3\bf\f5\a1WW\fa}\f2?\00@\a4\90T\87\c2\bf\bf;\1d\9b\b3h\f2?\00\a0y\f8\b9\f3\c1\bf\bd\f5\8f\83\9dS\f2?\00\a0,%\c8`\c1\bf;\08\c9\aa\b7>\f2?\00 \f7W\7f\ce\c0\bf\b6@\a9+\01*\f2?\00\a0\feI\dc<\c0\bf2A\cc\96y\15\f2?\00\80K\bc\bdW\bf\bf\9b\fc\d2\1d \01\f2?\00@@\96\087\be\bf\0bHMI\f4\ec\f1?\00@\f9>\98\17\bd\bfie\8fR\f5\d8\f1?\00\a0\d8Ng\f9\bb\bf|~W\11#\c5\f1?\00`/ y\dc\ba\bf\e9&\cbt|\b1\f1?\00\80(\e7\c3\c0\b9\bf\b6\1a,\0c\01\9e\f1?\00\c0r\b3F\a6\b8\bf\bdp\b6{\b0\8a\f1?\00\00\ac\b3\01\8d\b7\bf\b6\bc\ef%\8aw\f1?\00\008E\f1t\b6\bf\da1L5\8dd\f1?\00\80\87m\0e^\b5\bf\dd_\'\90\b9Q\f1?\00\e0\a1\de\\H\b4\bfL\d22\a4\0e?\f1?\00\a0jM\d93\b3\bf\da\f9\10r\8b,\f1?\00`\c5\f8y \b2\bf1\b5\ec(0\1a\f1?\00 b\98F\0e\b1\bf\af4\84\da\fb\07\f1?\00\00\d2jl\fa\af\bf\b3kN\0f\ee\f5\f0?\00@wJ\8d\da\ad\bf\ce\9f*]\06\e4\f0?\00\00\85\e4\ec\bc\ab\bf!\a5,cD\d2\f0?\00\c0\12@\89\a1\a9\bf\1a\98\e2|\a7\c0\f0?\00\c0\023X\88\a7\bf\d16\c6\83/\af\f0?\00\80\d6g^q\a5\bf9\13\a0\98\db\9d\f0?\00\80eI\8a\\\a3\bf\df\e7R\af\ab\8c\f0?\00@\15d\e3I\a1\bf\fb(N/\9f{\f0?\00\80\eb\82\c0r\9e\bf\19\8f5\8c\b5j\f0?\00\80RR\f1U\9a\bf,\f9\ec\a5\eeY\f0?\00\80\81\cfb=\96\bf\90,\d1\cdII\f0?\00\00\aa\8c\fb(\92\bf\a9\ad\f0\c6\c68\f0?\00\00\f9 {1\8c\bf\a92y\13e(\f0?\00\00\aa]5\19\84\bfHs\ea\'$\18\f0?\00\00\ec\c2\03\12x\bf\95\b1\14\06\04\08\f0?\00\00$y\t\04`\bf\1a\fa&\f7\1f\e0\ef?\00\00\90\84\f3\efo?t\eaa\c2\1c\a1\ef?\00\00=5A\dc\87?.\99\81\b0\10c\ef?\00\80\c2\c4\a3\ce\93?\cd\ad\ee<\f6%\ef?\00\00\89\14\c1\9f\9b?\e7\13\91\03\c8\e9\ee?\00\00\11\ce\d8\b0\a1?\ab\b1\cbx\80\ae\ee?\00\c0\01\d0[\8a\a5?\9b\0c\9d\a2\1at\ee?\00\80\d8@\83\\\a9?\b5\99\n\83\91:\ee?\00\80W\efj\'\ad?V\9a`\t\e0\01\ee?\00\c0\98\e5\98u\b0?\98\bbw\e5\01\ca\ed?\00 \0d\e3\f5S\b2?\03\91|\0b\f2\92\ed?\00\008\8b\dd.\b4?\ce\\\fbf\ac\\\ed?\00\c0W\87Y\06\b6?\9d\de^\aa,\'\ed?\00\00j5v\da\b7?\cd,k>n\f2\ec?\00`\1cNC\ab\b9?\02y\a7\a2m\be\ec?\00`\0d\bb\c7x\bb?m\087m&\8b\ec?\00 \e72\13C\bd?\04X]\bd\94X\ec?\00`\deq1\n\bf?\8c\9f\bb3\b5&\ec?\00@\91+\15g\c0??\e7\ec\ee\83\f5\eb?\00\b0\92\82\85G\c1?\c1\96\dbu\fd\c4\eb?\000\ca\cdn&\c2?(J\86\0c\1e\95\eb?\00P\c5\a6\d7\03\c3?,>\ef\c5\e2e\eb?\00\103<\c3\df\c3?\8b\88\c9gH7\eb?\00\80zk6\ba\c4?J0\1d!K\t\eb?\00\f0\d1(9\93\c5?~\ef\f2\85\e8\db\ea?\00\f0\18$\cdj\c6?\a2=`1\1d\af\ea?\00\90f\ec\f8@\c7?\a7X\d3?\e6\82\ea?\00\f0\1a\f5\c0\15\c8?\8bs\t\ef@W\ea?\00\80\f6T)\e9\c8?\'K\ab\90*,\ea?\00@\f8\026\bb\c9?\d1\f2\93\13\a0\01\ea?\00\00,\1c\ed\8b\ca?\1b<\db$\9f\d7\e9?\00\d0\01\\Q[\cb?\90\b1\c7\05%\ae\e9?\00\c0\bc\ccg)\cc?/\ce\97\f2.\85\e9?\00`H\d55\f6\cc?uK\a4\ee\ba\\\e9?\00\c0F4\bd\c1\cd?8H\e7\9d\c64\e9?\00\e0\cf\b8\01\8c\ce?\e6Rg/O\0d\e9?\00\90\17\c0\tU\cf?\9d\d7\ff\8eR\e6\e8?\00\b8\1f\12l\0e\d0?|\00\cc\9f\ce\bf\e8?\00\d0\93\0e\b8q\d0?\0e\c3\be\da\c0\99\e8?\00p\86\9ek\d4\d0?\fb\17#\aa\'t\e8?\00\d0K3\876\d1?\08\9a\b3\ac\00O\e8?\00H#g\0d\98\d1?U>e\e8I*\e8?\00\80\cc\e0\ff\f8\d1?`\02\f4\95\01\06\e8?\00hc\d7_Y\d2?)\a3\e0c%\e2\e7?\00\a8\14\t0\b9\d2?\ad\b5\dcw\b3\be\e7?\00`C\10r\18\d3?\c2%\97g\aa\9b\e7?\00\18\ecm&w\d3?W\06\17\f2\07y\e7?\000\af\fbO\d5\d3?\0c\13\d6\db\caV\e7?\00\e0/\e3\ee2\d4?") - (data (i32.const 2104) "k\b6O\01\00\10\e6?<[B\91l\02~<\95\b4M\03\000\e6?A]\00H\ea\bf\8d\f6\05\eb\ff\ef\e6?S-\e2\1a\04\80~\bc\80\97\86\0e\00\10\e7?Ry\tqf\ff{<\12\e9g\fc\ff/\e7?$\87\bd&\e2\00\8c\89<\b9{F\13\000\e9?v\02\98KN\80\7f.\98\dd\ff\af\e9?7\93Z\8a\e0@\87\bcf\fbI\ed\ff\cf\e9?\00\e0\9b\c1\08\ce?O*\00\b0\ea?_?\ff<\04\fdi\bc\d1\1e\ae\d7\ff\cf\ea?\b4p\90\12\e7>\82\bcx\04Q\ee\ff\ef\ea?\a3\de\0e\e0>\06j<[\0de\db\ff\0f\eb?\b9\n\1f8\c8\06ZO\86\d0E\ff\8a<@\16\87\f9\ff\8f\eb?\f9\c3\c2\96w\fe|\f0\0f\00\f0\f4?\1cS\85\0b\89\7f\97<\d1K\dc\12\00\10\f5?6\a4fqe\04`\c9\03\00\b0\f5?\c0\0c\bf\n\08A\9f\bc\bc\19I\1d\00\d0\f5?)G%\fb*\81\98\bc\89z\b8\e7\ff\ef\f5?\04i\ed\80\b7~\94\bc") - (data (i32.const 4152) "\be\f3\f8y\eca\f6?\de\aa\8c\80\f7{\d5\bf=\88\afJ\edq\f5?\dbm\c0\a7\f0\be\d2\bf\b0\10\f0\f09\95\f4?g:Q\7f\ae\1e\d0\bf\85\03\b8\b0\95\c9\f3?\e9$\82\a6\d81\cb\bf\a5d\88\0c\19\0d\f3?Xw\c0\nOW\c6\bf\a0\8e\0b{\"^\f2?\00\81\9c\c7+\aa\c1\bf?4\1aJJ\bb\f1?^\0e\8c\cevN\ba\bf\ba\e5\8a\f0X#\f1?\cc\1caZ<\97\b1\bf\a7\00\99A?\95\f0?\1e\0c\e18\f4R\a2\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?\84Y\f2]\aa\a5\aa?\a0j\02\1f\b3\a4\ec?\b4.6\aaS^\bc?\e6\fcjW6 \eb?\08\db w\e5&\c5?-\aa\a1c\d1\c2\e9?pG\"\0d\86\c2\cb?\edAx\03\e6\86\e8?\e1~\a0\c8\8b\05\d1?bHS\f5\dcg\e7?\t\ee\b6W0\04\d4?") - (data (i32.const 4408) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") - (data (i32.const 4600) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (data (i32.const 4632) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\0dG;\b9*\89\bc)\a1\f5\14F\86\ef?\d3\88:`\04\b6t<\f6?\8b\e7.\90\ef?qr\9dQ\ec\c5\83<\83L\c7\fbQ\9a\ef?\f0\91\d3\8f\12\f7\8f\bc\da\90\a4\a2\af\a4\ef?}t#\e2\98\ae\8d\bc\f1g\8e-H\af\ef?\08 \aaA\bc\c3\8e<\'Za\ee\1b\ba\ef?2\eb\a9\c3\94+\84<\97\bak7+\c5\ef?\ee\85\d11\a9d\8a<@En[v\d0\ef?\ed\e3;\e4\ba7\8e\bc\14\be\9c\ad\fd\db\ef?\9d\cd\91M;\89w<\d8\90\9e\81\c1\e7\ef?\89\cc`A\c1\05S<\f1q\8f+\c2\f3\ef?") - (data (i32.const 6680) "\00\00\00\00\00\00\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") - (data (i32.const 6936) "\f8\ac\b1k($\f7?\00\b0\cd\ee_\t\e1\bf\a1\cc\d2f\f7\e1\f6?\00\d0v\bd\94\84\e0\bf\8a\d40\0e=\a1\f6?\00\f8\e8\aeC\01\e0\bf\85l\d02\eca\f6?\00@\0b6\c5\fe\de\bf\f8\98\11\95\fa#\f6?\00\e0\b7\1a\d9\fd\dd\bfl\02\cf\a4[\e7\f5?\00\90\c7\0c\ae\ff\dc\bf\b8O!Z\05\ac\f5?\00\a0\fd\118\04\dc\bf\1en\16\0f\edq\f5?\00\e0:2g\0b\db\bf5\f8\0bY\t9\f5?\00\b0-Z/\15\da\bf\dd\ada\edO\01\f5?\00`\f8Z\7f!\d9\bf\d0{H\8e\b8\ca\f4?\00\90q\b0M0\d8\bf\eeO3\b49\95\f4?\00\e0\a9\f9\89A\d7\bfi\d5\af\df\cb`\f4?\00\90\19\b5+U\d6\bfS\b9\e4Nf-\f4?\00\10\9b\a2#k\d5\bf\a6\d8\1d\11\01\fb\f3?\00\a0_\0fe\83\d4\bf6X\0c\b7\95\c9\f3?\00\a0\f67\e9\9d\d3\bfJ\fd\b6J\1c\99\f3?\00`\8dS\a1\ba\d2\bf\b5\99\e0\0c\8ei\f3?\00@\ca@\83\d9\d1\bf\b2\e7\13\82\e4:\f3?\00\e0@:\85\fa\d0\bf\b1\bd\85\19\19\0d\f3?\000\e72\9c\1d\d0\bf\d7q\b2\ca%\e0\f2?\00`\fa\a2}\85\ce\bf\82\cd\13\cf\04\b4\f2?\00\80=c\c8\d3\cc\bfP\cb|,\b0\88\f2?\00\a0\14L\03&\cb\bf\e5M\94c\"^\f2?\00\e0O/\1c|\c9\bf\b1\15\86=V4\f2?\00\00\80?\02\d6\c7\bf8\af>\e3F\0b\f2?\00\e0\05\1a\a73\c6\bf\dd\a3\cd\fd\ee\e2\f1?\00\00W\e9\f5\94\c4\bf09\0bXJ\bb\f1?\00\a0\e0$\e4\f9\c2\bf\00\"\7f\84S\94\f1?\00\c0\fdZYb\c1\bf<\d7\d5\c0\06n\f1?\00\80\bdu\9a\9c\bf\bf\c2\e4\b7G_H\f1?\00\c0\f9[W{\bc\bf\d1\85\00\adX#\f1?\00\80\f4\0f\c6`\b9\bf\'\"S\0f\f0\fe\f0?\00\00\b6G\e2L\b6\bf\8f:\d0w \db\f0?\00@\01\b2x?\b3\bf\d9\80Y\d6\e6\b7\f0?\00\c0B\1a}8\b0\bf\8d@{\fe>\95\f0?\00\00\b5\08\92o\aa\bf\83;\c5\ca%s\f0?\00\00wO\95z\a4\bf\\\1b\0d\e4\97Q\f0?\00\00\0c\c5\a8#\9d\bf\a2\8e \c1\910\f0?\00\00x)&j\91\bf!~\b3%\10\10\f0?\00\00\e8\d8\f8 w\bfk\a7\ca\f9~\c0\ef?\00\00P\b1S\fe\86?\84\f1\f6\d3eD\ef?\00\80\0f\e1\cc\1c\a1?\7f\10\84\9f\07\cc\ee?\00\80\8b\8c\fcM\ac?\e8Z\97\99:W\ee?\00@W\1e2\aa\b3?\e6=\bd\f0\d6\e5\ed?\00\80\8b\d0\a0\18\b9?\b38\ff\81\b6w\ed?\00@\04\da\e9r\be?C\e9Mr\b5\0c\ed?\00`\7fP\d2\dc\c1?cu\0e\dc\b2\a4\ec?\00\a0\de\03\abv\c4?Q\cb\d6\e8\8e?\ec?\00 \e2wC\07\c7?L\0c\02O+\dd\eb?\00@\a9\8b\de\8e\c9?\ca\15`\00l}\eb?\00\e0\d2j\b8\0d\cc?\8f3.n6 \eb?\00\e0\ce\af\n\84\ce?9P)&p\c5\ea?\00\80g\b4\ny\d0?\dd1\'\bc\01m\ea?\00\c0\01h\05\ac\d1?\8b\f1?\bc\d3\16\ea?\00\e0\fe\d4\11\db\d2?\ad\fegI\d1\c2\e9?\00\80\c5NF\06\d4?\02\99|\f4\e4p\e9?\00\f0:\t\be-\d5?\f2\bc\829\fb \e9?\00\d0P \90Q\d6?\f1Y\f7\87\01\d3\e8?\00\f0\ea\cd\d2q\d7?m\f6\b9\eb\e5\86\e8?\00\90}\85\9c\8e\d8?\94\b9X\b6\97<\e8?\00`\e1U\01\a8\d9?\"\10\c6\ff\05\f4\e7?\00\d0\d3n\18\be\da?\ca\15\14\18\"\ad\e7?\00\e0\a0\ae\f2\d0\db?\8c\ff\9e\f9\dcg\e7?\00@\bf=\a4\e0\dc?") - (data (i32.const 7960) "\8e\n\b9\12\00 \e6?\05\b6D\06\ab\04\89<\a64W\04\00`\e6?\a9\f7b\ea\9b\ffa<\c5\f2%\c3\ff\9f\e6?\ba\90<\cb\cf~\82<\04Z\b98\00\e0\e6?&\93sV\88\ff\88<\e3\94\99\e0\ff\1f\e7?\b1\82_\'@\fd\8a<\10\0eY\15\00`\e7?A\83#\b4u\fdr\bc\d5[e\12\00\a0\e7?v+$|\e6\08x<\a6\e9Y2\00\e0\e7?\b7\"\f6&\e4\08b\bc\d2\b2\b4\ed\ff\1f\e8?/\c9\a5\1eF\02\84\bc\c3\fc\fa-\00`\e8?\1f\9a\f2\a2\f4\f7m)\e0\ff\df\f2?\f9\a6\b2\da9|\9b<\82\f0\dc\f7\ff\1f\f3?TR\dcn3\f1}<`\8bZ\f0\ff_\f3?\eb1\cdLV\03\9e\bc\cc\ae\0e.\00\a0\f3?w\a4\d3K\e7\f0u<6\b2;\04\00\e0\f3?3\88\9d\14\cb}\9c<\ff\87\d1\02\00 \f4?(=-\cf\af\08~<\b1|8\0d\00`\f4?\a6\99e\857\08\82<\89\9fV\04\00\a0\f4?\d2\bcO\90\\\fa\89\bc\f3C5\04\00\e0\f4?)S\17\ed%\11x\bc\0f\7f\02\cc\ff\1f\f5?\dcTw\84\d8\83\98\e90.\90\80\91\bc") - (data (i32.const 8984) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\0d\f3?1\b6\f2\f3\9b\1d\d0\bf\a0\8e\0b{\"^\f2?\f0z;\1b\1d|\c9\bf?4\1aJJ\bb\f1?\9f<\af\93\e3\f9\c2\bf\ba\e5\8a\f0X#\f1?\\\8dx\bf\cb`\b9\bf\a7\00\99A?\95\f0?\ce_G\b6\9do\aa\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?=\f5$\9f\ca8\b3?\a0j\02\1f\b3\a4\ec?\ba\918T\a9v\c4?\e6\fcjW6 \eb?\d2\e4\c4J\0b\84\ce?-\aa\a1c\d1\c2\e9?\1ce\c6\f0E\06\d4?\edAx\03\e6\86\e8?\f8\9f\1b,\9c\8e\d8?bHS\f5\dcg\e7?\cc{\b1N\a4\e0\dc?") - (data (i32.const 9240) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\0d=\00\00\00\00\00`\f4?\00\00\00\00\00\00\00\00\00`\dc\cb\ad\f0\ce\bf$\af\86\9c\b7&+=\00\00\00\00\00@\f4?\00\00\00\00\00\00\00\00\00\f0*n\07\'\ce\bf\10\ff?TO/\17\bd\00\00\00\00\00 \f4?\00\00\00\00\00\00\00\00\00\c0Ok!\\\cd\bf\1bh\ca\bb\91\ba!=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\00\f4?\00\00\00\00\00\00\00\00\00\a0\9a\c7\f7\8f\cc\bf4\84\9fhOy\'=\00\00\00\00\00\e0\f3?\00\00\00\00\00\00\00\00\00\90-t\86\c2\cb\bf\8f\b7\8b1\b0N\19=\00\00\00\00\00\c0\f3?\00\00\00\00\00\00\00\00\00\c0\80N\c9\f3\ca\bff\90\cd?cN\ba<\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\a0\f3?\00\00\00\00\00\00\00\00\00\b0\e2\1f\bc#\ca\bf\ea\c1F\dcd\8c%\bd\00\00\00\00\00\80\f3?\00\00\00\00\00\00\00\00\00P\f4\9cZR\c9\bf\e3\d4\c1\04\d9\d1*\bd\00\00\00\00\00`\f3?\00\00\00\00\00\00\00\00\00\d0 e\a0\7f\c8\bf\t\fa\db\7f\bf\bd+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00@\f3?\00\00\00\00\00\00\00\00\00\e0\10\02\89\ab\c7\bfXJSr\90\db+=\00\00\00\00\00 \f3?\00\00\00\00\00\00\00\00\00\d0\19\e7\0f\d6\c6\bff\e2\b2\a3j\e4\10\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\00\f3?\00\00\00\00\00\00\00\00\00\90\a7p0\ff\c5\bf9P\10\9fC\9e\1e\bd\00\00\00\00\00\e0\f2?\00\00\00\00\00\00\00\00\00\b0\a1\e3\e5&\c5\bf\8f[\07\90\8b\de \bd\00\00\00\00\00\c0\f2?\00\00\00\00\00\00\00\00\00\80\cbl+M\c4\bf\11\0e\bd\00\00\00\00\00\e0\ed?\00\00\00\00\00\00\00\00\00`F\d1;\97\b1?\9b\9e\0dV]2%\bd\00\00\00\00\00\a0\ed?\00\00\00\00\00\00\00\00\00\e0\d1\a7\f5\bd\b3?\d7N\db\a5^\c8,=\00\00\00\00\00`\ed?\00\00\00\00\00\00\00\00\00\a0\97MZ\e9\b5?\1e\1d]<\06i,\bd\00\00\00\00\00@\ed?\00\00\00\00\00\00\00\00\00\c0\ea\n\d3\00\b7?2\ed\9d\a9\8d\1e\ec<\00\00\00\00\00\00\ed?\00\00\00\00\00\00\00\00\00@Y]^3\b9?\daG\bd:\\\11#=\00\00\00\00\00\c0\ec?\00\00\00\00\00\00\00\00\00`\ad\8d\c8j\bb?\e5h\f7+\80\90\13\bd\00\00\00\00\00\a0\ec?\00\00\00\00\00\00\00\00\00@\bc\01X\88\bc?\d3\acZ\c6\d1F&=\00\00\00\00\00`\ec?\00\00\00\00\00\00\00\00\00 \n\839\c7\be?\e0E\e6\afh\c0-\bd\00\00\00\00\00@\ec?\00\00\00\00\00\00\00\00\00\e0\db9\91\e8\bf?\fd\n\a1O\d64%\bd\00\00\00\00\00\00\ec?\00\00\00\00\00\00\00\00\00\e0\'\82\8e\17\c1?\f2\07-\cex\ef!=\00\00\00\00\00\e0\eb?\00\00\00\00\00\00\00\00\00\f0#~+\aa\c1?4\998D\8e\a7,=\00\00\00\00\00\a0\eb?\00\00\00\00\00\00\00\00\00\80\86\0ca\d1\c2?\a1\b4\81\cbl\9d\03=\00\00\00\00\00\80\eb?\00\00\00\00\00\00\00\00\00\90\15\b0\fce\c3?\89rK#\a8/\c6<\00\00\00\00\00@\eb?\00\00\00\00\00\00\00\00\00\b03\83=\91\c4?x\b6\fdTy\83%=\00\00\00\00\00 \eb?\00\00\00\00\00\00\00\00\00\b0\a1\e4\e5\'\c5?\c7}i\e5\e83&=\00\00\00\00\00\e0\ea?\00\00\00\00\00\00\00\00\00\10\8c\beNW\c6?x.<,\8b\cf\19=\00\00\00\00\00\c0\ea?\00\00\00\00\00\00\00\00\00pu\8b\12\f0\c6?\e1!\9c\e5\8d\11%\bd\00\00\00\00\00\a0\ea?\00\00\00\00\00\00\00\00\00PD\85\8d\89\c7?\05C\91p\10f\1c\bd\00\00\00\00\00`\ea?\00\00\00\00\00\00\00\00\00\009\eb\af\be\c8?\d1,\e9\aaT=\07\bd\00\00\00\00\00@\ea?\00\00\00\00\00\00\00\00\00\00\f7\dcZZ\c9?o\ff\a0X(\f2\07=\00\00\00\00\00\00\ea?\00\00\00\00\00\00\00\00\00\e0\8a<\ed\93\ca?i!VPCr(\bd\00\00\00\00\00\e0\e9?\00\00\00\00\00\00\00\00\00\d0[W\d81\cb?\aa\e1\acN\8d5\0c\bd\00\00\00\00\00\c0\e9?\00\00\00\00\00\00\00\00\00\e0;8\87\d0\cb?\b6\12TY\c4K-\bd\00\00\00\00\00\a0\e9?\00\00\00\00\00\00\00\00\00\10\f0\c6\fbo\cc?\d2+\96\c5r\ec\f1\bc\00\00\00\00\00`\e9?\00\00\00\00\00\00\00\00\00\90\d4\b0=\b1\cd?5\b0\15\f7*\ff*\bd\00\00\00\00\00@\e9?\00\00\00\00\00\00\00\00\00\10\e7\ff\0eS\ce?0\f4A`\'\12\c2<\00\00\00\00\00 \e9?\00\00\00\00\00\00\00\00\00\00\dd\e4\ad\f5\ce?\11\8e\bbe\15!\ca\bc\00\00\00\00\00\00\e9?\00\00\00\00\00\00\00\00\00\b0\b3l\1c\99\cf?0\df\0c\ca\ec\cb\1b=\00\00\00\00\00\c0\e8?\00\00\00\00\00\00\00\00\00XM`8q\d0?\91N\ed\16\db\9c\f8<\00\00\00\00\00\a0\e8?\00\00\00\00\00\00\00\00\00`ag-\c4\d0?\e9\ea<\16\8b\18\'=\00\00\00\00\00\80\e8?\00\00\00\00\00\00\00\00\00\e8\'\82\8e\17\d1?\1c\f0\a5c\0e!,\bd\00\00\00\00\00`\e8?\00\00\00\00\00\00\00\00\00\f8\ac\cb\\k\d1?\81\16\a5\f7\cd\9a+=\00\00\00\00\00@\e8?\00\00\00\00\00\00\00\00\00hZc\99\bf\d1?\b7\bdGQ\ed\a6,=\00\00\00\00\00 \e8?\00\00\00\00\00\00\00\00\00\b8\0emE\14\d2?\ea\baF\ba\de\87\n=\00\00\00\00\00\e0\e7?\00\00\00\00\00\00\00\00\00\90\dc|\f0\be\d2?\f4\04PJ\fa\9c*=\00\00\00\00\00\c0\e7?\00\00\00\00\00\00\00\00\00`\d3\e1\f1\14\d3?\b8 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - (local $4 f64) - local.get $0 - local.get $1 - f64.eq - if - i32.const 1 - return - end - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - local.get $0 - f64.ne - return - end - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $0 - local.get $1 - local.get $2 - call $std/math/ulperr - local.set $4 - local.get $4 - f64.abs - f64.const 1.5 - f64.ge - if - i32.const 0 - return - end - i32.const 1 - ) - (func $std/math/eulpf (param $0 f32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $2 - local.get $2 - i32.eqz - if - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $2 - i32.const 127 - i32.sub - i32.const 23 - i32.sub - ) - (func $~lib/math/NativeMathf.scalbn (param $0 f32) (param $1 i32) (result f32) - (local $2 f32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.set $2 - local.get $1 - i32.const 127 - i32.gt_s - if - local.get $2 - f32.const 1701411834604692317316873e14 - f32.mul - local.set $2 - local.get $1 - i32.const 127 - i32.sub - local.set $1 - local.get $1 - i32.const 127 - i32.gt_s - if - local.get $2 - f32.const 1701411834604692317316873e14 - f32.mul - local.set $2 - local.get $1 - i32.const 127 - i32.sub - local.tee $3 - i32.const 127 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $1 - end - else - local.get $1 - i32.const -126 - i32.lt_s - if - local.get $2 - f32.const 1.1754943508222875e-38 - f32.const 16777216 - f32.mul - f32.mul - local.set $2 - local.get $1 - i32.const 126 - i32.const 24 - i32.sub - i32.add - local.set $1 - local.get $1 - i32.const -126 - i32.lt_s - if - local.get $2 - f32.const 1.1754943508222875e-38 - f32.const 16777216 - f32.mul - f32.mul - local.set $2 - local.get $1 - i32.const 126 - i32.add - i32.const 24 - i32.sub - local.tee $3 - i32.const -126 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_s - select - local.set $1 - end - end - end - local.get $2 - i32.const 127 - local.get $1 - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - f32.mul - ) - (func $std/math/ulperrf (param $0 f32) (param $1 f32) (param $2 f32) (result f32) - (local $3 f32) - local.get $0 - local.get $0 - f32.ne - if (result i32) - local.get $1 - local.get $1 - f32.ne - else - i32.const 0 - end - if - f32.const 0 - return - end - local.get $0 - local.get $1 - f32.eq - if - local.get $0 - local.set $3 - local.get $3 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $3 - local.get $3 - f32.eq - i32.and - i32.const 0 - i32.ne - local.get $1 - local.set $3 - local.get $3 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $3 - local.get $3 - f32.eq - i32.and - i32.const 0 - i32.ne - i32.eq - if - local.get $2 - return - end - f32.const inf - return - end - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.eq - i32.eqz - if - f32.const 1701411834604692317316873e14 - local.get $0 - f32.copysign - local.set $0 - local.get $1 - f32.const 0.5 - f32.mul - local.set $1 - end - local.get $0 - local.get $1 - f32.sub - i32.const 0 - local.get $1 - call $std/math/eulpf - i32.sub - call $~lib/math/NativeMathf.scalbn - local.get $2 - f32.add - ) - (func $std/math/check (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - (local $4 f32) - local.get $0 - local.get $1 - f32.eq - if - i32.const 1 - return - end - local.get $1 - local.get $1 - f32.ne - if - local.get $0 - local.get $0 - f32.ne - return - end - i32.const 4 - i32.const 8 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $0 - local.get $1 - local.get $2 - call $std/math/ulperrf - local.set $4 - local.get $4 - f32.abs - f32.const 1.5 - f32.ge - if - i32.const 0 - return - end - i32.const 1 - ) - (func $std/math/test_scalbn (param $0 f64) (param $1 i32) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.scalbn - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - ) - (func $std/math/test_scalbnf (param $0 f32) (param $1 i32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.scalbn - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - ) - (func $std/math/test_abs (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - (local $4 f64) - local.get $0 - local.set $4 - local.get $4 - f64.abs - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/abs - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $std/math/test_absf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - (local $4 f32) - local.get $0 - local.set $4 - local.get $4 - f32.abs - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/R (param $0 f64) (result f64) - (local $1 f64) - (local $2 f64) - local.get $0 - f64.const 0.16666666666666666 - local.get $0 - f64.const -0.3255658186224009 - local.get $0 - f64.const 0.20121253213486293 - local.get $0 - f64.const -0.04005553450067941 - local.get $0 - f64.const 7.915349942898145e-04 - local.get $0 - f64.const 3.479331075960212e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $1 - f64.const 1 - local.get $0 - f64.const -2.403394911734414 - local.get $0 - f64.const 2.0209457602335057 - local.get $0 - f64.const -0.6882839716054533 - local.get $0 - f64.const 0.07703815055590194 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $2 - local.get $1 - local.get $2 - f64.div - ) - (func $~lib/math/NativeMath.acos (param $0 f64) (result f64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1072693248 - i32.ge_u - if - local.get $0 - i64.reinterpret_f64 - i32.wrap_i64 - local.set $3 - local.get $2 - i32.const 1072693248 - i32.sub - local.get $3 - i32.or - i32.const 0 - i32.eq - if - local.get $1 - i32.const 31 - i32.shr_u - if - f64.const 2 - f64.const 1.5707963267948966 - f64.mul - f32.const 7.52316384526264e-37 - f64.promote_f32 - f64.add - return - end - f64.const 0 - return - end - f64.const 0 - local.get $0 - local.get $0 - f64.sub - f64.div - return - end - local.get $2 - i32.const 1071644672 - i32.lt_u - if - local.get $2 - i32.const 1012924416 - i32.le_u - if - f64.const 1.5707963267948966 - f32.const 7.52316384526264e-37 - f64.promote_f32 - f64.add - return - end - f64.const 1.5707963267948966 - local.get $0 - f64.const 6.123233995736766e-17 - local.get $0 - local.get $0 - local.get $0 - f64.mul - call $~lib/math/R - f64.mul - f64.sub - f64.sub - f64.sub - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - f64.const 0.5 - local.get $0 - f64.const 0.5 - f64.mul - f64.add - local.set $6 - local.get $6 - f64.sqrt - local.set $4 - local.get $6 - call $~lib/math/R - local.get $4 - f64.mul - f64.const 6.123233995736766e-17 - f64.sub - local.set $5 - f64.const 2 - f64.const 1.5707963267948966 - local.get $4 - local.get $5 - f64.add - f64.sub - f64.mul - return - end - f64.const 0.5 - local.get $0 - f64.const 0.5 - f64.mul - f64.sub - local.set $6 - local.get $6 - f64.sqrt - local.set $4 - local.get $4 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $7 - local.get $6 - local.get $7 - local.get $7 - f64.mul - f64.sub - local.get $4 - local.get $7 - f64.add - f64.div - local.set $8 - local.get $6 - call $~lib/math/R - local.get $4 - f64.mul - local.get $8 - f64.add - local.set $5 - f64.const 2 - local.get $7 - local.get $5 - f64.add - f64.mul - ) - (func $std/math/test_acos (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.acos - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/acos - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/Rf (param $0 f32) (result f32) - (local $1 f32) - (local $2 f32) - local.get $0 - f32.const 0.16666586697101593 - local.get $0 - f32.const -0.04274342209100723 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - local.set $1 - f32.const 1 - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.add - local.set $2 - local.get $1 - local.get $2 - f32.div - ) - (func $~lib/math/NativeMathf.acos (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 f32) - (local $5 f32) - (local $6 f32) - (local $7 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1065353216 - i32.ge_u - if - local.get $2 - i32.const 1065353216 - i32.eq - if - local.get $1 - i32.const 31 - i32.shr_u - if - f32.const 2 - f32.const 1.570796251296997 - f32.mul - f32.const 7.52316384526264e-37 - f32.add - return - end - f32.const 0 - return - end - f32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.div - return - end - local.get $2 - i32.const 1056964608 - i32.lt_u - if - local.get $2 - i32.const 847249408 - i32.le_u - if - f32.const 1.570796251296997 - f32.const 7.52316384526264e-37 - f32.add - return - end - f32.const 1.570796251296997 - local.get $0 - f32.const 7.549789415861596e-08 - local.get $0 - local.get $0 - local.get $0 - f32.mul - call $~lib/math/Rf - f32.mul - f32.sub - f32.sub - f32.sub - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - f32.const 0.5 - local.get $0 - f32.const 0.5 - f32.mul - f32.add - local.set $3 - local.get $3 - f32.sqrt - local.set $5 - local.get $3 - call $~lib/math/Rf - local.get $5 - f32.mul - f32.const 7.549789415861596e-08 - f32.sub - local.set $4 - f32.const 2 - f32.const 1.570796251296997 - local.get $5 - local.get $4 - f32.add - f32.sub - f32.mul - return - end - f32.const 0.5 - local.get $0 - f32.const 0.5 - f32.mul - f32.sub - local.set $3 - local.get $3 - f32.sqrt - local.set $5 - local.get $5 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.set $6 - local.get $3 - local.get $6 - local.get $6 - f32.mul - f32.sub - local.get $5 - local.get $6 - f32.add - f32.div - local.set $7 - local.get $3 - call $~lib/math/Rf - local.get $5 - f32.mul - local.get $7 - f32.add - local.set $4 - f32.const 2 - local.get $6 - local.get $4 - f32.add - f32.mul - ) - (func $std/math/test_acosf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.acos - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.log1p (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - (local $14 f64) - (local $15 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - i32.const 1 - local.set $3 - f64.const 0 - local.set $4 - f64.const 0 - local.set $5 - local.get $2 - i32.const 1071284858 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 31 - i32.shr_u - end - if - local.get $2 - i32.const -1074790400 - i32.ge_u - if - local.get $0 - f64.const -1 - f64.eq - if - local.get $0 - f64.const 0 - f64.div - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - local.get $2 - i32.const 1 - i32.shl - i32.const 1017118720 - i32.const 1 - i32.shl - i32.lt_u - if - local.get $0 - return - end - local.get $2 - i32.const -1076707644 - i32.le_u - if - i32.const 0 - local.set $3 - f64.const 0 - local.set $4 - local.get $0 - local.set $5 - end - else - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - end - end - local.get $3 - if - f64.const 1 - local.get $0 - f64.add - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $6 - local.get $6 - i32.const 1072693248 - i32.const 1072079006 - i32.sub - i32.add - local.set $6 - local.get $6 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.set $3 - local.get $3 - i32.const 54 - i32.lt_s - if - local.get $1 - f64.reinterpret_i64 - local.set $7 - local.get $3 - i32.const 2 - i32.ge_s - if (result f64) - f64.const 1 - local.get $7 - local.get $0 - f64.sub - f64.sub - else - local.get $0 - local.get $7 - f64.const 1 - f64.sub - f64.sub - end - local.set $4 - local.get $4 - local.get $7 - f64.div - local.set $4 - else - f64.const 0 - local.set $4 - end - local.get $6 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - local.set $6 - local.get $6 - i64.extend_i32_u - i64.const 32 - i64.shl - local.get $1 - i64.const 4294967295 - i64.and - i64.or - local.set $1 - local.get $1 - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.set $5 - end - f64.const 0.5 - local.get $5 - f64.mul - local.get $5 - f64.mul - local.set $8 - local.get $5 - f64.const 2 - local.get $5 - f64.add - f64.div - local.set $9 - local.get $9 - local.get $9 - f64.mul - local.set $10 - local.get $10 - local.get $10 - f64.mul - local.set $11 - local.get $11 - f64.const 0.3999999999940942 - local.get $11 - f64.const 0.22222198432149784 - local.get $11 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $12 - local.get $10 - f64.const 0.6666666666666735 - local.get $11 - f64.const 0.2857142874366239 - local.get $11 - f64.const 0.1818357216161805 - local.get $11 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $13 - local.get $13 - local.get $12 - f64.add - local.set $14 - local.get $3 - f64.convert_i32_s - local.set $15 - local.get $9 - local.get $8 - local.get $14 - f64.add - f64.mul - local.get $15 - f64.const 1.9082149292705877e-10 - f64.mul - local.get $4 - f64.add - f64.add - local.get $8 - f64.sub - local.get $5 - f64.add - local.get $15 - f64.const 0.6931471803691238 - f64.mul - f64.add - ) - (func $~lib/math/NativeMath.log (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i64) - (local $16 i64) - (local $17 f64) - (local $18 f64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/log_lut|inlined.0 (result f64) - local.get $0 - local.set $1 - local.get $1 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 4606619468846596096 - i64.sub - i64.const 4607473789381378048 - i64.const 4606619468846596096 - i64.sub - i64.lt_u - if - local.get $1 - f64.const 1 - f64.sub - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $3 - f64.mul - local.set $5 - local.get $5 - f64.const 0.3333333333333352 - local.get $3 - f64.const -0.24999999999998432 - f64.mul - f64.add - local.get $4 - f64.const 0.19999999999320328 - f64.mul - f64.add - local.get $5 - f64.const -0.16666666669929706 - local.get $3 - f64.const 0.14285715076560868 - f64.mul - f64.add - local.get $4 - f64.const -0.12499997863982555 - f64.mul - f64.add - local.get $5 - f64.const 0.11110712032936046 - local.get $3 - f64.const -0.10000486757818193 - f64.mul - f64.add - local.get $4 - f64.const 0.09181994006195467 - f64.mul - f64.add - local.get $5 - f64.const -0.08328363062289341 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $6 - local.get $3 - f64.const 134217728 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.add - local.get $7 - f64.sub - local.set $8 - local.get $3 - local.get $8 - f64.sub - local.set $9 - local.get $8 - local.get $8 - f64.mul - f64.const -0.5 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.add - local.set $10 - local.get $3 - local.get $10 - f64.sub - local.get $7 - f64.add - local.set $11 - local.get $11 - f64.const -0.5 - local.get $9 - f64.mul - local.get $8 - local.get $3 - f64.add - f64.mul - f64.add - local.set $11 - local.get $6 - local.get $11 - f64.add - local.get $10 - f64.add - br $~lib/util/math/log_lut|inlined.0 - end - local.get $2 - i64.const 48 - i64.shr_u - i32.wrap_i64 - local.set $12 - local.get $12 - i32.const 16 - i32.sub - i32.const 32752 - i32.const 16 - i32.sub - i32.ge_u - if - local.get $2 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const -1 - local.get $1 - local.get $1 - f64.mul - f64.div - br $~lib/util/math/log_lut|inlined.0 - end - local.get $2 - f64.const inf - i64.reinterpret_f64 - i64.eq - if - local.get $1 - br $~lib/util/math/log_lut|inlined.0 - end - local.get $12 - i32.const 32768 - i32.and - if (result i32) - i32.const 1 - else - local.get $12 - i32.const 32752 - i32.and - i32.const 32752 - i32.eq - end - if - local.get $1 - local.get $1 - f64.sub - local.get $1 - local.get $1 - f64.sub - f64.div - br $~lib/util/math/log_lut|inlined.0 - end - local.get $1 - f64.const 4503599627370496 - f64.mul - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 52 - i64.const 52 - i64.shl - i64.sub - local.set $2 - end - local.get $2 - i64.const 4604367669032910848 - i64.sub - local.set $13 - local.get $13 - i64.const 52 - i64.const 7 - i64.sub - i64.shr_u - i64.const 127 - i64.and - i32.wrap_i64 - local.set $14 - local.get $13 - i64.const 52 - i64.shr_s - local.set $15 - local.get $2 - local.get $13 - i64.const 4095 - i64.const 52 - i64.shl - i64.and - i64.sub - local.set $16 - i32.const 56 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $11 - i32.const 56 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $10 - local.get $16 - f64.reinterpret_i64 - local.set $9 - i32.const 2104 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $8 - i32.const 2104 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $7 - local.get $9 - local.get $8 - f64.sub - local.get $7 - f64.sub - local.get $11 - f64.mul - local.set $6 - local.get $15 - f64.convert_i64_s - local.set $5 - local.get $5 - f64.const 0.6931471805598903 - f64.mul - local.get $10 - f64.add - local.set $4 - local.get $4 - local.get $6 - f64.add - local.set $3 - local.get $4 - local.get $3 - f64.sub - local.get $6 - f64.add - local.get $5 - f64.const 5.497923018708371e-14 - f64.mul - f64.add - local.set $17 - local.get $6 - local.get $6 - f64.mul - local.set $18 - local.get $17 - local.get $18 - f64.const -0.5000000000000001 - f64.mul - f64.add - local.get $6 - local.get $18 - f64.mul - f64.const 0.33333333331825593 - local.get $6 - f64.const -0.2499999999622955 - f64.mul - f64.add - local.get $18 - f64.const 0.20000304511814496 - local.get $6 - f64.const -0.16667054827627667 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - f64.add - end - return - ) - (func $~lib/math/NativeMath.acosh (param $0 f64) (result f64) - (local $1 i64) - local.get $0 - i64.reinterpret_f64 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $1 - local.get $1 - i64.const 1023 - i64.const 1 - i64.add - i64.lt_u - if - local.get $0 - f64.const 1 - f64.sub - local.get $0 - f64.const 1 - f64.sub - local.get $0 - f64.const 1 - f64.sub - f64.mul - f64.const 2 - local.get $0 - f64.const 1 - f64.sub - f64.mul - f64.add - f64.sqrt - f64.add - call $~lib/math/NativeMath.log1p - return - end - local.get $1 - i64.const 1023 - i64.const 26 - i64.add - i64.lt_u - if - f64.const 2 - local.get $0 - f64.mul - f64.const 1 - local.get $0 - local.get $0 - local.get $0 - f64.mul - f64.const 1 - f64.sub - f64.sqrt - f64.add - f64.div - f64.sub - call $~lib/math/NativeMath.log - return - end - local.get $0 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add - ) - (func $std/math/test_acosh (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.acosh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/acosh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.log1p (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f32) - (local $8 f32) - (local $9 f32) - (local $10 f32) - (local $11 f32) - (local $12 f32) - (local $13 f32) - (local $14 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - f32.const 0 - local.set $2 - f32.const 0 - local.set $3 - i32.const 1 - local.set $4 - local.get $1 - i32.const 1054086096 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $1 - i32.const -1082130432 - i32.ge_u - if - local.get $0 - f32.const -1 - f32.eq - if - local.get $0 - f32.const 0 - f32.div - return - end - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - local.get $1 - i32.const 1 - i32.shl - i32.const 864026624 - i32.const 1 - i32.shl - i32.lt_u - if - local.get $0 - return - end - local.get $1 - i32.const -1097468391 - i32.le_u - if - i32.const 0 - local.set $4 - f32.const 0 - local.set $2 - local.get $0 - local.set $3 - end - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - end - end - local.get $4 - if - f32.const 1 - local.get $0 - f32.add - local.set $5 - local.get $5 - i32.reinterpret_f32 - local.set $6 - local.get $6 - i32.const 1065353216 - i32.const 1060439283 - i32.sub - i32.add - local.set $6 - local.get $6 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - local.set $4 - local.get $4 - i32.const 25 - i32.lt_s - if - local.get $4 - i32.const 2 - i32.ge_s - if (result f32) - f32.const 1 - local.get $5 - local.get $0 - f32.sub - f32.sub - else - local.get $0 - local.get $5 - f32.const 1 - f32.sub - f32.sub - end - local.set $2 - local.get $2 - local.get $5 - f32.div - local.set $2 - else - f32.const 0 - local.set $2 - end - local.get $6 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - local.set $6 - local.get $6 - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.set $3 - end - local.get $3 - f32.const 2 - local.get $3 - f32.add - f32.div - local.set $7 - local.get $7 - local.get $7 - f32.mul - local.set $8 - local.get $8 - local.get $8 - f32.mul - local.set $9 - local.get $9 - f32.const 0.40000972151756287 - local.get $9 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - local.set $10 - local.get $8 - f32.const 0.6666666269302368 - local.get $9 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.set $11 - local.get $11 - local.get $10 - f32.add - local.set $12 - f32.const 0.5 - local.get $3 - f32.mul - local.get $3 - f32.mul - local.set $13 - local.get $4 - f32.convert_i32_s - local.set $14 - local.get $7 - local.get $13 - local.get $12 - f32.add - f32.mul - local.get $14 - f32.const 9.05800061445916e-06 - f32.mul - local.get $2 - f32.add - f32.add - local.get $13 - f32.sub - local.get $3 - f32.add - local.get $14 - f32.const 0.6931381225585938 - f32.mul - f32.add - ) - (func $~lib/math/NativeMathf.log (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/logf_lut|inlined.0 (result f32) - local.get $0 - local.set $1 - local.get $1 - i32.reinterpret_f32 - local.set $2 - local.get $2 - i32.const 8388608 - i32.sub - i32.const 2139095040 - i32.const 8388608 - i32.sub - i32.ge_u - if - local.get $2 - i32.const 1 - i32.shl - i32.const 0 - i32.eq - if - f32.const inf - f32.neg - br $~lib/util/math/logf_lut|inlined.0 - end - local.get $2 - i32.const 2139095040 - i32.eq - if - local.get $1 - br $~lib/util/math/logf_lut|inlined.0 - end - local.get $2 - i32.const 31 - i32.shr_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 1 - i32.shl - i32.const -16777216 - i32.ge_u - end - if - local.get $1 - local.get $1 - f32.sub - local.get $1 - local.get $1 - f32.sub - f32.div - br $~lib/util/math/logf_lut|inlined.0 - end - local.get $1 - f32.const 8388608 - f32.mul - i32.reinterpret_f32 - local.set $2 - local.get $2 - i32.const 23 - i32.const 23 - i32.shl - i32.sub - local.set $2 - end - local.get $2 - i32.const 1060306944 - i32.sub - local.set $3 - local.get $3 - i32.const 23 - i32.const 4 - i32.sub - i32.shr_u - i32.const 15 - i32.and - local.set $4 - local.get $3 - i32.const 23 - i32.shr_s - local.set $5 - local.get $2 - local.get $3 - i32.const 511 - i32.const 23 - i32.shl - i32.and - i32.sub - local.set $6 - i32.const 4152 - local.get $4 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $7 - i32.const 4152 - local.get $4 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $8 - local.get $6 - f32.reinterpret_i32 - f64.promote_f32 - local.set $9 - local.get $9 - local.get $7 - f64.mul - f64.const 1 - f64.sub - local.set $10 - local.get $8 - local.get $5 - f64.convert_i32_s - f64.const 0.6931471805599453 - f64.mul - f64.add - local.set $11 - local.get $10 - local.get $10 - f64.mul - local.set $12 - f64.const 0.333456765744066 - local.get $10 - f64.mul - f64.const -0.4999997485802103 - f64.add - local.set $13 - local.get $13 - f64.const -0.25089342214237154 - local.get $12 - f64.mul - f64.add - local.set $13 - local.get $13 - local.get $12 - f64.mul - local.get $11 - local.get $10 - f64.add - f64.add - local.set $13 - local.get $13 - f32.demote_f64 - end - return - ) - (func $~lib/math/NativeMathf.acosh (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1065353216 - i32.const 1 - i32.const 23 - i32.shl - i32.add - i32.lt_u - if - local.get $0 - f32.const 1 - f32.sub - local.set $3 - local.get $3 - local.get $3 - local.get $3 - f32.const 2 - f32.add - f32.mul - f32.sqrt - f32.add - call $~lib/math/NativeMathf.log1p - return - end - local.get $2 - i32.const 1065353216 - i32.const 12 - i32.const 23 - i32.shl - i32.add - i32.lt_u - if - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - local.get $0 - local.get $0 - local.get $0 - f32.mul - f32.const 1 - f32.sub - f32.sqrt - f32.add - f32.div - f32.sub - call $~lib/math/NativeMathf.log - return - end - local.get $0 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add - ) - (func $std/math/test_acoshf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.acosh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.asin (param $0 f64) (result f64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1072693248 - i32.ge_u - if - local.get $0 - i64.reinterpret_f64 - i32.wrap_i64 - local.set $3 - local.get $2 - i32.const 1072693248 - i32.sub - local.get $3 - i32.or - i32.const 0 - i32.eq - if - local.get $0 - f64.const 1.5707963267948966 - f64.mul - f32.const 7.52316384526264e-37 - f64.promote_f32 - f64.add - return - end - f64.const 0 - local.get $0 - local.get $0 - f64.sub - f64.div - return - end - local.get $2 - i32.const 1071644672 - i32.lt_u - if - local.get $2 - i32.const 1045430272 - i32.lt_u - if (result i32) - local.get $2 - i32.const 1048576 - i32.ge_u - else - i32.const 0 - end - if - local.get $0 - return - end - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.mul - call $~lib/math/R - f64.mul - f64.add - return - end - f64.const 0.5 - local.get $0 - f64.abs - f64.const 0.5 - f64.mul - f64.sub - local.set $4 - local.get $4 - f64.sqrt - local.set $5 - local.get $4 - call $~lib/math/R - local.set $6 - local.get $2 - i32.const 1072640819 - i32.ge_u - if - f64.const 1.5707963267948966 - f64.const 2 - local.get $5 - local.get $5 - local.get $6 - f64.mul - f64.add - f64.mul - f64.const 6.123233995736766e-17 - f64.sub - f64.sub - local.set $0 - else - local.get $5 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $7 - local.get $4 - local.get $7 - local.get $7 - f64.mul - f64.sub - local.get $5 - local.get $7 - f64.add - f64.div - local.set $8 - f64.const 0.5 - f64.const 1.5707963267948966 - f64.mul - f64.const 2 - local.get $5 - f64.mul - local.get $6 - f64.mul - f64.const 6.123233995736766e-17 - f64.const 2 - local.get $8 - f64.mul - f64.sub - f64.sub - f64.const 0.5 - f64.const 1.5707963267948966 - f64.mul - f64.const 2 - local.get $7 - f64.mul - f64.sub - f64.sub - f64.sub - local.set $0 - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - f64.neg - return - end - local.get $0 - ) - (func $std/math/test_asin (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.asin - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/asin - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.asin (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 f32) - (local $4 f64) - local.get $0 - local.set $1 - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1065353216 - i32.ge_u - if - local.get $2 - i32.const 1065353216 - i32.eq - if - local.get $0 - f32.const 1.5707963705062866 - f32.mul - f32.const 7.52316384526264e-37 - f32.add - return - end - f32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.div - return - end - local.get $2 - i32.const 1056964608 - i32.lt_u - if - local.get $2 - i32.const 964689920 - i32.lt_u - if (result i32) - local.get $2 - i32.const 8388608 - i32.ge_u - else - i32.const 0 - end - if - local.get $0 - return - end - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f32.mul - call $~lib/math/Rf - f32.mul - f32.add - return - end - f32.const 0.5 - local.get $0 - f32.abs - f32.const 0.5 - f32.mul - f32.sub - local.set $3 - local.get $3 - f64.promote_f32 - f64.sqrt - local.set $4 - f32.const 1.5707963705062866 - f64.promote_f32 - f32.const 2 - f64.promote_f32 - local.get $4 - local.get $4 - local.get $3 - call $~lib/math/Rf - f64.promote_f32 - f64.mul - f64.add - f64.mul - f64.sub - f32.demote_f64 - local.set $0 - local.get $0 - local.get $1 - f32.copysign - ) - (func $std/math/test_asinf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.asin - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.asinh (param $0 f64) (result f64) - (local $1 i64) - (local $2 i64) - (local $3 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $2 - local.get $1 - i64.const 9223372036854775807 - i64.and - f64.reinterpret_i64 - local.set $3 - local.get $2 - i64.const 1023 - i64.const 26 - i64.add - i64.ge_u - if - local.get $3 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add - local.set $3 - else - local.get $2 - i64.const 1023 - i64.const 1 - i64.add - i64.ge_u - if - f64.const 2 - local.get $3 - f64.mul - f64.const 1 - local.get $3 - local.get $3 - f64.mul - f64.const 1 - f64.add - f64.sqrt - local.get $3 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log - local.set $3 - else - local.get $2 - i64.const 1023 - i64.const 26 - i64.sub - i64.ge_u - if - local.get $3 - local.get $3 - local.get $3 - f64.mul - local.get $3 - local.get $3 - f64.mul - f64.const 1 - f64.add - f64.sqrt - f64.const 1 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log1p - local.set $3 - end - end - end - local.get $3 - local.get $0 - f64.copysign - ) - (func $std/math/test_asinh (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.asinh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/asinh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.asinh (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $2 - local.get $1 - i32.const 1065353216 - i32.const 12 - i32.const 23 - i32.shl - i32.add - i32.ge_u - if - local.get $2 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add - local.set $2 - else - local.get $1 - i32.const 1065353216 - i32.const 1 - i32.const 23 - i32.shl - i32.add - i32.ge_u - if - f32.const 2 - local.get $2 - f32.mul - f32.const 1 - local.get $2 - local.get $2 - f32.mul - f32.const 1 - f32.add - f32.sqrt - local.get $2 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log - local.set $2 - else - local.get $1 - i32.const 1065353216 - i32.const 12 - i32.const 23 - i32.shl - i32.sub - i32.ge_u - if - local.get $2 - local.get $2 - local.get $2 - f32.mul - local.get $2 - local.get $2 - f32.mul - f32.const 1 - f32.add - f32.sqrt - f32.const 1 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log1p - local.set $2 - end - end - end - local.get $2 - local.get $0 - f32.copysign - ) - (func $std/math/test_asinhf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.asinh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.atan (param $0 f64) (result f64) - (local $1 i32) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 i32) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - local.get $0 - local.set $2 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - i32.const 1141899264 - i32.ge_u - if - local.get $0 - local.get $0 - f64.ne - if - local.get $0 - return - end - f64.const 1.5707963267948966 - f32.const 7.52316384526264e-37 - f64.promote_f32 - f64.add - local.set $3 - local.get $3 - local.get $2 - f64.copysign - return - end - local.get $1 - i32.const 1071382528 - i32.lt_u - if - local.get $1 - i32.const 1044381696 - i32.lt_u - if - local.get $0 - return - end - i32.const -1 - local.set $4 - else - local.get $0 - f64.abs - local.set $0 - local.get $1 - i32.const 1072889856 - i32.lt_u - if - local.get $1 - i32.const 1072037888 - i32.lt_u - if - i32.const 0 - local.set $4 - f64.const 2 - local.get $0 - f64.mul - f64.const 1 - f64.sub - f64.const 2 - local.get $0 - f64.add - f64.div - local.set $0 - else - i32.const 1 - local.set $4 - local.get $0 - f64.const 1 - f64.sub - local.get $0 - f64.const 1 - f64.add - f64.div - local.set $0 - end - else - local.get $1 - i32.const 1073971200 - i32.lt_u - if - i32.const 2 - local.set $4 - local.get $0 - f64.const 1.5 - f64.sub - f64.const 1 - f64.const 1.5 - local.get $0 - f64.mul - f64.add - f64.div - local.set $0 - else - i32.const 3 - local.set $4 - f64.const -1 - local.get $0 - f64.div - local.set $0 - end - end - end - local.get $0 - local.get $0 - f64.mul - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $5 - local.get $3 - f64.const 0.3333333333333293 - local.get $5 - f64.const 0.14285714272503466 - local.get $5 - f64.const 0.09090887133436507 - local.get $5 - f64.const 0.06661073137387531 - local.get $5 - f64.const 0.049768779946159324 - local.get $5 - f64.const 0.016285820115365782 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $6 - local.get $5 - f64.const -0.19999999999876483 - local.get $5 - f64.const -0.11111110405462356 - local.get $5 - f64.const -0.0769187620504483 - local.get $5 - f64.const -0.058335701337905735 - local.get $5 - f64.const -0.036531572744216916 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $7 - local.get $0 - local.get $6 - local.get $7 - f64.add - f64.mul - local.set $8 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $8 - f64.sub - return - end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $4 - local.set $9 - local.get $9 - i32.const 0 - i32.eq - br_if $case0|0 - local.get $9 - i32.const 1 - i32.eq - br_if $case1|0 - local.get $9 - i32.const 2 - i32.eq - br_if $case2|0 - local.get $9 - i32.const 3 - i32.eq - br_if $case3|0 - br $case4|0 - end - f64.const 0.4636476090008061 - local.get $8 - f64.const 2.2698777452961687e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $3 - br $break|0 - end - f64.const 0.7853981633974483 - local.get $8 - f64.const 3.061616997868383e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $3 - br $break|0 - end - f64.const 0.982793723247329 - local.get $8 - f64.const 1.3903311031230998e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $3 - br $break|0 - end - f64.const 1.5707963267948966 - local.get $8 - f64.const 6.123233995736766e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $3 - br $break|0 - end - unreachable - end - local.get $3 - local.get $2 - f64.copysign - ) - (func $std/math/test_atan (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.atan - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/atan - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.atan (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 i32) - (local $5 f32) - (local $6 f32) - (local $7 f32) - (local $8 f32) - (local $9 i32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $0 - local.set $2 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - i32.const 1283457024 - i32.ge_u - if - local.get $0 - local.get $0 - f32.ne - if - local.get $0 - return - end - f32.const 1.570796251296997 - f32.const 7.52316384526264e-37 - f32.add - local.set $3 - local.get $3 - local.get $2 - f32.copysign - return - end - local.get $1 - i32.const 1054867456 - i32.lt_u - if - local.get $1 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - i32.const -1 - local.set $4 - else - local.get $0 - f32.abs - local.set $0 - local.get $1 - i32.const 1066926080 - i32.lt_u - if - local.get $1 - i32.const 1060110336 - i32.lt_u - if - i32.const 0 - local.set $4 - f32.const 2 - local.get $0 - f32.mul - f32.const 1 - f32.sub - f32.const 2 - local.get $0 - f32.add - f32.div - local.set $0 - else - i32.const 1 - local.set $4 - local.get $0 - f32.const 1 - f32.sub - local.get $0 - f32.const 1 - f32.add - f32.div - local.set $0 - end - else - local.get $1 - i32.const 1075576832 - i32.lt_u - if - i32.const 2 - local.set $4 - local.get $0 - f32.const 1.5 - f32.sub - f32.const 1 - f32.const 1.5 - local.get $0 - f32.mul - f32.add - f32.div - local.set $0 - else - i32.const 3 - local.set $4 - f32.const -1 - local.get $0 - f32.div - local.set $0 - end - end - end - local.get $0 - local.get $0 - f32.mul - local.set $3 - local.get $3 - local.get $3 - f32.mul - local.set $5 - local.get $3 - f32.const 0.333333283662796 - local.get $5 - f32.const 0.14253635704517365 - local.get $5 - f32.const 0.06168760731816292 - f32.mul - f32.add - f32.mul - f32.add - f32.mul - local.set $6 - local.get $5 - f32.const -0.19999158382415771 - local.get $5 - f32.const -0.106480173766613 - f32.mul - f32.add - f32.mul - local.set $7 - local.get $0 - local.get $6 - local.get $7 - f32.add - f32.mul - local.set $8 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $8 - f32.sub - return - end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $4 - local.set $9 - local.get $9 - i32.const 0 - i32.eq - br_if $case0|0 - local.get $9 - i32.const 1 - i32.eq - br_if $case1|0 - local.get $9 - i32.const 2 - i32.eq - br_if $case2|0 - local.get $9 - i32.const 3 - i32.eq - br_if $case3|0 - br $case4|0 - end - f32.const 0.46364760398864746 - local.get $8 - f32.const 5.01215824399992e-09 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $3 - br $break|0 - end - f32.const 0.7853981256484985 - local.get $8 - f32.const 3.774894707930798e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $3 - br $break|0 - end - f32.const 0.9827936887741089 - local.get $8 - f32.const 3.447321716976148e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $3 - br $break|0 - end - f32.const 1.570796251296997 - local.get $8 - f32.const 7.549789415861596e-08 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $3 - br $break|0 - end - unreachable - end - local.get $3 - local.get $2 - f32.copysign - ) - (func $std/math/test_atanf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.atan - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.atanh (param $0 f64) (result f64) - (local $1 i64) - (local $2 i64) - (local $3 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $2 - local.get $0 - f64.abs - local.set $3 - local.get $2 - i64.const 1023 - i64.const 1 - i64.sub - i64.lt_u - if - local.get $2 - i64.const 1023 - i64.const 32 - i64.sub - i64.ge_u - if - f64.const 0.5 - f64.const 2 - local.get $3 - f64.mul - f64.const 2 - local.get $3 - f64.mul - local.get $3 - f64.mul - f64.const 1 - local.get $3 - f64.sub - f64.div - f64.add - call $~lib/math/NativeMath.log1p - f64.mul - local.set $3 - end - else - f64.const 0.5 - f64.const 2 - local.get $3 - f64.const 1 - local.get $3 - f64.sub - f64.div - f64.mul - call $~lib/math/NativeMath.log1p - f64.mul - local.set $3 - end - local.get $3 - local.get $0 - f64.copysign - ) - (func $std/math/test_atanh (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.atanh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/atanh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.atanh (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $0 - f32.abs - local.set $2 - local.get $1 - i32.const 1065353216 - i32.const 1 - i32.const 23 - i32.shl - i32.sub - i32.lt_u - if - local.get $1 - i32.const 1065353216 - i32.const 32 - i32.const 23 - i32.shl - i32.sub - i32.ge_u - if - f32.const 0.5 - f32.const 2 - local.get $2 - f32.mul - f32.const 1 - local.get $2 - f32.const 1 - local.get $2 - f32.sub - f32.div - f32.add - f32.mul - call $~lib/math/NativeMathf.log1p - f32.mul - local.set $2 - end - else - f32.const 0.5 - f32.const 2 - local.get $2 - f32.const 1 - local.get $2 - f32.sub - f32.div - f32.mul - call $~lib/math/NativeMathf.log1p - f32.mul - local.set $2 - end - local.get $2 - local.get $0 - f32.copysign - ) - (func $std/math/test_atanhf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.atanh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.atan2 (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 f64) - local.get $1 - local.get $1 - f64.ne - if (result i32) - i32.const 1 - else - local.get $0 - local.get $0 - f64.ne - end - if - local.get $1 - local.get $0 - f64.add - return - end - local.get $1 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $3 - local.get $2 - i32.wrap_i64 - local.set $4 - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $5 - local.get $2 - i32.wrap_i64 - local.set $6 - local.get $3 - i32.const 1072693248 - i32.sub - local.get $4 - i32.or - i32.const 0 - i32.eq - if - local.get $0 - call $~lib/math/NativeMath.atan - return - end - local.get $5 - i32.const 31 - i32.shr_u - i32.const 1 - i32.and - local.get $3 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - i32.or - local.set $7 - local.get $3 - i32.const 2147483647 - i32.and - local.set $3 - local.get $5 - i32.const 2147483647 - i32.and - local.set $5 - local.get $5 - local.get $6 - i32.or - i32.const 0 - i32.eq - if - block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $7 - local.set $8 - local.get $8 - i32.const 0 - i32.eq - br_if $case0|0 - local.get $8 - i32.const 1 - i32.eq - br_if $case1|0 - local.get $8 - i32.const 2 - i32.eq - br_if $case2|0 - local.get $8 - i32.const 3 - i32.eq - br_if $case3|0 - br $break|0 - end - end - local.get $0 - return - end - global.get $~lib/math/NativeMath.PI - return - end - global.get $~lib/math/NativeMath.PI - f64.neg - return - end - end - local.get $3 - local.get $4 - i32.or - i32.const 0 - i32.eq - if - local.get $7 - i32.const 1 - i32.and - if (result f64) - global.get $~lib/math/NativeMath.PI - f64.neg - f64.const 2 - f64.div - else - global.get $~lib/math/NativeMath.PI - f64.const 2 - f64.div - end - return - end - local.get $3 - i32.const 2146435072 - i32.eq - if - local.get $5 - i32.const 2146435072 - i32.eq - if - local.get $7 - i32.const 2 - i32.and - if (result f64) - i32.const 3 - f64.convert_i32_s - global.get $~lib/math/NativeMath.PI - f64.mul - f64.const 4 - f64.div - else - global.get $~lib/math/NativeMath.PI - f64.const 4 - f64.div - end - local.set $9 - local.get $7 - i32.const 1 - i32.and - if (result f64) - local.get $9 - f64.neg - else - local.get $9 - end - return - else - local.get $7 - i32.const 2 - i32.and - if (result f64) - global.get $~lib/math/NativeMath.PI - else - f64.const 0 - end - local.set $9 - local.get $7 - i32.const 1 - i32.and - if (result f64) - local.get $9 - f64.neg - else - local.get $9 - end - return - end - unreachable - end - local.get $3 - i32.const 64 - i32.const 20 - i32.shl - i32.add - local.get $5 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $5 - i32.const 2146435072 - i32.eq - end - if - local.get $7 - i32.const 1 - i32.and - if (result f64) - global.get $~lib/math/NativeMath.PI - f64.neg - f64.const 2 - f64.div - else - global.get $~lib/math/NativeMath.PI - f64.const 2 - f64.div - end - return - end - local.get $7 - i32.const 2 - i32.and - if (result i32) - local.get $5 - i32.const 64 - i32.const 20 - i32.shl - i32.add - local.get $3 - i32.lt_u - else - i32.const 0 - end - if - f64.const 0 - local.set $10 - else - local.get $0 - local.get $1 - f64.div - f64.abs - call $~lib/math/NativeMath.atan - local.set $10 - end - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $7 - local.set $8 - local.get $8 - i32.const 0 - i32.eq - br_if $case0|1 - local.get $8 - i32.const 1 - i32.eq - br_if $case1|1 - local.get $8 - i32.const 2 - i32.eq - br_if $case2|1 - local.get $8 - i32.const 3 - i32.eq - br_if $case3|1 - br $break|1 - end - local.get $10 - return - end - local.get $10 - f64.neg - return - end - global.get $~lib/math/NativeMath.PI - local.get $10 - f64.const 1.2246467991473532e-16 - f64.sub - f64.sub - return - end - local.get $10 - f64.const 1.2246467991473532e-16 - f64.sub - global.get $~lib/math/NativeMath.PI - f64.sub - return - end - unreachable - ) - (func $std/math/test_atan2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.atan2 - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - call $~lib/bindings/Math/atan2 - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - (local $7 f32) - local.get $1 - local.get $1 - f32.ne - if (result i32) - i32.const 1 - else - local.get $0 - local.get $0 - f32.ne - end - if - local.get $1 - local.get $0 - f32.add - return - end - local.get $1 - i32.reinterpret_f32 - local.set $2 - local.get $0 - i32.reinterpret_f32 - local.set $3 - local.get $2 - i32.const 1065353216 - i32.eq - if - local.get $0 - call $~lib/math/NativeMathf.atan - return - end - local.get $3 - i32.const 31 - i32.shr_u - i32.const 1 - i32.and - local.get $2 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - i32.or - local.set $4 - local.get $2 - i32.const 2147483647 - i32.and - local.set $2 - local.get $3 - i32.const 2147483647 - i32.and - local.set $3 - local.get $3 - i32.const 0 - i32.eq - if - block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.eq - br_if $case0|0 - local.get $5 - i32.const 1 - i32.eq - br_if $case1|0 - local.get $5 - i32.const 2 - i32.eq - br_if $case2|0 - local.get $5 - i32.const 3 - i32.eq - br_if $case3|0 - br $break|0 - end - end - local.get $0 - return - end - f32.const 3.1415927410125732 - return - end - f32.const 3.1415927410125732 - f32.neg - return - end - end - local.get $2 - i32.const 0 - i32.eq - if - local.get $4 - i32.const 1 - i32.and - if (result f32) - f32.const 3.1415927410125732 - f32.neg - f32.const 2 - f32.div - else - f32.const 3.1415927410125732 - f32.const 2 - f32.div - end - return - end - local.get $2 - i32.const 2139095040 - i32.eq - if - local.get $3 - i32.const 2139095040 - i32.eq - if - local.get $4 - i32.const 2 - i32.and - if (result f32) - f32.const 3 - f32.const 3.1415927410125732 - f32.mul - f32.const 4 - f32.div - else - f32.const 3.1415927410125732 - f32.const 4 - f32.div - end - local.set $6 - local.get $4 - i32.const 1 - i32.and - if (result f32) - local.get $6 - f32.neg - else - local.get $6 - end - return - else - local.get $4 - i32.const 2 - i32.and - if (result f32) - f32.const 3.1415927410125732 - else - f32.const 0 - end - local.set $6 - local.get $4 - i32.const 1 - i32.and - if (result f32) - local.get $6 - f32.neg - else - local.get $6 - end - return - end - unreachable - end - local.get $2 - i32.const 26 - i32.const 23 - i32.shl - i32.add - local.get $3 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $3 - i32.const 2139095040 - i32.eq - end - if - local.get $4 - i32.const 1 - i32.and - if (result f32) - f32.const 3.1415927410125732 - f32.neg - f32.const 2 - f32.div - else - f32.const 3.1415927410125732 - f32.const 2 - f32.div - end - return - end - local.get $4 - i32.const 2 - i32.and - if (result i32) - local.get $3 - i32.const 26 - i32.const 23 - i32.shl - i32.add - local.get $2 - i32.lt_u - else - i32.const 0 - end - if - f32.const 0 - local.set $7 - else - local.get $0 - local.get $1 - f32.div - f32.abs - call $~lib/math/NativeMathf.atan - local.set $7 - end - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.eq - br_if $case0|1 - local.get $5 - i32.const 1 - i32.eq - br_if $case1|1 - local.get $5 - i32.const 2 - i32.eq - br_if $case2|1 - local.get $5 - i32.const 3 - i32.eq - br_if $case3|1 - br $break|1 - end - local.get $7 - return - end - local.get $7 - f32.neg - return - end - f32.const 3.1415927410125732 - local.get $7 - f32.const -8.742277657347586e-08 - f32.sub - f32.sub - return - end - local.get $7 - f32.const -8.742277657347586e-08 - f32.sub - f32.const 3.1415927410125732 - f32.sub - return - end - unreachable - ) - (func $std/math/test_atan2f (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.atan2 - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - ) - (func $~lib/math/NativeMath.cbrt (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.add - return - end - local.get $2 - i32.const 1048576 - i32.lt_u - if - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 0 - i32.eq - if - local.get $0 - return - end - local.get $2 - i32.const 3 - i32.div_u - i32.const 696219795 - i32.add - local.set $2 - else - local.get $2 - i32.const 3 - i32.div_u - i32.const 715094163 - i32.add - local.set $2 - end - local.get $1 - i64.const 1 - i64.const 63 - i64.shl - i64.and - local.set $1 - local.get $1 - local.get $2 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.get $3 - local.get $0 - f64.div - f64.mul - local.set $4 - local.get $3 - f64.const 1.87595182427177 - local.get $4 - f64.const -1.8849797954337717 - local.get $4 - f64.const 1.6214297201053545 - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - local.get $4 - f64.mul - local.get $4 - f64.mul - f64.const -0.758397934778766 - local.get $4 - f64.const 0.14599619288661245 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $3 - local.get $3 - i64.reinterpret_f64 - i64.const 2147483648 - i64.add - i64.const -1073741824 - i64.and - f64.reinterpret_i64 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $5 - local.get $0 - local.get $5 - f64.div - local.set $4 - local.get $4 - local.get $3 - f64.sub - f64.const 2 - local.get $3 - f64.mul - local.get $4 - f64.add - f64.div - local.set $4 - local.get $3 - local.get $3 - local.get $4 - f64.mul - f64.add - local.set $3 - local.get $3 - ) - (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.cbrt - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/cbrt - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.cbrt (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.add - return - end - local.get $2 - i32.const 8388608 - i32.lt_u - if - local.get $2 - i32.const 0 - i32.eq - if - local.get $0 - return - end - local.get $0 - f32.const 16777216 - f32.mul - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 3 - i32.div_u - i32.const 642849266 - i32.add - local.set $2 - else - local.get $2 - i32.const 3 - i32.div_u - i32.const 709958130 - i32.add - local.set $2 - end - local.get $1 - i32.const -2147483648 - i32.and - local.set $1 - local.get $1 - local.get $2 - i32.or - local.set $1 - local.get $1 - f32.reinterpret_i32 - f64.promote_f32 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.get $3 - f64.mul - local.set $4 - local.get $3 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.add - local.get $4 - f64.add - f64.mul - local.get $0 - f64.promote_f32 - local.get $4 - f64.add - local.get $4 - f64.add - f64.div - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.get $3 - f64.mul - local.set $4 - local.get $3 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.add - local.get $4 - f64.add - f64.mul - local.get $0 - f64.promote_f32 - local.get $4 - f64.add - local.get $4 - f64.add - f64.div - local.set $3 - local.get $3 - f32.demote_f64 - ) - (func $std/math/test_cbrtf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.cbrt - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $std/math/test_ceil (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - (local $4 f64) - local.get $0 - local.set $4 - local.get $4 - f64.ceil - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/ceil - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $std/math/test_ceilf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - (local $4 f32) - local.get $0 - local.set $4 - local.get $4 - f32.ceil - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/pio2_large_quot (param $0 f64) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - (local $16 i64) - (local $17 i64) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i64) - (local $24 i64) - (local $25 i64) - (local $26 i64) - (local $27 i64) - (local $28 i64) - (local $29 i64) - (local $30 i64) - (local $31 i64) - (local $32 i64) - (local $33 i64) - (local $34 i64) - (local $35 i64) - (local $36 f64) - local.get $1 - i64.const 9223372036854775807 - i64.and - local.set $2 - local.get $2 - i64.const 52 - i64.shr_s - i64.const 1045 - i64.sub - local.set $3 - local.get $3 - i64.const 63 - i64.and - local.set $4 - i32.const 4408 - local.get $3 - i64.const 6 - i64.shr_s - i32.wrap_i64 - i32.const 3 - i32.shl - i32.add - local.set $5 - local.get $5 - i64.load - local.set $9 - local.get $5 - i64.load offset=8 - local.set $10 - local.get $5 - i64.load offset=16 - local.set $11 - local.get $4 - i64.const 0 - i64.ne - if - i32.const 64 - i64.extend_i32_s - local.get $4 - i64.sub - local.set $12 - local.get $5 - i64.load offset=24 - local.set $13 - local.get $10 - local.get $12 - i64.shr_u - local.get $9 - local.get $4 - i64.shl - i64.or - local.set $6 - local.get $11 - local.get $12 - i64.shr_u - local.get $10 - local.get $4 - i64.shl - i64.or - local.set $7 - local.get $13 - local.get $12 - i64.shr_u - local.get $11 - local.get $4 - i64.shl - i64.or - local.set $8 - else - local.get $9 - local.set $6 - local.get $10 - local.set $7 - local.get $11 - local.set $8 - end - local.get $1 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - local.set $14 - local.get $7 - local.set $13 - local.get $14 - local.set $12 - local.get $13 - i64.const 4294967295 - i64.and - local.set $15 - local.get $12 - i64.const 4294967295 - i64.and - local.set $16 - local.get $13 - i64.const 32 - i64.shr_u - local.set $13 - local.get $12 - i64.const 32 - i64.shr_u - local.set $12 - local.get $15 - local.get $16 - i64.mul - local.set $19 - local.get $19 - i64.const 4294967295 - i64.and - local.set $17 - local.get $13 - local.get $16 - i64.mul - local.get $19 - i64.const 32 - i64.shr_u - i64.add - local.set $19 - local.get $19 - i64.const 32 - i64.shr_u - local.set $18 - local.get $15 - local.get $12 - i64.mul - local.get $19 - i64.const 4294967295 - i64.and - i64.add - local.set $19 - local.get $13 - local.get $12 - i64.mul - local.get $18 - i64.add - local.get $19 - i64.const 32 - i64.shr_u - i64.add - global.set $~lib/math/res128_hi - local.get $19 - i64.const 32 - i64.shl - local.get $17 - i64.add - local.set $20 - global.get $~lib/math/res128_hi - local.set $21 - local.get $6 - local.get $14 - i64.mul - local.set $22 - local.get $8 - i64.const 32 - i64.shr_u - local.get $14 - i64.const 32 - i64.shr_s - i64.mul - local.set $23 - local.get $20 - local.get $23 - i64.add - local.set $24 - local.get $22 - local.get $21 - i64.add - local.get $24 - local.get $23 - i64.lt_u - i64.extend_i32_u - i64.add - local.set $25 - local.get $24 - i64.const 2 - i64.shl - local.set $26 - local.get $25 - i64.const 2 - i64.shl - local.get $24 - i64.const 62 - i64.shr_u - i64.or - local.set $27 - local.get $27 - i64.const 63 - i64.shr_s - local.set $28 - local.get $28 - i64.const 1 - i64.shr_s - local.set $29 - local.get $25 - i64.const 62 - i64.shr_s - local.get $28 - i64.sub - local.set $30 - i64.const 4372995238176751616 - local.get $26 - local.get $28 - i64.xor - local.set $13 - local.get $27 - local.get $29 - i64.xor - local.set $12 - local.get $12 - i64.clz - local.set $19 - local.get $12 - local.get $19 - i64.shl - local.get $13 - i64.const 64 - local.get $19 - i64.sub - i64.shr_u - i64.or - local.set $12 - local.get $13 - local.get $19 - i64.shl - local.set $13 - i64.const -3958705157555305932 - local.set $16 - local.get $12 - local.set $15 - local.get $16 - i64.const 4294967295 - i64.and - local.set $18 - local.get $15 - i64.const 4294967295 - i64.and - local.set $17 - local.get $16 - i64.const 32 - i64.shr_u - local.set $16 - local.get $15 - i64.const 32 - i64.shr_u - local.set $15 - local.get $18 - local.get $17 - i64.mul - local.set $33 - local.get $33 - i64.const 4294967295 - i64.and - local.set $31 - local.get $16 - local.get $17 - i64.mul - local.get $33 - i64.const 32 - i64.shr_u - i64.add - local.set $33 - local.get $33 - i64.const 32 - i64.shr_u - local.set $32 - local.get $18 - local.get $15 - i64.mul - local.get $33 - i64.const 4294967295 - i64.and - i64.add - local.set $33 - local.get $16 - local.get $15 - i64.mul - local.get $32 - i64.add - local.get $33 - i64.const 32 - i64.shr_u - i64.add - global.set $~lib/math/res128_hi - local.get $33 - i64.const 32 - i64.shl - local.get $31 - i64.add - local.set $33 - global.get $~lib/math/res128_hi - local.set $32 - local.get $32 - i64.const 11 - i64.shr_u - local.set $31 - local.get $33 - i64.const 11 - i64.shr_u - local.get $32 - i64.const 53 - i64.shl - i64.or - local.set $17 - f64.const 2.6469779601696886e-23 - i64.const -4267615245585081135 - f64.convert_i64_u - f64.mul - local.get $12 - f64.convert_i64_u - f64.mul - f64.const 2.6469779601696886e-23 - i64.const -3958705157555305932 - f64.convert_i64_u - f64.mul - local.get $13 - f64.convert_i64_u - f64.mul - f64.add - i64.trunc_f64_u - local.set $18 - local.get $31 - local.get $33 - local.get $18 - i64.lt_u - i64.extend_i32_u - i64.add - f64.convert_i64_u - global.set $~lib/math/rempio2_y0 - f64.const 5.421010862427522e-20 - local.get $17 - local.get $18 - i64.add - f64.convert_i64_u - f64.mul - global.set $~lib/math/rempio2_y1 - local.get $19 - i64.const 52 - i64.shl - i64.sub - local.set $34 - local.get $1 - local.get $27 - i64.xor - i64.const -9223372036854775808 - i64.and - local.set $35 - local.get $34 - local.get $35 - i64.or - f64.reinterpret_i64 - local.set $36 - global.get $~lib/math/rempio2_y0 - local.get $36 - f64.mul - global.set $~lib/math/rempio2_y0 - global.get $~lib/math/rempio2_y1 - local.get $36 - f64.mul - global.set $~lib/math/rempio2_y1 - local.get $30 - i32.wrap_i64 - ) - (func $~lib/math/NativeMath.cos (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 i32) - (local $11 i64) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 f64) - (local $17 i32) - (local $18 f64) - (local $19 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - local.get $2 - i32.const 31 - i32.shr_u - local.set $3 - local.get $2 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1072243195 - i32.le_u - if - local.get $2 - i32.const 1044816030 - i32.lt_u - if - f64.const 1 - return - end - local.get $0 - local.set $5 - f64.const 0 - local.set $4 - local.get $5 - local.get $5 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $7 - local.get $6 - f64.const 0.0416666666666666 - local.get $6 - f64.const -0.001388888888887411 - local.get $6 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $7 - local.get $7 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $6 - f64.const 2.087572321298175e-09 - local.get $6 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $8 - f64.const 0.5 - local.get $6 - f64.mul - local.set $9 - f64.const 1 - local.get $9 - f64.sub - local.set $7 - local.get $7 - f64.const 1 - local.get $7 - f64.sub - local.get $9 - f64.sub - local.get $6 - local.get $8 - f64.mul - local.get $5 - local.get $4 - f64.mul - f64.sub - f64.add - f64.add - return - end - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.0 (result i32) - local.get $0 - local.set $4 - local.get $1 - local.set $11 - local.get $3 - local.set $10 - local.get $11 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.set $12 - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $12 - i32.const 1073928572 - i32.lt_u - if - i32.const 1 - local.set $13 - local.get $10 - i32.eqz - if - local.get $4 - f64.const 1.5707963267341256 - f64.sub - local.set $9 - local.get $12 - i32.const 1073291771 - i32.ne - if - local.get $9 - f64.const 6.077100506506192e-11 - f64.sub - local.set $8 - local.get $9 - local.get $8 - f64.sub - f64.const 6.077100506506192e-11 - f64.sub - local.set $7 - else - local.get $9 - f64.const 6.077100506303966e-11 - f64.sub - local.set $9 - local.get $9 - f64.const 2.0222662487959506e-21 - f64.sub - local.set $8 - local.get $9 - local.get $8 - f64.sub - f64.const 2.0222662487959506e-21 - f64.sub - local.set $7 - end - else - local.get $4 - f64.const 1.5707963267341256 - f64.add - local.set $9 - local.get $12 - i32.const 1073291771 - i32.ne - if - local.get $9 - f64.const 6.077100506506192e-11 - f64.add - local.set $8 - local.get $9 - local.get $8 - f64.sub - f64.const 6.077100506506192e-11 - f64.add - local.set $7 - else - local.get $9 - f64.const 6.077100506303966e-11 - f64.add - local.set $9 - local.get $9 - f64.const 2.0222662487959506e-21 - f64.add - local.set $8 - local.get $9 - local.get $8 - f64.sub - f64.const 2.0222662487959506e-21 - f64.add - local.set $7 - end - i32.const -1 - local.set $13 - end - local.get $8 - global.set $~lib/math/rempio2_y0 - local.get $7 - global.set $~lib/math/rempio2_y1 - local.get $13 - br $~lib/math/rempio2|inlined.0 - end - local.get $12 - i32.const 1094263291 - i32.lt_u - if - local.get $4 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $7 - local.get $4 - local.get $7 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.set $8 - local.get $7 - f64.const 6.077100506506192e-11 - f64.mul - local.set $9 - local.get $12 - i32.const 20 - i32.shr_u - local.set $13 - local.get $8 - local.get $9 - f64.sub - local.set $6 - local.get $6 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $14 - local.get $13 - local.get $14 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $15 - local.get $15 - i32.const 16 - i32.gt_u - if - local.get $8 - local.set $5 - local.get $7 - f64.const 6.077100506303966e-11 - f64.mul - local.set $9 - local.get $5 - local.get $9 - f64.sub - local.set $8 - local.get $7 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $5 - local.get $8 - f64.sub - local.get $9 - f64.sub - f64.sub - local.set $9 - local.get $8 - local.get $9 - f64.sub - local.set $6 - local.get $6 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $14 - local.get $13 - local.get $14 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $15 - local.get $15 - i32.const 49 - i32.gt_u - if - local.get $8 - local.set $16 - local.get $7 - f64.const 2.0222662487111665e-21 - f64.mul - local.set $9 - local.get $16 - local.get $9 - f64.sub - local.set $8 - local.get $7 - f64.const 8.4784276603689e-32 - f64.mul - local.get $16 - local.get $8 - f64.sub - local.get $9 - f64.sub - f64.sub - local.set $9 - local.get $8 - local.get $9 - f64.sub - local.set $6 - end - end - local.get $8 - local.get $6 - f64.sub - local.get $9 - f64.sub - local.set $5 - local.get $6 - global.set $~lib/math/rempio2_y0 - local.get $5 - global.set $~lib/math/rempio2_y1 - local.get $7 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.0 - end - local.get $4 - local.get $11 - call $~lib/math/pio2_large_quot - local.set $15 - i32.const 0 - local.get $15 - i32.sub - local.get $15 - local.get $10 - select - end - local.set $17 - global.get $~lib/math/rempio2_y0 - local.set $18 - global.get $~lib/math/rempio2_y1 - local.set $19 - local.get $17 - i32.const 1 - i32.and - if (result f64) - block $~lib/math/sin_kern|inlined.0 (result f64) - local.get $18 - local.set $7 - local.get $19 - local.set $16 - i32.const 1 - local.set $13 - local.get $7 - local.get $7 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const 0.00833333333332249 - local.get $4 - f64.const -1.984126982985795e-04 - local.get $4 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - local.get $5 - f64.mul - f64.const -2.5050760253406863e-08 - local.get $4 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $4 - local.get $7 - f64.mul - local.set $9 - local.get $13 - i32.eqz - if - local.get $7 - local.get $9 - f64.const -0.16666666666666632 - local.get $4 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - br $~lib/math/sin_kern|inlined.0 - else - local.get $7 - local.get $4 - f64.const 0.5 - local.get $16 - f64.mul - local.get $9 - local.get $6 - f64.mul - f64.sub - f64.mul - local.get $16 - f64.sub - local.get $9 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - br $~lib/math/sin_kern|inlined.0 - end - unreachable - end - else - local.get $18 - local.set $16 - local.get $19 - local.set $8 - local.get $16 - local.get $16 - f64.mul - local.set $9 - local.get $9 - local.get $9 - f64.mul - local.set $6 - local.get $9 - f64.const 0.0416666666666666 - local.get $9 - f64.const -0.001388888888887411 - local.get $9 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $6 - local.get $6 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $9 - f64.const 2.087572321298175e-09 - local.get $9 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $5 - f64.const 0.5 - local.get $9 - f64.mul - local.set $4 - f64.const 1 - local.get $4 - f64.sub - local.set $6 - local.get $6 - f64.const 1 - local.get $6 - f64.sub - local.get $4 - f64.sub - local.get $9 - local.get $5 - f64.mul - local.get $16 - local.get $8 - f64.mul - f64.sub - f64.add - f64.add - end - local.set $0 - local.get $17 - i32.const 1 - i32.add - i32.const 2 - i32.and - if (result f64) - local.get $0 - f64.neg - else - local.get $0 - end - ) - (func $std/math/test_cos (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.cos - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/cos - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.cos (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 f32) - (local $11 i32) - (local $12 f32) - (local $13 i32) - (local $14 i64) - (local $15 i32) - (local $16 i64) - (local $17 i64) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i32) - (local $24 i32) - (local $25 f64) - (local $26 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 31 - i32.shr_u - local.set $2 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - i32.const 1061752794 - i32.le_u - if - local.get $1 - i32.const 964689920 - i32.lt_u - if - f32.const 1 - return - end - local.get $0 - f64.promote_f32 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $6 - f32.const 1 - f64.promote_f32 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $4 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - return - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $1 - i32.const 1081824209 - i32.le_u - if - local.get $1 - i32.const 1075235811 - i32.gt_u - if - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - end - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $6 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $4 - f32.const 1 - f64.promote_f32 - local.get $6 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $6 - f64.mul - local.get $4 - f64.mul - f64.add - f32.demote_f64 - f32.neg - return - else - local.get $2 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $6 - local.get $4 - local.get $3 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $5 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - else - f64.const 1.5707963267948966 - local.get $0 - f64.promote_f32 - f64.sub - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - f64.const -1.9839334836096632e-04 - local.get $7 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $5 - local.get $7 - local.get $3 - f64.mul - local.set $4 - local.get $3 - local.get $4 - f64.const -0.16666666641626524 - local.get $7 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - local.get $6 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - end - return - end - unreachable - end - local.get $1 - i32.const 1088565717 - i32.le_u - if - local.get $1 - i32.const 1085271519 - i32.gt_u - if - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - end - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $6 - f32.const 1 - f64.promote_f32 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $4 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - return - else - local.get $2 - if (result f32) - local.get $0 - f32.neg - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $6 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $4 - local.get $6 - local.get $7 - f64.mul - local.set $3 - local.get $7 - local.get $3 - f64.const -0.16666666641626524 - local.get $6 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $5 - f64.mul - local.get $4 - f64.mul - f64.add - f32.demote_f64 - else - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - f64.const -1.9839334836096632e-04 - local.get $3 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $5 - local.get $3 - local.get $7 - f64.mul - local.set $6 - local.get $7 - local.get $6 - f64.const -0.16666666641626524 - local.get $3 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $6 - local.get $4 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - end - return - end - unreachable - end - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $1 - local.set $9 - local.get $2 - local.set $8 - local.get $9 - i32.const 1305022427 - i32.lt_u - if - local.get $10 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $6 - local.get $10 - f64.promote_f32 - local.get $6 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $6 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $6 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.0 - end - local.get $10 - local.set $12 - local.get $9 - local.set $11 - local.get $11 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.set $13 - local.get $13 - i32.const 63 - i32.and - i64.extend_i32_s - local.set $14 - i32.const 4600 - local.get $13 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.add - local.set $15 - local.get $15 - i64.load - local.set $16 - local.get $15 - i64.load offset=8 - local.set $17 - local.get $14 - i64.const 32 - i64.gt_u - if - local.get $15 - i64.load offset=16 - local.set $19 - local.get $19 - i64.const 96 - local.get $14 - i64.sub - i64.shr_u - local.set $18 - local.get $18 - local.get $17 - local.get $14 - i64.const 32 - i64.sub - i64.shl - i64.or - local.set $18 - else - local.get $17 - i64.const 32 - local.get $14 - i64.sub - i64.shr_u - local.set $18 - end - local.get $17 - i64.const 64 - local.get $14 - i64.sub - i64.shr_u - local.get $16 - local.get $14 - i64.shl - i64.or - local.set $19 - local.get $11 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.set $20 - local.get $20 - local.get $19 - i64.mul - local.get $20 - local.get $18 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $21 - local.get $21 - i64.const 2 - i64.shl - local.set $22 - local.get $21 - i64.const 62 - i64.shr_u - local.get $22 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.set $23 - f64.const 8.515303950216386e-20 - local.get $12 - f64.promote_f32 - f64.copysign - local.get $22 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - local.get $23 - local.set $23 - i32.const 0 - local.get $23 - i32.sub - local.get $23 - local.get $8 - select - end - local.set $24 - global.get $~lib/math/rempio2f_y - local.set $25 - local.get $24 - i32.const 1 - i32.and - if (result f32) - local.get $25 - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $6 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $4 - local.get $6 - local.get $7 - f64.mul - local.set $3 - local.get $7 - local.get $3 - f64.const -0.16666666641626524 - local.get $6 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $5 - f64.mul - local.get $4 - f64.mul - f64.add - f32.demote_f64 - else - local.get $25 - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - f64.const -0.001388676377460993 - local.get $3 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $5 - f32.const 1 - f64.promote_f32 - local.get $3 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $4 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $4 - local.get $3 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - end - local.set $26 - local.get $24 - i32.const 1 - i32.add - i32.const 2 - i32.and - if (result f32) - local.get $26 - f32.neg - else - local.get $26 - end - ) - (func $std/math/test_cosf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.cos - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.expm1 (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - (local $14 f64) - (local $15 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i64.const 2147483647 - i64.and - i32.wrap_i64 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $4 - local.get $2 - i32.const 1078159482 - i32.ge_u - if - local.get $0 - local.get $0 - f64.ne - if - local.get $0 - return - end - local.get $4 - if - f64.const -1 - return - end - local.get $0 - f64.const 709.782712893384 - f64.gt - if - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - return - end - end - f64.const 0 - local.set $5 - local.get $2 - i32.const 1071001154 - i32.gt_u - if - i32.const 1 - local.get $4 - i32.const 1 - i32.shl - i32.sub - f64.const 1.4426950408889634 - local.get $0 - f64.mul - f64.const 0.5 - local.get $0 - f64.copysign - f64.add - i32.trunc_f64_s - local.get $2 - i32.const 1072734898 - i32.lt_u - select - local.set $3 - local.get $3 - f64.convert_i32_s - local.set $6 - local.get $0 - local.get $6 - f64.const 0.6931471803691238 - f64.mul - f64.sub - local.set $7 - local.get $6 - f64.const 1.9082149292705877e-10 - f64.mul - local.set $8 - local.get $7 - local.get $8 - f64.sub - local.set $0 - local.get $7 - local.get $0 - f64.sub - local.get $8 - f64.sub - local.set $5 - else - local.get $2 - i32.const 1016070144 - i32.lt_u - if - local.get $0 - return - end - end - f64.const 0.5 - local.get $0 - f64.mul - local.set $9 - local.get $0 - local.get $9 - f64.mul - local.set $10 - local.get $10 - local.get $10 - f64.mul - local.set $11 - f64.const 1 - local.get $10 - f64.const -0.03333333333333313 - f64.mul - f64.add - local.get $11 - f64.const 1.5873015872548146e-03 - local.get $10 - f64.const -7.93650757867488e-05 - f64.mul - f64.add - local.get $11 - f64.const 4.008217827329362e-06 - local.get $10 - f64.const -2.0109921818362437e-07 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $12 - f64.const 3 - local.get $12 - local.get $9 - f64.mul - f64.sub - local.set $6 - local.get $10 - local.get $12 - local.get $6 - f64.sub - f64.const 6 - local.get $0 - local.get $6 - f64.mul - f64.sub - f64.div - f64.mul - local.set $13 - local.get $3 - i32.const 0 - i32.eq - if - local.get $0 - local.get $0 - local.get $13 - f64.mul - local.get $10 - f64.sub - f64.sub - return - end - local.get $0 - local.get $13 - local.get $5 - f64.sub - f64.mul - local.get $5 - f64.sub - local.set $13 - local.get $13 - local.get $10 - f64.sub - local.set $13 - local.get $3 - i32.const -1 - i32.eq - if - f64.const 0.5 - local.get $0 - local.get $13 - f64.sub - f64.mul - f64.const 0.5 - f64.sub - return - end - local.get $3 - i32.const 1 - i32.eq - if - local.get $0 - f64.const -0.25 - f64.lt - if - f64.const -2 - local.get $13 - local.get $0 - f64.const 0.5 - f64.add - f64.sub - f64.mul - return - end - f64.const 1 - f64.const 2 - local.get $0 - local.get $13 - f64.sub - f64.mul - f64.add - return - end - i64.const 1023 - local.get $3 - i64.extend_i32_s - i64.add - i64.const 52 - i64.shl - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $14 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $3 - i32.const 56 - i32.gt_s - end - if - local.get $0 - local.get $13 - f64.sub - f64.const 1 - f64.add - local.set $15 - local.get $3 - i32.const 1024 - i32.eq - if - local.get $15 - f64.const 2 - f64.mul - f64.const 8988465674311579538646525e283 - f64.mul - local.set $15 - else - local.get $15 - local.get $14 - f64.mul - local.set $15 - end - local.get $15 - f64.const 1 - f64.sub - return - end - i64.const 1023 - local.get $3 - i64.extend_i32_s - i64.sub - i64.const 52 - i64.shl - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $15 - local.get $3 - i32.const 20 - i32.lt_s - if - f64.const 1 - local.get $15 - f64.sub - local.get $13 - f64.sub - local.set $15 - else - f64.const 1 - local.get $13 - local.get $15 - f64.add - f64.sub - local.set $15 - end - local.get $0 - local.get $15 - f64.add - local.get $14 - f64.mul - ) - (func $~lib/math/NativeMath.exp (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i64) - (local $7 f64) - (local $8 i32) - (local $9 i64) - (local $10 f64) - (local $11 i64) - (local $12 f64) - (local $13 f64) - (local $14 i64) - (local $15 i64) - (local $16 f64) - (local $17 f64) - (local $18 f64) - (local $19 f64) - (local $20 f64) - (local $21 f64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/exp_lut|inlined.0 (result f64) - local.get $0 - local.set $1 - local.get $1 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - i32.wrap_i64 - local.set $3 - local.get $3 - i32.const 969 - i32.sub - i32.const 63 - i32.ge_u - if - local.get $3 - i32.const 969 - i32.sub - i32.const -2147483648 - i32.ge_u - if - f64.const 1 - br $~lib/util/math/exp_lut|inlined.0 - end - local.get $3 - i32.const 1033 - i32.ge_u - if - local.get $2 - i64.const -4503599627370496 - i64.eq - if - f64.const 0 - br $~lib/util/math/exp_lut|inlined.0 - end - local.get $3 - i32.const 2047 - i32.ge_u - if - f64.const 1 - local.get $1 - f64.add - br $~lib/util/math/exp_lut|inlined.0 - end - f64.const 0 - f64.const inf - local.get $2 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - select - br $~lib/util/math/exp_lut|inlined.0 - end - i32.const 0 - local.set $3 - end - f64.const 184.6649652337873 - local.get $1 - f64.mul - local.set $4 - local.get $4 - f64.const 6755399441055744 - f64.add - local.set $5 - local.get $5 - i64.reinterpret_f64 - local.set $6 - local.get $5 - f64.const 6755399441055744 - f64.sub - local.set $5 - local.get $1 - local.get $5 - f64.const -0.005415212348111709 - f64.mul - f64.add - local.get $5 - f64.const -1.2864023111638346e-14 - f64.mul - f64.add - local.set $7 - local.get $6 - i64.const 127 - i64.and - i64.const 1 - i64.shl - i32.wrap_i64 - local.set $8 - local.get $6 - i64.const 52 - i64.const 7 - i64.sub - i64.shl - local.set $9 - i32.const 4632 - local.get $8 - i32.const 3 - i32.shl - i32.add - i64.load - f64.reinterpret_i64 - local.set $10 - i32.const 4632 - local.get $8 - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $9 - i64.add - local.set $11 - local.get $7 - local.get $7 - f64.mul - local.set $12 - local.get $10 - local.get $7 - f64.add - local.get $12 - f64.const 0.49999999999996786 - local.get $7 - f64.const 0.16666666666665886 - f64.mul - f64.add - f64.mul - f64.add - local.get $12 - local.get $12 - f64.mul - f64.const 0.0416666808410674 - local.get $7 - f64.const 0.008333335853059549 - f64.mul - f64.add - f64.mul - f64.add - local.set $13 - local.get $3 - i32.const 0 - i32.eq - if - block $~lib/util/math/specialcase|inlined.0 (result f64) - local.get $13 - local.set $16 - local.get $11 - local.set $15 - local.get $6 - local.set $14 - local.get $14 - i64.const 2147483648 - i64.and - i64.const 0 - i64.ne - i32.eqz - if - local.get $15 - i64.const 1009 - i64.const 52 - i64.shl - i64.sub - local.set $15 - local.get $15 - f64.reinterpret_i64 - local.set $17 - f64.const 5486124068793688683255936e279 - local.get $17 - local.get $17 - local.get $16 - f64.mul - f64.add - f64.mul - br $~lib/util/math/specialcase|inlined.0 - end - local.get $15 - i64.const 1022 - i64.const 52 - i64.shl - i64.add - local.set $15 - local.get $15 - f64.reinterpret_i64 - local.set $17 - local.get $17 - local.get $17 - local.get $16 - f64.mul - f64.add - local.set $18 - local.get $18 - f64.abs - f64.const 1 - f64.lt - if - f64.const 1 - local.get $18 - f64.copysign - local.set $19 - local.get $17 - local.get $18 - f64.sub - local.get $17 - local.get $16 - f64.mul - f64.add - local.set $20 - local.get $19 - local.get $18 - f64.add - local.set $21 - local.get $19 - local.get $21 - f64.sub - local.get $18 - f64.add - local.get $20 - f64.add - local.set $20 - local.get $21 - local.get $20 - f64.add - local.get $19 - f64.sub - local.set $18 - local.get $18 - f64.const 0 - f64.eq - if - local.get $15 - i64.const -9223372036854775808 - i64.and - f64.reinterpret_i64 - local.set $18 - end - end - local.get $18 - f64.const 2.2250738585072014e-308 - f64.mul - end - br $~lib/util/math/exp_lut|inlined.0 - end - local.get $11 - f64.reinterpret_i64 - local.set $18 - local.get $18 - local.get $18 - local.get $13 - f64.mul - f64.add - end - return - ) - (func $~lib/math/NativeMath.cosh (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 9223372036854775807 - i64.and - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $0 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - local.get $2 - i32.const 1072049730 - i32.lt_u - if - local.get $2 - i32.const 1072693248 - i32.const 26 - i32.const 20 - i32.shl - i32.sub - i32.lt_u - if - f64.const 1 - return - end - local.get $0 - call $~lib/math/NativeMath.expm1 - local.set $3 - f64.const 1 - local.get $3 - local.get $3 - f64.mul - f64.const 2 - f64.const 2 - local.get $3 - f64.mul - f64.add - f64.div - f64.add - return - end - local.get $2 - i32.const 1082535490 - i32.lt_u - if - local.get $0 - call $~lib/math/NativeMath.exp - local.set $3 - f64.const 0.5 - local.get $3 - f64.const 1 - local.get $3 - f64.div - f64.add - f64.mul - return - end - local.get $0 - local.set $5 - f64.const 1 - local.set $4 - i32.const 1023 - i32.const 2043 - i32.const 2 - i32.div_u - i32.add - i32.const 20 - i32.shl - i64.extend_i32_u - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.set $6 - local.get $5 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - local.get $4 - local.get $6 - f64.mul - f64.mul - local.get $6 - f64.mul - local.set $3 - local.get $3 - ) - (func $std/math/test_cosh (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.cosh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/cosh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.expm1 (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f32) - (local $6 i32) - (local $7 f32) - (local $8 f32) - (local $9 f32) - (local $10 f32) - (local $11 f32) - (local $12 f32) - (local $13 f32) - (local $14 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $2 - local.get $1 - i32.const 31 - i32.shr_u - local.set $3 - local.get $2 - i32.const 1100331076 - i32.ge_u - if - local.get $2 - i32.const 2139095040 - i32.gt_u - if - local.get $0 - return - end - local.get $3 - if - f32.const -1 - return - end - local.get $0 - f32.const 88.7216796875 - f32.gt - if - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - local.set $0 - local.get $0 - return - end - end - f32.const 0 - local.set $4 - local.get $2 - i32.const 1051816472 - i32.gt_u - if - i32.const 1 - local.get $3 - i32.const 1 - i32.shl - i32.sub - f32.const 1.4426950216293335 - local.get $0 - f32.mul - f32.const 0.5 - local.get $0 - f32.copysign - f32.add - i32.trunc_f32_s - local.get $2 - i32.const 1065686418 - i32.lt_u - select - local.set $6 - local.get $6 - f32.convert_i32_s - local.set $5 - local.get $0 - local.get $5 - f32.const 0.6931381225585938 - f32.mul - f32.sub - local.set $7 - local.get $5 - f32.const 9.05800061445916e-06 - f32.mul - local.set $8 - local.get $7 - local.get $8 - f32.sub - local.set $0 - local.get $7 - local.get $0 - f32.sub - local.get $8 - f32.sub - local.set $4 - else - local.get $2 - i32.const 855638016 - i32.lt_u - if - local.get $0 - return - else - i32.const 0 - local.set $6 - end - end - f32.const 0.5 - local.get $0 - f32.mul - local.set $9 - local.get $0 - local.get $9 - f32.mul - local.set $10 - f32.const 1 - local.get $10 - f32.const -0.03333321213722229 - local.get $10 - f32.const 1.5807170420885086e-03 - f32.mul - f32.add - f32.mul - f32.add - local.set $11 - f32.const 3 - local.get $11 - local.get $9 - f32.mul - f32.sub - local.set $5 - local.get $10 - local.get $11 - local.get $5 - f32.sub - f32.const 6 - local.get $0 - local.get $5 - f32.mul - f32.sub - f32.div - f32.mul - local.set $12 - local.get $6 - i32.const 0 - i32.eq - if - local.get $0 - local.get $0 - local.get $12 - f32.mul - local.get $10 - f32.sub - f32.sub - return - end - local.get $0 - local.get $12 - local.get $4 - f32.sub - f32.mul - local.get $4 - f32.sub - local.set $12 - local.get $12 - local.get $10 - f32.sub - local.set $12 - local.get $6 - i32.const -1 - i32.eq - if - f32.const 0.5 - local.get $0 - local.get $12 - f32.sub - f32.mul - f32.const 0.5 - f32.sub - return - end - local.get $6 - i32.const 1 - i32.eq - if - local.get $0 - f32.const -0.25 - f32.lt - if - f32.const -2 - local.get $12 - local.get $0 - f32.const 0.5 - f32.add - f32.sub - f32.mul - return - end - f32.const 1 - f32.const 2 - local.get $0 - local.get $12 - f32.sub - f32.mul - f32.add - return - end - i32.const 127 - local.get $6 - i32.add - i32.const 23 - i32.shl - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $13 - local.get $6 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $6 - i32.const 56 - i32.gt_s - end - if - local.get $0 - local.get $12 - f32.sub - f32.const 1 - f32.add - local.set $14 - local.get $6 - i32.const 128 - i32.eq - if - local.get $14 - f32.const 2 - f32.mul - f32.const 1701411834604692317316873e14 - f32.mul - local.set $14 - else - local.get $14 - local.get $13 - f32.mul - local.set $14 - end - local.get $14 - f32.const 1 - f32.sub - return - end - i32.const 127 - local.get $6 - i32.sub - i32.const 23 - i32.shl - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $14 - local.get $6 - i32.const 20 - i32.lt_s - if - f32.const 1 - local.get $14 - f32.sub - local.get $12 - f32.sub - local.set $14 - else - f32.const 1 - local.get $12 - local.get $14 - f32.add - f32.sub - local.set $14 - end - local.get $0 - local.get $14 - f32.add - local.get $13 - f32.mul - ) - (func $~lib/math/NativeMathf.exp (param $0 f32) (result f32) - (local $1 f32) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 i64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 i64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/expf_lut|inlined.0 (result f32) - local.get $0 - local.set $1 - local.get $1 - f64.promote_f32 - local.set $2 - local.get $1 - i32.reinterpret_f32 - local.set $3 - local.get $3 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - local.set $4 - local.get $4 - i32.const 1067 - i32.ge_u - if - local.get $3 - i32.const -8388608 - i32.eq - if - f32.const 0 - br $~lib/util/math/expf_lut|inlined.0 - end - local.get $4 - i32.const 2040 - i32.ge_u - if - local.get $1 - local.get $1 - f32.add - br $~lib/util/math/expf_lut|inlined.0 - end - local.get $1 - i32.const 1118925335 - f32.reinterpret_i32 - f32.gt - if - local.get $1 - f32.const 1701411834604692317316873e14 - f32.mul - br $~lib/util/math/expf_lut|inlined.0 - end - local.get $1 - i32.const -1026559564 - f32.reinterpret_i32 - f32.lt - if - f32.const 0 - br $~lib/util/math/expf_lut|inlined.0 - end - end - f64.const 46.16624130844683 - local.get $2 - f64.mul - local.set $5 - local.get $5 - f64.const 6755399441055744 - f64.add - local.set $6 - local.get $6 - i64.reinterpret_f64 - local.set $7 - local.get $5 - local.get $6 - f64.const 6755399441055744 - f64.sub - f64.sub - local.set $8 - i32.const 6680 - local.get $7 - i32.wrap_i64 - i32.const 31 - i32.and - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $11 - local.get $7 - i64.const 52 - i64.const 5 - i64.sub - i64.shl - i64.add - local.set $11 - local.get $11 - f64.reinterpret_i64 - local.set $9 - f64.const 1.6938359250920212e-06 - local.get $8 - f64.mul - f64.const 2.3459809789509004e-04 - f64.add - local.set $5 - f64.const 0.021660849396613134 - local.get $8 - f64.mul - f64.const 1 - f64.add - local.set $10 - local.get $10 - local.get $5 - local.get $8 - local.get $8 - f64.mul - f64.mul - f64.add - local.set $10 - local.get $10 - local.get $9 - f64.mul - local.set $10 - local.get $10 - f32.demote_f64 - end - return - ) - (func $~lib/math/NativeMathf.cosh (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $0 - local.get $1 - i32.const 1060205079 - i32.lt_u - if - local.get $1 - i32.const 1065353216 - i32.const 12 - i32.const 23 - i32.shl - i32.sub - i32.lt_u - if - f32.const 1 - return - end - local.get $0 - call $~lib/math/NativeMathf.expm1 - local.set $2 - f32.const 1 - local.get $2 - local.get $2 - f32.mul - f32.const 2 - f32.const 2 - local.get $2 - f32.mul - f32.add - f32.div - f32.add - return - end - local.get $1 - i32.const 1118925335 - i32.lt_u - if - local.get $0 - call $~lib/math/NativeMathf.exp - local.set $2 - f32.const 0.5 - local.get $2 - f32.mul - f32.const 0.5 - local.get $2 - f32.div - f32.add - return - end - local.get $0 - local.set $3 - f32.const 1 - local.set $2 - i32.const 127 - i32.const 235 - i32.const 1 - i32.shr_u - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $4 - local.get $3 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - local.get $2 - local.get $4 - f32.mul - f32.mul - local.get $4 - f32.mul - ) - (func $std/math/test_coshf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.cosh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $std/math/test_exp (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.exp - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/exp - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $std/math/test_expf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.exp - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $std/math/test_expm1 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.expm1 - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/expm1 - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $std/math/test_expm1f (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.expm1 - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.exp2 (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 i32) - (local $4 f64) - (local $5 i64) - (local $6 f64) - (local $7 i32) - (local $8 i64) - (local $9 f64) - (local $10 i64) - (local $11 f64) - (local $12 f64) - (local $13 i64) - (local $14 i64) - (local $15 f64) - (local $16 f64) - (local $17 f64) - (local $18 f64) - (local $19 f64) - block $~lib/util/math/exp2_lut|inlined.0 (result f64) - local.get $0 - local.set $1 - local.get $1 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - i32.wrap_i64 - local.set $3 - local.get $3 - i32.const 969 - i32.sub - i32.const 63 - i32.ge_u - if - local.get $3 - i32.const 969 - i32.sub - i32.const -2147483648 - i32.ge_u - if - f64.const 1 - br $~lib/util/math/exp2_lut|inlined.0 - end - local.get $3 - i32.const 1033 - i32.ge_u - if - local.get $2 - i64.const -4503599627370496 - i64.eq - if - f64.const 0 - br $~lib/util/math/exp2_lut|inlined.0 - end - local.get $3 - i32.const 2047 - i32.ge_u - if - f64.const 1 - local.get $1 - f64.add - br $~lib/util/math/exp2_lut|inlined.0 - end - local.get $2 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - i32.eqz - if - f64.const inf - br $~lib/util/math/exp2_lut|inlined.0 - else - local.get $2 - i64.const -4570929321408987136 - i64.ge_u - if - f64.const 0 - br $~lib/util/math/exp2_lut|inlined.0 - end - end - end - local.get $2 - i64.const 1 - i64.shl - i64.const -9143996093422370816 - i64.gt_u - if - i32.const 0 - local.set $3 - end - end - local.get $1 - f64.const 52776558133248 - f64.add - local.set $4 - local.get $4 - i64.reinterpret_f64 - local.set $5 - local.get $4 - f64.const 52776558133248 - f64.sub - local.set $4 - local.get $1 - local.get $4 - f64.sub - local.set $6 - local.get $5 - i64.const 127 - i64.and - i64.const 1 - i64.shl - i32.wrap_i64 - local.set $7 - local.get $5 - i64.const 52 - i64.const 7 - i64.sub - i64.shl - local.set $8 - i32.const 4632 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - f64.reinterpret_i64 - local.set $9 - i32.const 4632 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $8 - i64.add - local.set $10 - local.get $6 - local.get $6 - f64.mul - local.set $11 - local.get $9 - local.get $6 - f64.const 0.6931471805599453 - f64.mul - f64.add - local.get $11 - f64.const 0.24022650695909065 - local.get $6 - f64.const 0.0555041086686087 - f64.mul - f64.add - f64.mul - f64.add - local.get $11 - local.get $11 - f64.mul - f64.const 0.009618131975721055 - local.get $6 - f64.const 1.3332074570119598e-03 - f64.mul - f64.add - f64.mul - f64.add - local.set $12 - local.get $3 - i32.const 0 - i32.eq - if - block $~lib/util/math/specialcase2|inlined.0 (result f64) - local.get $12 - local.set $15 - local.get $10 - local.set $14 - local.get $5 - local.set $13 - local.get $13 - i64.const 2147483648 - i64.and - i64.const 0 - i64.eq - if - local.get $14 - i64.const 1 - i64.const 52 - i64.shl - i64.sub - local.set $14 - local.get $14 - f64.reinterpret_i64 - local.set $16 - f64.const 2 - local.get $16 - local.get $15 - f64.mul - local.get $16 - f64.add - f64.mul - br $~lib/util/math/specialcase2|inlined.0 - end - local.get $14 - i64.const 1022 - i64.const 52 - i64.shl - i64.add - local.set $14 - local.get $14 - f64.reinterpret_i64 - local.set $16 - local.get $16 - local.get $15 - f64.mul - local.get $16 - f64.add - local.set $17 - local.get $17 - f64.const 1 - f64.lt - if - local.get $16 - local.get $17 - f64.sub - local.get $16 - local.get $15 - f64.mul - f64.add - local.set $19 - f64.const 1 - local.get $17 - f64.add - local.set $18 - f64.const 1 - local.get $18 - f64.sub - local.get $17 - f64.add - local.get $19 - f64.add - local.set $19 - local.get $18 - local.get $19 - f64.add - f64.const 1 - f64.sub - local.set $17 - end - local.get $17 - f64.const 2.2250738585072014e-308 - f64.mul - end - br $~lib/util/math/exp2_lut|inlined.0 - end - local.get $10 - f64.reinterpret_i64 - local.set $17 - local.get $17 - local.get $12 - f64.mul - local.get $17 - f64.add - end - ) - (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.exp2 - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - f64.const 2 - local.get $0 - call $~lib/bindings/Math/pow - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.exp2 (param $0 f32) (result f32) - (local $1 f32) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i64) - (local $7 f64) - (local $8 i64) - (local $9 f64) - (local $10 f64) - block $~lib/util/math/exp2f_lut|inlined.0 (result f32) - local.get $0 - local.set $1 - local.get $1 - f64.promote_f32 - local.set $2 - local.get $1 - i32.reinterpret_f32 - local.set $3 - local.get $3 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - local.set $4 - local.get $4 - i32.const 1072 - i32.ge_u - if - local.get $3 - i32.const -8388608 - i32.eq - if - f32.const 0 - br $~lib/util/math/exp2f_lut|inlined.0 - end - local.get $4 - i32.const 2040 - i32.ge_u - if - local.get $1 - local.get $1 - f32.add - br $~lib/util/math/exp2f_lut|inlined.0 - end - local.get $1 - f32.const 0 - f32.gt - if - local.get $1 - f32.const 1701411834604692317316873e14 - f32.mul - br $~lib/util/math/exp2f_lut|inlined.0 - end - local.get $1 - f32.const -150 - f32.le - if - f32.const 0 - br $~lib/util/math/exp2f_lut|inlined.0 - end - end - local.get $2 - f64.const 211106232532992 - f64.add - local.set $5 - local.get $5 - i64.reinterpret_f64 - local.set $6 - local.get $2 - local.get $5 - f64.const 211106232532992 - f64.sub - f64.sub - local.set $7 - i32.const 6680 - local.get $6 - i32.wrap_i64 - i32.const 31 - i32.and - i32.const 3 - i32.shl - i32.add - i64.load - local.set $8 - local.get $8 - local.get $6 - i64.const 52 - i64.const 5 - i64.sub - i64.shl - i64.add - local.set $8 - local.get $8 - f64.reinterpret_i64 - local.set $10 - f64.const 0.6931471806916203 - local.get $7 - f64.mul - f64.const 1 - f64.add - local.set $9 - local.get $9 - f64.const 0.05550361559341535 - local.get $7 - f64.mul - f64.const 0.2402284522445722 - f64.add - local.get $7 - local.get $7 - f64.mul - f64.mul - f64.add - local.set $9 - local.get $9 - local.get $10 - f64.mul - local.set $9 - local.get $9 - f32.demote_f64 - end - ) - (func $std/math/test_exp2f (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.exp2 - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $std/math/test_floor (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - (local $4 f64) - local.get $0 - local.set $4 - local.get $4 - f64.floor - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/floor - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $std/math/test_floorf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - (local $4 f32) - local.get $0 - local.set $4 - local.get $4 - f32.floor - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.hypot (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - (local $14 f64) - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 - i64.const 9223372036854775807 - i64.and - local.set $2 - local.get $3 - i64.const 9223372036854775807 - i64.and - local.set $3 - local.get $2 - local.get $3 - i64.lt_u - if - local.get $2 - local.set $4 - local.get $3 - local.set $2 - local.get $4 - local.set $3 - end - local.get $2 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $5 - local.get $3 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $6 - local.get $3 - f64.reinterpret_i64 - local.set $1 - local.get $6 - i32.const 2047 - i32.eq - if - local.get $1 - return - end - local.get $2 - f64.reinterpret_i64 - local.set $0 - local.get $5 - i32.const 2047 - i32.eq - if (result i32) - i32.const 1 - else - local.get $3 - i64.const 0 - i64.eq - end - if - local.get $0 - return - end - local.get $5 - local.get $6 - i32.sub - i32.const 64 - i32.gt_s - if - local.get $0 - local.get $1 - f64.add - return - end - f64.const 1 - local.set $7 - local.get $5 - i32.const 1023 - i32.const 510 - i32.add - i32.gt_s - if - f64.const 5260135901548373507240989e186 - local.set $7 - local.get $0 - f64.const 1.90109156629516e-211 - f64.mul - local.set $0 - local.get $1 - f64.const 1.90109156629516e-211 - f64.mul - local.set $1 - else - local.get $6 - i32.const 1023 - i32.const 450 - i32.sub - i32.lt_s - if - f64.const 1.90109156629516e-211 - local.set $7 - local.get $0 - f64.const 5260135901548373507240989e186 - f64.mul - local.set $0 - local.get $1 - f64.const 5260135901548373507240989e186 - f64.mul - local.set $1 - end - end - local.get $0 - f64.const 134217729 - f64.mul - local.set $8 - local.get $0 - local.get $8 - f64.sub - local.get $8 - f64.add - local.set $9 - local.get $0 - local.get $9 - f64.sub - local.set $10 - local.get $0 - local.get $0 - f64.mul - local.set $11 - local.get $9 - local.get $9 - f64.mul - local.get $11 - f64.sub - f64.const 2 - local.get $9 - f64.mul - local.get $10 - f64.add - local.get $10 - f64.mul - f64.add - local.set $12 - local.get $1 - f64.const 134217729 - f64.mul - local.set $8 - local.get $1 - local.get $8 - f64.sub - local.get $8 - f64.add - local.set $9 - local.get $1 - local.get $9 - f64.sub - local.set $10 - local.get $1 - local.get $1 - f64.mul - local.set $13 - local.get $9 - local.get $9 - f64.mul - local.get $13 - f64.sub - f64.const 2 - local.get $9 - f64.mul - local.get $10 - f64.add - local.get $10 - f64.mul - f64.add - local.set $14 - local.get $7 - local.get $14 - local.get $12 - f64.add - local.get $13 - f64.add - local.get $11 - f64.add - f64.sqrt - f64.mul - ) - (func $std/math/test_hypot (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.hypot - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - ) - (func $~lib/math/NativeMathf.hypot (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - local.get $0 - i32.reinterpret_f32 - local.set $2 - local.get $1 - i32.reinterpret_f32 - local.set $3 - local.get $2 - i32.const 2147483647 - i32.and - local.set $2 - local.get $3 - i32.const 2147483647 - i32.and - local.set $3 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - local.set $4 - local.get $3 - local.set $2 - local.get $4 - local.set $3 - end - local.get $2 - f32.reinterpret_i32 - local.set $0 - local.get $3 - f32.reinterpret_i32 - local.set $1 - local.get $3 - i32.const 255 - i32.const 23 - i32.shl - i32.eq - if - local.get $1 - return - end - local.get $2 - i32.const 255 - i32.const 23 - i32.shl - i32.ge_u - if (result i32) - i32.const 1 - else - local.get $3 - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.sub - i32.const 25 - i32.const 23 - i32.shl - i32.ge_u - end - if - local.get $0 - local.get $1 - f32.add - return - end - f32.const 1 - local.set $5 - local.get $2 - i32.const 127 - i32.const 60 - i32.add - i32.const 23 - i32.shl - i32.ge_u - if - f32.const 1237940039285380274899124e3 - local.set $5 - local.get $0 - f32.const 8.077935669463161e-28 - f32.mul - local.set $0 - local.get $1 - f32.const 8.077935669463161e-28 - f32.mul - local.set $1 - else - local.get $3 - i32.const 127 - i32.const 60 - i32.sub - i32.const 23 - i32.shl - i32.lt_u - if - f32.const 8.077935669463161e-28 - local.set $5 - local.get $0 - f32.const 1237940039285380274899124e3 - f32.mul - local.set $0 - local.get $1 - f32.const 1237940039285380274899124e3 - f32.mul - local.set $1 - end - end - local.get $5 - local.get $0 - f64.promote_f32 - local.get $0 - f64.promote_f32 - f64.mul - local.get $1 - f64.promote_f32 - local.get $1 - f64.promote_f32 - f64.mul - f64.add - f32.demote_f64 - f32.sqrt - f32.mul - ) - (func $std/math/test_hypotf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.hypot - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - ) - (func $std/math/test_log (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.log - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/log - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $std/math/test_logf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.log - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.log10 (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - (local $14 f64) - (local $15 f64) - (local $16 f64) - (local $17 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - i32.const 0 - local.set $3 - local.get $2 - i32.const 1048576 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 31 - i32.shr_u - end - if - local.get $1 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - return - end - local.get $2 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - return - end - local.get $3 - i32.const 54 - i32.sub - local.set $3 - local.get $0 - f64.const 18014398509481984 - f64.mul - local.set $0 - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - else - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return - else - local.get $2 - i32.const 1072693248 - i32.eq - if (result i32) - local.get $1 - i64.const 32 - i64.shl - i64.const 0 - i64.eq - else - i32.const 0 - end - if - f64.const 0 - return - end - end - end - local.get $2 - i32.const 1072693248 - i32.const 1072079006 - i32.sub - i32.add - local.set $2 - local.get $3 - local.get $2 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - i32.add - local.set $3 - local.get $2 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - local.set $2 - local.get $2 - i64.extend_i32_u - i64.const 32 - i64.shl - local.get $1 - i64.const 4294967295 - i64.and - i64.or - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $0 - local.get $0 - f64.const 1 - f64.sub - local.set $4 - f64.const 0.5 - local.get $4 - f64.mul - local.get $4 - f64.mul - local.set $5 - local.get $4 - f64.const 2 - local.get $4 - f64.add - f64.div - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $8 - local.get $8 - f64.const 0.3999999999940942 - local.get $8 - f64.const 0.22222198432149784 - local.get $8 - f64.const 0.15313837699209373 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $9 - local.get $7 - f64.const 0.6666666666666735 - local.get $8 - f64.const 0.2857142874366239 - local.get $8 - f64.const 0.1818357216161805 - local.get $8 - f64.const 0.14798198605116586 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $10 - local.get $10 - local.get $9 - f64.add - local.set $11 - local.get $4 - local.get $5 - f64.sub - local.set $12 - local.get $12 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const -4294967296 - i64.and - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $12 - local.get $4 - local.get $12 - f64.sub - local.get $5 - f64.sub - local.get $6 - local.get $5 - local.get $11 - f64.add - f64.mul - f64.add - local.set $13 - local.get $12 - f64.const 0.4342944818781689 - f64.mul - local.set $14 - local.get $3 - f64.convert_i32_s - local.set $15 - local.get $15 - f64.const 0.30102999566361177 - f64.mul - local.set $16 - local.get $15 - f64.const 3.694239077158931e-13 - f64.mul - local.get $13 - local.get $12 - f64.add - f64.const 2.5082946711645275e-11 - f64.mul - f64.add - local.get $13 - f64.const 0.4342944818781689 - f64.mul - f64.add - local.set $17 - local.get $16 - local.get $14 - f64.add - local.set $8 - local.get $17 - local.get $16 - local.get $8 - f64.sub - local.get $14 - f64.add - f64.add - local.set $17 - local.get $17 - local.get $8 - f64.add - ) - (func $std/math/test_log10 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.log10 - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/log10 - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.log10 (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 f32) - (local $5 f32) - (local $6 f32) - (local $7 f32) - (local $8 f32) - (local $9 f32) - (local $10 f32) - (local $11 f32) - (local $12 f32) - (local $13 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - i32.const 0 - local.set $2 - local.get $1 - i32.const 8388608 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 31 - i32.shr_u - end - if - local.get $1 - i32.const 1 - i32.shl - i32.const 0 - i32.eq - if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - local.get $2 - i32.const 25 - i32.sub - local.set $2 - local.get $0 - f32.const 33554432 - f32.mul - local.set $0 - local.get $0 - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - return - else - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 0 - return - end - end - end - local.get $1 - i32.const 1065353216 - i32.const 1060439283 - i32.sub - i32.add - local.set $1 - local.get $2 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - i32.add - local.set $2 - local.get $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $0 - local.get $0 - f32.const 1 - f32.sub - local.set $3 - local.get $3 - f32.const 2 - local.get $3 - f32.add - f32.div - local.set $4 - local.get $4 - local.get $4 - f32.mul - local.set $5 - local.get $5 - local.get $5 - f32.mul - local.set $6 - local.get $6 - f32.const 0.40000972151756287 - local.get $6 - f32.const 0.24279078841209412 - f32.mul - f32.add - f32.mul - local.set $7 - local.get $5 - f32.const 0.6666666269302368 - local.get $6 - f32.const 0.2849878668785095 - f32.mul - f32.add - f32.mul - local.set $8 - local.get $8 - local.get $7 - f32.add - local.set $9 - f32.const 0.5 - local.get $3 - f32.mul - local.get $3 - f32.mul - local.set $10 - local.get $3 - local.get $10 - f32.sub - local.set $11 - local.get $11 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const -4096 - i32.and - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $11 - local.get $3 - local.get $11 - f32.sub - local.get $10 - f32.sub - local.get $4 - local.get $10 - local.get $9 - f32.add - f32.mul - f32.add - local.set $12 - local.get $2 - f32.convert_i32_s - local.set $13 - local.get $13 - f32.const 7.903415166765626e-07 - f32.mul - local.get $12 - local.get $11 - f32.add - f32.const -3.168997136526741e-05 - f32.mul - f32.add - local.get $12 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $11 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $13 - f32.const 0.3010292053222656 - f32.mul - f32.add - ) - (func $std/math/test_log10f (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.log10 - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $std/math/test_log1p (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.log1p - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/log1p - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $std/math/test_log1pf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.log1p - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i64) - (local $16 i64) - (local $17 f64) - (local $18 f64) - (local $19 f64) - (local $20 f64) - (local $21 f64) - (local $22 f64) - (local $23 f64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/log2_lut|inlined.0 (result f64) - local.get $0 - local.set $1 - local.get $1 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 4606800540372828160 - i64.sub - i64.const 4607381812656734208 - i64.const 4606800540372828160 - i64.sub - i64.lt_u - if - local.get $1 - f64.const 1 - f64.sub - local.set $3 - local.get $3 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $4 - local.get $3 - local.get $4 - f64.sub - local.set $5 - local.get $4 - f64.const 1.4426950407214463 - f64.mul - local.set $6 - local.get $5 - f64.const 1.4426950407214463 - f64.mul - local.get $3 - f64.const 1.6751713164886512e-10 - f64.mul - f64.add - local.set $7 - local.get $3 - local.get $3 - f64.mul - local.set $8 - local.get $8 - local.get $8 - f64.mul - local.set $9 - local.get $8 - f64.const -0.7213475204444817 - local.get $3 - f64.const 0.48089834696298744 - f64.mul - f64.add - f64.mul - local.set $10 - local.get $6 - local.get $10 - f64.add - local.set $11 - local.get $7 - local.get $6 - local.get $11 - f64.sub - local.get $10 - f64.add - f64.add - local.set $7 - local.get $7 - local.get $9 - f64.const -0.360673760222145 - local.get $3 - f64.const 0.2885390081805197 - f64.mul - f64.add - local.get $8 - f64.const -0.24044917405728863 - local.get $3 - f64.const 0.2060992861022954 - f64.mul - f64.add - f64.mul - f64.add - local.get $9 - f64.const -0.18033596705327856 - local.get $3 - f64.const 0.1603032746063156 - f64.mul - f64.add - local.get $8 - f64.const -0.14483316576701266 - local.get $3 - f64.const 0.13046826811283835 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $7 - local.get $11 - local.get $7 - f64.add - br $~lib/util/math/log2_lut|inlined.0 - end - local.get $2 - i64.const 48 - i64.shr_u - i32.wrap_i64 - local.set $12 - local.get $12 - i32.const 16 - i32.sub - i32.const 32752 - i32.const 16 - i32.sub - i32.ge_u - if - local.get $2 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const -1 - local.get $1 - local.get $1 - f64.mul - f64.div - br $~lib/util/math/log2_lut|inlined.0 - end - local.get $2 - i64.const 9218868437227405312 - i64.eq - if - local.get $1 - br $~lib/util/math/log2_lut|inlined.0 - end - local.get $12 - i32.const 32768 - i32.and - if (result i32) - i32.const 1 - else - local.get $12 - i32.const 32752 - i32.and - i32.const 32752 - i32.eq - end - if - local.get $1 - local.get $1 - f64.sub - local.get $1 - local.get $1 - f64.sub - f64.div - br $~lib/util/math/log2_lut|inlined.0 - end - local.get $1 - f64.const 4503599627370496 - f64.mul - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 52 - i64.const 52 - i64.shl - i64.sub - local.set $2 - end - local.get $2 - i64.const 4604367669032910848 - i64.sub - local.set $13 - local.get $13 - i64.const 52 - i64.const 6 - i64.sub - i64.shr_u - i64.const 63 - i64.and - i32.wrap_i64 - local.set $14 - local.get $13 - i64.const 52 - i64.shr_s - local.set $15 - local.get $2 - local.get $13 - i64.const -4503599627370496 - i64.and - i64.sub - local.set $16 - i32.const 6936 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $11 - i32.const 6936 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $10 - local.get $16 - f64.reinterpret_i64 - local.set $9 - local.get $15 - f64.convert_i64_s - local.set $8 - i32.const 7960 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $7 - i32.const 7960 - local.get $14 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $6 - local.get $9 - local.get $7 - f64.sub - local.get $6 - f64.sub - local.get $11 - f64.mul - local.set $5 - local.get $5 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $4 - local.get $5 - local.get $4 - f64.sub - local.set $3 - local.get $4 - f64.const 1.4426950407214463 - f64.mul - local.set $17 - local.get $3 - f64.const 1.4426950407214463 - f64.mul - local.get $5 - f64.const 1.6751713164886512e-10 - f64.mul - f64.add - local.set $18 - local.get $8 - local.get $10 - f64.add - local.set $19 - local.get $19 - local.get $17 - f64.add - local.set $20 - local.get $19 - local.get $20 - f64.sub - local.get $17 - f64.add - local.get $18 - f64.add - local.set $21 - local.get $5 - local.get $5 - f64.mul - local.set $22 - f64.const -0.7213475204444882 - local.get $5 - f64.const 0.4808983469629985 - f64.mul - f64.add - local.get $22 - f64.const -0.36067375954075914 - local.get $5 - f64.const 0.2885390073180969 - f64.mul - f64.add - f64.mul - f64.add - local.get $22 - local.get $22 - f64.mul - f64.const -0.2404693555628422 - local.get $5 - f64.const 0.2061202382173603 - f64.mul - f64.add - f64.mul - f64.add - local.set $23 - local.get $21 - local.get $22 - local.get $23 - f64.mul - f64.add - local.get $20 - f64.add - end - return - ) - (func $std/math/test_log2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.log2 - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/log2 - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.log2 (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) - (local $14 f64) - (local $15 f64) - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/log2f_lut|inlined.0 (result f32) - local.get $0 - local.set $1 - local.get $1 - i32.reinterpret_f32 - local.set $2 - local.get $2 - i32.const 8388608 - i32.sub - i32.const 2139095040 - i32.const 8388608 - i32.sub - i32.ge_u - if - local.get $2 - i32.const 2 - i32.mul - i32.const 0 - i32.eq - if - f32.const inf - f32.neg - br $~lib/util/math/log2f_lut|inlined.0 - end - local.get $2 - i32.const 2139095040 - i32.eq - if - local.get $1 - br $~lib/util/math/log2f_lut|inlined.0 - end - local.get $2 - i32.const 31 - i32.shr_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 2 - i32.mul - i32.const -16777216 - i32.ge_u - end - if - local.get $1 - local.get $1 - f32.sub - local.get $1 - local.get $1 - f32.sub - f32.div - br $~lib/util/math/log2f_lut|inlined.0 - end - local.get $1 - f32.const 8388608 - f32.mul - i32.reinterpret_f32 - local.set $2 - local.get $2 - i32.const 23 - i32.const 23 - i32.shl - i32.sub - local.set $2 - end - local.get $2 - i32.const 1060306944 - i32.sub - local.set $3 - local.get $3 - i32.const 23 - i32.const 4 - i32.sub - i32.shr_u - i32.const 15 - i32.and - local.set $4 - local.get $3 - i32.const -8388608 - i32.and - local.set $5 - local.get $2 - local.get $5 - i32.sub - local.set $6 - local.get $3 - i32.const 23 - i32.shr_s - local.set $7 - i32.const 8984 - local.get $4 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $8 - i32.const 8984 - local.get $4 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $9 - local.get $6 - f32.reinterpret_i32 - f64.promote_f32 - local.set $10 - local.get $10 - local.get $8 - f64.mul - f64.const 1 - f64.sub - local.set $11 - local.get $9 - local.get $7 - f64.convert_i32_s - f64.add - local.set $12 - f64.const 0.4811247078767291 - local.get $11 - f64.mul - f64.const -0.7213476299867769 - f64.add - local.set $13 - f64.const 1.4426950186867042 - local.get $11 - f64.mul - local.get $12 - f64.add - local.set $14 - local.get $11 - local.get $11 - f64.mul - local.set $15 - local.get $13 - f64.const -0.36051725506874704 - local.get $15 - f64.mul - f64.add - local.set $13 - local.get $13 - local.get $15 - f64.mul - local.get $14 - f64.add - local.set $13 - local.get $13 - f32.demote_f64 - end - return - ) - (func $std/math/test_log2f (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.log2 - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $std/math/test_max (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) - (local $5 f64) - (local $6 f64) - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $6 - local.get $5 - f64.max - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - call $~lib/bindings/Math/max - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $std/math/test_maxf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) - (local $5 f32) - (local $6 f32) - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $6 - local.get $5 - f32.max - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - ) - (func $std/math/test_min (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) - (local $5 f64) - (local $6 f64) - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $6 - local.get $5 - f64.min - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - call $~lib/bindings/Math/min - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $std/math/test_minf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) - (local $5 f32) - (local $6 f32) - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $6 - local.get $5 - f32.min - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - ) - (func $~lib/math/NativeMath.mod (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 f64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - local.get $1 - f64.abs - f64.const 1 - f64.eq - if - local.get $0 - local.get $0 - f64.trunc - f64.sub - local.get $0 - f64.copysign - return - end - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $4 - local.get $3 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $5 - local.get $2 - i64.const 63 - i64.shr_u - local.set $6 - local.get $3 - i64.const 1 - i64.shl - local.set $7 - local.get $7 - i64.const 0 - i64.eq - if (result i32) - i32.const 1 - else - local.get $4 - i64.const 2047 - i64.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f64.ne - end - if - local.get $0 - local.get $1 - f64.mul - local.set $8 - local.get $8 - local.get $8 - f64.div - return - end - local.get $2 - i64.const 1 - i64.shl - local.set $9 - local.get $9 - local.get $7 - i64.le_u - if - local.get $9 - local.get $7 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $0 - return - end - local.get $4 - i64.const 0 - i64.ne - i32.eqz - if - local.get $4 - local.get $2 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $4 - local.get $2 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shl - local.set $2 - else - local.get $2 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $2 - local.get $2 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $2 - end - local.get $5 - i64.const 0 - i64.ne - i32.eqz - if - local.get $5 - local.get $3 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $5 - local.get $3 - i64.const 0 - local.get $5 - i64.sub - i64.const 1 - i64.add - i64.shl - local.set $3 - else - local.get $3 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $3 - local.get $3 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $3 - end - loop $while-continue|0 - local.get $4 - local.get $5 - i64.gt_s - local.set $10 - local.get $10 - if - local.get $2 - local.get $3 - i64.ge_u - if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 - end - local.get $2 - i64.const 1 - i64.shl - local.set $2 - local.get $4 - i64.const 1 - i64.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i64.ge_u - if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 - end - local.get $2 - i64.const 11 - i64.shl - i64.clz - local.set $11 - local.get $4 - local.get $11 - i64.sub - local.set $4 - local.get $2 - local.get $11 - i64.shl - local.set $2 - local.get $4 - i64.const 0 - i64.gt_s - if - local.get $2 - i64.const 1 - i64.const 52 - i64.shl - i64.sub - local.set $2 - local.get $2 - local.get $4 - i64.const 52 - i64.shl - i64.or - local.set $2 - else - local.get $2 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shr_u - local.set $2 - end - local.get $2 - local.get $6 - i64.const 63 - i64.shl - i64.or - local.set $2 - local.get $2 - f64.reinterpret_i64 - ) - (func $std/math/test_mod (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.mod - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - call $std/math/mod - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - f32.abs - f32.const 1 - f32.eq - if - local.get $0 - local.get $0 - f32.trunc - f32.sub - local.get $0 - f32.copysign - return - end - local.get $0 - i32.reinterpret_f32 - local.set $2 - local.get $1 - i32.reinterpret_f32 - local.set $3 - local.get $2 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $4 - local.get $3 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $5 - local.get $2 - i32.const -2147483648 - i32.and - local.set $6 - local.get $3 - i32.const 1 - i32.shl - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $4 - i32.const 255 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f32.ne - end - if - local.get $0 - local.get $1 - f32.mul - local.set $8 - local.get $8 - local.get $8 - f32.div - return - end - local.get $2 - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $7 - i32.le_u - if - local.get $9 - local.get $7 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $0 - return - end - local.get $4 - i32.eqz - if - local.get $4 - local.get $2 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $4 - local.get $2 - i32.const 0 - local.get $4 - i32.sub - i32.const 1 - i32.add - i32.shl - local.set $2 - else - local.get $2 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $2 - local.get $2 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $2 - end - local.get $5 - i32.eqz - if - local.get $5 - local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $5 - local.get $3 - i32.const 0 - local.get $5 - i32.sub - i32.const 1 - i32.add - i32.shl - local.set $3 - else - local.get $3 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $3 - local.get $3 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $3 - end - loop $while-continue|0 - local.get $4 - local.get $5 - i32.gt_s - local.set $10 - local.get $10 - if - local.get $2 - local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 - end - local.get $2 - i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 - end - local.get $2 - i32.const 8 - i32.shl - i32.clz - local.set $11 - local.get $4 - local.get $11 - i32.sub - local.set $4 - local.get $2 - local.get $11 - i32.shl - local.set $2 - local.get $4 - i32.const 0 - i32.gt_s - if - local.get $2 - i32.const 1 - i32.const 23 - i32.shl - i32.sub - local.set $2 - local.get $2 - local.get $4 - i32.const 23 - i32.shl - i32.or - local.set $2 - else - local.get $2 - i32.const 0 - local.get $4 - i32.sub - i32.const 1 - i32.add - i32.shr_u - local.set $2 - end - local.get $2 - local.get $6 - i32.or - local.set $2 - local.get $2 - f32.reinterpret_i32 - ) - (func $std/math/test_modf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.mod - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - ) - (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 f64) - (local $11 i64) - (local $12 i32) - (local $13 i64) - (local $14 i64) - (local $15 f64) - (local $16 f64) - (local $17 f64) - (local $18 f64) - (local $19 f64) - (local $20 f64) - (local $21 f64) - (local $22 f64) - (local $23 f64) - (local $24 f64) - (local $25 f64) - (local $26 f64) - (local $27 f64) - (local $28 f64) - (local $29 f64) - (local $30 f64) - (local $31 f64) - (local $32 f64) - (local $33 f64) - (local $34 f64) - (local $35 f64) - (local $36 f64) - (local $37 f64) - (local $38 f64) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i64) - (local $44 i64) - local.get $1 - f64.abs - f64.const 2 - f64.le - if - local.get $1 - f64.const 2 - f64.eq - if - local.get $0 - local.get $0 - f64.mul - return - end - local.get $1 - f64.const 0.5 - f64.eq - if - local.get $0 - f64.sqrt - f64.abs - f64.const inf - local.get $0 - f64.const inf - f64.neg - f64.ne - select - return - end - local.get $1 - f64.const -1 - f64.eq - if - f64.const 1 - local.get $0 - f64.div - return - end - local.get $1 - f64.const 1 - f64.eq - if - local.get $0 - return - end - local.get $1 - f64.const 0 - f64.eq - if - f64.const 1 - return - end - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/pow_lut|inlined.0 (result f64) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - i32.const 0 - local.set $4 - local.get $3 - i64.reinterpret_f64 - local.set $5 - local.get $2 - i64.reinterpret_f64 - local.set $6 - local.get $5 - i64.const 52 - i64.shr_u - local.set $7 - local.get $6 - i64.const 52 - i64.shr_u - local.set $8 - local.get $7 - i64.const 1 - i64.sub - i64.const 2047 - i64.const 1 - i64.sub - i64.ge_u - if (result i32) - i32.const 1 - else - local.get $8 - i64.const 2047 - i64.and - i64.const 958 - i64.sub - i64.const 1086 - i64.const 958 - i64.sub - i64.ge_u - end - if - local.get $6 - local.set $9 - local.get $9 - i64.const 1 - i64.shl - i64.const 1 - i64.sub - i64.const -9007199254740992 - i64.const 1 - i64.sub - i64.ge_u - if - local.get $6 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - f64.const 1 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 4607182418800017408 - i64.eq - if - f64.const nan:0x8000000000000 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 1 - i64.shl - i64.const -9007199254740992 - i64.gt_u - if (result i32) - i32.const 1 - else - local.get $6 - i64.const 1 - i64.shl - i64.const -9007199254740992 - i64.gt_u - end - if - local.get $3 - local.get $2 - f64.add - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 1 - i64.shl - i64.const 9214364837600034816 - i64.eq - if - f64.const nan:0x8000000000000 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 1 - i64.shl - i64.const 9214364837600034816 - i64.lt_u - local.get $6 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - i32.eqz - i32.eq - if - f64.const 0 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $2 - local.get $2 - f64.mul - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - local.set $9 - local.get $9 - i64.const 1 - i64.shl - i64.const 1 - i64.sub - i64.const -9007199254740992 - i64.const 1 - i64.sub - i64.ge_u - if - local.get $3 - local.get $3 - f64.mul - local.set $10 - local.get $5 - i64.const 63 - i64.shr_u - i32.wrap_i64 - if (result i32) - block $~lib/util/math/checkint|inlined.0 (result i32) - local.get $6 - local.set $9 - local.get $9 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $11 - local.get $11 - i64.const 1023 - i64.lt_u - if - i32.const 0 - br $~lib/util/math/checkint|inlined.0 - end - local.get $11 - i64.const 1023 - i64.const 52 - i64.add - i64.gt_u - if - i32.const 2 - br $~lib/util/math/checkint|inlined.0 - end - i64.const 1 - i64.const 1023 - i64.const 52 - i64.add - local.get $11 - i64.sub - i64.shl - local.set $11 - local.get $9 - local.get $11 - i64.const 1 - i64.sub - i64.and - i64.const 0 - i64.ne - if - i32.const 0 - br $~lib/util/math/checkint|inlined.0 - end - local.get $9 - local.get $11 - i64.and - i64.const 0 - i64.ne - if - i32.const 1 - br $~lib/util/math/checkint|inlined.0 - end - i32.const 2 - end - i32.const 1 - i32.eq - else - i32.const 0 - end - if - local.get $10 - f64.neg - local.set $10 - end - local.get $6 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - if (result f64) - f64.const 1 - local.get $10 - f64.div - else - local.get $10 - end - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - if - block $~lib/util/math/checkint|inlined.1 (result i32) - local.get $6 - local.set $9 - local.get $9 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $11 - local.get $11 - i64.const 1023 - i64.lt_u - if - i32.const 0 - br $~lib/util/math/checkint|inlined.1 - end - local.get $11 - i64.const 1023 - i64.const 52 - i64.add - i64.gt_u - if - i32.const 2 - br $~lib/util/math/checkint|inlined.1 - end - i64.const 1 - i64.const 1023 - i64.const 52 - i64.add - local.get $11 - i64.sub - i64.shl - local.set $11 - local.get $9 - local.get $11 - i64.const 1 - i64.sub - i64.and - i64.const 0 - i64.ne - if - i32.const 0 - br $~lib/util/math/checkint|inlined.1 - end - local.get $9 - local.get $11 - i64.and - i64.const 0 - i64.ne - if - i32.const 1 - br $~lib/util/math/checkint|inlined.1 - end - i32.const 2 - end - local.set $12 - local.get $12 - i32.const 0 - i32.eq - if - local.get $3 - local.get $3 - f64.sub - local.get $3 - local.get $3 - f64.sub - f64.div - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $12 - i32.const 1 - i32.eq - if - i32.const 262144 - local.set $4 - end - local.get $5 - i64.const 9223372036854775807 - i64.and - local.set $5 - local.get $7 - i64.const 2047 - i64.and - local.set $7 - end - local.get $8 - i64.const 2047 - i64.and - i64.const 958 - i64.sub - i64.const 1086 - i64.const 958 - i64.sub - i64.ge_u - if - local.get $5 - i64.const 4607182418800017408 - i64.eq - if - f64.const 1 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $8 - i64.const 2047 - i64.and - i64.const 958 - i64.lt_u - if - f64.const 1 - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 4607182418800017408 - i64.gt_u - local.get $8 - i64.const 2048 - i64.lt_u - i32.eq - if (result f64) - f64.const inf - else - f64.const 0 - end - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $7 - i64.const 0 - i64.eq - if - local.get $3 - f64.const 4503599627370496 - f64.mul - i64.reinterpret_f64 - local.set $5 - local.get $5 - i64.const 9223372036854775807 - i64.and - local.set $5 - local.get $5 - i64.const 52 - i64.const 52 - i64.shl - i64.sub - local.set $5 - end - end - local.get $5 - local.set $9 - local.get $9 - i64.const 4604531861337669632 - i64.sub - local.set $11 - local.get $11 - i64.const 52 - i64.const 7 - i64.sub - i64.shr_u - i64.const 127 - i64.and - i32.wrap_i64 - local.set $12 - local.get $11 - i64.const 52 - i64.shr_s - local.set $13 - local.get $9 - local.get $11 - i64.const 4095 - i64.const 52 - i64.shl - i64.and - i64.sub - local.set $14 - local.get $14 - f64.reinterpret_i64 - local.set $10 - local.get $13 - f64.convert_i64_s - local.set $15 - i32.const 9240 - local.get $12 - i32.const 2 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $16 - i32.const 9240 - local.get $12 - i32.const 2 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=16 - local.set $17 - i32.const 9240 - local.get $12 - i32.const 2 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=24 - local.set $18 - local.get $14 - i64.const 2147483648 - i64.add - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $19 - local.get $10 - local.get $19 - f64.sub - local.set $20 - local.get $19 - local.get $16 - f64.mul - f64.const 1 - f64.sub - local.set $21 - local.get $20 - local.get $16 - f64.mul - local.set $22 - local.get $21 - local.get $22 - f64.add - local.set $23 - local.get $15 - f64.const 0.6931471805598903 - f64.mul - local.get $17 - f64.add - local.set $24 - local.get $24 - local.get $23 - f64.add - local.set $25 - local.get $15 - f64.const 5.497923018708371e-14 - f64.mul - local.get $18 - f64.add - local.set $26 - local.get $24 - local.get $25 - f64.sub - local.get $23 - f64.add - local.set $27 - f64.const -0.5 - local.get $23 - f64.mul - local.set $28 - local.get $23 - local.get $28 - f64.mul - local.set $29 - local.get $23 - local.get $29 - f64.mul - local.set $30 - f64.const -0.5 - local.get $21 - f64.mul - local.set $31 - local.get $21 - local.get $31 - f64.mul - local.set $32 - local.get $25 - local.get $32 - f64.add - local.set $33 - local.get $22 - local.get $28 - local.get $31 - f64.add - f64.mul - local.set $34 - local.get $25 - local.get $33 - f64.sub - local.get $32 - f64.add - local.set $35 - local.get $30 - f64.const -0.6666666666666679 - local.get $23 - f64.const 0.5000000000000007 - f64.mul - f64.add - local.get $29 - f64.const 0.7999999995323976 - local.get $23 - f64.const -0.6666666663487739 - f64.mul - f64.add - local.get $29 - f64.const -1.142909628459501 - local.get $23 - f64.const 1.0000415263675542 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $36 - local.get $26 - local.get $27 - f64.add - local.get $34 - f64.add - local.get $35 - f64.add - local.get $36 - f64.add - local.set $37 - local.get $33 - local.get $37 - f64.add - local.set $38 - local.get $33 - local.get $38 - f64.sub - local.get $37 - f64.add - global.set $~lib/util/math/log_tail - local.get $38 - local.set $38 - global.get $~lib/util/math/log_tail - local.set $37 - local.get $6 - i64.const -134217728 - i64.and - f64.reinterpret_i64 - local.set $34 - local.get $2 - local.get $34 - f64.sub - local.set $33 - local.get $38 - i64.reinterpret_f64 - i64.const -134217728 - i64.and - f64.reinterpret_i64 - local.set $32 - local.get $38 - local.get $32 - f64.sub - local.get $37 - f64.add - local.set $31 - local.get $34 - local.get $32 - f64.mul - local.set $36 - local.get $33 - local.get $32 - f64.mul - local.get $2 - local.get $31 - f64.mul - f64.add - local.set $35 - block $~lib/util/math/exp_inline|inlined.0 (result f64) - local.get $36 - local.set $15 - local.get $35 - local.set $10 - local.get $4 - local.set $12 - local.get $15 - i64.reinterpret_f64 - local.set $9 - local.get $9 - i64.const 52 - i64.shr_u - i32.wrap_i64 - i32.const 2047 - i32.and - local.set $39 - local.get $39 - i32.const 969 - i32.sub - i32.const 63 - i32.ge_u - if - local.get $39 - i32.const 969 - i32.sub - i32.const -2147483648 - i32.ge_u - if - f64.const -1 - f64.const 1 - local.get $12 - select - br $~lib/util/math/exp_inline|inlined.0 - end - local.get $39 - i32.const 1033 - i32.ge_u - if - local.get $9 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - if (result f64) - local.get $12 - local.set $41 - local.get $41 - local.set $42 - i64.const 1152921504606846976 - f64.reinterpret_i64 - local.set $16 - local.get $16 - f64.neg - local.get $16 - local.get $42 - select - local.get $16 - f64.mul - else - local.get $12 - local.set $42 - local.get $42 - local.set $41 - i64.const 8070450532247928832 - f64.reinterpret_i64 - local.set $17 - local.get $17 - f64.neg - local.get $17 - local.get $41 - select - local.get $17 - f64.mul - end - br $~lib/util/math/exp_inline|inlined.0 - end - i32.const 0 - local.set $39 - end - f64.const 184.6649652337873 - local.get $15 - f64.mul - local.set $29 - local.get $29 - f64.const 6755399441055744 - f64.add - local.set $30 - local.get $30 - i64.reinterpret_f64 - local.set $14 - local.get $30 - f64.const 6755399441055744 - f64.sub - local.set $30 - local.get $15 - local.get $30 - f64.const -0.005415212348111709 - f64.mul - f64.add - local.get $30 - f64.const -1.2864023111638346e-14 - f64.mul - f64.add - local.set $28 - local.get $28 - local.get $10 - f64.add - local.set $28 - local.get $14 - i64.const 127 - i64.and - i64.const 1 - i64.shl - i32.wrap_i64 - local.set $40 - local.get $14 - local.get $12 - i64.extend_i32_u - i64.add - i64.const 52 - i64.const 7 - i64.sub - i64.shl - local.set $13 - i32.const 4632 - local.get $40 - i32.const 3 - i32.shl - i32.add - i64.load - f64.reinterpret_i64 - local.set $25 - i32.const 4632 - local.get $40 - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $13 - i64.add - local.set $11 - local.get $28 - local.get $28 - f64.mul - local.set $27 - local.get $25 - local.get $28 - f64.add - local.get $27 - f64.const 0.49999999999996786 - local.get $28 - f64.const 0.16666666666665886 - f64.mul - f64.add - f64.mul - f64.add - local.get $27 - local.get $27 - f64.mul - f64.const 0.0416666808410674 - local.get $28 - f64.const 0.008333335853059549 - f64.mul - f64.add - f64.mul - f64.add - local.set $24 - local.get $39 - i32.const 0 - i32.eq - if - block $~lib/util/math/specialcase|inlined.1 (result f64) - local.get $24 - local.set $18 - local.get $11 - local.set $44 - local.get $14 - local.set $43 - local.get $43 - i64.const 2147483648 - i64.and - i64.const 0 - i64.ne - i32.eqz - if - local.get $44 - i64.const 1009 - i64.const 52 - i64.shl - i64.sub - local.set $44 - local.get $44 - f64.reinterpret_i64 - local.set $17 - f64.const 5486124068793688683255936e279 - local.get $17 - local.get $17 - local.get $18 - f64.mul - f64.add - f64.mul - br $~lib/util/math/specialcase|inlined.1 - end - local.get $44 - i64.const 1022 - i64.const 52 - i64.shl - i64.add - local.set $44 - local.get $44 - f64.reinterpret_i64 - local.set $17 - local.get $17 - local.get $17 - local.get $18 - f64.mul - f64.add - local.set $16 - local.get $16 - f64.abs - f64.const 1 - f64.lt - if - f64.const 1 - local.get $16 - f64.copysign - local.set $23 - local.get $17 - local.get $16 - f64.sub - local.get $17 - local.get $18 - f64.mul - f64.add - local.set $22 - local.get $23 - local.get $16 - f64.add - local.set $21 - local.get $23 - local.get $21 - f64.sub - local.get $16 - f64.add - local.get $22 - f64.add - local.set $22 - local.get $21 - local.get $22 - f64.add - local.get $23 - f64.sub - local.set $16 - local.get $16 - f64.const 0 - f64.eq - if - local.get $44 - i64.const -9223372036854775808 - i64.and - f64.reinterpret_i64 - local.set $16 - end - end - local.get $16 - f64.const 2.2250738585072014e-308 - f64.mul - end - br $~lib/util/math/exp_inline|inlined.0 - end - local.get $11 - f64.reinterpret_i64 - local.set $26 - local.get $26 - local.get $26 - local.get $24 - f64.mul - f64.add - end - end - return - ) - (func $std/math/test_pow (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.pow - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - call $~lib/bindings/Math/pow - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) - (local $2 f32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 f64) - (local $16 f64) - (local $17 f64) - (local $18 f64) - (local $19 f64) - (local $20 f64) - (local $21 f64) - (local $22 f64) - (local $23 i64) - (local $24 i64) - local.get $1 - f32.abs - f32.const 2 - f32.le - if - local.get $1 - f32.const 2 - f32.eq - if - local.get $0 - local.get $0 - f32.mul - return - end - local.get $1 - f32.const 0.5 - f32.eq - if - local.get $0 - f32.sqrt - f32.abs - f32.const inf - local.get $0 - f32.const inf - f32.neg - f32.ne - select - return - end - local.get $1 - f32.const -1 - f32.eq - if - f32.const 1 - local.get $0 - f32.div - return - end - local.get $1 - f32.const 1 - f32.eq - if - local.get $0 - return - end - local.get $1 - f32.const 0 - f32.eq - if - f32.const 1 - return - end - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $~lib/util/math/powf_lut|inlined.0 (result f32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - i32.const 0 - local.set $4 - local.get $3 - i32.reinterpret_f32 - local.set $5 - local.get $2 - i32.reinterpret_f32 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - i32.const 8388608 - i32.sub - i32.const 2139095040 - i32.const 8388608 - i32.sub - i32.ge_u - local.get $6 - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - i32.sub - i32.const 2139095040 - i32.const 1 - i32.shl - i32.const 1 - i32.sub - i32.ge_u - i32.const 0 - i32.ne - local.tee $7 - i32.or - if - local.get $7 - if - local.get $6 - i32.const 1 - i32.shl - i32.const 0 - i32.eq - if - f32.const 1 - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 1065353216 - i32.eq - if - f32.const nan:0x400000 - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 1 - i32.shl - i32.const 2139095040 - i32.const 1 - i32.shl - i32.gt_u - if (result i32) - i32.const 1 - else - local.get $6 - i32.const 1 - i32.shl - i32.const 2139095040 - i32.const 1 - i32.shl - i32.gt_u - end - if - local.get $3 - local.get $2 - f32.add - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 1 - i32.shl - i32.const 1065353216 - i32.const 1 - i32.shl - i32.eq - if - f32.const nan:0x400000 - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 1 - i32.shl - i32.const 1065353216 - i32.const 1 - i32.shl - i32.lt_u - local.get $6 - i32.const 31 - i32.shr_u - i32.eqz - i32.eq - if - f32.const 0 - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $2 - local.get $2 - f32.mul - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - i32.sub - i32.const 2139095040 - i32.const 1 - i32.shl - i32.const 1 - i32.sub - i32.ge_u - if - local.get $3 - local.get $3 - f32.mul - local.set $9 - local.get $5 - i32.const 31 - i32.shr_u - if (result i32) - block $~lib/util/math/checkintf|inlined.0 (result i32) - local.get $6 - local.set $8 - local.get $8 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $10 - local.get $10 - i32.const 127 - i32.lt_u - if - i32.const 0 - br $~lib/util/math/checkintf|inlined.0 - end - local.get $10 - i32.const 127 - i32.const 23 - i32.add - i32.gt_u - if - i32.const 2 - br $~lib/util/math/checkintf|inlined.0 - end - i32.const 1 - i32.const 127 - i32.const 23 - i32.add - local.get $10 - i32.sub - i32.shl - local.set $10 - local.get $8 - local.get $10 - i32.const 1 - i32.sub - i32.and - if - i32.const 0 - br $~lib/util/math/checkintf|inlined.0 - end - local.get $8 - local.get $10 - i32.and - if - i32.const 1 - br $~lib/util/math/checkintf|inlined.0 - end - i32.const 2 - end - i32.const 1 - i32.eq - else - i32.const 0 - end - if - local.get $9 - f32.neg - local.set $9 - end - local.get $6 - i32.const 31 - i32.shr_u - if (result f32) - f32.const 1 - local.get $9 - f32.div - else - local.get $9 - end - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $5 - i32.const 31 - i32.shr_u - if - block $~lib/util/math/checkintf|inlined.1 (result i32) - local.get $6 - local.set $8 - local.get $8 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $10 - local.get $10 - i32.const 127 - i32.lt_u - if - i32.const 0 - br $~lib/util/math/checkintf|inlined.1 - end - local.get $10 - i32.const 127 - i32.const 23 - i32.add - i32.gt_u - if - i32.const 2 - br $~lib/util/math/checkintf|inlined.1 - end - i32.const 1 - i32.const 127 - i32.const 23 - i32.add - local.get $10 - i32.sub - i32.shl - local.set $10 - local.get $8 - local.get $10 - i32.const 1 - i32.sub - i32.and - if - i32.const 0 - br $~lib/util/math/checkintf|inlined.1 - end - local.get $8 - local.get $10 - i32.and - if - i32.const 1 - br $~lib/util/math/checkintf|inlined.1 - end - i32.const 2 - end - local.set $10 - local.get $10 - i32.const 0 - i32.eq - if - local.get $3 - local.get $3 - f32.sub - local.get $3 - local.get $3 - f32.sub - f32.div - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $10 - i32.const 1 - i32.eq - if - i32.const 65536 - local.set $4 - end - local.get $5 - i32.const 2147483647 - i32.and - local.set $5 - end - local.get $5 - i32.const 8388608 - i32.lt_u - if - local.get $3 - f32.const 8388608 - f32.mul - i32.reinterpret_f32 - local.set $5 - local.get $5 - i32.const 2147483647 - i32.and - local.set $5 - local.get $5 - i32.const 23 - i32.const 23 - i32.shl - i32.sub - local.set $5 - end - end - local.get $5 - local.set $8 - local.get $8 - i32.const 1060306944 - i32.sub - local.set $10 - local.get $10 - i32.const 23 - i32.const 4 - i32.sub - i32.shr_u - i32.const 15 - i32.and - local.set $11 - local.get $10 - i32.const -8388608 - i32.and - local.set $12 - local.get $8 - local.get $12 - i32.sub - local.set $13 - local.get $12 - i32.const 23 - i32.shr_s - local.set $14 - i32.const 8984 - local.get $11 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load - local.set $15 - i32.const 8984 - local.get $11 - i32.const 1 - i32.const 3 - i32.add - i32.shl - i32.add - f64.load offset=8 - local.set $16 - local.get $13 - f32.reinterpret_i32 - f64.promote_f32 - local.set $17 - local.get $17 - local.get $15 - f64.mul - f64.const 1 - f64.sub - local.set $18 - local.get $16 - local.get $14 - f64.convert_i32_s - f64.add - local.set $19 - f64.const 0.288457581109214 - local.get $18 - f64.mul - f64.const -0.36092606229713164 - f64.add - local.set $20 - f64.const 0.480898481472577 - local.get $18 - f64.mul - f64.const -0.7213474675006291 - f64.add - local.set $21 - f64.const 1.4426950408774342 - local.get $18 - f64.mul - local.get $19 - f64.add - local.set $22 - local.get $18 - local.get $18 - f64.mul - local.set $18 - local.get $22 - local.get $21 - local.get $18 - f64.mul - f64.add - local.set $22 - local.get $20 - local.get $18 - local.get $18 - f64.mul - f64.mul - local.get $22 - f64.add - local.set $20 - local.get $20 - local.set $22 - local.get $2 - f64.promote_f32 - local.get $22 - f64.mul - local.set $21 - local.get $21 - i64.reinterpret_f64 - i64.const 47 - i64.shr_u - i64.const 65535 - i64.and - i64.const 32959 - i64.ge_u - if - local.get $21 - f64.const 127.99999995700433 - f64.gt - if - local.get $4 - local.set $8 - local.get $8 - local.set $10 - i32.const 1879048192 - f32.reinterpret_i32 - local.set $9 - local.get $9 - f32.neg - local.get $9 - local.get $10 - select - local.get $9 - f32.mul - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $21 - f64.const -150 - f64.le - if - local.get $4 - local.set $11 - local.get $11 - local.set $12 - i32.const 268435456 - f32.reinterpret_i32 - local.set $9 - local.get $9 - f32.neg - local.get $9 - local.get $12 - select - local.get $9 - f32.mul - br $~lib/util/math/powf_lut|inlined.0 - end - end - local.get $21 - local.set $15 - local.get $4 - local.set $13 - local.get $15 - f64.const 211106232532992 - f64.add - local.set $20 - local.get $20 - i64.reinterpret_f64 - local.set $23 - local.get $15 - local.get $20 - f64.const 211106232532992 - f64.sub - f64.sub - local.set $19 - i32.const 6680 - local.get $23 - i32.wrap_i64 - i32.const 31 - i32.and - i32.const 3 - i32.shl - i32.add - i64.load - local.set $24 - local.get $24 - local.get $23 - local.get $13 - i64.extend_i32_u - i64.add - i64.const 52 - i64.const 5 - i64.sub - i64.shl - i64.add - local.set $24 - local.get $24 - f64.reinterpret_i64 - local.set $16 - f64.const 0.05550361559341535 - local.get $19 - f64.mul - f64.const 0.2402284522445722 - f64.add - local.set $18 - f64.const 0.6931471806916203 - local.get $19 - f64.mul - f64.const 1 - f64.add - local.set $17 - local.get $17 - local.get $18 - local.get $19 - local.get $19 - f64.mul - f64.mul - f64.add - local.set $17 - local.get $17 - local.get $16 - f64.mul - local.set $17 - local.get $17 - f32.demote_f64 - end - return - ) - (func $std/math/test_powf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.pow - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - ) - (func $~lib/math/murmurHash3 (param $0 i64) (result i64) - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - i64.const -49064778989728563 - i64.mul - local.set $0 - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - i64.const -4265267296055464877 - i64.mul - local.set $0 - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - ) - (func $~lib/math/splitMix32 (param $0 i32) (result i32) - local.get $0 - i32.const 1831565813 - i32.add - local.set $0 - local.get $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - local.get $0 - i32.const 1 - i32.or - i32.mul - local.set $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - i32.const 7 - i32.shr_u - i32.xor - local.get $0 - i32.const 61 - i32.or - i32.mul - i32.add - i32.xor - local.set $0 - local.get $0 - local.get $0 - i32.const 14 - i32.shr_u - i32.xor - ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) - i32.const 1 - global.set $~lib/math/random_seeded - local.get $0 - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state1_64 - local.get $0 - i32.wrap_i64 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state0_32 - global.get $~lib/math/random_state0_32 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state1_32 - global.get $~lib/math/random_state0_64 - i64.const 0 - i64.ne - if (result i32) - global.get $~lib/math/random_state1_64 - i64.const 0 - i64.ne - else - i32.const 0 - end - if (result i32) - global.get $~lib/math/random_state0_32 - i32.const 0 - i32.ne - else - i32.const 0 - end - if (result i32) - global.get $~lib/math/random_state1_32 - i32.const 0 - i32.ne - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 13360 - i32.const 1399 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/math/NativeMath.random (result f64) - (local $0 i64) - (local $1 i64) - (local $2 i64) - global.get $~lib/math/random_seeded - i32.eqz - if - call $~lib/builtins/seed - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - end - global.get $~lib/math/random_state0_64 - local.set $0 - global.get $~lib/math/random_state1_64 - local.set $1 - local.get $1 - global.set $~lib/math/random_state0_64 - local.get $0 - local.get $0 - i64.const 23 - i64.shl - i64.xor - local.set $0 - local.get $0 - local.get $0 - i64.const 17 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - local.get $1 - i64.xor - local.set $0 - local.get $0 - local.get $1 - i64.const 26 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - global.set $~lib/math/random_state1_64 - local.get $1 - i64.const 12 - i64.shr_u - i64.const 4607182418800017408 - i64.or - local.set $2 - local.get $2 - f64.reinterpret_i64 - f64.const 1 - f64.sub - ) - (func $~lib/math/NativeMathf.random (result f32) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/math/random_seeded - i32.eqz - if - call $~lib/builtins/seed - i64.reinterpret_f64 - local.set $0 - local.get $0 - call $~lib/math/NativeMath.seedRandom - end - global.get $~lib/math/random_state0_32 - local.set $1 - global.get $~lib/math/random_state1_32 - local.set $2 - local.get $1 - i32.const -1640531525 - i32.mul - i32.const 5 - i32.rotl - i32.const 5 - i32.mul - local.set $3 - local.get $2 - local.get $1 - i32.xor - local.set $2 - local.get $1 - i32.const 26 - i32.rotl - local.get $2 - i32.xor - local.get $2 - i32.const 9 - i32.shl - i32.xor - global.set $~lib/math/random_state0_32 - local.get $2 - i32.const 13 - i32.rotl - global.set $~lib/math/random_state1_32 - local.get $3 - i32.const 9 - i32.shr_u - i32.const 127 - i32.const 23 - i32.shl - i32.or - f32.reinterpret_i32 - f32.const 1 - f32.sub - ) - (func $std/math/test_round (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - (local $4 f64) - local.get $0 - local.set $4 - local.get $4 - f64.const 0.5 - f64.add - f64.floor - local.get $4 - f64.copysign - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $std/math/test_roundf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - (local $4 f32) - local.get $0 - local.set $4 - local.get $4 - f32.const 0.5 - f32.add - f32.floor - local.get $4 - f32.copysign - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $std/math/test_sign (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - (local $4 f64) - block $~lib/math/NativeMath.sign|inlined.0 (result f64) - local.get $0 - local.set $4 - i32.const 0 - i32.const 0 - i32.gt_s - drop - local.get $4 - f64.const 0 - f64.gt - if (result f64) - f64.const 1 - else - local.get $4 - f64.const 0 - f64.lt - if (result f64) - f64.const -1 - else - local.get $4 - end - end - br $~lib/math/NativeMath.sign|inlined.0 - end - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/sign - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $std/math/test_signf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - (local $4 f32) - block $~lib/math/NativeMathf.sign|inlined.0 (result f32) - local.get $0 - local.set $4 - i32.const 0 - i32.const 0 - i32.gt_s - drop - local.get $4 - f32.const 0 - f32.gt - if (result f32) - f32.const 1 - else - local.get $4 - f32.const 0 - f32.lt - if (result f32) - f32.const -1 - else - local.get $4 - end - end - br $~lib/math/NativeMathf.sign|inlined.0 - end - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.rem (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i32) - (local $7 f64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 f64) - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $4 - local.get $3 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $5 - local.get $2 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $6 - local.get $3 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if (result i32) - i32.const 1 - else - local.get $4 - i64.const 2047 - i64.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f64.ne - end - if - local.get $0 - local.get $1 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.div - return - end - local.get $2 - i64.const 1 - i64.shl - i64.const 0 - i64.eq - if - local.get $0 - return - end - local.get $2 - local.set $8 - local.get $4 - i64.const 0 - i64.ne - i32.eqz - if - local.get $4 - local.get $8 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $4 - local.get $8 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shl - local.set $8 - else - local.get $8 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $8 - local.get $8 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $8 - end - local.get $5 - i64.const 0 - i64.ne - i32.eqz - if - local.get $5 - local.get $3 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $5 - local.get $3 - i64.const 0 - local.get $5 - i64.sub - i64.const 1 - i64.add - i64.shl - local.set $3 - else - local.get $3 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $3 - local.get $3 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $3 - end - i32.const 0 - local.set $9 - block $do-break|0 - loop $do-continue|0 - local.get $4 - local.get $5 - i64.lt_s - if - local.get $4 - i64.const 1 - i64.add - local.get $5 - i64.eq - if - br $do-break|0 - end - local.get $0 - return - end - loop $while-continue|1 - local.get $4 - local.get $5 - i64.gt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $3 - i64.ge_u - if - local.get $8 - local.get $3 - i64.sub - local.set $8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - end - local.get $8 - i64.const 1 - i64.shl - local.set $8 - local.get $9 - i32.const 1 - i32.shl - local.set $9 - local.get $4 - i64.const 1 - i64.sub - local.set $4 - br $while-continue|1 - end - end - local.get $8 - local.get $3 - i64.ge_u - if - local.get $8 - local.get $3 - i64.sub - local.set $8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - end - local.get $8 - i64.const 0 - i64.eq - if - i64.const -60 - local.set $4 - else - local.get $8 - i64.const 11 - i64.shl - i64.clz - local.set $11 - local.get $4 - local.get $11 - i64.sub - local.set $4 - local.get $8 - local.get $11 - i64.shl - local.set $8 - end - br $do-break|0 - end - unreachable - end - local.get $4 - i64.const 0 - i64.gt_s - if - local.get $8 - i64.const 1 - i64.const 52 - i64.shl - i64.sub - local.set $8 - local.get $8 - local.get $4 - i64.const 52 - i64.shl - i64.or - local.set $8 - else - local.get $8 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shr_u - local.set $8 - end - local.get $8 - f64.reinterpret_i64 - local.set $0 - local.get $1 - f64.abs - local.set $1 - local.get $0 - local.get $0 - f64.add - local.set $12 - local.get $4 - local.get $5 - i64.eq - if (result i32) - i32.const 1 - else - local.get $4 - i64.const 1 - i64.add - local.get $5 - i64.eq - if (result i32) - local.get $12 - local.get $1 - f64.gt - if (result i32) - i32.const 1 - else - local.get $12 - local.get $1 - f64.eq - if (result i32) - local.get $9 - i32.const 1 - i32.and - else - i32.const 0 - end - end - else - i32.const 0 - end - end - if - local.get $0 - local.get $1 - f64.sub - local.set $0 - end - local.get $6 - if (result f64) - local.get $0 - f64.neg - else - local.get $0 - end - ) - (func $std/math/test_rem (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.rem - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - ) - (func $~lib/math/NativeMathf.rem (param $0 f32) (param $1 f32) (result f32) - (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 f32) - local.get $0 - i32.reinterpret_f32 - local.set $2 - local.get $1 - i32.reinterpret_f32 - local.set $3 - local.get $2 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $4 - local.get $3 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $5 - local.get $2 - i32.const 31 - i32.shr_u - local.set $6 - local.get $2 - local.set $7 - local.get $3 - i32.const 1 - i32.shl - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $4 - i32.const 255 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f32.ne - end - if - local.get $0 - local.get $1 - f32.mul - local.get $0 - local.get $1 - f32.mul - f32.div - return - end - local.get $2 - i32.const 1 - i32.shl - i32.const 0 - i32.eq - if - local.get $0 - return - end - local.get $4 - i32.eqz - if - local.get $4 - local.get $7 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $4 - local.get $7 - i32.const 0 - local.get $4 - i32.sub - i32.const 1 - i32.add - i32.shl - local.set $7 - else - local.get $7 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $7 - local.get $7 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $7 - end - local.get $5 - i32.eqz - if - local.get $5 - local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $5 - local.get $3 - i32.const 0 - local.get $5 - i32.sub - i32.const 1 - i32.add - i32.shl - local.set $3 - else - local.get $3 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $3 - local.get $3 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $3 - end - i32.const 0 - local.set $8 - block $do-break|0 - loop $do-continue|0 - local.get $4 - local.get $5 - i32.lt_s - if - local.get $4 - i32.const 1 - i32.add - local.get $5 - i32.eq - if - br $do-break|0 - end - local.get $0 - return - end - loop $while-continue|1 - local.get $4 - local.get $5 - i32.gt_s - local.set $9 - local.get $9 - if - local.get $7 - local.get $3 - i32.ge_u - if - local.get $7 - local.get $3 - i32.sub - local.set $7 - local.get $8 - i32.const 1 - i32.add - local.set $8 - end - local.get $7 - i32.const 1 - i32.shl - local.set $7 - local.get $8 - i32.const 1 - i32.shl - local.set $8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|1 - end - end - local.get $7 - local.get $3 - i32.ge_u - if - local.get $7 - local.get $3 - i32.sub - local.set $7 - local.get $8 - i32.const 1 - i32.add - local.set $8 - end - local.get $7 - i32.const 0 - i32.eq - if - i32.const -30 - local.set $4 - else - local.get $7 - i32.const 8 - i32.shl - i32.clz - local.set $9 - local.get $4 - local.get $9 - i32.sub - local.set $4 - local.get $7 - local.get $9 - i32.shl - local.set $7 - end - br $do-break|0 - end - unreachable - end - local.get $4 - i32.const 0 - i32.gt_s - if - local.get $7 - i32.const 1 - i32.const 23 - i32.shl - i32.sub - local.set $7 - local.get $7 - local.get $4 - i32.const 23 - i32.shl - i32.or - local.set $7 - else - local.get $7 - i32.const 0 - local.get $4 - i32.sub - i32.const 1 - i32.add - i32.shr_u - local.set $7 - end - local.get $7 - f32.reinterpret_i32 - local.set $0 - local.get $1 - f32.abs - local.set $1 - local.get $0 - local.get $0 - f32.add - local.set $10 - local.get $4 - local.get $5 - i32.eq - if (result i32) - i32.const 1 - else - local.get $4 - i32.const 1 - i32.add - local.get $5 - i32.eq - if (result i32) - local.get $10 - local.get $1 - f32.gt - if (result i32) - i32.const 1 - else - local.get $10 - local.get $1 - f32.eq - if (result i32) - local.get $8 - i32.const 1 - i32.and - else - i32.const 0 - end - end - else - i32.const 0 - end - end - if - local.get $0 - local.get $1 - f32.sub - local.set $0 - end - local.get $6 - if (result f32) - local.get $0 - f32.neg - else - local.get $0 - end - ) - (func $std/math/test_remf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.rem - local.get $2 - local.get $3 - local.get $4 - call $std/math/check - ) - (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 i64) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 f64) - (local $17 i32) - (local $18 f64) - (local $19 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - local.get $2 - i32.const 31 - i32.shr_u - local.set $3 - local.get $2 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1072243195 - i32.le_u - if - local.get $2 - i32.const 1045430272 - i32.lt_u - if - local.get $0 - return - end - block $~lib/math/sin_kern|inlined.1 (result f64) - local.get $0 - local.set $6 - f64.const 0 - local.set $5 - i32.const 0 - local.set $4 - local.get $6 - local.get $6 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $8 - f64.const 0.00833333333332249 - local.get $7 - f64.const -1.984126982985795e-04 - local.get $7 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $8 - f64.mul - f64.const -2.5050760253406863e-08 - local.get $7 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $7 - local.get $6 - f64.mul - local.set $10 - local.get $4 - i32.eqz - if - local.get $6 - local.get $10 - f64.const -0.16666666666666632 - local.get $7 - local.get $9 - f64.mul - f64.add - f64.mul - f64.add - br $~lib/math/sin_kern|inlined.1 - else - local.get $6 - local.get $7 - f64.const 0.5 - local.get $5 - f64.mul - local.get $10 - local.get $9 - f64.mul - f64.sub - f64.mul - local.get $5 - f64.sub - local.get $10 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - br $~lib/math/sin_kern|inlined.1 - end - unreachable - end - return - end - local.get $2 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.1 (result i32) - local.get $0 - local.set $5 - local.get $1 - local.set $11 - local.get $3 - local.set $4 - local.get $11 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.set $12 - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $12 - i32.const 1073928572 - i32.lt_u - if - i32.const 1 - local.set $13 - local.get $4 - i32.eqz - if - local.get $5 - f64.const 1.5707963267341256 - f64.sub - local.set $10 - local.get $12 - i32.const 1073291771 - i32.ne - if - local.get $10 - f64.const 6.077100506506192e-11 - f64.sub - local.set $9 - local.get $10 - local.get $9 - f64.sub - f64.const 6.077100506506192e-11 - f64.sub - local.set $8 - else - local.get $10 - f64.const 6.077100506303966e-11 - f64.sub - local.set $10 - local.get $10 - f64.const 2.0222662487959506e-21 - f64.sub - local.set $9 - local.get $10 - local.get $9 - f64.sub - f64.const 2.0222662487959506e-21 - f64.sub - local.set $8 - end - else - local.get $5 - f64.const 1.5707963267341256 - f64.add - local.set $10 - local.get $12 - i32.const 1073291771 - i32.ne - if - local.get $10 - f64.const 6.077100506506192e-11 - f64.add - local.set $9 - local.get $10 - local.get $9 - f64.sub - f64.const 6.077100506506192e-11 - f64.add - local.set $8 - else - local.get $10 - f64.const 6.077100506303966e-11 - f64.add - local.set $10 - local.get $10 - f64.const 2.0222662487959506e-21 - f64.add - local.set $9 - local.get $10 - local.get $9 - f64.sub - f64.const 2.0222662487959506e-21 - f64.add - local.set $8 - end - i32.const -1 - local.set $13 - end - local.get $9 - global.set $~lib/math/rempio2_y0 - local.get $8 - global.set $~lib/math/rempio2_y1 - local.get $13 - br $~lib/math/rempio2|inlined.1 - end - local.get $12 - i32.const 1094263291 - i32.lt_u - if - local.get $5 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $8 - local.get $5 - local.get $8 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.set $9 - local.get $8 - f64.const 6.077100506506192e-11 - f64.mul - local.set $10 - local.get $12 - i32.const 20 - i32.shr_u - local.set $13 - local.get $9 - local.get $10 - f64.sub - local.set $7 - local.get $7 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $14 - local.get $13 - local.get $14 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $15 - local.get $15 - i32.const 16 - i32.gt_u - if - local.get $9 - local.set $6 - local.get $8 - f64.const 6.077100506303966e-11 - f64.mul - local.set $10 - local.get $6 - local.get $10 - f64.sub - local.set $9 - local.get $8 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $6 - local.get $9 - f64.sub - local.get $10 - f64.sub - f64.sub - local.set $10 - local.get $9 - local.get $10 - f64.sub - local.set $7 - local.get $7 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $14 - local.get $13 - local.get $14 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $15 - local.get $15 - i32.const 49 - i32.gt_u - if - local.get $9 - local.set $16 - local.get $8 - f64.const 2.0222662487111665e-21 - f64.mul - local.set $10 - local.get $16 - local.get $10 - f64.sub - local.set $9 - local.get $8 - f64.const 8.4784276603689e-32 - f64.mul - local.get $16 - local.get $9 - f64.sub - local.get $10 - f64.sub - f64.sub - local.set $10 - local.get $9 - local.get $10 - f64.sub - local.set $7 - end - end - local.get $9 - local.get $7 - f64.sub - local.get $10 - f64.sub - local.set $6 - local.get $7 - global.set $~lib/math/rempio2_y0 - local.get $6 - global.set $~lib/math/rempio2_y1 - local.get $8 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.1 - end - local.get $5 - local.get $11 - call $~lib/math/pio2_large_quot - local.set $15 - i32.const 0 - local.get $15 - i32.sub - local.get $15 - local.get $4 - select - end - local.set $17 - global.get $~lib/math/rempio2_y0 - local.set $18 - global.get $~lib/math/rempio2_y1 - local.set $19 - local.get $17 - i32.const 1 - i32.and - if (result f64) - local.get $18 - local.set $8 - local.get $19 - local.set $16 - local.get $8 - local.get $8 - f64.mul - local.set $5 - local.get $5 - local.get $5 - f64.mul - local.set $6 - local.get $5 - f64.const 0.0416666666666666 - local.get $5 - f64.const -0.001388888888887411 - local.get $5 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $6 - local.get $6 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $5 - f64.const 2.087572321298175e-09 - local.get $5 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $7 - f64.const 0.5 - local.get $5 - f64.mul - local.set $10 - f64.const 1 - local.get $10 - f64.sub - local.set $6 - local.get $6 - f64.const 1 - local.get $6 - f64.sub - local.get $10 - f64.sub - local.get $5 - local.get $7 - f64.mul - local.get $8 - local.get $16 - f64.mul - f64.sub - f64.add - f64.add - else - block $~lib/math/sin_kern|inlined.2 (result f64) - local.get $18 - local.set $16 - local.get $19 - local.set $9 - i32.const 1 - local.set $13 - local.get $16 - local.get $16 - f64.mul - local.set $10 - local.get $10 - local.get $10 - f64.mul - local.set $7 - f64.const 0.00833333333332249 - local.get $10 - f64.const -1.984126982985795e-04 - local.get $10 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $10 - local.get $7 - f64.mul - f64.const -2.5050760253406863e-08 - local.get $10 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $10 - local.get $16 - f64.mul - local.set $5 - local.get $13 - i32.eqz - if - local.get $16 - local.get $5 - f64.const -0.16666666666666632 - local.get $10 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - br $~lib/math/sin_kern|inlined.2 - else - local.get $16 - local.get $10 - f64.const 0.5 - local.get $9 - f64.mul - local.get $5 - local.get $6 - f64.mul - f64.sub - f64.mul - local.get $9 - f64.sub - local.get $5 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - br $~lib/math/sin_kern|inlined.2 - end - unreachable - end - end - local.set $0 - local.get $17 - i32.const 2 - i32.and - if (result f64) - local.get $0 - f64.neg - else - local.get $0 - end - ) - (func $std/math/test_sin (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.sin - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/sin - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.sin (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 f32) - (local $11 i32) - (local $12 f32) - (local $13 i32) - (local $14 i64) - (local $15 i32) - (local $16 i64) - (local $17 i64) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i32) - (local $24 i32) - (local $25 f64) - (local $26 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 31 - i32.shr_u - local.set $2 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - i32.const 1061752794 - i32.le_u - if - local.get $1 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - f64.promote_f32 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $6 - local.get $4 - local.get $3 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $5 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - return - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $1 - i32.const 1081824209 - i32.le_u - if - local.get $1 - i32.const 1075235811 - i32.le_u - if - local.get $2 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - f64.const -0.001388676377460993 - local.get $7 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $5 - f32.const 1 - f64.promote_f32 - local.get $7 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $6 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - f32.neg - else - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.sub - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - local.get $5 - local.get $5 - f64.mul - local.set $6 - f64.const -0.001388676377460993 - local.get $5 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $7 - f32.const 1 - f64.promote_f32 - local.get $5 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $6 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $6 - local.get $5 - f64.mul - local.get $7 - f64.mul - f64.add - f32.demote_f64 - end - return - end - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - end - f64.neg - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - f64.const -1.9839334836096632e-04 - local.get $7 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $5 - local.get $7 - local.get $3 - f64.mul - local.set $4 - local.get $3 - local.get $4 - f64.const -0.16666666641626524 - local.get $7 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - local.get $6 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $1 - i32.const 1088565717 - i32.le_u - if - local.get $1 - i32.const 1085271519 - i32.le_u - if - local.get $2 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.add - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $6 - f32.const 1 - f64.promote_f32 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $4 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - else - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $6 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $4 - f32.const 1 - f64.promote_f32 - local.get $6 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $6 - f64.mul - local.get $4 - f64.mul - f64.add - f32.demote_f64 - f32.neg - end - return - end - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - end - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $6 - local.get $4 - local.get $3 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $5 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - return - end - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.1 (result i32) - local.get $0 - local.set $10 - local.get $1 - local.set $9 - local.get $2 - local.set $8 - local.get $9 - i32.const 1305022427 - i32.lt_u - if - local.get $10 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $7 - local.get $10 - f64.promote_f32 - local.get $7 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $7 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $7 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.1 - end - local.get $10 - local.set $12 - local.get $9 - local.set $11 - local.get $11 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.set $13 - local.get $13 - i32.const 63 - i32.and - i64.extend_i32_s - local.set $14 - i32.const 4600 - local.get $13 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.add - local.set $15 - local.get $15 - i64.load - local.set $16 - local.get $15 - i64.load offset=8 - local.set $17 - local.get $14 - i64.const 32 - i64.gt_u - if - local.get $15 - i64.load offset=16 - local.set $19 - local.get $19 - i64.const 96 - local.get $14 - i64.sub - i64.shr_u - local.set $18 - local.get $18 - local.get $17 - local.get $14 - i64.const 32 - i64.sub - i64.shl - i64.or - local.set $18 - else - local.get $17 - i64.const 32 - local.get $14 - i64.sub - i64.shr_u - local.set $18 - end - local.get $17 - i64.const 64 - local.get $14 - i64.sub - i64.shr_u - local.get $16 - local.get $14 - i64.shl - i64.or - local.set $19 - local.get $11 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.set $20 - local.get $20 - local.get $19 - i64.mul - local.get $20 - local.get $18 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $21 - local.get $21 - i64.const 2 - i64.shl - local.set $22 - local.get $21 - i64.const 62 - i64.shr_u - local.get $22 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.set $23 - f64.const 8.515303950216386e-20 - local.get $12 - f64.promote_f32 - f64.copysign - local.get $22 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - local.get $23 - local.set $23 - i32.const 0 - local.get $23 - i32.sub - local.get $23 - local.get $8 - select - end - local.set $24 - global.get $~lib/math/rempio2f_y - local.set $25 - local.get $24 - i32.const 1 - i32.and - if (result f32) - local.get $25 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - f64.const -0.001388676377460993 - local.get $7 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $5 - f32.const 1 - f64.promote_f32 - local.get $7 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $6 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - else - local.get $25 - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - local.get $5 - local.get $5 - f64.mul - local.set $6 - f64.const -1.9839334836096632e-04 - local.get $5 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $7 - local.get $5 - local.get $4 - f64.mul - local.set $3 - local.get $4 - local.get $3 - f64.const -0.16666666641626524 - local.get $5 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $3 - local.get $6 - f64.mul - local.get $7 - f64.mul - f64.add - f32.demote_f64 - end - local.set $26 - local.get $24 - i32.const 2 - i32.and - if (result f32) - local.get $26 - f32.neg - else - local.get $26 - end - ) - (func $std/math/test_sinf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.sin - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.sinh (param $0 f64) (result f64) - (local $1 i64) - (local $2 f64) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $2 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $3 - f64.const 0.5 - local.get $0 - f64.copysign - local.set $4 - local.get $3 - i32.const 1082535490 - i32.lt_u - if - local.get $2 - call $~lib/math/NativeMath.expm1 - local.set $5 - local.get $3 - i32.const 1072693248 - i32.lt_u - if - local.get $3 - i32.const 1072693248 - i32.const 26 - i32.const 20 - i32.shl - i32.sub - i32.lt_u - if - local.get $0 - return - end - local.get $4 - f64.const 2 - local.get $5 - f64.mul - local.get $5 - local.get $5 - f64.mul - local.get $5 - f64.const 1 - f64.add - f64.div - f64.sub - f64.mul - return - end - local.get $4 - local.get $5 - local.get $5 - local.get $5 - f64.const 1 - f64.add - f64.div - f64.add - f64.mul - return - end - local.get $2 - local.set $6 - f64.const 2 - local.get $4 - f64.mul - local.set $5 - i32.const 1023 - i32.const 2043 - i32.const 2 - i32.div_u - i32.add - i32.const 20 - i32.shl - i64.extend_i32_u - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.set $7 - local.get $6 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - local.get $5 - local.get $7 - f64.mul - f64.mul - local.get $7 - f64.mul - ) - (func $std/math/test_sinh (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.sinh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/sinh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.sinh (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 f32) - (local $5 f32) - (local $6 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $2 - f32.const 0.5 - local.get $0 - f32.copysign - local.set $3 - local.get $1 - i32.const 1118925335 - i32.lt_u - if - local.get $2 - call $~lib/math/NativeMathf.expm1 - local.set $4 - local.get $1 - i32.const 1065353216 - i32.lt_u - if - local.get $1 - i32.const 1065353216 - i32.const 12 - i32.const 23 - i32.shl - i32.sub - i32.lt_u - if - local.get $0 - return - end - local.get $3 - f32.const 2 - local.get $4 - f32.mul - local.get $4 - local.get $4 - f32.mul - local.get $4 - f32.const 1 - f32.add - f32.div - f32.sub - f32.mul - return - end - local.get $3 - local.get $4 - local.get $4 - local.get $4 - f32.const 1 - f32.add - f32.div - f32.add - f32.mul - return - end - local.get $2 - local.set $5 - f32.const 2 - local.get $3 - f32.mul - local.set $4 - i32.const 127 - i32.const 235 - i32.const 1 - i32.shr_u - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $6 - local.get $5 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - local.get $4 - local.get $6 - f32.mul - f32.mul - local.get $6 - f32.mul - ) - (func $std/math/test_sinhf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.sinh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $std/math/test_sqrt (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - (local $4 f64) - local.get $0 - local.set $4 - local.get $4 - f64.sqrt - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/sqrt - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $std/math/test_sqrtf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - (local $4 f32) - local.get $0 - local.set $4 - local.get $4 - f32.sqrt - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/tan_kern (param $0 f64) (param $1 f64) (param $2 i32) (result f64) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 f64) - (local $12 f64) - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $8 - local.get $8 - i32.const 2147483647 - i32.and - local.set $9 - local.get $9 - i32.const 1072010280 - i32.ge_s - local.set $10 - local.get $10 - if - local.get $8 - i32.const 0 - i32.lt_s - if - local.get $0 - f64.neg - local.set $0 - local.get $1 - f64.neg - local.set $1 - end - f64.const 0.7853981633974483 - local.get $0 - f64.sub - local.set $3 - f64.const 3.061616997868383e-17 - local.get $1 - f64.sub - local.set $6 - local.get $3 - local.get $6 - f64.add - local.set $0 - f64.const 0 - local.set $1 - end - local.get $0 - local.get $0 - f64.mul - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $6 - f64.const 0.13333333333320124 - local.get $6 - f64.const 0.021869488294859542 - local.get $6 - f64.const 3.5920791075913124e-03 - local.get $6 - f64.const 5.880412408202641e-04 - local.get $6 - f64.const 7.817944429395571e-05 - local.get $6 - f64.const -1.8558637485527546e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $4 - local.get $3 - f64.const 0.05396825397622605 - local.get $6 - f64.const 0.0088632398235993 - local.get $6 - f64.const 1.4562094543252903e-03 - local.get $6 - f64.const 2.464631348184699e-04 - local.get $6 - f64.const 7.140724913826082e-05 - local.get $6 - f64.const 2.590730518636337e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.set $5 - local.get $3 - local.get $0 - f64.mul - local.set $7 - local.get $1 - local.get $3 - local.get $7 - local.get $4 - local.get $5 - f64.add - f64.mul - local.get $1 - f64.add - f64.mul - f64.add - local.set $4 - local.get $4 - f64.const 0.3333333333333341 - local.get $7 - f64.mul - f64.add - local.set $4 - local.get $0 - local.get $4 - f64.add - local.set $6 - local.get $10 - if - local.get $2 - f64.convert_i32_s - local.set $5 - f64.const 1 - local.get $8 - i32.const 30 - i32.shr_s - i32.const 2 - i32.and - f64.convert_i32_s - f64.sub - local.get $5 - f64.const 2 - local.get $0 - local.get $6 - local.get $6 - f64.mul - local.get $6 - local.get $5 - f64.add - f64.div - local.get $4 - f64.sub - f64.sub - f64.mul - f64.sub - f64.mul - return - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $6 - return - end - local.get $6 - local.set $3 - local.get $3 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $3 - local.get $4 - local.get $3 - local.get $0 - f64.sub - f64.sub - local.set $5 - f64.const 1 - f64.neg - local.get $6 - f64.div - local.tee $11 - local.set $12 - local.get $12 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.set $12 - f64.const 1 - local.get $12 - local.get $3 - f64.mul - f64.add - local.set $7 - local.get $12 - local.get $11 - local.get $7 - local.get $12 - local.get $5 - f64.mul - f64.add - f64.mul - f64.add - ) - (func $~lib/math/NativeMath.tan (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 f64) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 i32) - (local $14 i32) - (local $15 f64) - (local $16 f64) - (local $17 i32) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - local.get $2 - i32.const 31 - i32.shr_u - local.set $3 - local.get $2 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1072243195 - i32.le_s - if - local.get $2 - i32.const 1044381696 - i32.lt_s - if - local.get $0 - return - end - local.get $0 - f64.const 0 - i32.const 1 - call $~lib/math/tan_kern - return - end - local.get $2 - i32.const 2146435072 - i32.ge_s - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.2 (result i32) - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $3 - local.set $4 - local.get $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.set $7 - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $7 - i32.const 1073928572 - i32.lt_u - if - i32.const 1 - local.set $8 - local.get $4 - i32.eqz - if - local.get $6 - f64.const 1.5707963267341256 - f64.sub - local.set $9 - local.get $7 - i32.const 1073291771 - i32.ne - if - local.get $9 - f64.const 6.077100506506192e-11 - f64.sub - local.set $10 - local.get $9 - local.get $10 - f64.sub - f64.const 6.077100506506192e-11 - f64.sub - local.set $11 - else - local.get $9 - f64.const 6.077100506303966e-11 - f64.sub - local.set $9 - local.get $9 - f64.const 2.0222662487959506e-21 - f64.sub - local.set $10 - local.get $9 - local.get $10 - f64.sub - f64.const 2.0222662487959506e-21 - f64.sub - local.set $11 - end - else - local.get $6 - f64.const 1.5707963267341256 - f64.add - local.set $9 - local.get $7 - i32.const 1073291771 - i32.ne - if - local.get $9 - f64.const 6.077100506506192e-11 - f64.add - local.set $10 - local.get $9 - local.get $10 - f64.sub - f64.const 6.077100506506192e-11 - f64.add - local.set $11 - else - local.get $9 - f64.const 6.077100506303966e-11 - f64.add - local.set $9 - local.get $9 - f64.const 2.0222662487959506e-21 - f64.add - local.set $10 - local.get $9 - local.get $10 - f64.sub - f64.const 2.0222662487959506e-21 - f64.add - local.set $11 - end - i32.const -1 - local.set $8 - end - local.get $10 - global.set $~lib/math/rempio2_y0 - local.get $11 - global.set $~lib/math/rempio2_y1 - local.get $8 - br $~lib/math/rempio2|inlined.2 - end - local.get $7 - i32.const 1094263291 - i32.lt_u - if - local.get $6 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $11 - local.get $6 - local.get $11 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.set $10 - local.get $11 - f64.const 6.077100506506192e-11 - f64.mul - local.set $9 - local.get $7 - i32.const 20 - i32.shr_u - local.set $8 - local.get $10 - local.get $9 - f64.sub - local.set $12 - local.get $12 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $13 - local.get $8 - local.get $13 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $14 - local.get $14 - i32.const 16 - i32.gt_u - if - local.get $10 - local.set $15 - local.get $11 - f64.const 6.077100506303966e-11 - f64.mul - local.set $9 - local.get $15 - local.get $9 - f64.sub - local.set $10 - local.get $11 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $15 - local.get $10 - f64.sub - local.get $9 - f64.sub - f64.sub - local.set $9 - local.get $10 - local.get $9 - f64.sub - local.set $12 - local.get $12 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $13 - local.get $8 - local.get $13 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $14 - local.get $14 - i32.const 49 - i32.gt_u - if - local.get $10 - local.set $16 - local.get $11 - f64.const 2.0222662487111665e-21 - f64.mul - local.set $9 - local.get $16 - local.get $9 - f64.sub - local.set $10 - local.get $11 - f64.const 8.4784276603689e-32 - f64.mul - local.get $16 - local.get $10 - f64.sub - local.get $9 - f64.sub - f64.sub - local.set $9 - local.get $10 - local.get $9 - f64.sub - local.set $12 - end - end - local.get $10 - local.get $12 - f64.sub - local.get $9 - f64.sub - local.set $15 - local.get $12 - global.set $~lib/math/rempio2_y0 - local.get $15 - global.set $~lib/math/rempio2_y1 - local.get $11 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.2 - end - local.get $6 - local.get $5 - call $~lib/math/pio2_large_quot - local.set $14 - i32.const 0 - local.get $14 - i32.sub - local.get $14 - local.get $4 - select - end - local.set $17 - global.get $~lib/math/rempio2_y0 - global.get $~lib/math/rempio2_y1 - i32.const 1 - local.get $17 - i32.const 1 - i32.and - i32.const 1 - i32.shl - i32.sub - call $~lib/math/tan_kern - ) - (func $std/math/test_tan (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.tan - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/tan - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 i32) - (local $12 f32) - (local $13 i32) - (local $14 f32) - (local $15 i32) - (local $16 i64) - (local $17 i32) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i64) - (local $24 i64) - (local $25 i32) - (local $26 i32) - (local $27 f64) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 31 - i32.shr_u - local.set $2 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - i32.const 1061752794 - i32.le_u - if - local.get $1 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - f64.promote_f32 - local.set $4 - i32.const 0 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const 0.002974357433599673 - local.get $5 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $6 - f64.const 0.05338123784456704 - local.get $5 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $7 - local.get $5 - local.get $5 - f64.mul - local.set $8 - local.get $5 - local.get $4 - f64.mul - local.set $9 - f64.const 0.3333313950307914 - local.get $5 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $10 - local.get $4 - local.get $9 - local.get $10 - f64.mul - f64.add - local.get $9 - local.get $8 - f64.mul - local.get $7 - local.get $8 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $6 - f64.div - else - local.get $6 - end - f32.demote_f64 - return - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $1 - i32.const 1081824209 - i32.le_u - if - local.get $1 - i32.const 1075235811 - i32.le_u - if - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.sub - end - local.set $4 - i32.const 1 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $10 - f64.const 0.002974357433599673 - local.get $10 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $9 - f64.const 0.05338123784456704 - local.get $10 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $8 - local.get $10 - local.get $10 - f64.mul - local.set $7 - local.get $10 - local.get $4 - f64.mul - local.set $6 - f64.const 0.3333313950307914 - local.get $10 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $5 - local.get $4 - local.get $6 - local.get $5 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $8 - local.get $7 - local.get $9 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $9 - f64.div - else - local.get $9 - end - f32.demote_f64 - return - else - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - end - local.set $4 - i32.const 0 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const 0.002974357433599673 - local.get $5 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $6 - f64.const 0.05338123784456704 - local.get $5 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $7 - local.get $5 - local.get $5 - f64.mul - local.set $8 - local.get $5 - local.get $4 - f64.mul - local.set $9 - f64.const 0.3333313950307914 - local.get $5 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $10 - local.get $4 - local.get $9 - local.get $10 - f64.mul - f64.add - local.get $9 - local.get $8 - f64.mul - local.get $7 - local.get $8 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $6 - f64.div - else - local.get $6 - end - f32.demote_f64 - return - end - unreachable - end - local.get $1 - i32.const 1088565717 - i32.le_u - if - local.get $1 - i32.const 1085271519 - i32.le_u - if - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - end - local.set $4 - i32.const 1 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $10 - f64.const 0.002974357433599673 - local.get $10 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $9 - f64.const 0.05338123784456704 - local.get $10 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $8 - local.get $10 - local.get $10 - f64.mul - local.set $7 - local.get $10 - local.get $4 - f64.mul - local.set $6 - f64.const 0.3333313950307914 - local.get $10 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $5 - local.get $4 - local.get $6 - local.get $5 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $8 - local.get $7 - local.get $9 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $9 - f64.div - else - local.get $9 - end - f32.demote_f64 - return - else - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - end - local.set $4 - i32.const 0 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const 0.002974357433599673 - local.get $5 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $6 - f64.const 0.05338123784456704 - local.get $5 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $7 - local.get $5 - local.get $5 - f64.mul - local.set $8 - local.get $5 - local.get $4 - f64.mul - local.set $9 - f64.const 0.3333313950307914 - local.get $5 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $10 - local.get $4 - local.get $9 - local.get $10 - f64.mul - f64.add - local.get $9 - local.get $8 - f64.mul - local.get $7 - local.get $8 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $6 - f64.div - else - local.get $6 - end - f32.demote_f64 - return - end - unreachable - end - local.get $1 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.2 (result i32) - local.get $0 - local.set $12 - local.get $1 - local.set $11 - local.get $2 - local.set $3 - local.get $11 - i32.const 1305022427 - i32.lt_u - if - local.get $12 - f64.promote_f32 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $10 - local.get $12 - f64.promote_f32 - local.get $10 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $10 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $10 - i32.trunc_f64_s - br $~lib/math/rempio2f|inlined.2 - end - local.get $12 - local.set $14 - local.get $11 - local.set $13 - local.get $13 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.set $15 - local.get $15 - i32.const 63 - i32.and - i64.extend_i32_s - local.set $16 - i32.const 4600 - local.get $15 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.add - local.set $17 - local.get $17 - i64.load - local.set $18 - local.get $17 - i64.load offset=8 - local.set $19 - local.get $16 - i64.const 32 - i64.gt_u - if - local.get $17 - i64.load offset=16 - local.set $21 - local.get $21 - i64.const 96 - local.get $16 - i64.sub - i64.shr_u - local.set $20 - local.get $20 - local.get $19 - local.get $16 - i64.const 32 - i64.sub - i64.shl - i64.or - local.set $20 - else - local.get $19 - i64.const 32 - local.get $16 - i64.sub - i64.shr_u - local.set $20 - end - local.get $19 - i64.const 64 - local.get $16 - i64.sub - i64.shr_u - local.get $18 - local.get $16 - i64.shl - i64.or - local.set $21 - local.get $13 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.set $22 - local.get $22 - local.get $21 - i64.mul - local.get $22 - local.get $20 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $23 - i64.const 2 - i64.shl - local.set $24 - local.get $23 - i64.const 62 - i64.shr_u - local.get $24 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.set $25 - f64.const 8.515303950216386e-20 - local.get $14 - f64.promote_f32 - f64.copysign - local.get $24 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - local.get $25 - local.set $25 - i32.const 0 - local.get $25 - i32.sub - local.get $25 - local.get $3 - select - end - local.set $26 - global.get $~lib/math/rempio2f_y - local.set $27 - local.get $27 - local.set $4 - local.get $26 - i32.const 1 - i32.and - local.set $13 - local.get $4 - local.get $4 - f64.mul - local.set $10 - f64.const 0.002974357433599673 - local.get $10 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $9 - f64.const 0.05338123784456704 - local.get $10 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $8 - local.get $10 - local.get $10 - f64.mul - local.set $7 - local.get $10 - local.get $4 - f64.mul - local.set $6 - f64.const 0.3333313950307914 - local.get $10 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $5 - local.get $4 - local.get $6 - local.get $5 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $8 - local.get $7 - local.get $9 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $13 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $9 - f64.div - else - local.get $9 - end - f32.demote_f64 - ) - (func $std/math/test_tanf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.tan - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.tanh (param $0 f64) (result f64) - (local $1 i64) - (local $2 f64) - (local $3 i32) - (local $4 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 9223372036854775807 - i64.and - local.set $1 - local.get $1 - f64.reinterpret_i64 - local.set $2 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $3 - local.get $3 - i32.const 1071748074 - i32.gt_u - if - local.get $3 - i32.const 1077149696 - i32.gt_u - if - f64.const 1 - f64.const 0 - local.get $2 - f64.div - f64.sub - local.set $4 - else - f64.const 2 - local.get $2 - f64.mul - call $~lib/math/NativeMath.expm1 - local.set $4 - f64.const 1 - f64.const 2 - local.get $4 - f64.const 2 - f64.add - f64.div - f64.sub - local.set $4 - end - else - local.get $3 - i32.const 1070618798 - i32.gt_u - if - f64.const 2 - local.get $2 - f64.mul - call $~lib/math/NativeMath.expm1 - local.set $4 - local.get $4 - local.get $4 - f64.const 2 - f64.add - f64.div - local.set $4 - else - local.get $3 - i32.const 1048576 - i32.ge_u - if - f64.const -2 - local.get $2 - f64.mul - call $~lib/math/NativeMath.expm1 - local.set $4 - local.get $4 - f64.neg - local.get $4 - f64.const 2 - f64.add - f64.div - local.set $4 - else - local.get $2 - local.set $4 - end - end - end - local.get $4 - local.get $0 - f64.copysign - ) - (func $std/math/test_tanh (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.tanh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/tanh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.tanh (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - local.get $0 - i32.reinterpret_f32 - local.set $1 - local.get $1 - i32.const 2147483647 - i32.and - local.set $1 - local.get $1 - f32.reinterpret_i32 - local.set $2 - local.get $1 - i32.const 1057791828 - i32.gt_u - if - local.get $1 - i32.const 1092616192 - i32.gt_u - if - f32.const 1 - f32.const 0 - local.get $2 - f32.div - f32.add - local.set $3 - else - f32.const 2 - local.get $2 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.set $3 - f32.const 1 - f32.const 2 - local.get $3 - f32.const 2 - f32.add - f32.div - f32.sub - local.set $3 - end - else - local.get $1 - i32.const 1048757624 - i32.gt_u - if - f32.const 2 - local.get $2 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.set $3 - local.get $3 - local.get $3 - f32.const 2 - f32.add - f32.div - local.set $3 - else - local.get $1 - i32.const 8388608 - i32.ge_u - if - f32.const -2 - local.get $2 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.set $3 - local.get $3 - f32.neg - local.get $3 - f32.const 2 - f32.add - f32.div - local.set $3 - else - local.get $2 - local.set $3 - end - end - end - local.get $3 - local.get $0 - f32.copysign - ) - (func $std/math/test_tanhf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.tanh - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $std/math/test_trunc (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) - (local $4 f64) - local.get $0 - local.set $4 - local.get $4 - f64.trunc - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - if (result i32) - global.get $std/math/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/bindings/Math/trunc - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - end - else - i32.const 0 - end - ) - (func $std/math/test_truncf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) - (local $4 f32) - local.get $0 - local.set $4 - local.get $4 - f32.trunc - local.get $1 - local.get $2 - local.get $3 - call $std/math/check - ) - (func $~lib/math/NativeMath.sincos (param $0 f64) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 i64) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 f64) - (local $17 i32) - (local $18 f64) - (local $19 f64) - (local $20 f64) - (local $21 f64) - (local $22 f64) - (local $23 f64) - local.get $0 - i64.reinterpret_f64 - local.set $1 - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - local.get $2 - i32.const 31 - i32.shr_u - local.set $3 - local.get $2 - i32.const 2147483647 - i32.and - local.set $2 - local.get $2 - i32.const 1072243195 - i32.le_u - if - local.get $2 - i32.const 1044816030 - i32.lt_u - if - local.get $0 - global.set $~lib/math/NativeMath.sincos_sin - f64.const 1 - global.set $~lib/math/NativeMath.sincos_cos - return - end - block $~lib/math/sin_kern|inlined.3 (result f64) - local.get $0 - local.set $6 - f64.const 0 - local.set $5 - i32.const 0 - local.set $4 - local.get $6 - local.get $6 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $8 - f64.const 0.00833333333332249 - local.get $7 - f64.const -1.984126982985795e-04 - local.get $7 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $8 - f64.mul - f64.const -2.5050760253406863e-08 - local.get $7 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $7 - local.get $6 - f64.mul - local.set $10 - local.get $4 - i32.eqz - if - local.get $6 - local.get $10 - f64.const -0.16666666666666632 - local.get $7 - local.get $9 - f64.mul - f64.add - f64.mul - f64.add - br $~lib/math/sin_kern|inlined.3 - else - local.get $6 - local.get $7 - f64.const 0.5 - local.get $5 - f64.mul - local.get $10 - local.get $9 - f64.mul - f64.sub - f64.mul - local.get $5 - f64.sub - local.get $10 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - br $~lib/math/sin_kern|inlined.3 - end - unreachable - end - global.set $~lib/math/NativeMath.sincos_sin - local.get $0 - local.set $6 - f64.const 0 - local.set $5 - local.get $6 - local.get $6 - f64.mul - local.set $10 - local.get $10 - local.get $10 - f64.mul - local.set $9 - local.get $10 - f64.const 0.0416666666666666 - local.get $10 - f64.const -0.001388888888887411 - local.get $10 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $9 - local.get $9 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $10 - f64.const 2.087572321298175e-09 - local.get $10 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $8 - f64.const 0.5 - local.get $10 - f64.mul - local.set $7 - f64.const 1 - local.get $7 - f64.sub - local.set $9 - local.get $9 - f64.const 1 - local.get $9 - f64.sub - local.get $7 - f64.sub - local.get $10 - local.get $8 - f64.mul - local.get $6 - local.get $5 - f64.mul - f64.sub - f64.add - f64.add - global.set $~lib/math/NativeMath.sincos_cos - return - end - local.get $2 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - local.set $7 - local.get $7 - global.set $~lib/math/NativeMath.sincos_sin - local.get $7 - global.set $~lib/math/NativeMath.sincos_cos - return - end - block $~lib/math/rempio2|inlined.3 (result i32) - local.get $0 - local.set $5 - local.get $1 - local.set $11 - local.get $3 - local.set $4 - local.get $11 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.set $12 - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $12 - i32.const 1073928572 - i32.lt_u - if - i32.const 1 - local.set $13 - local.get $4 - i32.eqz - if - local.get $5 - f64.const 1.5707963267341256 - f64.sub - local.set $7 - local.get $12 - i32.const 1073291771 - i32.ne - if - local.get $7 - f64.const 6.077100506506192e-11 - f64.sub - local.set $8 - local.get $7 - local.get $8 - f64.sub - f64.const 6.077100506506192e-11 - f64.sub - local.set $9 - else - local.get $7 - f64.const 6.077100506303966e-11 - f64.sub - local.set $7 - local.get $7 - f64.const 2.0222662487959506e-21 - f64.sub - local.set $8 - local.get $7 - local.get $8 - f64.sub - f64.const 2.0222662487959506e-21 - f64.sub - local.set $9 - end - else - local.get $5 - f64.const 1.5707963267341256 - f64.add - local.set $7 - local.get $12 - i32.const 1073291771 - i32.ne - if - local.get $7 - f64.const 6.077100506506192e-11 - f64.add - local.set $8 - local.get $7 - local.get $8 - f64.sub - f64.const 6.077100506506192e-11 - f64.add - local.set $9 - else - local.get $7 - f64.const 6.077100506303966e-11 - f64.add - local.set $7 - local.get $7 - f64.const 2.0222662487959506e-21 - f64.add - local.set $8 - local.get $7 - local.get $8 - f64.sub - f64.const 2.0222662487959506e-21 - f64.add - local.set $9 - end - i32.const -1 - local.set $13 - end - local.get $8 - global.set $~lib/math/rempio2_y0 - local.get $9 - global.set $~lib/math/rempio2_y1 - local.get $13 - br $~lib/math/rempio2|inlined.3 - end - local.get $12 - i32.const 1094263291 - i32.lt_u - if - local.get $5 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $9 - local.get $5 - local.get $9 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.set $8 - local.get $9 - f64.const 6.077100506506192e-11 - f64.mul - local.set $7 - local.get $12 - i32.const 20 - i32.shr_u - local.set $13 - local.get $8 - local.get $7 - f64.sub - local.set $10 - local.get $10 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $14 - local.get $13 - local.get $14 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $15 - local.get $15 - i32.const 16 - i32.gt_u - if - local.get $8 - local.set $6 - local.get $9 - f64.const 6.077100506303966e-11 - f64.mul - local.set $7 - local.get $6 - local.get $7 - f64.sub - local.set $8 - local.get $9 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $6 - local.get $8 - f64.sub - local.get $7 - f64.sub - f64.sub - local.set $7 - local.get $8 - local.get $7 - f64.sub - local.set $10 - local.get $10 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $14 - local.get $13 - local.get $14 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - local.set $15 - local.get $15 - i32.const 49 - i32.gt_u - if - local.get $8 - local.set $16 - local.get $9 - f64.const 2.0222662487111665e-21 - f64.mul - local.set $7 - local.get $16 - local.get $7 - f64.sub - local.set $8 - local.get $9 - f64.const 8.4784276603689e-32 - f64.mul - local.get $16 - local.get $8 - f64.sub - local.get $7 - f64.sub - f64.sub - local.set $7 - local.get $8 - local.get $7 - f64.sub - local.set $10 - end - end - local.get $8 - local.get $10 - f64.sub - local.get $7 - f64.sub - local.set $6 - local.get $10 - global.set $~lib/math/rempio2_y0 - local.get $6 - global.set $~lib/math/rempio2_y1 - local.get $9 - i32.trunc_f64_s - br $~lib/math/rempio2|inlined.3 - end - local.get $5 - local.get $11 - call $~lib/math/pio2_large_quot - local.set $15 - i32.const 0 - local.get $15 - i32.sub - local.get $15 - local.get $4 - select - end - local.set $17 - global.get $~lib/math/rempio2_y0 - local.set $18 - global.get $~lib/math/rempio2_y1 - local.set $19 - block $~lib/math/sin_kern|inlined.4 (result f64) - local.get $18 - local.set $9 - local.get $19 - local.set $16 - i32.const 1 - local.set $13 - local.get $9 - local.get $9 - f64.mul - local.set $5 - local.get $5 - local.get $5 - f64.mul - local.set $6 - f64.const 0.00833333333332249 - local.get $5 - f64.const -1.984126982985795e-04 - local.get $5 - f64.const 2.7557313707070068e-06 - f64.mul - f64.add - f64.mul - f64.add - local.get $5 - local.get $6 - f64.mul - f64.const -2.5050760253406863e-08 - local.get $5 - f64.const 1.58969099521155e-10 - f64.mul - f64.add - f64.mul - f64.add - local.set $10 - local.get $5 - local.get $9 - f64.mul - local.set $7 - local.get $13 - i32.eqz - if - local.get $9 - local.get $7 - f64.const -0.16666666666666632 - local.get $5 - local.get $10 - f64.mul - f64.add - f64.mul - f64.add - br $~lib/math/sin_kern|inlined.4 - else - local.get $9 - local.get $5 - f64.const 0.5 - local.get $16 - f64.mul - local.get $7 - local.get $10 - f64.mul - f64.sub - f64.mul - local.get $16 - f64.sub - local.get $7 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - br $~lib/math/sin_kern|inlined.4 - end - unreachable - end - local.set $20 - local.get $18 - local.set $16 - local.get $19 - local.set $8 - local.get $16 - local.get $16 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $10 - local.get $7 - f64.const 0.0416666666666666 - local.get $7 - f64.const -0.001388888888887411 - local.get $7 - f64.const 2.480158728947673e-05 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $10 - local.get $10 - f64.mul - f64.const -2.7557314351390663e-07 - local.get $7 - f64.const 2.087572321298175e-09 - local.get $7 - f64.const -1.1359647557788195e-11 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - f64.const 0.5 - local.get $7 - f64.mul - local.set $5 - f64.const 1 - local.get $5 - f64.sub - local.set $10 - local.get $10 - f64.const 1 - local.get $10 - f64.sub - local.get $5 - f64.sub - local.get $7 - local.get $6 - f64.mul - local.get $16 - local.get $8 - f64.mul - f64.sub - f64.add - f64.add - local.set $21 - local.get $20 - local.set $22 - local.get $21 - local.set $23 - local.get $17 - i32.const 1 - i32.and - if - local.get $21 - local.set $22 - local.get $20 - f64.neg - local.set $23 - end - local.get $17 - i32.const 2 - i32.and - if - local.get $22 - f64.neg - local.set $22 - local.get $23 - f64.neg - local.set $23 - end - local.get $22 - global.set $~lib/math/NativeMath.sincos_sin - local.get $23 - global.set $~lib/math/NativeMath.sincos_cos - ) - (func $std/math/test_sincos (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i32) (result i32) - (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - local.get $0 - f64.reinterpret_i64 - local.set $6 - local.get $1 - f64.reinterpret_i64 - local.set $7 - local.get $3 - f64.reinterpret_i64 - local.set $8 - local.get $2 - f64.reinterpret_i64 - local.set $9 - local.get $4 - f64.reinterpret_i64 - local.set $10 - local.get $6 - call $~lib/math/NativeMath.sincos - global.get $~lib/math/NativeMath.sincos_sin - local.get $7 - local.get $9 - local.get $5 - call $std/math/check - if (result i32) - global.get $~lib/math/NativeMath.sincos_cos - local.get $8 - local.get $10 - local.get $5 - call $std/math/check - else - i32.const 0 - end - ) - (func $~lib/math/dtoi32 (param $0 f64) (result i32) - (local $1 i32) - (local $2 i64) - (local $3 i64) - (local $4 i64) - i32.const 0 - i32.const 0 - i32.gt_s - drop - i32.const 0 - local.set $1 - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $3 - local.get $3 - i64.const 1023 - i64.const 30 - i64.add - i64.le_u - if - local.get $0 - i32.trunc_f64_s - local.set $1 - else - local.get $3 - i64.const 1023 - i64.const 30 - i64.add - i64.const 53 - i64.add - i64.le_u - if - local.get $2 - i64.const 1 - i64.const 52 - i64.shl - i64.const 1 - i64.sub - i64.and - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $4 - local.get $4 - local.get $3 - i64.const 1023 - i64.sub - i64.const 52 - i64.sub - i64.const 32 - i64.add - i64.shl - local.set $4 - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - i32.const 0 - local.get $1 - i32.sub - local.get $1 - local.get $2 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - select - local.set $1 - end - end - local.get $1 - return - ) - (func $~lib/math/NativeMath.imul (param $0 f64) (param $1 f64) (result f64) - (local $2 f64) - local.get $0 - local.get $1 - f64.add - local.tee $2 - local.get $2 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - f64.const 0 - return - end - local.get $0 - call $~lib/math/dtoi32 - local.get $1 - call $~lib/math/dtoi32 - i32.mul - f64.convert_i32_s - ) - (func $~lib/math/NativeMath.clz32 (param $0 f64) (result f64) - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - f64.const 32 - return - end - local.get $0 - call $~lib/math/dtoi32 - i32.clz - f64.convert_i32_s - ) - (func $~lib/math/ipow64 (param $0 i64) (param $1 i64) (result i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - i64.const 1 - local.set $2 - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $1 - i64.const 0 - i64.le_s - if - local.get $0 - i64.const -1 - i64.eq - if - i64.const -1 - i64.const 1 - local.get $1 - i64.const 1 - i64.and - i64.const 0 - i64.ne - select - return - end - local.get $1 - i64.const 0 - i64.eq - i64.extend_i32_u - local.get $0 - i64.const 1 - i64.eq - i64.extend_i32_u - i64.or - return - else - local.get $1 - i64.const 1 - i64.eq - if - local.get $0 - return - else - local.get $1 - i64.const 2 - i64.eq - if - local.get $0 - local.get $0 - i64.mul - return - else - local.get $1 - i64.const 64 - i64.lt_s - if - i32.const 64 - local.get $1 - i64.clz - i32.wrap_i64 - i32.sub - local.set $3 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $3 - local.set $4 - local.get $4 - i32.const 6 - i32.eq - br_if $case0|0 - local.get $4 - i32.const 5 - i32.eq - br_if $case1|0 - local.get $4 - i32.const 4 - i32.eq - br_if $case2|0 - local.get $4 - i32.const 3 - i32.eq - br_if $case3|0 - local.get $4 - i32.const 2 - i32.eq - br_if $case4|0 - local.get $4 - i32.const 1 - i32.eq - br_if $case5|0 - br $break|0 - end - local.get $1 - i64.const 1 - i64.and - i64.const 0 - i64.ne - if - local.get $2 - local.get $0 - i64.mul - local.set $2 - end - local.get $1 - i64.const 1 - i64.shr_u - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - end - local.get $1 - i64.const 1 - i64.and - i64.const 0 - i64.ne - if - local.get $2 - local.get $0 - i64.mul - local.set $2 - end - local.get $1 - i64.const 1 - i64.shr_u - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - end - local.get $1 - i64.const 1 - i64.and - i64.const 0 - i64.ne - if - local.get $2 - local.get $0 - i64.mul - local.set $2 - end - local.get $1 - i64.const 1 - i64.shr_u - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - end - local.get $1 - i64.const 1 - i64.and - i64.const 0 - i64.ne - if - local.get $2 - local.get $0 - i64.mul - local.set $2 - end - local.get $1 - i64.const 1 - i64.shr_u - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - end - local.get $1 - i64.const 1 - i64.and - i64.const 0 - i64.ne - if - local.get $2 - local.get $0 - i64.mul - local.set $2 - end - local.get $1 - i64.const 1 - i64.shr_u - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - end - local.get $1 - i64.const 1 - i64.and - i64.const 0 - i64.ne - if - local.get $2 - local.get $0 - i64.mul - local.set $2 - end - end - local.get $2 - return - end - end - end - end - loop $while-continue|1 - local.get $1 - i64.const 0 - i64.ne - local.set $3 - local.get $3 - if - local.get $1 - i64.const 1 - i64.and - i64.const 0 - i64.ne - if - local.get $2 - local.get $0 - i64.mul - local.set $2 - end - local.get $1 - i64.const 1 - i64.shr_u - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - br $while-continue|1 - end - end - local.get $2 - ) - (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - local.set $2 - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $1 - i32.const 0 - i32.le_s - if - local.get $0 - i32.const -1 - i32.eq - if - i32.const -1 - i32.const 1 - local.get $1 - i32.const 1 - i32.and - select - return - end - local.get $1 - i32.const 0 - i32.eq - local.get $0 - i32.const 1 - i32.eq - i32.or - return - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - return - else - local.get $1 - i32.const 2 - i32.eq - if - local.get $0 - local.get $0 - i32.mul - return - else - local.get $1 - i32.const 32 - i32.lt_s - if - i32.const 32 - local.get $1 - i32.clz - i32.sub - local.set $3 - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $3 - local.set $4 - local.get $4 - i32.const 5 - i32.eq - br_if $case0|0 - local.get $4 - i32.const 4 - i32.eq - br_if $case1|0 - local.get $4 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $4 - i32.const 2 - i32.eq - br_if $case3|0 - local.get $4 - i32.const 1 - i32.eq - br_if $case4|0 - br $break|0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - end - local.get $2 - return - end - end - end - end - loop $while-continue|1 - local.get $1 - local.set $3 - local.get $3 - if - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - br $while-continue|1 - end - end - local.get $2 - ) - (func $start:std/math - (local $0 f64) - (local $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 f32) - global.get $~lib/math/NativeMath.E - global.get $~lib/math/NativeMath.E - f64.eq - drop - global.get $~lib/math/NativeMathf.E - global.get $~lib/math/NativeMathf.E - f32.eq - drop - global.get $~lib/math/NativeMath.E - global.get $~lib/bindings/Math/E - f64.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/math/NativeMath.LN2 - global.get $~lib/bindings/Math/LN2 - f64.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 112 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/math/NativeMath.LN10 - global.get $~lib/bindings/Math/LN10 - f64.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/math/NativeMath.LOG2E - global.get $~lib/bindings/Math/LOG2E - f64.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/math/NativeMath.PI - global.get $~lib/bindings/Math/PI - f64.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/math/NativeMath.SQRT1_2 - global.get $~lib/bindings/Math/SQRT1_2 - f64.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/math/NativeMath.SQRT2 - global.get $~lib/bindings/Math/SQRT2 - f64.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/math/NativeMathf.E - global.get $~lib/bindings/Math/E - f32.demote_f64 - f32.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/math/NativeMathf.LN2 - global.get $~lib/bindings/Math/LN2 - f32.demote_f64 - f32.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/math/NativeMathf.LN10 - global.get $~lib/bindings/Math/LN10 - f32.demote_f64 - f32.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/math/NativeMathf.LOG2E - global.get $~lib/bindings/Math/LOG2E - f32.demote_f64 - f32.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 122 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/math/NativeMathf.PI - global.get $~lib/bindings/Math/PI - f32.demote_f64 - f32.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/math/NativeMathf.SQRT1_2 - global.get $~lib/bindings/Math/SQRT1_2 - f32.demote_f64 - f32.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 124 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/math/NativeMathf.SQRT2 - global.get $~lib/bindings/Math/SQRT2 - f32.demote_f64 - f32.const 0 - i32.const 0 - call $std/math/check - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 125 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - i32.const -2 - f64.const -2.01671209764492 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 136 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - i32.const -1 - f64.const 2.1726199246691524 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - i32.const 0 - f64.const -8.38143342755525 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 138 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - i32.const 1 - f64.const -13.063347163826968 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 139 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - i32.const 2 - f64.const 37.06822786789034 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - i32.const 3 - f64.const 5.295887184796036 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 141 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - i32.const 4 - f64.const -6.505662758165685 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 142 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - i32.const 5 - f64.const 17.97631187906317 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - i32.const 6 - f64.const 49.545746981843436 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 144 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - i32.const 7 - f64.const -86.88175393784351 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 145 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - i32.const 2147483647 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 148 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - i32.const -2147483647 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 149 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - i32.const 2147483647 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 150 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - i32.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - i32.const 0 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 152 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - i32.const 0 - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 153 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - i32.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 154 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - i32.const 1 - f64.const 2 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 155 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - i32.const -1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - i32.const 2147483647 - f64.const inf - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/OVERFLOW - i32.or - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - i32.const 1 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 158 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - i32.const 2147483647 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 159 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - i32.const -2147483647 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 160 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - i32.const 2147483647 - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 161 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8988465674311579538646525e283 - i32.const -2097 - f64.const 5e-324 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - i32.const 2097 - f64.const 8988465674311579538646525e283 - f64.const 0 - i32.const 0 - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.000244140625 - i32.const -1074 - f64.const 5e-324 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 164 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7499999999999999 - i32.const -1073 - f64.const 5e-324 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 165 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5000000000000012 - i32.const -1024 - f64.const 2.781342323134007e-309 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_scalbn - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 166 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - i32.const -2 - f32.const -2.016712188720703 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 175 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - i32.const -1 - f32.const 2.1726198196411133 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 176 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - i32.const 0 - f32.const -8.381433486938477 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - i32.const 1 - f32.const -13.063346862792969 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 178 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - i32.const 2 - f32.const 37.06822967529297 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 179 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - i32.const 3 - f32.const 5.295886993408203 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 180 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - i32.const 4 - f32.const -6.50566291809082 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 181 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - i32.const 5 - f32.const 17.9763126373291 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 182 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - i32.const 6 - f32.const 49.545745849609375 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 183 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - i32.const 7 - f32.const -86.88175201416016 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 184 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - i32.const 2147483647 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 187 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - i32.const -2147483647 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 188 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - i32.const 2147483647 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 189 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - i32.const 0 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 190 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - i32.const 0 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 191 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - i32.const 0 - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 192 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - i32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - i32.const 1 - f32.const 2 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 194 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - i32.const -1 - f32.const 0.5 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 195 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - i32.const 2147483647 - f32.const inf - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/OVERFLOW - i32.or - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 196 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - i32.const 1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 197 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - i32.const 2147483647 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 198 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - i32.const -2147483647 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - i32.const 2147483647 - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 200 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1701411834604692317316873e14 - i32.const -276 - f32.const 1.401298464324817e-45 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 201 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - i32.const 276 - f32.const 1701411834604692317316873e14 - f32.const 0 - i32.const 0 - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 202 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.000244140625 - i32.const -149 - f32.const 1.401298464324817e-45 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 203 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7499999403953552 - i32.const -148 - f32.const 1.401298464324817e-45 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 204 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5000006556510925 - i32.const -128 - f32.const 1.4693693398263237e-39 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_scalbnf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 8.06684839057968 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 217 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 4.345239849338305 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 218 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const 8.38143342755525 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 219 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 6.531673581913484 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 220 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 9.267056966972586 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 221 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.6619858980995045 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 222 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const 0.4066039223853553 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 223 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5617597462207241 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 224 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.7741522965913037 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 225 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const 0.6787637026394024 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 226 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 229 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 230 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 231 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 232 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 233 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 234 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_abs - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 235 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 8.066848754882812 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 244 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 4.345239639282227 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 245 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const 8.381433486938477 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 246 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 6.531673431396484 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 247 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 9.267057418823242 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 248 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.6619858741760254 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 249 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const 0.40660393238067627 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 250 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.5617597699165344 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 251 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.7741522789001465 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 252 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const 0.6787636876106262 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 253 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 256 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 257 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 258 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 259 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 260 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 261 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_absf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 262 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 274 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 275 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 276 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 277 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 278 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.8473310828433507 - f64.const -0.41553276777267456 - global.get $std/math/INEXACT - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const 1.989530071088669 - f64.const 0.4973946213722229 - global.get $std/math/INEXACT - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 280 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.9742849645674904 - f64.const -0.4428897500038147 - global.get $std/math/INEXACT - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 281 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.6854215158636222 - f64.const -0.12589527666568756 - global.get $std/math/INEXACT - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 282 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const 2.316874138205964 - f64.const -0.17284949123859406 - global.get $std/math/INEXACT - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 283 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1.5707963267948966 - f64.const -0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 286 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 3.141592653589793 - f64.const -0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 287 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 288 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000000000000002 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 289 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000000000000002 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 290 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 291 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 293 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5309227209592985 - f64.const 2.1304853799705463 - f64.const 0.1391008496284485 - global.get $std/math/INEXACT - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 294 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.4939556746399746 - f64.const 1.0541629875851946 - f64.const 0.22054767608642578 - global.get $std/math/INEXACT - call $std/math/test_acos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 295 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 304 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 305 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 306 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 307 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 308 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.8473311066627502 - f32.const -0.13588131964206696 - global.get $std/math/INEXACT - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 309 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const 1.989530086517334 - f32.const 0.03764917701482773 - global.get $std/math/INEXACT - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 310 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.9742849469184875 - f32.const 0.18443739414215088 - global.get $std/math/INEXACT - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 311 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.6854215264320374 - f32.const -0.29158344864845276 - global.get $std/math/INEXACT - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 312 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const 2.3168740272521973 - f32.const -0.3795364499092102 - global.get $std/math/INEXACT - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 313 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1.5707963705062866 - f32.const 0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 316 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 3.1415927410125732 - f32.const 0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 317 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 318 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000001192092896 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 319 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000001192092896 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 320 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 321 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 322 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 323 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.49965065717697144 - f32.const 1.0476008653640747 - f32.const -0.21161814033985138 - global.get $std/math/INEXACT - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 324 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5051405429840088 - f32.const 2.1003410816192627 - f32.const -0.20852705836296082 - global.get $std/math/INEXACT - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 325 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5189794898033142 - f32.const 2.116452932357788 - f32.const -0.14600826799869537 - global.get $std/math/INEXACT - call $std/math/test_acosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 326 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 338 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 2.1487163980597503 - f64.const -0.291634738445282 - global.get $std/math/INEXACT - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 339 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 340 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 341 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 2.91668914109908 - f64.const -0.24191908538341522 - global.get $std/math/INEXACT - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 342 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 343 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 344 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 345 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 346 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 347 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 350 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 351 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 352 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 353 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 354 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 355 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 356 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1060831199926429 - f64.const 0.4566373404384803 - f64.const -0.29381608963012695 - global.get $std/math/INEXACT - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 372 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1089809557628658 - f64.const 0.4627246859959428 - f64.const -0.3990095555782318 - global.get $std/math/INEXACT - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 374 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1169429159875521 - f64.const 0.47902433134075284 - f64.const -0.321674108505249 - global.get $std/math/INEXACT - call $std/math/test_acosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 375 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 384 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 2.148716449737549 - f32.const 0.4251045286655426 - global.get $std/math/INEXACT - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 385 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 386 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 387 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 2.916689157485962 - f32.const -0.1369788944721222 - global.get $std/math/INEXACT - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 388 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 389 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 390 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 391 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 392 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 393 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 396 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 397 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 398 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 399 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 400 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 401 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 402 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1125899906842624 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_acoshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 403 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 415 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 416 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 417 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 418 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 419 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.7234652439515459 - f64.const -0.13599912822246552 - global.get $std/math/INEXACT - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 420 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.41873374429377225 - f64.const -0.09264230728149414 - global.get $std/math/INEXACT - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 421 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5965113622274062 - f64.const -0.10864213854074478 - global.get $std/math/INEXACT - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 422 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.8853748109312743 - f64.const -0.4256366193294525 - global.get $std/math/INEXACT - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 423 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.7460778114110673 - f64.const 0.13986606895923615 - global.get $std/math/INEXACT - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 424 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1.5707963267948966 - f64.const -0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 427 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1.5707963267948966 - f64.const 0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 428 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 429 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 430 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000000000000002 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 431 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000000000000002 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 432 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 433 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 434 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 435 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5073043929119148 - f64.const 0.5320538997772349 - f64.const -0.16157317161560059 - global.get $std/math/INEXACT - call $std/math/test_asin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 436 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 445 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 446 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 447 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 448 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 449 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.7234652042388916 - f32.const -0.1307632476091385 - global.get $std/math/INEXACT - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 450 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.41873374581336975 - f32.const 0.3161141574382782 - global.get $std/math/INEXACT - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 451 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.5965113639831543 - f32.const -0.4510819613933563 - global.get $std/math/INEXACT - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 452 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.8853747844696045 - f32.const 0.02493886835873127 - global.get $std/math/INEXACT - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 453 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.7460777759552002 - f32.const 0.2515012323856354 - global.get $std/math/INEXACT - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 454 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1.5707963705062866 - f32.const 0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 457 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1.5707963705062866 - f32.const -0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 458 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 459 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 460 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000001192092896 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 461 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000001192092896 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 462 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 463 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 464 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 465 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5004770159721375 - f32.const 0.5241496562957764 - f32.const -0.29427099227905273 - global.get $std/math/INEXACT - call $std/math/test_asinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 466 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -2.784729878387861 - f64.const -0.4762189984321594 - global.get $std/math/INEXACT - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 478 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 2.175213389013164 - f64.const -0.02728751301765442 - global.get $std/math/INEXACT - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 479 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.822706083697696 - f64.const 0.20985257625579834 - global.get $std/math/INEXACT - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 480 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -2.575619446591922 - f64.const 0.3113134205341339 - global.get $std/math/INEXACT - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 481 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 2.9225114951048674 - f64.const 0.4991756081581116 - global.get $std/math/INEXACT - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 482 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.6212462762707166 - f64.const -0.4697347581386566 - global.get $std/math/INEXACT - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 483 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.39615990393192035 - f64.const -0.40814438462257385 - global.get $std/math/INEXACT - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 484 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5357588870255474 - f64.const 0.3520713150501251 - global.get $std/math/INEXACT - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 485 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.7123571263197349 - f64.const 0.13371451199054718 - global.get $std/math/INEXACT - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 486 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.635182348903198 - f64.const 0.04749670997262001 - global.get $std/math/INEXACT - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 487 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 490 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 491 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 492 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 493 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_asinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 494 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -2.7847299575805664 - f32.const -0.14418013393878937 - global.get $std/math/INEXACT - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 523 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 2.17521333694458 - f32.const -0.020796965807676315 - global.get $std/math/INEXACT - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 524 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.8227059841156006 - f32.const 0.44718533754348755 - global.get $std/math/INEXACT - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 525 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -2.5756194591522217 - f32.const -0.14822272956371307 - global.get $std/math/INEXACT - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 526 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 2.922511577606201 - f32.const 0.14270681142807007 - global.get $std/math/INEXACT - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 527 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.6212462782859802 - f32.const 0.3684912919998169 - global.get $std/math/INEXACT - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 528 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.39615991711616516 - f32.const -0.13170306384563446 - global.get $std/math/INEXACT - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 529 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.535758912563324 - f32.const 0.08184859901666641 - global.get $std/math/INEXACT - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 530 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.7123571038246155 - f32.const -0.14270737767219543 - global.get $std/math/INEXACT - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 531 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.6351823210716248 - f32.const 0.2583143711090088 - global.get $std/math/INEXACT - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 532 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 535 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 536 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 537 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 538 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_asinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 539 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -1.4474613762633468 - f64.const 0.14857111871242523 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 551 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 1.344597927114538 - f64.const -0.08170335739850998 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 552 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -1.4520463463295539 - f64.const -0.07505480200052261 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 553 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -1.4188758658752532 - f64.const -0.057633496820926666 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 554 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 1.463303145448706 - f64.const 0.1606956422328949 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 555 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.5847550670238325 - f64.const 0.4582556486129761 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 556 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.3861864177552131 - f64.const -0.2574281692504883 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 557 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5118269531628881 - f64.const -0.11444277316331863 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 558 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.6587802431653822 - f64.const -0.11286488175392151 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 559 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.5963307826973472 - f64.const -0.2182842344045639 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 560 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 563 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 564 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0.7853981633974483 - f64.const -0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 565 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0.7853981633974483 - f64.const 0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 566 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1.5707963267948966 - f64.const -0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 567 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -1.5707963267948966 - f64.const 0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 568 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 569 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6929821535674624 - f64.const 0.6060004555152562 - f64.const -0.17075790464878082 - global.get $std/math/INEXACT - call $std/math/test_atan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 570 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -1.4474613666534424 - f32.const 0.12686480581760406 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 579 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 1.3445979356765747 - f32.const 0.16045434772968292 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 580 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -1.4520463943481445 - f32.const -0.39581751823425293 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 581 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -1.418875813484192 - f32.const 0.410570353269577 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 582 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 1.4633032083511353 - f32.const 0.48403501510620117 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 583 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.5847550630569458 - f32.const 0.2125193476676941 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 584 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.386186420917511 - f32.const 0.18169628083705902 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 585 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.5118269920349121 - f32.const 0.3499770760536194 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 586 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.6587802171707153 - f32.const -0.2505330741405487 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 587 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.5963307619094849 - f32.const 0.17614826560020447 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 588 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 591 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 592 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0.7853981852531433 - f32.const 0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 593 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0.7853981852531433 - f32.const -0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 594 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1.5707963705062866 - f32.const 0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 595 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -1.5707963705062866 - f32.const -0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 596 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_atanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 597 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 609 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 610 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 611 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 612 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 613 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.7963404371347943 - f64.const 0.21338365972042084 - global.get $std/math/INEXACT - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 614 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.43153570730602897 - f64.const -0.4325666129589081 - global.get $std/math/INEXACT - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 615 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.6354006111644578 - f64.const -0.06527865678071976 - global.get $std/math/INEXACT - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 616 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 1.0306085575277995 - f64.const 0.14632052183151245 - global.get $std/math/INEXACT - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 617 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.8268179645205255 - f64.const 0.1397128701210022 - global.get $std/math/INEXACT - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 618 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 621 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 622 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 623 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 624 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 625 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 626 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.neg - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 627 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 628 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 629 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.3552527156068805e-20 - f64.const 1.3552527156068805e-20 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 630 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.332636185032189e-302 - f64.const 9.332636185032189e-302 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 631 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.562684646268003e-309 - f64.const 5.562684646268003e-309 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 632 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5.562684646268003e-309 - f64.const -5.562684646268003e-309 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 633 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8988465674311579538646525e283 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_atanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 634 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 643 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 644 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 645 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 646 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 647 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.7963404059410095 - f32.const 0.19112196564674377 - global.get $std/math/INEXACT - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 648 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.4315357208251953 - f32.const -0.05180925130844116 - global.get $std/math/INEXACT - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 649 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.635400652885437 - f32.const 0.11911056190729141 - global.get $std/math/INEXACT - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 650 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 1.0306085348129272 - f32.const 0.1798270344734192 - global.get $std/math/INEXACT - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 651 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.8268179297447205 - f32.const 0.11588983237743378 - global.get $std/math/INEXACT - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 652 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 655 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 656 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 657 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 658 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 659 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 660 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 661 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 662 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 663 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.3552527156068805e-20 - f32.const 1.3552527156068805e-20 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 664 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 7.888609052210118e-31 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 665 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.938735877055719e-39 - f32.const 2.938735877055719e-39 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 666 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.938735877055719e-39 - f32.const -2.938735877055719e-39 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 667 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1701411834604692317316873e14 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_atanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 668 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const -1.0585895402489023 - f64.const 0.09766263514757156 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 680 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const 2.6868734126013067 - f64.const 0.35833948850631714 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 681 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const -1.889300091849528 - f64.const -0.46235957741737366 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 682 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const -0.9605469021111489 - f64.const -0.21524477005004883 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 683 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const 1.0919123946142109 - f64.const 0.3894443213939667 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 684 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const -1.468508500616424 - f64.const -0.448591411113739 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 685 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const 1.5641600512601268 - f64.const 0.3784842789173126 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 686 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const -0.10281658910678508 - f64.const -0.13993260264396667 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 687 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 0.29697974004493516 - f64.const 0.44753071665763855 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 688 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const -1.5131612053303916 - f64.const 0.39708876609802246 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 689 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 692 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const 3.141592653589793 - f64.const -0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 693 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const 3.141592653589793 - f64.const -0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 694 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.neg - f64.const 3.141592653589793 - f64.const -0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 695 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 696 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 697 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 698 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const -3.141592653589793 - f64.const 0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 699 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const -3.141592653589793 - f64.const 0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 700 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.neg - f64.const -3.141592653589793 - f64.const 0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 701 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 702 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 703 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const -1.5707963267948966 - f64.const 0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 704 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const -1.5707963267948966 - f64.const 0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 705 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 1.5707963267948966 - f64.const -0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 706 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -0 - f64.const 1.5707963267948966 - f64.const -0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 707 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 708 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 709 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.neg - f64.const -3.141592653589793 - f64.const 0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 710 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.neg - f64.const 3.141592653589793 - f64.const -0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 711 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const 1.5707963267948966 - f64.const -0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 712 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 0 - f64.const -1.5707963267948966 - f64.const 0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 713 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0.7853981633974483 - f64.const -0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 714 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.neg - f64.const 2.356194490192345 - f64.const -0.20682445168495178 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 715 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.const -0.7853981633974483 - f64.const 0.27576595544815063 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 716 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const -2.356194490192345 - f64.const 0.20682445168495178 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 717 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1125369292536007e-308 - f64.const 1 - f64.const 1.1125369292536007e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 718 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 8988465674311579538646525e283 - f64.const 1.1125369292536007e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 719 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 8988465674311579538646525e283 - f64.const 1.668805393880401e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 720 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const -8988465674311579538646525e283 - f64.const 3.141592653589793 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_atan2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 721 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const -1.0585895776748657 - f32.const -0.22352588176727295 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 730 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const 2.686873435974121 - f32.const 0.09464472532272339 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 731 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const -1.8893001079559326 - f32.const -0.21941901743412018 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 732 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const -0.9605468511581421 - f32.const 0.46015575528144836 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 733 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const 1.0919123888015747 - f32.const -0.05708503723144531 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 734 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const -1.4685084819793701 - f32.const 0.19611206650733948 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 735 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const 1.5641601085662842 - f32.const 0.48143187165260315 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 736 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const -0.10281659662723541 - f32.const -0.4216274917125702 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 737 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 0.29697975516319275 - f32.const 0.2322007566690445 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 738 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const -1.5131611824035645 - f32.const 0.16620726883411407 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 739 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 742 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const 3.1415927410125732 - f32.const 0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 743 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -1 - f32.const 3.1415927410125732 - f32.const 0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 744 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.neg - f32.const 3.1415927410125732 - f32.const 0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 745 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 746 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 747 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 748 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const -3.1415927410125732 - f32.const -0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 749 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const -3.1415927410125732 - f32.const -0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 750 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.neg - f32.const -3.1415927410125732 - f32.const -0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 751 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 752 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 753 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const -1.5707963705062866 - f32.const -0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 754 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const -1.5707963705062866 - f32.const -0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 755 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 1.5707963705062866 - f32.const 0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 756 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -0 - f32.const 1.5707963705062866 - f32.const 0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 757 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 758 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 759 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.neg - f32.const -3.1415927410125732 - f32.const -0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 760 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.neg - f32.const 3.1415927410125732 - f32.const 0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 761 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const 1.5707963705062866 - f32.const 0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 762 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 0 - f32.const -1.5707963705062866 - f32.const -0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 763 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0.7853981852531433 - f32.const 0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 764 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.neg - f32.const 2.356194496154785 - f32.const 0.02500828728079796 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 765 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.const -0.7853981852531433 - f32.const -0.3666777014732361 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 766 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const -2.356194496154785 - f32.const -0.02500828728079796 - global.get $std/math/INEXACT - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 767 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.877471754111438e-39 - f32.const 1 - f32.const 5.877471754111438e-39 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 768 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1701411834604692317316873e14 - f32.const 5.877471754111438e-39 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_atan2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 769 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -2.0055552545020245 - f64.const 0.46667951345443726 - global.get $std/math/INEXACT - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 781 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 1.6318162410515635 - f64.const -0.08160271495580673 - global.get $std/math/INEXACT - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 782 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.031293910673361 - f64.const -0.048101816326379776 - global.get $std/math/INEXACT - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 783 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -1.8692820012204925 - f64.const 0.08624018728733063 - global.get $std/math/INEXACT - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 784 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 2.100457720859702 - f64.const -0.2722989022731781 - global.get $std/math/INEXACT - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 785 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.8715311470455973 - f64.const 0.4414918124675751 - global.get $std/math/INEXACT - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 786 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.740839030300223 - f64.const 0.016453813761472702 - global.get $std/math/INEXACT - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 787 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.8251195400559286 - f64.const 0.30680638551712036 - global.get $std/math/INEXACT - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 788 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.9182102478959914 - f64.const 0.06543998420238495 - global.get $std/math/INEXACT - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 789 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.8788326906580094 - f64.const -0.2016713172197342 - global.get $std/math/INEXACT - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 790 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 793 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 794 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 795 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 796 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 797 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.313225746154785e-10 - f64.const 0.0009765625 - f64.const 0 - i32.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 798 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9.313225746154785e-10 - f64.const -0.0009765625 - f64.const 0 - i32.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 799 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 800 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 801 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8 - f64.const 2 - f64.const 0 - i32.const 0 - call $std/math/test_cbrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 802 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -2.0055553913116455 - f32.const -0.44719240069389343 - global.get $std/math/INEXACT - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 811 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 1.6318162679672241 - f32.const 0.44636252522468567 - global.get $std/math/INEXACT - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 812 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.0312938690185547 - f32.const 0.19483426213264465 - global.get $std/math/INEXACT - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 813 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -1.8692820072174072 - f32.const -0.17075514793395996 - global.get $std/math/INEXACT - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 814 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 2.1004576683044434 - f32.const -0.36362043023109436 - global.get $std/math/INEXACT - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 815 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.8715311288833618 - f32.const -0.12857209146022797 - global.get $std/math/INEXACT - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 816 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.7408390641212463 - f32.const -0.4655757546424866 - global.get $std/math/INEXACT - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 817 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.8251195549964905 - f32.const 0.05601907894015312 - global.get $std/math/INEXACT - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 818 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.9182102680206299 - f32.const 0.45498204231262207 - global.get $std/math/INEXACT - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 819 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.8788326978683472 - f32.const -0.22978967428207397 - global.get $std/math/INEXACT - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 820 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 823 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 824 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 825 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 826 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 827 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.313225746154785e-10 - f32.const 0.0009765625 - f32.const 0 - i32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 828 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -9.313225746154785e-10 - f32.const -0.0009765625 - f32.const 0 - i32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 829 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 830 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 831 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 8 - f32.const 2 - f32.const 0 - i32.const 0 - call $std/math/test_cbrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 832 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -8 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 844 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 5 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 845 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -8 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 846 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -6 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 847 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 10 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 848 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 849 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 850 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 851 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 852 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 853 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 856 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 857 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 858 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 859 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 860 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 861 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 862 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 863 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 864 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const 2 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 865 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 866 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 867 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.9999923706054688 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 868 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.888609052210118e-31 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 869 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 870 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 871 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 872 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 873 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 874 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 875 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 876 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 877 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 878 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 879 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const 2 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 880 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 881 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 882 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.9999923706054688 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 883 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.888609052210118e-31 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 884 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 885 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 886 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 887 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 888 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 889 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 890 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 891 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 892 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 893 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 894 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const 2 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 895 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 896 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 897 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.9999923706054688 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 898 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.888609052210118e-31 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 899 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceil - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 900 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -8 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 909 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 5 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 910 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -8 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 911 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -6 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 912 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 10 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 913 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 914 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 915 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 916 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 917 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 918 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 921 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 922 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 923 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 924 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 925 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 926 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 927 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 928 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 929 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const 2 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 930 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const -1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 931 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 932 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.9999923706054688 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 933 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 934 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 935 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 936 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 937 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 938 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 939 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 940 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 941 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 942 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 943 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 944 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const 2 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 945 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const -1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 946 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 947 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.9999923706054688 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 948 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 949 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 950 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 951 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 952 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 953 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 954 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 955 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 956 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 957 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 958 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 959 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const 2 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 960 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const -1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 961 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 962 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.9999923706054688 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 963 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 964 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_ceilf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 965 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -0.21126281599887137 - f64.const -0.10962469130754471 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 976 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -0.35895602297578955 - f64.const -0.10759828239679337 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 977 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -0.503333091765516 - f64.const -0.021430473774671555 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 978 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 0.9692853212503283 - f64.const -0.4787876307964325 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 979 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const -0.9875878064788627 - f64.const 0.4880668818950653 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 980 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.7887730869248576 - f64.const 0.12708666920661926 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 981 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const 0.9184692397007294 - f64.const -0.26120713353157043 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 982 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.8463190467415896 - f64.const -0.302586168050766 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 983 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.7150139289952383 - f64.const -0.08537746220827103 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 984 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const 0.7783494994757447 - f64.const 0.30890750885009766 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 985 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 988 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 989 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 990 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 991 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 992 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0.5403023058681398 - f64.const 0.4288286566734314 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 993 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - f64.const -0.4161468365471424 - f64.const -0.35859397053718567 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 994 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3 - f64.const -0.9899924966004454 - f64.const 0.3788451552391052 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 995 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4 - f64.const -0.6536436208636119 - f64.const -0.23280560970306396 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 996 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5 - f64.const 0.28366218546322625 - f64.const -0.3277357816696167 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 997 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.1 - f64.const 0.9950041652780258 - f64.const 0.49558526277542114 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 998 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.2 - f64.const 0.9800665778412416 - f64.const -0.02407640963792801 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 999 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.3 - f64.const 0.955336489125606 - f64.const -0.37772229313850403 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1000 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.4 - f64.const 0.9210609940028851 - f64.const 0.25818485021591187 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1001 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 0.8775825618903728 - f64.const 0.3839152157306671 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1002 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3641409746639015e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1003 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1820704873319507e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1004 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1005 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5e-324 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1006 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3.14 - f64.const -0.9999987317275395 - f64.const 0.3855516016483307 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1007 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8988465674311579538646525e283 - f64.const -0.826369834614148 - f64.const -0.3695965111255646 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1008 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const -0.9999876894265599 - f64.const 0.23448343575000763 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1009 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8988465674311579538646525e283 - f64.const -0.826369834614148 - f64.const -0.3695965111255646 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1010 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.14 - f64.const -0.9999987317275395 - f64.const 0.3855516016483307 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1011 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.1415 - f64.const -0.9999999957076562 - f64.const -0.30608975887298584 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1012 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.141592 - f64.const -0.9999999999997864 - f64.const 0.15403328835964203 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1013 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.14159265 - f64.const -1 - f64.const -0.02901807427406311 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1014 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.1415926535 - f64.const -1 - f64.const -1.8155848010792397e-05 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1015 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.141592653589 - f64.const -1 - f64.const -1.4169914130945926e-09 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1016 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.14159265358979 - f64.const -1 - f64.const -2.350864897985184e-14 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1017 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.141592653589793 - f64.const -1 - f64.const -3.377158741883318e-17 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1018 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.57 - f64.const 7.963267107332633e-04 - f64.const 0.2968159317970276 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1019 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.570796 - f64.const 3.2679489653813835e-07 - f64.const -0.32570895552635193 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1020 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5707963267 - f64.const 9.489659630678013e-11 - f64.const -0.27245646715164185 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1021 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.57079632679489 - f64.const 6.722570487708307e-15 - f64.const -0.10747683793306351 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1022 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5707963267948966 - f64.const 6.123233995736766e-17 - f64.const 0.12148229777812958 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1023 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6700635199486106 - f64.const 0.7837822193016158 - f64.const -0.07278502732515335 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1024 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5343890189437553 - f64.const 0.8605799719039517 - f64.const -0.48434028029441833 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1025 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.43999702754890085 - f64.const 0.9047529293001976 - f64.const 0.029777472838759422 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1026 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9902840844687313 - f64.const 0.5484523364480768 - f64.const 0.19765280187129974 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1027 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.45381447534338915 - f64.const 0.8987813902263783 - f64.const -0.017724866047501564 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1028 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.4609888813583589 - f64.const 0.8956130474713057 - f64.const 0.36449819803237915 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1029 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9285434097956422 - f64.const 0.5990009794292984 - f64.const -0.2899416387081146 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1030 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9109092124488352 - f64.const 0.6130276692774378 - f64.const -0.49353134632110596 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1031 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.8328600650359556 - f64.const 0.6727624710046357 - f64.const -0.36606088280677795 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1032 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9536201252203433 - f64.const 0.5787346183487084 - f64.const -0.17089833319187164 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1033 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.8726590065457699 - f64.const 0.6427919144259047 - f64.const -0.2744986116886139 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1034 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.18100447535968447 - f64.const 0.9836633656884893 - f64.const 3.0195272993296385e-03 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1035 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.356194490349839 - f64.const -0.7071067812979126 - f64.const -0.48278746008872986 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1036 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.356194490372272 - f64.const -0.7071067813137752 - f64.const -0.4866050183773041 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1037 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3561944902251115 - f64.const -0.707106781209717 - f64.const -0.3533952236175537 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1038 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3561944903149996 - f64.const -0.7071067812732775 - f64.const -0.41911986470222473 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1039 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3561944903603527 - f64.const -0.707106781305347 - f64.const -0.4706200063228607 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1040 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3561944903826197 - f64.const -0.7071067813210922 - f64.const -0.30618351697921753 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1041 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.356194490371803 - f64.const -0.7071067813134436 - f64.const -0.30564820766448975 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1042 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.356194490399931 - f64.const -0.7071067813333329 - f64.const -0.38845571875572205 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1043 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.356194490260191 - f64.const -0.707106781234522 - f64.const -0.23796851933002472 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1044 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3561944904043153 - f64.const -0.7071067813364332 - f64.const -0.3274589478969574 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1045 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0943951024759446 - f64.const -0.5000000000716629 - f64.const -0.41711342334747314 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1046 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.09439510243324 - f64.const -0.5000000000346797 - f64.const -0.3566164970397949 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1047 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0943951025133885 - f64.const -0.5000000001040902 - f64.const -0.2253485918045044 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1048 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0943951025466707 - f64.const -0.5000000001329135 - f64.const -0.12982259690761566 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1049 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.094395102413896 - f64.const -0.5000000000179272 - f64.const -0.15886764228343964 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1050 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0943951024223404 - f64.const -0.5000000000252403 - f64.const -0.266656756401062 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1051 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0943951024960477 - f64.const -0.5000000000890726 - f64.const -0.4652077853679657 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1052 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0943951025173315 - f64.const -0.500000000107505 - f64.const -0.46710994839668274 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1053 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.094395102405924 - f64.const -0.5000000000110234 - f64.const -0.2469603717327118 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1054 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.094395102428558 - f64.const -0.500000000030625 - f64.const -0.3799441158771515 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1055 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.513210770864056 - f64.const -0.6125076939987759 - f64.const 0.4989966154098511 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1056 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 6.802886129801017 - f64.const 0.8679677961345452 - f64.const 0.4972165524959564 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1057 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.171925393086408 - f64.const -0.9682027440424544 - f64.const -0.49827584624290466 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1058 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.854690112888573 - f64.const -0.8418535663818527 - f64.const 0.4974979758262634 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1059 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.213510813859608 - f64.const -0.9777659802838506 - f64.const -0.4995604455471039 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1060 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.782449081542151 - f64.const 0.07147156381293339 - f64.const 0.49858126044273376 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1061 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.500261332273616 - f64.const 0.34639017633458113 - f64.const -0.4996210038661957 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1062 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.121739418731588 - f64.const -0.9544341297541811 - f64.const 0.4982815086841583 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1063 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 6.784954020476316 - f64.const 0.8767332233166646 - f64.const -0.4988083839416504 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1064 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.770846542666664 - f64.const -0.7936984117400705 - f64.const 0.4999682903289795 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1065 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.313225746154785e-10 - f64.const 1 - f64.const 0.001953125 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1068 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9.313225746154785e-10 - f64.const 1 - f64.const 0.001953125 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1069 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1070 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072014e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1071 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1072 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5e-324 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1073 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1074 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1075 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-323 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1076 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.4e-323 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1077 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.562684646268003e-309 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1078 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1125369292536007e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1079 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072004e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1080 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507201e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1081 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507202e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1082 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072024e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1083 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.4501477170144003e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1084 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.450147717014403e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1085 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.450147717014406e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1086 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.900295434028806e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1087 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.450580596923828e-09 - f64.const 1 - f64.const 0.125 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1088 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.4901161193847656e-08 - f64.const 0.9999999999999999 - f64.const -1.850372590034581e-17 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1089 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.470348358154297e-08 - f64.const 0.999999999999999 - f64.const -1.4988010832439613e-15 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1090 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e-323 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1091 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.4e-323 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1092 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5.562684646268003e-309 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1093 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.1125369292536007e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1094 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072004e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1095 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507201e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1096 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507202e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1097 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072024e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1098 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.4501477170144003e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1099 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.450147717014403e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.450147717014406e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.900295434028806e-308 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.450580596923828e-09 - f64.const 1 - f64.const 0.125 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.4901161193847656e-08 - f64.const 0.9999999999999999 - f64.const -1.850372590034581e-17 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.470348358154297e-08 - f64.const 0.999999999999999 - f64.const -1.4988010832439613e-15 - global.get $std/math/INEXACT - call $std/math/test_cos - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/math/kPI - f64.const 2 - f64.div - call $~lib/math/NativeMath.cos - global.get $std/math/kPI - f64.const 2 - f64.div - call $~lib/bindings/Math/cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - global.get $std/math/kPI - f64.mul - f64.const 2 - f64.div - call $~lib/math/NativeMath.cos - f64.const 2 - global.get $std/math/kPI - f64.mul - f64.const 2 - f64.div - call $~lib/bindings/Math/cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.e+90 - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.cos - f64.const 1.e+90 - global.get $std/math/kPI - f64.mul - call $~lib/bindings/Math/cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1109 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3283064365386963e-10 - call $~lib/math/NativeMath.cos - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.3283064365386963e-10 - call $~lib/math/NativeMath.cos - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.15707963267948966 - call $~lib/math/NativeMath.cos - f64.const 0.9876883405951378 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7812504768371582 - call $~lib/math/NativeMath.cos - f64.const 0.7100335477927638 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.78125 - call $~lib/math/NativeMath.cos - f64.const 0.7100338835660797 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9238795325112867 - f64.const 0.39269908169872414 - call $~lib/math/NativeMath.cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9238795325112867 - f64.const -0.39269908169872414 - call $~lib/math/NativeMath.cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1125 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.725290298461914e-09 - call $~lib/math/NativeMath.cos - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1128 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9689124217106447 - f64.const 0.25 - call $~lib/math/NativeMath.cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1130 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.8775825618903728 - f64.const 0.5 - call $~lib/math/NativeMath.cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1131 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7073882691671998 - f64.const 0.785 - call $~lib/math/NativeMath.cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1132 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 6.123233995736766e-17 - f64.const 1.5707963267948966 - call $~lib/math/NativeMath.cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1134 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7071067811865474 - f64.const 7 - f64.const 4 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1136 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7071067811865477 - f64.const 9 - f64.const 4 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.7071067811865467 - f64.const 11 - f64.const 4 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1138 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.7071067811865471 - f64.const 13 - f64.const 4 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1139 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9367521275331447 - f64.const 1e6 - call $~lib/math/NativeMath.cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3.435757038074824e-12 - f64.const 1048575 - f64.const 2 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.cos - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1141 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -0.21126316487789154 - f32.const 0.48328569531440735 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1150 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -0.3589562177658081 - f32.const 0.042505208402872086 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -0.5033331513404846 - f32.const -0.1386195719242096 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1152 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 0.9692853689193726 - f32.const 0.1786951720714569 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1153 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const -0.9875878691673279 - f32.const 0.1389600932598114 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1154 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.7887731194496155 - f32.const 0.2989593744277954 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1155 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const 0.918469250202179 - f32.const 0.24250665307044983 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.8463190197944641 - f32.const -0.24033240973949432 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.7150139212608337 - f32.const -0.3372635245323181 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1158 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const 0.7783495187759399 - f32.const 0.16550153493881226 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1159 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1164 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1165 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1166 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.862645149230957e-09 - f32.const 1 - f32.const 1.4551915228366852e-11 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1169 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.862645149230957e-09 - f32.const 1 - f32.const 1.4551915228366852e-11 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1170 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754943508222875e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1171 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754943508222875e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1172 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1173 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.401298464324817e-45 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1174 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.802596928649634e-45 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1175 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.2611686178923354e-44 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1176 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.938735877055719e-39 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.877471754111438e-39 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1178 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754940705625946e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1179 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754942106924411e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1180 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.175494490952134e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1181 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754946310819804e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1182 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3509880009953429e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1183 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.350988701644575e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1184 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3509895424236536e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1185 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.70197740328915e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1186 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.450580596923828e-09 - f32.const 1 - f32.const 2.3283064365386963e-10 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1187 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.000244140625 - f32.const 1 - f32.const 0.25 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1188 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.00048828125 - f32.const 0.9999998807907104 - f32.const -3.973643103449831e-08 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1189 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.0009765625 - f32.const 0.9999995231628418 - f32.const -6.357828397085541e-07 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1190 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.802596928649634e-45 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1191 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.2611686178923354e-44 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1192 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.938735877055719e-39 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -5.877471754111438e-39 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1194 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754940705625946e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1195 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754942106924411e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1196 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.175494490952134e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1197 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754946310819804e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1198 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.3509880009953429e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.350988701644575e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1200 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.3509895424236536e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1201 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -4.70197740328915e-38 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1202 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.450580596923828e-09 - f32.const 1 - f32.const 2.3283064365386963e-10 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1203 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.000244140625 - f32.const 1 - f32.const 0.25 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1204 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.00048828125 - f32.const 0.9999998807907104 - f32.const -3.973643103449831e-08 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1205 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.0009765625 - f32.const 0.9999995231628418 - f32.const -6.357828397085541e-07 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1206 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 255.99993896484375 - f32.const -0.03985174745321274 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5033165 - f32.const 0.8471871614456177 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1210 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 421657440 - f32.const 0.6728929281234741 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1211 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2147483392 - f32.const 0.9610780477523804 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1212 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 68719476736 - f32.const 0.1694190502166748 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1213 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 549755813888 - f32.const 0.20735950767993927 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1214 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f32.MAX_VALUE - f32.const 0.8530210256576538 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1215 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -255.99993896484375 - f32.const -0.03985174745321274 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1216 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -5033165 - f32.const 0.8471871614456177 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1217 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -421657440 - f32.const 0.6728929281234741 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1218 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2147483392 - f32.const 0.9610780477523804 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1219 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -68719476736 - f32.const 0.1694190502166748 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1220 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -549755813888 - f32.const 0.20735950767993927 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1221 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f32.MAX_VALUE - f32.neg - f32.const 0.8530210256576538 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_cosf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1222 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 1593.5209938862329 - f64.const -0.38098856806755066 - global.get $std/math/INEXACT - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1233 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 38.56174928426729 - f64.const -0.2712278366088867 - global.get $std/math/INEXACT - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1234 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const 2182.630979595893 - f64.const 0.0817827582359314 - global.get $std/math/INEXACT - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1235 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 343.273849250879 - f64.const -0.429940402507782 - global.get $std/math/INEXACT - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1236 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 5291.779170005587 - f64.const -0.1592995822429657 - global.get $std/math/INEXACT - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1237 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 1.2272321957342842 - f64.const 0.23280741274356842 - global.get $std/math/INEXACT - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1238 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const 1.083808541871197 - f64.const -0.3960916996002197 - global.get $std/math/INEXACT - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1239 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 1.1619803583175077 - f64.const 0.37748390436172485 - global.get $std/math/INEXACT - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1240 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 1.3149236876276706 - f64.const 0.43587008118629456 - global.get $std/math/INEXACT - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1241 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const 1.2393413245934533 - f64.const 0.10201606154441833 - global.get $std/math/INEXACT - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1242 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1245 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1246 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1247 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1248 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_cosh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1249 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 1593.5216064453125 - f32.const 0.26242581009864807 - global.get $std/math/INEXACT - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1258 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 38.56174087524414 - f32.const -0.08168885856866837 - global.get $std/math/INEXACT - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1259 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const 2182.631103515625 - f32.const -0.02331414446234703 - global.get $std/math/INEXACT - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1260 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 343.2738037109375 - f32.const 0.20081493258476257 - global.get $std/math/INEXACT - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1261 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 5291.78173828125 - f32.const 0.36286723613739014 - global.get $std/math/INEXACT - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1262 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 1.2272322177886963 - f32.const 0.32777416706085205 - global.get $std/math/INEXACT - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1263 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const 1.0838085412979126 - f32.const -0.039848703891038895 - global.get $std/math/INEXACT - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1264 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 1.161980390548706 - f32.const 0.15274477005004883 - global.get $std/math/INEXACT - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1265 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 1.314923644065857 - f32.const -0.2387111485004425 - global.get $std/math/INEXACT - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1266 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const 1.2393412590026855 - f32.const -0.45791932940483093 - global.get $std/math/INEXACT - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1267 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1270 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1271 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1272 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1273 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_coshf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1274 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 3.137706068161745e-04 - f64.const -0.2599197328090668 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1286 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 77.11053017112141 - f64.const -0.02792675793170929 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1287 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const 2.290813384916323e-04 - f64.const -0.24974334239959717 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1288 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 1.4565661260931588e-03 - f64.const -0.4816822409629822 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1289 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 10583.558245524993 - f64.const 0.17696762084960938 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1290 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 1.9386384525571998 - f64.const -0.4964246451854706 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1291 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const 0.6659078892838025 - f64.const -0.10608318448066711 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1292 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 1.7537559518626311 - f64.const -0.39162111282348633 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1293 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 2.1687528885129246 - f64.const -0.2996125817298889 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1294 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const 0.5072437089402843 - f64.const 0.47261738777160645 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1295 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1298 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1299 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 2.718281828459045 - f64.const -0.3255307376384735 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1300 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0.36787944117144233 - f64.const 0.22389651834964752 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1301 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1302 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1303 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1304 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0397214889526365 - f64.const 2.828429155876411 - f64.const 0.18803080916404724 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1305 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0397214889526365 - f64.const 0.35355313670217847 - f64.const 0.2527272403240204 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1306 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0397210121154785 - f64.const 2.8284278071766122 - f64.const -0.4184139370918274 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1307 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0397214889526367 - f64.const 2.8284291558764116 - f64.const -0.22618377208709717 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1308 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MIN_VALUE - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1311 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MIN_VALUE - f64.neg - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1312 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4649454530587146735 - f64.reinterpret_i64 - i64.const 9218868437227405098 - f64.reinterpret_i64 - i64.const -4631092234375135232 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1314 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4649454530587146736 - f64.reinterpret_i64 - f64.const inf - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/OVERFLOW - i32.or - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1321 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4573606559926636463 - f64.reinterpret_i64 - global.get $~lib/builtins/f64.MIN_VALUE - i64.const 4602678819172646912 - f64.reinterpret_i64 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1322 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4573606559926636462 - f64.reinterpret_i64 - f64.const 0 - i64.const -4620693217682128896 - f64.reinterpret_i64 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1329 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4573929700241785646 - f64.reinterpret_i64 - i64.const 4503599627370620 - f64.reinterpret_i64 - i64.const 4598386411140284416 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1336 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4573929700241785645 - f64.reinterpret_i64 - i64.const 4503599627370108 - f64.reinterpret_i64 - i64.const 4503599627370108 - f64.reinterpret_i64 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1343 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4602685064124656555 - f64.reinterpret_i64 - i64.const 4610109149550689567 - f64.reinterpret_i64 - i64.const 4602678819172646912 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1350 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4603836184166978885 - f64.reinterpret_i64 - i64.const 4611122094629841017 - f64.reinterpret_i64 - i64.const 4602678819172646912 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1357 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4605718951180848880 - f64.reinterpret_i64 - i64.const 4612385506662149744 - f64.reinterpret_i64 - i64.const -4620693217682128896 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1364 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4605835761386121865 - f64.reinterpret_i64 - i64.const 4612453422537445296 - f64.reinterpret_i64 - i64.const 4602678819172646912 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1370 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4610006203169397430 - f64.reinterpret_i64 - i64.const 4617415291835269761 - f64.reinterpret_i64 - i64.const 4602678819172646912 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1376 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4610219797808568955 - f64.reinterpret_i64 - i64.const 4617693563882825047 - f64.reinterpret_i64 - i64.const 4602678819172646912 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1382 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4619182163989041060 - f64.reinterpret_i64 - i64.const 4650062712266849886 - f64.reinterpret_i64 - i64.const 4602678819172646912 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1389 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4622394943780502425 - f64.reinterpret_i64 - i64.const 4678652243157503230 - f64.reinterpret_i64 - i64.const 4602678819172646912 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1396 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4622613550143616215 - f64.reinterpret_i64 - i64.const 4680943662238555301 - f64.reinterpret_i64 - i64.const 4602678819172646912 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1403 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4622829325869063755 - f64.reinterpret_i64 - i64.const 4683793372338329074 - f64.reinterpret_i64 - i64.const 4602678819172646912 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1410 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4645970351893354075 - f64.reinterpret_i64 - i64.const 7289148599681560140 - f64.reinterpret_i64 - i64.const 4602678819172646912 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1417 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4647695036380671130 - f64.reinterpret_i64 - i64.const 7926454981994343700 - f64.reinterpret_i64 - i64.const -4620693217682128896 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1424 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4819432143425896336 - f64.reinterpret_i64 - i64.const 4607182418800017169 - f64.reinterpret_i64 - i64.const 4602678819172646912 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1431 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4819256221565452171 - f64.reinterpret_i64 - i64.const 4607182418800017163 - f64.reinterpret_i64 - i64.const -4620693217682128896 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1438 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 3.1377049162983894e-04 - f32.const -0.030193336308002472 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1452 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 77.11051177978516 - f32.const -0.2875460684299469 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1453 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const 2.2908132814336568e-04 - f32.const 0.2237040400505066 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1454 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 1.4565663877874613e-03 - f32.const 0.36469703912734985 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1455 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 10583.5634765625 - f32.const 0.45962104201316833 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1456 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 1.93863844871521 - f32.const 0.3568260967731476 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1457 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const 0.6659078598022461 - f32.const -0.38294991850852966 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1458 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 1.753756046295166 - f32.const 0.44355490803718567 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1459 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 2.168752908706665 - f32.const 0.24562469124794006 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1460 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const 0.5072436928749084 - f32.const -0.3974292278289795 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1461 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1464 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1465 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 2.7182817459106445 - f32.const -0.3462330996990204 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1466 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0.3678794503211975 - f32.const 0.3070148527622223 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1467 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1468 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1469 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1470 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 88.72283172607422 - f32.const 340279851902147610656242e15 - f32.const -0.09067153930664062 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1471 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 88.72283935546875 - f32.const inf - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/OVERFLOW - i32.or - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1472 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -103.97207641601562 - f32.const 1.401298464324817e-45 - f32.const 0.49999967217445374 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1473 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -103.97208404541016 - f32.const 0 - f32.const -0.49999651312828064 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1474 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.3465735614299774 - f32.const 1.4142135381698608 - f32.const 0.13922421634197235 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1475 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.3465735912322998 - f32.const 1.4142135381698608 - f32.const -0.21432916820049286 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1476 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.3465736210346222 - f32.const 1.4142136573791504 - f32.const 0.43211743235588074 - global.get $std/math/INEXACT - call $std/math/test_expf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1477 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -0.9996862293931839 - f64.const -0.2760058343410492 - global.get $std/math/INEXACT - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1489 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 76.11053017112141 - f64.const -0.02792675793170929 - global.get $std/math/INEXACT - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1490 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -0.9997709186615084 - f64.const 0.10052496194839478 - global.get $std/math/INEXACT - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1491 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -0.9985434338739069 - f64.const -0.27437829971313477 - global.get $std/math/INEXACT - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1492 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 10582.558245524993 - f64.const 0.17696762084960938 - global.get $std/math/INEXACT - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1493 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.9386384525571999 - f64.const 0.007150684483349323 - global.get $std/math/INEXACT - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1494 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.3340921107161975 - f64.const -0.21216636896133423 - global.get $std/math/INEXACT - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1495 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.7537559518626312 - f64.const 0.21675777435302734 - global.get $std/math/INEXACT - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1496 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 1.1687528885129248 - f64.const 0.4007748067378998 - global.get $std/math/INEXACT - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1497 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.4927562910597158 - f64.const -0.05476519837975502 - global.get $std/math/INEXACT - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1498 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1501 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1502 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1.7182818284590453 - f64.const 0.348938524723053 - global.get $std/math/INEXACT - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1503 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0.6321205588285577 - f64.const 0.11194825917482376 - global.get $std/math/INEXACT - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1504 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1505 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1506 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1507 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507201e-308 - f64.const 2.225073858507201e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1508 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507201e-308 - f64.const -2.225073858507201e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_expm1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1509 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -0.9996862411499023 - f32.const -0.19532723724842072 - global.get $std/math/INEXACT - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1518 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 76.11051177978516 - f32.const -0.2875460684299469 - global.get $std/math/INEXACT - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1519 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -0.9997709393501282 - f32.const -0.34686920046806335 - global.get $std/math/INEXACT - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1520 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -0.9985434412956238 - f32.const -0.1281939446926117 - global.get $std/math/INEXACT - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1521 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 10582.5634765625 - f32.const 0.45962104201316833 - global.get $std/math/INEXACT - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1522 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.9386383891105652 - f32.const -0.28634780645370483 - global.get $std/math/INEXACT - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1523 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.3340921103954315 - f32.const 0.23410017788410187 - global.get $std/math/INEXACT - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1524 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.7537559866905212 - f32.const -0.11289017647504807 - global.get $std/math/INEXACT - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1525 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 1.168752908706665 - f32.const 0.4912493824958801 - global.get $std/math/INEXACT - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1526 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.49275627732276917 - f32.const 0.20514154434204102 - global.get $std/math/INEXACT - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1527 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1530 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1531 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1.718281865119934 - f32.const 0.3075338304042816 - global.get $std/math/INEXACT - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1532 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0.6321205496788025 - f32.const 0.15350742638111115 - global.get $std/math/INEXACT - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1533 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1534 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1535 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_expm1f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1536 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4602641186874283791 - f64.reinterpret_i64 - i64.const 4570745787852977234 - f64.reinterpret_i64 - i64.const 4593785391990964224 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1548 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4616578323568966759 - f64.reinterpret_i64 - i64.const 4626414420249767698 - f64.reinterpret_i64 - i64.const 4584516730696499200 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1549 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4602464091242371353 - f64.reinterpret_i64 - i64.const 4569061019426535842 - f64.reinterpret_i64 - i64.const -4624115860477313024 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1550 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4604332007749985084 - f64.reinterpret_i64 - i64.const 4577384368165340865 - f64.reinterpret_i64 - i64.const -4624546881383432192 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1551 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4621406507342668262 - f64.reinterpret_i64 - i64.const 4648630624867737726 - f64.reinterpret_i64 - i64.const -4632306693286395904 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1552 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4604137858433287319 - f64.reinterpret_i64 - i64.const 4609804680828834897 - f64.reinterpret_i64 - i64.const -4629668059727003648 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1553 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4622375691843501615 - f64.reinterpret_i64 - i64.const 4604970224741804156 - f64.reinterpret_i64 - i64.const -4625474567475822592 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1554 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4603235101512779211 - f64.reinterpret_i64 - i64.const 4609326441051132446 - f64.reinterpret_i64 - i64.const 4598566683265728512 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1555 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4605148163534189634 - f64.reinterpret_i64 - i64.const 4610380807161541490 - f64.reinterpret_i64 - i64.const -4641791869250961408 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1556 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4619083057392940530 - f64.reinterpret_i64 - i64.const 4603802020283029177 - f64.reinterpret_i64 - i64.const -4624080701338157056 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1557 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - i64.const 4607182418800017408 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1560 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - i64.const 4607182418800017408 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1561 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - i64.const 4611686018427387904 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1562 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - i64.const 4602678819172646912 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1563 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1564 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1565 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1566 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4611677222334365696 - f64.reinterpret_i64 - i64.const 4616177432330998198 - f64.reinterpret_i64 - i64.const 4594487510695936000 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1567 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4571172093576400077 - f64.reinterpret_i64 - i64.const 4826838566504112 - f64.reinterpret_i64 - i64.const -4626215863798726656 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1568 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4571171213967097856 - f64.reinterpret_i64 - i64.const 4503599627370496 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1569 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4571170334357795635 - f64.reinterpret_i64 - i64.const 4202007033009479 - f64.reinterpret_i64 - i64.const 4596318005893267456 - f64.reinterpret_i64 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1570 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4571162417874075648 - f64.reinterpret_i64 - i64.const 2251799813685248 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1571 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4652217535464420147 - f64.reinterpret_i64 - i64.const 9218265252038683278 - f64.reinterpret_i64 - i64.const 4600821605520637952 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1572 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4652218415073722368 - f64.reinterpret_i64 - f64.const inf - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1573 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4652218854878373478 - f64.reinterpret_i64 - f64.const inf - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1574 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4614253070214989087 - f64.reinterpret_i64 - i64.const 4621152157524017948 - f64.reinterpret_i64 - i64.const 4600753005229244416 - f64.reinterpret_i64 - global.get $std/math/INEXACT - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1575 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4571166815920586752 - f64.reinterpret_i64 - i64.const 3184525836262886 - f64.reinterpret_i64 - i64.const -4624614737571741696 - f64.reinterpret_i64 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1576 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4571162417874075648 - f64.reinterpret_i64 - i64.const 2251799813685248 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1577 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4571158019827564544 - f64.reinterpret_i64 - i64.const 1592262918131443 - f64.reinterpret_i64 - i64.const -4629118337199112192 - f64.reinterpret_i64 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1578 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4571153621781053440 - f64.reinterpret_i64 - i64.const 1125899906842624 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1579 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4571149223734542336 - f64.reinterpret_i64 - i64.const 562949953421312 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1580 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4570933719455498240 - f64.reinterpret_i64 - i64.const 1 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1581 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4570931520432242688 - f64.reinterpret_i64 - i64.const 1 - f64.reinterpret_i64 - i64.const 4598947915300339712 - f64.reinterpret_i64 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1582 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4570929321408987136 - f64.reinterpret_i64 - f64.const 0 - i64.const -4620693217682128896 - f64.reinterpret_i64 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1583 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4566650022153682944 - f64.reinterpret_i64 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_exp2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1584 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4602641186669199360 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4570745785645268992 - f64.reinterpret_i64 - f32.demote_f64 - i64.const -4633844389825740800 - f64.reinterpret_i64 - f32.demote_f64 - global.get $std/math/INEXACT - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1595 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4616578323332464640 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4626414419599949824 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4599818385449025536 - f64.reinterpret_i64 - f32.demote_f64 - global.get $std/math/INEXACT - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1596 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4602464091208941568 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4569061019225161728 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4594754148171251712 - f64.reinterpret_i64 - f32.demote_f64 - global.get $std/math/INEXACT - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1597 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4604332007919452160 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4577384368955195392 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4598362462939512832 - f64.reinterpret_i64 - f32.demote_f64 - global.get $std/math/INEXACT - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1598 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4621406507597037568 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4648630626491039744 - f64.reinterpret_i64 - f32.demote_f64 - i64.const -4629234484925956096 - f64.reinterpret_i64 - f32.demote_f64 - global.get $std/math/INEXACT - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1599 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4604137858217803776 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4609804680480948224 - f64.reinterpret_i64 - f32.demote_f64 - i64.const -4621992221413998592 - f64.reinterpret_i64 - f32.demote_f64 - global.get $std/math/INEXACT - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1600 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4622375691663441920 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4604970224490381312 - f64.reinterpret_i64 - f32.demote_f64 - i64.const -4622843720155267072 - f64.reinterpret_i64 - f32.demote_f64 - global.get $std/math/INEXACT - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1601 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4603235101726212096 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4609326441241247744 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4594599154612699136 - f64.reinterpret_i64 - f32.demote_f64 - global.get $std/math/INEXACT - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1602 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4605148163374841856 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4610380806857162752 - f64.reinterpret_i64 - f32.demote_f64 - i64.const -4622656250201505792 - f64.reinterpret_i64 - f32.demote_f64 - global.get $std/math/INEXACT - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1603 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4619083057528307712 - f64.reinterpret_i64 - f32.demote_f64 - i64.const 4603802020229414912 - f64.reinterpret_i64 - f32.demote_f64 - i64.const -4626672421506646016 - f64.reinterpret_i64 - f32.demote_f64 - global.get $std/math/INEXACT - call $std/math/test_exp2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1604 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -9 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1616 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 4 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1617 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -9 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1618 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -7 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1619 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 9 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1620 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1621 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1622 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1623 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1624 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1625 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1628 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1629 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1630 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1631 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1632 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1633 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1634 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1635 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1636 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1637 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const -2 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1638 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1639 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.9999923706054688 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1640 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.888609052210118e-31 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1641 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_floor - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1642 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -9 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1651 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 4 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1652 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -9 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1653 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -7 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1654 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 9 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1655 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1656 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1657 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1658 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1659 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1660 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1663 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1664 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1665 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1666 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1667 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1668 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1669 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1670 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1671 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1672 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const -2 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1673 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const 0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1674 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.9999923706054688 - f32.const -1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1675 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1676 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_floorf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1677 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const 9.25452742288464 - f64.const -0.31188681721687317 - global.get $std/math/INEXACT - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1691 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const 9.893305808328252 - f64.const 0.4593673348426819 - global.get $std/math/INEXACT - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1692 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const 8.825301797432132 - f64.const -0.1701754331588745 - global.get $std/math/INEXACT - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1693 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const 7.970265885519092 - f64.const -0.3176782727241516 - global.get $std/math/INEXACT - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1694 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const 10.441639651824575 - f64.const -0.2693633437156677 - global.get $std/math/INEXACT - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1695 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const 6.483936052542593 - f64.const 0.35618898272514343 - global.get $std/math/INEXACT - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1696 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const 7.859063309581766 - f64.const 0.08044655621051788 - global.get $std/math/INEXACT - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1697 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const 7.717156764899584 - f64.const 0.05178084969520569 - global.get $std/math/INEXACT - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1698 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 2.104006123874314 - f64.const -0.0918039008975029 - global.get $std/math/INEXACT - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1699 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const 0.5596880129062913 - f64.const 0.1383407711982727 - global.get $std/math/INEXACT - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1700 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3 - f64.const 4 - f64.const 5 - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1703 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3 - f64.const 4 - f64.const 5 - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1704 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4 - f64.const 3 - f64.const 5 - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1705 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4 - f64.const -3 - f64.const 5 - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1706 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3 - f64.const -4 - f64.const 5 - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1707 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const 0 - f64.const 1797693134862315708145274e284 - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1708 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const -0 - f64.const 1797693134862315708145274e284 - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1709 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const 0 - f64.const 5e-324 - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1710 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const -0 - f64.const 5e-324 - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1711 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1712 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1713 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1714 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1715 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 1 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1716 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.neg - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1717 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1718 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const inf - f64.neg - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1719 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1720 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1721 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1722 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_hypot - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1723 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const 9.254528045654297 - f32.const 0.2735958993434906 - global.get $std/math/INEXACT - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1732 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const 9.893305778503418 - f32.const 0.4530770778656006 - global.get $std/math/INEXACT - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1733 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const 8.825302124023438 - f32.const 0.30755728483200073 - global.get $std/math/INEXACT - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1734 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const 7.970265865325928 - f32.const 0.06785223633050919 - global.get $std/math/INEXACT - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1735 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const 10.44163990020752 - f32.const -0.26776307821273804 - global.get $std/math/INEXACT - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1736 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const 6.483936309814453 - f32.const 0.48381292819976807 - global.get $std/math/INEXACT - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1737 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const 7.859063148498535 - f32.const 0.07413065433502197 - global.get $std/math/INEXACT - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1738 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const 7.717156887054443 - f32.const 0.4940592646598816 - global.get $std/math/INEXACT - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1739 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 2.104006052017212 - f32.const -0.287089467048645 - global.get $std/math/INEXACT - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1740 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const 0.5596880316734314 - f32.const 0.4191940724849701 - global.get $std/math/INEXACT - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1741 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3 - f32.const 4 - f32.const 5 - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1744 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3 - f32.const 4 - f32.const 5 - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1745 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4 - f32.const 3 - f32.const 5 - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1746 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4 - f32.const -3 - f32.const 5 - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1747 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3 - f32.const -4 - f32.const 5 - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1748 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3402823466385288598117041e14 - f32.const 0 - f32.const 3402823466385288598117041e14 - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1749 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3402823466385288598117041e14 - f32.const -0 - f32.const 3402823466385288598117041e14 - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1750 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const 0 - f32.const 1.401298464324817e-45 - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1751 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const -0 - f32.const 1.401298464324817e-45 - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1752 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1753 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1754 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1755 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1756 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 1 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1757 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.neg - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1758 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1759 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const inf - f32.neg - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1760 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1761 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_hypotf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1762 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1774 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 1.4690809584224322 - f64.const -0.3412533402442932 - global.get $std/math/INEXACT - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1775 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1776 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1777 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 2.2264658498795615 - f64.const 0.3638114035129547 - global.get $std/math/INEXACT - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1778 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const -0.4125110252365137 - f64.const -0.29108747839927673 - global.get $std/math/INEXACT - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1779 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1780 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const -0.5766810183195862 - f64.const -0.10983199626207352 - global.get $std/math/INEXACT - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1781 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const -0.2559866591263865 - f64.const -0.057990044355392456 - global.get $std/math/INEXACT - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1782 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1783 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.neg - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1786 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.neg - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1787 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1788 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1789 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1790 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1791 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1792 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_log - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1793 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1802 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1803 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1804 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1805 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1806 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1807 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1808 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1809 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1812 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1813 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1814 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1815 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1816 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1817 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1818 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_logf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1819 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1831 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 0.6380137537120029 - f64.const -0.2088824063539505 - global.get $std/math/INEXACT - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1832 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1833 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1834 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 0.9669418327487274 - f64.const -0.06120431795716286 - global.get $std/math/INEXACT - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1835 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const -0.17915126198447093 - f64.const 0.39090874791145325 - global.get $std/math/INEXACT - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1836 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1837 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const -0.25044938407454437 - f64.const -0.3046841621398926 - global.get $std/math/INEXACT - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1838 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const -0.11117359349943837 - f64.const -0.31503361463546753 - global.get $std/math/INEXACT - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1839 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1840 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.neg - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1843 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.neg - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1844 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1845 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1846 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1847 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1848 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1849 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_log10 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1850 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1859 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 0.6380137205123901 - f32.const -0.20476758480072021 - global.get $std/math/INEXACT - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1860 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1861 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1862 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 0.9669418334960938 - f32.const -0.34273025393486023 - global.get $std/math/INEXACT - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1863 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const -0.1791512817144394 - f32.const -0.27078554034233093 - global.get $std/math/INEXACT - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1864 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1865 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const -0.25044935941696167 - f32.const 0.2126826047897339 - global.get $std/math/INEXACT - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1866 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const -0.1111735999584198 - f32.const 0.46515095233917236 - global.get $std/math/INEXACT - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1867 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1868 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1871 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1872 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1873 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1874 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1875 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1876 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1877 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_log10f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1878 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1890 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 1.6762064170601734 - f64.const 0.46188199520111084 - global.get $std/math/INEXACT - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1891 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1892 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1893 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 2.3289404168523826 - f64.const -0.411114901304245 - global.get $std/math/INEXACT - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1894 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.5080132114992477 - f64.const -0.29306045174598694 - global.get $std/math/INEXACT - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1895 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.5218931811663979 - f64.const -0.25825726985931396 - global.get $std/math/INEXACT - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1896 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.4458132279488102 - f64.const -0.13274887204170227 - global.get $std/math/INEXACT - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1897 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.5733227294648414 - f64.const 0.02716583013534546 - global.get $std/math/INEXACT - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1898 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -1.1355782978128564 - f64.const 0.2713092863559723 - global.get $std/math/INEXACT - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1899 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1902 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1903 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -7.888609052210118e-31 - f64.const 1.7763568394002505e-15 - global.get $std/math/INEXACT - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1904 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0.6931471805599453 - f64.const -0.2088811695575714 - global.get $std/math/INEXACT - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1905 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.neg - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1906 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1907 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1908 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_log1p - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1909 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1918 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 1.676206350326538 - f32.const -0.23014859855175018 - global.get $std/math/INEXACT - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1919 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1920 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1921 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 2.3289403915405273 - f32.const -0.29075589776039124 - global.get $std/math/INEXACT - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1922 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.5080131888389587 - f32.const -0.1386766880750656 - global.get $std/math/INEXACT - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1923 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.5218932032585144 - f32.const -0.08804433047771454 - global.get $std/math/INEXACT - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1924 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.44581323862075806 - f32.const -0.15101368725299835 - global.get $std/math/INEXACT - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1925 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.5733227133750916 - f32.const -0.10264533013105392 - global.get $std/math/INEXACT - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1926 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -1.1355782747268677 - f32.const -0.19879481196403503 - global.get $std/math/INEXACT - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1927 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1930 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1931 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -7.888609052210118e-31 - f32.const 3.308722450212111e-24 - global.get $std/math/INEXACT - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1932 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0.6931471824645996 - f32.const 0.031954795122146606 - global.get $std/math/INEXACT - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1933 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1934 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1935 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1936 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1937 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754942106924411e-38 - f32.const -1.1754942106924411e-38 - f32.const 4.930380657631324e-32 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_log1pf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1938 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1950 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 2.1194358133804485 - f64.const -0.10164877772331238 - global.get $std/math/INEXACT - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1951 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1952 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1953 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 3.2121112403298744 - f64.const -0.15739446878433228 - global.get $std/math/INEXACT - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1954 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const -0.5951276104207402 - f64.const 0.3321485221385956 - global.get $std/math/INEXACT - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1955 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1956 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const -0.8319748453044644 - f64.const 0.057555437088012695 - global.get $std/math/INEXACT - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1957 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const -0.36931068365537134 - f64.const -0.19838279485702515 - global.get $std/math/INEXACT - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1958 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1959 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.neg - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1962 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.neg - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1963 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1964 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1965 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1966 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1967 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1968 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_log2 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1969 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1978 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 2.1194357872009277 - f32.const 0.18271538615226746 - global.get $std/math/INEXACT - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1979 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1980 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1981 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 3.212111234664917 - f32.const -0.3188050389289856 - global.get $std/math/INEXACT - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1982 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const -0.5951276421546936 - f32.const 0.34231460094451904 - global.get $std/math/INEXACT - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1983 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1984 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const -0.8319748044013977 - f32.const -0.33473604917526245 - global.get $std/math/INEXACT - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1985 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const -0.3693107068538666 - f32.const 0.3278401792049408 - global.get $std/math/INEXACT - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1986 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1987 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1990 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1991 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1992 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1993 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1994 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1995 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1996 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_log2f - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1997 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const 4.535662560676869 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2009 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const 4.345239849338305 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2010 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const -2.763607337379588 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2011 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const 4.567535276842744 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2012 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const 9.267056966972586 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2013 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const 0.6620717923376739 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2014 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const 7.858890253041697 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2015 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const 7.67640268511754 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2016 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 2.0119025790324803 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2017 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const 0.03223983060263804 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2018 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2021 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2022 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2023 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2024 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2025 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2026 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2027 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2028 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2029 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2030 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2031 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const -1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2032 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2033 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2034 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2035 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2036 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2037 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2038 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2039 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2040 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2041 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.neg - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2042 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2043 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2044 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2045 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2046 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.neg - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2047 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2048 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2049 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2050 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2051 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2052 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2053 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2054 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2055 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2056 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2057 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 2 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2058 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0.5 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2059 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2060 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 2 - f64.const 2 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2061 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -0.5 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2062 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2063 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2064 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2065 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2066 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2067 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2068 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2069 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2070 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.neg - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2071 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.neg - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2072 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.neg - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2073 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2074 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const 0.5 - f64.const 1.75 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2075 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const 0.5 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2076 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const -0.5 - f64.const 1.75 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2077 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const -0.5 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_max - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2078 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const 4.535662651062012 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2087 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const 4.345239639282227 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2088 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const -2.7636072635650635 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2089 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const 4.567535400390625 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2090 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const 9.267057418823242 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2091 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const 0.6620717644691467 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2092 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const 7.858890056610107 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2093 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const 7.676402568817139 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2094 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 2.0119025707244873 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2095 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const 0.03223983198404312 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2096 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2099 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2109 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const -1 - f32.const 0.5 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -1 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2112 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -1 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2118 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2122 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2124 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.neg - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2125 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2126 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2127 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2128 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2129 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2130 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2131 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2132 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2133 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2134 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2135 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 2 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2136 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0.5 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2138 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 2 - f32.const 2 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2139 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -0.5 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2141 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2142 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2144 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2145 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2146 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2147 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2148 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.neg - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2149 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.neg - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2150 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.neg - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2152 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const 0.5 - f32.const 1.75 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2153 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const 0.5 - f32.const 0.5 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2154 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const -0.5 - f32.const 1.75 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2155 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const -0.5 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_maxf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const -8.06684839057968 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2168 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const -8.88799136300345 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2169 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const -8.38143342755525 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2170 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const -6.531673581913484 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2171 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const 4.811392084359796 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2172 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const -6.450045556060236 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2173 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const 0.05215452675006225 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2174 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const -0.792054511984896 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2175 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 0.615702673197924 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2176 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const -0.5587586823609152 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2180 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2181 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2182 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2183 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2184 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2185 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2186 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 1 - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2187 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2188 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2189 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2190 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2191 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2192 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2194 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2195 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -1 - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2196 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2197 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2198 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2200 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2201 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2202 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2203 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2204 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2205 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2206 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2207 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2208 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2210 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 0 - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2211 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2212 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2213 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2214 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -0 - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2215 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2216 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 2 - f64.const 2 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2217 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0.5 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2218 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2219 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 2 - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2220 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -0.5 - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2221 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2222 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2223 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2224 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2225 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2226 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2227 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2228 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2229 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2230 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2231 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2232 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2233 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const 0.5 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2234 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const 0.5 - f64.const -1.75 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2235 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const -0.5 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2236 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const -0.5 - f64.const -1.75 - f64.const 0 - i32.const 0 - call $std/math/test_min - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2237 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const -8.066848754882812 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2246 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const -8.887990951538086 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2247 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const -8.381433486938477 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2248 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const -6.531673431396484 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2249 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const 4.811392307281494 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2250 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const -6.450045585632324 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2251 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const 0.052154526114463806 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2252 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const -0.7920545339584351 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2253 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 0.6157026886940002 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2254 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const -0.5587586760520935 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2255 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2258 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2259 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 0.5 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2260 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 1 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2261 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2262 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2263 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2264 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 1 - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2265 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2266 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2267 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2268 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2269 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2270 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2271 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2272 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2273 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -1 - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2274 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2275 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2276 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2277 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2278 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2279 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2280 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2281 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2282 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2283 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2284 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2285 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2286 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2287 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2288 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 0 - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2289 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2290 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2291 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2292 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -0 - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2293 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2294 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 2 - f32.const 2 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2295 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0.5 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2296 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2297 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 2 - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2298 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -0.5 - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2299 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2300 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2301 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2302 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2303 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2304 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2305 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2306 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2307 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2308 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2309 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2310 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2311 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const 0.5 - f32.const 0.5 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2312 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const 0.5 - f32.const -1.75 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2313 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const -0.5 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2314 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const -0.5 - f32.const -1.75 - f32.const 0 - i32.const 0 - call $std/math/test_minf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2315 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const -3.531185829902812 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2329 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const 4.345239849338305 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2330 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const -0.09061141541648476 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2331 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const -1.9641383050707404 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2332 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const 4.45566488261279 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2333 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const -0.4913994250211714 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2334 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const 0.035711240532359426 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2335 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const -0.792054511984896 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2336 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 0.615702673197924 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2337 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const -0.0106815621160685 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2338 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2341 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2342 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2343 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2344 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2345 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2346 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2347 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const 1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2348 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2349 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const 1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2350 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2351 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 1 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2352 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2353 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2354 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2355 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const -1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2356 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2357 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2358 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2359 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const -1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2360 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const -1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2361 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - f64.const -1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2362 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const -1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2363 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2364 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2365 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2366 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2367 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2368 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2369 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.neg - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2370 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2371 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2372 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2373 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2374 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.neg - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2375 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2376 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2377 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2378 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2379 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2380 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2381 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2382 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2383 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2384 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2385 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 2 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2386 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0.5 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2387 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2388 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 2 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2389 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -0.5 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2390 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2391 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2392 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2393 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2394 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2395 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2396 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2397 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2398 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.neg - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2399 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.neg - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2400 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2401 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2402 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const 0.5 - f64.const 0.25 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2403 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const 0.5 - f64.const -0.25 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2404 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const -0.5 - f64.const 0.25 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2405 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const -0.5 - f64.const -0.25 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2406 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370496 - f64.reinterpret_i64 - i64.const 4503599627370496 - f64.reinterpret_i64 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2409 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370496 - f64.reinterpret_i64 - i64.const -9218868437227405312 - f64.reinterpret_i64 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2410 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9218868437227405312 - f64.reinterpret_i64 - i64.const 4503599627370496 - f64.reinterpret_i64 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2411 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9218868437227405312 - f64.reinterpret_i64 - i64.const -9218868437227405312 - f64.reinterpret_i64 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2412 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9218868437227405311 - f64.reinterpret_i64 - i64.const 9218868437227405311 - f64.reinterpret_i64 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2413 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9218868437227405311 - f64.reinterpret_i64 - i64.const -4503599627370497 - f64.reinterpret_i64 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2414 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4503599627370497 - f64.reinterpret_i64 - i64.const 9218868437227405311 - f64.reinterpret_i64 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2415 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4503599627370497 - f64.reinterpret_i64 - i64.const -4503599627370497 - f64.reinterpret_i64 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2416 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - f64.reinterpret_i64 - i64.const 4503599627370496 - f64.reinterpret_i64 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2419 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - f64.reinterpret_i64 - i64.const 9218868437227405311 - f64.reinterpret_i64 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2420 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - f64.reinterpret_i64 - i64.const -9218868437227405312 - f64.reinterpret_i64 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2421 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - f64.reinterpret_i64 - i64.const -4503599627370497 - f64.reinterpret_i64 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2422 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9223372036854775808 - f64.reinterpret_i64 - i64.const 4503599627370496 - f64.reinterpret_i64 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2423 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9223372036854775808 - f64.reinterpret_i64 - i64.const 9218868437227405311 - f64.reinterpret_i64 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2424 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9223372036854775808 - f64.reinterpret_i64 - i64.const -9218868437227405312 - f64.reinterpret_i64 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2425 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9223372036854775808 - f64.reinterpret_i64 - i64.const -4503599627370497 - f64.reinterpret_i64 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2426 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9218868437227405311 - f64.reinterpret_i64 - i64.const 9218868437227405310 - f64.reinterpret_i64 - i64.const 8980177656976769024 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2429 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4503599627370497 - f64.reinterpret_i64 - i64.const 9218868437227405310 - f64.reinterpret_i64 - i64.const -243194379878006784 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2430 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9218868437227405311 - f64.reinterpret_i64 - i64.const -9007199254740992 - f64.reinterpret_i64 - i64.const 9214364837600034814 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2432 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4503599627370497 - f64.reinterpret_i64 - i64.const -9007199254740992 - f64.reinterpret_i64 - i64.const -9007199254740994 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2433 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9218868437227405311 - f64.reinterpret_i64 - i64.const 9214364837600034815 - f64.reinterpret_i64 - i64.const 0 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2435 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4503599627370497 - f64.reinterpret_i64 - i64.const 9214364837600034815 - f64.reinterpret_i64 - i64.const -9223372036854775808 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2436 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9218868437227405311 - f64.reinterpret_i64 - i64.const -9007199254740994 - f64.reinterpret_i64 - i64.const 8980177656976769024 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2438 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4503599627370497 - f64.reinterpret_i64 - i64.const -9007199254740994 - f64.reinterpret_i64 - i64.const -243194379878006784 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2439 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9214364837600034816 - f64.reinterpret_i64 - i64.const 9218868437227405311 - f64.reinterpret_i64 - i64.const 9214364837600034816 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2441 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9007199254740992 - f64.reinterpret_i64 - i64.const 9218868437227405311 - f64.reinterpret_i64 - i64.const -9007199254740992 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2442 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9214364837600034815 - f64.reinterpret_i64 - i64.const -4503599627370497 - f64.reinterpret_i64 - i64.const 9214364837600034815 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2444 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9007199254740993 - f64.reinterpret_i64 - i64.const -4503599627370497 - f64.reinterpret_i64 - i64.const -9007199254740993 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2445 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9214364837600034814 - f64.reinterpret_i64 - i64.const 9218868437227405311 - f64.reinterpret_i64 - i64.const 9214364837600034814 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2447 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9007199254740994 - f64.reinterpret_i64 - i64.const 9218868437227405311 - f64.reinterpret_i64 - i64.const -9007199254740994 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2448 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9218868437227405310 - f64.reinterpret_i64 - i64.const -4503599627370497 - f64.reinterpret_i64 - i64.const 9218868437227405310 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2450 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4503599627370498 - f64.reinterpret_i64 - i64.const -4503599627370497 - f64.reinterpret_i64 - i64.const -4503599627370498 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2451 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9218868437227405310 - f64.reinterpret_i64 - i64.const 9214364837600034815 - f64.reinterpret_i64 - i64.const 9214364837600034813 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2453 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4503599627370498 - f64.reinterpret_i64 - i64.const 9214364837600034815 - f64.reinterpret_i64 - i64.const -9007199254740995 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2454 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4620130267728707584 - f64.reinterpret_i64 - f64.const 1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2456 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4619004367821864960 - f64.reinterpret_i64 - f64.const 1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2457 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4617878467915022336 - f64.reinterpret_i64 - f64.const 1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2458 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4616752568008179712 - f64.reinterpret_i64 - f64.const 1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2459 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4603241769126068224 - f64.reinterpret_i64 - f64.const 1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2460 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4604367669032910848 - f64.reinterpret_i64 - f64.const 1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2461 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4605493568939753472 - f64.reinterpret_i64 - f64.const 1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2462 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4606619468846596096 - f64.reinterpret_i64 - f64.const 1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2463 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370492 - f64.reinterpret_i64 - i64.const 4503599627370494 - f64.reinterpret_i64 - i64.const 4503599627370492 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2465 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370492 - f64.reinterpret_i64 - i64.const -9218868437227405314 - f64.reinterpret_i64 - i64.const 4503599627370492 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2466 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370495 - f64.reinterpret_i64 - i64.const 3 - f64.reinterpret_i64 - i64.const 0 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2467 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370495 - f64.reinterpret_i64 - i64.const 9007199254740991 - f64.reinterpret_i64 - i64.const 4503599627370495 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2468 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370495 - f64.reinterpret_i64 - i64.const 9218868437227405312 - f64.reinterpret_i64 - i64.const 4503599627370495 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2469 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370495 - f64.reinterpret_i64 - i64.const -9223372036854775805 - f64.reinterpret_i64 - i64.const 0 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2470 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370496 - f64.reinterpret_i64 - i64.const 3 - f64.reinterpret_i64 - i64.const 1 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2471 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370496 - f64.reinterpret_i64 - i64.const 4503599627370494 - f64.reinterpret_i64 - i64.const 2 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2472 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370496 - f64.reinterpret_i64 - i64.const 9007199254740991 - f64.reinterpret_i64 - i64.const 4503599627370496 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2473 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370496 - f64.reinterpret_i64 - i64.const -9223372036854775805 - f64.reinterpret_i64 - i64.const 1 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2474 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370497 - f64.reinterpret_i64 - i64.const 4503599627370494 - f64.reinterpret_i64 - i64.const 3 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2475 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370498 - f64.reinterpret_i64 - i64.const 3 - f64.reinterpret_i64 - i64.const 0 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2476 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370498 - f64.reinterpret_i64 - i64.const -9223372036854775805 - f64.reinterpret_i64 - i64.const 0 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2477 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370499 - f64.reinterpret_i64 - i64.const 3 - f64.reinterpret_i64 - i64.const 1 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2478 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370499 - f64.reinterpret_i64 - i64.const 4503599627370501 - f64.reinterpret_i64 - i64.const 4503599627370499 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2479 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370499 - f64.reinterpret_i64 - i64.const -9223372036854775805 - f64.reinterpret_i64 - i64.const 1 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2480 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370500 - f64.reinterpret_i64 - i64.const 4503599627370501 - f64.reinterpret_i64 - i64.const 4503599627370500 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2481 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4503599627370502 - f64.reinterpret_i64 - i64.const 4503599627370501 - f64.reinterpret_i64 - i64.const 1 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2482 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9007199254740991 - f64.reinterpret_i64 - i64.const 9007199254740992 - f64.reinterpret_i64 - i64.const 9007199254740991 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2483 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 45035996273704959 - f64.reinterpret_i64 - i64.const 40532396646334464 - f64.reinterpret_i64 - i64.const 40532396646334462 - f64.reinterpret_i64 - f64.const 0 - i32.const 0 - call $std/math/test_mod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2484 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const -3.531186103820801 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2493 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const 4.345239639282227 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2494 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const -0.09061169624328613 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2495 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const -1.9641380310058594 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2496 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const 4.455665111541748 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2497 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const -0.49139970541000366 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2498 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const 0.0357111394405365 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2499 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const -0.7920545339584351 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2500 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 0.6157026886940002 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2501 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const -0.010681532323360443 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2502 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2505 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2506 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 0.5 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2507 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 1 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2508 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2509 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2510 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const 1 - f32.const 0.5 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2511 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32.const 1 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2512 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2 - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2513 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const 1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2514 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2515 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2516 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2517 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2518 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2519 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const -1 - f32.const 0.5 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2520 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -1 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2521 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2522 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2523 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const -1 - f32.const 0.5 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2524 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32.const -1 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2525 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2 - f32.const -1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2526 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const -1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2527 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2528 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2529 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2530 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2531 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2532 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2533 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2534 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2535 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2536 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2537 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2538 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.neg - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2539 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2540 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2541 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2542 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2543 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2544 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2545 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2546 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2547 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2548 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2549 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 2 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2550 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0.5 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2551 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2552 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 2 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2553 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -0.5 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2554 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2555 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2556 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2557 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2558 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2559 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2560 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2561 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2562 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.neg - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2563 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.neg - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2564 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2565 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2566 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const 0.5 - f32.const 0.25 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2567 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const 0.5 - f32.const -0.25 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2568 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const -0.5 - f32.const 0.25 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2569 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const -0.5 - f32.const -0.25 - f32.const 0 - i32.const 0 - call $std/math/test_modf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2570 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2582 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const 2.1347118825587285e-06 - f64.const 0.3250160217285156 - global.get $std/math/INEXACT - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2583 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2584 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2585 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const 44909.29941512966 - f64.const -0.26659080386161804 - global.get $std/math/INEXACT - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2586 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2587 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const 1.1135177413458652 - f64.const -0.37168607115745544 - global.get $std/math/INEXACT - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2588 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2589 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 0.37690773521380183 - f64.const 0.32473301887512207 - global.get $std/math/INEXACT - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2590 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2591 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2594 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2595 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 3 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2596 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 2 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2597 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2598 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0.5 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2599 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2600 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2601 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0.5 - f64.const inf - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2602 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const inf - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2603 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -2 - f64.const inf - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2604 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -3 - f64.const inf - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2605 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -4 - f64.const inf - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2606 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.neg - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2607 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2608 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2609 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 3 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2610 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 2 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2611 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2612 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0.5 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2613 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2614 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2615 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0.5 - f64.const inf - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2616 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const inf - f64.neg - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2617 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -2 - f64.const inf - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2618 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -3 - f64.const inf - f64.neg - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2619 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -4 - f64.const inf - f64.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2620 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.neg - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2621 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2622 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2623 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2624 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2625 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2626 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2627 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2628 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2629 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2630 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2631 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2632 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -0 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2633 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2634 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2635 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2636 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 2 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2637 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2638 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -2 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2639 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -3 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2640 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0.5 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2641 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2642 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2643 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2644 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 3 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2645 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0.5 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2646 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -0.5 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2647 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -3 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2648 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 0.5 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2649 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 1.5 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2650 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 2 - f64.const 0.25 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2651 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 3 - f64.const -0.125 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2652 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const inf - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2653 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const inf - f64.neg - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2654 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2655 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const inf - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2656 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const inf - f64.neg - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2657 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2658 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2659 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const inf - f64.neg - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2660 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2661 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2662 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2663 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.neg - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2664 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 3 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2665 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 2 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2666 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2667 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0.5 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2668 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0.5 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2669 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2670 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -2 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2671 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2672 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2673 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2674 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 3 - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2675 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 2 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2676 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 1 - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2677 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 0.5 - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2678 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -0.5 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2679 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2680 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -2 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2681 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2682 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2683 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const 1 - f64.const -2 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2684 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const -1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_pow - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2685 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2688 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2689 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2690 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2691 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2692 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2693 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2694 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2695 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2697 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - call $~lib/math/NativeMath.pow - f64.const -0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2698 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1 - call $~lib/math/NativeMath.pow - f64.const -1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2699 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - call $~lib/math/NativeMath.pow - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2700 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 1 - call $~lib/math/NativeMath.pow - f64.const inf - f64.neg - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2701 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - call $~lib/math/NativeMath.pow - local.tee $0 - local.get $0 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2702 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2704 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const inf - f64.neg - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2705 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const -1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2706 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const 2 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2707 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2708 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2709 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const -0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2710 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - call $~lib/math/NativeMath.pow - local.tee $0 - local.get $0 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2711 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2713 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2714 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2715 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const 0.25 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2716 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2717 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2718 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 2 - call $~lib/math/NativeMath.pow - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2719 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 2 - call $~lib/math/NativeMath.pow - local.tee $0 - local.get $0 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2720 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2722 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2723 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0.5 - call $~lib/math/NativeMath.pow - local.tee $0 - local.get $0 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2724 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4 - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const 2 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2725 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2726 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2727 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2728 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0.5 - call $~lib/math/NativeMath.pow - local.tee $0 - local.get $0 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2729 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2738 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const 2.134714122803416e-06 - f32.const 0.1436440795660019 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2739 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2740 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2741 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const 44909.33203125 - f32.const -0.05356409028172493 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2742 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2743 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const 1.1135177612304688 - f32.const 0.19122089445590973 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2744 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2745 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 0.3769077658653259 - f32.const 0.337149053812027 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2746 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2747 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2750 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2751 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 3 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2752 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 2 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2753 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2754 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0.5 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2755 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2756 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2757 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0.5 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2758 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -1 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2759 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -2 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2760 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -3 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2761 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -4 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2762 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.neg - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2763 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2764 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2765 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 3 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2766 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 2 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2767 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2768 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0.5 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2769 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2770 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2771 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0.5 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2772 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2773 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -2 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2774 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -3 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2775 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -4 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2776 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.neg - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2777 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2778 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2779 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2780 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2781 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2782 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2783 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2784 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2785 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2786 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2787 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2788 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2789 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2790 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2791 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2792 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 2 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2793 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2794 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -2 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2795 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -3 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2796 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0.5 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2797 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2798 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2799 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2800 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 3 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2801 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0.5 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2802 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -0.5 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2803 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -3 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2804 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 0.5 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2805 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 1.5 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2806 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 2 - f32.const 0.25 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2807 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 3 - f32.const -0.125 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2808 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2809 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const inf - f32.neg - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2810 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2811 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2812 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const inf - f32.neg - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2813 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2814 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2815 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2816 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2817 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2818 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2819 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2820 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 3 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2821 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 2 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2822 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2823 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0.5 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2824 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0.5 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2825 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2826 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -2 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2827 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2828 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2829 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2830 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 3 - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2831 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 2 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2832 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 1 - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2833 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 0.5 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2834 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -0.5 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2835 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2836 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -2 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2837 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2838 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2839 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const 1 - f32.const -2 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2840 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const -1 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2841 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2844 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2845 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8388608 - f32.reinterpret_i32 - f32.const 1 - i32.const 8388608 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2846 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2139095040 - f32.reinterpret_i32 - f32.const 1 - i32.const -2139095040 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2847 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2139095039 - f32.reinterpret_i32 - f32.const 1 - i32.const 2139095039 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2848 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -8388609 - f32.reinterpret_i32 - f32.const 1 - i32.const -8388609 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2849 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - i32.const 2139095039 - f32.reinterpret_i32 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2851 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - i32.const 8388608 - f32.reinterpret_i32 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2852 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - i32.const 2139095039 - f32.reinterpret_i32 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2853 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - i32.const 1099431936 - f32.reinterpret_i32 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2854 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 2 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2855 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - i32.const 8388608 - f32.reinterpret_i32 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2856 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1081291571 - f32.reinterpret_i32 - i32.const 1120534528 - f32.reinterpret_i32 - i32.const -965944620 - f32.reinterpret_i32 - i32.const -1097905258 - f32.reinterpret_i32 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2858 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1100480512 - f32.reinterpret_i32 - i32.const 1084227584 - f32.reinterpret_i32 - i32.const 1243029772 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2860 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1047003136 - f32.reinterpret_i32 - i32.const 1084227584 - f32.reinterpret_i32 - i32.const -904453876 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2861 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1019150336 - f32.reinterpret_i32 - i32.const 1077936128 - f32.reinterpret_i32 - i32.const -891591550 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2862 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -996794368 - f32.reinterpret_i32 - i32.const 1073741824 - f32.reinterpret_i32 - i32.const 1236275976 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2863 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1089078126 - f32.reinterpret_i32 - i32.const 1099496040 - f32.reinterpret_i32 - i32.const 1477304923 - f32.reinterpret_i32 - i32.const -1105621615 - f32.reinterpret_i32 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2865 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1100378008 - f32.reinterpret_i32 - i32.const 1079284384 - f32.reinterpret_i32 - i32.const 1183148212 - f32.reinterpret_i32 - i32.const 1050397989 - f32.reinterpret_i32 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2866 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1089032095 - f32.reinterpret_i32 - i32.const 1092204185 - f32.reinterpret_i32 - i32.const 1295611234 - f32.reinterpret_i32 - i32.const -1109674586 - f32.reinterpret_i32 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2867 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1098680439 - f32.reinterpret_i32 - i32.const 1100245042 - f32.reinterpret_i32 - i32.const 1684334277 - f32.reinterpret_i32 - i32.const 1035731698 - f32.reinterpret_i32 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2868 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1090853857 - f32.reinterpret_i32 - i32.const 1054272066 - f32.reinterpret_i32 - i32.const 1075559602 - f32.reinterpret_i32 - i32.const 1008617886 - f32.reinterpret_i32 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2869 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1085970832 - f32.reinterpret_i32 - i32.const 1093100817 - f32.reinterpret_i32 - i32.const 1287904676 - f32.reinterpret_i32 - i32.const -1162174975 - f32.reinterpret_i32 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2870 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1075485704 - f32.reinterpret_i32 - i32.const 1099495801 - f32.reinterpret_i32 - i32.const 1247602305 - f32.reinterpret_i32 - i32.const 1050126003 - f32.reinterpret_i32 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2871 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1025308839 - f32.reinterpret_i32 - i32.const 1010328623 - f32.reinterpret_i32 - i32.const 1064748518 - f32.reinterpret_i32 - i32.const -1091052619 - f32.reinterpret_i32 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2872 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1085163537 - f32.reinterpret_i32 - i32.const 1098713353 - f32.reinterpret_i32 - i32.const 1389090779 - f32.reinterpret_i32 - i32.const -1093771829 - f32.reinterpret_i32 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2873 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1095625895 - f32.reinterpret_i32 - i32.const 1097793372 - f32.reinterpret_i32 - i32.const 1527074508 - f32.reinterpret_i32 - i32.const 1037429592 - f32.reinterpret_i32 - global.get $std/math/INEXACT - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2874 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2876 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2877 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2878 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2879 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - f32.reinterpret_i32 - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2880 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483647 - f32.reinterpret_i32 - f32.const 0 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2881 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2883 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2884 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2885 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 1 - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2886 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2888 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2889 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2890 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2891 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2892 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2893 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2894 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1065353217 - f32.reinterpret_i32 - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2896 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2897 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1082130431 - f32.reinterpret_i32 - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2898 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2899 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1065353217 - f32.reinterpret_i32 - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2901 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2902 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1082130431 - f32.reinterpret_i32 - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2903 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2904 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1065353215 - f32.reinterpret_i32 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2906 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - f32.reinterpret_i32 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2907 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2908 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1082130433 - f32.reinterpret_i32 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2909 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483647 - f32.reinterpret_i32 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2910 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2911 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - i32.const 1 - f32.reinterpret_i32 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2913 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - i32.const 1 - f32.reinterpret_i32 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2914 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - i32.const -8388609 - f32.reinterpret_i32 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2916 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - i32.const -2147483647 - f32.reinterpret_i32 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2917 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - i32.const -8388609 - f32.reinterpret_i32 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2918 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -2 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2919 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - i32.const -2147483647 - f32.reinterpret_i32 - f32.const inf - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2920 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2921 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - i32.const -1048051712 - f32.reinterpret_i32 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/DIVBYZERO - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2922 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - i32.const 1 - f32.reinterpret_i32 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2924 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - i32.const -2147483647 - f32.reinterpret_i32 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2925 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - i32.const 2139095039 - f32.reinterpret_i32 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2927 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - i32.const 1 - f32.reinterpret_i32 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2928 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - i32.const -8388609 - f32.reinterpret_i32 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2929 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - i32.const -2147483647 - f32.reinterpret_i32 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2930 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - i32.const 1084227584 - f32.reinterpret_i32 - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2931 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - i32.const -1063256064 - f32.reinterpret_i32 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2932 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - i32.const 1086324736 - f32.reinterpret_i32 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2933 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - i32.const -1061158912 - f32.reinterpret_i32 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2934 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - i32.const 1073741825 - f32.reinterpret_i32 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2936 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - i32.const 1065353217 - f32.reinterpret_i32 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2937 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483647 - f32.reinterpret_i32 - i32.const -1073741825 - f32.reinterpret_i32 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2938 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1054867456 - f32.reinterpret_i32 - i32.const 1134198784 - f32.reinterpret_i32 - f32.const inf - f32.neg - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/OVERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2940 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 0.5 - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2941 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - f32.reinterpret_i32 - f32.const 0.5 - i32.const 444596224 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2943 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - f32.reinterpret_i32 - f32.const 0.5 - i32.const 452984832 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2944 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2097152 - f32.reinterpret_i32 - f32.const 0.5 - i32.const 528482304 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2945 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4194304 - f32.reinterpret_i32 - f32.const -1 - i32.const 2130706432 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2946 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8388608 - f32.reinterpret_i32 - f32.const 0.5 - i32.const 536870912 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2947 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8388608 - f32.reinterpret_i32 - f32.const -1 - i32.const 2122317824 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2948 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16777216 - f32.reinterpret_i32 - f32.const -1 - i32.const 2113929216 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2949 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 25165824 - f32.reinterpret_i32 - f32.const 0.5 - i32.const 545259520 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2950 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 25165824 - f32.reinterpret_i32 - f32.const -1 - i32.const 2105540608 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2951 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 444596224 - f32.reinterpret_i32 - f32.const 2 - i32.const 2 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2952 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 545259520 - f32.reinterpret_i32 - f32.const 0.5 - i32.const 805306368 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2953 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 796917760 - f32.reinterpret_i32 - f32.const 2 - i32.const 528482304 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2954 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 805306368 - f32.reinterpret_i32 - f32.const 2 - i32.const 545259520 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2955 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 872415232 - f32.reinterpret_i32 - f32.const -1 - i32.const 1258291200 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2956 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 940572672 - f32.reinterpret_i32 - f32.const 0.5 - i32.const 1002438656 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2957 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 947912704 - f32.reinterpret_i32 - f32.const 0.5 - i32.const 1006632960 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2958 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 998244352 - f32.reinterpret_i32 - f32.const 0.5 - i32.const 1031798784 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2959 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1024458752 - f32.reinterpret_i32 - f32.const 0.5 - i32.const 1044381696 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2960 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.0625 - f32.const 0.5 - f32.const 0.25 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2961 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.25 - f32.const 2 - f32.const 0.0625 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2962 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2105540608 - f32.reinterpret_i32 - f32.const 0.5 - i32.const 1585446912 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2964 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2105540608 - f32.reinterpret_i32 - f32.const -1 - i32.const 25165824 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2965 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2113929216 - f32.reinterpret_i32 - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2966 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2113929216 - f32.reinterpret_i32 - f32.const -1 - i32.const 16777216 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2967 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2113929216 - f32.reinterpret_i32 - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2968 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2122317824 - f32.reinterpret_i32 - f32.const 0.5 - i32.const 1593835520 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2969 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2122317824 - f32.reinterpret_i32 - f32.const -1 - i32.const 8388608 - f32.reinterpret_i32 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2970 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2139095039 - f32.reinterpret_i32 - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2972 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2139095039 - f32.reinterpret_i32 - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2973 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2130706432 - f32.reinterpret_i32 - f32.const -2 - f32.const 0 - i32.const -1962934272 - f32.reinterpret_i32 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2975 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2130706432 - f32.reinterpret_i32 - i32.const -1069547520 - f32.reinterpret_i32 - f32.const 0 - f32.const -0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2976 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2130706432 - f32.reinterpret_i32 - i32.const -1015087104 - f32.reinterpret_i32 - f32.const 0 - f32.const -0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2977 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2130706432 - f32.reinterpret_i32 - f32.const -256 - f32.const 0 - f32.const -0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2978 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2130706432 - f32.reinterpret_i32 - i32.const -1014988800 - f32.reinterpret_i32 - f32.const 0 - f32.const -0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2979 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2130706432 - f32.reinterpret_i32 - i32.const -1014890496 - f32.reinterpret_i32 - f32.const 0 - f32.const -0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2980 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2130706432 - f32.reinterpret_i32 - i32.const -1014857728 - f32.reinterpret_i32 - f32.const 0 - f32.const -0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2981 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2130706432 - f32.reinterpret_i32 - i32.const -956301824 - f32.reinterpret_i32 - f32.const 0 - f32.const -0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2982 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2130706432 - f32.reinterpret_i32 - f32.const -32768 - f32.const 0 - f32.const -0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2983 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2139095032 - f32.reinterpret_i32 - f32.const -1 - i32.const 2097153 - f32.reinterpret_i32 - i32.const -1258291196 - f32.reinterpret_i32 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2984 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2139095032 - f32.reinterpret_i32 - f32.const -2 - f32.const 0 - i32.const -1979711480 - f32.reinterpret_i32 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2985 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -16777216 - f32.reinterpret_i32 - i32.const -956301824 - f32.reinterpret_i32 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2987 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -16777216 - f32.reinterpret_i32 - f32.const -32768 - f32.const 0 - f32.const -0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2988 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -8388616 - f32.reinterpret_i32 - f32.const -1 - i32.const -2145386495 - f32.reinterpret_i32 - i32.const 889192452 - f32.reinterpret_i32 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2989 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -8388616 - f32.reinterpret_i32 - f32.const -2 - f32.const 0 - i32.const -1979711480 - f32.reinterpret_i32 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_powf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2990 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/bindings/Math/random - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - f64.convert_i32_s - f64.const 1e6 - f64.lt - local.set $2 - local.get $2 - if - call $~lib/math/NativeMath.random - local.set $0 - local.get $0 - f64.const 0 - f64.ge - if (result i32) - local.get $0 - f64.const 1 - f64.lt - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 2999 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - call $~lib/bindings/Math/random - i64.reinterpret_f64 - local.set $3 - local.get $3 - call $~lib/math/NativeMath.seedRandom - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - f64.convert_i32_s - f64.const 1e6 - f64.lt - local.set $2 - local.get $2 - if - call $~lib/math/NativeMathf.random - local.set $4 - local.get $4 - f32.const 0 - f32.ge - if (result i32) - local.get $4 - f32.const 1 - f32.lt - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3007 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - f64.const -8.06684839057968 - f64.const -8 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3021 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 4 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3022 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -8 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3023 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -7 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3024 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 9 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3025 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3026 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3027 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3028 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3029 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3030 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3033 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3034 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3035 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3036 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3037 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3038 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3039 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3040 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3041 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 2 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3042 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3043 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3044 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3045 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3046 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.9999923706054688 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3047 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.888609052210118e-31 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3048 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3049 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -8 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3058 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 4 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3059 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -8 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3060 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -7 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3061 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 9 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3062 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3063 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3064 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3065 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3066 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3067 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3070 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3071 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3072 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3073 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3074 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3075 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3076 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3077 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3078 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 2 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3079 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_round - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3080 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3081 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const -1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3082 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3083 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.9999923706054688 - f32.const -1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3084 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3085 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_roundf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3086 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3097 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3098 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3099 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_sign - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3118 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_signf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $0 - local.get $0 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $0 - local.get $0 - f64.eq - i32.and - i32.const 0 - i32.ne - i32.const 0 - i32.eq - drop - f64.const -0 - local.set $0 - local.get $0 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $0 - local.get $0 - f64.eq - i32.and - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - f64.const 1 - local.set $0 - local.get $0 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $0 - local.get $0 - f64.eq - i32.and - i32.const 0 - i32.ne - i32.const 0 - i32.eq - drop - f64.const -1 - local.set $0 - local.get $0 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $0 - local.get $0 - f64.eq - i32.and - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - f64.const nan:0x8000000000000 - local.set $0 - local.get $0 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $0 - local.get $0 - f64.eq - i32.and - i32.const 0 - i32.ne - i32.const 0 - i32.eq - drop - f64.const nan:0x8000000000000 - f64.neg - local.set $0 - local.get $0 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $0 - local.get $0 - f64.eq - i32.and - i32.const 0 - i32.ne - i32.const 0 - i32.eq - drop - f64.const inf - local.set $0 - local.get $0 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $0 - local.get $0 - f64.eq - i32.and - i32.const 0 - i32.ne - i32.const 0 - i32.eq - drop - f64.const inf - f64.neg - local.set $0 - local.get $0 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $0 - local.get $0 - f64.eq - i32.and - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - f32.const 0 - local.set $4 - local.get $4 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $4 - local.get $4 - f32.eq - i32.and - i32.const 0 - i32.ne - i32.const 0 - i32.eq - drop - f32.const -0 - local.set $4 - local.get $4 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $4 - local.get $4 - f32.eq - i32.and - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - f32.const 1 - local.set $4 - local.get $4 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $4 - local.get $4 - f32.eq - i32.and - i32.const 0 - i32.ne - i32.const 0 - i32.eq - drop - f32.const -1 - local.set $4 - local.get $4 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $4 - local.get $4 - f32.eq - i32.and - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - f32.const nan:0x400000 - local.set $4 - local.get $4 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $4 - local.get $4 - f32.eq - i32.and - i32.const 0 - i32.ne - i32.const 0 - i32.eq - drop - f32.const nan:0x400000 - f32.neg - local.set $4 - local.get $4 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $4 - local.get $4 - f32.eq - i32.and - i32.const 0 - i32.ne - i32.const 0 - i32.eq - drop - f32.const inf - local.set $4 - local.get $4 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $4 - local.get $4 - f32.eq - i32.and - i32.const 0 - i32.ne - i32.const 0 - i32.eq - drop - f32.const inf - f32.neg - local.set $4 - local.get $4 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $4 - local.get $4 - f32.eq - i32.and - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - f64.const -8.06684839057968 - f64.const 4.535662560676869 - f64.const 1.0044767307740567 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3158 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -8.88799136300345 - f64.const 4.345239849338305 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3159 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2.763607337379588 - f64.const -0.09061141541648476 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3160 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const 4.567535276842744 - f64.const -1.9641383050707404 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3161 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 4.811392084359796 - f64.const -0.35572720174700656 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.450045556060236 - f64.const 0.6620717923376739 - f64.const 0.17067236731650248 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.858890253041697 - f64.const 0.05215452675006225 - f64.const -0.016443286217702822 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3164 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.792054511984896 - f64.const 7.67640268511754 - f64.const -0.792054511984896 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3165 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.615702673197924 - f64.const 2.0119025790324803 - f64.const 0.615702673197924 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3166 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5587586823609152 - f64.const 0.03223983060263804 - f64.const -0.0106815621160685 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3167 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3170 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3171 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3172 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3173 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3174 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3175 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3176 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const 1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - f64.const 1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3178 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const 1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3179 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3180 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 1 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3181 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3182 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3183 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3184 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const -1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3185 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3186 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3187 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3188 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const -1 - f64.const -0.5 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3189 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const -1 - f64.const 0.5 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3190 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - f64.const -1 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3191 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const -1 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3192 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3194 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3195 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3196 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3197 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3198 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.neg - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3200 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3201 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3202 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3203 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.neg - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3204 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3205 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3206 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3207 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3208 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3210 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3211 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3212 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3213 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3214 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 2 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3215 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0.5 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3216 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3217 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 2 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3218 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -0.5 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3219 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3220 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3221 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3222 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3223 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3224 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3225 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3226 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3227 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.neg - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3228 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.neg - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3229 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3230 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3231 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const 0.5 - f64.const -0.25 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3232 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const 0.5 - f64.const 0.25 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3233 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.75 - f64.const -0.5 - f64.const -0.25 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3234 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.75 - f64.const -0.5 - f64.const 0.25 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3235 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8e-323 - f64.const inf - f64.const 8e-323 - f64.const 0 - i32.const 0 - call $std/math/test_rem - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3236 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.535662651062012 - f32.const 1.004476547241211 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3245 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -8.887990951538086 - f32.const 4.345239639282227 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3246 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2.7636072635650635 - f32.const -0.09061169624328613 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3247 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const 4.567535400390625 - f32.const -1.9641380310058594 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3248 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 4.811392307281494 - f32.const -0.3557271957397461 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3249 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.450045585632324 - f32.const 0.6620717644691467 - f32.const 0.17067205905914307 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3250 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.858890056610107 - f32.const 0.052154526114463806 - f32.const -0.016443386673927307 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3251 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.7920545339584351 - f32.const 7.676402568817139 - f32.const -0.7920545339584351 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3252 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6157026886940002 - f32.const 2.0119025707244873 - f32.const 0.6157026886940002 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3253 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5587586760520935 - f32.const 0.03223983198404312 - f32.const -0.010681532323360443 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3254 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3257 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3258 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 0.5 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3259 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 1 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3260 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3261 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3262 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const 1 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3263 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32.const 1 - f32.const 0.5 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3264 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2 - f32.const 1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3265 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const 1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3266 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3267 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3268 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3269 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3270 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3271 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const -1 - f32.const 0.5 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3272 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -1 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3273 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3274 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3275 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const -1 - f32.const -0.5 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3276 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32.const -1 - f32.const 0.5 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3277 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2 - f32.const -1 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3278 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2 - f32.const -1 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3279 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3280 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3281 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3282 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3283 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3284 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3285 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.neg - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3286 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3287 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3288 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3289 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3290 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.neg - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3291 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3292 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3293 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3294 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3295 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3296 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3297 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3298 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3299 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3300 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3301 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 2 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3302 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0.5 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3303 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3304 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 2 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3305 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -0.5 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3306 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3307 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3308 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3309 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3310 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3311 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3312 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3313 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3314 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.neg - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3315 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.neg - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3316 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3317 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3318 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const 0.5 - f32.const -0.25 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3319 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const 0.5 - f32.const 0.25 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3320 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.75 - f32.const -0.5 - f32.const -0.25 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3321 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.75 - f32.const -0.5 - f32.const 0.25 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3322 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.877471754111438e-39 - f32.const inf - f32.const 5.877471754111438e-39 - f32.const 0 - i32.const 0 - call $std/math/test_remf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3323 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -0.9774292928781227 - f64.const -0.14564912021160126 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3335 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const -0.9333544736965718 - f64.const -0.08813747018575668 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3336 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -0.8640924711706304 - f64.const -0.11743883043527603 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3337 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -0.24593894772615374 - f64.const -0.12697851657867432 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3338 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 0.15706789772028007 - f64.const -0.029550159350037575 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3339 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.6146844860113447 - f64.const -0.09976737946271896 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3340 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.39549242182823696 - f64.const -0.3668774962425232 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3341 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5326763286672376 - f64.const -0.3550407588481903 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3342 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.6991102068649779 - f64.const -0.427672415971756 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3343 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.6278312326301215 - f64.const -0.3828115463256836 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3344 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.313225746154785e-10 - f64.const 9.313225746154785e-10 - f64.const 6.510416860692203e-04 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3347 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9.313225746154785e-10 - f64.const -9.313225746154785e-10 - f64.const -6.510416860692203e-04 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3348 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - f64.const 2.2250738585072014e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3349 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072014e-308 - f64.const -2.2250738585072014e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3350 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const 5e-324 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3351 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5e-324 - f64.const -5e-324 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3352 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3353 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3354 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507202e-308 - f64.const 2.225073858507202e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3355 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072024e-308 - f64.const 2.2250738585072024e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3356 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.4501477170144003e-308 - f64.const 4.4501477170144003e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3357 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.450147717014403e-308 - f64.const 4.450147717014403e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3358 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.450147717014406e-308 - f64.const 4.450147717014406e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3359 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.900295434028806e-308 - f64.const 8.900295434028806e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3360 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1175870895385742e-08 - f64.const 1.1175870895385742e-08 - f64.const 0.140625 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3361 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.4901161193847656e-08 - f64.const 1.4901161193847656e-08 - f64.const 0.1666666716337204 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3362 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507202e-308 - f64.const -2.225073858507202e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3363 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072024e-308 - f64.const -2.2250738585072024e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3364 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.4501477170144003e-308 - f64.const -4.4501477170144003e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3365 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.450147717014403e-308 - f64.const -4.450147717014403e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3366 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.450147717014406e-308 - f64.const -4.450147717014406e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3367 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.900295434028806e-308 - f64.const -8.900295434028806e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3368 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.1175870895385742e-08 - f64.const -1.1175870895385742e-08 - f64.const -0.140625 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3369 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.4901161193847656e-08 - f64.const -1.4901161193847656e-08 - f64.const -0.1666666716337204 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3370 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.4901161193847656e-08 - f64.const -1.4901161193847656e-08 - f64.const -0.1666666716337204 - global.get $std/math/INEXACT - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3371 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-323 - f64.const 1e-323 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3372 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.4e-323 - f64.const 4.4e-323 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3373 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.562684646268003e-309 - f64.const 5.562684646268003e-309 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3374 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1125369292536007e-308 - f64.const 1.1125369292536007e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3375 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072004e-308 - f64.const 2.2250738585072004e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3376 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507201e-308 - f64.const 2.225073858507201e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3377 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e-323 - f64.const -1e-323 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3378 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.4e-323 - f64.const -4.4e-323 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3379 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5.562684646268003e-309 - f64.const -5.562684646268003e-309 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3380 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.1125369292536007e-308 - f64.const -1.1125369292536007e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3381 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072004e-308 - f64.const -2.2250738585072004e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3382 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507201e-308 - f64.const -2.225073858507201e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3383 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3386 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3387 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3388 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3389 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_sin - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3390 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/math/kPI - f64.const 2 - f64.div - call $~lib/math/NativeMath.sin - global.get $std/math/kPI - f64.const 2 - f64.div - call $~lib/bindings/Math/sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3393 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2 - global.get $std/math/kPI - f64.mul - f64.const 2 - f64.div - call $~lib/math/NativeMath.sin - f64.const 2 - global.get $std/math/kPI - f64.mul - f64.const 2 - f64.div - call $~lib/bindings/Math/sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3394 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3283064365386963e-10 - f64.const 2.3283064365386963e-10 - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3397 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.3283064365386963e-10 - f64.const -2.3283064365386963e-10 - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3398 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.3826834323650898 - f64.const 0.39269908169872414 - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3400 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.3826834323650898 - f64.const -0.39269908169872414 - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3401 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.479425538604203 - f64.const 0.5 - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3404 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.479425538604203 - f64.const -0.5 - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3405 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - global.get $std/math/kPI - f64.const 2 - f64.div - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3406 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - global.get $std/math/kPI - f64.neg - f64.const 2 - f64.div - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3407 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.2246467991473532e-16 - global.get $std/math/kPI - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3409 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.047032979958965e-14 - f64.const 2200 - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3410 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.7071067811865477 - f64.const 7 - f64.const 4 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3412 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7071067811865474 - f64.const 9 - f64.const 4 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3413 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7071067811865483 - f64.const 11 - f64.const 4 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3414 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.7071067811865479 - f64.const 13 - f64.const 4 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3415 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3.2103381051568376e-11 - f64.const 1048576 - f64.const 4 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3416 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.377820109360752 - global.get $std/math/kTwo120 - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3419 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.377820109360752 - global.get $std/math/kTwo120 - f64.neg - call $~lib/math/NativeMath.sin - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3420 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -0.977429211139679 - f32.const 0.0801057294011116 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3429 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const -0.933354377746582 - f32.const 0.34475627541542053 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3430 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -0.8640924692153931 - f32.const -0.468659907579422 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3431 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -0.24593880772590637 - f32.const -0.3955177664756775 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3432 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 0.1570674479007721 - f32.const -0.24006809294223785 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3433 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.6146844625473022 - f32.const -0.07707194238901138 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3434 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.39549243450164795 - f32.const -0.11720617115497589 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3435 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.5326763391494751 - f32.const -0.16059114038944244 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3436 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.699110209941864 - f32.const 0.26384368538856506 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3437 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.627831220626831 - f32.const 0.005127954296767712 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3438 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3441 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3442 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3443 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3444 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3445 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.862645149230957e-09 - f32.const 1.862645149230957e-09 - f32.const 4.850638554015907e-12 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3448 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.862645149230957e-09 - f32.const -1.862645149230957e-09 - f32.const -4.850638554015907e-12 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3449 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754943508222875e-38 - f32.const 1.1754943508222875e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3450 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754943508222875e-38 - f32.const -1.1754943508222875e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3451 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const 1.401298464324817e-45 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3452 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.401298464324817e-45 - f32.const -1.401298464324817e-45 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3453 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.175494490952134e-38 - f32.const 1.175494490952134e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3454 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754946310819804e-38 - f32.const 1.1754946310819804e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3455 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3509880009953429e-38 - f32.const 2.3509880009953429e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3456 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.350988701644575e-38 - f32.const 2.350988701644575e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3457 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3509895424236536e-38 - f32.const 2.3509895424236536e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3458 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.70197740328915e-38 - f32.const 4.70197740328915e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3459 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1175870895385742e-08 - f32.const 1.1175870895385742e-08 - f32.const 2.6193447411060333e-10 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3460 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.4901161193847656e-08 - f32.const 1.4901161193847656e-08 - f32.const 3.1044086745701804e-10 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3461 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.000244140625 - f32.const 0.000244140625 - f32.const 0.0833333358168602 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3462 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.0003662109375 - f32.const 0.0003662109375 - f32.const 0.28125 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3463 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.175494490952134e-38 - f32.const -1.175494490952134e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3464 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754946310819804e-38 - f32.const -1.1754946310819804e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3465 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.3509880009953429e-38 - f32.const -2.3509880009953429e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3466 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.350988701644575e-38 - f32.const -2.350988701644575e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3467 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.3509895424236536e-38 - f32.const -2.3509895424236536e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3468 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -4.70197740328915e-38 - f32.const -4.70197740328915e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3469 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1175870895385742e-08 - f32.const -1.1175870895385742e-08 - f32.const -2.6193447411060333e-10 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3470 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.4901161193847656e-08 - f32.const -1.4901161193847656e-08 - f32.const -3.1044086745701804e-10 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3471 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.000244140625 - f32.const -0.000244140625 - f32.const -0.0833333358168602 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3472 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.0003662109375 - f32.const -0.0003662109375 - f32.const -0.28125 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3473 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.802596928649634e-45 - f32.const 2.802596928649634e-45 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3474 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.2611686178923354e-44 - f32.const 1.2611686178923354e-44 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3475 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.938735877055719e-39 - f32.const 2.938735877055719e-39 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3476 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.877471754111438e-39 - f32.const 5.877471754111438e-39 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3477 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754940705625946e-38 - f32.const 1.1754940705625946e-38 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3478 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754942106924411e-38 - f32.const 1.1754942106924411e-38 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3479 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.802596928649634e-45 - f32.const -2.802596928649634e-45 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3480 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.2611686178923354e-44 - f32.const -1.2611686178923354e-44 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3481 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.938735877055719e-39 - f32.const -2.938735877055719e-39 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3482 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -5.877471754111438e-39 - f32.const -5.877471754111438e-39 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3483 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754940705625946e-38 - f32.const -1.1754940705625946e-38 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3484 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754942106924411e-38 - f32.const -1.1754942106924411e-38 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3485 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 255.99993896484375 - f32.const -0.9992055892944336 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3488 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5033165 - f32.const 0.5312945246696472 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3489 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 421657440 - f32.const -0.7397398948669434 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3490 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2147483392 - f32.const 0.2762770354747772 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3491 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 68719476736 - f32.const 0.9855440855026245 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3492 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 549755813888 - f32.const -0.9782648086547852 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3493 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f32.MAX_VALUE - f32.const -0.5218765139579773 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3494 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -255.99993896484375 - f32.const 0.9992055892944336 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3495 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -5033165 - f32.const -0.5312945246696472 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3496 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -421657440 - f32.const 0.7397398948669434 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3497 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2147483392 - f32.const -0.2762770354747772 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3498 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -68719476736 - f32.const -0.9855440855026245 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3499 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -549755813888 - f32.const 0.9782648086547852 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3500 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f32.MAX_VALUE - f32.neg - f32.const 0.5218765139579773 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_sinf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3501 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -1593.5206801156262 - f64.const -0.2138727605342865 - global.get $std/math/INEXACT - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3513 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 38.54878088685412 - f64.const 0.21537430584430695 - global.get $std/math/INEXACT - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3514 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -2182.6307505145546 - f64.const 0.16213826835155487 - global.get $std/math/INEXACT - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3515 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -343.2723926847529 - f64.const 0.20479513704776764 - global.get $std/math/INEXACT - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3516 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 5291.7790755194055 - f64.const -0.48676517605781555 - global.get $std/math/INEXACT - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3517 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.7114062568229157 - f64.const -0.4584641456604004 - global.get $std/math/INEXACT - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3518 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.41790065258739445 - f64.const 0.37220045924186707 - global.get $std/math/INEXACT - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3519 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5917755935451237 - f64.const 0.46178996562957764 - global.get $std/math/INEXACT - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3520 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.8538292008852542 - f64.const -0.07019051909446716 - global.get $std/math/INEXACT - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3521 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.732097615653169 - f64.const 0.26858529448509216 - global.get $std/math/INEXACT - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3522 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3525 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3526 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3527 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3528 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_sinh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3529 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -1593.521240234375 - f32.const 0.1671663224697113 - global.get $std/math/INEXACT - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3538 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 38.548770904541016 - f32.const -0.49340328574180603 - global.get $std/math/INEXACT - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3539 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -2182.630859375 - f32.const 0.0849970355629921 - global.get $std/math/INEXACT - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3540 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -343.2723388671875 - f32.const 0.0704190656542778 - global.get $std/math/INEXACT - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3541 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 5291.78125 - f32.const -0.44362515211105347 - global.get $std/math/INEXACT - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3542 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.7114062309265137 - f32.const 0.058103885501623154 - global.get $std/math/INEXACT - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3543 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.4179006516933441 - f32.const 0.39349499344825745 - global.get $std/math/INEXACT - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3544 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.5917755961418152 - f32.const -0.4183797240257263 - global.get $std/math/INEXACT - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3545 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.8538292050361633 - f32.const 0.45992106199264526 - global.get $std/math/INEXACT - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3546 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.7320976257324219 - f32.const -0.48159059882164 - global.get $std/math/INEXACT - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3547 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3550 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3551 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3552 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3553 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_sinhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3554 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3566 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 2.0845238903256313 - f64.const -0.07180261611938477 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3567 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3568 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3569 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 3.0441841217266385 - f64.const -0.01546262577176094 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3570 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.8136251582267503 - f64.const -0.08618157356977463 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3571 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3572 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.7495063350104014 - f64.const -0.0981396734714508 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3573 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.879859248170583 - f64.const -0.37124353647232056 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3574 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3575 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3578 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3579 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3580 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3581 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3582 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3583 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3584 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4 - f64.const 2 - f64.const 0 - i32.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3585 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-323 - f64.const 3.1434555694052576e-162 - f64.const 0.43537619709968567 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3586 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5e-323 - f64.const 3.849931087076416e-162 - f64.const -0.45194002985954285 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3587 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const 2.2227587494850775e-162 - f64.const 0 - i32.const 0 - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3588 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5e-324 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3589 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999999999999999 - f64.const 0.9999999999999999 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3590 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.9999999999999998 - f64.const 1.414213562373095 - f64.const -0.21107041835784912 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3591 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000000000000002 - f64.const 1 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3592 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.0000000000000004 - f64.const 1.4142135623730951 - f64.const -0.27173060178756714 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3593 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000000000000002 - f64.const 1 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3594 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999999999999999 - f64.const 0.9999999999999999 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3595 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1797693134862315708145274e284 - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3596 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - f64.const 1340780792994259561100831e130 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3597 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 179769313486231490980915e285 - f64.const 134078079299425926338769e131 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3598 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862314111473026e284 - f64.const 1340780792994258965674548e130 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3599 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862313313136902e284 - f64.const 1340780792994258667961407e130 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3600 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862312514800778e284 - f64.const 1340780792994258370248265e130 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3601 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862311716464655e284 - f64.const 1340780792994258072535124e130 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3602 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862310918128531e284 - f64.const 1340780792994257774821982e130 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3603 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862310119792407e284 - f64.const 1340780792994257477108841e130 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3604 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862309321456283e284 - f64.const 1340780792994257179395699e130 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3605 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862308523120159e284 - f64.const 1340780792994256881682558e130 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3606 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862307724784036e284 - f64.const 1340780792994256583969417e130 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3607 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507203e-308 - f64.const 1.4916681462400417e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3608 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507205e-308 - f64.const 1.4916681462400423e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3609 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507207e-308 - f64.const 1.491668146240043e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3610 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507209e-308 - f64.const 1.4916681462400437e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3611 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507211e-308 - f64.const 1.4916681462400443e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3612 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072127e-308 - f64.const 1.491668146240045e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3613 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072147e-308 - f64.const 1.4916681462400457e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3614 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072167e-308 - f64.const 1.4916681462400463e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3615 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072187e-308 - f64.const 1.491668146240047e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3616 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072207e-308 - f64.const 1.4916681462400476e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3617 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072226e-308 - f64.const 1.4916681462400483e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3618 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072246e-308 - f64.const 1.491668146240049e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3619 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072266e-308 - f64.const 1.4916681462400496e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3620 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072286e-308 - f64.const 1.4916681462400503e-154 - f64.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3621 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 92.35130391890645 - f64.const 9.609958580499006 - f64.const 0.4998137056827545 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3622 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 93.3599596388916 - f64.const 9.662295774757238 - f64.const -0.49979978799819946 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3623 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 95.42049628886124 - f64.const 9.76834153215689 - f64.const -0.49997270107269287 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3624 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 95.87916941885449 - f64.const 9.791790919890728 - f64.const 0.4998766779899597 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3625 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 96.84804174884022 - f64.const 9.841140266698785 - f64.const 0.499801903963089 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3626 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 97.43639050883155 - f64.const 9.87098731175517 - f64.const 0.4997696280479431 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3627 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 97.50957979883047 - f64.const 9.874693909120955 - f64.const 0.49999818205833435 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3628 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 97.80496893882612 - f64.const 9.88963947466368 - f64.const -0.4999580681324005 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3629 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 98.2751822888192 - f64.const 9.913383997849534 - f64.const 0.49979931116104126 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3630 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 99.47293564880155 - f64.const 9.973611966023219 - f64.const -0.4999540448188782 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3631 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 100.57047130878539 - f64.const 10.028483001370914 - f64.const -0.49996453523635864 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3632 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 100.60954608878481 - f64.const 10.030431002144665 - f64.const 0.49975672364234924 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3633 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 100.67909109878379 - f64.const 10.033897104255344 - f64.const -0.4997771382331848 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3634 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 101.12268095877725 - f64.const 10.055977374615422 - f64.const 0.49988678097724915 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3635 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 101.3027691287746 - f64.const 10.064927676281366 - f64.const 0.4999105632305145 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3636 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.45932313565507e-307 - f64.const 4.9591563149945874e-154 - f64.const -0.4998999834060669 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3637 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.610957305180409e-307 - f64.const 7.490632353266584e-154 - f64.const -0.4999343752861023 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3638 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.8073887977408524e-307 - f64.const 7.62062254526548e-154 - f64.const -0.49989569187164307 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3639 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.026137080471427e-307 - f64.const 8.382205605013174e-154 - f64.const 0.49980640411376953 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3640 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.438697769194972e-307 - f64.const 9.186238495268328e-154 - f64.const -0.4999065697193146 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3641 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1607792515836795e-306 - f64.const 1.0773946591586944e-153 - f64.const -0.49997684359550476 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3642 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.2827413827423193e-306 - f64.const 1.1325817333606962e-153 - f64.const -0.4999513030052185 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3643 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.7116604596087457e-306 - f64.const 1.3083044216117078e-153 - f64.const -0.49986395239830017 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3644 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.038173251686994e-306 - f64.const 1.4276460526639628e-153 - f64.const 0.4998403787612915 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3645 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.171572060856931e-306 - f64.const 1.4736254818836879e-153 - f64.const 0.4999290406703949 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3646 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.4681399631804094e-306 - f64.const 1.5710314965589996e-153 - f64.const 0.49989044666290283 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3647 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.5175533964200588e-306 - f64.const 1.5866799918131124e-153 - f64.const -0.4997701048851013 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3648 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.6461505468829625e-306 - f64.const 1.6266992797941982e-153 - f64.const 0.4998672902584076 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3649 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.8167076367720413e-306 - f64.const 1.9536395872248397e-153 - f64.const 0.49983471632003784 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3650 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.5743220778562766e-306 - f64.const 2.1387664851161936e-153 - f64.const 0.49985939264297485 - global.get $std/math/INEXACT - call $std/math/test_sqrt - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3651 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3660 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 2.084523916244507 - f32.const 0.3200402557849884 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3661 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3662 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3663 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 3.0441842079162598 - f32.const 0.05022354796528816 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3664 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.813625156879425 - f32.const 0.2240506112575531 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3665 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3666 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.7495063543319702 - f32.const 0.05895441770553589 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3667 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.879859209060669 - f32.const -0.4874873757362366 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3668 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3669 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3672 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3673 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3674 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3675 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3676 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3677 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3678 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4 - f32.const 2 - f32.const 0 - i32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3679 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.802596928649634e-45 - f32.const 5.293955920339377e-23 - f32.const 0 - i32.const 0 - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3680 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.203895392974451e-45 - f32.const 6.483745598763743e-23 - f32.const 0.37388554215431213 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3681 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const 3.743392066509216e-23 - f32.const -0.20303145051002502 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3682 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.401298464324817e-45 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3683 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3402823466385288598117041e14 - f32.const 18446742974197923840 - f32.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3684 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3402823466385288598117041e14 - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3685 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999998807907104 - f32.const 0.9999999403953552 - f32.const 2.980232594040899e-08 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3686 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999999403953552 - f32.const 0.9999999403953552 - f32.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3687 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.999999761581421 - f32.const 1.4142134189605713 - f32.const -0.4959246516227722 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3688 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.9999998807907104 - f32.const 1.4142135381698608 - f32.const 0.15052194893360138 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3689 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000001192092896 - f32.const 1 - f32.const -0.5 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3690 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.000000238418579 - f32.const 1.0000001192092896 - f32.const 5.960463766996327e-08 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3691 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.000000238418579 - f32.const 1.4142136573791504 - f32.const 0.08986179530620575 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3692 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.000000476837158 - f32.const 1.41421377658844 - f32.const 0.3827550709247589 - global.get $std/math/INEXACT - call $std/math/test_sqrtf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3693 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const 4.626603542401633 - f64.const -0.2727603316307068 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3705 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 2.600191705822202 - f64.const 0.2651003301143646 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3706 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const 1.7167408328741052 - f64.const -0.24687519669532776 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3707 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -0.2537322523453725 - f64.const -0.4679703712463379 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3708 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const -0.15904195727191958 - f64.const -0.06704077869653702 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3709 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.7792919106910434 - f64.const -0.038056135177612305 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3710 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.43059952879543656 - f64.const -0.09242714196443558 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3711 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.62940368731874 - f64.const -0.321913480758667 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3712 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.9777574652949645 - f64.const -0.1966651827096939 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3713 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.8066186630209123 - f64.const -0.067665696144104 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3714 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.313225746154785e-10 - f64.const 9.313225746154785e-10 - f64.const -1.3020833721384406e-03 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3717 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -9.313225746154785e-10 - f64.const -9.313225746154785e-10 - f64.const 1.3020833721384406e-03 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3718 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - f64.const 2.2250738585072014e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3719 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072014e-308 - f64.const -2.2250738585072014e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3720 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - f64.const 5e-324 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3721 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5e-324 - f64.const -5e-324 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3722 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3723 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3724 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7853981633974483 - f64.const 0.9999999999999999 - f64.const -0.4484681189060211 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3725 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.7853981633974483 - f64.const -0.9999999999999999 - f64.const 0.4484681189060211 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3726 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507202e-308 - f64.const 2.225073858507202e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3727 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072024e-308 - f64.const 2.2250738585072024e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3728 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.4501477170144003e-308 - f64.const 4.4501477170144003e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3729 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.450147717014403e-308 - f64.const 4.450147717014403e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3730 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.450147717014406e-308 - f64.const 4.450147717014406e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3731 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 8.900295434028806e-308 - f64.const 8.900295434028806e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3732 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1175870895385742e-08 - f64.const 1.1175870895385742e-08 - f64.const -0.28125 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3733 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.4901161193847656e-08 - f64.const 1.4901161193847656e-08 - f64.const -0.3333333432674408 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3734 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507202e-308 - f64.const -2.225073858507202e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3735 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072024e-308 - f64.const -2.2250738585072024e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3736 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.4501477170144003e-308 - f64.const -4.4501477170144003e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3737 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.450147717014403e-308 - f64.const -4.450147717014403e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3738 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.450147717014406e-308 - f64.const -4.450147717014406e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3739 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.900295434028806e-308 - f64.const -8.900295434028806e-308 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3740 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.1175870895385742e-08 - f64.const -1.1175870895385742e-08 - f64.const 0.28125 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3741 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.4901161193847656e-08 - f64.const -1.4901161193847656e-08 - f64.const 0.3333333432674408 - global.get $std/math/INEXACT - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3742 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-323 - f64.const 1e-323 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3743 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.4e-323 - f64.const 4.4e-323 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3744 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5.562684646268003e-309 - f64.const 5.562684646268003e-309 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3745 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1125369292536007e-308 - f64.const 1.1125369292536007e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3746 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072004e-308 - f64.const 2.2250738585072004e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3747 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.225073858507201e-308 - f64.const 2.225073858507201e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3748 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e-323 - f64.const -1e-323 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3749 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -4.4e-323 - f64.const -4.4e-323 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3750 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -5.562684646268003e-309 - f64.const -5.562684646268003e-309 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3751 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.1125369292536007e-308 - f64.const -1.1125369292536007e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3752 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.2250738585072004e-308 - f64.const -2.2250738585072004e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3753 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.225073858507201e-308 - f64.const -2.225073858507201e-308 - f64.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3754 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.3283064365386963e-10 - call $~lib/math/NativeMath.tan - f64.const 2.3283064365386963e-10 - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3757 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.3283064365386963e-10 - call $~lib/math/NativeMath.tan - f64.const -2.3283064365386963e-10 - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3758 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 11 - f64.const 16 - f64.div - call $~lib/math/NativeMath.tan - f64.const 11 - f64.const 16 - f64.div - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3759 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -11 - f64.const 16 - f64.div - call $~lib/math/NativeMath.tan - f64.const -11 - f64.const 16 - f64.div - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3760 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.39269908169872414 - call $~lib/math/NativeMath.tan - f64.const 0.39269908169872414 - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3761 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6743358 - call $~lib/math/NativeMath.tan - f64.const 0.6743358 - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3762 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.725290298461914e-09 - call $~lib/math/NativeMath.tan - f64.const 3.725290298461914e-09 - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3763 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/math/kPI - f64.const 2 - f64.div - call $~lib/math/NativeMath.tan - global.get $std/math/kPI - f64.const 2 - f64.div - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3764 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - call $~lib/math/NativeMath.tan - f64.const 0.5 - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3766 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.107148717794091 - call $~lib/math/NativeMath.tan - f64.const 1.107148717794091 - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3767 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7 - f64.const 4 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.tan - f64.const 7 - f64.const 4 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3768 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9 - f64.const 4 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.tan - f64.const 9 - f64.const 4 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3769 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1048576 - f64.const 2 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.tan - f64.const 1048576 - f64.const 2 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3770 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1048575 - f64.const 2 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/math/NativeMath.tan - f64.const 1048575 - f64.const 2 - f64.div - global.get $std/math/kPI - f64.mul - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3771 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/math/kTwo120 - call $~lib/math/NativeMath.tan - global.get $std/math/kTwo120 - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3772 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/math/kTwo120 - f64.neg - call $~lib/math/NativeMath.tan - global.get $std/math/kTwo120 - f64.neg - call $~lib/bindings/Math/tan - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3773 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3776 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3777 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3778 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const 0 - global.get $std/math/INVALID - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3779 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_tan - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3780 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const 4.626595497131348 - f32.const 0.2455666959285736 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3789 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 2.6001901626586914 - f32.const 0.3652407228946686 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3790 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const 1.716740608215332 - f32.const 0.08169349282979965 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3791 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -0.2537320852279663 - f32.const 0.23186513781547546 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3792 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const -0.15904149413108826 - f32.const -0.009332014247775078 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3793 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.7792918682098389 - f32.const -0.06759700924158096 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3794 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.43059954047203064 - f32.const 0.005771996453404427 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3795 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.6294037103652954 - f32.const -0.16838163137435913 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3796 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.977757453918457 - f32.const 0.38969388604164124 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3797 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.8066186308860779 - f32.const 0.12294059991836548 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3798 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3801 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3802 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3803 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const 0 - global.get $std/math/INVALID - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3804 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3805 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.862645149230957e-09 - f32.const 1.862645149230957e-09 - f32.const -9.701277108031814e-12 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3808 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.862645149230957e-09 - f32.const -1.862645149230957e-09 - f32.const 9.701277108031814e-12 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3809 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754943508222875e-38 - f32.const 1.1754943508222875e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3810 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754943508222875e-38 - f32.const -1.1754943508222875e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3811 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.401298464324817e-45 - f32.const 1.401298464324817e-45 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3812 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.401298464324817e-45 - f32.const -1.401298464324817e-45 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3813 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.175494490952134e-38 - f32.const 1.175494490952134e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3814 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754946310819804e-38 - f32.const 1.1754946310819804e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3815 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3509880009953429e-38 - f32.const 2.3509880009953429e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3816 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.350988701644575e-38 - f32.const 2.350988701644575e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3817 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.3509895424236536e-38 - f32.const 2.3509895424236536e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3818 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.70197740328915e-38 - f32.const 4.70197740328915e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3819 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1175870895385742e-08 - f32.const 1.1175870895385742e-08 - f32.const -5.238689482212067e-10 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3820 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.4901161193847656e-08 - f32.const 1.4901161193847656e-08 - f32.const -6.208817349140361e-10 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3821 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.000244140625 - f32.const 0.000244140625 - f32.const -0.1666666716337204 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3822 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.175494490952134e-38 - f32.const -1.175494490952134e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3823 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754946310819804e-38 - f32.const -1.1754946310819804e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3824 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.3509880009953429e-38 - f32.const -2.3509880009953429e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3825 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.350988701644575e-38 - f32.const 2.350988701644575e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3826 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.3509895424236536e-38 - f32.const -2.3509895424236536e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3827 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -4.70197740328915e-38 - f32.const -4.70197740328915e-38 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3828 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1175870895385742e-08 - f32.const -1.1175870895385742e-08 - f32.const 5.238689482212067e-10 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3829 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.4901161193847656e-08 - f32.const -1.4901161193847656e-08 - f32.const 6.208817349140361e-10 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3830 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.000244140625 - f32.const -0.000244140625 - f32.const 0.1666666716337204 - global.get $std/math/INEXACT - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3831 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.802596928649634e-45 - f32.const 2.802596928649634e-45 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3832 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.2611686178923354e-44 - f32.const 1.2611686178923354e-44 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3833 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 2.938735877055719e-39 - f32.const 2.938735877055719e-39 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3834 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 5.877471754111438e-39 - f32.const 5.877471754111438e-39 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3835 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754940705625946e-38 - f32.const 1.1754940705625946e-38 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3836 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.1754942106924411e-38 - f32.const 1.1754942106924411e-38 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3837 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.802596928649634e-45 - f32.const -2.802596928649634e-45 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3838 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.2611686178923354e-44 - f32.const -1.2611686178923354e-44 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3839 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -2.938735877055719e-39 - f32.const -2.938735877055719e-39 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3840 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -5.877471754111438e-39 - f32.const -5.877471754111438e-39 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3841 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754940705625946e-38 - f32.const -1.1754940705625946e-38 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3842 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.1754942106924411e-38 - f32.const -1.1754942106924411e-38 - f32.const 0 - global.get $std/math/INEXACT - global.get $std/math/UNDERFLOW - i32.or - call $std/math/test_tanf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3843 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -0.999999803096032 - f64.const 0.012793331407010555 - global.get $std/math/INEXACT - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3855 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 0.9996636978961307 - f64.const 0.1573508232831955 - global.get $std/math/INEXACT - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3856 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -0.9999998950434862 - f64.const 0.27985066175460815 - global.get $std/math/INEXACT - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3857 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -0.9999957568392429 - f64.const -0.44285574555397034 - global.get $std/math/INEXACT - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3858 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 0.9999999821447234 - f64.const 0.4462755024433136 - global.get $std/math/INEXACT - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3859 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0.5796835018635275 - f64.const 0.4892043173313141 - global.get $std/math/INEXACT - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3860 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0.3855853099901652 - f64.const 0.35993871092796326 - global.get $std/math/INEXACT - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3861 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0.5092819248700439 - f64.const -0.39436522126197815 - global.get $std/math/INEXACT - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3862 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0.6493374550318555 - f64.const -0.4899396002292633 - global.get $std/math/INEXACT - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3863 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0.590715084799841 - f64.const -0.0145387789234519 - global.get $std/math/INEXACT - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3864 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3867 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3868 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3869 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3870 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_tanh - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3871 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -0.9999998211860657 - f32.const -0.3034979999065399 - global.get $std/math/INEXACT - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3880 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 0.9996637105941772 - f32.const 0.2154078334569931 - global.get $std/math/INEXACT - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3881 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -0.9999998807907104 - f32.const 0.23912210762500763 - global.get $std/math/INEXACT - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3882 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -0.999995768070221 - f32.const -0.18844597041606903 - global.get $std/math/INEXACT - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3883 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 1 - f32.const 0.1497807800769806 - global.get $std/math/INEXACT - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3884 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0.5796834826469421 - f32.const -0.05590476095676422 - global.get $std/math/INEXACT - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3885 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0.38558530807495117 - f32.const 0.349787175655365 - global.get $std/math/INEXACT - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3886 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0.5092819333076477 - f32.const -0.1528785079717636 - global.get $std/math/INEXACT - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3887 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0.6493374705314636 - f32.const 0.4317026138305664 - global.get $std/math/INEXACT - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3888 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0.5907150506973267 - f32.const 0.4079873859882355 - global.get $std/math/INEXACT - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3889 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3892 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3893 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3894 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3895 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_tanhf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3896 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.06684839057968 - f64.const -8 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3908 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.345239849338305 - f64.const 4 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3909 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -8.38143342755525 - f64.const -8 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3910 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -6.531673581913484 - f64.const -6 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3911 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9.267056966972586 - f64.const 9 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3912 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.6619858980995045 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3913 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.4066039223853553 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3914 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5617597462207241 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3915 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.7741522965913037 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3916 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.6787637026394024 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3917 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const 0 - i32.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3920 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const 0 - i32.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3921 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const 0 - i32.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3922 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const 0 - i32.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3923 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const 0 - i32.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3924 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - f64.const 0 - i32.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3925 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1 - f64.const 0 - i32.const 0 - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3926 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3927 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3928 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.0000152587890625 - f64.const 1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3929 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.0000152587890625 - f64.const -1 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3930 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999923706054688 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3931 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.9999923706054688 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3932 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 7.888609052210118e-31 - f64.const 0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3933 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -7.888609052210118e-31 - f64.const -0 - f64.const 0 - global.get $std/math/INEXACT - call $std/math/test_trunc - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3934 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.066848754882812 - f32.const -8 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3943 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 4.345239639282227 - f32.const 4 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3944 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -8.381433486938477 - f32.const -8 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3945 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -6.531673431396484 - f32.const -6 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3946 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 9.267057418823242 - f32.const 9 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3947 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.6619858741760254 - f32.const 0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3948 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.40660393238067627 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3949 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5617597699165344 - f32.const 0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3950 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.7741522789001465 - f32.const 0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3951 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.6787636876106262 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3952 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const 0 - i32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3955 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const 0 - i32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3956 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const 0 - i32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3957 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const 0 - i32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3958 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const 0 - i32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3959 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - f32.const 0 - i32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3960 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -1 - f32.const 0 - i32.const 0 - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3961 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3962 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3963 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.0000152587890625 - f32.const 1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3964 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.0000152587890625 - f32.const -1 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3965 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.9999923706054688 - f32.const 0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3966 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.9999923706054688 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3967 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 7.888609052210118e-31 - f32.const 0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3968 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -7.888609052210118e-31 - f32.const -0 - f32.const 0 - global.get $std/math/INEXACT - call $std/math/test_truncf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 3969 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4602641186874283791 - i64.const -4616392916911125550 - i64.const -4628956453976145920 - i64.const -4626592471448962314 - i64.const -4630808324688838656 - global.get $std/math/INEXACT - call $std/math/test_sincos - drop - i64.const 4616578323568966759 - i64.const -4616789907589610460 - i64.const -4632356642145435648 - i64.const -4623234040091605244 - i64.const -4630954342839484416 - global.get $std/math/INEXACT - call $std/math/test_sincos - drop - i64.const -4602464091242371353 - i64.const -4617413764247143988 - i64.const -4630245256623816704 - i64.const -4620663195860462557 - i64.const -4641537901929168896 - global.get $std/math/INEXACT - call $std/math/test_sincos - drop - i64.const -4604332007749985084 - i64.const -4625343132137557201 - i64.const -4629629133364658176 - i64.const 4606905765568473756 - i64.const -4621075345754292224 - global.get $std/math/INEXACT - call $std/math/test_sincos - drop - i64.const 4621406507342668262 - i64.const 4594826987695694788 - i64.const -4639197561901547520 - i64.const -4616301417154991689 - i64.const 4602463851227643904 - global.get $std/math/INEXACT - call $std/math/test_sincos - drop - i64.const 4604137858433287319 - i64.const 4603711805189578650 - i64.const -4631518618864058368 - i64.const 4605279855905985745 - i64.const 4593746800099196928 - global.get $std/math/INEXACT - call $std/math/test_sincos - drop - i64.const -4622375691843501615 - i64.const -4622575858842575876 - i64.const -4623091339515396096 - i64.const 4606448054996611351 - i64.const -4624994927539912704 - global.get $std/math/INEXACT - call $std/math/test_sincos - drop - i64.const 4603235101512779211 - i64.const 4602973141375866126 - i64.const -4623304571219869696 - i64.const 4605798183832360369 - i64.const -4624249509122146304 - global.get $std/math/INEXACT - call $std/math/test_sincos - drop - i64.const 4605148163534189634 - i64.const 4604472244479532466 - i64.const -4621996155604041728 - i64.const 4604615492473651755 - i64.const -4632555521679818752 - global.get $std/math/INEXACT - call $std/math/test_sincos - drop - i64.const -4619083057392940530 - i64.const -4619541816298850243 - i64.const -4622804297187328000 - i64.const 4605185968576882368 - i64.const 4599236402884902912 - global.get $std/math/INEXACT - call $std/math/test_sincos - drop - f64.const 2 - f64.const 4 - call $~lib/math/NativeMath.imul - f64.const 8 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4010 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 8 - call $~lib/math/NativeMath.imul - f64.const -8 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4011 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2 - f64.const -2 - call $~lib/math/NativeMath.imul - f64.const 4 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4012 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967295 - f64.const 5 - call $~lib/math/NativeMath.imul - f64.const -5 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4013 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967294 - f64.const 5 - call $~lib/math/NativeMath.imul - f64.const -10 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4014 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.e+60 - f64.const 1.e+60 - call $~lib/math/NativeMath.imul - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4015 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.e+60 - f64.const -1.e+60 - call $~lib/math/NativeMath.imul - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4016 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.e+60 - f64.const -1.e+60 - call $~lib/math/NativeMath.imul - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4017 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.e+24 - f64.const 100 - call $~lib/math/NativeMath.imul - f64.const -2147483648 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4018 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - call $~lib/math/NativeMath.imul - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4019 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - call $~lib/math/NativeMath.imul - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4020 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MAX_VALUE - global.get $~lib/builtins/f64.MAX_VALUE - call $~lib/math/NativeMath.imul - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4021 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4025 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - call $~lib/math/NativeMath.clz32 - f64.const 31 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4026 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4027 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -128 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4028 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967295 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4029 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967295.5 - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4030 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967296 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4031 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967297 - call $~lib/math/NativeMath.clz32 - f64.const 31 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4032 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4033 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4034 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MAX_SAFE_INTEGER - call $~lib/math/NativeMath.clz32 - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4035 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MAX_SAFE_INTEGER - f64.neg - call $~lib/math/NativeMath.clz32 - f64.const 31 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4036 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MAX_VALUE - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4037 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MIN_VALUE - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4038 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MAX_VALUE - f64.neg - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4039 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.EPSILON - call $~lib/math/NativeMath.clz32 - f64.const 32 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4040 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i64.const 0 - call $~lib/math/ipow64 - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4044 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i64.const 1 - call $~lib/math/ipow64 - i64.const 0 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4045 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i64.const 2 - call $~lib/math/ipow64 - i64.const 0 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4046 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i64.const 3 - call $~lib/math/ipow64 - i64.const 0 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4047 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.const 0 - call $~lib/math/ipow64 - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4049 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.const 1 - call $~lib/math/ipow64 - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4050 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.const 2 - call $~lib/math/ipow64 - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4051 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.const 3 - call $~lib/math/ipow64 - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4052 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 0 - call $~lib/math/ipow64 - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4054 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 1 - call $~lib/math/ipow64 - i64.const 2 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4055 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 2 - call $~lib/math/ipow64 - i64.const 4 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4056 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 3 - call $~lib/math/ipow64 - i64.const 8 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4057 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i64.const 0 - call $~lib/math/ipow64 - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4059 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i64.const 1 - call $~lib/math/ipow64 - i64.const -1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4060 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i64.const 2 - call $~lib/math/ipow64 - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4061 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i64.const 3 - call $~lib/math/ipow64 - i64.const -1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4062 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -2 - i64.const 0 - call $~lib/math/ipow64 - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4064 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -2 - i64.const 1 - call $~lib/math/ipow64 - i64.const -2 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4065 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -2 - i64.const 2 - call $~lib/math/ipow64 - i64.const 4 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4066 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -2 - i64.const 3 - call $~lib/math/ipow64 - i64.const -8 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4067 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 63 - call $~lib/math/ipow64 - i64.const -9223372036854775808 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4069 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 3 - i64.const 40 - call $~lib/math/ipow64 - i64.const -6289078614652622815 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4070 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 64 - call $~lib/math/ipow64 - i64.const 0 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4071 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 3 - i64.const 41 - call $~lib/math/ipow64 - i64.const -420491770248316829 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4072 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 3 - i64.const 128 - call $~lib/math/ipow64 - i64.const -9204772141784466943 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4073 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.const -1 - call $~lib/math/ipow64 - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4075 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const -1 - call $~lib/math/ipow64 - i64.const 0 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4076 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.const 0 - i32.eq - i32.const 0 - select - i32.const 1 - i32.eq - drop - i32.const 1 - i32.const 1 - i32.const 0 - i32.eq - i32.const 0 - select - i32.const 0 - i32.eq - drop - i32.const 1 - i32.const 3 - call $~lib/math/ipow32 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4082 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2 - i32.const 3 - call $~lib/math/ipow32 - i32.const -8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4083 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 0 - call $~lib/math/ipow32 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4084 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const -1 - call $~lib/math/ipow32 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4085 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const -2 - call $~lib/math/ipow32 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4086 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const -3 - call $~lib/math/ipow32 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4087 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const -2 - call $~lib/math/ipow32 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4089 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const -1 - call $~lib/math/ipow32 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4090 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.const 0 - i32.eq - i32.const 0 - select - i32.const 1 - i32.eq - drop - i32.const 1 - i32.const 1 - i32.const 0 - i32.eq - i32.const 0 - select - i32.const 0 - i32.eq - drop - i32.const 0 - i32.const 2 - call $~lib/math/ipow32 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4093 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const -2 - call $~lib/math/ipow32 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4095 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const -1 - call $~lib/math/ipow32 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4096 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.const 0 - i32.eq - i32.const 1 - select - i32.const 1 - i32.eq - drop - i32.const 1 - i32.const 1 - i32.const 0 - i32.eq - i32.const 1 - select - i32.const 1 - i32.eq - drop - i32.const 1 - i32.const 2 - call $~lib/math/ipow32 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4099 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 3 - call $~lib/math/ipow32 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2 - i32.const 3 - call $~lib/math/ipow32 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 7 - call $~lib/math/ipow32 - i32.const 65535 - i32.and - i32.const 16384 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 8 - call $~lib/math/ipow32 - i32.const 65535 - i32.and - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 10 - call $~lib/math/ipow32 - i32.const 65535 - i32.and - i32.const 761 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i64.const 0 - call $~lib/math/ipow64 - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i64.const 1 - call $~lib/math/ipow64 - i64.const 0 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i64.const 3 - call $~lib/math/ipow64 - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4109 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 2 - i64.const 3 - call $~lib/math/ipow64 - i64.const 8 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967295 - i64.const 3 - call $~lib/math/ipow64 - i64.const 12884901887 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 65535 - i64.const 3 - call $~lib/math/ipow64 - i64.const 281462092005375 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4112 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 65535 - i64.const 8 - call $~lib/math/ipow64 - i64.const -15762478437236735 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 61731 - i64.const 4 - call $~lib/math/ipow64 - i64.const -3925184889716469295 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 61731 - i64.const 4 - call $~lib/math/ipow64 - i64.const -3925184889716469295 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 57055 - i64.const 3 - call $~lib/math/ipow64 - i64.const 339590 - i64.const 3 - call $~lib/math/ipow64 - i64.add - i64.const 340126 - i64.const 3 - call $~lib/math/ipow64 - i64.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 57055 - i64.const 3 - call $~lib/math/ipow64 - i64.const 339590 - i64.const 3 - call $~lib/math/ipow64 - i64.add - i64.const 39347712995520375 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4118 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - f64.convert_i32_u - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - f64.convert_i32_u - f64.const 0.5 - call $~lib/math/NativeMath.pow - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - f64.convert_i32_u - f64.const -1 - call $~lib/math/NativeMath.pow - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4122 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - call $~lib/math/NativeMath.pow - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4124 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/math - ) -) diff --git a/tests/compiler/std/mod.debug.wat b/tests/compiler/std/mod.debug.wat new file mode 100644 index 0000000000..e83e1bff7e --- /dev/null +++ b/tests/compiler/std/mod.debug.wat @@ -0,0 +1,2398 @@ +(module + (type $0 (func (param f64 f64) (result f64))) + (type $1 (func)) + (type $2 (func (param f64 f64) (result i32))) + (type $3 (func (param f64 f64 f64) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param f32 f32) (result f32))) + (type $6 (func (param f32 f32) (result i32))) + (type $7 (func (param f32 f32 f32) (result i32))) + (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $std/mod/js i32 (i32.const 1)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "mod" (func $std/mod/mod)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/math/NativeMath.mod (param $x f64) (param $y f64) (result f64) + (local $ux i64) + (local $uy i64) + (local $ex i64) + (local $ey i64) + (local $sx i64) + (local $uy1 i64) + (local $m f64) + (local $ux1 i64) + (local $shift i64) + local.get $y + f64.abs + f64.const 1 + f64.eq + if + local.get $x + local.get $x + f64.trunc + f64.sub + local.get $x + f64.copysign + return + end + local.get $x + i64.reinterpret_f64 + local.set $ux + local.get $y + i64.reinterpret_f64 + local.set $uy + local.get $ux + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $ex + local.get $uy + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $ey + local.get $ux + i64.const 63 + i64.shr_u + local.set $sx + local.get $uy + i64.const 1 + i64.shl + local.set $uy1 + local.get $uy1 + i64.const 0 + i64.eq + if (result i32) + i32.const 1 + else + local.get $ex + i64.const 2047 + i64.eq + end + if (result i32) + i32.const 1 + else + local.get $y + local.get $y + f64.ne + end + if + local.get $x + local.get $y + f64.mul + local.set $m + local.get $m + local.get $m + f64.div + return + end + local.get $ux + i64.const 1 + i64.shl + local.set $ux1 + local.get $ux1 + local.get $uy1 + i64.le_u + if + local.get $x + local.get $ux1 + local.get $uy1 + i64.ne + f64.convert_i32_u + f64.mul + return + end + local.get $ex + i64.const 0 + i64.ne + i32.eqz + if + local.get $ex + local.get $ux + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $ex + local.get $ux + i64.const 1 + local.get $ex + i64.sub + i64.shl + local.set $ux + else + local.get $ux + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $ux + local.get $ux + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $ux + end + local.get $ey + i64.const 0 + i64.ne + i32.eqz + if + local.get $ey + local.get $uy + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $ey + local.get $uy + i64.const 1 + local.get $ey + i64.sub + i64.shl + local.set $uy + else + local.get $uy + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $uy + local.get $uy + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $uy + end + loop $while-continue|0 + local.get $ex + local.get $ey + i64.gt_s + if + local.get $ux + local.get $uy + i64.ge_u + if + local.get $ux + local.get $uy + i64.eq + if + f64.const 0 + local.get $x + f64.mul + return + end + local.get $ux + local.get $uy + i64.sub + local.set $ux + end + local.get $ux + i64.const 1 + i64.shl + local.set $ux + local.get $ex + i64.const 1 + i64.sub + local.set $ex + br $while-continue|0 + end + end + local.get $ux + local.get $uy + i64.ge_u + if + local.get $ux + local.get $uy + i64.eq + if + f64.const 0 + local.get $x + f64.mul + return + end + local.get $ux + local.get $uy + i64.sub + local.set $ux + end + local.get $ux + i64.const 11 + i64.shl + i64.clz + local.set $shift + local.get $ex + local.get $shift + i64.sub + local.set $ex + local.get $ux + local.get $shift + i64.shl + local.set $ux + local.get $ex + i64.const 0 + i64.gt_s + if + local.get $ux + i64.const 1 + i64.const 52 + i64.shl + i64.sub + local.set $ux + local.get $ux + local.get $ex + i64.const 52 + i64.shl + i64.or + local.set $ux + else + local.get $ux + i64.const 0 + local.get $ex + i64.sub + i64.const 1 + i64.add + i64.shr_u + local.set $ux + end + local.get $ux + local.get $sx + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + return + ) + (func $std/mod/check (param $actual f64) (param $expected f64) (result i32) + local.get $expected + local.get $expected + f64.ne + if + local.get $actual + local.get $actual + f64.ne + return + end + local.get $expected + f64.const 0 + f64.eq + if + i32.const 1 + f64.convert_i32_u + local.get $expected + f64.div + f64.const 1 + local.get $actual + f64.div + f64.eq + return + end + local.get $actual + local.get $expected + f64.eq + return + ) + (func $std/mod/test_fmod (param $left f64) (param $right f64) (param $expected f64) (result i32) + local.get $left + local.get $right + call $~lib/math/NativeMath.mod + local.get $expected + call $std/mod/check + if (result i32) + local.get $left + local.get $right + call $std/mod/mod + local.get $expected + call $std/mod/check + else + i32.const 0 + end + return + ) + (func $~lib/math/NativeMathf.mod (param $x f32) (param $y f32) (result f32) + (local $ux i32) + (local $uy i32) + (local $ex i32) + (local $ey i32) + (local $sm i32) + (local $uy1 i32) + (local $m f32) + (local $ux1 i32) + (local $shift i32) + local.get $y + f32.abs + f32.const 1 + f32.eq + if + local.get $x + local.get $x + f32.trunc + f32.sub + local.get $x + f32.copysign + return + end + local.get $x + i32.reinterpret_f32 + local.set $ux + local.get $y + i32.reinterpret_f32 + local.set $uy + local.get $ux + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $ex + local.get $uy + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $ey + local.get $ux + i32.const -2147483648 + i32.and + local.set $sm + local.get $uy + i32.const 1 + i32.shl + local.set $uy1 + local.get $uy1 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $ex + i32.const 255 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $y + local.get $y + f32.ne + end + if + local.get $x + local.get $y + f32.mul + local.set $m + local.get $m + local.get $m + f32.div + return + end + local.get $ux + i32.const 1 + i32.shl + local.set $ux1 + local.get $ux1 + local.get $uy1 + i32.le_u + if + local.get $x + local.get $ux1 + local.get $uy1 + i32.ne + f32.convert_i32_u + f32.mul + return + end + local.get $ex + i32.eqz + if + local.get $ex + local.get $ux + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $ex + local.get $ux + i32.const 1 + local.get $ex + i32.sub + i32.shl + local.set $ux + else + local.get $ux + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $ux + local.get $ux + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $ux + end + local.get $ey + i32.eqz + if + local.get $ey + local.get $uy + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $ey + local.get $uy + i32.const 1 + local.get $ey + i32.sub + i32.shl + local.set $uy + else + local.get $uy + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $uy + local.get $uy + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $uy + end + loop $while-continue|0 + local.get $ex + local.get $ey + i32.gt_s + if + local.get $ux + local.get $uy + i32.ge_u + if + local.get $ux + local.get $uy + i32.eq + if + f32.const 0 + local.get $x + f32.mul + return + end + local.get $ux + local.get $uy + i32.sub + local.set $ux + end + local.get $ux + i32.const 1 + i32.shl + local.set $ux + local.get $ex + i32.const 1 + i32.sub + local.set $ex + br $while-continue|0 + end + end + local.get $ux + local.get $uy + i32.ge_u + if + local.get $ux + local.get $uy + i32.eq + if + f32.const 0 + local.get $x + f32.mul + return + end + local.get $ux + local.get $uy + i32.sub + local.set $ux + end + local.get $ux + i32.const 8 + i32.shl + i32.clz + local.set $shift + local.get $ex + local.get $shift + i32.sub + local.set $ex + local.get $ux + local.get $shift + i32.shl + local.set $ux + local.get $ex + i32.const 0 + i32.gt_s + if + local.get $ux + i32.const 1 + i32.const 23 + i32.shl + i32.sub + local.set $ux + local.get $ux + local.get $ex + i32.const 23 + i32.shl + i32.or + local.set $ux + else + local.get $ux + i32.const 0 + local.get $ex + i32.sub + i32.const 1 + i32.add + i32.shr_u + local.set $ux + end + local.get $ux + local.get $sm + i32.or + f32.reinterpret_i32 + return + ) + (func $std/mod/check (param $actual f32) (param $expected f32) (result i32) + local.get $expected + local.get $expected + f32.ne + if + local.get $actual + local.get $actual + f32.ne + return + end + local.get $expected + f32.const 0 + f32.eq + if + i32.const 1 + f32.convert_i32_u + local.get $expected + f32.div + f32.const 1 + local.get $actual + f32.div + f32.eq + return + end + local.get $actual + local.get $expected + f32.eq + return + ) + (func $std/mod/test_fmodf (param $left f32) (param $right f32) (param $expected f32) (result i32) + local.get $left + local.get $right + call $~lib/math/NativeMathf.mod + local.get $expected + call $std/mod/check + return + ) + (func $start:std/mod + f64.const 3 + f64.const 2 + f64.const 1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3 + f64.const -2 + f64.const 1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3 + f64.const 2 + f64.const -1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3 + f64.const -2 + f64.const -1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.5 + f64.const 2 + f64.const 1.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.5 + f64.const -2 + f64.const 1.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3.5 + f64.const 2 + f64.const -1.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3.5 + f64.const -2 + f64.const -1.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3 + f64.const 2.5 + f64.const 0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3 + f64.const -2.5 + f64.const 0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3 + f64.const 2.5 + f64.const -0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3 + f64.const -2.5 + f64.const -0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + f64.const 0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const -1 + f64.const 0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 1 + f64.const -0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -1 + f64.const -0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 1 + f64.const 0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const -1 + f64.const 0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const 1 + f64.const -0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const -1 + f64.const -0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.25 + f64.const 1 + f64.const 0.25 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.25 + f64.const -1 + f64.const 0.25 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.25 + f64.const 1 + f64.const -0.25 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.25 + f64.const -1 + f64.const -0.25 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1.25 + f64.const 1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -1.25 + f64.const 1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 1.25 + f64.const -1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 45 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1.25 + f64.const -1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -13 + f64.const 64 + f64.const -13 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 52 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const -0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 55 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + f64.const 0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + f64.const -0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 57 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 58 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 65 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.const 0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 71 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.const -0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.neg + f64.const 0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.neg + f64.const -0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const 1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 75 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.const -1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 76 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.neg + f64.const 1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.neg + f64.const -1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 80 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 81 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 82 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const 1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 85 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const -1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 86 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 88 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 91 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const inf + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const inf + f64.neg + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3 + f32.const 2 + f32.const 1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 103 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3 + f32.const -2 + f32.const 1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 104 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3 + f32.const 2 + f32.const -1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3 + f32.const -2 + f32.const -1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3.5 + f32.const 2 + f32.const 1.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3.5 + f32.const -2 + f32.const 1.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3.5 + f32.const 2 + f32.const -1.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3.5 + f32.const -2 + f32.const -1.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3 + f32.const 2.5 + f32.const 0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3 + f32.const -2.5 + f32.const 0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3 + f32.const 2.5 + f32.const -0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3 + f32.const -2.5 + f32.const -0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 1 + f32.const 0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const -1 + f32.const 0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 1 + f32.const -0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -1 + f32.const -0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 118 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const 1 + f32.const 0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const -1 + f32.const 0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + f32.const 1 + f32.const -0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + f32.const -1 + f32.const -0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 122 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 130 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 132 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 133 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 134 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 135 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 136 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 138 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 139 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 141 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.const 0 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.const -0 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.neg + f32.const 0 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.neg + f32.const -0 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 145 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.const 1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 146 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.const -1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 147 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.neg + f32.const 1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 148 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.neg + f32.const -1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 149 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 150 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const 1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const -1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 159 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.neg + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 160 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const nan:0x400000 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const inf + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 164 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const inf + f32.neg + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 165 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:std/mod + ) +) diff --git a/tests/compiler/std/mod.js b/tests/compiler/std/mod.js index b2814c4ffd..3d83dd24c3 100644 --- a/tests/compiler/std/mod.js +++ b/tests/compiler/std/mod.js @@ -1,5 +1,5 @@ -exports.preInstantiate = function(imports, exports) { +export function preInstantiate(imports, exports) { imports.mod = { mod: function(a, b) { return a % b; } }; -}; +} diff --git a/tests/compiler/std/mod.json b/tests/compiler/std/mod.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/std/mod.json +++ b/tests/compiler/std/mod.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/std/mod.optimized.wat b/tests/compiler/std/mod.optimized.wat deleted file mode 100644 index 17c732c475..0000000000 --- a/tests/compiler/std/mod.optimized.wat +++ /dev/null @@ -1,2260 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s") - (export "memory" (memory $0)) - (export "mod" (func $std/mod/mod)) - (start $~start) - (func $~lib/math/NativeMath.mod (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i64) - local.get $1 - f64.abs - f64.const 1 - f64.eq - if - local.get $0 - local.get $0 - f64.trunc - f64.sub - local.get $0 - f64.copysign - return - end - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $5 - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 63 - i64.shr_u - local.set $7 - i32.const 1 - local.get $1 - local.get $1 - f64.ne - i32.const 1 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $4 - i64.const 2047 - i64.eq - local.get $3 - i64.const 1 - i64.shl - local.tee $6 - i64.eqz - select - select - if - local.get $0 - local.get $1 - f64.mul - local.tee $0 - local.get $0 - f64.div - return - end - block $folding-inner0 - local.get $2 - i64.const 1 - i64.shl - local.tee $8 - local.get $6 - i64.le_u - if - local.get $6 - local.get $8 - i64.eq - br_if $folding-inner0 - local.get $0 - return - end - local.get $4 - i64.eqz - if (result i64) - local.get $2 - i64.const 0 - local.get $4 - local.get $2 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $4 - i64.sub - i64.const 1 - i64.add - i64.shl - else - local.get $2 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $2 - local.get $5 - i64.eqz - if (result i64) - local.get $3 - i64.const 0 - local.get $5 - local.get $3 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $5 - i64.sub - i64.const 1 - i64.add - i64.shl - else - local.get $3 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $3 - loop $while-continue|0 - local.get $4 - local.get $5 - i64.gt_s - if - local.get $2 - local.get $3 - i64.ge_u - if (result i64) - local.get $2 - local.get $3 - i64.eq - br_if $folding-inner0 - local.get $2 - local.get $3 - i64.sub - else - local.get $2 - end - i64.const 1 - i64.shl - local.set $2 - local.get $4 - i64.const 1 - i64.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i64.ge_u - if - local.get $2 - local.get $3 - i64.eq - br_if $folding-inner0 - local.get $2 - local.get $3 - i64.sub - local.set $2 - end - local.get $2 - local.get $2 - i64.const 11 - i64.shl - i64.clz - local.tee $3 - i64.shl - local.set $2 - local.get $4 - local.get $3 - i64.sub - local.tee $4 - i64.const 0 - i64.gt_s - if (result i64) - local.get $2 - i64.const 4503599627370496 - i64.sub - local.get $4 - i64.const 52 - i64.shl - i64.or - else - local.get $2 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shr_u - end - local.get $7 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 - return - end - f64.const 0 - local.get $0 - f64.mul - ) - (func $std/mod/check (param $0 f64) (param $1 f64) (result i32) - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - local.get $0 - f64.ne - return - end - local.get $1 - f64.const 0 - f64.eq - if - f64.const 1 - local.get $1 - f64.div - f64.const 1 - local.get $0 - f64.div - f64.eq - return - end - local.get $0 - local.get $1 - f64.eq - ) - (func $std/mod/test_fmod (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.mod - local.get $2 - call $std/mod/check - if (result i32) - local.get $0 - local.get $1 - call $std/mod/mod - local.get $2 - call $std/mod/check - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - f32.abs - f32.const 1 - f32.eq - if - local.get $0 - local.get $0 - f32.trunc - f32.sub - local.get $0 - f32.copysign - return - end - local.get $1 - i32.reinterpret_f32 - local.tee $3 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $5 - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const -2147483648 - i32.and - local.set $7 - i32.const 1 - local.get $1 - local.get $1 - f32.ne - local.get $2 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $4 - i32.const 255 - i32.eq - i32.const 1 - local.get $3 - i32.const 1 - i32.shl - local.tee $6 - select - select - if - local.get $0 - local.get $1 - f32.mul - local.tee $0 - local.get $0 - f32.div - return - end - block $folding-inner0 - local.get $2 - i32.const 1 - i32.shl - local.tee $8 - local.get $6 - i32.le_u - if - local.get $6 - local.get $8 - i32.eq - br_if $folding-inner0 - local.get $0 - return - end - local.get $4 - if (result i32) - local.get $2 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $2 - i32.const 1 - local.get $4 - local.get $2 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $4 - i32.sub - i32.shl - end - local.set $2 - local.get $5 - if (result i32) - local.get $3 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $3 - i32.const 1 - local.get $5 - local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $5 - i32.sub - i32.shl - end - local.set $3 - loop $while-continue|0 - local.get $4 - local.get $5 - i32.gt_s - if - local.get $2 - local.get $3 - i32.ge_u - if (result i32) - local.get $2 - local.get $3 - i32.eq - br_if $folding-inner0 - local.get $2 - local.get $3 - i32.sub - else - local.get $2 - end - i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq - br_if $folding-inner0 - local.get $2 - local.get $3 - i32.sub - local.set $2 - end - local.get $2 - local.get $2 - i32.const 8 - i32.shl - i32.clz - local.tee $3 - i32.shl - local.set $2 - local.get $4 - local.get $3 - i32.sub - local.tee $4 - i32.const 0 - i32.gt_s - if (result i32) - local.get $2 - i32.const 8388608 - i32.sub - local.get $4 - i32.const 23 - i32.shl - i32.or - else - local.get $2 - i32.const 1 - local.get $4 - i32.sub - i32.shr_u - end - local.get $7 - i32.or - f32.reinterpret_i32 - return - end - f32.const 0 - local.get $0 - f32.mul - ) - (func $std/mod/test_fmodf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - block $__inlined_func$std/mod/check (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.mod - local.tee $0 - local.get $0 - f32.ne - local.get $2 - local.get $2 - f32.ne - br_if $__inlined_func$std/mod/check - drop - f32.const 1 - local.get $2 - f32.div - f32.const 1 - local.get $0 - f32.div - f32.eq - local.get $2 - f32.const 0 - f32.eq - br_if $__inlined_func$std/mod/check - drop - local.get $0 - local.get $2 - f32.eq - end - ) - (func $start:std/mod - f64.const 3 - f64.const 2 - f64.const 1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3 - f64.const -2 - f64.const 1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3 - f64.const 2 - f64.const -1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3 - f64.const -2 - f64.const -1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.5 - f64.const 2 - f64.const 1.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.5 - f64.const -2 - f64.const 1.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3.5 - f64.const 2 - f64.const -1.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3.5 - f64.const -2 - f64.const -1.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3 - f64.const 2.5 - f64.const 0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3 - f64.const -2.5 - f64.const 0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3 - f64.const 2.5 - f64.const -0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3 - f64.const -2.5 - f64.const -0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const -1 - f64.const 0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 1 - f64.const -0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -1 - f64.const -0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 1 - f64.const 0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const -1 - f64.const 0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const 1 - f64.const -0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const -1 - f64.const -0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.25 - f64.const 1 - f64.const 0.25 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.25 - f64.const -1 - f64.const 0.25 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.25 - f64.const 1 - f64.const -0.25 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.25 - f64.const -1 - f64.const -0.25 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1.25 - f64.const 1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1.25 - f64.const 1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1.25 - f64.const -1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 45 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1.25 - f64.const -1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -13 - f64.const 64 - f64.const -13 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 53 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 54 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const -0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 55 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const 0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const -0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 57 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 60 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 65 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 67 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 68 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const 0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 71 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const -0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -inf - f64.const 0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -inf - f64.const -0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 74 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const 1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 75 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const -1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 76 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -inf - f64.const 1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -inf - f64.const -1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 80 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 81 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 82 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 83 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const 1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 85 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 86 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const inf - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 88 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -inf - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 89 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 90 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 91 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const inf - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 93 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -inf - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 94 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3 - f32.const 2 - f32.const 1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3 - f32.const -2 - f32.const 1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3 - f32.const 2 - f32.const -1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3 - f32.const -2 - f32.const -1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3.5 - f32.const 2 - f32.const 1.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3.5 - f32.const -2 - f32.const 1.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3.5 - f32.const 2 - f32.const -1.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 109 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3.5 - f32.const -2 - f32.const -1.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3 - f32.const 2.5 - f32.const 0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3 - f32.const -2.5 - f32.const 0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 112 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3 - f32.const 2.5 - f32.const -0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3 - f32.const -2.5 - f32.const -0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const -1 - f32.const 0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 1 - f32.const -0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -1 - f32.const -0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 118 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const 1 - f32.const 0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const -1 - f32.const 0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32.const 1 - f32.const -0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32.const -1 - f32.const -0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 122 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 125 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 126 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 127 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 128 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 129 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 130 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 131 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 132 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 133 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 134 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 135 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 136 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 138 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 139 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 141 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 142 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const -0 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -inf - f32.const 0 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 144 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -inf - f32.const -0 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 145 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const 1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 146 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const -1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 147 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -inf - f32.const 1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 148 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -inf - f32.const -1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 149 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 150 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 152 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 153 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 154 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 155 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const 1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 158 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const inf - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 159 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -inf - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 160 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 161 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const inf - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 164 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -inf - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 165 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/mod - ) -) diff --git a/tests/compiler/std/mod.release.wat b/tests/compiler/std/mod.release.wat new file mode 100644 index 0000000000..1fbd3592bf --- /dev/null +++ b/tests/compiler/std/mod.release.wat @@ -0,0 +1,2270 @@ +(module + (type $0 (func)) + (type $1 (func (param f64 f64) (result f64))) + (type $2 (func (param f64 f64 f64) (result i32))) + (type $3 (func (param i32 i32 i32 i32))) + (type $4 (func (param f32 f32 f32) (result i32))) + (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s") + (export "mod" (func $std/mod/mod)) + (export "memory" (memory $0)) + (start $~start) + (func $std/mod/test_fmod (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i64) + (local $4 f64) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + block $__inlined_func$std/mod/check (result i32) + block $__inlined_func$~lib/math/NativeMath.mod (result f64) + local.get $0 + local.get $0 + f64.trunc + f64.sub + local.get $0 + f64.copysign + local.get $1 + f64.abs + f64.const 1 + f64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod + drop + local.get $1 + i64.reinterpret_f64 + local.tee $8 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $9 + local.get $8 + i64.const 1 + i64.shl + local.tee $6 + i64.eqz + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $10 + i64.const 2047 + i64.eq + i32.or + local.get $1 + local.get $1 + f64.ne + i32.or + if + local.get $0 + local.get $1 + f64.mul + local.tee $4 + local.get $4 + f64.div + br $__inlined_func$~lib/math/NativeMath.mod + end + local.get $5 + i64.const 1 + i64.shl + local.tee $3 + local.get $6 + i64.le_u + if + local.get $0 + local.get $3 + local.get $6 + i64.ne + f64.convert_i32_u + f64.mul + br $__inlined_func$~lib/math/NativeMath.mod + end + local.get $5 + i64.const 63 + i64.shr_u + local.set $7 + local.get $10 + i64.eqz + if (result i64) + local.get $5 + i64.const 1 + local.get $10 + local.get $5 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $10 + i64.sub + i64.shl + else + local.get $5 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $3 + local.get $9 + i64.eqz + if (result i64) + local.get $8 + i64.const 1 + local.get $9 + local.get $8 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $9 + i64.sub + i64.shl + else + local.get $8 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $5 + loop $while-continue|0 + local.get $9 + local.get $10 + i64.lt_s + if + local.get $3 + local.get $5 + i64.ge_u + if (result i64) + local.get $0 + f64.const 0 + f64.mul + local.get $3 + local.get $5 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod + drop + local.get $3 + local.get $5 + i64.sub + else + local.get $3 + end + i64.const 1 + i64.shl + local.set $3 + local.get $10 + i64.const 1 + i64.sub + local.set $10 + br $while-continue|0 + end + end + local.get $3 + local.get $5 + i64.ge_u + if + local.get $0 + f64.const 0 + f64.mul + local.get $3 + local.get $5 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod + drop + local.get $3 + local.get $5 + i64.sub + local.set $3 + end + local.get $10 + local.get $3 + i64.const 11 + i64.shl + i64.clz + local.tee $6 + i64.sub + local.set $5 + local.get $3 + local.get $6 + i64.shl + local.set $3 + local.get $5 + i64.const 0 + i64.gt_s + if (result i64) + local.get $3 + i64.const 4503599627370496 + i64.sub + local.get $5 + i64.const 52 + i64.shl + i64.or + else + local.get $3 + i64.const 1 + local.get $5 + i64.sub + i64.shr_u + end + local.get $7 + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + end + local.tee $4 + local.get $4 + f64.ne + local.get $2 + local.get $2 + f64.ne + br_if $__inlined_func$std/mod/check + drop + f64.const 1 + local.get $2 + f64.div + f64.const 1 + local.get $4 + f64.div + f64.eq + local.get $2 + f64.const 0 + f64.eq + br_if $__inlined_func$std/mod/check + drop + local.get $2 + local.get $4 + f64.eq + end + if (result i32) + block $__inlined_func$std/mod/check$1 (result i32) + local.get $0 + local.get $1 + call $std/mod/mod + local.tee $0 + local.get $0 + f64.ne + local.get $2 + local.get $2 + f64.ne + br_if $__inlined_func$std/mod/check$1 + drop + f64.const 1 + local.get $2 + f64.div + f64.const 1 + local.get $0 + f64.div + f64.eq + local.get $2 + f64.const 0 + f64.eq + br_if $__inlined_func$std/mod/check$1 + drop + local.get $0 + local.get $2 + f64.eq + end + else + i32.const 0 + end + ) + (func $std/mod/test_fmodf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + block $__inlined_func$std/mod/check$2 (result i32) + block $__inlined_func$~lib/math/NativeMathf.mod$1 (result f32) + local.get $0 + local.get $0 + f32.trunc + f32.sub + local.get $0 + f32.copysign + local.get $1 + f32.abs + f32.const 1 + f32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod$1 + drop + local.get $1 + i32.reinterpret_f32 + local.tee $7 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $8 + local.get $7 + i32.const 1 + i32.shl + local.tee $5 + i32.eqz + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $9 + i32.const 255 + i32.eq + i32.or + local.get $1 + local.get $1 + f32.ne + i32.or + if + local.get $0 + local.get $1 + f32.mul + local.tee $0 + local.get $0 + f32.div + br $__inlined_func$~lib/math/NativeMathf.mod$1 + end + local.get $4 + i32.const 1 + i32.shl + local.tee $3 + local.get $5 + i32.le_u + if + local.get $0 + local.get $3 + local.get $5 + i32.ne + f32.convert_i32_u + f32.mul + br $__inlined_func$~lib/math/NativeMathf.mod$1 + end + local.get $4 + i32.const -2147483648 + i32.and + local.set $6 + local.get $9 + if (result i32) + local.get $4 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $4 + i32.const 1 + local.get $9 + local.get $4 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $9 + i32.sub + i32.shl + end + local.set $3 + local.get $8 + if (result i32) + local.get $7 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $7 + i32.const 1 + local.get $8 + local.get $7 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $8 + i32.sub + i32.shl + end + local.set $4 + loop $while-continue|0 + local.get $8 + local.get $9 + i32.lt_s + if + local.get $3 + local.get $4 + i32.ge_u + if (result i32) + local.get $0 + f32.const 0 + f32.mul + local.get $3 + local.get $4 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod$1 + drop + local.get $3 + local.get $4 + i32.sub + else + local.get $3 + end + i32.const 1 + i32.shl + local.set $3 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + br $while-continue|0 + end + end + local.get $3 + local.get $4 + i32.ge_u + if + local.get $0 + f32.const 0 + f32.mul + local.get $3 + local.get $4 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod$1 + drop + local.get $3 + local.get $4 + i32.sub + local.set $3 + end + local.get $9 + local.get $3 + i32.const 8 + i32.shl + i32.clz + local.tee $5 + i32.sub + local.set $4 + local.get $3 + local.get $5 + i32.shl + local.set $3 + local.get $4 + i32.const 0 + i32.gt_s + if (result i32) + local.get $3 + i32.const 8388608 + i32.sub + local.get $4 + i32.const 23 + i32.shl + i32.or + else + local.get $3 + i32.const 1 + local.get $4 + i32.sub + i32.shr_u + end + local.get $6 + i32.or + f32.reinterpret_i32 + end + local.tee $0 + local.get $0 + f32.ne + local.get $2 + local.get $2 + f32.ne + br_if $__inlined_func$std/mod/check$2 + drop + f32.const 1 + local.get $2 + f32.div + f32.const 1 + local.get $0 + f32.div + f32.eq + local.get $2 + f32.const 0 + f32.eq + br_if $__inlined_func$std/mod/check$2 + drop + local.get $0 + local.get $2 + f32.eq + end + ) + (func $start:std/mod + f64.const 3 + f64.const 2 + f64.const 1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3 + f64.const -2 + f64.const 1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3 + f64.const 2 + f64.const -1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3 + f64.const -2 + f64.const -1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.5 + f64.const 2 + f64.const 1.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3.5 + f64.const -2 + f64.const 1.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3.5 + f64.const 2 + f64.const -1.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3.5 + f64.const -2 + f64.const -1.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3 + f64.const 2.5 + f64.const 0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 3 + f64.const -2.5 + f64.const 0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3 + f64.const 2.5 + f64.const -0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -3 + f64.const -2.5 + f64.const -0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const 1 + f64.const 0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.5 + f64.const -1 + f64.const 0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const 1 + f64.const -0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.5 + f64.const -1 + f64.const -0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const 1 + f64.const 0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.5 + f64.const -1 + f64.const 0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const 1 + f64.const -0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.5 + f64.const -1 + f64.const -0.5 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.25 + f64.const 1 + f64.const 0.25 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.25 + f64.const -1 + f64.const 0.25 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.25 + f64.const 1 + f64.const -0.25 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.25 + f64.const -1 + f64.const -0.25 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1.25 + f64.const 1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -1.25 + f64.const 1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 1.25 + f64.const -1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 45 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -1.25 + f64.const -1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -13 + f64.const 64 + f64.const -13 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 52 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + f64.const 0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 1 + f64.const -0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 55 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -1 + f64.const 0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -1 + f64.const -0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 57 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 58 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 65 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const 1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const inf + f64.const 0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 71 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const inf + f64.const -0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -inf + f64.const 0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const -inf + f64.const -0 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const inf + f64.const 1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 75 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const inf + f64.const -1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 76 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -inf + f64.const 1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + f64.const -inf + f64.const -1 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 80 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 81 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -0 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 82 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const 1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const 1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 85 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -1 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 86 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const inf + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 88 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const -inf + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const -inf + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 91 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const inf + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const -inf + f64.const nan:0x8000000000000 + call $std/mod/test_fmod + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3 + f32.const 2 + f32.const 1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 103 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3 + f32.const -2 + f32.const 1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 104 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3 + f32.const 2 + f32.const -1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3 + f32.const -2 + f32.const -1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3.5 + f32.const 2 + f32.const 1.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3.5 + f32.const -2 + f32.const 1.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3.5 + f32.const 2 + f32.const -1.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3.5 + f32.const -2 + f32.const -1.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3 + f32.const 2.5 + f32.const 0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3 + f32.const -2.5 + f32.const 0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3 + f32.const 2.5 + f32.const -0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3 + f32.const -2.5 + f32.const -0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const 1 + f32.const 0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0.5 + f32.const -1 + f32.const 0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const 1 + f32.const -0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0.5 + f32.const -1 + f32.const -0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 118 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const 1 + f32.const 0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.5 + f32.const -1 + f32.const 0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + f32.const 1 + f32.const -0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.5 + f32.const -1 + f32.const -0.5 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 122 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 130 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 132 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 133 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 134 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 135 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 136 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 138 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const 1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 139 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 141 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const inf + f32.const 0 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const inf + f32.const -0 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -inf + f32.const 0 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const -inf + f32.const -0 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 145 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const inf + f32.const 1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 146 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const inf + f32.const -1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 147 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -inf + f32.const 1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 148 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1 + f32.const -inf + f32.const -1 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 149 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 150 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -0 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const 1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const 1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -1 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const inf + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 159 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const -inf + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 160 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const -inf + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -inf + f32.const nan:0x400000 + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const inf + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 164 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const -inf + f32.const nan:0x400000 + call $std/mod/test_fmodf + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 165 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:std/mod + ) +) diff --git a/tests/compiler/std/mod.untouched.wat b/tests/compiler/std/mod.untouched.wat deleted file mode 100644 index 942c93ec43..0000000000 --- a/tests/compiler/std/mod.untouched.wat +++ /dev/null @@ -1,2420 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) - (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s\00") - (table $0 1 funcref) - (global $std/mod/js i32 (i32.const 1)) - (export "memory" (memory $0)) - (export "mod" (func $std/mod/mod)) - (start $~start) - (func $~lib/math/NativeMath.mod (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 f64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - local.get $1 - f64.abs - f64.const 1 - f64.eq - if - local.get $0 - local.get $0 - f64.trunc - f64.sub - local.get $0 - f64.copysign - return - end - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $4 - local.get $3 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $5 - local.get $2 - i64.const 63 - i64.shr_u - local.set $6 - local.get $3 - i64.const 1 - i64.shl - local.set $7 - local.get $7 - i64.const 0 - i64.eq - if (result i32) - i32.const 1 - else - local.get $4 - i64.const 2047 - i64.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f64.ne - end - if - local.get $0 - local.get $1 - f64.mul - local.set $8 - local.get $8 - local.get $8 - f64.div - return - end - local.get $2 - i64.const 1 - i64.shl - local.set $9 - local.get $9 - local.get $7 - i64.le_u - if - local.get $9 - local.get $7 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $0 - return - end - local.get $4 - i64.const 0 - i64.ne - i32.eqz - if - local.get $4 - local.get $2 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $4 - local.get $2 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shl - local.set $2 - else - local.get $2 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $2 - local.get $2 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $2 - end - local.get $5 - i64.const 0 - i64.ne - i32.eqz - if - local.get $5 - local.get $3 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $5 - local.get $3 - i64.const 0 - local.get $5 - i64.sub - i64.const 1 - i64.add - i64.shl - local.set $3 - else - local.get $3 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $3 - local.get $3 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $3 - end - loop $while-continue|0 - local.get $4 - local.get $5 - i64.gt_s - local.set $10 - local.get $10 - if - local.get $2 - local.get $3 - i64.ge_u - if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 - end - local.get $2 - i64.const 1 - i64.shl - local.set $2 - local.get $4 - i64.const 1 - i64.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i64.ge_u - if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 - end - local.get $2 - i64.const 11 - i64.shl - i64.clz - local.set $11 - local.get $4 - local.get $11 - i64.sub - local.set $4 - local.get $2 - local.get $11 - i64.shl - local.set $2 - local.get $4 - i64.const 0 - i64.gt_s - if - local.get $2 - i64.const 1 - i64.const 52 - i64.shl - i64.sub - local.set $2 - local.get $2 - local.get $4 - i64.const 52 - i64.shl - i64.or - local.set $2 - else - local.get $2 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shr_u - local.set $2 - end - local.get $2 - local.get $6 - i64.const 63 - i64.shl - i64.or - local.set $2 - local.get $2 - f64.reinterpret_i64 - ) - (func $std/mod/check (param $0 f64) (param $1 f64) (result i32) - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - local.get $0 - f64.ne - return - end - local.get $1 - f64.const 0 - f64.eq - if - i32.const 1 - f64.convert_i32_u - local.get $1 - f64.div - f64.const 1 - local.get $0 - f64.div - f64.eq - return - end - local.get $0 - local.get $1 - f64.eq - ) - (func $std/mod/test_fmod (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.mod - local.get $2 - call $std/mod/check - if (result i32) - global.get $std/mod/js - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - call $std/mod/mod - local.get $2 - call $std/mod/check - end - else - i32.const 0 - end - ) - (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - f32.abs - f32.const 1 - f32.eq - if - local.get $0 - local.get $0 - f32.trunc - f32.sub - local.get $0 - f32.copysign - return - end - local.get $0 - i32.reinterpret_f32 - local.set $2 - local.get $1 - i32.reinterpret_f32 - local.set $3 - local.get $2 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $4 - local.get $3 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $5 - local.get $2 - i32.const -2147483648 - i32.and - local.set $6 - local.get $3 - i32.const 1 - i32.shl - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $4 - i32.const 255 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f32.ne - end - if - local.get $0 - local.get $1 - f32.mul - local.set $8 - local.get $8 - local.get $8 - f32.div - return - end - local.get $2 - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $7 - i32.le_u - if - local.get $9 - local.get $7 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $0 - return - end - local.get $4 - i32.eqz - if - local.get $4 - local.get $2 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $4 - local.get $2 - i32.const 0 - local.get $4 - i32.sub - i32.const 1 - i32.add - i32.shl - local.set $2 - else - local.get $2 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $2 - local.get $2 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $2 - end - local.get $5 - i32.eqz - if - local.get $5 - local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $5 - local.get $3 - i32.const 0 - local.get $5 - i32.sub - i32.const 1 - i32.add - i32.shl - local.set $3 - else - local.get $3 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $3 - local.get $3 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $3 - end - loop $while-continue|0 - local.get $4 - local.get $5 - i32.gt_s - local.set $10 - local.get $10 - if - local.get $2 - local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 - end - local.get $2 - i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 - end - local.get $2 - i32.const 8 - i32.shl - i32.clz - local.set $11 - local.get $4 - local.get $11 - i32.sub - local.set $4 - local.get $2 - local.get $11 - i32.shl - local.set $2 - local.get $4 - i32.const 0 - i32.gt_s - if - local.get $2 - i32.const 1 - i32.const 23 - i32.shl - i32.sub - local.set $2 - local.get $2 - local.get $4 - i32.const 23 - i32.shl - i32.or - local.set $2 - else - local.get $2 - i32.const 0 - local.get $4 - i32.sub - i32.const 1 - i32.add - i32.shr_u - local.set $2 - end - local.get $2 - local.get $6 - i32.or - local.set $2 - local.get $2 - f32.reinterpret_i32 - ) - (func $std/mod/check (param $0 f32) (param $1 f32) (result i32) - local.get $1 - local.get $1 - f32.ne - if - local.get $0 - local.get $0 - f32.ne - return - end - local.get $1 - f32.const 0 - f32.eq - if - i32.const 1 - f32.convert_i32_u - local.get $1 - f32.div - f32.const 1 - local.get $0 - f32.div - f32.eq - return - end - local.get $0 - local.get $1 - f32.eq - ) - (func $std/mod/test_fmodf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMathf.mod - local.get $2 - call $std/mod/check - ) - (func $start:std/mod - f64.const 3 - f64.const 2 - f64.const 1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3 - f64.const -2 - f64.const 1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3 - f64.const 2 - f64.const -1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3 - f64.const -2 - f64.const -1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.5 - f64.const 2 - f64.const 1.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3.5 - f64.const -2 - f64.const 1.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3.5 - f64.const 2 - f64.const -1.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3.5 - f64.const -2 - f64.const -1.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3 - f64.const 2.5 - f64.const 0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 3 - f64.const -2.5 - f64.const 0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3 - f64.const 2.5 - f64.const -0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -3 - f64.const -2.5 - f64.const -0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const 1 - f64.const 0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.5 - f64.const -1 - f64.const 0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const 1 - f64.const -0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.5 - f64.const -1 - f64.const -0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const 1 - f64.const 0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.5 - f64.const -1 - f64.const 0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const 1 - f64.const -0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.5 - f64.const -1 - f64.const -0.5 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.25 - f64.const 1 - f64.const 0.25 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.25 - f64.const -1 - f64.const 0.25 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.25 - f64.const 1 - f64.const -0.25 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.25 - f64.const -1 - f64.const -0.25 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1.25 - f64.const 1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1.25 - f64.const 1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 1.25 - f64.const -1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 45 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -1.25 - f64.const -1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -13 - f64.const 64 - f64.const -13 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 53 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - f64.const 0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 54 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 1 - f64.const -0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 55 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1 - f64.const 0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1 - f64.const -0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 57 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 60 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 65 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 67 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const 1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 68 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const -1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.const 0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 71 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.const -0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const inf - f64.neg - f64.const 0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const inf - f64.neg - f64.const -0 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 74 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.const 1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 75 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.const -1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 76 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const inf - f64.neg - f64.const 1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - f64.const inf - f64.neg - f64.const -1 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 80 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 81 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -0 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 82 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const 1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 83 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const 1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 85 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const -1 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 86 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 88 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 89 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 90 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 91 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const inf - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 93 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const inf - f64.neg - f64.const nan:0x8000000000000 - call $std/mod/test_fmod - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 94 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3 - f32.const 2 - f32.const 1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3 - f32.const -2 - f32.const 1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3 - f32.const 2 - f32.const -1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3 - f32.const -2 - f32.const -1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3.5 - f32.const 2 - f32.const 1.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3.5 - f32.const -2 - f32.const 1.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3.5 - f32.const 2 - f32.const -1.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 109 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3.5 - f32.const -2 - f32.const -1.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3 - f32.const 2.5 - f32.const 0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 3 - f32.const -2.5 - f32.const 0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 112 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3 - f32.const 2.5 - f32.const -0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -3 - f32.const -2.5 - f32.const -0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const 1 - f32.const 0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0.5 - f32.const -1 - f32.const 0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const 1 - f32.const -0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0.5 - f32.const -1 - f32.const -0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 118 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const 1 - f32.const 0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1.5 - f32.const -1 - f32.const 0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32.const 1 - f32.const -0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1.5 - f32.const -1 - f32.const -0.5 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 122 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 125 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 126 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 127 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 128 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 129 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 130 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 131 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 132 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 133 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 134 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 135 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 136 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 138 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const 1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 139 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const -1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 141 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.const 0 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 142 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.const -0 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const inf - f32.neg - f32.const 0 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 144 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const inf - f32.neg - f32.const -0 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 145 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.const 1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 146 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.const -1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 147 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const inf - f32.neg - f32.const 1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 148 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -1 - f32.const inf - f32.neg - f32.const -1 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 149 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 150 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 152 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -0 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 153 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const 1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 154 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 155 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const 1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const -1 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 158 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 159 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.neg - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 160 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 161 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const nan:0x400000 - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const inf - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 164 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const inf - f32.neg - f32.const nan:0x400000 - call $std/mod/test_fmodf - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 165 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/mod - ) -) diff --git a/tests/compiler/std/new.debug.wat b/tests/compiler/std/new.debug.wat new file mode 100644 index 0000000000..5979cb6867 --- /dev/null +++ b/tests/compiler/std/new.debug.wat @@ -0,0 +1,2431 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 f32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 f32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $std/new/AClass.aStaticField (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $std/new/aClass (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 416)) + (global $~lib/memory/__data_end i32 (i32.const 440)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33208)) + (global $~lib/memory/__heap_base i32 (i32.const 33208)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 416) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $std/new/AClass#get:aField (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $std/new/AClass#set:aField (param $this i32) (param $aField i32) + local.get $this + local.get $aField + i32.store + ) + (func $std/new/AClass#set:anotherField (param $this i32) (param $anotherField f32) + local.get $this + local.get $anotherField + f32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $start:std/new + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + f32.const 3 + call $std/new/AClass#constructor + global.set $std/new/aClass + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/new/aClass + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $std/new/AClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/new/AClass $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:std/new + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33232 + i32.const 33280 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $std/new/AClass#constructor (param $this i32) (param $value f32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $std/new/AClass#set:aField + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 2 + call $std/new/AClass#set:anotherField + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $std/new/AClass#get:aField + i32.const 1 + i32.add + call $std/new/AClass#set:aField + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $value + call $std/new/AClass#set:anotherField + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) +) diff --git a/tests/compiler/std/new.json b/tests/compiler/std/new.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/std/new.json +++ b/tests/compiler/std/new.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat deleted file mode 100644 index fed550f22d..0000000000 --- a/tests/compiler/std/new.optimized.wat +++ /dev/null @@ -1,71 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (export "memory" (memory $0)) - (start $~start) - (func $~start - (local $0 i32) - (local $1 i32) - i32.const 1056 - memory.size - local.tee $1 - i32.const 16 - i32.shl - local.tee $0 - i32.gt_u - if - local.get $1 - i32.const 66591 - local.get $0 - i32.sub - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $1 - local.get $0 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - i32.const 1024 - i32.const 16 - i32.store - i32.const 1028 - i32.const 1 - i32.store - i32.const 1032 - i32.const 3 - i32.store - i32.const 1036 - i32.const 8 - i32.store - i32.const 1040 - i32.const 1 - i32.store - i32.const 1044 - f32.const 2 - f32.store - i32.const 1040 - i32.const 1040 - i32.load - i32.const 1 - i32.add - i32.store - i32.const 1044 - f32.const 3 - f32.store - ) -) diff --git a/tests/compiler/std/new.release.wat b/tests/compiler/std/new.release.wat new file mode 100644 index 0000000000..012ec7a6db --- /dev/null +++ b/tests/compiler/std/new.release.wat @@ -0,0 +1,1494 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $std/new/aClass (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34232)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1440) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $std/new/aClass + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$113 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34232 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$113 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34232 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34232 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34232 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $1 + i32.load offset=1568 + local.get $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $0 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $1 + local.get $0 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $1 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $2 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $2 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $1 + local.get $2 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $2 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 8 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i64.const 0 + i64.store align=1 + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $std/new/AClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/new/AClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + memory.size + i32.const 16 + i32.shl + i32.const 34232 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1464 + i32.lt_s + if + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 2 + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 3 + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $std/new/aClass + ) +) diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat deleted file mode 100644 index f68b606bcb..0000000000 --- a/tests/compiler/std/new.untouched.wat +++ /dev/null @@ -1,174 +0,0 @@ -(module - (type $none_=>_none (func)) - (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_f32_=>_i32 (func (param i32 f32) (result i32))) - (memory $0 0) - (table $0 1 funcref) - (global $std/new/AClass.aStaticField (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $std/new/aClass (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $std/new/AClass#constructor (param $0 i32) (param $1 f32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - f32.const 2 - f32.store offset=4 - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.add - i32.store - local.get $0 - local.get $1 - f32.store offset=4 - local.get $0 - ) - (func $start:std/new - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - f32.const 3 - call $std/new/AClass#constructor - global.set $std/new/aClass - ) - (func $~start - call $start:std/new - ) -) diff --git a/tests/compiler/std/object-errors.json b/tests/compiler/std/object-errors.json new file mode 100644 index 0000000000..43657ac8af --- /dev/null +++ b/tests/compiler/std/object-errors.json @@ -0,0 +1,11 @@ +{ + "stderr": [ + "TS2335: 'super' can only be referenced in a derived class.", + "super(); // TS2335", + "TS2339: Property 'is' does not exist on type 'std/object-errors/ImplicitWithSuper'.", + "ImplicitWithSuper.is(1, 1); // TS2339", + "TS2377: Constructors for derived classes must contain a 'super' call.", + "constructor() {} // TS2377", + "EOF" + ] +} diff --git a/tests/compiler/std/object-errors.ts b/tests/compiler/std/object-errors.ts new file mode 100644 index 0000000000..7a412ec880 --- /dev/null +++ b/tests/compiler/std/object-errors.ts @@ -0,0 +1,14 @@ +class ImplicitWithSuper { + constructor() { + super(); // TS2335: 'super' can only be referenced in a derived class. + } +} +new ImplicitWithSuper(); +ImplicitWithSuper.is(1, 1); // TS2339: Property 'is' does not exist on type 'std/object-errors/ImplicitWithSuper'. + +class ExplicitWithoutSuper extends Object { + constructor() {} // TS2377: Constructors for derived classes must contain a 'super' call. +} +new ExplicitWithoutSuper(); + +ERROR("EOF"); diff --git a/tests/compiler/std/object.debug.wat b/tests/compiler/std/object.debug.wat new file mode 100644 index 0000000000..b2cfc90f1a --- /dev/null +++ b/tests/compiler/std/object.debug.wat @@ -0,0 +1,1224 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32))) + (type $3 (func)) + (type $4 (func (param f64 f64) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param f32 f32) (result i32))) + (type $7 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $8 (func (param i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/memory/__heap_base i32 (i32.const 316)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s\00\00\00") + (data $1 (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 188) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $6 (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/object/Object.is (param $x f64) (param $y f64) (result i32) + i32.const 1 + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $x + local.get $x + f64.ne + local.get $y + local.get $y + f64.ne + i32.and + local.get $x + i64.reinterpret_f64 + local.get $y + i64.reinterpret_f64 + i64.eq + i32.or + return + ) + (func $~lib/object/Object.is (param $x f32) (param $y f32) (result i32) + i32.const 1 + drop + i32.const 4 + i32.const 8 + i32.eq + drop + local.get $x + local.get $x + f32.ne + local.get $y + local.get $y + f32.ne + i32.and + local.get $x + i32.reinterpret_f32 + local.get $y + i32.reinterpret_f32 + i32.eq + i32.or + return + ) + (func $~lib/object/Object.is (param $x i32) (param $y i32) (result i32) + i32.const 0 + drop + local.get $x + local.get $y + i32.eq + return + ) + (func $~lib/object/Object.is (param $x i32) (param $y i32) (result i32) + i32.const 0 + drop + local.get $x + i32.const 0 + i32.ne + local.get $y + i32.const 0 + i32.ne + i32.eq + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + local.get $left + local.get $right + i32.eq + if + i32.const 1 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $left + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $left + i32.const 0 + local.get $right + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + return + ) + (func $~lib/object/Object.is<~lib/string/String> (param $x i32) (param $y i32) (result i32) + i32.const 0 + drop + local.get $x + local.get $y + call $~lib/string/String.__eq + return + ) + (func $~lib/object/Object.is<~lib/string/String|null> (param $x i32) (param $y i32) (result i32) + i32.const 0 + drop + local.get $x + local.get $y + call $~lib/string/String.__eq + return + ) + (func $~lib/rt/stub/maybeGrowMemory (param $newOffset i32) + (local $pagesBefore i32) + (local $maxOffset i32) + (local $pagesNeeded i32) + (local $4 i32) + (local $5 i32) + (local $pagesWanted i32) + memory.size + local.set $pagesBefore + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $maxOffset + local.get $newOffset + local.get $maxOffset + i32.gt_u + if + local.get $newOffset + local.get $maxOffset + i32.sub + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $4 + local.get $pagesNeeded + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $newOffset + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/stub/__alloc (param $size i32) (result i32) + (local $block i32) + (local $ptr i32) + (local $size|3 i32) + (local $payloadSize i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 208 + i32.const 272 + i32.const 33 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/stub/offset + local.set $block + global.get $~lib/rt/stub/offset + i32.const 4 + i32.add + local.set $ptr + block $~lib/rt/stub/computeSize|inlined.0 (result i32) + local.get $size + local.set $size|3 + local.get $size|3 + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + br $~lib/rt/stub/computeSize|inlined.0 + end + local.set $payloadSize + local.get $ptr + local.get $payloadSize + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $block + local.get $payloadSize + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $ptr + return + ) + (func $~lib/rt/common/OBJECT#set:gcInfo (param $this i32) (param $gcInfo i32) + local.get $this + local.get $gcInfo + i32.store offset=4 + ) + (func $~lib/rt/common/OBJECT#set:gcInfo2 (param $this i32) (param $gcInfo2 i32) + local.get $this + local.get $gcInfo2 + i32.store offset=8 + ) + (func $~lib/rt/common/OBJECT#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/common/OBJECT#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/stub/__new (param $size i32) (param $id i32) (result i32) + (local $ptr i32) + (local $object i32) + local.get $size + i32.const 1073741804 + i32.gt_u + if + i32.const 208 + i32.const 272 + i32.const 86 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/stub/__alloc + local.set $ptr + local.get $ptr + i32.const 4 + i32.sub + local.set $object + local.get $object + i32.const 0 + call $~lib/rt/common/OBJECT#set:gcInfo + local.get $object + i32.const 0 + call $~lib/rt/common/OBJECT#set:gcInfo2 + local.get $object + local.get $id + call $~lib/rt/common/OBJECT#set:rtId + local.get $object + local.get $size + call $~lib/rt/common/OBJECT#set:rtSize + local.get $ptr + i32.const 16 + i32.add + return + ) + (func $std/object/Implicit#constructor (param $this i32) (result i32) + local.get $this + i32.eqz + if + i32.const 0 + i32.const 4 + call $~lib/rt/stub/__new + local.set $this + end + local.get $this + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + local.get $this + i32.eqz + if + i32.const 0 + i32.const 0 + call $~lib/rt/stub/__new + local.set $this + end + local.get $this + ) + (func $std/object/Explicit#constructor (param $this i32) (result i32) + local.get $this + i32.eqz + if + i32.const 0 + i32.const 5 + call $~lib/rt/stub/__new + local.set $this + end + local.get $this + call $~lib/object/Object#constructor + local.set $this + local.get $this + ) + (func $start:std/object + (local $implicit i32) + (local $explicit i32) + (local $object i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + f64.const 0 + f64.const 0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const -0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 1 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const -1 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 1 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + f64.neg + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const inf + f64.neg + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + f64.const inf + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.const nan:0x8000000000000 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const inf + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + f64.const nan:0x8000000000000 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const -0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + f32.const 0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + f32.const 1 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const -1 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + f32.const 1 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + f32.neg + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const inf + f32.neg + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.neg + f32.const inf + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const inf + f32.const nan:0x400000 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const inf + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const nan:0x400000 + f32.const nan:0x400000 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + f64.const 0.1 + f64.const -1e-308 + f64.mul + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + f64.const 0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + call $~lib/object/Object.is + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const -1 + call $~lib/object/Object.is + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + call $~lib/object/Object.is + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + call $~lib/object/Object.is + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + call $~lib/object/Object.is + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 80 + i32.const 80 + call $~lib/object/Object.is<~lib/string/String> + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 80 + i32.const 112 + call $~lib/object/Object.is<~lib/string/String> + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 45 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 80 + i32.const 144 + call $~lib/object/Object.is<~lib/string/String> + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + call $~lib/object/Object.is<~lib/string/String|null> + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 176 + i32.const 0 + call $~lib/object/Object.is<~lib/string/String|null> + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 49 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 176 + call $~lib/object/Object.is<~lib/string/String|null> + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__heap_base + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + i32.const 0 + call $std/object/Implicit#constructor + local.set $implicit + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + i32.const 0 + call $std/object/Explicit#constructor + local.set $explicit + i32.const 1 + drop + i32.const 1 + drop + local.get $explicit + local.set $object + local.get $object + local.tee $3 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $3 + call $~instanceof|std/object/Explicit + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $implicit + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + call $~instanceof|std/object/Implicit + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $explicit + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + call $~instanceof|std/object/Explicit + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 77 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $~instanceof|std/object/Explicit (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 5 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~instanceof|std/object/Implicit (param $0 i32) (result i32) + (local $1 i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 4 + i32.eq + br_if $is_instance + i32.const 0 + return + end + i32.const 1 + ) + (func $~start + call $start:std/object + ) +) diff --git a/tests/compiler/std/object.json b/tests/compiler/std/object.json index 453cb07770..8e0a066281 100644 --- a/tests/compiler/std/object.json +++ b/tests/compiler/std/object.json @@ -1,5 +1,5 @@ { "asc_flags": [ - "--runtime none" + "--runtime", "stub" ] } diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat deleted file mode 100644 index 856757bab1..0000000000 --- a/tests/compiler/std/object.optimized.wat +++ /dev/null @@ -1,637 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s") - (data (i32.const 1072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1104) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 1136) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 1172) "\01\00\00\00\01") - (export "memory" (memory $0)) - (start $~start) - (func $~lib/object/Object.is (param $0 f64) (param $1 f64) (result i32) - local.get $0 - local.get $1 - f64.eq - if - local.get $0 - i64.reinterpret_f64 - local.get $1 - i64.reinterpret_f64 - i64.eq - return - end - local.get $0 - local.get $0 - f64.ne - local.get $1 - local.get $1 - f64.ne - i32.and - ) - (func $~lib/object/Object.is (param $0 f32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - f32.eq - if - local.get $0 - i32.reinterpret_f32 - local.get $1 - i32.reinterpret_f32 - i32.eq - return - end - local.get $0 - local.get $0 - f32.ne - local.get $1 - local.get $1 - f32.ne - i32.and - ) - (func $~lib/object/Object.is (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 0 - i32.ne - local.get $1 - i32.const 0 - i32.ne - i32.eq - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - local.get $0 - i32.load16_u - local.tee $3 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $3 - local.get $4 - i32.sub - return - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/object/Object.is<~lib/string/String> (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 1 - local.get $0 - local.get $1 - i32.eq - br_if $__inlined_func$~lib/string/String.__eq - drop - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - br $__inlined_func$~lib/string/String.__eq - end - i32.const 0 - end - ) - (func $start:std/object - f64.const 0 - f64.const 0 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const -inf - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const -inf - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - f64.const inf - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const inf - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -1 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const -inf - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const -inf - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -inf - f32.const inf - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const inf - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -1e-309 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const -1e-309 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - call $~lib/object/Object.is - if - i32.const 0 - i32.const 1040 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - call $~lib/object/Object.is - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1088 - i32.const 1088 - call $~lib/object/Object.is<~lib/string/String> - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 45 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1088 - i32.const 1120 - call $~lib/object/Object.is<~lib/string/String> - if - i32.const 0 - i32.const 1040 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1088 - i32.const 1152 - call $~lib/object/Object.is<~lib/string/String> - if - i32.const 0 - i32.const 1040 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - call $~lib/object/Object.is<~lib/string/String> - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 49 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1184 - i32.const 0 - call $~lib/object/Object.is<~lib/string/String> - if - i32.const 0 - i32.const 1040 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1184 - call $~lib/object/Object.is<~lib/string/String> - if - i32.const 0 - i32.const 1040 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/object - ) -) diff --git a/tests/compiler/std/object.release.wat b/tests/compiler/std/object.release.wat new file mode 100644 index 0000000000..203637c32f --- /dev/null +++ b/tests/compiler/std/object.release.wat @@ -0,0 +1,360 @@ +(module + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s") + (data $1 (i32.const 1084) "\1c") + (data $1.1 (i32.const 1096) "\02\00\00\00\02\00\00\00a") + (data $2 (i32.const 1116) "\1c") + (data $2.1 (i32.const 1128) "\02\00\00\00\02\00\00\00b") + (data $3 (i32.const 1148) "\1c") + (data $3.1 (i32.const 1160) "\02\00\00\00\04\00\00\00a\00b") + (data $4 (i32.const 1180) "\1c") + (data $4.1 (i32.const 1192) "\02") + (data $5 (i32.const 1212) "<") + (data $5.1 (i32.const 1224) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $6 (i32.const 1276) "<") + (data $6.1 (i32.const 1288) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if + i32.const 0 + return + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + if + i32.const 0 + return + end + local.get $0 + local.set $2 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$1 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$1 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + i32.eqz + ) + (func $~start + (local $0 i32) + (local $1 i32) + i32.const 1104 + i32.const 1104 + call $~lib/string/String.__eq + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1104 + i32.const 1136 + call $~lib/string/String.__eq + if + i32.const 0 + i32.const 1056 + i32.const 45 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1104 + i32.const 1168 + call $~lib/string/String.__eq + if + i32.const 0 + i32.const 1056 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + call $~lib/string/String.__eq + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1200 + i32.const 0 + call $~lib/string/String.__eq + if + i32.const 0 + i32.const 1056 + i32.const 49 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1200 + call $~lib/string/String.__eq + if + i32.const 0 + i32.const 1056 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 1372 + i32.lt_u + if + local.get $1 + i32.const 66907 + local.get $0 + i32.sub + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $0 + local.get $0 + local.get $1 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $0 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + i32.const 1340 + i32.const 28 + i32.store + i32.const 1344 + i32.const 0 + i32.store + i32.const 1348 + i32.const 0 + i32.store + i32.const 1352 + i32.const 4 + i32.store + i32.const 1356 + i32.const 0 + i32.store + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 1404 + i32.lt_u + if + local.get $1 + i32.const 66939 + local.get $0 + i32.sub + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $0 + local.get $0 + local.get $1 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $0 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + i32.const 1372 + i32.const 28 + i32.store + i32.const 1376 + i32.const 0 + i32.store + i32.const 1380 + i32.const 0 + i32.store + i32.const 1384 + i32.const 5 + i32.store + i32.const 1388 + i32.const 0 + i32.store + i32.const 1384 + i32.load + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1352 + i32.load + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1384 + i32.load + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 77 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/std/object.ts b/tests/compiler/std/object.ts index b9b22e4e51..132267b293 100644 --- a/tests/compiler/std/object.ts +++ b/tests/compiler/std/object.ts @@ -31,7 +31,6 @@ assert(Object.is(+Infinity, NaN) == false); assert(Object.is(NaN, Infinity) == false); assert(Object.is(NaN, NaN) == true); -assert(Object.is(-0, 1e-1 * (-1e-308)) == false); assert(Object.is(-0.0, 1e-1 * (-1e-308)) == false); assert(Object.is(0, 0.0) == true); @@ -49,3 +48,31 @@ assert(Object.is("a", "ab") == false); assert(Object.is(null, null) == true); assert(Object.is("", null) == false); assert(Object.is(null, "") == false); + +// Implicit and explicit inheritance + +class Implicit { + constructor() { + // no super() + } +} +class Explicit extends Object { + constructor() { + super(); + } +} +{ + let implicit = new Implicit(); + assert(implicit instanceof Object); + assert(!isDefined(Implicit.is)); // does not inherit static members + + let explicit = new Explicit(); + assert(explicit instanceof Object); + assert(isDefined(Explicit.is)); // does inherit static members + + let object: Object = explicit; + assert(object instanceof Explicit); // dynamic check + + assert((implicit) instanceof Implicit); + assert((explicit) instanceof Explicit); +} diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat deleted file mode 100644 index 7bccb6132b..0000000000 --- a/tests/compiler/std/object.untouched.wat +++ /dev/null @@ -1,923 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s\00") - (data (i32.const 64) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 96) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 128) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b\00") - (data (i32.const 160) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (table $0 1 funcref) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/object/Object.is (param $0 f64) (param $1 f64) (result i32) - i32.const 1 - drop - local.get $0 - local.get $1 - f64.eq - if - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $0 - i64.reinterpret_f64 - local.get $1 - i64.reinterpret_f64 - i64.eq - return - end - local.get $0 - local.get $0 - f64.ne - local.get $1 - local.get $1 - f64.ne - i32.and - return - ) - (func $~lib/object/Object.is (param $0 f32) (param $1 f32) (result i32) - i32.const 1 - drop - local.get $0 - local.get $1 - f32.eq - if - i32.const 4 - i32.const 8 - i32.eq - drop - local.get $0 - i32.reinterpret_f32 - local.get $1 - i32.reinterpret_f32 - i32.eq - return - end - local.get $0 - local.get $0 - f32.ne - local.get $1 - local.get $1 - f32.ne - i32.and - return - ) - (func $~lib/object/Object.is (param $0 i32) (param $1 i32) (result i32) - i32.const 0 - drop - local.get $0 - local.get $1 - i32.eq - ) - (func $~lib/object/Object.is (param $0 i32) (param $1 i32) (result i32) - i32.const 0 - drop - local.get $0 - i32.const 0 - i32.ne - local.get $1 - i32.const 0 - i32.ne - i32.eq - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/object/Object.is<~lib/string/String> (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - drop - local.get $0 - local.get $1 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/object/Object.is<~lib/string/String|null> (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - drop - local.get $0 - local.get $1 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $start:std/object - f64.const 0 - f64.const 0 - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const -0 - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0 - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 1 - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const -1 - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 1 - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - f64.neg - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const inf - f64.neg - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - f64.const inf - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.const nan:0x8000000000000 - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const inf - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - f64.const nan:0x8000000000000 - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 0 - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const -0 - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - f32.const 0 - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - f32.const 1 - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const -1 - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const 1 - f32.const 1 - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - f32.neg - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const inf - f32.neg - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.neg - f32.const inf - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const inf - f32.const nan:0x400000 - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const inf - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f32.const nan:0x400000 - f32.const nan:0x400000 - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0.1 - f64.const -1e-308 - f64.mul - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - f64.const 0.1 - f64.const -1e-308 - f64.mul - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - f64.const 0 - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const -1 - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - call $~lib/object/Object.is - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - call $~lib/object/Object.is - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 80 - i32.const 80 - call $~lib/object/Object.is<~lib/string/String> - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 45 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 80 - i32.const 112 - call $~lib/object/Object.is<~lib/string/String> - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 80 - i32.const 144 - call $~lib/object/Object.is<~lib/string/String> - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - call $~lib/object/Object.is<~lib/string/String|null> - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 49 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 176 - i32.const 0 - call $~lib/object/Object.is<~lib/string/String|null> - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 176 - call $~lib/object/Object.is<~lib/string/String|null> - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/object - ) -) diff --git a/tests/compiler/std/operator-overloading-errors.json b/tests/compiler/std/operator-overloading-errors.json new file mode 100644 index 0000000000..2e69914ed7 --- /dev/null +++ b/tests/compiler/std/operator-overloading-errors.json @@ -0,0 +1,11 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS2322: Type '~lib/string/String | null' is not assignable to type '~lib/string/String'", + "a.b + a.c", + "TS2322: Type '~lib/string/String | null' is not assignable to type '~lib/string/String'", + "a.c + a.b", + "EOF" + ] +} diff --git a/tests/compiler/std/operator-overloading-errors.ts b/tests/compiler/std/operator-overloading-errors.ts new file mode 100644 index 0000000000..03ffad874a --- /dev/null +++ b/tests/compiler/std/operator-overloading-errors.ts @@ -0,0 +1,11 @@ +class A { + b: string | null = "b"; + c: string = "c"; +} + +var a = new A(); + +a.b + a.c; // TS2322 +a.c + a.b; // TS2322 + +ERROR("EOF"); diff --git a/tests/compiler/std/operator-overloading.debug.wat b/tests/compiler/std/operator-overloading.debug.wat new file mode 100644 index 0000000000..3313be1958 --- /dev/null +++ b/tests/compiler/std/operator-overloading.debug.wat @@ -0,0 +1,6590 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $std/operator-overloading/a1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/a2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/a (mut i32) (i32.const 0)) + (global $std/operator-overloading/s1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/s2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/s (mut i32) (i32.const 0)) + (global $std/operator-overloading/m1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/m2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/m (mut i32) (i32.const 0)) + (global $std/operator-overloading/d1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/d2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/d (mut i32) (i32.const 0)) + (global $std/operator-overloading/f1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/f2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/f (mut i32) (i32.const 0)) + (global $std/operator-overloading/p1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/p2 (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $std/operator-overloading/p (mut i32) (i32.const 0)) + (global $std/operator-overloading/n1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/n2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/n (mut i32) (i32.const 0)) + (global $std/operator-overloading/o1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/o2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/o (mut i32) (i32.const 0)) + (global $std/operator-overloading/x1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/x2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/x (mut i32) (i32.const 0)) + (global $std/operator-overloading/eq1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/eq2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/eq (mut i32) (i32.const 0)) + (global $std/operator-overloading/eq3 (mut i32) (i32.const 0)) + (global $std/operator-overloading/eq4 (mut i32) (i32.const 0)) + (global $std/operator-overloading/eqf (mut i32) (i32.const 0)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $std/operator-overloading/gt1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/gt2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/gt (mut i32) (i32.const 0)) + (global $std/operator-overloading/gte1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/gte2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/gte (mut i32) (i32.const 0)) + (global $std/operator-overloading/le1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/le2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/le (mut i32) (i32.const 0)) + (global $std/operator-overloading/leq1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/leq2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/leq (mut i32) (i32.const 0)) + (global $std/operator-overloading/shr (mut i32) (i32.const 0)) + (global $std/operator-overloading/sres (mut i32) (i32.const 0)) + (global $std/operator-overloading/shu (mut i32) (i32.const 0)) + (global $std/operator-overloading/ures (mut i32) (i32.const 0)) + (global $std/operator-overloading/shl (mut i32) (i32.const 0)) + (global $std/operator-overloading/pos (mut i32) (i32.const 0)) + (global $std/operator-overloading/pres (mut i32) (i32.const 0)) + (global $std/operator-overloading/neg (mut i32) (i32.const 0)) + (global $std/operator-overloading/nres (mut i32) (i32.const 0)) + (global $std/operator-overloading/not (mut i32) (i32.const 0)) + (global $std/operator-overloading/res (mut i32) (i32.const 0)) + (global $std/operator-overloading/excl (mut i32) (i32.const 0)) + (global $std/operator-overloading/bres (mut i32) (i32.const 0)) + (global $std/operator-overloading/incdec (mut i32) (i32.const 0)) + (global $std/operator-overloading/tmp (mut i32) (i32.const 0)) + (global $std/operator-overloading/ais1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/ais2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/ais (mut i32) (i32.const 0)) + (global $std/operator-overloading/aii1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/aii2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/aii (mut i32) (i32.const 0)) + (global $std/operator-overloading/tea (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 560)) + (global $~lib/memory/__data_end i32 (i32.const 596)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33364)) + (global $~lib/memory/__heap_base i32 (i32.const 33364)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00") + (data $9 (i32.const 492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00x\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 560) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $std/operator-overloading/Tester#set:x (param $this i32) (param $x i32) + local.get $this + local.get $x + i32.store + ) + (func $std/operator-overloading/Tester#set:y (param $this i32) (param $y i32) + local.get $this + local.get $y + i32.store offset=4 + ) + (func $std/operator-overloading/Tester#get:x (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $std/operator-overloading/Tester#get:y (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/math/ipow32 (param $x i32) (param $e i32) (result i32) + (local $out i32) + (local $log i32) + (local $4 i32) + i32.const 1 + local.set $out + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $x + i32.const 2 + i32.eq + if + i32.const 1 + local.get $e + i32.shl + i32.const 0 + local.get $e + i32.const 32 + i32.lt_u + select + return + end + local.get $e + i32.const 0 + i32.le_s + if + local.get $x + i32.const -1 + i32.eq + if + i32.const -1 + i32.const 1 + local.get $e + i32.const 1 + i32.and + select + return + end + local.get $e + i32.const 0 + i32.eq + local.get $x + i32.const 1 + i32.eq + i32.or + return + else + local.get $e + i32.const 1 + i32.eq + if + local.get $x + return + else + local.get $e + i32.const 2 + i32.eq + if + local.get $x + local.get $x + i32.mul + return + else + local.get $e + i32.const 32 + i32.lt_s + if + i32.const 32 + local.get $e + i32.clz + i32.sub + local.set $log + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $log + local.set $4 + local.get $4 + i32.const 5 + i32.eq + br_if $case0|0 + local.get $4 + i32.const 4 + i32.eq + br_if $case1|0 + local.get $4 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $4 + i32.const 2 + i32.eq + br_if $case3|0 + local.get $4 + i32.const 1 + i32.eq + br_if $case4|0 + br $break|0 + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + end + local.get $out + return + end + end + end + end + loop $while-continue|1 + local.get $e + if + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + br $while-continue|1 + end + end + local.get $out + return + ) + (func $std/operator-overloading/TesterInlineStatic#set:x (param $this i32) (param $x i32) + local.get $this + local.get $x + i32.store + ) + (func $std/operator-overloading/TesterInlineStatic#set:y (param $this i32) (param $y i32) + local.get $this + local.get $y + i32.store offset=4 + ) + (func $std/operator-overloading/TesterInlineStatic#get:x (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $std/operator-overloading/TesterInlineStatic#get:y (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $std/operator-overloading/TesterInlineInstance#set:x (param $this i32) (param $x i32) + local.get $this + local.get $x + i32.store + ) + (func $std/operator-overloading/TesterInlineInstance#set:y (param $this i32) (param $y i32) + local.get $this + local.get $y + i32.store offset=4 + ) + (func $std/operator-overloading/TesterInlineInstance#get:x (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $std/operator-overloading/TesterInlineInstance#get:y (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $std/operator-overloading/TesterElementAccess#set:x (param $this i32) (param $x i32) + local.get $this + local.get $x + i32.store + ) + (func $std/operator-overloading/TesterElementAccess#set:y (param $this i32) (param $y i32) + local.get $this + local.get $y + i32.store offset=4 + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $std/operator-overloading/TesterElementAccess#get:x (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $std/operator-overloading/TesterElementAccess#get:y (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/operator-overloading/a1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/a2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq4 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gt1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gt2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gte1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gte2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/le1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/le2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/leq1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/leq2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/sres + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shu + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ures + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shl + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/pos + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/pres + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/neg + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/nres + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/not + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/res + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/excl + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/incdec + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/tmp + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/tea + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $std/operator-overloading/TesterElementAccess + block $std/operator-overloading/TesterInlineInstance + block $std/operator-overloading/TesterInlineStatic + block $std/operator-overloading/Tester + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/operator-overloading/Tester $std/operator-overloading/TesterInlineStatic $std/operator-overloading/TesterInlineInstance $std/operator-overloading/TesterElementAccess $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:std/operator-overloading + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33392 + i32.const 33440 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $std/operator-overloading/Tester#constructor (param $this i32) (param $x i32) (param $y i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $x + call $std/operator-overloading/Tester#set:x + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $y + call $std/operator-overloading/Tester#set:y + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $std/operator-overloading/Tester.add (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.add + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.add + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.sub (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.sub + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.sub + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.mul (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.mul + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.mul + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.div (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.div_s + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.div_s + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.mod (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.rem_s + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.rem_s + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.pow (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + call $~lib/math/ipow32 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + call $~lib/math/ipow32 + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.and (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.and + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.and + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.or (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.or + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.or + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.xor (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.xor + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.xor + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.equals (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.eq + if (result i32) + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.eq + else + i32.const 0 + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.notEquals (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.ne + if (result i32) + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.ne + else + i32.const 0 + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.greater (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.gt_s + if (result i32) + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.gt_s + else + i32.const 0 + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.greaterEquals (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.ge_s + if (result i32) + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.ge_s + else + i32.const 0 + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.less (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.lt_s + if (result i32) + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.lt_s + else + i32.const 0 + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.lessEquals (param $a i32) (param $b i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + i32.le_s + if (result i32) + local.get $a + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + i32.le_s + else + i32.const 0 + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.shr (param $value i32) (param $shift i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $value + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $shift + i32.shr_s + local.get $value + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $shift + i32.shr_s + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.shu (param $value i32) (param $shift i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $value + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $shift + i32.shr_u + local.get $value + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $shift + i32.shr_u + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.shl (param $value i32) (param $shift i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $value + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:x + local.get $shift + i32.shl + local.get $value + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/Tester#get:y + local.get $shift + i32.shl + call $std/operator-overloading/Tester#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/operator-overloading/Tester.pos (param $value i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $value + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/operator-overloading/Tester#get:x + local.get $value + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/operator-overloading/Tester#get:y + call $std/operator-overloading/Tester#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $std/operator-overloading/Tester.neg (param $value i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 0 + local.get $value + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/operator-overloading/Tester#get:x + i32.sub + i32.const 0 + local.get $value + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/operator-overloading/Tester#get:y + i32.sub + call $std/operator-overloading/Tester#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $std/operator-overloading/Tester.not (param $value i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $value + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/operator-overloading/Tester#get:x + i32.const -1 + i32.xor + local.get $value + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/operator-overloading/Tester#get:y + i32.const -1 + i32.xor + call $std/operator-overloading/Tester#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $std/operator-overloading/Tester.excl (param $value i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $value + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/operator-overloading/Tester#get:x + i32.eqz + if (result i32) + local.get $value + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/operator-overloading/Tester#get:y + i32.eqz + else + i32.const 0 + end + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $std/operator-overloading/Tester#inc (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $std/operator-overloading/Tester#get:x + i32.const 1 + i32.add + call $std/operator-overloading/Tester#set:x + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $std/operator-overloading/Tester#get:y + i32.const 1 + i32.add + call $std/operator-overloading/Tester#set:y + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $std/operator-overloading/Tester#dec (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $std/operator-overloading/Tester#get:x + i32.const 1 + i32.sub + call $std/operator-overloading/Tester#set:x + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $std/operator-overloading/Tester#get:y + i32.const 1 + i32.sub + call $std/operator-overloading/Tester#set:y + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $std/operator-overloading/Tester#postInc (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/operator-overloading/Tester#get:x + i32.const 1 + i32.add + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/operator-overloading/Tester#get:y + i32.const 1 + i32.add + call $std/operator-overloading/Tester#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $std/operator-overloading/Tester#postDec (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/operator-overloading/Tester#get:x + i32.const 1 + i32.sub + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/operator-overloading/Tester#get:y + i32.const 1 + i32.sub + call $std/operator-overloading/Tester#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $std/operator-overloading/TesterInlineStatic#constructor (param $this i32) (param $x i32) (param $y i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $x + call $std/operator-overloading/TesterInlineStatic#set:x + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $y + call $std/operator-overloading/TesterInlineStatic#set:y + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $std/operator-overloading/TesterInlineInstance#constructor (param $this i32) (param $x i32) (param $y i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $x + call $std/operator-overloading/TesterInlineInstance#set:x + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $y + call $std/operator-overloading/TesterInlineInstance#set:y + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $std/operator-overloading/TesterElementAccess#constructor (param $this i32) (param $x i32) (param $y i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $x + call $std/operator-overloading/TesterElementAccess#set:x + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $y + call $std/operator-overloading/TesterElementAccess#set:y + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/operator-overloading/TesterElementAccess#__set (param $this i32) (param $key i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $key + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 512 + call $~lib/string/String.__eq + if + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $value + call $std/operator-overloading/TesterElementAccess#set:x + else + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $value + call $std/operator-overloading/TesterElementAccess#set:y + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/operator-overloading/TesterElementAccess#__get (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $key + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 512 + call $~lib/string/String.__eq + if (result i32) + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/TesterElementAccess#get:x + else + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/operator-overloading/TesterElementAccess#get:y + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $start:std/operator-overloading + (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) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 1 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/a1 + i32.const 0 + i32.const 2 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/a2 + global.get $std/operator-overloading/a1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/a2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.add + global.set $std/operator-overloading/a + global.get $std/operator-overloading/a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 3 + i32.eq + if (result i32) + global.get $std/operator-overloading/a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 5 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 145 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/s1 + i32.const 0 + i32.const 2 + i32.const -3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/s2 + global.get $std/operator-overloading/s1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/s2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.sub + global.set $std/operator-overloading/s + global.get $std/operator-overloading/s + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 0 + i32.eq + if (result i32) + global.get $std/operator-overloading/s + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 6 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + i32.const 5 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/m1 + i32.const 0 + i32.const 3 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/m2 + global.get $std/operator-overloading/m1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/m2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.mul + global.set $std/operator-overloading/m + global.get $std/operator-overloading/m + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 6 + i32.eq + if (result i32) + global.get $std/operator-overloading/m + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 10 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 6 + i32.const 50 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/d1 + i32.const 0 + i32.const 3 + i32.const 10 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/d2 + global.get $std/operator-overloading/d1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/d2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.div + global.set $std/operator-overloading/d + global.get $std/operator-overloading/d + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 2 + i32.eq + if (result i32) + global.get $std/operator-overloading/d + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 5 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 10 + i32.const 10 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/f1 + i32.const 0 + i32.const 6 + i32.const 10 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/f2 + global.get $std/operator-overloading/f1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/f2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.mod + global.set $std/operator-overloading/f + global.get $std/operator-overloading/f + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 4 + i32.eq + if (result i32) + global.get $std/operator-overloading/f + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 0 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 169 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/p1 + i32.const 0 + i32.const 4 + i32.const 5 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/p2 + global.get $std/operator-overloading/p1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/p2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.pow + global.set $std/operator-overloading/p + global.get $std/operator-overloading/p + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 16 + i32.eq + if (result i32) + global.get $std/operator-overloading/p + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 243 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 255 + i32.const 15 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/n1 + i32.const 0 + i32.const 15 + i32.const 255 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/n2 + global.get $std/operator-overloading/n1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/n2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.and + global.set $std/operator-overloading/n + global.get $std/operator-overloading/n + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 15 + i32.eq + if (result i32) + global.get $std/operator-overloading/n + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 15 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 3855 + i32.const 255 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/o1 + i32.const 0 + i32.const 61680 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/o2 + global.get $std/operator-overloading/o1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/o2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.or + global.set $std/operator-overloading/o + global.get $std/operator-overloading/o + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 65535 + i32.eq + if (result i32) + global.get $std/operator-overloading/o + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 255 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 255 + i32.const 255 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/x1 + i32.const 0 + i32.const 65280 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/x2 + global.get $std/operator-overloading/x1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/x2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.xor + global.set $std/operator-overloading/x + global.get $std/operator-overloading/x + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 65535 + i32.eq + if (result i32) + global.get $std/operator-overloading/x + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 255 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.const -2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq1 + i32.const 0 + i32.const 1 + i32.const -2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq2 + global.get $std/operator-overloading/eq1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/eq2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.equals + global.set $std/operator-overloading/eq + global.get $std/operator-overloading/eq + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq3 + i32.const 0 + i32.const 0 + i32.const 1 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq4 + global.get $std/operator-overloading/eq3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/eq4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.equals + global.set $std/operator-overloading/eqf + global.get $std/operator-overloading/eqf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 205 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/eq1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/eq2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.notEquals + global.set $std/operator-overloading/eq + global.get $std/operator-overloading/eq + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/eq3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/eq4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.notEquals + global.set $std/operator-overloading/eqf + global.get $std/operator-overloading/eqf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 213 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gt1 + i32.const 0 + i32.const 1 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gt2 + global.get $std/operator-overloading/gt1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/gt2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.greater + global.set $std/operator-overloading/gt + global.get $std/operator-overloading/gt + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gte1 + i32.const 0 + i32.const 2 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gte2 + global.get $std/operator-overloading/gte1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/gte2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.greaterEquals + global.set $std/operator-overloading/gte + global.get $std/operator-overloading/gte + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 225 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 5 + i32.const -1 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/le1 + i32.const 0 + i32.const 6 + i32.const 6 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/le2 + global.get $std/operator-overloading/le1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/le2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.less + global.set $std/operator-overloading/le + global.get $std/operator-overloading/le + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 231 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 4 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/leq1 + i32.const 0 + i32.const 4 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/leq2 + global.get $std/operator-overloading/leq1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + global.get $std/operator-overloading/leq2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/operator-overloading/Tester.lessEquals + global.set $std/operator-overloading/leq + global.get $std/operator-overloading/leq + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 8 + i32.const 16 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/shr + global.get $std/operator-overloading/shr + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 3 + call $std/operator-overloading/Tester.shr + global.set $std/operator-overloading/sres + global.get $std/operator-overloading/sres + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 1 + i32.eq + if (result i32) + global.get $std/operator-overloading/sres + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 2 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 242 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const -8 + i32.const -16 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/shu + global.get $std/operator-overloading/shu + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 3 + call $std/operator-overloading/Tester.shu + global.set $std/operator-overloading/ures + global.get $std/operator-overloading/ures + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 536870911 + i32.eq + if (result i32) + global.get $std/operator-overloading/ures + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 536870910 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 247 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/shl + global.get $std/operator-overloading/shl + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 3 + call $std/operator-overloading/Tester.shl + global.set $std/operator-overloading/sres + global.get $std/operator-overloading/sres + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 8 + i32.eq + if (result i32) + global.get $std/operator-overloading/sres + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 16 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 252 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.const -2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/pos + global.get $std/operator-overloading/pos + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester.pos + global.set $std/operator-overloading/pres + global.get $std/operator-overloading/pres + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + global.get $std/operator-overloading/pos + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.eq + if (result i32) + global.get $std/operator-overloading/pres + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + global.get $std/operator-overloading/pos + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const -1 + i32.const -2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/neg + global.get $std/operator-overloading/neg + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester.neg + global.set $std/operator-overloading/nres + global.get $std/operator-overloading/nres + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 0 + global.get $std/operator-overloading/neg + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.sub + i32.eq + if (result i32) + global.get $std/operator-overloading/nres + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 0 + global.get $std/operator-overloading/neg + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.sub + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 262 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 255 + i32.const 16 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/not + global.get $std/operator-overloading/not + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester.not + global.set $std/operator-overloading/res + global.get $std/operator-overloading/res + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + global.get $std/operator-overloading/not + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const -1 + i32.xor + i32.eq + if (result i32) + global.get $std/operator-overloading/res + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + global.get $std/operator-overloading/not + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const -1 + i32.xor + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 267 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/excl + global.get $std/operator-overloading/excl + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester.excl + global.set $std/operator-overloading/bres + global.get $std/operator-overloading/bres + global.get $std/operator-overloading/excl + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.eqz + if (result i32) + global.get $std/operator-overloading/excl + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.eqz + else + i32.const 0 + end + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 272 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/bres + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 273 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + i32.const 1 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/incdec + global.get $std/operator-overloading/incdec + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#inc + global.set $std/operator-overloading/incdec + global.get $std/operator-overloading/incdec + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 1 + i32.eq + if (result i32) + global.get $std/operator-overloading/incdec + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 2 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 279 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/incdec + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#dec + global.set $std/operator-overloading/incdec + global.get $std/operator-overloading/incdec + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 0 + i32.eq + if (result i32) + global.get $std/operator-overloading/incdec + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 1 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 282 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + i32.const 1 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/incdec + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store offset=8 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#postInc + global.set $std/operator-overloading/incdec + local.get $0 + global.set $std/operator-overloading/tmp + global.get $std/operator-overloading/tmp + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 0 + i32.eq + if (result i32) + global.get $std/operator-overloading/tmp + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 1 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 287 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/incdec + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 1 + i32.eq + if (result i32) + global.get $std/operator-overloading/incdec + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 2 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $1 + i32.store offset=12 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#postDec + global.set $std/operator-overloading/incdec + local.get $1 + global.set $std/operator-overloading/tmp + global.get $std/operator-overloading/tmp + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 1 + i32.eq + if (result i32) + global.get $std/operator-overloading/tmp + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 2 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 291 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/incdec + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:x + i32.const 0 + i32.eq + if (result i32) + global.get $std/operator-overloading/incdec + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/Tester#get:y + i32.const 1 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 292 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.const 2 + call $std/operator-overloading/TesterInlineStatic#constructor + global.set $std/operator-overloading/ais1 + block $std/operator-overloading/TesterInlineStatic.postInc|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ais1 + local.tee $3 + i32.store offset=16 + i32.const 0 + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:x + i32.const 1 + i32.add + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:y + i32.const 1 + i32.add + call $std/operator-overloading/TesterInlineStatic#constructor + br $std/operator-overloading/TesterInlineStatic.postInc|inlined.0 + end + global.set $std/operator-overloading/ais1 + i32.const 0 + i32.const 2 + i32.const 3 + call $std/operator-overloading/TesterInlineStatic#constructor + global.set $std/operator-overloading/ais2 + block $std/operator-overloading/TesterInlineStatic.add|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ais1 + local.tee $4 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ais2 + local.tee $5 + i32.store offset=24 + i32.const 0 + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:x + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:x + i32.add + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:y + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:y + i32.add + call $std/operator-overloading/TesterInlineStatic#constructor + br $std/operator-overloading/TesterInlineStatic.add|inlined.0 + end + global.set $std/operator-overloading/ais + global.get $std/operator-overloading/ais + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:x + i32.const 4 + i32.eq + if (result i32) + global.get $std/operator-overloading/ais + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineStatic#get:y + i32.const 6 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 312 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.const 2 + call $std/operator-overloading/TesterInlineInstance#constructor + global.set $std/operator-overloading/aii1 + block $std/operator-overloading/TesterInlineInstance#postInc|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii1 + local.tee $6 + i32.store offset=28 + i32.const 0 + local.get $6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:x + i32.const 1 + i32.add + local.get $6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:y + i32.const 1 + i32.add + call $std/operator-overloading/TesterInlineInstance#constructor + br $std/operator-overloading/TesterInlineInstance#postInc|inlined.0 + end + global.set $std/operator-overloading/aii1 + i32.const 0 + i32.const 2 + i32.const 3 + call $std/operator-overloading/TesterInlineInstance#constructor + global.set $std/operator-overloading/aii2 + block $std/operator-overloading/TesterInlineInstance#add|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii1 + local.tee $7 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii2 + local.tee $8 + i32.store offset=36 + i32.const 0 + local.get $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:x + local.get $8 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:x + i32.add + local.get $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:y + local.get $8 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:y + i32.add + call $std/operator-overloading/TesterInlineInstance#constructor + br $std/operator-overloading/TesterInlineInstance#add|inlined.0 + end + global.set $std/operator-overloading/aii + global.get $std/operator-overloading/aii + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:x + i32.const 4 + i32.eq + if (result i32) + global.get $std/operator-overloading/aii + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterInlineInstance#get:y + i32.const 6 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 332 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.const 2 + call $std/operator-overloading/TesterElementAccess#constructor + global.set $std/operator-overloading/tea + global.get $std/operator-overloading/tea + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 512 + i32.const -1 + call $std/operator-overloading/TesterElementAccess#__set + global.get $std/operator-overloading/tea + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 544 + i32.const -2 + call $std/operator-overloading/TesterElementAccess#__set + global.get $std/operator-overloading/tea + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterElementAccess#get:x + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 360 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/tea + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 512 + call $std/operator-overloading/TesterElementAccess#__get + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 361 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/tea + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $std/operator-overloading/TesterElementAccess#get:y + i32.const -2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 363 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/tea + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 544 + call $std/operator-overloading/TesterElementAccess#__get + i32.const -2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 364 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/tea + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 512 + global.get $std/operator-overloading/tea + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 512 + call $std/operator-overloading/TesterElementAccess#__get + i32.const 1 + i32.add + call $std/operator-overloading/TesterElementAccess#__set + global.get $std/operator-overloading/tea + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 544 + global.get $std/operator-overloading/tea + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 544 + call $std/operator-overloading/TesterElementAccess#__get + i32.const 1 + i32.sub + call $std/operator-overloading/TesterElementAccess#__set + global.get $std/operator-overloading/tea + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 512 + call $std/operator-overloading/TesterElementAccess#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/tea + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + i32.const 544 + call $std/operator-overloading/TesterElementAccess#__get + i32.const -3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 370 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/std/operator-overloading.json b/tests/compiler/std/operator-overloading.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/std/operator-overloading.json +++ b/tests/compiler/std/operator-overloading.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat deleted file mode 100644 index 49e1f223da..0000000000 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ /dev/null @@ -1,1419 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $std/operator-overloading/a1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/a2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/a (mut i32) (i32.const 0)) - (global $std/operator-overloading/s1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/s2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/s (mut i32) (i32.const 0)) - (global $std/operator-overloading/m1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/m2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/m (mut i32) (i32.const 0)) - (global $std/operator-overloading/d1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/d2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/d (mut i32) (i32.const 0)) - (global $std/operator-overloading/f1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/f2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/f (mut i32) (i32.const 0)) - (global $std/operator-overloading/p1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/p2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/p (mut i32) (i32.const 0)) - (global $std/operator-overloading/n1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/n2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/n (mut i32) (i32.const 0)) - (global $std/operator-overloading/o1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/o2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/o (mut i32) (i32.const 0)) - (global $std/operator-overloading/x1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/x2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/x (mut i32) (i32.const 0)) - (global $std/operator-overloading/eq1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/eq2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/eq (mut i32) (i32.const 0)) - (global $std/operator-overloading/eq3 (mut i32) (i32.const 0)) - (global $std/operator-overloading/eq4 (mut i32) (i32.const 0)) - (global $std/operator-overloading/eqf (mut i32) (i32.const 0)) - (global $std/operator-overloading/gt1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/gt2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/gt (mut i32) (i32.const 0)) - (global $std/operator-overloading/gte1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/gte2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/gte (mut i32) (i32.const 0)) - (global $std/operator-overloading/le1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/le2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/le (mut i32) (i32.const 0)) - (global $std/operator-overloading/leq1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/leq2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/leq (mut i32) (i32.const 0)) - (global $std/operator-overloading/shr (mut i32) (i32.const 0)) - (global $std/operator-overloading/sres (mut i32) (i32.const 0)) - (global $std/operator-overloading/shu (mut i32) (i32.const 0)) - (global $std/operator-overloading/ures (mut i32) (i32.const 0)) - (global $std/operator-overloading/shl (mut i32) (i32.const 0)) - (global $std/operator-overloading/pos (mut i32) (i32.const 0)) - (global $std/operator-overloading/pres (mut i32) (i32.const 0)) - (global $std/operator-overloading/neg (mut i32) (i32.const 0)) - (global $std/operator-overloading/nres (mut i32) (i32.const 0)) - (global $std/operator-overloading/not (mut i32) (i32.const 0)) - (global $std/operator-overloading/res (mut i32) (i32.const 0)) - (global $std/operator-overloading/excl (mut i32) (i32.const 0)) - (global $std/operator-overloading/bres (mut i32) (i32.const 0)) - (global $std/operator-overloading/incdec (mut i32) (i32.const 0)) - (global $std/operator-overloading/tmp (mut i32) (i32.const 0)) - (global $std/operator-overloading/ais1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/ais2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/ais (mut i32) (i32.const 0)) - (global $std/operator-overloading/aii1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/aii2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/aii (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - i32.const 16 - i32.add - local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $4 - local.get $1 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $4 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $1 - global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 - i32.sub - local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 8 - i32.store offset=12 - local.get $3 - ) - (func $std/operator-overloading/Tester#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - i32.const 3 - call $~lib/rt/stub/__alloc - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - ) - (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - i32.const 1 - local.set $2 - loop $while-continue|0 - local.get $1 - if - local.get $0 - local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 - i32.and - select - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - br $while-continue|0 - end - end - local.get $2 - ) - (func $std/operator-overloading/Tester.equals (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load - local.get $1 - i32.load - i32.eq - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.eq - else - i32.const 0 - end - ) - (func $std/operator-overloading/Tester.notEquals (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load - local.get $1 - i32.load - i32.ne - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.ne - else - i32.const 0 - end - ) - (func $std/operator-overloading/TesterInlineStatic#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - i32.const 4 - call $~lib/rt/stub/__alloc - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - ) - (func $std/operator-overloading/TesterInlineInstance#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - i32.const 5 - call $~lib/rt/stub/__alloc - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - ) - (func $start:std/operator-overloading - (local $0 i32) - (local $1 i32) - i32.const 1104 - global.set $~lib/rt/stub/offset - i32.const 1 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/a1 - i32.const 2 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/a2 - global.get $std/operator-overloading/a1 - local.tee $0 - i32.load - global.get $std/operator-overloading/a2 - local.tee $1 - i32.load - i32.add - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.add - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/a - global.get $std/operator-overloading/a - i32.load - i32.const 3 - i32.eq - if (result i32) - global.get $std/operator-overloading/a - i32.load offset=4 - i32.const 5 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 145 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/s1 - i32.const 2 - i32.const -3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/s2 - global.get $std/operator-overloading/s1 - local.tee $0 - i32.load - global.get $std/operator-overloading/s2 - local.tee $1 - i32.load - i32.sub - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.sub - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/s - global.get $std/operator-overloading/s - i32.load - if (result i32) - i32.const 0 - else - global.get $std/operator-overloading/s - i32.load offset=4 - i32.const 6 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 5 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/m1 - i32.const 3 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/m2 - global.get $std/operator-overloading/m1 - local.tee $0 - i32.load - global.get $std/operator-overloading/m2 - local.tee $1 - i32.load - i32.mul - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.mul - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/m - global.get $std/operator-overloading/m - i32.load - i32.const 6 - i32.eq - if (result i32) - global.get $std/operator-overloading/m - i32.load offset=4 - i32.const 10 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6 - i32.const 50 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/d1 - i32.const 3 - i32.const 10 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/d2 - global.get $std/operator-overloading/d1 - local.tee $0 - i32.load - global.get $std/operator-overloading/d2 - local.tee $1 - i32.load - i32.div_s - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.div_s - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/d - global.get $std/operator-overloading/d - i32.load - i32.const 2 - i32.eq - if (result i32) - global.get $std/operator-overloading/d - i32.load offset=4 - i32.const 5 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - i32.const 10 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/f1 - i32.const 6 - i32.const 10 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/f2 - global.get $std/operator-overloading/f1 - local.tee $0 - i32.load - global.get $std/operator-overloading/f2 - local.tee $1 - i32.load - i32.rem_s - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.rem_s - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/f - global.get $std/operator-overloading/f - i32.load - i32.const 4 - i32.eq - if (result i32) - global.get $std/operator-overloading/f - i32.load offset=4 - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 169 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/p1 - i32.const 4 - i32.const 5 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/p2 - global.get $std/operator-overloading/p1 - local.tee $0 - i32.load - global.get $std/operator-overloading/p2 - local.tee $1 - i32.load - call $~lib/math/ipow32 - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - call $~lib/math/ipow32 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/p - global.get $std/operator-overloading/p - i32.load - i32.const 16 - i32.eq - if (result i32) - global.get $std/operator-overloading/p - i32.load offset=4 - i32.const 243 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 175 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 255 - i32.const 15 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/n1 - i32.const 15 - i32.const 255 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/n2 - global.get $std/operator-overloading/n1 - local.tee $0 - i32.load - global.get $std/operator-overloading/n2 - local.tee $1 - i32.load - i32.and - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.and - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/n - global.get $std/operator-overloading/n - i32.load - i32.const 15 - i32.eq - if (result i32) - global.get $std/operator-overloading/n - i32.load offset=4 - i32.const 15 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 181 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3855 - i32.const 255 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/o1 - i32.const 61680 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/o2 - global.get $std/operator-overloading/o1 - local.tee $0 - i32.load - global.get $std/operator-overloading/o2 - local.tee $1 - i32.load - i32.or - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.or - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/o - global.get $std/operator-overloading/o - i32.load - i32.const 65535 - i32.eq - if (result i32) - global.get $std/operator-overloading/o - i32.load offset=4 - i32.const 255 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 187 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 255 - i32.const 255 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/x1 - i32.const 65280 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/x2 - global.get $std/operator-overloading/x1 - local.tee $0 - i32.load - global.get $std/operator-overloading/x2 - local.tee $1 - i32.load - i32.xor - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.xor - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/x - global.get $std/operator-overloading/x - i32.load - i32.const 65535 - i32.eq - if (result i32) - global.get $std/operator-overloading/x - i32.load offset=4 - i32.const 255 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq1 - i32.const 1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq2 - global.get $std/operator-overloading/eq1 - global.get $std/operator-overloading/eq2 - call $std/operator-overloading/Tester.equals - global.set $std/operator-overloading/eq - global.get $std/operator-overloading/eq - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq3 - i32.const 0 - i32.const 1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq4 - global.get $std/operator-overloading/eq3 - global.get $std/operator-overloading/eq4 - call $std/operator-overloading/Tester.equals - global.set $std/operator-overloading/eqf - global.get $std/operator-overloading/eqf - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/eq1 - global.get $std/operator-overloading/eq2 - call $std/operator-overloading/Tester.notEquals - global.set $std/operator-overloading/eq - global.get $std/operator-overloading/eq - if - i32.const 0 - i32.const 1040 - i32.const 209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/eq3 - global.get $std/operator-overloading/eq4 - call $std/operator-overloading/Tester.notEquals - global.set $std/operator-overloading/eqf - global.get $std/operator-overloading/eqf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 213 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2147483647 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gt1 - i32.const 1 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gt2 - global.get $std/operator-overloading/gt1 - local.tee $0 - i32.load - global.get $std/operator-overloading/gt2 - local.tee $1 - i32.load - i32.gt_s - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.gt_s - else - i32.const 0 - end - global.set $std/operator-overloading/gt - global.get $std/operator-overloading/gt - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 219 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gte1 - i32.const 2 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gte2 - global.get $std/operator-overloading/gte1 - local.tee $0 - i32.load - global.get $std/operator-overloading/gte2 - local.tee $1 - i32.load - i32.ge_s - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.ge_s - else - i32.const 0 - end - global.set $std/operator-overloading/gte - global.get $std/operator-overloading/gte - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 225 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const -1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/le1 - i32.const 6 - i32.const 6 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/le2 - global.get $std/operator-overloading/le1 - local.tee $0 - i32.load - global.get $std/operator-overloading/le2 - local.tee $1 - i32.load - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.lt_s - else - i32.const 0 - end - global.set $std/operator-overloading/le - global.get $std/operator-overloading/le - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 231 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/leq1 - i32.const 4 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/leq2 - global.get $std/operator-overloading/leq1 - local.tee $0 - i32.load - global.get $std/operator-overloading/leq2 - local.tee $1 - i32.load - i32.le_s - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.le_s - else - i32.const 0 - end - global.set $std/operator-overloading/leq - global.get $std/operator-overloading/leq - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 237 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 16 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/shr - global.get $std/operator-overloading/shr - local.tee $0 - i32.load - i32.const 3 - i32.shr_s - local.get $0 - i32.load offset=4 - i32.const 3 - i32.shr_s - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/sres - global.get $std/operator-overloading/sres - i32.load - i32.const 1 - i32.eq - if (result i32) - global.get $std/operator-overloading/sres - i32.load offset=4 - i32.const 2 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 242 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -8 - i32.const -16 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/shu - global.get $std/operator-overloading/shu - local.tee $0 - i32.load - i32.const 3 - i32.shr_u - local.get $0 - i32.load offset=4 - i32.const 3 - i32.shr_u - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/ures - global.get $std/operator-overloading/ures - i32.load - i32.const 536870911 - i32.eq - if (result i32) - global.get $std/operator-overloading/ures - i32.load offset=4 - i32.const 536870910 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 247 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/shl - global.get $std/operator-overloading/shl - local.tee $0 - i32.load - i32.const 3 - i32.shl - local.get $0 - i32.load offset=4 - i32.const 3 - i32.shl - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/sres - global.get $std/operator-overloading/sres - i32.load - i32.const 8 - i32.eq - if (result i32) - global.get $std/operator-overloading/sres - i32.load offset=4 - i32.const 16 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 252 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/pos - global.get $std/operator-overloading/pos - local.tee $0 - i32.load - local.get $0 - i32.load offset=4 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/pres - global.get $std/operator-overloading/pres - i32.load - global.get $std/operator-overloading/pos - i32.load - i32.eq - if (result i32) - global.get $std/operator-overloading/pres - i32.load offset=4 - global.get $std/operator-overloading/pos - i32.load offset=4 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 257 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/neg - i32.const 0 - global.get $std/operator-overloading/neg - local.tee $0 - i32.load - i32.sub - i32.const 0 - local.get $0 - i32.load offset=4 - i32.sub - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/nres - global.get $std/operator-overloading/nres - i32.load - i32.const 0 - global.get $std/operator-overloading/neg - i32.load - i32.sub - i32.eq - if (result i32) - global.get $std/operator-overloading/nres - i32.load offset=4 - i32.const 0 - global.get $std/operator-overloading/neg - i32.load offset=4 - i32.sub - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 262 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 255 - i32.const 16 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/not - global.get $std/operator-overloading/not - local.tee $0 - i32.load - i32.const -1 - i32.xor - local.get $0 - i32.load offset=4 - i32.const -1 - i32.xor - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/res - global.get $std/operator-overloading/res - i32.load - global.get $std/operator-overloading/not - i32.load - i32.const -1 - i32.xor - i32.eq - if (result i32) - global.get $std/operator-overloading/res - i32.load offset=4 - global.get $std/operator-overloading/not - i32.load offset=4 - i32.const -1 - i32.xor - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 267 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/excl - global.get $std/operator-overloading/excl - local.tee $0 - local.set $1 - local.get $0 - i32.load - if (result i32) - i32.const 0 - else - local.get $1 - i32.load offset=4 - i32.eqz - end - global.set $std/operator-overloading/bres - global.get $std/operator-overloading/excl - i32.load - if (result i32) - i32.const 0 - else - global.get $std/operator-overloading/excl - i32.load offset=4 - i32.eqz - end - global.get $std/operator-overloading/bres - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 272 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/bres - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 273 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/incdec - global.get $std/operator-overloading/incdec - local.tee $0 - i32.load - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - global.set $std/operator-overloading/incdec - global.get $std/operator-overloading/incdec - i32.load - i32.const 1 - i32.eq - if (result i32) - global.get $std/operator-overloading/incdec - i32.load offset=4 - i32.const 2 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/incdec - local.tee $0 - i32.load - i32.const 1 - i32.sub - local.set $1 - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - global.set $std/operator-overloading/incdec - global.get $std/operator-overloading/incdec - i32.load - if (result i32) - i32.const 0 - else - global.get $std/operator-overloading/incdec - i32.load offset=4 - i32.const 1 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 282 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/incdec - global.get $std/operator-overloading/incdec - local.tee $0 - i32.load - i32.const 1 - i32.add - local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/incdec - local.get $0 - global.set $std/operator-overloading/tmp - global.get $std/operator-overloading/tmp - i32.load - if (result i32) - i32.const 0 - else - global.get $std/operator-overloading/tmp - i32.load offset=4 - i32.const 1 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 287 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/incdec - i32.load - i32.const 1 - i32.eq - if (result i32) - global.get $std/operator-overloading/incdec - i32.load offset=4 - i32.const 2 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 288 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/incdec - local.tee $0 - i32.load - i32.const 1 - i32.sub - local.get $0 - i32.load offset=4 - i32.const 1 - i32.sub - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/incdec - local.get $0 - global.set $std/operator-overloading/tmp - global.get $std/operator-overloading/tmp - i32.load - i32.const 1 - i32.eq - if (result i32) - global.get $std/operator-overloading/tmp - i32.load offset=4 - i32.const 2 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 291 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/incdec - i32.load - if (result i32) - i32.const 0 - else - global.get $std/operator-overloading/incdec - i32.load offset=4 - i32.const 1 - i32.eq - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - call $std/operator-overloading/TesterInlineStatic#constructor - global.set $std/operator-overloading/ais1 - global.get $std/operator-overloading/ais1 - local.tee $0 - i32.load - i32.const 1 - i32.add - local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - call $std/operator-overloading/TesterInlineStatic#constructor - global.set $std/operator-overloading/ais1 - i32.const 2 - i32.const 3 - call $std/operator-overloading/TesterInlineStatic#constructor - global.set $std/operator-overloading/ais2 - global.get $std/operator-overloading/ais1 - local.tee $0 - i32.load - global.get $std/operator-overloading/ais2 - local.tee $1 - i32.load - i32.add - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.add - call $std/operator-overloading/TesterInlineStatic#constructor - global.set $std/operator-overloading/ais - global.get $std/operator-overloading/ais - i32.load - i32.const 4 - i32.eq - if (result i32) - global.get $std/operator-overloading/ais - i32.load offset=4 - i32.const 6 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 312 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - call $std/operator-overloading/TesterInlineInstance#constructor - global.set $std/operator-overloading/aii1 - global.get $std/operator-overloading/aii1 - local.tee $0 - i32.load - i32.const 1 - i32.add - local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - call $std/operator-overloading/TesterInlineInstance#constructor - global.set $std/operator-overloading/aii1 - i32.const 2 - i32.const 3 - call $std/operator-overloading/TesterInlineInstance#constructor - global.set $std/operator-overloading/aii2 - global.get $std/operator-overloading/aii1 - local.tee $0 - i32.load - global.get $std/operator-overloading/aii2 - local.tee $1 - i32.load - i32.add - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.add - call $std/operator-overloading/TesterInlineInstance#constructor - global.set $std/operator-overloading/aii - global.get $std/operator-overloading/aii - i32.load - i32.const 4 - i32.eq - if (result i32) - global.get $std/operator-overloading/aii - i32.load offset=4 - i32.const 6 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 332 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/operator-overloading - ) -) diff --git a/tests/compiler/std/operator-overloading.release.wat b/tests/compiler/std/operator-overloading.release.wat new file mode 100644 index 0000000000..1efa8f2c5c --- /dev/null +++ b/tests/compiler/std/operator-overloading.release.wat @@ -0,0 +1,4913 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $std/operator-overloading/a1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/a2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/a (mut i32) (i32.const 0)) + (global $std/operator-overloading/s1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/s2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/s (mut i32) (i32.const 0)) + (global $std/operator-overloading/m1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/m2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/m (mut i32) (i32.const 0)) + (global $std/operator-overloading/d1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/d2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/d (mut i32) (i32.const 0)) + (global $std/operator-overloading/f1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/f2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/f (mut i32) (i32.const 0)) + (global $std/operator-overloading/p1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/p2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/p (mut i32) (i32.const 0)) + (global $std/operator-overloading/n1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/n2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/n (mut i32) (i32.const 0)) + (global $std/operator-overloading/o1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/o2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/o (mut i32) (i32.const 0)) + (global $std/operator-overloading/x1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/x2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/x (mut i32) (i32.const 0)) + (global $std/operator-overloading/eq1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/eq2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/eq (mut i32) (i32.const 0)) + (global $std/operator-overloading/eq3 (mut i32) (i32.const 0)) + (global $std/operator-overloading/eq4 (mut i32) (i32.const 0)) + (global $std/operator-overloading/eqf (mut i32) (i32.const 0)) + (global $std/operator-overloading/gt1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/gt2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/gt (mut i32) (i32.const 0)) + (global $std/operator-overloading/gte1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/gte2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/gte (mut i32) (i32.const 0)) + (global $std/operator-overloading/le1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/le2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/le (mut i32) (i32.const 0)) + (global $std/operator-overloading/leq1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/leq2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/leq (mut i32) (i32.const 0)) + (global $std/operator-overloading/shr (mut i32) (i32.const 0)) + (global $std/operator-overloading/sres (mut i32) (i32.const 0)) + (global $std/operator-overloading/shu (mut i32) (i32.const 0)) + (global $std/operator-overloading/ures (mut i32) (i32.const 0)) + (global $std/operator-overloading/shl (mut i32) (i32.const 0)) + (global $std/operator-overloading/pos (mut i32) (i32.const 0)) + (global $std/operator-overloading/pres (mut i32) (i32.const 0)) + (global $std/operator-overloading/neg (mut i32) (i32.const 0)) + (global $std/operator-overloading/nres (mut i32) (i32.const 0)) + (global $std/operator-overloading/not (mut i32) (i32.const 0)) + (global $std/operator-overloading/res (mut i32) (i32.const 0)) + (global $std/operator-overloading/excl (mut i32) (i32.const 0)) + (global $std/operator-overloading/bres (mut i32) (i32.const 0)) + (global $std/operator-overloading/incdec (mut i32) (i32.const 0)) + (global $std/operator-overloading/tmp (mut i32) (i32.const 0)) + (global $std/operator-overloading/ais1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/ais2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/ais (mut i32) (i32.const 0)) + (global $std/operator-overloading/aii1 (mut i32) (i32.const 0)) + (global $std/operator-overloading/aii2 (mut i32) (i32.const 0)) + (global $std/operator-overloading/aii (mut i32) (i32.const 0)) + (global $std/operator-overloading/tea (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34388)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "L") + (data $8.1 (i32.const 1448) "\02\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") + (data $9 (i32.const 1516) "\1c") + (data $9.1 (i32.const 1528) "\02\00\00\00\02\00\00\00x") + (data $10 (i32.const 1548) "\1c") + (data $10.1 (i32.const 1560) "\02\00\00\00\02\00\00\00y") + (data $11 (i32.const 1584) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$334 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34388 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$334 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1584 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1588 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34400 + i32.const 0 + i32.store + i32.const 35968 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34400 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34400 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34400 + i32.const 35972 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34400 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34388 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34388 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34388 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 8 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i64.const 0 + i64.store align=1 + local.get $0 + ) + (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + i32.const 1 + local.set $2 + local.get $0 + i32.const 2 + i32.eq + if + i32.const 1 + local.get $1 + i32.shl + i32.const 0 + local.get $1 + i32.const 32 + i32.lt_u + select + return + end + local.get $1 + i32.const 0 + i32.le_s + if + local.get $0 + i32.const -1 + i32.eq + if + i32.const -1 + i32.const 1 + local.get $1 + i32.const 1 + i32.and + select + return + end + local.get $1 + i32.eqz + local.get $0 + i32.const 1 + i32.eq + i32.or + return + else + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + return + else + local.get $1 + i32.const 2 + i32.eq + if + local.get $0 + local.get $0 + i32.mul + return + else + local.get $1 + i32.const 32 + i32.lt_s + if + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + i32.const 31 + local.get $1 + i32.clz + i32.sub + br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.const 1 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + end + local.get $2 + return + end + end + end + end + loop $while-continue|1 + local.get $1 + if + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + br $while-continue|1 + end + end + local.get $2 + ) + (func $~lib/rt/__visit_globals + (local $0 i32) + global.get $std/operator-overloading/a1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/a2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq4 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gt1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gt2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gte1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gte2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/le1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/le2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/leq1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/leq2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shr + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/sres + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shu + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ures + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shl + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/pos + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/pres + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/neg + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/nres + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/not + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/res + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/excl + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/incdec + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/tmp + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/tea + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $std/operator-overloading/TesterElementAccess + block $std/operator-overloading/TesterInlineInstance + block $std/operator-overloading/TesterInlineStatic + block $std/operator-overloading/Tester + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/operator-overloading/Tester $std/operator-overloading/TesterInlineStatic $std/operator-overloading/TesterInlineInstance $std/operator-overloading/TesterElementAccess $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:std/operator-overloading + ) + (func $std/operator-overloading/Tester#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/operator-overloading/Tester.equals (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.eq + else + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/operator-overloading/Tester.notEquals (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.ne + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.ne + else + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/operator-overloading/TesterInlineStatic#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/operator-overloading/TesterInlineInstance#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String.__eq (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.const 1536 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $0 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.store + local.get $2 + i32.const 1532 + i32.load + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1536 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.store offset=4 + i32.const 1 + local.get $0 + local.tee $1 + i32.const 7 + i32.and + local.get $2 + local.tee $0 + i32.const 4 + i32.lt_u + select + i32.eqz + if + loop $do-loop|0 + local.get $1 + i64.load + local.get $3 + i64.load + i64.eq + if + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$199 + loop $while-continue|1 + local.get $0 + local.tee $2 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + if + local.get $1 + i32.load16_u + local.tee $4 + local.get $3 + i32.load16_u + local.tee $5 + i32.sub + local.set $2 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$199 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $while-continue|1 + end + end + i32.const 0 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $std/operator-overloading/TesterElementAccess#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String.__eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + i32.store + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/operator-overloading/TesterElementAccess#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String.__eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/operator-overloading + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 34388 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + i32.const 1 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/a1 + i32.const 2 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/a2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/a1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/a2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.add + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/a + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/a + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/a + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 5 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 145 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/s1 + i32.const 2 + i32.const -3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/s2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/s1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/s2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.sub + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.sub + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/s + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/s + local.tee $0 + i32.store + local.get $0 + i32.load + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/s + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 6 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 5 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/m1 + i32.const 3 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/m2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/m1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/m2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.mul + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.mul + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/m + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/m + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 6 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/m + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 10 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6 + i32.const 50 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/d1 + i32.const 3 + i32.const 10 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/d2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/d1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/d2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.div_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.div_s + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/d + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/d + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/d + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 5 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + i32.const 10 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/f1 + i32.const 6 + i32.const 10 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/f2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/f1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/f2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.rem_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.rem_s + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/f + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/f + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/f + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + else + i32.const 1 + end + if + i32.const 0 + i32.const 1456 + i32.const 169 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/p1 + i32.const 4 + i32.const 5 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/p2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/p1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/p2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + call $~lib/math/ipow32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + call $~lib/math/ipow32 + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/p + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/p + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 16 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/p + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 243 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 255 + i32.const 15 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/n1 + i32.const 15 + i32.const 255 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/n2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/n1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/n2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.and + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/n + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/n + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 15 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/n + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 15 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3855 + i32.const 255 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/o1 + i32.const 61680 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/o2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/o1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/o2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.or + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.or + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/o + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/o + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 65535 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/o + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 255 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 255 + i32.const 255 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/x1 + i32.const 65280 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/x2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/x1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/x2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.xor + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.xor + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/x + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/x + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 65535 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/x + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 255 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const -2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq1 + i32.const 1 + i32.const -2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/eq1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/eq2 + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $std/operator-overloading/Tester.equals + global.set $std/operator-overloading/eq + global.get $std/operator-overloading/eq + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq3 + i32.const 0 + i32.const 1 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/eq4 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/eq3 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/eq4 + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $std/operator-overloading/Tester.equals + global.set $std/operator-overloading/eqf + global.get $std/operator-overloading/eqf + if + i32.const 0 + i32.const 1456 + i32.const 205 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/eq1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/eq2 + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $std/operator-overloading/Tester.notEquals + global.set $std/operator-overloading/eq + global.get $std/operator-overloading/eq + if + i32.const 0 + i32.const 1456 + i32.const 209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/eq3 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/eq4 + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $std/operator-overloading/Tester.notEquals + global.set $std/operator-overloading/eqf + global.get $std/operator-overloading/eqf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 213 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2147483647 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gt1 + i32.const 1 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gt2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/gt1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/gt2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.gt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.gt_s + else + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/gt + global.get $std/operator-overloading/gt + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gte1 + i32.const 2 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/gte2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/gte1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/gte2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.ge_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.ge_s + else + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/gte + global.get $std/operator-overloading/gte + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 225 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const -1 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/le1 + i32.const 6 + i32.const 6 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/le2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/le1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/le2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.lt_s + else + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/le + global.get $std/operator-overloading/le + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 231 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/leq1 + i32.const 4 + i32.const 3 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/leq2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/leq1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/leq2 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.le_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.le_s + else + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/leq + global.get $std/operator-overloading/leq + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.const 16 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/shr + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/shr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 3 + i32.shr_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 3 + i32.shr_s + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/sres + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/sres + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/sres + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 2 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 242 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -8 + i32.const -16 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/shu + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/shu + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 3 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 3 + i32.shr_u + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/ures + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ures + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 536870911 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ures + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 536870910 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 247 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/shl + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/shl + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 3 + i32.shl + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 3 + i32.shl + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/sres + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/sres + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 8 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/sres + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 16 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 252 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const -2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/pos + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/pos + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/pres + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/pres + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/pos + local.tee $1 + i32.store + local.get $1 + i32.load + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/pres + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/pos + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const -2 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/neg + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/neg + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + local.get $0 + i32.load + i32.sub + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + local.get $0 + i32.load offset=4 + i32.sub + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/nres + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/nres + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/neg + local.tee $1 + i32.store + i32.const 0 + local.get $1 + i32.load + i32.sub + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/nres + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/neg + local.tee $1 + i32.store + i32.const 0 + local.get $1 + i32.load offset=4 + i32.sub + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 262 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 255 + i32.const 16 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/not + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/not + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const -1 + i32.xor + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const -1 + i32.xor + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/res + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/res + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/not + local.tee $1 + i32.store + local.get $1 + i32.load + i32.const -1 + i32.xor + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/res + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/not + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + i32.const -1 + i32.xor + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 267 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/excl + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/excl + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + if (result i32) + i32.const 1 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + global.set $std/operator-overloading/bres + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/excl + local.tee $0 + i32.store + global.get $std/operator-overloading/bres + local.get $0 + i32.load + if (result i32) + i32.const 1 + else + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/excl + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + end + i32.eqz + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 272 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/operator-overloading/bres + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 273 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/incdec + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $std/operator-overloading/incdec + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 2 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 279 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.sub + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $std/operator-overloading/incdec + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store + local.get $0 + i32.load + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 282 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + call $std/operator-overloading/Tester#constructor + global.set $std/operator-overloading/incdec + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/incdec + local.get $0 + global.set $std/operator-overloading/tmp + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tmp + local.tee $0 + i32.store + local.get $0 + i32.load + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tmp + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 287 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 2 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.sub + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + call $std/operator-overloading/Tester#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.set $std/operator-overloading/incdec + local.get $0 + global.set $std/operator-overloading/tmp + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tmp + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tmp + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 2 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 291 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store + local.get $0 + i32.load + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/incdec + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.eq + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 292 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + call $std/operator-overloading/TesterInlineStatic#constructor + global.set $std/operator-overloading/ais1 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ais1 + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + call $std/operator-overloading/TesterInlineStatic#constructor + global.set $std/operator-overloading/ais1 + i32.const 2 + i32.const 3 + call $std/operator-overloading/TesterInlineStatic#constructor + global.set $std/operator-overloading/ais2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ais1 + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ais2 + local.tee $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.add + call $std/operator-overloading/TesterInlineStatic#constructor + global.set $std/operator-overloading/ais + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ais + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ais + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 6 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 312 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + call $std/operator-overloading/TesterInlineInstance#constructor + global.set $std/operator-overloading/aii1 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii1 + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + call $std/operator-overloading/TesterInlineInstance#constructor + global.set $std/operator-overloading/aii1 + i32.const 2 + i32.const 3 + call $std/operator-overloading/TesterInlineInstance#constructor + global.set $std/operator-overloading/aii2 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii1 + local.tee $0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii2 + local.tee $1 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + i32.add + call $std/operator-overloading/TesterInlineInstance#constructor + global.set $std/operator-overloading/aii + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 6 + i32.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 332 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $std/operator-overloading/tea + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $0 + i32.store + local.get $0 + i32.const 1536 + i32.const -1 + call $std/operator-overloading/TesterElementAccess#__set + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $0 + i32.store + local.get $0 + i32.const 1568 + i32.const -2 + call $std/operator-overloading/TesterElementAccess#__set + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 360 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $0 + i32.store + local.get $0 + i32.const 1536 + call $std/operator-overloading/TesterElementAccess#__get + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 361 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const -2 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 363 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $0 + i32.store + local.get $0 + i32.const 1568 + call $std/operator-overloading/TesterElementAccess#__get + i32.const -2 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 364 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $1 + i32.store offset=4 + local.get $0 + i32.const 1536 + local.get $1 + i32.const 1536 + call $std/operator-overloading/TesterElementAccess#__get + i32.const 1 + i32.add + call $std/operator-overloading/TesterElementAccess#__set + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $1 + i32.store offset=4 + local.get $0 + i32.const 1568 + local.get $1 + i32.const 1568 + call $std/operator-overloading/TesterElementAccess#__get + i32.const 1 + i32.sub + call $std/operator-overloading/TesterElementAccess#__set + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $0 + i32.store + local.get $0 + i32.const 1536 + call $std/operator-overloading/TesterElementAccess#__get + if + i32.const 0 + i32.const 1456 + i32.const 369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/tea + local.tee $0 + i32.store + local.get $0 + i32.const 1568 + call $std/operator-overloading/TesterElementAccess#__get + i32.const -3 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 370 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/std/operator-overloading.ts b/tests/compiler/std/operator-overloading.ts index 314f5cc9fa..8dbb881d52 100644 --- a/tests/compiler/std/operator-overloading.ts +++ b/tests/compiler/std/operator-overloading.ts @@ -330,3 +330,41 @@ aii1++; // 2, 3 var aii2 = new TesterInlineInstance(2, 3); var aii = aii1 + aii2; assert(aii.x == 4 && aii.y == 6); + +// test custom element access overloading with string keys +class TesterElementAccess { + [key: string]: number; + constructor( + public x: i32, + public y: i32 + ) {} + @operator("[]") + __get(key: string): i32 { + return key == "x" + ? this.x + : this.y; + } + @operator("[]=") + __set(key: string, value: i32): void { + key == "x" + ? this.x = value + : this.y = value; + } +} + +var tea = new TesterElementAccess(1, 2); + +tea["x"] = -1; +tea["y"] = -2; + +assert(tea.x == -1); +assert(tea["x"] == -1); + +assert(tea.y == -2); +assert(tea["y"] == -2); + +tea["x"]++; +--tea["y"]; + +assert(tea["x"] == 0); +assert(tea["y"] == -3); diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat deleted file mode 100644 index 3722cbd445..0000000000 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ /dev/null @@ -1,2323 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $std/operator-overloading/a1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/a2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/a (mut i32) (i32.const 0)) - (global $std/operator-overloading/s1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/s2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/s (mut i32) (i32.const 0)) - (global $std/operator-overloading/m1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/m2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/m (mut i32) (i32.const 0)) - (global $std/operator-overloading/d1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/d2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/d (mut i32) (i32.const 0)) - (global $std/operator-overloading/f1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/f2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/f (mut i32) (i32.const 0)) - (global $std/operator-overloading/p1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/p2 (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $std/operator-overloading/p (mut i32) (i32.const 0)) - (global $std/operator-overloading/n1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/n2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/n (mut i32) (i32.const 0)) - (global $std/operator-overloading/o1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/o2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/o (mut i32) (i32.const 0)) - (global $std/operator-overloading/x1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/x2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/x (mut i32) (i32.const 0)) - (global $std/operator-overloading/eq1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/eq2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/eq (mut i32) (i32.const 0)) - (global $std/operator-overloading/eq3 (mut i32) (i32.const 0)) - (global $std/operator-overloading/eq4 (mut i32) (i32.const 0)) - (global $std/operator-overloading/eqf (mut i32) (i32.const 0)) - (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $std/operator-overloading/gt1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/gt2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/gt (mut i32) (i32.const 0)) - (global $std/operator-overloading/gte1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/gte2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/gte (mut i32) (i32.const 0)) - (global $std/operator-overloading/le1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/le2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/le (mut i32) (i32.const 0)) - (global $std/operator-overloading/leq1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/leq2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/leq (mut i32) (i32.const 0)) - (global $std/operator-overloading/shr (mut i32) (i32.const 0)) - (global $std/operator-overloading/sres (mut i32) (i32.const 0)) - (global $std/operator-overloading/shu (mut i32) (i32.const 0)) - (global $std/operator-overloading/ures (mut i32) (i32.const 0)) - (global $std/operator-overloading/shl (mut i32) (i32.const 0)) - (global $std/operator-overloading/pos (mut i32) (i32.const 0)) - (global $std/operator-overloading/pres (mut i32) (i32.const 0)) - (global $std/operator-overloading/neg (mut i32) (i32.const 0)) - (global $std/operator-overloading/nres (mut i32) (i32.const 0)) - (global $std/operator-overloading/not (mut i32) (i32.const 0)) - (global $std/operator-overloading/res (mut i32) (i32.const 0)) - (global $std/operator-overloading/excl (mut i32) (i32.const 0)) - (global $std/operator-overloading/bres (mut i32) (i32.const 0)) - (global $std/operator-overloading/incdec (mut i32) (i32.const 0)) - (global $std/operator-overloading/tmp (mut i32) (i32.const 0)) - (global $std/operator-overloading/ais1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/ais2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/ais (mut i32) (i32.const 0)) - (global $std/operator-overloading/aii1 (mut i32) (i32.const 0)) - (global $std/operator-overloading/aii2 (mut i32) (i32.const 0)) - (global $std/operator-overloading/aii (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 88)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $std/operator-overloading/Tester#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $std/operator-overloading/Tester.add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.load - i32.add - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.add - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.sub (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.load - i32.sub - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.sub - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.mul (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.load - i32.mul - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.mul - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.div (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.load - i32.div_s - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.div_s - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.mod (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.load - i32.rem_s - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.rem_s - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - local.set $2 - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $1 - i32.const 0 - i32.le_s - if - local.get $0 - i32.const -1 - i32.eq - if - i32.const -1 - i32.const 1 - local.get $1 - i32.const 1 - i32.and - select - return - end - local.get $1 - i32.const 0 - i32.eq - local.get $0 - i32.const 1 - i32.eq - i32.or - return - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - return - else - local.get $1 - i32.const 2 - i32.eq - if - local.get $0 - local.get $0 - i32.mul - return - else - local.get $1 - i32.const 32 - i32.lt_s - if - i32.const 32 - local.get $1 - i32.clz - i32.sub - local.set $3 - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $3 - local.set $4 - local.get $4 - i32.const 5 - i32.eq - br_if $case0|0 - local.get $4 - i32.const 4 - i32.eq - br_if $case1|0 - local.get $4 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $4 - i32.const 2 - i32.eq - br_if $case3|0 - local.get $4 - i32.const 1 - i32.eq - br_if $case4|0 - br $break|0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - end - local.get $2 - return - end - end - end - end - loop $while-continue|1 - local.get $1 - local.set $3 - local.get $3 - if - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - br $while-continue|1 - end - end - local.get $2 - ) - (func $std/operator-overloading/Tester.pow (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.load - call $~lib/math/ipow32 - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - call $~lib/math/ipow32 - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.and (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.load - i32.and - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.and - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.or (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.load - i32.or - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.or - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.xor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.load - i32.xor - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.xor - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.equals (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load - local.get $1 - i32.load - i32.eq - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.eq - else - i32.const 0 - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.notEquals (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load - local.get $1 - i32.load - i32.ne - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.ne - else - i32.const 0 - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.greater (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load - local.get $1 - i32.load - i32.gt_s - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.gt_s - else - i32.const 0 - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.greaterEquals (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load - local.get $1 - i32.load - i32.ge_s - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.ge_s - else - i32.const 0 - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.less (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load - local.get $1 - i32.load - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.lt_s - else - i32.const 0 - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.lessEquals (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load - local.get $1 - i32.load - i32.le_s - if (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.le_s - else - i32.const 0 - end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.shr (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.shr_s - local.get $0 - i32.load offset=4 - local.get $1 - i32.shr_s - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.shu (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.shr_u - local.get $0 - i32.load offset=4 - local.get $1 - i32.shr_u - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.shl (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.shl - local.get $0 - i32.load offset=4 - local.get $1 - i32.shl - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.pos (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - call $std/operator-overloading/Tester#constructor - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $std/operator-overloading/Tester.neg (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - i32.const 0 - local.get $0 - i32.load - i32.sub - i32.const 0 - local.get $0 - i32.load offset=4 - i32.sub - call $std/operator-overloading/Tester#constructor - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $std/operator-overloading/Tester.not (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - local.get $0 - i32.load - i32.const -1 - i32.xor - local.get $0 - i32.load offset=4 - i32.const -1 - i32.xor - call $std/operator-overloading/Tester#constructor - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $std/operator-overloading/Tester.excl (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.load - i32.eqz - if (result i32) - local.get $0 - i32.load offset=4 - i32.eqz - else - i32.const 0 - end - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $std/operator-overloading/Tester#inc (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.add - i32.store - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/stub/__retain - ) - (func $std/operator-overloading/Tester#dec (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.sub - i32.store - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - call $~lib/rt/stub/__retain - ) - (func $std/operator-overloading/Tester#postInc (param $0 i32) (result i32) - i32.const 0 - local.get $0 - i32.load - i32.const 1 - i32.add - local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - call $std/operator-overloading/Tester#constructor - ) - (func $std/operator-overloading/Tester#postDec (param $0 i32) (result i32) - i32.const 0 - local.get $0 - i32.load - i32.const 1 - i32.sub - local.get $0 - i32.load offset=4 - i32.const 1 - i32.sub - call $std/operator-overloading/Tester#constructor - ) - (func $std/operator-overloading/TesterInlineStatic#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - ) - (func $std/operator-overloading/TesterInlineInstance#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - ) - (func $start:std/operator-overloading - (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) - (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) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - i32.const 1 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/a1 - i32.const 0 - i32.const 2 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/a2 - global.get $std/operator-overloading/a1 - global.get $std/operator-overloading/a2 - call $std/operator-overloading/Tester.add - local.tee $0 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/a - global.get $std/operator-overloading/a - i32.load - i32.const 3 - i32.eq - if (result i32) - global.get $std/operator-overloading/a - i32.load offset=4 - i32.const 5 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 145 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/s1 - i32.const 0 - i32.const 2 - i32.const -3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/s2 - global.get $std/operator-overloading/s1 - global.get $std/operator-overloading/s2 - call $std/operator-overloading/Tester.sub - local.tee $1 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/s - global.get $std/operator-overloading/s - i32.load - i32.const 0 - i32.eq - if (result i32) - global.get $std/operator-overloading/s - i32.load offset=4 - i32.const 6 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 5 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/m1 - i32.const 0 - i32.const 3 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/m2 - global.get $std/operator-overloading/m1 - global.get $std/operator-overloading/m2 - call $std/operator-overloading/Tester.mul - local.tee $2 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/m - global.get $std/operator-overloading/m - i32.load - i32.const 6 - i32.eq - if (result i32) - global.get $std/operator-overloading/m - i32.load offset=4 - i32.const 10 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 6 - i32.const 50 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/d1 - i32.const 0 - i32.const 3 - i32.const 10 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/d2 - global.get $std/operator-overloading/d1 - global.get $std/operator-overloading/d2 - call $std/operator-overloading/Tester.div - local.tee $3 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/d - global.get $std/operator-overloading/d - i32.load - i32.const 2 - i32.eq - if (result i32) - global.get $std/operator-overloading/d - i32.load offset=4 - i32.const 5 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 10 - i32.const 10 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/f1 - i32.const 0 - i32.const 6 - i32.const 10 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/f2 - global.get $std/operator-overloading/f1 - global.get $std/operator-overloading/f2 - call $std/operator-overloading/Tester.mod - local.tee $4 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/f - global.get $std/operator-overloading/f - i32.load - i32.const 4 - i32.eq - if (result i32) - global.get $std/operator-overloading/f - i32.load offset=4 - i32.const 0 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 169 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/p1 - i32.const 0 - i32.const 4 - i32.const 5 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/p2 - global.get $std/operator-overloading/p1 - global.get $std/operator-overloading/p2 - call $std/operator-overloading/Tester.pow - local.tee $5 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/p - global.get $std/operator-overloading/p - i32.load - i32.const 16 - i32.eq - if (result i32) - global.get $std/operator-overloading/p - i32.load offset=4 - i32.const 243 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 175 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 255 - i32.const 15 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/n1 - i32.const 0 - i32.const 15 - i32.const 255 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/n2 - global.get $std/operator-overloading/n1 - global.get $std/operator-overloading/n2 - call $std/operator-overloading/Tester.and - local.tee $6 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/n - global.get $std/operator-overloading/n - i32.load - i32.const 15 - i32.eq - if (result i32) - global.get $std/operator-overloading/n - i32.load offset=4 - i32.const 15 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 181 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 3855 - i32.const 255 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/o1 - i32.const 0 - i32.const 61680 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/o2 - global.get $std/operator-overloading/o1 - global.get $std/operator-overloading/o2 - call $std/operator-overloading/Tester.or - local.tee $7 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/o - global.get $std/operator-overloading/o - i32.load - i32.const 65535 - i32.eq - if (result i32) - global.get $std/operator-overloading/o - i32.load offset=4 - i32.const 255 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 187 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 255 - i32.const 255 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/x1 - i32.const 0 - i32.const 65280 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/x2 - global.get $std/operator-overloading/x1 - global.get $std/operator-overloading/x2 - call $std/operator-overloading/Tester.xor - local.tee $8 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/x - global.get $std/operator-overloading/x - i32.load - i32.const 65535 - i32.eq - if (result i32) - global.get $std/operator-overloading/x - i32.load offset=4 - i32.const 255 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq1 - i32.const 0 - i32.const 1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq2 - global.get $std/operator-overloading/eq1 - global.get $std/operator-overloading/eq2 - call $std/operator-overloading/Tester.equals - global.set $std/operator-overloading/eq - global.get $std/operator-overloading/eq - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq3 - i32.const 0 - i32.const 0 - i32.const 1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/eq4 - global.get $std/operator-overloading/eq3 - global.get $std/operator-overloading/eq4 - call $std/operator-overloading/Tester.equals - global.set $std/operator-overloading/eqf - global.get $std/operator-overloading/eqf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/eq1 - global.get $std/operator-overloading/eq2 - call $std/operator-overloading/Tester.notEquals - global.set $std/operator-overloading/eq - global.get $std/operator-overloading/eq - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/eq3 - global.get $std/operator-overloading/eq4 - call $std/operator-overloading/Tester.notEquals - global.set $std/operator-overloading/eqf - global.get $std/operator-overloading/eqf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 213 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gt1 - i32.const 0 - i32.const 1 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gt2 - global.get $std/operator-overloading/gt1 - global.get $std/operator-overloading/gt2 - call $std/operator-overloading/Tester.greater - global.set $std/operator-overloading/gt - global.get $std/operator-overloading/gt - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 219 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gte1 - i32.const 0 - i32.const 2 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/gte2 - global.get $std/operator-overloading/gte1 - global.get $std/operator-overloading/gte2 - call $std/operator-overloading/Tester.greaterEquals - global.set $std/operator-overloading/gte - global.get $std/operator-overloading/gte - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 225 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 5 - i32.const -1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/le1 - i32.const 0 - i32.const 6 - i32.const 6 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/le2 - global.get $std/operator-overloading/le1 - global.get $std/operator-overloading/le2 - call $std/operator-overloading/Tester.less - global.set $std/operator-overloading/le - global.get $std/operator-overloading/le - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 231 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 4 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/leq1 - i32.const 0 - i32.const 4 - i32.const 3 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/leq2 - global.get $std/operator-overloading/leq1 - global.get $std/operator-overloading/leq2 - call $std/operator-overloading/Tester.lessEquals - global.set $std/operator-overloading/leq - global.get $std/operator-overloading/leq - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 237 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 8 - i32.const 16 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/shr - global.get $std/operator-overloading/shr - i32.const 3 - call $std/operator-overloading/Tester.shr - local.tee $9 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/sres - global.get $std/operator-overloading/sres - i32.load - i32.const 1 - i32.eq - if (result i32) - global.get $std/operator-overloading/sres - i32.load offset=4 - i32.const 2 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 242 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const -8 - i32.const -16 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/shu - global.get $std/operator-overloading/shu - i32.const 3 - call $std/operator-overloading/Tester.shu - local.tee $10 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/ures - global.get $std/operator-overloading/ures - i32.load - i32.const 536870911 - i32.eq - if (result i32) - global.get $std/operator-overloading/ures - i32.load offset=4 - i32.const 536870910 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 247 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.const 2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/shl - global.get $std/operator-overloading/shl - i32.const 3 - call $std/operator-overloading/Tester.shl - local.tee $11 - local.tee $12 - global.get $std/operator-overloading/sres - local.tee $13 - i32.ne - if - local.get $12 - call $~lib/rt/stub/__retain - local.set $12 - local.get $13 - call $~lib/rt/stub/__release - end - local.get $12 - global.set $std/operator-overloading/sres - global.get $std/operator-overloading/sres - i32.load - i32.const 8 - i32.eq - if (result i32) - global.get $std/operator-overloading/sres - i32.load offset=4 - i32.const 16 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 252 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/pos - global.get $std/operator-overloading/pos - call $std/operator-overloading/Tester.pos - local.tee $12 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/pres - global.get $std/operator-overloading/pres - i32.load - global.get $std/operator-overloading/pos - i32.load - i32.eq - if (result i32) - global.get $std/operator-overloading/pres - i32.load offset=4 - global.get $std/operator-overloading/pos - i32.load offset=4 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 257 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const -1 - i32.const -2 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/neg - global.get $std/operator-overloading/neg - call $std/operator-overloading/Tester.neg - local.tee $13 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/nres - global.get $std/operator-overloading/nres - i32.load - i32.const 0 - global.get $std/operator-overloading/neg - i32.load - i32.sub - i32.eq - if (result i32) - global.get $std/operator-overloading/nres - i32.load offset=4 - i32.const 0 - global.get $std/operator-overloading/neg - i32.load offset=4 - i32.sub - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 262 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 255 - i32.const 16 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/not - global.get $std/operator-overloading/not - call $std/operator-overloading/Tester.not - local.tee $14 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/res - global.get $std/operator-overloading/res - i32.load - global.get $std/operator-overloading/not - i32.load - i32.const -1 - i32.xor - i32.eq - if (result i32) - global.get $std/operator-overloading/res - i32.load offset=4 - global.get $std/operator-overloading/not - i32.load offset=4 - i32.const -1 - i32.xor - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 267 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - i32.const 0 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/excl - global.get $std/operator-overloading/excl - call $std/operator-overloading/Tester.excl - global.set $std/operator-overloading/bres - global.get $std/operator-overloading/bres - global.get $std/operator-overloading/excl - i32.load - i32.eqz - if (result i32) - global.get $std/operator-overloading/excl - i32.load offset=4 - i32.eqz - else - i32.const 0 - end - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 272 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/bres - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 273 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - i32.const 1 - call $std/operator-overloading/Tester#constructor - global.set $std/operator-overloading/incdec - global.get $std/operator-overloading/incdec - call $std/operator-overloading/Tester#inc - local.tee $15 - local.tee $16 - global.get $std/operator-overloading/incdec - local.tee $17 - i32.ne - if - local.get $16 - call $~lib/rt/stub/__retain - local.set $16 - local.get $17 - call $~lib/rt/stub/__release - end - local.get $16 - global.set $std/operator-overloading/incdec - global.get $std/operator-overloading/incdec - i32.load - i32.const 1 - i32.eq - if (result i32) - global.get $std/operator-overloading/incdec - i32.load offset=4 - i32.const 2 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/incdec - call $std/operator-overloading/Tester#dec - local.tee $16 - local.tee $17 - global.get $std/operator-overloading/incdec - local.tee $18 - i32.ne - if - local.get $17 - call $~lib/rt/stub/__retain - local.set $17 - local.get $18 - call $~lib/rt/stub/__release - end - local.get $17 - global.set $std/operator-overloading/incdec - global.get $std/operator-overloading/incdec - i32.load - i32.const 0 - i32.eq - if (result i32) - global.get $std/operator-overloading/incdec - i32.load offset=4 - i32.const 1 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 282 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - i32.const 1 - call $std/operator-overloading/Tester#constructor - local.set $18 - global.get $std/operator-overloading/incdec - call $~lib/rt/stub/__release - local.get $18 - global.set $std/operator-overloading/incdec - global.get $std/operator-overloading/incdec - local.tee $18 - call $std/operator-overloading/Tester#postInc - local.tee $17 - local.tee $19 - global.get $std/operator-overloading/incdec - local.tee $20 - i32.ne - if - local.get $19 - call $~lib/rt/stub/__retain - local.set $19 - local.get $20 - call $~lib/rt/stub/__release - end - local.get $19 - global.set $std/operator-overloading/incdec - local.get $18 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/tmp - global.get $std/operator-overloading/tmp - i32.load - i32.const 0 - i32.eq - if (result i32) - global.get $std/operator-overloading/tmp - i32.load offset=4 - i32.const 1 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 287 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/incdec - i32.load - i32.const 1 - i32.eq - if (result i32) - global.get $std/operator-overloading/incdec - i32.load offset=4 - i32.const 2 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 288 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/incdec - local.tee $18 - call $std/operator-overloading/Tester#postDec - local.tee $19 - local.tee $20 - global.get $std/operator-overloading/incdec - local.tee $21 - i32.ne - if - local.get $20 - call $~lib/rt/stub/__retain - local.set $20 - local.get $21 - call $~lib/rt/stub/__release - end - local.get $20 - global.set $std/operator-overloading/incdec - local.get $18 - local.tee $21 - global.get $std/operator-overloading/tmp - local.tee $18 - i32.ne - if - local.get $21 - call $~lib/rt/stub/__retain - local.set $21 - local.get $18 - call $~lib/rt/stub/__release - end - local.get $21 - global.set $std/operator-overloading/tmp - global.get $std/operator-overloading/tmp - i32.load - i32.const 1 - i32.eq - if (result i32) - global.get $std/operator-overloading/tmp - i32.load offset=4 - i32.const 2 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 291 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/operator-overloading/incdec - i32.load - i32.const 0 - i32.eq - if (result i32) - global.get $std/operator-overloading/incdec - i32.load offset=4 - i32.const 1 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.const 2 - call $std/operator-overloading/TesterInlineStatic#constructor - global.set $std/operator-overloading/ais1 - global.get $std/operator-overloading/ais1 - call $~lib/rt/stub/__retain - local.set $20 - i32.const 0 - local.get $20 - i32.load - i32.const 1 - i32.add - local.get $20 - i32.load offset=4 - i32.const 1 - i32.add - call $std/operator-overloading/TesterInlineStatic#constructor - local.set $21 - local.get $20 - call $~lib/rt/stub/__release - local.get $21 - local.tee $20 - local.tee $18 - global.get $std/operator-overloading/ais1 - local.tee $21 - i32.ne - if - local.get $18 - call $~lib/rt/stub/__retain - local.set $18 - local.get $21 - call $~lib/rt/stub/__release - end - local.get $18 - global.set $std/operator-overloading/ais1 - i32.const 0 - i32.const 2 - i32.const 3 - call $std/operator-overloading/TesterInlineStatic#constructor - global.set $std/operator-overloading/ais2 - global.get $std/operator-overloading/ais1 - call $~lib/rt/stub/__retain - local.set $18 - global.get $std/operator-overloading/ais2 - call $~lib/rt/stub/__retain - local.set $21 - i32.const 0 - local.get $18 - i32.load - local.get $21 - i32.load - i32.add - local.get $18 - i32.load offset=4 - local.get $21 - i32.load offset=4 - i32.add - call $std/operator-overloading/TesterInlineStatic#constructor - local.set $22 - local.get $21 - call $~lib/rt/stub/__release - local.get $18 - call $~lib/rt/stub/__release - local.get $22 - local.tee $18 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/ais - global.get $std/operator-overloading/ais - i32.load - i32.const 4 - i32.eq - if (result i32) - global.get $std/operator-overloading/ais - i32.load offset=4 - i32.const 6 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 312 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.const 2 - call $std/operator-overloading/TesterInlineInstance#constructor - global.set $std/operator-overloading/aii1 - global.get $std/operator-overloading/aii1 - local.set $22 - i32.const 0 - local.get $22 - i32.load - i32.const 1 - i32.add - local.get $22 - i32.load offset=4 - i32.const 1 - i32.add - call $std/operator-overloading/TesterInlineInstance#constructor - local.tee $22 - local.tee $21 - global.get $std/operator-overloading/aii1 - local.tee $23 - i32.ne - if - local.get $21 - call $~lib/rt/stub/__retain - local.set $21 - local.get $23 - call $~lib/rt/stub/__release - end - local.get $21 - global.set $std/operator-overloading/aii1 - i32.const 0 - i32.const 2 - i32.const 3 - call $std/operator-overloading/TesterInlineInstance#constructor - global.set $std/operator-overloading/aii2 - global.get $std/operator-overloading/aii1 - local.set $21 - global.get $std/operator-overloading/aii2 - call $~lib/rt/stub/__retain - local.set $23 - i32.const 0 - local.get $21 - i32.load - local.get $23 - i32.load - i32.add - local.get $21 - i32.load offset=4 - local.get $23 - i32.load offset=4 - i32.add - call $std/operator-overloading/TesterInlineInstance#constructor - local.set $24 - local.get $23 - call $~lib/rt/stub/__release - local.get $24 - local.tee $21 - call $~lib/rt/stub/__retain - global.set $std/operator-overloading/aii - global.get $std/operator-overloading/aii - i32.load - i32.const 4 - i32.eq - if (result i32) - global.get $std/operator-overloading/aii - i32.load offset=4 - i32.const 6 - i32.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 332 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $9 - call $~lib/rt/stub/__release - local.get $10 - call $~lib/rt/stub/__release - local.get $11 - call $~lib/rt/stub/__release - local.get $12 - call $~lib/rt/stub/__release - local.get $13 - call $~lib/rt/stub/__release - local.get $14 - call $~lib/rt/stub/__release - local.get $15 - call $~lib/rt/stub/__release - local.get $16 - call $~lib/rt/stub/__release - local.get $17 - call $~lib/rt/stub/__release - local.get $18 - call $~lib/rt/stub/__release - local.get $19 - call $~lib/rt/stub/__release - local.get $20 - call $~lib/rt/stub/__release - local.get $21 - call $~lib/rt/stub/__release - local.get $22 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:std/operator-overloading - ) -) diff --git a/tests/compiler/std/pointer.debug.wat b/tests/compiler/std/pointer.debug.wat new file mode 100644 index 0000000000..9381398907 --- /dev/null +++ b/tests/compiler/std/pointer.debug.wat @@ -0,0 +1,784 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $std/pointer/one (mut i32) (i32.const 0)) + (global $std/pointer/two (mut i32) (i32.const 0)) + (global $std/pointer/add (mut i32) (i32.const 0)) + (global $std/pointer/sub (mut i32) (i32.const 0)) + (global $std/pointer/nextOne (mut i32) (i32.const 0)) + (global $std/pointer/buf (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32828)) + (global $~lib/memory/__heap_base i32 (i32.const 32828)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $std/pointer/Entry#set:key (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store + ) + (func $std/pointer/Entry#set:val (param $this i32) (param $val i32) + local.get $this + local.get $val + i32.store offset=4 + ) + (func $std/pointer/Entry#get:key (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $std/pointer/Entry#get:val (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $start:std/pointer + (local $this i32) + (local $offset i32) + (local $this|2 i32) + (local $offset|3 i32) + (local $this|4 i32) + (local $this|5 i32) + (local $this|6 i32) + (local $this|7 i32) + (local $this|8 i32) + (local $this|9 i32) + (local $this|10 i32) + (local $other i32) + (local $this|12 i32) + (local $this|13 i32) + (local $other|14 i32) + (local $this|15 i32) + (local $this|16 i32) + (local $this|17 i32) + (local $this|18 i32) + (local $this|19 i32) + (local $this|20 i32) + (local $this|21 i32) + (local $this|22 i32) + (local $this|23 i32) + (local $this|24 i32) + (local $this|25 i32) + (local $this|26 i32) + (local $value i32) + (local $this|28 i32) + (local $this|29 i32) + (local $this|30 i32) + (local $this|31 i32) + (local $this|32 i32) + (local $offset|33 i32) + (local $this|34 i32) + (local $index i32) + (local $value|36 f32) + (local $this|37 i32) + (local $index|38 i32) + (local $value|39 f32) + (local $this|40 i32) + (local $index|41 i32) + (local $this|42 i32) + (local $index|43 i32) + (local $this|44 i32) + (local $index|45 i32) + (local $this|46 i32) + (local $index|47 i32) + (local $this|48 i32) + (local $index|49 i32) + (local $value|50 f32) + (local $this|51 i32) + (local $index|52 i32) + (local $this|53 i32) + (local $index|54 i32) + (local $this|55 i32) + (local $value|56 f32) + (local $this|57 i32) + block $std/pointer/Pointer#constructor|inlined.0 (result i32) + i32.const 0 + local.set $this + i32.const 8 + local.set $offset + local.get $offset + br $std/pointer/Pointer#constructor|inlined.0 + end + global.set $std/pointer/one + block $std/pointer/Pointer#constructor|inlined.1 (result i32) + i32.const 0 + local.set $this|2 + i32.const 24 + local.set $offset|3 + local.get $offset|3 + br $std/pointer/Pointer#constructor|inlined.1 + end + global.set $std/pointer/two + block $std/pointer/Pointer#get:offset|inlined.0 (result i32) + global.get $std/pointer/one + local.set $this|4 + local.get $this|4 + br $std/pointer/Pointer#get:offset|inlined.0 + end + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:offset|inlined.1 (result i32) + global.get $std/pointer/two + local.set $this|5 + local.get $this|5 + br $std/pointer/Pointer#get:offset|inlined.1 + end + i32.const 24 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:value|inlined.0 (result i32) + global.get $std/pointer/one + local.set $this|6 + i32.const 1 + drop + local.get $this|6 + br $std/pointer/Pointer#get:value|inlined.0 + end + i32.const 1 + call $std/pointer/Entry#set:key + block $std/pointer/Pointer#get:value|inlined.1 (result i32) + global.get $std/pointer/one + local.set $this|7 + i32.const 1 + drop + local.get $this|7 + br $std/pointer/Pointer#get:value|inlined.1 + end + i32.const 2 + call $std/pointer/Entry#set:val + block $std/pointer/Pointer#get:value|inlined.2 (result i32) + global.get $std/pointer/one + local.set $this|8 + i32.const 1 + drop + local.get $this|8 + br $std/pointer/Pointer#get:value|inlined.2 + end + call $std/pointer/Entry#get:key + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:value|inlined.3 (result i32) + global.get $std/pointer/one + local.set $this|9 + i32.const 1 + drop + local.get $this|9 + br $std/pointer/Pointer#get:value|inlined.3 + end + call $std/pointer/Entry#get:val + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#add|inlined.0 (result i32) + global.get $std/pointer/one + local.set $this|10 + global.get $std/pointer/two + local.set $other + local.get $this|10 + local.get $other + i32.add + br $std/pointer/Pointer#add|inlined.0 + end + global.set $std/pointer/add + block $std/pointer/Pointer#get:offset|inlined.2 (result i32) + global.get $std/pointer/add + local.set $this|12 + local.get $this|12 + br $std/pointer/Pointer#get:offset|inlined.2 + end + i32.const 32 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#sub|inlined.0 (result i32) + global.get $std/pointer/two + local.set $this|13 + global.get $std/pointer/one + local.set $other|14 + local.get $this|13 + local.get $other|14 + i32.sub + br $std/pointer/Pointer#sub|inlined.0 + end + global.set $std/pointer/sub + block $std/pointer/Pointer#get:offset|inlined.3 (result i32) + global.get $std/pointer/sub + local.set $this|15 + local.get $this|15 + br $std/pointer/Pointer#get:offset|inlined.3 + end + i32.const 16 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:offset|inlined.4 (result i32) + global.get $std/pointer/one + local.set $this|16 + local.get $this|16 + br $std/pointer/Pointer#get:offset|inlined.4 + end + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#inc|inlined.0 (result i32) + global.get $std/pointer/one + local.set $this|17 + local.get $this|17 + i32.const 8 + i32.add + br $std/pointer/Pointer#inc|inlined.0 + end + global.set $std/pointer/one + global.get $std/pointer/one + global.set $std/pointer/nextOne + global.get $std/pointer/nextOne + global.get $std/pointer/one + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:offset|inlined.5 (result i32) + global.get $std/pointer/one + local.set $this|18 + local.get $this|18 + br $std/pointer/Pointer#get:offset|inlined.5 + end + i32.const 16 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:offset|inlined.6 (result i32) + global.get $std/pointer/two + local.set $this|19 + local.get $this|19 + br $std/pointer/Pointer#get:offset|inlined.6 + end + i32.const 24 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#dec|inlined.0 (result i32) + global.get $std/pointer/two + local.set $this|20 + local.get $this|20 + i32.const 8 + i32.sub + br $std/pointer/Pointer#dec|inlined.0 + end + global.set $std/pointer/two + block $std/pointer/Pointer#dec|inlined.1 (result i32) + global.get $std/pointer/two + local.set $this|21 + local.get $this|21 + i32.const 8 + i32.sub + br $std/pointer/Pointer#dec|inlined.1 + end + global.set $std/pointer/two + block $std/pointer/Pointer#get:offset|inlined.7 (result i32) + global.get $std/pointer/two + local.set $this|22 + local.get $this|22 + br $std/pointer/Pointer#get:offset|inlined.7 + end + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:value|inlined.4 (result i32) + global.get $std/pointer/two + local.set $this|23 + i32.const 1 + drop + local.get $this|23 + br $std/pointer/Pointer#get:value|inlined.4 + end + call $std/pointer/Entry#get:key + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:value|inlined.5 (result i32) + global.get $std/pointer/two + local.set $this|24 + i32.const 1 + drop + local.get $this|24 + br $std/pointer/Pointer#get:value|inlined.5 + end + call $std/pointer/Entry#get:val + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + local.set $this|26 + block $std/pointer/Pointer#get:value|inlined.6 (result i32) + global.get $std/pointer/two + local.set $this|25 + i32.const 1 + drop + local.get $this|25 + br $std/pointer/Pointer#get:value|inlined.6 + end + local.set $value + i32.const 1 + drop + i32.const 0 + drop + local.get $value + i32.const 0 + i32.eq + if + local.get $this|26 + i32.const 0 + i32.const 8 + memory.fill + else + local.get $this|26 + local.get $value + i32.const 8 + memory.copy + end + block $std/pointer/Pointer#get:offset|inlined.8 (result i32) + global.get $std/pointer/one + local.set $this|28 + local.get $this|28 + br $std/pointer/Pointer#get:offset|inlined.8 + end + block $std/pointer/Pointer#get:offset|inlined.9 (result i32) + global.get $std/pointer/two + local.set $this|29 + local.get $this|29 + br $std/pointer/Pointer#get:offset|inlined.9 + end + i32.ne + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:value|inlined.7 (result i32) + global.get $std/pointer/one + local.set $this|30 + i32.const 1 + drop + local.get $this|30 + br $std/pointer/Pointer#get:value|inlined.7 + end + call $std/pointer/Entry#get:key + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get:value|inlined.8 (result i32) + global.get $std/pointer/one + local.set $this|31 + i32.const 1 + drop + local.get $this|31 + br $std/pointer/Pointer#get:value|inlined.8 + end + call $std/pointer/Entry#get:val + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#constructor|inlined.0 (result i32) + i32.const 0 + local.set $this|32 + i32.const 0 + local.set $offset|33 + local.get $offset|33 + br $std/pointer/Pointer#constructor|inlined.0 + end + global.set $std/pointer/buf + global.get $std/pointer/buf + local.set $this|34 + i32.const 0 + local.set $index + f32.const 1.100000023841858 + local.set $value|36 + local.get $this|34 + local.get $index + i32.const 4 + i32.mul + i32.add + local.get $value|36 + f32.store + global.get $std/pointer/buf + local.set $this|37 + i32.const 1 + local.set $index|38 + f32.const 1.2000000476837158 + local.set $value|39 + local.get $this|37 + local.get $index|38 + i32.const 4 + i32.mul + i32.add + local.get $value|39 + f32.store + block $std/pointer/Pointer#get|inlined.0 (result f32) + global.get $std/pointer/buf + local.set $this|40 + i32.const 0 + local.set $index|41 + local.get $this|40 + local.get $index|41 + i32.const 4 + i32.mul + i32.add + f32.load + br $std/pointer/Pointer#get|inlined.0 + end + f32.const 1.100000023841858 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get|inlined.1 (result f32) + global.get $std/pointer/buf + local.set $this|42 + i32.const 1 + local.set $index|43 + local.get $this|42 + local.get $index|43 + i32.const 4 + i32.mul + i32.add + f32.load + br $std/pointer/Pointer#get|inlined.1 + end + f32.const 1.2000000476837158 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get|inlined.2 (result f32) + global.get $std/pointer/buf + local.set $this|44 + i32.const 0 + local.set $index|45 + local.get $this|44 + local.get $index|45 + i32.const 4 + i32.mul + i32.add + f32.load + br $std/pointer/Pointer#get|inlined.2 + end + f32.const 1.100000023841858 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get|inlined.3 (result f32) + global.get $std/pointer/buf + local.set $this|46 + i32.const 1 + local.set $index|47 + local.get $this|46 + local.get $index|47 + i32.const 4 + i32.mul + i32.add + f32.load + br $std/pointer/Pointer#get|inlined.3 + end + f32.const 1.2000000476837158 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.load + f32.const 1.100000023841858 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + f32.load + f32.const 1.2000000476837158 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/buf + local.set $this|48 + i32.const 2 + local.set $index|49 + f32.const 1.2999999523162842 + local.set $value|50 + local.get $this|48 + local.get $index|49 + i32.const 4 + i32.mul + i32.add + local.get $value|50 + f32.store + block $std/pointer/Pointer#get|inlined.4 (result f32) + global.get $std/pointer/buf + local.set $this|51 + i32.const 2 + local.set $index|52 + local.get $this|51 + local.get $index|52 + i32.const 4 + i32.mul + i32.add + f32.load + br $std/pointer/Pointer#get|inlined.4 + end + f32.const 1.2999999523162842 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $std/pointer/Pointer#get|inlined.5 (result f32) + global.get $std/pointer/buf + local.set $this|53 + i32.const 2 + local.set $index|54 + local.get $this|53 + local.get $index|54 + i32.const 4 + i32.mul + i32.add + f32.load + br $std/pointer/Pointer#get|inlined.5 + end + f32.const 1.2999999523162842 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + f32.load + f32.const 1.2999999523162842 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/buf + local.set $this|55 + f32.const 1.399999976158142 + local.set $value|56 + i32.const 0 + drop + local.get $this|55 + local.get $value|56 + f32.store + block $std/pointer/Pointer#get:value|inlined.0 (result f32) + global.get $std/pointer/buf + local.set $this|57 + i32.const 0 + drop + local.get $this|57 + f32.load + br $std/pointer/Pointer#get:value|inlined.0 + end + f32.const 1.399999976158142 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.load + f32.const 1.399999976158142 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:std/pointer + ) +) diff --git a/tests/compiler/std/pointer.json b/tests/compiler/std/pointer.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/std/pointer.json +++ b/tests/compiler/std/pointer.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat deleted file mode 100644 index c19a897f7d..0000000000 --- a/tests/compiler/std/pointer.optimized.wat +++ /dev/null @@ -1,571 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s") - (global $std/pointer/one (mut i32) (i32.const 0)) - (global $std/pointer/two (mut i32) (i32.const 0)) - (global $std/pointer/add (mut i32) (i32.const 0)) - (global $std/pointer/sub (mut i32) (i32.const 0)) - (global $std/pointer/nextOne (mut i32) (i32.const 0)) - (global $std/pointer/buf (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - i32.const 8 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $start:std/pointer - (local $0 i32) - (local $1 i32) - i32.const 8 - global.set $std/pointer/one - i32.const 24 - global.set $std/pointer/two - i32.const 8 - i32.const 1 - i32.store - i32.const 12 - i32.const 2 - i32.store - i32.const 8 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 83 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - global.get $std/pointer/two - i32.add - global.set $std/pointer/add - global.get $std/pointer/add - i32.const 32 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - global.get $std/pointer/one - i32.sub - global.set $std/pointer/sub - global.get $std/pointer/sub - i32.const 16 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 90 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - i32.const 8 - i32.add - global.set $std/pointer/one - global.get $std/pointer/one - global.set $std/pointer/nextOne - global.get $std/pointer/nextOne - global.get $std/pointer/one - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 94 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - i32.const 16 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - i32.const 24 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 97 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - i32.const 8 - i32.sub - global.set $std/pointer/two - global.get $std/pointer/two - i32.const 8 - i32.sub - global.set $std/pointer/two - global.get $std/pointer/two - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - local.set $0 - global.get $std/pointer/two - local.tee $1 - if - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - else - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 4 - i32.add - i32.const 0 - i32.store8 offset=3 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $0 - i32.const 0 - i32.store8 offset=6 - local.get $0 - i32.const 0 - i32.store8 offset=5 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $0 - i32.const 0 - i32.store8 offset=4 - end - global.get $std/pointer/one - global.get $std/pointer/two - i32.eq - if - i32.const 0 - i32.const 1040 - i32.const 105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/pointer/buf - i32.const 0 - f32.const 1.100000023841858 - f32.store - i32.const 4 - f32.const 1.2000000476837158 - f32.store - i32.const 0 - f32.load - f32.const 1.100000023841858 - f32.ne - if - i32.const 0 - i32.const 1040 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - f32.load offset=4 - f32.const 1.2000000476837158 - f32.ne - if - i32.const 0 - i32.const 1040 - i32.const 114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - f32.load - f32.const 1.100000023841858 - f32.ne - if - i32.const 0 - i32.const 1040 - i32.const 116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - f32.load offset=4 - f32.const 1.2000000476837158 - f32.ne - if - i32.const 0 - i32.const 1040 - i32.const 117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - f32.load - f32.const 1.100000023841858 - f32.ne - if - i32.const 0 - i32.const 1040 - i32.const 119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - f32.load - f32.const 1.2000000476837158 - f32.ne - if - i32.const 0 - i32.const 1040 - i32.const 120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - f32.const 1.2999999523162842 - f32.store offset=8 - global.get $std/pointer/buf - f32.load offset=8 - f32.const 1.2999999523162842 - f32.ne - if - i32.const 0 - i32.const 1040 - i32.const 123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - f32.load offset=8 - f32.const 1.2999999523162842 - f32.ne - if - i32.const 0 - i32.const 1040 - i32.const 124 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - f32.load - f32.const 1.2999999523162842 - f32.ne - if - i32.const 0 - i32.const 1040 - i32.const 125 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - f32.const 1.399999976158142 - f32.store - global.get $std/pointer/buf - f32.load - f32.const 1.399999976158142 - f32.ne - if - i32.const 0 - i32.const 1040 - i32.const 128 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - f32.load - f32.const 1.399999976158142 - f32.ne - if - i32.const 0 - i32.const 1040 - i32.const 129 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/pointer - ) -) diff --git a/tests/compiler/std/pointer.release.wat b/tests/compiler/std/pointer.release.wat new file mode 100644 index 0000000000..d014421032 --- /dev/null +++ b/tests/compiler/std/pointer.release.wat @@ -0,0 +1,372 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $std/pointer/one (mut i32) (i32.const 0)) + (global $std/pointer/two (mut i32) (i32.const 0)) + (global $std/pointer/add (mut i32) (i32.const 0)) + (global $std/pointer/sub (mut i32) (i32.const 0)) + (global $std/pointer/nextOne (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s") + (export "memory" (memory $0)) + (start $~start) + (func $start:std/pointer + (local $0 i32) + (local $1 i32) + i32.const 8 + global.set $std/pointer/one + i32.const 24 + global.set $std/pointer/two + i32.const 8 + i32.const 1 + i32.store + i32.const 12 + i32.const 2 + i32.store + i32.const 8 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + global.get $std/pointer/two + i32.add + global.set $std/pointer/add + global.get $std/pointer/add + i32.const 32 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + global.get $std/pointer/one + i32.sub + global.set $std/pointer/sub + global.get $std/pointer/sub + i32.const 16 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + i32.const 8 + i32.add + global.set $std/pointer/one + global.get $std/pointer/one + global.set $std/pointer/nextOne + global.get $std/pointer/nextOne + global.get $std/pointer/one + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + i32.const 16 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + i32.const 24 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + i32.const 8 + i32.sub + global.set $std/pointer/two + global.get $std/pointer/two + i32.const 8 + i32.sub + global.set $std/pointer/two + global.get $std/pointer/two + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/two + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + local.set $0 + global.get $std/pointer/two + local.tee $1 + if + local.get $0 + local.get $1 + i64.load align=1 + i64.store align=1 + else + local.get $0 + i64.const 0 + i64.store align=1 + end + global.get $std/pointer/one + global.get $std/pointer/two + i32.eq + if + i32.const 0 + i32.const 1056 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/pointer/one + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.const 1.100000023841858 + f32.store + i32.const 4 + f32.const 1.2000000476837158 + f32.store + i32.const 0 + f32.load + f32.const 1.100000023841858 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + f32.load + f32.const 1.2000000476837158 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.load + f32.const 1.100000023841858 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + f32.load + f32.const 1.2000000476837158 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.load + f32.const 1.100000023841858 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + f32.load + f32.const 1.2000000476837158 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + f32.const 1.2999999523162842 + f32.store + i32.const 8 + f32.load + f32.const 1.2999999523162842 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + f32.load + f32.const 1.2999999523162842 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + f32.load + f32.const 1.2999999523162842 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.const 1.399999976158142 + f32.store + i32.const 0 + f32.load + f32.const 1.399999976158142 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + f32.load + f32.const 1.399999976158142 + f32.ne + if + i32.const 0 + i32.const 1056 + i32.const 129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start + call $start:std/pointer + ) +) diff --git a/tests/compiler/std/pointer.ts b/tests/compiler/std/pointer.ts index 360e7fd9de..dc3c1a2435 100644 --- a/tests/compiler/std/pointer.ts +++ b/tests/compiler/std/pointer.ts @@ -21,7 +21,7 @@ @inline set value(value: T) { if (isReference()) { if (isManaged()) ERROR("Unsafe unmanaged set of a managed object"); - if (value === null) { + if (value == null) { memory.fill(changetype(this), 0, offsetof()); } else { memory.copy(changetype(this), changetype(value), offsetof()); @@ -91,7 +91,7 @@ assert(sub.offset == 16); assert(one.offset == 8); var nextOne = ++one; -assert(nextOne === one); +assert(nextOne == one); assert(one.offset == 16); assert(two.offset == 24); diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat deleted file mode 100644 index 7a407a2b77..0000000000 --- a/tests/compiler/std/pointer.untouched.wat +++ /dev/null @@ -1,2118 +0,0 @@ -(module - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s\00") - (table $0 1 funcref) - (global $std/pointer/one (mut i32) (i32.const 0)) - (global $std/pointer/two (mut i32) (i32.const 0)) - (global $std/pointer/add (mut i32) (i32.const 0)) - (global $std/pointer/sub (mut i32) (i32.const 0)) - (global $std/pointer/nextOne (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $std/pointer/buf (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $start:std/pointer - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - i32.const 0 - local.set $1 - i32.const 8 - local.set $0 - local.get $0 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - global.set $std/pointer/one - i32.const 0 - local.set $0 - i32.const 24 - local.set $2 - local.get $2 - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - global.set $std/pointer/two - global.get $std/pointer/one - local.set $1 - local.get $1 - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - local.set $2 - local.get $2 - i32.const 24 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $std/pointer/Pointer#get:value|inlined.0 (result i32) - global.get $std/pointer/one - local.set $0 - i32.const 1 - drop - local.get $0 - br $std/pointer/Pointer#get:value|inlined.0 - end - i32.const 1 - i32.store - block $std/pointer/Pointer#get:value|inlined.1 (result i32) - global.get $std/pointer/one - local.set $1 - i32.const 1 - drop - local.get $1 - br $std/pointer/Pointer#get:value|inlined.1 - end - i32.const 2 - i32.store offset=4 - block $std/pointer/Pointer#get:value|inlined.2 (result i32) - global.get $std/pointer/one - local.set $2 - i32.const 1 - drop - local.get $2 - br $std/pointer/Pointer#get:value|inlined.2 - end - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 83 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $std/pointer/Pointer#get:value|inlined.3 (result i32) - global.get $std/pointer/one - local.set $0 - i32.const 1 - drop - local.get $0 - br $std/pointer/Pointer#get:value|inlined.3 - end - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - local.set $2 - global.get $std/pointer/two - local.set $1 - local.get $2 - local.get $1 - i32.add - global.set $std/pointer/add - global.get $std/pointer/add - local.set $0 - local.get $0 - i32.const 32 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - local.set $2 - global.get $std/pointer/one - local.set $1 - local.get $2 - local.get $1 - i32.sub - global.set $std/pointer/sub - global.get $std/pointer/sub - local.set $0 - local.get $0 - i32.const 16 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 90 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - local.set $1 - local.get $1 - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - local.set $2 - local.get $2 - i32.const 8 - i32.add - global.set $std/pointer/one - global.get $std/pointer/one - global.set $std/pointer/nextOne - global.get $std/pointer/nextOne - global.get $std/pointer/one - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 94 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - local.set $0 - local.get $0 - i32.const 16 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - local.set $1 - local.get $1 - i32.const 24 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 97 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/two - local.set $2 - local.get $2 - i32.const 8 - i32.sub - global.set $std/pointer/two - global.get $std/pointer/two - local.set $0 - local.get $0 - i32.const 8 - i32.sub - global.set $std/pointer/two - global.get $std/pointer/two - local.set $1 - local.get $1 - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $std/pointer/Pointer#get:value|inlined.4 (result i32) - global.get $std/pointer/two - local.set $2 - i32.const 1 - drop - local.get $2 - br $std/pointer/Pointer#get:value|inlined.4 - end - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $std/pointer/Pointer#get:value|inlined.5 (result i32) - global.get $std/pointer/two - local.set $0 - i32.const 1 - drop - local.get $0 - br $std/pointer/Pointer#get:value|inlined.5 - end - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/one - local.set $0 - block $std/pointer/Pointer#get:value|inlined.6 (result i32) - global.get $std/pointer/two - local.set $1 - i32.const 1 - drop - local.get $1 - br $std/pointer/Pointer#get:value|inlined.6 - end - local.set $2 - i32.const 1 - drop - i32.const 0 - drop - local.get $2 - i32.const 0 - i32.eq - if - local.get $0 - i32.const 0 - i32.const 8 - call $~lib/memory/memory.fill - else - local.get $0 - local.get $2 - i32.const 8 - call $~lib/memory/memory.copy - end - global.get $std/pointer/one - local.set $1 - local.get $1 - global.get $std/pointer/two - local.set $2 - local.get $2 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $std/pointer/Pointer#get:value|inlined.7 (result i32) - global.get $std/pointer/one - local.set $0 - i32.const 1 - drop - local.get $0 - br $std/pointer/Pointer#get:value|inlined.7 - end - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $std/pointer/Pointer#get:value|inlined.8 (result i32) - global.get $std/pointer/one - local.set $1 - i32.const 1 - drop - local.get $1 - br $std/pointer/Pointer#get:value|inlined.8 - end - i32.load offset=4 - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - i32.const 0 - local.set $2 - local.get $2 - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - global.set $std/pointer/buf - global.get $std/pointer/buf - local.set $2 - i32.const 0 - local.set $1 - f32.const 1.100000023841858 - local.set $3 - local.get $2 - local.get $1 - i32.const 4 - i32.mul - i32.add - local.get $3 - f32.store - global.get $std/pointer/buf - local.set $1 - i32.const 1 - local.set $0 - f32.const 1.2000000476837158 - local.set $3 - local.get $1 - local.get $0 - i32.const 4 - i32.mul - i32.add - local.get $3 - f32.store - global.get $std/pointer/buf - local.set $0 - i32.const 0 - local.set $2 - local.get $0 - local.get $2 - i32.const 4 - i32.mul - i32.add - f32.load - f32.const 1.100000023841858 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.set $2 - i32.const 1 - local.set $1 - local.get $2 - local.get $1 - i32.const 4 - i32.mul - i32.add - f32.load - f32.const 1.2000000476837158 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.set $1 - i32.const 0 - local.set $0 - local.get $1 - local.get $0 - i32.const 4 - i32.mul - i32.add - f32.load - f32.const 1.100000023841858 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.set $0 - i32.const 1 - local.set $2 - local.get $0 - local.get $2 - i32.const 4 - i32.mul - i32.add - f32.load - f32.const 1.2000000476837158 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - f32.load - f32.const 1.100000023841858 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - f32.load - f32.const 1.2000000476837158 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.set $2 - i32.const 2 - local.set $1 - f32.const 1.2999999523162842 - local.set $3 - local.get $2 - local.get $1 - i32.const 4 - i32.mul - i32.add - local.get $3 - f32.store - global.get $std/pointer/buf - local.set $1 - i32.const 2 - local.set $0 - local.get $1 - local.get $0 - i32.const 4 - i32.mul - i32.add - f32.load - f32.const 1.2999999523162842 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.set $0 - i32.const 2 - local.set $2 - local.get $0 - local.get $2 - i32.const 4 - i32.mul - i32.add - f32.load - f32.const 1.2999999523162842 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 124 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - f32.load - f32.const 1.2999999523162842 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 125 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/pointer/buf - local.set $1 - f32.const 1.399999976158142 - local.set $3 - i32.const 0 - drop - local.get $1 - local.get $3 - f32.store - block $std/pointer/Pointer#get:value|inlined.0 (result f32) - global.get $std/pointer/buf - local.set $2 - i32.const 0 - drop - local.get $2 - f32.load - br $std/pointer/Pointer#get:value|inlined.0 - end - f32.const 1.399999976158142 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 128 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - f32.load - f32.const 1.399999976158142 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 129 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/pointer - ) -) diff --git a/tests/compiler/std/polyfills.json b/tests/compiler/std/polyfills.json deleted file mode 100644 index b1da366ff4..0000000000 --- a/tests/compiler/std/polyfills.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} \ No newline at end of file diff --git a/tests/compiler/std/polyfills.optimized.wat b/tests/compiler/std/polyfills.optimized.wat deleted file mode 100644 index 528ed63449..0000000000 --- a/tests/compiler/std/polyfills.optimized.wat +++ /dev/null @@ -1,5 +0,0 @@ -(module - (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s") - (export "memory" (memory $0)) -) diff --git a/tests/compiler/std/polyfills.ts b/tests/compiler/std/polyfills.ts deleted file mode 100644 index c19a05bd0d..0000000000 --- a/tests/compiler/std/polyfills.ts +++ /dev/null @@ -1,33 +0,0 @@ -// bswap / bswap16 tests - -// check bswap for i8/u8 -assert(bswap(0xaa) == 0xaa); -assert(bswap(0xaa) == 0xaa); - -// check bswap for i16/u16 -assert(bswap(0xaabb) == 0xbbaa); -assert(bswap(0xaabb) == 0xbbaa); - -// check bswap for i32/u32 -assert(bswap(0xaabbccdd) == 0xddccbbaa); -assert(bswap(0xaabbccdd) == 0xddccbbaa); - -// check bswap for i64/u64 -assert(bswap(0x00112233aabbccdd) == 0xddccbbaa33221100); -assert(bswap(0x00112233aabbccdd) == 0xddccbbaa33221100); - -// check bswap for i32/u32 -assert(bswap(0xaabbccdd) == 0xddccbbaa); -assert(bswap(0xaabbccdd) == 0xddccbbaa); - -// check bswap16 for i8/u8 -assert(bswap16(0xaa) == 0xaa); -assert(bswap16(0xaa) == 0xaa); - -// check bswap16 for i16/u16 -assert(bswap16(0xaabb) == 0xbbaa); -assert(bswap16(0xaabb) == 0xbbaa); - -// check bswap16 for i32/u32 -assert(bswap16(0xff88aabb) == 0xff88bbaa); -assert(bswap16(0xff88aabb) == 0xff88bbaa); diff --git a/tests/compiler/std/polyfills.untouched.wat b/tests/compiler/std/polyfills.untouched.wat deleted file mode 100644 index 966b7ef0aa..0000000000 --- a/tests/compiler/std/polyfills.untouched.wat +++ /dev/null @@ -1,713 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s\00") - (table $0 1 funcref) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 1 - i32.const 2 - i32.eq - drop - i32.const 1 - i32.const 4 - i32.eq - drop - i32.const 1 - i32.const 8 - i32.eq - drop - local.get $0 - return - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 1 - i32.const 2 - i32.eq - drop - i32.const 1 - i32.const 4 - i32.eq - drop - i32.const 1 - i32.const 8 - i32.eq - drop - local.get $0 - return - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $0 - i32.const 8 - i32.shl - local.get $0 - i32.const 65535 - i32.and - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.or - return - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $0 - i32.const 8 - i32.shl - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 8 - i32.shr_s - i32.const 255 - i32.and - i32.or - return - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $0 - i32.const -16711936 - i32.and - i32.const 8 - i32.rotl - local.get $0 - i32.const 16711935 - i32.and - i32.const 8 - i32.rotr - i32.or - return - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $0 - i32.const -16711936 - i32.and - i32.const 8 - i32.rotl - local.get $0 - i32.const 16711935 - i32.and - i32.const 8 - i32.rotr - i32.or - return - ) - (func $~lib/polyfills/bswap (param $0 i64) (result i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - i32.const 1 - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $0 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.set $1 - local.get $0 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - local.set $2 - local.get $1 - local.get $2 - i64.or - local.set $3 - local.get $3 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.set $1 - local.get $3 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - local.set $2 - local.get $1 - local.get $2 - i64.or - i64.const 32 - i64.rotr - return - ) - (func $~lib/polyfills/bswap (param $0 i64) (result i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - i32.const 1 - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $0 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.set $1 - local.get $0 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - local.set $2 - local.get $1 - local.get $2 - i64.or - local.set $3 - local.get $3 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.set $1 - local.get $3 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - local.set $2 - local.get $1 - local.get $2 - i64.or - i64.const 32 - i64.rotr - return - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $0 - i32.const -16711936 - i32.and - i32.const 8 - i32.rotl - local.get $0 - i32.const 16711935 - i32.and - i32.const 8 - i32.rotr - i32.or - return - ) - (func $~lib/polyfills/bswap (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $0 - i32.const -16711936 - i32.and - i32.const 8 - i32.rotl - local.get $0 - i32.const 16711935 - i32.and - i32.const 8 - i32.rotr - i32.or - return - ) - (func $~lib/polyfills/bswap16 (param $0 i32) (result i32) - i32.const 1 - if (result i32) - i32.const 1 - i32.const 4 - i32.le_u - else - i32.const 0 - end - drop - i32.const 1 - i32.const 2 - i32.eq - drop - i32.const 1 - i32.const 4 - i32.eq - drop - local.get $0 - return - ) - (func $~lib/polyfills/bswap16 (param $0 i32) (result i32) - i32.const 1 - if (result i32) - i32.const 1 - i32.const 4 - i32.le_u - else - i32.const 0 - end - drop - i32.const 1 - i32.const 2 - i32.eq - drop - i32.const 1 - i32.const 4 - i32.eq - drop - local.get $0 - return - ) - (func $~lib/polyfills/bswap16 (param $0 i32) (result i32) - i32.const 1 - if (result i32) - i32.const 2 - i32.const 4 - i32.le_u - else - i32.const 0 - end - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $0 - i32.const 8 - i32.shl - local.get $0 - i32.const 65535 - i32.and - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.or - return - ) - (func $~lib/polyfills/bswap16 (param $0 i32) (result i32) - i32.const 1 - if (result i32) - i32.const 2 - i32.const 4 - i32.le_u - else - i32.const 0 - end - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $0 - i32.const 8 - i32.shl - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 8 - i32.shr_s - i32.const 255 - i32.and - i32.or - return - ) - (func $~lib/polyfills/bswap16 (param $0 i32) (result i32) - i32.const 1 - if (result i32) - i32.const 4 - i32.const 4 - i32.le_u - else - i32.const 0 - end - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $0 - i32.const 8 - i32.shl - i32.const 65280 - i32.and - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.or - local.get $0 - i32.const -65536 - i32.and - i32.or - return - ) - (func $~lib/polyfills/bswap16 (param $0 i32) (result i32) - i32.const 1 - if (result i32) - i32.const 4 - i32.const 4 - i32.le_u - else - i32.const 0 - end - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $0 - i32.const 8 - i32.shl - i32.const 65280 - i32.and - local.get $0 - i32.const 8 - i32.shr_s - i32.const 255 - i32.and - i32.or - local.get $0 - i32.const -65536 - i32.and - i32.or - return - ) - (func $start:std/polyfills - i32.const 170 - call $~lib/polyfills/bswap - i32.const 255 - i32.and - i32.const 170 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 170 - call $~lib/polyfills/bswap - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 170 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 43707 - call $~lib/polyfills/bswap - i32.const 65535 - i32.and - i32.const 48042 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 43707 - call $~lib/polyfills/bswap - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 48042 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1430532899 - call $~lib/polyfills/bswap - i32.const -573785174 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1430532899 - call $~lib/polyfills/bswap - i32.const -573785174 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4822679907192029 - call $~lib/polyfills/bswap - i64.const -2464388556401798912 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4822679907192029 - call $~lib/polyfills/bswap - i64.const -2464388556401798912 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1430532899 - call $~lib/polyfills/bswap - i32.const -573785174 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1430532899 - call $~lib/polyfills/bswap - i32.const -573785174 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 170 - call $~lib/polyfills/bswap16 - i32.const 255 - i32.and - i32.const 170 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 170 - call $~lib/polyfills/bswap16 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 170 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 43707 - call $~lib/polyfills/bswap16 - i32.const 65535 - i32.and - i32.const 48042 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 43707 - call $~lib/polyfills/bswap16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 48042 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -7820613 - call $~lib/polyfills/bswap16 - i32.const -7816278 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -7820613 - call $~lib/polyfills/bswap16 - i32.const -7816278 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/polyfills - ) -) diff --git a/tests/compiler/std/set.debug.wat b/tests/compiler/std/set.debug.wat new file mode 100644 index 0000000000..3f49782b9d --- /dev/null +++ b/tests/compiler/std/set.debug.wat @@ -0,0 +1,22836 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i64) (result i32))) + (type $8 (func (param i32 f32) (result i32))) + (type $9 (func (param i32 f64) (result i32))) + (type $10 (func (param i32 i32 i32 i32))) + (type $11 (func (param i64) (result i32))) + (type $12 (func (param i32) (result i64))) + (type $13 (func (param i32 i64))) + (type $14 (func (param i32 i64 i32) (result i32))) + (type $15 (func (param i32 i32 i64))) + (type $16 (func (param i32 i32) (result i64))) + (type $17 (func (param i32 i32 i64) (result i32))) + (type $18 (func (result i32))) + (type $19 (func (param f32) (result i32))) + (type $20 (func (param i32) (result f32))) + (type $21 (func (param i32 f32))) + (type $22 (func (param f64) (result i32))) + (type $23 (func (param i32) (result f64))) + (type $24 (func (param i32 f64))) + (type $25 (func (param i32 f32 i32) (result i32))) + (type $26 (func (param i32 i32 f32))) + (type $27 (func (param i32 i32) (result f32))) + (type $28 (func (param i32 f64 i32) (result i32))) + (type $29 (func (param i32 i32 f64))) + (type $30 (func (param i32 i32) (result f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 624)) + (global $~lib/memory/__data_end i32 (i32.const 724)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33492)) + (global $~lib/memory/__heap_base i32 (i32.const 33492)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $9 (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $10 (i32.const 524) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $12 (i32.const 624) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00H\08\00\00B\08\00\00H\00\00\00B\00\00\00\88\08\00\00\82\08\00\00\88\00\00\00\82\00\00\00\08\t\00\00\02\t\00\00\08\01\00\00\02\01\00\00\08\n\00\00\02\n\00\00\08\02\00\00\02\02\00\00\08\19\00\00\02\19\00\00\08\1a\00\00\02\1a\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/set/Set#set:buckets (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.0 (result i32) + local.get $key + i32.extend8_s + local.set $key|1 + i32.const 1 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.0 + end + return + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:bucketsMask (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:taggedNext (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:key (param $this i32) (result i32) + local.get $this + i32.load8_s + ) + (func $~lib/set/Set#get:entriesOffset (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/set/Set#get:entriesCapacity (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/set/Set#get:entriesCount (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/SetEntry#set:key (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store8 + ) + (func $~lib/set/SetEntry#set:taggedNext (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=4 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/Set#set:buckets (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.1 (result i32) + local.get $key + i32.const 255 + i32.and + local.set $key|1 + i32.const 1 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.1 + end + return + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:bucketsMask (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:taggedNext (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:key (param $this i32) (result i32) + local.get $this + i32.load8_u + ) + (func $~lib/set/Set#get:entriesOffset (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/set/Set#get:entriesCapacity (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/set/Set#get:entriesCount (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/SetEntry#set:key (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store8 + ) + (func $~lib/set/SetEntry#set:taggedNext (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=4 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/Set#set:buckets (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.2 (result i32) + local.get $key + i32.extend16_s + local.set $key|1 + i32.const 2 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.2 + end + return + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:bucketsMask (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:taggedNext (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:key (param $this i32) (result i32) + local.get $this + i32.load16_s + ) + (func $~lib/set/Set#get:entriesOffset (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/set/Set#get:entriesCapacity (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/set/Set#get:entriesCount (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/SetEntry#set:key (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store16 + ) + (func $~lib/set/SetEntry#set:taggedNext (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=4 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/Set#set:buckets (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.3 (result i32) + local.get $key + i32.const 65535 + i32.and + local.set $key|1 + i32.const 2 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.3 + end + return + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:bucketsMask (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:taggedNext (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:key (param $this i32) (result i32) + local.get $this + i32.load16_u + ) + (func $~lib/set/Set#get:entriesOffset (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/set/Set#get:entriesCapacity (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/set/Set#get:entriesCount (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/SetEntry#set:key (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store16 + ) + (func $~lib/set/SetEntry#set:taggedNext (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=4 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/Set#set:buckets (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.4 (result i32) + local.get $key + local.set $key|1 + i32.const 4 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.4 + end + return + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:bucketsMask (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:taggedNext (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:key (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entriesOffset (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/set/Set#get:entriesCapacity (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/set/Set#get:entriesCount (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/SetEntry#set:key (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store + ) + (func $~lib/set/SetEntry#set:taggedNext (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=4 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/Set#set:buckets (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.5 (result i32) + local.get $key + local.set $key|1 + i32.const 4 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.5 + end + return + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:bucketsMask (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:taggedNext (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:key (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:entriesOffset (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/set/Set#get:entriesCapacity (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/set/Set#get:entriesCount (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/SetEntry#set:key (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store + ) + (func $~lib/set/SetEntry#set:taggedNext (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=4 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/Set#set:buckets (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i64) (result i32) + (local $key|1 i64) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + i32.const 8 + i32.const 8 + i32.eq + drop + block $~lib/util/hash/hash64|inlined.0 (result i32) + local.get $key + local.set $key|1 + i32.const 0 + i32.const 374761393 + i32.add + i32.const 8 + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $key|1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash64|inlined.0 + end + return + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:bucketsMask (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:taggedNext (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/SetEntry#get:key (param $this i32) (result i64) + local.get $this + i64.load + ) + (func $~lib/set/Set#get:entriesOffset (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/set/Set#get:entriesCapacity (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/set/Set#get:entriesCount (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/SetEntry#set:key (param $this i32) (param $key i64) + local.get $this + local.get $key + i64.store + ) + (func $~lib/set/SetEntry#set:taggedNext (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/Set#set:buckets (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i64) (result i32) + (local $key|1 i64) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + i32.const 8 + i32.const 8 + i32.eq + drop + block $~lib/util/hash/hash64|inlined.1 (result i32) + local.get $key + local.set $key|1 + i32.const 0 + i32.const 374761393 + i32.add + i32.const 8 + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $key|1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash64|inlined.1 + end + return + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:bucketsMask (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:taggedNext (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/SetEntry#get:key (param $this i32) (result i64) + local.get $this + i64.load + ) + (func $~lib/set/Set#get:entriesOffset (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/set/Set#get:entriesCapacity (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/set/Set#get:entriesCount (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/SetEntry#set:key (param $this i32) (param $key i64) + local.get $this + local.get $key + i64.store + ) + (func $~lib/set/SetEntry#set:taggedNext (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/Set#set:buckets (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key f32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + block $~lib/util/hash/hash32|inlined.6 (result i32) + local.get $key + i32.reinterpret_f32 + local.set $key|1 + i32.const 4 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.6 + end + return + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:bucketsMask (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:taggedNext (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:key (param $this i32) (result f32) + local.get $this + f32.load + ) + (func $~lib/set/Set#get:entriesOffset (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/set/Set#get:entriesCapacity (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/set/Set#get:entriesCount (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/SetEntry#set:key (param $this i32) (param $key f32) + local.get $this + local.get $key + f32.store + ) + (func $~lib/set/SetEntry#set:taggedNext (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=4 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/Set#set:buckets (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key f64) (result i32) + (local $key|1 i64) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + block $~lib/util/hash/hash64|inlined.2 (result i32) + local.get $key + i64.reinterpret_f64 + local.set $key|1 + i32.const 0 + i32.const 374761393 + i32.add + i32.const 8 + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $key|1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash64|inlined.2 + end + return + ) + (func $~lib/set/Set#get:buckets (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/set/Set#get:bucketsMask (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/set/SetEntry#get:taggedNext (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/SetEntry#get:key (param $this i32) (result f64) + local.get $this + f64.load + ) + (func $~lib/set/Set#get:entriesOffset (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/set/Set#get:entriesCapacity (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/set/Set#get:entriesCount (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $~lib/set/Set#get:entries (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/set/SetEntry#set:key (param $this i32) (param $key f64) + local.get $this + local.get $key + f64.store + ) + (func $~lib/set/SetEntry#set:taggedNext (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $start:std/set + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $~lib/rt/itcms/__collect + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 432 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:std/set + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33520 + i32.const 33568 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/set/Set#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.0 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/set/Set#find (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $~lib/set/SetEntry#get:key + i32.extend8_s + local.get $key + i32.extend8_s + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/set/Set#has (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/set/Set#rehash (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.1 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entries + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entriesOffset + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.2 + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:key + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $~lib/set/SetEntry#set:key + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.3 + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.4 + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:buckets + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:entries + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#get:entriesCount + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $this i32) (param $key i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $4 i32) + (local $bucketPtrBase i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $hashCode + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.eq + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + else + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entries + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.tee $4 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.5 + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#get:size (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/set/Set#get:entriesCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 0 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 0 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 0 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + local.get $value + i32.store8 + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entries + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entriesOffset + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $~lib/set/ENTRY_SIZE|inlined.6 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.6 + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $~lib/set/SetEntry#get:key + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 592 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/set/Set#delete (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $~lib/set/Set#rehash + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#clear (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.7 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.7 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $set i32) + (local $k i32) + (local $k|2 i32) + (local $vals i32) + (local $valSet i32) + (local $index i32) + (local $k|6 i32) + (local $k|7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $set + i32.store + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 100 + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i32.const 100 + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i32.const 1 + i32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#values + local.tee $vals + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $valSet + i32.store offset=12 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|6 + loop $for-loop|3 + local.get $k|6 + i32.const 50 + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|6 + i32.const 1 + i32.add + local.set $k|6 + br $for-loop|3 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|7 + loop $for-loop|4 + local.get $k|7 + i32.const 50 + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|7 + i32.const 1 + i32.add + local.set $k|7 + br $for-loop|4 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#clear + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.0 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/set/Set#find (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $~lib/set/SetEntry#get:key + i32.const 255 + i32.and + local.get $key + i32.const 255 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/set/Set#has (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/set/Set#rehash (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.1 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entries + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entriesOffset + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.2 + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:key + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $~lib/set/SetEntry#set:key + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.3 + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.4 + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:buckets + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:entries + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#get:entriesCount + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $this i32) (param $key i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $4 i32) + (local $bucketPtrBase i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $hashCode + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.eq + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + else + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entries + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.tee $4 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.5 + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#get:size (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/set/Set#get:entriesCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 0 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 0 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 0 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + local.get $value + i32.store8 + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entries + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entriesOffset + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $~lib/set/ENTRY_SIZE|inlined.6 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.6 + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $~lib/set/SetEntry#get:key + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 592 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/set/Set#delete (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $~lib/set/Set#rehash + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#clear (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.7 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.7 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $set i32) + (local $k i32) + (local $k|2 i32) + (local $vals i32) + (local $valSet i32) + (local $index i32) + (local $k|6 i32) + (local $k|7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $set + i32.store + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 100 + i32.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i32.const 100 + i32.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i32.const 1 + i32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#values + local.tee $vals + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $valSet + i32.store offset=12 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|6 + loop $for-loop|3 + local.get $k|6 + i32.const 50 + i32.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|6 + i32.const 1 + i32.add + local.set $k|6 + br $for-loop|3 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|7 + loop $for-loop|4 + local.get $k|7 + i32.const 50 + i32.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|7 + i32.const 1 + i32.add + local.set $k|7 + br $for-loop|4 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#clear + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.0 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/set/Set#find (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $~lib/set/SetEntry#get:key + i32.extend16_s + local.get $key + i32.extend16_s + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/set/Set#has (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/set/Set#rehash (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.1 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entries + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entriesOffset + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.2 + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:key + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $~lib/set/SetEntry#set:key + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.3 + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.4 + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:buckets + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:entries + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#get:entriesCount + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $this i32) (param $key i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $4 i32) + (local $bucketPtrBase i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $hashCode + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.eq + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + else + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entries + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.tee $4 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.5 + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#get:size (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/set/Set#get:entriesCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 1 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 1 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 1 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + local.get $value + i32.store16 + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entries + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entriesOffset + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $~lib/set/ENTRY_SIZE|inlined.6 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.6 + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $~lib/set/SetEntry#get:key + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 592 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/set/Set#delete (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $~lib/set/Set#rehash + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#clear (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.7 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.7 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $set i32) + (local $k i32) + (local $k|2 i32) + (local $vals i32) + (local $valSet i32) + (local $index i32) + (local $k|6 i32) + (local $k|7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $set + i32.store + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 100 + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i32.const 100 + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i32.const 1 + i32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#values + local.tee $vals + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $valSet + i32.store offset=12 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|6 + loop $for-loop|3 + local.get $k|6 + i32.const 50 + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|6 + i32.const 1 + i32.add + local.set $k|6 + br $for-loop|3 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|7 + loop $for-loop|4 + local.get $k|7 + i32.const 50 + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|7 + i32.const 1 + i32.add + local.set $k|7 + br $for-loop|4 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#clear + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.0 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/set/Set#find (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $~lib/set/SetEntry#get:key + i32.const 65535 + i32.and + local.get $key + i32.const 65535 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/set/Set#has (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/set/Set#rehash (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.1 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entries + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entriesOffset + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.2 + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:key + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $~lib/set/SetEntry#set:key + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.3 + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.4 + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:buckets + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:entries + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#get:entriesCount + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $this i32) (param $key i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $4 i32) + (local $bucketPtrBase i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $hashCode + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.eq + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + else + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entries + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.tee $4 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.5 + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#get:size (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/set/Set#get:entriesCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 1 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 1 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 1 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + local.get $value + i32.store16 + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entries + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entriesOffset + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $~lib/set/ENTRY_SIZE|inlined.6 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.6 + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $~lib/set/SetEntry#get:key + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 592 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/set/Set#delete (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $~lib/set/Set#rehash + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#clear (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.7 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.7 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $set i32) + (local $k i32) + (local $k|2 i32) + (local $vals i32) + (local $valSet i32) + (local $index i32) + (local $k|6 i32) + (local $k|7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $set + i32.store + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 100 + i32.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i32.const 100 + i32.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i32.const 1 + i32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#values + local.tee $vals + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $valSet + i32.store offset=12 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|6 + loop $for-loop|3 + local.get $k|6 + i32.const 50 + i32.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|6 + i32.const 1 + i32.add + local.set $k|6 + br $for-loop|3 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|7 + loop $for-loop|4 + local.get $k|7 + i32.const 50 + i32.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|7 + i32.const 1 + i32.add + local.set $k|7 + br $for-loop|4 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#clear + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.0 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/set/Set#find (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $~lib/set/SetEntry#get:key + local.get $key + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/set/Set#has (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/set/Set#rehash (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.1 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entries + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entriesOffset + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.2 + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:key + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $~lib/set/SetEntry#set:key + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.3 + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.4 + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:buckets + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:entries + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#get:entriesCount + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $this i32) (param $key i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $4 i32) + (local $bucketPtrBase i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $hashCode + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.eq + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + else + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entries + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.tee $4 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.5 + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#get:size (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/set/Set#get:entriesCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entries + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entriesOffset + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $~lib/set/ENTRY_SIZE|inlined.6 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.6 + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $~lib/set/SetEntry#get:key + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 592 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/set/Set#delete (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $~lib/set/Set#rehash + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#clear (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.7 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.7 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $set i32) + (local $k i32) + (local $k|2 i32) + (local $vals i32) + (local $valSet i32) + (local $index i32) + (local $k|6 i32) + (local $k|7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $set + i32.store + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 100 + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i32.const 100 + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i32.const 1 + i32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#values + local.tee $vals + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $valSet + i32.store offset=12 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|6 + loop $for-loop|3 + local.get $k|6 + i32.const 50 + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|6 + i32.const 1 + i32.add + local.set $k|6 + br $for-loop|3 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|7 + loop $for-loop|4 + local.get $k|7 + i32.const 50 + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|7 + i32.const 1 + i32.add + local.set $k|7 + br $for-loop|4 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#clear + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.0 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/set/Set#find (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $~lib/set/SetEntry#get:key + local.get $key + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/set/Set#has (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/set/Set#rehash (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.1 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entries + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entriesOffset + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.2 + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:key + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $~lib/set/SetEntry#set:key + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.3 + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.4 + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:buckets + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:entries + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#get:entriesCount + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $this i32) (param $key i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $4 i32) + (local $bucketPtrBase i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $hashCode + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.eq + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + else + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entries + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.tee $4 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.5 + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#get:size (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/set/Set#get:entriesCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entries + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entriesOffset + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $~lib/set/ENTRY_SIZE|inlined.6 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.6 + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $~lib/set/SetEntry#get:key + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 592 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/set/Set#delete (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $~lib/set/Set#rehash + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#clear (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.7 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.7 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $set i32) + (local $k i32) + (local $k|2 i32) + (local $vals i32) + (local $valSet i32) + (local $index i32) + (local $k|6 i32) + (local $k|7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $set + i32.store + i32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i32.const 100 + i32.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|0 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i32.const 100 + i32.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i32.const 1 + i32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#values + local.tee $vals + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $valSet + i32.store offset=12 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|6 + loop $for-loop|3 + local.get $k|6 + i32.const 50 + i32.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|6 + i32.const 1 + i32.add + local.set $k|6 + br $for-loop|3 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $k|7 + loop $for-loop|4 + local.get $k|7 + i32.const 50 + i32.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|7 + i32.const 1 + i32.add + local.set $k|7 + br $for-loop|4 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#clear + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.0 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/set/Set#find (param $this i32) (param $key i64) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $~lib/set/SetEntry#get:key + local.get $key + i64.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/set/Set#has (param $this i32) (param $key i64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/set/Set#rehash (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i64) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.1 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entries + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entriesOffset + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.2 + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:key + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $~lib/set/SetEntry#set:key + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.3 + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.4 + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:buckets + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:entries + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#get:entriesCount + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $this i32) (param $key i64) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $4 i32) + (local $bucketPtrBase i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $hashCode + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.eq + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + else + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entries + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.tee $4 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.5 + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#get:size (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/set/Set#get:entriesCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 3 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 3 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + local.get $value + i64.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 3 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entries + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entriesOffset + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $~lib/set/ENTRY_SIZE|inlined.6 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.6 + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $~lib/set/SetEntry#get:key + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i64) + (local $value i64) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 592 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/set/Set#delete (param $this i32) (param $key i64) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $~lib/set/Set#rehash + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#clear (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.7 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.7 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $set i32) + (local $k i64) + (local $k|2 i64) + (local $vals i32) + (local $valSet i32) + (local $index i32) + (local $k|6 i64) + (local $k|7 i64) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $set + i32.store + i64.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i64.const 100 + i64.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i64.const 1 + i64.add + local.set $k + br $for-loop|0 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 50 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i64.const 100 + i64.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i64.const 1 + i64.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#values + local.tee $vals + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $valSet + i32.store offset=12 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $k|6 + loop $for-loop|3 + local.get $k|6 + i64.const 50 + i64.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|6 + i64.const 1 + i64.add + local.set $k|6 + br $for-loop|3 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $k|7 + loop $for-loop|4 + local.get $k|7 + i64.const 50 + i64.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|7 + i64.const 1 + i64.add + local.set $k|7 + br $for-loop|4 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#clear + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.0 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/set/Set#find (param $this i32) (param $key i64) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $~lib/set/SetEntry#get:key + local.get $key + i64.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/set/Set#has (param $this i32) (param $key i64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/set/Set#rehash (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i64) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.1 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entries + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entriesOffset + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.2 + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:key + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $~lib/set/SetEntry#set:key + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.3 + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.4 + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:buckets + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:entries + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#get:entriesCount + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $this i32) (param $key i64) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $4 i32) + (local $bucketPtrBase i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $hashCode + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.eq + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + else + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entries + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.tee $4 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.5 + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#get:size (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/set/Set#get:entriesCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 3 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 3 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + local.get $value + i64.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 3 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entries + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entriesOffset + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $~lib/set/ENTRY_SIZE|inlined.6 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.6 + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $~lib/set/SetEntry#get:key + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i64) + (local $value i64) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 592 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/set/Set#delete (param $this i32) (param $key i64) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $~lib/set/Set#rehash + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#clear (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.7 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.7 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $set i32) + (local $k i64) + (local $k|2 i64) + (local $vals i32) + (local $valSet i32) + (local $index i32) + (local $k|6 i64) + (local $k|7 i64) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $set + i32.store + i64.const 0 + local.set $k + loop $for-loop|0 + local.get $k + i64.const 100 + i64.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + i64.const 1 + i64.add + local.set $k + br $for-loop|0 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 50 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + i64.const 100 + i64.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + i64.const 1 + i64.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#values + local.tee $vals + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $valSet + i32.store offset=12 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $k|6 + loop $for-loop|3 + local.get $k|6 + i64.const 50 + i64.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|6 + i64.const 1 + i64.add + local.set $k|6 + br $for-loop|3 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $k|7 + loop $for-loop|4 + local.get $k|7 + i64.const 50 + i64.lt_u + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|7 + i64.const 1 + i64.add + local.set $k|7 + br $for-loop|4 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#clear + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.0 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/set/Set#find (param $this i32) (param $key f32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $~lib/set/SetEntry#get:key + local.get $key + f32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/set/Set#has (param $this i32) (param $key f32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/set/Set#rehash (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey f32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.1 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entries + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entriesOffset + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.2 + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:key + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $~lib/set/SetEntry#set:key + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.3 + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.4 + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:buckets + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:entries + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#get:entriesCount + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $this i32) (param $key f32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $4 i32) + (local $bucketPtrBase i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $hashCode + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.eq + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + else + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entries + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.tee $4 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.5 + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#get:size (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/set/Set#get:entriesCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value f32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + f32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entries + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entriesOffset + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $~lib/set/ENTRY_SIZE|inlined.6 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.6 + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $~lib/set/SetEntry#get:key + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f32) + (local $value f32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 592 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/set/Set#delete (param $this i32) (param $key f32) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $~lib/set/Set#rehash + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#clear (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.7 (result i32) + i32.const 8 + br $~lib/set/ENTRY_SIZE|inlined.7 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $set i32) + (local $k f32) + (local $k|2 f32) + (local $vals i32) + (local $valSet i32) + (local $index i32) + (local $k|6 f32) + (local $k|7 f32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $set + i32.store + f32.const 0 + local.set $k + loop $for-loop|0 + local.get $k + f32.const 100 + f32.lt + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + f32.const 1 + f32.add + local.set $k + br $for-loop|0 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 50 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + f32.const 100 + f32.lt + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + f32.const 1 + f32.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#values + local.tee $vals + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $valSet + i32.store offset=12 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $k|6 + loop $for-loop|3 + local.get $k|6 + f32.const 50 + f32.lt + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|6 + f32.const 1 + f32.add + local.set $k|6 + br $for-loop|3 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $k|7 + loop $for-loop|4 + local.get $k|7 + f32.const 50 + f32.lt + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|7 + f32.const 1 + f32.add + local.set $k|7 + br $for-loop|4 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#clear + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.0 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.0 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/set/Set#find (param $this i32) (param $key f64) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $~lib/set/SetEntry#get:key + local.get $key + f64.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/set/Set#has (param $this i32) (param $key f64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/set/Set#rehash (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey f64) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.1 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entries + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/set/Set#get:entriesOffset + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.2 + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $~lib/set/SetEntry#get:key + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $~lib/set/SetEntry#set:key + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.3 + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.4 + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:buckets + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#set:entries + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $~lib/set/Set#get:entriesCount + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $this i32) (param $key f64) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $4 i32) + (local $bucketPtrBase i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $hashCode + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.eq + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + else + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entries + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesOffset + local.tee $4 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.5 + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:buckets + local.get $hashCode + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#get:size (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/set/Set#get:entriesCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 3 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 3 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value f64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + local.get $value + f64.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $this i32) (param $newLength i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $newLength + i32.const 3 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $newLength + call $~lib/array/Array#set:length_ + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $this i32) (result i32) + (local $start i32) + (local $size i32) + (local $values i32) + (local $length i32) + (local $i i32) + (local $entry i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entries + local.set $start + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/set/Set#get:entriesOffset + local.set $size + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $size + call $~lib/array/Array#constructor + local.tee $values + i32.store offset=4 + i32.const 0 + local.set $length + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $size + i32.lt_s + if + local.get $start + local.get $i + block $~lib/set/ENTRY_SIZE|inlined.6 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.6 + end + i32.mul + i32.add + local.set $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.and + i32.eqz + if + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + local.tee $7 + i32.const 1 + i32.add + local.set $length + local.get $7 + local.get $entry + call $~lib/set/SetEntry#get:key + call $~lib/array/Array#__set + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $length + call $~lib/array/Array#set:length + local.get $values + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f64) + (local $value f64) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 592 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/set/Set#delete (param $this i32) (param $key f64) (result i32) + (local $entry i32) + (local $halfBucketsMask i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $~lib/set/Set#find + local.set $entry + local.get $entry + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $entry + local.get $entry + call $~lib/set/SetEntry#get:taggedNext + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:entriesCount + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:bucketsMask + i32.const 1 + i32.shr_u + local.set $halfBucketsMask + local.get $halfBucketsMask + i32.const 1 + i32.add + i32.const 4 + local.tee $4 + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.tee $5 + local.get $4 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCount + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/set/Set#get:entriesCapacity + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $halfBucketsMask + call $~lib/set/Set#rehash + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/set/Set#clear (param $this i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:buckets + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 4 + block $~lib/set/ENTRY_SIZE|inlined.7 (result i32) + i32.const 16 + br $~lib/set/ENTRY_SIZE|inlined.7 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#set:entries + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/set/Set#set:entriesCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $set i32) + (local $k f64) + (local $k|2 f64) + (local $vals i32) + (local $valSet i32) + (local $index i32) + (local $k|6 f64) + (local $k|7 f64) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $set + i32.store + f64.const 0 + local.set $k + loop $for-loop|0 + local.get $k + f64.const 100 + f64.lt + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k + f64.const 1 + f64.add + local.set $k + br $for-loop|0 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 50 + local.set $k|2 + loop $for-loop|1 + local.get $k|2 + f64.const 100 + f64.lt + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|2 + f64.const 1 + f64.add + local.set $k|2 + br $for-loop|1 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#values + local.tee $vals + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $valSet + i32.store offset=12 + i32.const 0 + local.set $index + loop $for-loop|2 + local.get $index + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $vals + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $8 + local.get $index + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $index + i32.const 1 + i32.add + local.set $index + br $for-loop|2 + end + end + local.get $valSet + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $k|6 + loop $for-loop|3 + local.get $k|6 + f64.const 50 + f64.lt + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|6 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|6 + f64.const 1 + f64.add + local.set $k|6 + br $for-loop|3 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $k|7 + loop $for-loop|4 + local.get $k|7 + f64.const 50 + f64.lt + if + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#add + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#delete + drop + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $k|7 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $k|7 + f64.const 1 + f64.add + local.set $k|7 + br $for-loop|4 + end + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#clear + local.get $set + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#__visit (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:buckets + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/set/Set#get:entries + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 432 + i32.const 480 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) +) diff --git a/tests/compiler/std/set.json b/tests/compiler/std/set.json index 9f7878d475..b83788465e 100644 --- a/tests/compiler/std/set.json +++ b/tests/compiler/std/set.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + ], + "asc_rtrace": true +} diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat deleted file mode 100644 index a3e5c8a21d..0000000000 --- a/tests/compiler/std/set.optimized.wat +++ /dev/null @@ -1,9461 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (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_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i32_i64_=>_none (func (param i32 i64))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_f64_=>_none (func (param i32 f64))) - (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1072) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1184) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1232) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1296) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") - (data (i32.const 1344) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1392) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1456 - local.set $1 - i32.const 1456 - i32.const 0 - i32.store - i32.const 3024 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1456 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1456 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1456 - i32.const 3040 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1456 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 1088 - i32.const 1040 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1040 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1040 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1040 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - call $~lib/rt/rtrace/onalloc - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1444 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1444 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 28 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - i32.const 1200 - i32.const 1248 - i32.const 49 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/util/hash/hash8 (param $0 i32) (result i32) - local.get $0 - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $8 - local.get $4 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $8 - i32.ne - if - local.get $5 - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load8_s - i32.store8 - local.get $2 - local.get $6 - local.get $3 - i32.load8_s - call $~lib/util/hash/hash8 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store offset=4 - local.get $3 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|0 - end - end - local.get $6 - local.tee $3 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $4 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=4 - local.get $1 - local.get $2 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - local.get $1 - i32.load - local.tee $5 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $4 - i32.const 1 - i32.and - if - local.get $5 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 1444 - i32.ge_u - if - local.get $1 - local.get $3 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1200 - i32.const 1360 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $3 - call $~lib/rt/tlsf/maybeInitialize - local.get $3 - i32.const 16 - i32.sub - local.set $4 - local.get $3 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $3 - select - if (result i32) - local.get $4 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $4 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $2 - i32.shl - local.tee $2 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - local.tee $1 - local.get $5 - i32.add - local.get $2 - local.get $5 - i32.sub - call $~lib/memory/memory.fill - local.get $1 - local.get $3 - i32.ne - if - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $2 - i32.store offset=8 - end - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1408 - i32.const 1360 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $6 - local.get $0 - i32.load offset=16 - local.tee $7 - local.set $4 - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 1073741808 - i32.gt_u - if - i32.const 1200 - i32.const 1360 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $3 - local.get $2 - local.get $0 - i32.load - local.tee $8 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $8 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - loop $for-loop|0 - local.get $5 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $2 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $2 - i32.load8_s - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1408 - i32.const 1360 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_s - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $~lib/set/Set#constructor - local.set $0 - loop $for-loop|1 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $2 - loop $for-loop|3 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $3 - loop $for-loop|4 - local.get $1 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $0 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|4 - end - end - local.get $3 - i32.load offset=20 - local.get $0 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|6 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|6 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|8 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|8 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $8 - local.get $4 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $8 - i32.ne - if - local.get $5 - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $2 - local.get $6 - local.get $3 - i32.load8_u - call $~lib/util/hash/hash8 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store offset=4 - local.get $3 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|0 - end - end - local.get $6 - local.tee $3 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $4 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=4 - local.get $1 - local.get $2 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $6 - local.get $0 - i32.load offset=16 - local.tee $7 - local.set $4 - i32.const 16 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $4 - i32.const 1073741808 - i32.gt_u - if - i32.const 1200 - i32.const 1360 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $3 - local.get $2 - local.get $0 - i32.load - local.tee $8 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $8 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - loop $for-loop|0 - local.get $5 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $2 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $2 - i32.load8_u - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1408 - i32.const 1360 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_u - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $~lib/set/Set#constructor - local.set $0 - loop $for-loop|1 - local.get $2 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $2 - loop $for-loop|3 - local.get $2 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $3 - loop $for-loop|4 - local.get $1 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $0 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|4 - end - end - local.get $3 - i32.load offset=20 - local.get $0 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|6 - local.get $1 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|6 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|8 - local.get $1 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|8 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/util/hash/hash16 (param $0 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $8 - local.get $4 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $8 - i32.ne - if - local.get $5 - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load16_s - i32.store16 - local.get $2 - local.get $6 - local.get $3 - i32.load16_s - call $~lib/util/hash/hash16 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store offset=4 - local.get $3 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|0 - end - end - local.get $6 - local.tee $3 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $4 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store16 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=4 - local.get $1 - local.get $2 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1408 - i32.const 1360 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 8 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $8 - i32.const 536870904 - i32.gt_u - if - i32.const 1200 - i32.const 1360 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $3 - i32.load16_s - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1408 - i32.const 1360 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $~lib/set/Set#constructor - local.set $0 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $2 - loop $for-loop|3 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $3 - loop $for-loop|4 - local.get $1 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $0 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|4 - end - end - local.get $3 - i32.load offset=20 - local.get $0 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|6 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|6 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|8 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|8 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 9 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $8 - local.get $4 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $8 - i32.ne - if - local.get $5 - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load16_u - i32.store16 - local.get $2 - local.get $6 - local.get $3 - i32.load16_u - call $~lib/util/hash/hash16 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store offset=4 - local.get $3 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|0 - end - end - local.get $6 - local.tee $3 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $4 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store16 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=4 - local.get $1 - local.get $2 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 10 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $8 - i32.const 536870904 - i32.gt_u - if - i32.const 1200 - i32.const 1360 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $3 - i32.load16_u - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1408 - i32.const 1360 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $~lib/set/Set#constructor - local.set $0 - loop $for-loop|1 - local.get $2 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $2 - loop $for-loop|3 - local.get $2 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $3 - loop $for-loop|4 - local.get $1 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $0 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|4 - end - end - local.get $3 - i32.load offset=20 - local.get $0 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|6 - local.get $1 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|6 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|8 - local.get $1 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|8 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 11 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/util/hash/hash32 (param $0 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $8 - local.get $4 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $8 - i32.ne - if - local.get $5 - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load - i32.store - local.get $2 - local.get $6 - local.get $3 - i32.load - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store offset=4 - local.get $3 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|0 - end - end - local.get $6 - local.tee $3 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $4 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=4 - local.get $1 - local.get $2 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1408 - i32.const 1360 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $8 - i32.const 268435452 - i32.gt_u - if - i32.const 1200 - i32.const 1360 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 2 - i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $3 - i32.load - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1408 - i32.const 1360 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $~lib/set/Set#constructor - local.set $0 - loop $for-loop|0 - local.get $2 - i32.const 100 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 100 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $3 - loop $for-loop|2 - local.get $1 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $0 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 - end - end - local.get $3 - i32.load offset=20 - local.get $0 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|4 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 13 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 14 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $8 - i32.const 268435452 - i32.gt_u - if - i32.const 1200 - i32.const 1360 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 2 - i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $3 - i32.load - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $~lib/set/Set#constructor - local.set $0 - loop $for-loop|0 - local.get $2 - i32.const 100 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 100 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $3 - loop $for-loop|2 - local.get $1 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $0 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 - end - end - local.get $3 - i32.load offset=20 - local.get $0 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|4 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 15 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/util/hash/hash64 (param $0 i64) (result i32) - (local $1 i32) - local.get $0 - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i64.load - i64.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $8 - local.get $4 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $8 - i32.ne - if - local.get $5 - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i64.load - i64.store - local.get $2 - local.get $6 - local.get $3 - i64.load - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store offset=8 - local.get $3 - local.get $2 - i32.store - local.get $2 - i32.const 16 - i32.add - local.set $2 - end - local.get $5 - i32.const 16 - i32.add - local.set $5 - br $while-continue|0 - end - end - local.get $6 - local.tee $3 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $4 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - local.tee $4 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - i32.const 4 - i32.shl - i32.add - local.tee $2 - local.get $1 - i64.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store offset=8 - local.get $3 - local.get $2 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1408 - i32.const 1360 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 16 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $8 - i32.const 134217726 - i32.gt_u - if - i32.const 1200 - i32.const 1360 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 3 - i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $9 - i32.const 4 - i32.shl - i32.add - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $3 - i64.load - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1408 - i32.const 1360 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - i32.const 4 - local.get $2 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/set/Set#rehash - end - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $for-loop|0 - local.get $0 - i64.const 100 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 50 - local.set $0 - loop $for-loop|1 - local.get $0 - i64.const 100 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $4 - loop $for-loop|2 - local.get $3 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $4 - i32.load offset=20 - local.get $1 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i64.const 50 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|3 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i64.const 50 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|4 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 18 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $8 - i32.const 134217726 - i32.gt_u - if - i32.const 1200 - i32.const 1360 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 3 - i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $9 - i32.const 4 - i32.shl - i32.add - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $3 - i64.load - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $std/set/testNumeric - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $for-loop|0 - local.get $0 - i64.const 100 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 50 - local.set $0 - loop $for-loop|1 - local.get $0 - i64.const 100 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $4 - loop $for-loop|2 - local.get $3 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $4 - i32.load offset=20 - local.get $1 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i64.const 50 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|3 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i64.const 50 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|4 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 19 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - f32.load - local.get $1 - f32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $8 - local.get $4 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $8 - i32.ne - if - local.get $5 - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - f32.load - f32.store - local.get $2 - local.get $6 - local.get $3 - f32.load - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store offset=4 - local.get $3 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|0 - end - end - local.get $6 - local.tee $3 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $4 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 f32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.tee $4 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - f32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store offset=4 - local.get $3 - local.get $2 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - i32.load offset=8 - local.set $6 - local.get $0 - i32.load offset=16 - local.tee $9 - local.set $8 - i32.const 16 - i32.const 20 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $9 - i32.const 268435452 - i32.gt_u - if - i32.const 1200 - i32.const 1360 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $7 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $7 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - loop $for-loop|0 - local.get $10 - local.get $9 - i32.lt_s - if - local.get $6 - local.get $10 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - f32.load - local.set $4 - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1408 - i32.const 1360 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $4 - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $10 - i32.const 1 - i32.add - local.set $10 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1408 - i32.const 1360 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - i32.const 4 - local.get $2 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric - (local $0 f32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $for-loop|0 - local.get $0 - f32.const 100 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 50 - local.set $0 - loop $for-loop|1 - local.get $0 - f32.const 100 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $4 - loop $for-loop|2 - local.get $3 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $4 - i32.load offset=20 - local.get $1 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - f32.const 50 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $for-loop|3 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - f32.const 50 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $for-loop|4 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 21 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - f64.load - local.get $1 - f64.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $8 - local.get $4 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $8 - i32.ne - if - local.get $5 - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - f64.load - f64.store - local.get $2 - local.get $6 - local.get $3 - f64.load - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store offset=8 - local.get $3 - local.get $2 - i32.store - local.get $2 - i32.const 16 - i32.add - local.set $2 - end - local.get $5 - i32.const 16 - i32.add - local.set $5 - br $while-continue|0 - end - end - local.get $6 - local.tee $3 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $4 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.tee $4 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - i32.const 4 - i32.shl - i32.add - local.tee $2 - local.get $1 - f64.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store offset=8 - local.get $3 - local.get $2 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - i32.load offset=8 - local.set $6 - local.get $0 - i32.load offset=16 - local.tee $9 - local.set $8 - i32.const 16 - i32.const 22 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $9 - i32.const 134217726 - i32.gt_u - if - i32.const 1200 - i32.const 1360 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $7 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $7 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=12 - loop $for-loop|0 - local.get $10 - local.get $9 - i32.lt_s - if - local.get $6 - local.get $10 - i32.const 4 - i32.shl - i32.add - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - f64.load - local.set $4 - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1408 - i32.const 1360 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $10 - i32.const 1 - i32.add - local.set $10 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1408 - i32.const 1360 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - i32.const 4 - local.get $2 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric - (local $0 f64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $for-loop|0 - local.get $0 - f64.const 100 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 50 - local.set $0 - loop $for-loop|1 - local.get $0 - f64.const 100 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $4 - loop $for-loop|2 - local.get $3 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $4 - i32.load offset=20 - local.get $1 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - f64.const 50 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $for-loop|3 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - f64.const 50 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1312 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $for-loop|4 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 1312 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~start - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $folding-inner1 - block $folding-inner0 - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $0 - i32.load offset=16 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=24 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=16 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 1444 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) -) diff --git a/tests/compiler/std/set.release.wat b/tests/compiler/std/set.release.wat new file mode 100644 index 0000000000..22fd0d652b --- /dev/null +++ b/tests/compiler/std/set.release.wat @@ -0,0 +1,16440 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func)) + (type $3 (func (result i32))) + (type $4 (func (param i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i64))) + (type $8 (func (param i32 i32 i32))) + (type $9 (func (param i32 i32 i32 i32))) + (type $10 (func (param i32 i32 i64))) + (type $11 (func (param i32 i64 i32) (result i32))) + (type $12 (func (param i32 i64) (result i32))) + (type $13 (func (param i32 i32) (result i64))) + (type $14 (func (param i32 f32))) + (type $15 (func (param i32 f64))) + (type $16 (func (param i32 f32 i32) (result i32))) + (type $17 (func (param i32 f32) (result i32))) + (type $18 (func (param i32 i32) (result f32))) + (type $19 (func (param i32 f64 i32) (result i32))) + (type $20 (func (param i32 f64) (result i32))) + (type $21 (func (param i32 i32) (result f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34516)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) ",") + (data $8.1 (i32.const 1448) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $9 (i32.const 1484) "<") + (data $9.1 (i32.const 1496) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $10 (i32.const 1548) ",") + (data $10.1 (i32.const 1560) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") + (data $11 (i32.const 1596) ",") + (data $11.1 (i32.const 1608) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $12 (i32.const 1648) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00H\08\00\00B\08\00\00H\00\00\00B\00\00\00\88\08\00\00\82\08\00\00\88\00\00\00\82\00\00\00\08\t\00\00\02\t\00\00\08\01\00\00\02\01\00\00\08\n\00\00\02\n\00\00\08\02\00\00\02\02\00\00\08\19\00\00\02\19\00\00\08\1a\00\00\02\1a") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$904 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34516 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$904 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1648 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1652 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34528 + i32.const 0 + i32.store + i32.const 36096 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34528 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34528 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34528 + i32.const 36100 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34528 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34516 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34516 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34516 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34516 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#rehash (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + i32.load8_s + local.tee $8 + i32.store8 + local.get $2 + local.get $5 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#get:size (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $5 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + local.get $2 + i32.shl + local.set $1 + local.get $3 + if + i32.const 1073741820 + local.get $5 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $1 + end + block $__inlined_func$~lib/rt/itcms/__renew$893 + local.get $4 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u + if + local.get $3 + local.get $1 + i32.store offset=16 + local.get $4 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$893 + end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $4 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $1 + local.get $3 + i32.lt_u + select + memory.copy + end + local.get $2 + local.get $4 + i32.ne + if + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $1 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 0 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#clear (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load8_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#rehash (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + i32.load8_u + local.tee $8 + i32.store8 + local.get $2 + local.get $5 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load8_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#rehash (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + i32.load16_s + local.tee $8 + i32.store16 + local.get $2 + local.get $5 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 1 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load16_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#rehash (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + i32.load16_u + local.tee $8 + i32.store16 + local.get $2 + local.get $5 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 1 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load16_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#rehash (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + i32.load + local.tee $8 + i32.store + local.get $2 + local.get $5 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#rehash (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + i32.load + local.tee $8 + i32.store + local.get $2 + local.get $5 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $8 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne + if + local.get $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + i64.load + local.tee $6 + i64.store + local.get $2 + local.get $5 + local.get $1 + local.get $6 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $9 + i32.const 15 + i32.shr_u + local.get $9 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + i32.const 13 + i32.shr_u + local.get $9 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + i32.const 16 + i32.shr_u + local.get $9 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $9 + i32.load + i32.store offset=8 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $4 + i32.const 16 + i32.add + local.set $4 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 4 + i32.shl + i32.add + local.tee $3 + local.get $1 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.const 3 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $~lib/set/Set#find + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#clear (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $2 + i64.const 100 + i64.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 50 + local.set $2 + loop $for-loop|1 + local.get $2 + i64.const 100 + i64.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + i32.const 3 + i32.shl + local.tee $9 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $8 + local.get $7 + i32.store + local.get $8 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $9 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + loop $for-loop|00 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $5 + local.get $3 + i32.const 4 + i32.shl + i32.add + local.tee $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $7 + i64.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $3 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $1 + local.get $8 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $0 + local.get $8 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|3 + local.get $2 + i64.const 50 + i64.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|4 + local.get $2 + i64.const 50 + i64.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $8 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne + if + local.get $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + i64.load + local.tee $6 + i64.store + local.get $2 + local.get $5 + local.get $1 + local.get $6 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $9 + i32.const 15 + i32.shr_u + local.get $9 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + i32.const 13 + i32.shr_u + local.get $9 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + i32.const 16 + i32.shr_u + local.get $9 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $9 + i32.load + i32.store offset=8 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $4 + i32.const 16 + i32.add + local.set $4 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 4 + i32.shl + i32.add + local.tee $3 + local.get $1 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $~lib/set/Set#find + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $2 + i64.const 100 + i64.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 50 + local.set $2 + loop $for-loop|1 + local.get $2 + i64.const 100 + i64.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + i32.const 3 + i32.shl + local.tee $9 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $8 + local.get $7 + i32.store + local.get $8 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $9 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + loop $for-loop|00 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $5 + local.get $3 + i32.const 4 + i32.shl + i32.add + local.tee $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $7 + i64.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $3 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $1 + local.get $8 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $0 + local.get $8 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|3 + local.get $2 + i64.const 50 + i64.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|4 + local.get $2 + i64.const 50 + i64.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f32.load + f32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 f32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#rehash (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 f32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + f32.load + local.tee $8 + f32.store + local.get $2 + local.get $5 + local.get $1 + local.get $8 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $9 + local.get $9 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + local.get $9 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + local.get $9 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $9 + i32.load + i32.store offset=4 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $3 + local.get $1 + f32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $1 + local.tee $0 + i32.const 1 + i32.add + local.set $1 + local.get $7 + f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $0 + local.get $6 + i32.load offset=12 + i32.ge_u + if + local.get $0 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $0 + i32.const 1 + i32.add + local.tee $7 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $4 + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $~lib/set/Set#find + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store + loop $for-loop|0 + local.get $1 + f32.const 100 + f32.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + f32.const 100 + f32.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/set/Set#values + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=12 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $0 + local.get $3 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $4 + local.get $3 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/set/Set#get:size + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.get $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f32.const 50 + f32.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f32.const 50 + f32.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f64.load + f64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#rehash (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 f64) + (local $9 i64) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + f64.load + local.tee $8 + f64.store + local.get $2 + local.get $5 + local.get $1 + local.get $8 + i64.reinterpret_f64 + local.tee $9 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $9 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $10 + i32.const 15 + i32.shr_u + local.get $10 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $10 + i32.const 13 + i32.shr_u + local.get $10 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $10 + i32.const 16 + i32.shr_u + local.get $10 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $10 + i32.load + i32.store offset=8 + local.get $10 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $4 + i32.const 16 + i32.add + local.set $4 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 f64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 4 + i32.shl + i32.add + local.tee $4 + local.get $1 + f64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $4 + local.get $5 + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $4 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 3 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 4 + i32.shl + i32.add + local.tee $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $1 + local.tee $0 + i32.const 1 + i32.add + local.set $1 + local.get $7 + f64.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $0 + local.get $6 + i32.load offset=12 + i32.ge_u + if + local.get $0 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $0 + i32.const 1 + i32.add + local.tee $7 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $4 + f64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + call $~lib/set/Set#find + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $4 + local.get $4 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store + loop $for-loop|0 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/set/Set#values + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=12 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $0 + local.get $3 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $4 + local.get $3 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/set/Set#get:size + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.get $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f64.const 50 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f64.const 50 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1504 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/std/set.ts b/tests/compiler/std/set.ts index 2da500232d..59700ce6b1 100644 --- a/tests/compiler/std/set.ts +++ b/tests/compiler/std/set.ts @@ -59,3 +59,5 @@ testNumeric(); testNumeric(); testNumeric(); testNumeric(); + +__collect(); diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat deleted file mode 100644 index b867f31859..0000000000 --- a/tests/compiler/std/set.untouched.wat +++ /dev/null @@ -1,15208 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 176) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 224) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 288) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00") - (data (i32.const 336) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 384) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 436)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 80 - i32.const 32 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.const 1073741808 - i32.gt_u - if - i32.const 192 - i32.const 240 - i32.const 49 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $2 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/util/hash/hash8 (param $0 i32) (result i32) - i32.const -2128831035 - local.get $0 - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_s - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load8_s - i32.store8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i32.load8_s - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=4 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 0 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 352 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (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.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $3 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $6 - local.get $6 - i32.load - local.set $7 - local.get $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $5 - local.get $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $8 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u - if - i32.const 1 - drop - local.get $1 - local.get $8 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $8 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=8 - local.set $3 - local.get $1 - local.get $3 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 352 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $4 - local.get $1 - local.get $2 - i32.shl - local.set $5 - local.get $4 - local.get $5 - call $~lib/rt/tlsf/__realloc - local.set $6 - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $5 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $6 - local.get $4 - i32.ne - if - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.store offset=8 - end - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 352 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load8_s - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_s - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 400 - i32.const 352 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (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) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $1 - i32.const 0 - call $~lib/set/Set#constructor - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|4 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|4 - end - end - local.get $4 - call $~lib/set/Set#get:size - local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|6 - local.get $5 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|6 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|8 - local.get $5 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $8 - local.get $8 - if - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|8 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load8_u - i32.store8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i32.load8_u - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=4 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 0 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 352 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 352 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load8_u - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_u - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 400 - i32.const 352 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (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) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - local.set $3 - local.get $3 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $1 - i32.const 0 - call $~lib/set/Set#constructor - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|4 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|4 - end - end - local.get $4 - call $~lib/set/Set#get:size - local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|6 - local.get $5 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|6 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|8 - local.get $5 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - local.set $8 - local.get $8 - if - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|8 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/util/hash/hash16 (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_s - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load16_s - i32.store16 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i32.load16_s - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=4 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store16 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 8 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 1 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 352 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 352 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load16_s - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 400 - i32.const 352 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (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) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $1 - i32.const 0 - call $~lib/set/Set#constructor - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|4 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|4 - end - end - local.get $4 - call $~lib/set/Set#get:size - local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|6 - local.get $5 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|6 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|8 - local.get $5 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $8 - local.get $8 - if - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|8 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 9 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load16_u - i32.store16 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i32.load16_u - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=4 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store16 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 10 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 1 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 352 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 352 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load16_u - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 400 - i32.const 352 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (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) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - local.set $3 - local.get $3 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $1 - i32.const 0 - call $~lib/set/Set#constructor - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|4 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|4 - end - end - local.get $4 - call $~lib/set/Set#get:size - local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|6 - local.get $5 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|6 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|8 - local.get $5 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - local.set $8 - local.get $8 - if - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|8 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 11 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/util/hash/hash32 (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load - i32.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i32.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=4 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 352 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 352 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 400 - i32.const 352 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - i32.const 100 - i32.lt_s - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 100 - i32.lt_s - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $1 - i32.const 0 - call $~lib/set/Set#constructor - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|2 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $2 - call $~lib/set/Set#get:size - local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 50 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|3 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|4 - local.get $3 - i32.const 50 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 13 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load - i32.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i32.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=4 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 14 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 352 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 352 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 400 - i32.const 352 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - i32.const 100 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 100 - i32.lt_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $1 - i32.const 0 - call $~lib/set/Set#constructor - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|2 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $2 - call $~lib/set/Set#get:size - local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 50 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|3 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|4 - local.get $3 - i32.const 50 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 15 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/util/hash/hash64 (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.wrap_i64 - local.set $1 - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - i32.const -2128831035 - local.set $3 - local.get $3 - local.get $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i64.load - i64.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i64.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $13 - local.get $3 - local.get $13 - i32.const 4 - i32.mul - i32.add - local.set $14 - local.get $11 - local.get $14 - i32.load - i32.store offset=8 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 16 - i32.add - local.set $8 - end - local.get $6 - i32.const 16 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $13 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $13 - call $~lib/rt/pure/__retain - local.set $13 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $13 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $14 - local.get $5 - local.tee $9 - local.get $14 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i64.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $5 - local.get $4 - local.get $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 16 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 3 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 352 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 352 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i64.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 400 - i32.const 352 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - i64.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - i64.const 100 - i64.lt_s - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - i64.const 100 - i64.lt_s - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $2 - i32.const 0 - call $~lib/set/Set#constructor - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|2 - local.get $4 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $2 - local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|2 - end - end - local.get $3 - call $~lib/set/Set#get:size - local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i64.const 50 - i64.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - i64.const 50 - i64.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|4 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i64.load - i64.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - i64.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $13 - local.get $3 - local.get $13 - i32.const 4 - i32.mul - i32.add - local.set $14 - local.get $11 - local.get $14 - i32.load - i32.store offset=8 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 16 - i32.add - local.set $8 - end - local.get $6 - i32.const 16 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $13 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $13 - call $~lib/rt/pure/__retain - local.set $13 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $13 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $14 - local.get $5 - local.tee $9 - local.get $14 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i64.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $5 - local.get $4 - local.get $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 18 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 3 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 352 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 352 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i64.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 400 - i32.const 352 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 8 - i32.const 1 - i32.eq - drop - i32.const 8 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - i64.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - i64.const 100 - i64.lt_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - i64.const 100 - i64.lt_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $2 - i32.const 0 - call $~lib/set/Set#constructor - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|2 - local.get $4 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $2 - local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|2 - end - end - local.get $3 - call $~lib/set/Set#get:size - local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i64.const 50 - i64.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - i64.const 50 - i64.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|4 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 19 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f32.load - local.get $1 - f32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 f32) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - f32.load - f32.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - f32.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $12 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $13 - local.get $3 - local.get $13 - i32.const 4 - i32.mul - i32.add - local.set $14 - local.get $11 - local.get $14 - i32.load - i32.store offset=4 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $13 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $13 - call $~lib/rt/pure/__retain - local.set $13 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $13 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $14 - local.get $5 - local.tee $9 - local.get $14 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - f32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $5 - local.get $4 - local.get $5 - i32.load - i32.store offset=4 - local.get $5 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 20 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 352 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 f32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - f32.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 352 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - f32.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 400 - i32.const 352 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - f32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - f32.const 100 - f32.lt - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - f32.const 100 - f32.lt - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $2 - i32.const 0 - call $~lib/set/Set#constructor - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|2 - local.get $4 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $2 - local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|2 - end - end - local.get $3 - call $~lib/set/Set#get:size - local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - f32.const 50 - f32.lt - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - f32.const 50 - f32.lt - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|4 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 21 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f64.load - local.get $1 - f64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 f64) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - f64.load - f64.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $10 - f64.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $12 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $13 - local.get $3 - local.get $13 - i32.const 4 - i32.mul - i32.add - local.set $14 - local.get $11 - local.get $14 - i32.load - i32.store offset=8 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 16 - i32.add - local.set $8 - end - local.get $6 - i32.const 16 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $13 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $13 - call $~lib/rt/pure/__retain - local.set $13 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $13 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $14 - local.get $5 - local.tee $9 - local.get $14 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - f64.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $5 - local.get $4 - local.get $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 22 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741808 - i32.const 3 - i32.shr_u - i32.gt_u - if - i32.const 192 - i32.const 352 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 f64) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - f64.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 352 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (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.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - f64.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 400 - i32.const 352 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - f64.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - f64.const 100 - f64.lt - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - f64.const 100 - f64.lt - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $2 - i32.const 0 - call $~lib/set/Set#constructor - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|2 - local.get $4 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $2 - local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|2 - end - end - local.get $3 - call $~lib/set/Set#get:size - local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - f64.const 50 - f64.lt - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - f64.const 50 - f64.lt - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|4 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $start:std/set - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - ) - (func $~start - call $start:std/set - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/set/Set#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$24 - block $switch$1$case$23 - block $switch$1$case$22 - block $switch$1$case$21 - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$18 - block $switch$1$case$17 - block $switch$1$case$16 - block $switch$1$case$15 - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$15 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/std/simd.json b/tests/compiler/std/simd.json deleted file mode 100644 index b1da366ff4..0000000000 --- a/tests/compiler/std/simd.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} \ No newline at end of file diff --git a/tests/compiler/std/simd.ts b/tests/compiler/std/simd.ts deleted file mode 100644 index a7e8e5eabf..0000000000 --- a/tests/compiler/std/simd.ts +++ /dev/null @@ -1,31 +0,0 @@ -// hint: asc tests/compiler/std/simd --enable simd - -@final -class I8x16 { - - @inline static from(vec: v128): I8x16 { - return changetype(vec); - } - - // TODO: not possible due to arguments becoming locals, no longer being compile-time constants - // @inline constructor( - // a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8 - // ) { - // return changetype(i8x16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)); - // } - private constructor() { unreachable(); } - - @inline @operator("+") - add(vec: I8x16): I8x16 { - return changetype(v128.add(changetype(this), changetype(vec))); - } -} - -function test_I8x16(): void { - var a = I8x16.from(i8x16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)); - var c = a + a; -} - -if (ASC_FEATURE_SIMD) { - test_I8x16(); -} diff --git a/tests/compiler/std/simd.untouched.wat b/tests/compiler/std/simd.untouched.wat deleted file mode 100644 index fa8c8cf7e4..0000000000 --- a/tests/compiler/std/simd.untouched.wat +++ /dev/null @@ -1,15 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $start:std/simd - i32.const 0 - drop - ) - (func $~start - call $start:std/simd - ) -) diff --git a/tests/compiler/std/static-array.debug.wat b/tests/compiler/std/static-array.debug.wat new file mode 100644 index 0000000000..cfc3928c0c --- /dev/null +++ b/tests/compiler/std/static-array.debug.wat @@ -0,0 +1,3794 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32) (result i64))) + (type $10 (func (param i32 i32 i64))) + (type $11 (func (param i32 i32) (result f32))) + (type $12 (func (param i32 i32 f32))) + (type $13 (func (param i32 i32) (result f64))) + (type $14 (func (param i32 i32 f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $std/static-array/i i32 (i32.const 64)) + (global $std/static-array/I i32 (i32.const 160)) + (global $std/static-array/f i32 (i32.const 240)) + (global $std/static-array/F i32 (i32.const 336)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 928)) + (global $~lib/memory/__data_end i32 (i32.const 964)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33732)) + (global $~lib/memory/__heap_base i32 (i32.const 33732)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00 \00\00\00 \00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 92) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 140) ",\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00p\00\00\00p\00\00\00\10\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 188) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\c0?\00\00 @\00\00\00\00") + (data $5 (i32.const 220) ",\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\10\00\00\00\d0\00\00\00\d0\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00\00\00\f4?\00\00\00\00\00\00\02@\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\10\00\00\00 \01\00\00 \01\00\00\10\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") + (data $9 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $11 (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $12 (i32.const 588) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $13 (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 720) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 752) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 780) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 832) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 860) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 928) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\n\00\00\02\19\00\00\02\1a\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 448 + i32.const 800 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 672 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 608 + i32.const 880 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 880 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 608 + i32.const 672 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/static-array/i + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/static-array/I + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/static-array/f + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/static-array/F + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 448 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 560 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 608 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:std/static-array + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33760 + i32.const 33808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 448 + i32.const 512 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 560 + i32.const 512 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 448 + i32.const 512 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i64) + (local $value i64) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 448 + i32.const 512 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 448 + i32.const 512 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + local.get $value + i64.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f32) + (local $value f32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 448 + i32.const 512 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value f32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 448 + i32.const 512 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + f32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result f64) + (local $value f64) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 448 + i32.const 512 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value f64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 448 + i32.const 512 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + local.get $value + f64.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/static-array + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/static-array/i + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/i + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/array/Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/i + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 720 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 752 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 832 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $std/static-array/i + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + i32.const 2 + call $~lib/array/Array#__set + global.get $std/static-array/i + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/I + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/I + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/array/Array#__get + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/I + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + call $~lib/array/Array#__get + i64.const 4 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/I + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + i64.const 4 + call $~lib/array/Array#__set + global.get $std/static-array/I + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/array/Array#__get + i64.const 4 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/f + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/f + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/array/Array#__get + f32.const 1.5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/f + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + call $~lib/array/Array#__get + f32.const 2.5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/f + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + f32.const 2.5 + call $~lib/array/Array#__set + global.get $std/static-array/f + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/array/Array#__get + f32.const 2.5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/F + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/F + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/array/Array#__get + f64.const 1.25 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/F + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + call $~lib/array/Array#__get + f64.const 2.25 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/static-array/F + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + f64.const 2.25 + call $~lib/array/Array#__set + global.get $std/static-array/F + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/array/Array#__get + f64.const 2.25 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/std/static-array.json b/tests/compiler/std/static-array.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/std/static-array.json +++ b/tests/compiler/std/static-array.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat deleted file mode 100644 index 5a80874100..0000000000 --- a/tests/compiler/std/static-array.optimized.wat +++ /dev/null @@ -1,959 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i64 (func (param i32) (result i64))) - (type $i32_=>_f32 (func (param i32) (result f32))) - (type $i32_=>_f64 (func (param i32) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 1056) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\10\04\00\00\10\04\00\00\08\00\00\00\02") - (data (i32.const 1088) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\00\00\00\00\04") - (data (i32.const 1120) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00P\04\00\00P\04\00\00\10\00\00\00\02") - (data (i32.const 1152) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\c0?\00\00 @") - (data (i32.const 1184) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\90\04\00\00\90\04\00\00\08\00\00\00\02") - (data (i32.const 1216) "\10\00\00\00\01\00\00\00\00\00\00\00\10") - (data (i32.const 1238) "\f4?\00\00\00\00\00\00\02@") - (data (i32.const 1248) "\10\00\00\00\01\00\00\00\06\00\00\00\10\00\00\00\d0\04\00\00\d0\04\00\00\10\00\00\00\02") - (data (i32.const 1280) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1344) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1408) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1456) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1504) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/array/Array#__get (param $0 i32) (result i32) - local.get $0 - i32.const 1084 - i32.load - i32.ge_u - if - i32.const 1360 - i32.const 1424 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - i32.const 1076 - i32.load - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - memory.size - local.tee $2 - i32.const 16 - i32.shl - local.tee $1 - i32.gt_u - if - local.get $2 - local.get $0 - local.get $1 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/stub/__realloc (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.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 41 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.tee $4 - i32.load - local.set $3 - local.get $4 - i32.load offset=4 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1520 - i32.const 44 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $0 - local.get $3 - i32.add - i32.eq - local.set $5 - local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.set $2 - local.get $1 - local.get $3 - i32.gt_u - if - local.get $5 - if - local.get $1 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - local.get $0 - local.get $2 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $4 - local.get $2 - i32.store - else - local.get $4 - i32.load offset=8 - local.set $6 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - local.tee $5 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $2 - local.get $5 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $7 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.tee $3 - local.get $7 - i32.store - local.get $3 - i32.const 1 - i32.store offset=4 - local.get $3 - local.get $6 - i32.store offset=8 - local.get $3 - local.get $5 - i32.store offset=12 - local.get $2 - local.get $0 - local.get $4 - i32.load offset=12 - call $~lib/memory/memory.copy - local.get $2 - local.tee $0 - i32.const 16 - i32.sub - local.set $4 - end - else - local.get $5 - if - local.get $0 - local.get $2 - i32.add - global.set $~lib/rt/stub/offset - local.get $4 - local.get $2 - i32.store - end - end - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 28 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - local.get $0 - i32.load offset=8 - local.tee $2 - local.get $1 - i32.shr_u - i32.gt_u - if - i32.const 1 - i32.const 1073741808 - local.get $1 - i32.shr_u - i32.gt_u - if - i32.const 1472 - i32.const 1424 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $0 - i32.load - local.tee $4 - i32.const 1 - local.get $1 - i32.shl - local.tee $3 - call $~lib/rt/stub/__realloc - local.tee $1 - i32.add - local.get $3 - local.get $2 - i32.sub - call $~lib/memory/memory.fill - local.get $1 - local.get $4 - i32.ne - if - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $3 - i32.store offset=8 - end - ) - (func $~lib/array/Array#__get (param $0 i32) (result i64) - local.get $0 - i32.const 1148 - i32.load - i32.ge_u - if - i32.const 1360 - i32.const 1424 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - i32.const 1140 - i32.load - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__get (param $0 i32) (result f32) - local.get $0 - i32.const 1212 - i32.load - i32.ge_u - if - i32.const 1360 - i32.const 1424 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - i32.const 1204 - i32.load - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (result f64) - local.get $0 - i32.const 1276 - i32.load - i32.ge_u - if - i32.const 1360 - i32.const 1424 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - i32.const 1268 - i32.load - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $start:std/static-array - i32.const 1084 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/array/Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1552 - global.set $~lib/rt/stub/offset - i32.const 0 - i32.const 1084 - i32.load - i32.ge_u - if - i32.const 1072 - i32.const 2 - call $~lib/array/ensureSize - i32.const 1084 - i32.const 1 - i32.store - end - i32.const 1076 - i32.load - i32.const 2 - i32.store - i32.const 0 - call $~lib/array/Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1148 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/array/Array#__get - i64.const 3 - i64.ne - if - i32.const 0 - i32.const 1296 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/array/Array#__get - i64.const 4 - i64.ne - if - i32.const 0 - i32.const 1296 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1148 - i32.load - i32.ge_u - if - i32.const 1136 - i32.const 3 - call $~lib/array/ensureSize - i32.const 1148 - i32.const 1 - i32.store - end - i32.const 1140 - i32.load - i64.const 4 - i64.store - i32.const 0 - call $~lib/array/Array#__get - i64.const 4 - i64.ne - if - i32.const 0 - i32.const 1296 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1212 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/array/Array#__get - f32.const 1.5 - f32.ne - if - i32.const 0 - i32.const 1296 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/array/Array#__get - f32.const 2.5 - f32.ne - if - i32.const 0 - i32.const 1296 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1212 - i32.load - i32.ge_u - if - i32.const 1200 - i32.const 2 - call $~lib/array/ensureSize - i32.const 1212 - i32.const 1 - i32.store - end - i32.const 1204 - i32.load - f32.const 2.5 - f32.store - i32.const 0 - call $~lib/array/Array#__get - f32.const 2.5 - f32.ne - if - i32.const 0 - i32.const 1296 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1276 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/array/Array#__get - f64.const 1.25 - f64.ne - if - i32.const 0 - i32.const 1296 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/array/Array#__get - f64.const 2.25 - f64.ne - if - i32.const 0 - i32.const 1296 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1276 - i32.load - i32.ge_u - if - i32.const 1264 - i32.const 3 - call $~lib/array/ensureSize - i32.const 1276 - i32.const 1 - i32.store - end - i32.const 1268 - i32.load - f64.const 2.25 - f64.store - i32.const 0 - call $~lib/array/Array#__get - f64.const 2.25 - f64.ne - if - i32.const 0 - i32.const 1296 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/static-array - ) -) diff --git a/tests/compiler/std/static-array.release.wat b/tests/compiler/std/static-array.release.wat new file mode 100644 index 0000000000..263534f48a --- /dev/null +++ b/tests/compiler/std/static-array.release.wat @@ -0,0 +1,2481 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32) (result i32))) + (type $8 (func (param i32) (result i64))) + (type $9 (func (param i32) (result f32))) + (type $10 (func (param i32) (result f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34756)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\01\00\00\00\08\00\00\00\01\00\00\00\02") + (data $1 (i32.const 1068) ",") + (data $1.1 (i32.const 1080) "\04\00\00\00\10\00\00\00 \04\00\00 \04\00\00\08\00\00\00\02") + (data $2 (i32.const 1116) ",") + (data $2.1 (i32.const 1128) "\01\00\00\00\10\00\00\00\03\00\00\00\00\00\00\00\04") + (data $3 (i32.const 1164) ",") + (data $3.1 (i32.const 1176) "\05\00\00\00\10\00\00\00p\04\00\00p\04\00\00\10\00\00\00\02") + (data $4 (i32.const 1212) "\1c") + (data $4.1 (i32.const 1224) "\01\00\00\00\08\00\00\00\00\00\c0?\00\00 @") + (data $5 (i32.const 1244) ",") + (data $5.1 (i32.const 1256) "\06\00\00\00\10\00\00\00\d0\04\00\00\d0\04\00\00\08\00\00\00\02") + (data $6 (i32.const 1292) ",") + (data $6.1 (i32.const 1304) "\01\00\00\00\10") + (data $6.2 (i32.const 1318) "\f4?\00\00\00\00\00\00\02@") + (data $7 (i32.const 1340) ",") + (data $7.1 (i32.const 1352) "\07\00\00\00\10\00\00\00 \05\00\00 \05\00\00\10\00\00\00\02") + (data $8 (i32.const 1388) "<") + (data $8.1 (i32.const 1400) "\02\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s") + (data $9 (i32.const 1452) "<") + (data $9.1 (i32.const 1464) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $10 (i32.const 1516) ",") + (data $10.1 (i32.const 1528) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $11 (i32.const 1564) ",") + (data $11.1 (i32.const 1576) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $12 (i32.const 1612) "<") + (data $12.1 (i32.const 1624) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $13 (i32.const 1676) "<") + (data $13.1 (i32.const 1688) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $16 (i32.const 1804) ",") + (data $16.1 (i32.const 1816) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $18 (i32.const 1884) "<") + (data $18.1 (i32.const 1896) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $19 (i32.const 1952) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\n\00\00\02\19\00\00\02\1a") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 1264 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1584 + call $~lib/rt/itcms/__visit + i32.const 1632 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$155 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34756 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$155 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1952 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1824 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1956 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1904 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1904 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1904 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1904 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1904 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1904 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34768 + i32.const 0 + i32.store + i32.const 36336 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34768 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34768 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34768 + i32.const 36340 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34768 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34756 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34756 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34756 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1904 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + if + i32.const 34784 + i32.const 34832 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:std/static-array + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + if + i32.const 34784 + i32.const 34832 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + if + i32.const 34784 + i32.const 34832 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + local.get $0 + i32.const 1100 + i32.load + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1092 + i32.load + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (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 $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + if + i32.const 34784 + i32.const 34832 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $1 + i32.shr_u + i32.eqz + if + i32.const 1073741820 + local.get $1 + i32.shr_u + i32.eqz + if + i32.const 1584 + i32.const 1536 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$145 + i32.const 1073741820 + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $1 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$145 + end + local.get $4 + i32.load offset=12 + local.set $6 + local.get $3 + i32.const 1073741804 + i32.ge_u + if + i32.const 1632 + i32.const 1696 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $7 + local.get $3 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1632 + i32.const 1904 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $8 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $8 + i32.const 256 + i32.ge_u + if (result i32) + local.get $8 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $8 + i32.const 1 + i32.const 27 + local.get $8 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $8 + end + else + local.get $8 + end + i32.const 4 + local.get $7 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $5 + local.get $1 + local.get $5 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $5 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $7 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $7 + local.get $8 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $8 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1904 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $9 + local.get $8 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1904 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const -4 + i32.and + local.get $8 + i32.sub + local.tee $5 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $8 + local.get $9 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $8 + i32.add + local.tee $8 + local.get $5 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $7 + local.get $8 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $9 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $5 + local.get $5 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $6 + i32.store offset=12 + local.get $1 + local.get $3 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $5 + i32.load offset=8 + local.set $6 + local.get $1 + local.get $5 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $6 + i32.store offset=8 + local.get $6 + local.get $1 + local.get $6 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $5 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $3 + memory.fill + local.get $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $2 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + end + local.get $0 + local.get $3 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (result i64) + (local $1 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + if + i32.const 34784 + i32.const 34832 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + local.get $0 + i32.const 1196 + i32.load + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + i32.const 1188 + i32.load + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (result f32) + (local $1 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + if + i32.const 34784 + i32.const 34832 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + local.get $0 + i32.const 1276 + i32.load + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1268 + i32.load + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (result f64) + (local $1 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + if + i32.const 34784 + i32.const 34832 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store + local.get $0 + i32.const 1372 + i32.load + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store + i32.const 1364 + i32.load + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/static-array + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1088 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1408 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 0 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1408 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1408 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 34756 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1748 + i32.const 1744 + i32.store + i32.const 1752 + i32.const 1744 + i32.store + i32.const 1744 + global.set $~lib/rt/itcms/pinSpace + i32.const 1780 + i32.const 1776 + i32.store + i32.const 1784 + i32.const 1776 + i32.store + i32.const 1776 + global.set $~lib/rt/itcms/toSpace + i32.const 1860 + i32.const 1856 + i32.store + i32.const 1864 + i32.const 1856 + i32.store + i32.const 1856 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1100 + i32.load + i32.eqz + if + i32.const 1088 + i32.const 2 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1100 + i32.const 1 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1092 + i32.load + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 0 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1408 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + i32.const 1184 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1408 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + i32.const 0 + call $~lib/array/Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1408 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + i32.const 1 + call $~lib/array/Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1408 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + i32.const 1196 + i32.load + i32.eqz + if + i32.const 1184 + i32.const 3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + i32.const 1196 + i32.const 1 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + i32.const 1188 + i32.load + i64.const 4 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + i32.const 0 + call $~lib/array/Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1408 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1264 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1408 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 0 + call $~lib/array/Array#__get + f32.const 1.5 + f32.ne + if + i32.const 0 + i32.const 1408 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1 + call $~lib/array/Array#__get + f32.const 2.5 + f32.ne + if + i32.const 0 + i32.const 1408 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1276 + i32.load + i32.eqz + if + i32.const 1264 + i32.const 2 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1276 + i32.const 1 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1268 + i32.load + f32.const 2.5 + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 0 + call $~lib/array/Array#__get + f32.const 2.5 + f32.ne + if + i32.const 0 + i32.const 1408 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store + i32.const 1360 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1408 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store + i32.const 0 + call $~lib/array/Array#__get + f64.const 1.25 + f64.ne + if + i32.const 0 + i32.const 1408 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store + i32.const 1 + call $~lib/array/Array#__get + f64.const 2.25 + f64.ne + if + i32.const 0 + i32.const 1408 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store + i32.const 1372 + i32.load + i32.eqz + if + i32.const 1360 + i32.const 3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store + i32.const 1372 + i32.const 1 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store + i32.const 1364 + i32.load + f64.const 2.25 + f64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store + i32.const 0 + call $~lib/array/Array#__get + f64.const 2.25 + f64.ne + if + i32.const 0 + i32.const 1408 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34784 + i32.const 34832 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat deleted file mode 100644 index 40be734cf3..0000000000 --- a/tests/compiler/std/static-array.untouched.wat +++ /dev/null @@ -1,2379 +0,0 @@ -(module - (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 $none_=>_none (func)) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 48) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00 \00\00\00 \00\00\00\08\00\00\00\02\00\00\00") - (data (i32.const 80) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 112) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00`\00\00\00`\00\00\00\10\00\00\00\02\00\00\00") - (data (i32.const 144) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\c0?\00\00 @") - (data (i32.const 176) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\a0\00\00\00\a0\00\00\00\08\00\00\00\02\00\00\00") - (data (i32.const 208) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\f4?\00\00\00\00\00\00\02@") - (data (i32.const 240) "\10\00\00\00\01\00\00\00\06\00\00\00\10\00\00\00\e0\00\00\00\e0\00\00\00\10\00\00\00\02\00\00\00") - (data (i32.const 272) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 336) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 400) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 448) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 496) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") - (table $0 1 funcref) - (global $std/static-array/i i32 (i32.const 64)) - (global $std/static-array/I i32 (i32.const 128)) - (global $std/static-array/f i32 (i32.const 192)) - (global $std/static-array/F i32 (i32.const 256)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 544)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/stub/__realloc (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.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 512 - i32.const 41 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.set $2 - local.get $2 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.load offset=4 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 512 - i32.const 44 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - i32.add - global.get $~lib/rt/stub/offset - i32.eq - local.set $4 - local.get $1 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - local.get $1 - local.get $3 - i32.gt_u - if - local.get $4 - if - local.get $1 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - local.get $0 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - local.get $5 - i32.store - else - local.get $5 - local.tee $6 - local.get $3 - i32.const 1 - i32.shl - local.tee $7 - local.get $6 - local.get $7 - i32.gt_u - select - local.get $2 - i32.load offset=8 - call $~lib/rt/stub/__alloc - local.set $6 - local.get $6 - local.get $0 - local.get $2 - i32.load offset=12 - call $~lib/memory/memory.copy - local.get $6 - local.tee $0 - i32.const 16 - i32.sub - local.set $2 - end - else - local.get $4 - if - local.get $0 - local.get $5 - i32.add - global.set $~lib/rt/stub/offset - local.get $2 - local.get $5 - i32.store - end - end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=8 - local.set $3 - local.get $1 - local.get $3 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 464 - i32.const 416 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $4 - local.get $1 - local.get $2 - i32.shl - local.set $5 - local.get $4 - local.get $5 - call $~lib/rt/stub/__realloc - local.set $6 - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $5 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $6 - local.get $4 - i32.ne - if - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.store offset=8 - end - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 352 - i32.const 416 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 352 - i32.const 416 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 f32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - f32.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 352 - i32.const 416 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 352 - i32.const 416 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 f64) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - f64.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 352 - i32.const 416 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $start:std/static-array - (local $0 i32) - (local $1 i32) - global.get $std/static-array/i - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/i - i32.const 0 - call $~lib/array/Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 7 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/i - i32.const 1 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - global.get $std/static-array/i - i32.const 0 - i32.const 2 - call $~lib/array/Array#__set - global.get $std/static-array/i - i32.const 0 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/I - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/I - i32.const 0 - call $~lib/array/Array#__get - i64.const 3 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/I - i32.const 1 - call $~lib/array/Array#__get - i64.const 4 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/I - i32.const 0 - i64.const 4 - call $~lib/array/Array#__set - global.get $std/static-array/I - i32.const 0 - call $~lib/array/Array#__get - i64.const 4 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/f - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/f - i32.const 0 - call $~lib/array/Array#__get - f32.const 1.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/f - i32.const 1 - call $~lib/array/Array#__get - f32.const 2.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/f - i32.const 0 - f32.const 2.5 - call $~lib/array/Array#__set - global.get $std/static-array/f - i32.const 0 - call $~lib/array/Array#__get - f32.const 2.5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/F - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/F - i32.const 0 - call $~lib/array/Array#__get - f64.const 1.25 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/F - i32.const 1 - call $~lib/array/Array#__get - f64.const 2.25 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/static-array/F - i32.const 0 - f64.const 2.25 - call $~lib/array/Array#__set - global.get $std/static-array/F - i32.const 0 - call $~lib/array/Array#__get - f64.const 2.25 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/static-array - ) -) diff --git a/tests/compiler/std/staticarray.debug.wat b/tests/compiler/std/staticarray.debug.wat new file mode 100644 index 0000000000..65ff72d2fc --- /dev/null +++ b/tests/compiler/std/staticarray.debug.wat @@ -0,0 +1,10344 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32))) + (type $7 (func)) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $11 (func (param i32 i32 i32 i32 i32))) + (type $12 (func (param i32 i32 i64) (result i32))) + (type $13 (func (param i32 i32 i32 i32 i32 i32))) + (type $14 (func (param i32 f64 i32) (result i32))) + (type $15 (func (param i32 f32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $std/staticarray/arr1 i32 (i32.const 32)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $std/staticarray/arr2 i32 (i32.const 256)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $std/staticarray/arr3 (mut i32) (i32.const 0)) + (global $std/staticarray/arr4 (mut i32) (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $std/staticarray/maxVal (mut i32) (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/rt/__rtti_base i32 (i32.const 2864)) + (global $~lib/memory/__data_end i32 (i32.const 2936)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35704)) + (global $~lib/memory/__heap_base i32 (i32.const 35704)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00") + (data $3 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 236) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $5 (i32.const 268) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00") + (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $7 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 572) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 636) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $14 (i32.const 684) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00\00\00\00\00") + (data $15 (i32.const 732) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $16 (i32.const 780) "\1c\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") + (data $17 (i32.const 812) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $18 (i32.const 844) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 876) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\a0\03\00\00\c0\03\00\00\00\00\00\00") + (data $23 (i32.const 1004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 1068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00n\00t\00\00\00\00\00\00\00") + (data $26 (i32.const 1100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00b\00i\00s\00o\00n\00\00\00") + (data $27 (i32.const 1132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00c\00a\00m\00e\00l\00\00\00") + (data $28 (i32.const 1164) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00d\00u\00c\00k\00\00\00\00\00") + (data $29 (i32.const 1196) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00e\00l\00e\00p\00h\00a\00n\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 1244) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00@\04\00\00`\04\00\00\80\04\00\00\a0\04\00\00\c0\04\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 1292) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 1420) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00@\04\00\00`\04\00\00\80\04\00\00\a0\04\00\00\c0\04\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 1468) "\1c\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") + (data $34 (i32.const 1500) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\00o\00o\00\00\00\00\00\00\00") + (data $35 (i32.const 1532) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\f0\05\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 1564) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00@\04\00\00`\04\00\00\80\04\00\00\a0\04\00\00\c0\04\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 1612) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f\00\00\00\00") + (data $38 (i32.const 1644) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") + (data $39 (i32.const 1676) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\02\00\00\00\t\00\00\00\t\00\00\00") + (data $40 (i32.const 1708) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 1756) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00F\00i\00r\00e\00\00\00\00\00") + (data $42 (i32.const 1788) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00i\00r\00\00\00\00\00\00\00") + (data $43 (i32.const 1820) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00W\00a\00t\00e\00r\00\00\00") + (data $44 (i32.const 1852) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\0c\00\00\00\f0\06\00\00\10\07\00\000\07\00\00") + (data $45 (i32.const 1884) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $46 (i32.const 1916) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $47 (i32.const 1948) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00F\00i\00r\00e\00,\00A\00i\00r\00,\00W\00a\00t\00e\00r\00") + (data $48 (i32.const 1996) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00F\00i\00r\00e\00A\00i\00r\00W\00a\00t\00e\00r\00\00\00\00\00") + (data $49 (i32.const 2044) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $50 (i32.const 2076) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00F\00i\00r\00e\00-\00A\00i\00r\00-\00W\00a\00t\00e\00r\00") + (data $51 (i32.const 2124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00 \00+\00 \00\00\00\00\00\00\00") + (data $52 (i32.const 2156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00F\00i\00r\00e\00 \00+\00 \00A\00i\00r\00 \00+\00 \00W\00a\00t\00e\00r\00\00\00\00\00\00\00\00\00") + (data $53 (i32.const 2220) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $54 (i32.const 2252) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $55 (i32.const 2284) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 2332) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data $57 (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $58 (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\r\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $61 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $62 (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $66 (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $67 (i32.const 2684) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $68 (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $69 (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $70 (i32.const 2780) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $71 (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $72 (i32.const 2864) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00$\t\00\00 \00\00\00\04A\00\00\02\t\00\00\04A\00\00\02A\00\00$\1a\00\00$\19\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 15 15 funcref) + (elem $0 (i32.const 1) $start:std/staticarray~anonymous|0 $start:std/staticarray~anonymous|1 $start:std/staticarray~anonymous|2 $start:std/staticarray~anonymous|3 $start:std/staticarray~anonymous|4 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $start:std/staticarray~anonymous|7 $start:std/staticarray~anonymous|8 $start:std/staticarray~anonymous|9 $start:std/staticarray~anonymous|10 $start:std/staticarray~anonymous|11 $start:std/staticarray~anonymous|12 $~lib/util/sort/COMPARATOR~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/staticarray/StaticArray#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 2 + i32.shr_u + return + ) + (func $~lib/staticarray/StaticArray#__uset (param $this i32) (param $index i32) (param $value i32) + local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + ) + (func $~lib/rt/common/OBJECT#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 64 + i32.const 512 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 384 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 320 + i32.const 592 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 592 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 320 + i32.const 384 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $std/staticarray/test (result i32) + (local $0 i32) + i32.const 12 + i32.const 4 + i32.const 288 + call $~lib/rt/__newBuffer + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 384 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/staticarray/StaticArray#__uset (param $this i32) (param $index i32) (param $value i32) + local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 2 + i32.shr_u + return + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/staticarray/StaticArray#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 3 + i32.shr_u + return + ) + (func $~lib/staticarray/StaticArray#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 2 + i32.shr_u + return + ) + (func $~lib/util/bytes/FILL (param $ptr i32) (param $len i32) (param $value i32) (param $start i32) (param $end 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.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $start + i32.add + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + else + local.get $start + local.tee $7 + local.get $len + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $start + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end + i32.add + local.tee $9 + i32.const 0 + local.tee $10 + local.get $9 + local.get $10 + i32.gt_u + select + else + local.get $end + local.tee $11 + local.get $len + local.tee $12 + local.get $11 + local.get $12 + i32.lt_s + select + end + local.set $end + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 1 + drop + local.get $value + i32.const 0 + i32.eq + local.get $value + i32.const -1 + i32.eq + i32.or + if + local.get $start + local.get $end + i32.lt_s + if + local.get $ptr + local.get $start + i32.const 2 + i32.shl + i32.add + local.get $value + local.get $end + local.get $start + i32.sub + i32.const 2 + i32.shl + memory.fill + end + return + end + loop $for-loop|0 + local.get $start + local.get $end + i32.lt_s + if + local.get $ptr + local.get $start + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $start + i32.const 1 + i32.add + local.set $start + br $for-loop|0 + end + end + ) + (func $~lib/util/bytes/REVERSE (param $ptr i32) (param $len i32) + (local $i i32) + (local $tail i32) + (local $hlen i32) + (local $front i32) + (local $back i32) + (local $temp i32) + local.get $len + i32.const 1 + i32.gt_u + if + i32.const 0 + local.set $i + local.get $len + i32.const 1 + i32.shr_u + local.set $hlen + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + local.get $len + i32.const 1 + i32.sub + local.set $tail + loop $while-continue|0 + local.get $i + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $front + local.get $ptr + local.get $tail + local.get $i + i32.sub + i32.const 2 + i32.shl + i32.add + local.set $back + local.get $front + i32.load + local.set $temp + local.get $front + local.get $back + i32.load + i32.store + local.get $back + local.get $temp + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $while-continue|0 + end + end + end + ) + (func $start:std/staticarray~anonymous|0 (param $x i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $x + i32.const 1 + i32.add + ) + (func $start:std/staticarray~anonymous|1 (param $x i32) (param $$1 i32) (param $$2 i32) + (local $3 i32) + (local $4 i32) + global.get $std/staticarray/maxVal + local.tee $3 + local.get $x + local.tee $4 + local.get $3 + local.get $4 + i32.gt_s + select + global.set $std/staticarray/maxVal + ) + (func $start:std/staticarray~anonymous|2 (param $x i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $x + i32.const 2 + i32.ge_s + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $start:std/staticarray~anonymous|3 (param $x i32) (param $y i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $x + local.get $y + i32.add + ) + (func $start:std/staticarray~anonymous|4 (param $x i32) (param $y i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $x + local.get $y + i32.add + ) + (func $start:std/staticarray~anonymous|5 (param $x i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $x + i32.const 2 + i32.eq + ) + (func $start:std/staticarray~anonymous|6 (param $x i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $x + i32.const 4 + i32.eq + ) + (func $start:std/staticarray~anonymous|7 (param $x i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $x + i32.const 3 + i32.le_s + ) + (func $start:std/staticarray~anonymous|8 (param $x i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $x + i32.const 3 + i32.gt_s + ) + (func $start:std/staticarray~anonymous|9 (param $x i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $x + i32.const 2 + i32.eq + ) + (func $start:std/staticarray~anonymous|10 (param $x i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $x + i32.const 4 + i32.eq + ) + (func $start:std/staticarray~anonymous|11 (param $x i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $x + i32.const 2 + i32.eq + ) + (func $start:std/staticarray~anonymous|12 (param $x i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $x + i32.const 4 + i32.eq + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $2) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $2) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $2) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + i32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $2) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $2) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $2) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/nodePower (param $left i32) (param $right i32) (param $startA i32) (param $startB i32) (param $endB i32) (result i32) + (local $n i64) + (local $s i32) + (local $l i32) + (local $r i32) + (local $a i64) + (local $b i64) + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + i64.extend_i32_u + local.set $n + local.get $startB + local.get $left + i32.const 1 + i32.shl + i32.sub + local.set $s + local.get $startA + local.get $s + i32.add + local.set $l + local.get $endB + local.get $s + i32.add + i32.const 1 + i32.add + local.set $r + local.get $l + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $n + i64.div_u + local.set $a + local.get $r + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $n + i64.div_u + local.set $b + local.get $a + local.get $b + i64.xor + i32.wrap_i64 + i32.clz + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $2) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.sub + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/staticarray/arr1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr4 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 656 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1312 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/staticarray/StaticArray#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + i32.const 1 + drop + local.get $this + local.set $cur + local.get $cur + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + ) + (func $~lib/staticarray/StaticArray~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + i32.const 1 + drop + local.get $this + local.set $cur + local.get $cur + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/array/Array<~lib/string/String> + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $std/staticarray/Ref + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $~lib/array/Array $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void> $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + unreachable + ) + (func $~start + call $start:std/staticarray + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35728 + i32.const 35776 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/staticarray/StaticArray#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u + if + i32.const 64 + i32.const 128 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/staticarray/StaticArray#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u + if + i32.const 64 + i32.const 128 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + local.get $value + call $~lib/staticarray/StaticArray#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/staticarray/Ref#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/staticarray/StaticArray.fromArray (param $source i32) (result i32) + (local $length i32) + (local $outSize i32) + (local $out i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $source + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $length + local.get $length + i32.const 2 + i32.shl + local.set $outSize + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + i32.const 0 + drop + local.get $out + local.get $source + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $outSize + memory.copy + local.get $out + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 64 + i32.const 752 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> (param $this i32) (param $other i32) (result i32) + (local $sourceLen i32) + (local $otherLen i32) + (local $outLen i32) + (local $sourceSize i32) + (local $out i32) + (local $outStart i32) + (local $otherStart i32) + (local $thisStart i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/staticarray/StaticArray#get:length + local.set $sourceLen + local.get $other + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/staticarray/StaticArray#get:length + local.set $otherLen + local.get $sourceLen + local.get $otherLen + i32.add + local.set $outLen + local.get $outLen + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 656 + i32.const 128 + i32.const 178 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $sourceLen + i32.const 2 + i32.shl + local.set $sourceSize + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $out + i32.store offset=4 + i32.const 0 + drop + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $outLen + i32.const 2 + i32.shl + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.set $outStart + local.get $other + local.set $otherStart + local.get $this + local.set $thisStart + i32.const 0 + drop + local.get $outStart + local.get $thisStart + local.get $sourceSize + memory.copy + local.get $outStart + local.get $sourceSize + i32.add + local.get $otherStart + local.get $otherLen + i32.const 2 + i32.shl + memory.copy + local.get $out + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/staticarray/StaticArray<~lib/string/String>> (param $this i32) (param $other i32) (result i32) + (local $sourceLen i32) + (local $otherLen i32) + (local $outLen i32) + (local $sourceSize i32) + (local $out i32) + (local $outStart i32) + (local $otherStart i32) + (local $thisStart i32) + (local $offset i32) + (local $ref i32) + (local $otherSize i32) + (local $offset|13 i32) + (local $ref|14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store + local.get $15 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.set $sourceLen + local.get $other + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store + local.get $15 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.set $otherLen + local.get $sourceLen + local.get $otherLen + i32.add + local.set $outLen + local.get $outLen + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 656 + i32.const 128 + i32.const 178 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $sourceLen + i32.const 2 + i32.shl + local.set $sourceSize + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $out + i32.store offset=4 + i32.const 0 + drop + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $outLen + i32.const 2 + i32.shl + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.set $outStart + local.get $other + local.set $otherStart + local.get $this + local.set $thisStart + i32.const 1 + drop + i32.const 0 + local.set $offset + loop $for-loop|0 + local.get $offset + local.get $sourceSize + i32.lt_u + if + local.get $thisStart + local.get $offset + i32.add + i32.load + local.set $ref + local.get $outStart + local.get $offset + i32.add + local.get $ref + i32.store + local.get $out + local.get $ref + i32.const 1 + call $~lib/rt/itcms/__link + local.get $offset + i32.const 4 + i32.add + local.set $offset + br $for-loop|0 + end + end + local.get $outStart + local.get $sourceSize + i32.add + local.set $outStart + local.get $otherLen + i32.const 2 + i32.shl + local.set $otherSize + i32.const 0 + local.set $offset|13 + loop $for-loop|1 + local.get $offset|13 + local.get $otherSize + i32.lt_u + if + local.get $otherStart + local.get $offset|13 + i32.add + i32.load + local.set $ref|14 + local.get $outStart + local.get $offset|13 + i32.add + local.get $ref|14 + i32.store + local.get $out + local.get $ref|14 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $offset|13 + i32.const 4 + i32.add + local.set $offset|13 + br $for-loop|1 + end + end + local.get $out + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $length 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 $sourceStart i32) + (local $size i32) + (local $out i32) + (local $outStart i32) + (local $off i32) + (local $ref i32) + (local $20 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store + local.get $20 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.set $length + local.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $start + local.get $length + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $start + local.tee $6 + local.get $length + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $start + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $end + local.get $length + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + else + local.get $end + local.tee $10 + local.get $length + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $end + local.get $end + local.get $start + i32.sub + local.tee $12 + i32.const 0 + local.tee $13 + local.get $12 + local.get $13 + i32.gt_s + select + local.set $length + local.get $this + local.get $start + i32.const 2 + i32.shl + i32.add + local.set $sourceStart + local.get $length + i32.const 2 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $out + i32.store offset=4 + i32.const 0 + drop + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.set $outStart + i32.const 1 + drop + i32.const 0 + local.set $off + loop $while-continue|0 + local.get $off + local.get $size + i32.lt_u + if + local.get $sourceStart + local.get $off + i32.add + i32.load + local.set $ref + local.get $outStart + local.get $off + i32.add + local.get $ref + i32.store + local.get $outStart + local.get $ref + i32.const 1 + call $~lib/rt/itcms/__link + local.get $off + i32.const 4 + i32.add + local.set $off + br $while-continue|0 + end + end + local.get $out + local.set $20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $20 + return + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $start + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $start + local.get $end + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.ge_u + if + i32.const 64 + i32.const 128 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 1312 + i32.const 128 + i32.const 82 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array<~lib/string/String>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<~lib/string/String>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> (param $this i32) (param $other i32) (result i32) + (local $sourceLen i32) + (local $otherLen i32) + (local $outLen i32) + (local $sourceSize i32) + (local $out i32) + (local $outStart i32) + (local $otherStart i32) + (local $thisStart i32) + (local $offset i32) + (local $ref i32) + (local $otherSize i32) + (local $offset|13 i32) + (local $ref|14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store + local.get $15 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.set $sourceLen + local.get $other + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store + local.get $15 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $otherLen + local.get $sourceLen + local.get $otherLen + i32.add + local.set $outLen + local.get $outLen + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 656 + i32.const 128 + i32.const 178 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $sourceLen + i32.const 2 + i32.shl + local.set $sourceSize + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $out + i32.store offset=4 + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $outLen + i32.const 2 + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $out + i32.store offset=4 + local.get $out + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store + local.get $15 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $outStart + local.get $other + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store + local.get $15 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $otherStart + local.get $this + local.set $thisStart + i32.const 1 + drop + i32.const 0 + local.set $offset + loop $for-loop|0 + local.get $offset + local.get $sourceSize + i32.lt_u + if + local.get $thisStart + local.get $offset + i32.add + i32.load + local.set $ref + local.get $outStart + local.get $offset + i32.add + local.get $ref + i32.store + local.get $out + local.get $ref + i32.const 1 + call $~lib/rt/itcms/__link + local.get $offset + i32.const 4 + i32.add + local.set $offset + br $for-loop|0 + end + end + local.get $outStart + local.get $sourceSize + i32.add + local.set $outStart + local.get $otherLen + i32.const 2 + i32.shl + local.set $otherSize + i32.const 0 + local.set $offset|13 + loop $for-loop|1 + local.get $offset|13 + local.get $otherSize + i32.lt_u + if + local.get $otherStart + local.get $offset|13 + i32.add + i32.load + local.set $ref|14 + local.get $outStart + local.get $offset|13 + i32.add + local.get $ref|14 + i32.store + local.get $out + local.get $ref|14 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $offset|13 + i32.const 4 + i32.add + local.set $offset|13 + br $for-loop|1 + end + end + local.get $out + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#indexOf (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (local $length i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.set $length + local.get $length + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $fromIndex + local.get $length + i32.ge_s + end + if + i32.const -1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $length + local.get $fromIndex + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $fromIndex + end + loop $while-continue|0 + local.get $fromIndex + local.get $length + i32.lt_s + if + local.get $this + local.get $fromIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $value + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String.__eq + if + local.get $fromIndex + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end + end + i32.const -1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#includes (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + drop + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $fromIndex + call $~lib/staticarray/StaticArray<~lib/string/String>#indexOf + i32.const 0 + i32.ge_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/staticarray/StaticArray#includes (param $this i32) (param $value f64) (param $fromIndex i32) (result i32) + (local $length i32) + (local $4 i32) + (local $5 i32) + (local $elem f64) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/staticarray/StaticArray#get:length + local.set $length + local.get $length + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $fromIndex + local.get $length + i32.ge_s + end + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $length + local.get $fromIndex + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $fromIndex + end + loop $while-continue|0 + local.get $fromIndex + local.get $length + i32.lt_s + if + local.get $this + local.get $fromIndex + i32.const 3 + i32.shl + i32.add + f64.load + local.set $elem + local.get $elem + local.get $value + f64.eq + if (result i32) + i32.const 1 + else + local.get $elem + local.get $elem + f64.ne + local.get $value + local.get $value + f64.ne + i32.and + end + if + i32.const 1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end + end + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/staticarray/StaticArray#includes (param $this i32) (param $value f32) (param $fromIndex i32) (result i32) + (local $length i32) + (local $4 i32) + (local $5 i32) + (local $elem f32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/staticarray/StaticArray#get:length + local.set $length + local.get $length + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $fromIndex + local.get $length + i32.ge_s + end + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $length + local.get $fromIndex + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $fromIndex + end + loop $while-continue|0 + local.get $fromIndex + local.get $length + i32.lt_s + if + local.get $this + local.get $fromIndex + i32.const 2 + i32.shl + i32.add + f32.load + local.set $elem + local.get $elem + local.get $value + f32.eq + if (result i32) + i32.const 1 + else + local.get $elem + local.get $elem + f32.ne + local.get $value + local.get $value + f32.ne + i32.and + end + if + i32.const 1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end + end + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/staticarray/StaticArray#indexOf (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (local $length i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/staticarray/StaticArray#get:length + local.set $length + local.get $length + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $fromIndex + local.get $length + i32.ge_s + end + if + i32.const -1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $length + local.get $fromIndex + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $fromIndex + end + loop $while-continue|0 + local.get $fromIndex + local.get $length + i32.lt_s + if + local.get $this + local.get $fromIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.get $value + i32.eq + if + local.get $fromIndex + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $fromIndex + i32.const 1 + i32.add + local.set $fromIndex + br $while-continue|0 + end + end + i32.const -1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/staticarray/StaticArray#lastIndexOf (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (local $length i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/staticarray/StaticArray#get:length + local.set $length + local.get $length + i32.const 0 + i32.eq + if + i32.const -1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $fromIndex + i32.const 0 + i32.lt_s + if + local.get $length + local.get $fromIndex + i32.add + local.set $fromIndex + else + local.get $fromIndex + local.get $length + i32.ge_s + if + local.get $length + i32.const 1 + i32.sub + local.set $fromIndex + end + end + loop $while-continue|0 + local.get $fromIndex + i32.const 0 + i32.ge_s + if + local.get $this + local.get $fromIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.get $value + i32.eq + if + local.get $fromIndex + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $fromIndex + i32.const 1 + i32.sub + local.set $fromIndex + br $while-continue|0 + end + end + i32.const -1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/staticarray/StaticArray#lastIndexOf@varargs (param $this i32) (param $value i32) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/staticarray/StaticArray#get:length + local.set $fromIndex + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $value + local.get $fromIndex + call $~lib/staticarray/StaticArray#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/util/string/joinStringArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $4 i32) + (local $estLen i32) + (local $value i32) + (local $i i32) + (local $offset i32) + (local $sepLen i32) + (local $result i32) + (local $i|11 i32) + (local $valueLen i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 1904 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + end + local.get $lastIndex + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + i32.load + local.tee $4 + i32.store + local.get $4 + if (result i32) + local.get $4 + else + i32.const 1904 + end + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + end + i32.const 0 + local.set $estLen + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne + if + local.get $estLen + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + i32.add + local.set $estLen + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $offset + local.get $separator + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + local.set $sepLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + local.get $sepLen + local.get $lastIndex + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=12 + i32.const 0 + local.set $i|11 + loop $for-loop|1 + local.get $i|11 + local.get $lastIndex + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i|11 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne + if + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + local.set $valueLen + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + local.get $valueLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $valueLen + i32.add + local.set $offset + end + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i|11 + i32.const 1 + i32.add + local.set $i|11 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + memory.copy + end + local.get $result + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 1 + drop + local.get $this + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinStringArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1936 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/staticarray/StaticArray#fill (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/staticarray/StaticArray#get:length + local.get $value + local.get $start + local.get $end + call $~lib/util/bytes/FILL + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/staticarray/StaticArray#fill@varargs (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $start + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $value + local.get $start + local.get $end + call $~lib/staticarray/StaticArray#fill + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/staticarray/StaticArray#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/staticarray/StaticArray#get:length + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/staticarray/StaticArray#copyWithin (param $this i32) (param $target i32) (param $start i32) (param $end i32) (result i32) + (local $ptr i32) + (local $len i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $to i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $from i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $last i32) + (local $23 i32) + (local $24 i32) + (local $count i32) + (local $26 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $ptr + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + local.get $26 + i32.store + local.get $26 + call $~lib/staticarray/StaticArray#get:length + local.set $len + local.get $end + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $end + local.get $target + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $target + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + else + local.get $target + local.tee $10 + local.get $len + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $to + local.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $start + i32.add + local.tee $13 + i32.const 0 + local.tee $14 + local.get $13 + local.get $14 + i32.gt_s + select + else + local.get $start + local.tee $15 + local.get $len + local.tee $16 + local.get $15 + local.get $16 + i32.lt_s + select + end + local.set $from + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end + i32.add + local.tee $18 + i32.const 0 + local.tee $19 + local.get $18 + local.get $19 + i32.gt_s + select + else + local.get $end + local.tee $20 + local.get $len + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + end + local.set $last + local.get $last + local.get $from + i32.sub + local.tee $23 + local.get $len + local.get $to + i32.sub + local.tee $24 + local.get $23 + local.get $24 + i32.lt_s + select + local.set $count + local.get $ptr + local.get $to + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $from + i32.const 2 + i32.shl + i32.add + local.get $count + i32.const 2 + i32.shl + memory.copy + local.get $this + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 + return + ) + (func $~lib/staticarray/StaticArray#copyWithin@varargs (param $this i32) (param $target i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 2 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $target + local.get $start + local.get $end + call $~lib/staticarray/StaticArray#copyWithin + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/staticarray/StaticArray#map (param $this i32) (param $fn i32) (result i32) + (local $len i32) + (local $out i32) + (local $outStart i32) + (local $i i32) + (local $result i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/staticarray/StaticArray#get:length + local.set $len + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $out + i32.store offset=4 + local.get $out + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:dataStart + local.set $outStart + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $this + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + local.set $result + local.get $outStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $result + i32.store + i32.const 0 + drop + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/staticarray/StaticArray#forEach (param $this i32) (param $fn i32) + (local $i i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $i + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/staticarray/StaticArray#get:length + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $this + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $5) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 656 + i32.const 752 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 0 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/staticarray/StaticArray#filter (param $this i32) (param $fn i32) (result i32) + (local $result i32) + (local $i i32) + (local $len i32) + (local $value i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result + i32.store + i32.const 0 + local.set $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/staticarray/StaticArray#get:length + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $this + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + local.get $value + local.get $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + if + local.get $result + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $value + call $~lib/array/Array#push + drop + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $result + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/staticarray/StaticArray#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $acc i32) + (local $i i32) + (local $len i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $initialValue + local.set $acc + i32.const 0 + local.set $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/staticarray/StaticArray#get:length + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $acc + local.get $this + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 4 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $4) + local.set $acc + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $acc + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/staticarray/StaticArray#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $acc i32) + (local $i i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $initialValue + local.set $acc + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/staticarray/StaticArray#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $acc + local.get $this + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 4 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $4) + local.set $acc + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $acc + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/staticarray/StaticArray#some (param $this i32) (param $fn i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $i + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/staticarray/StaticArray#get:length + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $this + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + if + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/staticarray/StaticArray#every (param $this i32) (param $fn i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $i + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/staticarray/StaticArray#get:length + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $this + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + i32.eqz + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/staticarray/StaticArray#findIndex (param $this i32) (param $fn i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $i + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/staticarray/StaticArray#get:length + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $this + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + if + local.get $i + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const -1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/staticarray/StaticArray#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $i i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/staticarray/StaticArray#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $this + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 3 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $3) + if + local.get $i + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + i32.const -1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + i32.load + local.set $a + local.get $ptr + i32.load offset=4 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $2) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + i32.load offset=8 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $2) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store offset=8 + end + local.get $ptr + i32.load + local.set $a|7 + local.get $ptr + i32.load offset=4 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $2) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.0 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.0 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/staticarray/StaticArray#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/staticarray/StaticArray#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + i32.const 2848 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/staticarray/StaticArray#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $start:std/staticarray + (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) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 104 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 104 + memory.fill + global.get $std/staticarray/arr1 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr1 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr1 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + i32.const 4 + call $~lib/staticarray/StaticArray#__set + global.get $std/staticarray/arr1 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr1 + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtId + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr2 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr2 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr2 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + i32.const 4 + call $~lib/staticarray/StaticArray#__set + global.get $std/staticarray/arr2 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 464 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $std/staticarray/test + global.set $std/staticarray/arr3 + global.get $std/staticarray/arr3 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr3 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr3 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr3 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr3 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + i32.const 8 + call $~lib/staticarray/StaticArray#__set + global.get $std/staticarray/arr3 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $std/staticarray/test + global.set $std/staticarray/arr3 + global.get $std/staticarray/arr3 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + i32.const 0 + call $~lib/rt/__newBuffer + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $std/staticarray/Ref#constructor + call $~lib/staticarray/StaticArray#__uset + local.get $2 + i32.const 1 + i32.const 0 + call $std/staticarray/Ref#constructor + call $~lib/staticarray/StaticArray#__uset + local.get $2 + global.set $std/staticarray/arr4 + i32.const 0 + global.set $std/staticarray/arr3 + i32.const 0 + global.set $std/staticarray/arr4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/staticarray/StaticArray#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray#get:length + i32.lt_s + if + local.get $3 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + local.get $4 + call $~lib/staticarray/StaticArray#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 46 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 6 + i32.const 2 + i32.const 7 + i32.const 704 + call $~lib/rt/__newArray + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray.fromArray + local.tee $7 + i32.store offset=16 + local.get $7 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray#get:length + local.get $6 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + local.get $6 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $7 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + local.get $8 + call $~lib/staticarray/StaticArray#__get + local.get $6 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + local.get $8 + call $~lib/array/Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 58 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 7 + i32.const 800 + call $~lib/rt/__newArray + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray.fromArray + local.tee $7 + i32.store offset=16 + local.get $7 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + i32.const 832 + call $~lib/rt/__newBuffer + local.tee $11 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $11 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 4 + i32.const 4 + i32.const 864 + call $~lib/rt/__newBuffer + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> + local.tee $13 + i32.store offset=28 + local.get $13 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $11 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + i32.const 4 + i32.const 896 + call $~lib/rt/__newBuffer + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> + local.tee $13 + i32.store offset=28 + local.get $13 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray#get:length + local.get $11 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 71 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 8 + i32.const 992 + call $~lib/rt/__newBuffer + local.tee $16 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $16 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 4 + i32.const 8 + i32.const 1056 + call $~lib/rt/__newBuffer + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/staticarray/StaticArray<~lib/string/String>> + local.tee $18 + i32.store offset=36 + local.get $18 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 8 + i32.const 1264 + call $~lib/rt/__newBuffer + local.tee $20 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $20 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs + local.tee $21 + i32.store offset=44 + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.get $20 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $22 + loop $for-loop|2 + local.get $22 + local.get $20 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.lt_s + if + local.get $20 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=48 + local.get $52 + local.get $22 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=48 + local.get $52 + local.get $22 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 86 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $22 + i32.const 1 + i32.add + local.set $22 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $20 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + i32.const 3 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + local.tee $21 + i32.store offset=44 + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 90 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + i32.const 1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $20 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs + local.tee $21 + i32.store offset=44 + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.get $20 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 1 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $20 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + i32.const 50 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + local.tee $21 + i32.store offset=44 + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.get $20 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $20 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 100 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs + local.tee $21 + i32.store offset=44 + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 101 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $20 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs + local.tee $21 + i32.store offset=44 + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $20 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const -2 + i32.const -2 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + local.tee $21 + i32.store offset=44 + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $20 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + i32.const -2 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + local.tee $21 + i32.store offset=44 + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 112 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 8 + i32.const 1440 + call $~lib/rt/__newBuffer + local.tee $24 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $24 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + i32.const 2 + i32.const 9 + i32.const 1488 + call $~lib/rt/__newArray + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> + local.tee $26 + i32.store offset=56 + local.get $26 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + local.get $24 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $24 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + i32.const 2 + i32.const 9 + i32.const 1552 + call $~lib/rt/__newArray + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> + local.tee $26 + i32.store offset=56 + local.get $26 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + local.get $24 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 8 + i32.const 1584 + call $~lib/rt/__newBuffer + local.tee $29 + i32.store offset=60 + local.get $29 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1120 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 133 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $29 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1520 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 134 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $29 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1216 + i32.const 5 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $29 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1216 + i32.const -1 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.const 10 + i32.const 1632 + call $~lib/rt/__newBuffer + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/staticarray/StaticArray#includes + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 11 + i32.const 1664 + call $~lib/rt/__newBuffer + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + f32.const nan:0x400000 + i32.const 0 + call $~lib/staticarray/StaticArray#includes + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 139 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + i32.const 1696 + call $~lib/rt/__newBuffer + local.tee $33 + i32.store offset=64 + local.get $33 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + i32.const 0 + call $~lib/staticarray/StaticArray#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 145 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $33 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 7 + i32.const 0 + call $~lib/staticarray/StaticArray#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 146 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $33 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 9 + i32.const 2 + call $~lib/staticarray/StaticArray#indexOf + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $33 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + i32.const -1 + call $~lib/staticarray/StaticArray#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $33 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + i32.const -3 + call $~lib/staticarray/StaticArray#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + i32.const 1728 + call $~lib/rt/__newBuffer + local.tee $35 + i32.store offset=68 + local.get $35 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/staticarray/StaticArray#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $35 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 7 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/staticarray/StaticArray#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 156 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $35 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + i32.const 3 + call $~lib/staticarray/StaticArray#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 157 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $35 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + i32.const 2 + call $~lib/staticarray/StaticArray#lastIndexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 158 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $35 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + i32.const -2 + call $~lib/staticarray/StaticArray#lastIndexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 159 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $35 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + i32.const -1 + call $~lib/staticarray/StaticArray#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + i32.const 1872 + call $~lib/rt/__newBuffer + local.tee $37 + i32.store offset=72 + local.get $37 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + i32.const 1936 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $37 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + i32.const 1904 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2016 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 167 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $37 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + i32.const 2064 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 168 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $37 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + i32.const 2144 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2176 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 169 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $37 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=48 + local.get $52 + i32.const 1936 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + local.get $37 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=48 + local.get $52 + call $~lib/staticarray/StaticArray<~lib/string/String>#toString + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 170 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + i32.const 2240 + call $~lib/rt/__newBuffer + local.tee $39 + i32.store offset=76 + local.get $39 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + i32.const 1 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/staticarray/StaticArray#fill@varargs + drop + local.get $39 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 178 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $39 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 179 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + i32.const 2272 + call $~lib/rt/__newBuffer + local.tee $41 + i32.store offset=80 + local.get $41 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/staticarray/StaticArray#reverse + drop + local.get $41 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $41 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 188 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $41 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 189 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 4 + i32.const 2304 + call $~lib/rt/__newBuffer + local.tee $43 + i32.store offset=84 + local.get $43 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + i32.const 3 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/staticarray/StaticArray#copyWithin@varargs + drop + local.get $43 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 197 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $43 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $43 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 199 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $43 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 3 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $43 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 4 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 201 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + i32.const 2352 + call $~lib/rt/__newBuffer + local.tee $45 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $45 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2384 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray#map + local.tee $46 + i32.store offset=92 + local.get $46 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 210 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $46 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/array/Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 211 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $46 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + call $~lib/array/Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 212 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $45 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2416 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray#forEach + global.get $std/staticarray/maxVal + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 216 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $45 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2448 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray#filter + local.tee $47 + i32.store offset=96 + local.get $47 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 220 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $47 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 221 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $47 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/array/Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 222 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $45 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2480 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + i32.const 0 + call $~lib/staticarray/StaticArray#reduce + local.set $48 + local.get $48 + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 226 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $45 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2512 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + i32.const 0 + call $~lib/staticarray/StaticArray#reduceRight + local.set $49 + local.get $49 + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $45 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2544 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray#some + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 233 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $45 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2576 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray#some + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 234 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $45 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2608 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray#every + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $45 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2640 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray#every + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 238 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $45 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2672 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray#findIndex + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 241 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $45 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2704 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray#findIndex + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 242 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $45 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2736 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray#findLastIndex + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 245 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $45 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2768 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=24 + local.get $52 + call $~lib/staticarray/StaticArray#findLastIndex + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 246 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + i32.const 2800 + call $~lib/rt/__newBuffer + local.tee $51 + i32.store offset=100 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/staticarray/StaticArray#sort@varargs + drop + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 255 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 256 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 257 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 3 + call $~lib/staticarray/StaticArray#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 258 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 104 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/staticarray/StaticArray#constructor (param $this i32) (param $length i32) (result i32) + (local $outSize i32) + (local $out i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 656 + i32.const 128 + i32.const 51 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + i32.const 2 + i32.shl + local.set $outSize + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $out + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) +) diff --git a/tests/compiler/std/staticarray.json b/tests/compiler/std/staticarray.json index 59c251c705..b83788465e 100644 --- a/tests/compiler/std/staticarray.json +++ b/tests/compiler/std/staticarray.json @@ -1,7 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--explicitStart", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + ], + "asc_rtrace": true +} diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat deleted file mode 100644 index 9e5adce441..0000000000 --- a/tests/compiler/std/staticarray.optimized.wat +++ /dev/null @@ -1,1714 +0,0 @@ -(module - (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_=>_i32 (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_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 1056) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1120) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1184) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1248) "\0c\00\00\00\01\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 1280) "\0c\00\00\00\01\00\00\00\03\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07") - (data (i32.const 1312) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1360) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1424) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $std/staticarray/arr3 (mut i32) (i32.const 0)) - (global $std/staticarray/arr4 (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 2 - i32.shr_u - ) - (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - call $~lib/staticarray/StaticArray#get:length - i32.ge_u - if - i32.const 1072 - i32.const 1136 - i32.const 95 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) - i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray#get:length - i32.ge_u - if - i32.const 1072 - i32.const 1136 - i32.const 110 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1328 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1328 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1328 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1328 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1328 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1328 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1328 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1328 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1328 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1328 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1328 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1328 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1472 - local.set $1 - i32.const 1472 - i32.const 0 - i32.store - i32.const 3040 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1472 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1472 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1472 - i32.const 3056 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1472 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1328 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1328 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1328 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1328 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1073741808 - i32.ge_u - if - i32.const 1376 - i32.const 1328 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $3 - i32.const 16 - local.get $3 - i32.const 16 - i32.gt_u - select - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1328 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1328 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - call $~lib/rt/rtrace/onalloc - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/__alloc - local.set $1 - local.get $2 - if - local.get $1 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end - local.get $1 - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1472 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1440 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1440 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $std/staticarray/test (result i32) - i32.const 12 - i32.const 3 - i32.const 1296 - call $~lib/rt/__allocBuffer - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1472 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $start:std/staticarray - (local $0 i32) - i32.const 1040 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - call $~lib/staticarray/StaticArray#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - i32.const 4 - call $~lib/staticarray/StaticArray#__set - i32.const 1040 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1032 - i32.load - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1264 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1264 - call $~lib/staticarray/StaticArray#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1264 - i32.const 4 - call $~lib/staticarray/StaticArray#__set - i32.const 1264 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $std/staticarray/test - global.set $std/staticarray/arr3 - global.get $std/staticarray/arr3 - i32.const 0 - call $~lib/staticarray/StaticArray#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr3 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr3 - i32.const 2 - call $~lib/staticarray/StaticArray#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr3 - call $~lib/staticarray/StaticArray#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr3 - i32.const 8 - call $~lib/staticarray/StaticArray#__set - global.get $std/staticarray/arr3 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $std/staticarray/test - global.get $std/staticarray/arr3 - call $~lib/rt/pure/__release - global.set $std/staticarray/arr3 - global.get $std/staticarray/arr3 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 5 - i32.const 0 - call $~lib/rt/__allocBuffer - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 0 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $0 - global.set $std/staticarray/arr4 - global.get $std/staticarray/arr3 - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 0 - global.set $std/staticarray/arr3 - global.get $std/staticarray/arr4 - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 0 - global.set $std/staticarray/arr4 - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:std/staticarray - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.tee $3 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1440 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$7 - block $switch$1$case$4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 8 - i32.sub - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$7 $switch$1$default - end - local.get $2 - i32.load - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - local.get $2 - local.tee $1 - local.get $1 - i32.const 16 - i32.sub - i32.load offset=12 - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $4 - if - local.get $4 - call $~lib/rt/pure/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $3 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1440 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1440 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $3 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 1472 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) -) diff --git a/tests/compiler/std/staticarray.release.wat b/tests/compiler/std/staticarray.release.wat new file mode 100644 index 0000000000..f04e217e60 --- /dev/null +++ b/tests/compiler/std/staticarray.release.wat @@ -0,0 +1,8065 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32) (result i32))) + (type $7 (func (param i32) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i32 i64))) + (type $11 (func (param i32 i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $std/staticarray/arr3 (mut i32) (i32.const 0)) + (global $std/staticarray/arr4 (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $std/staticarray/maxVal (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36728)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $1 (i32.const 1068) "<") + (data $1.1 (i32.const 1080) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $2 (i32.const 1132) "<") + (data $2.1 (i32.const 1144) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data $3 (i32.const 1196) "<") + (data $3.1 (i32.const 1208) "\02\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data $4 (i32.const 1260) "\1c") + (data $4.1 (i32.const 1272) "\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $5 (i32.const 1292) "\1c") + (data $5.1 (i32.const 1304) "\04\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07") + (data $6 (i32.const 1324) "<") + (data $6.1 (i32.const 1336) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $7 (i32.const 1388) "<") + (data $7.1 (i32.const 1400) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $10 (i32.const 1516) ",") + (data $10.1 (i32.const 1528) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $12 (i32.const 1596) "<") + (data $12.1 (i32.const 1608) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $13 (i32.const 1660) ",") + (data $13.1 (i32.const 1672) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $14 (i32.const 1708) ",") + (data $14.1 (i32.const 1720) "\01\00\00\00\18\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") + (data $15 (i32.const 1756) ",") + (data $15.1 (i32.const 1768) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $16 (i32.const 1804) "\1c") + (data $16.1 (i32.const 1816) "\01") + (data $17 (i32.const 1836) "\1c") + (data $17.1 (i32.const 1848) "\04\00\00\00\08\00\00\00\01\00\00\00\02") + (data $18 (i32.const 1868) "\1c") + (data $18.1 (i32.const 1880) "\04\00\00\00\04\00\00\00\01") + (data $19 (i32.const 1900) "\1c") + (data $19.1 (i32.const 1912) "\04") + (data $20 (i32.const 1932) "\1c") + (data $20.1 (i32.const 1944) "\02\00\00\00\02\00\00\001") + (data $21 (i32.const 1964) "\1c") + (data $21.1 (i32.const 1976) "\02\00\00\00\02\00\00\002") + (data $22 (i32.const 1996) "\1c") + (data $22.1 (i32.const 2008) "\08\00\00\00\08\00\00\00\a0\07\00\00\c0\07") + (data $23 (i32.const 2028) "\1c") + (data $23.1 (i32.const 2040) "\02\00\00\00\02\00\00\003") + (data $24 (i32.const 2060) "\1c") + (data $24.1 (i32.const 2072) "\08\00\00\00\04\00\00\00\00\08") + (data $25 (i32.const 2092) "\1c") + (data $25.1 (i32.const 2104) "\02\00\00\00\06\00\00\00a\00n\00t") + (data $26 (i32.const 2124) "\1c") + (data $26.1 (i32.const 2136) "\02\00\00\00\n\00\00\00b\00i\00s\00o\00n") + (data $27 (i32.const 2156) "\1c") + (data $27.1 (i32.const 2168) "\02\00\00\00\n\00\00\00c\00a\00m\00e\00l") + (data $28 (i32.const 2188) "\1c") + (data $28.1 (i32.const 2200) "\02\00\00\00\08\00\00\00d\00u\00c\00k") + (data $29 (i32.const 2220) ",") + (data $29.1 (i32.const 2232) "\02\00\00\00\10\00\00\00e\00l\00e\00p\00h\00a\00n\00t") + (data $30 (i32.const 2268) ",") + (data $30.1 (i32.const 2280) "\08\00\00\00\14\00\00\00@\08\00\00`\08\00\00\80\08\00\00\a0\08\00\00\c0\08") + (data $31 (i32.const 2316) "|") + (data $31.1 (i32.const 2328) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $32 (i32.const 2444) ",") + (data $32.1 (i32.const 2456) "\08\00\00\00\14\00\00\00@\08\00\00`\08\00\00\80\08\00\00\a0\08\00\00\c0\08") + (data $33 (i32.const 2492) "\1c") + (data $33.1 (i32.const 2504) "\01") + (data $34 (i32.const 2524) "\1c") + (data $34.1 (i32.const 2536) "\02\00\00\00\06\00\00\00f\00o\00o") + (data $35 (i32.const 2556) "\1c") + (data $35.1 (i32.const 2568) "\01\00\00\00\04\00\00\00\f0\t") + (data $36 (i32.const 2588) ",") + (data $36.1 (i32.const 2600) "\08\00\00\00\14\00\00\00@\08\00\00`\08\00\00\80\08\00\00\a0\08\00\00\c0\08") + (data $37 (i32.const 2636) "\1c") + (data $37.1 (i32.const 2648) "\n\00\00\00\08") + (data $37.2 (i32.const 2662) "\f8\7f") + (data $38 (i32.const 2668) "\1c") + (data $38.1 (i32.const 2680) "\0b\00\00\00\04\00\00\00\00\00\c0\7f") + (data $39 (i32.const 2700) "\1c") + (data $39.1 (i32.const 2712) "\04\00\00\00\0c\00\00\00\02\00\00\00\t\00\00\00\t") + (data $40 (i32.const 2732) ",") + (data $40.1 (i32.const 2744) "\04\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02") + (data $41 (i32.const 2780) "\1c") + (data $41.1 (i32.const 2792) "\02\00\00\00\08\00\00\00F\00i\00r\00e") + (data $42 (i32.const 2812) "\1c") + (data $42.1 (i32.const 2824) "\02\00\00\00\06\00\00\00A\00i\00r") + (data $43 (i32.const 2844) "\1c") + (data $43.1 (i32.const 2856) "\02\00\00\00\n\00\00\00W\00a\00t\00e\00r") + (data $44 (i32.const 2876) "\1c") + (data $44.1 (i32.const 2888) "\08\00\00\00\0c\00\00\00\f0\n\00\00\10\0b\00\000\0b") + (data $45 (i32.const 2908) "\1c") + (data $45.1 (i32.const 2920) "\02") + (data $46 (i32.const 2940) "\1c") + (data $46.1 (i32.const 2952) "\02\00\00\00\02\00\00\00,") + (data $47 (i32.const 2972) ",") + (data $47.1 (i32.const 2984) "\02\00\00\00\1c\00\00\00F\00i\00r\00e\00,\00A\00i\00r\00,\00W\00a\00t\00e\00r") + (data $48 (i32.const 3020) ",") + (data $48.1 (i32.const 3032) "\02\00\00\00\18\00\00\00F\00i\00r\00e\00A\00i\00r\00W\00a\00t\00e\00r") + (data $49 (i32.const 3068) "\1c") + (data $49.1 (i32.const 3080) "\02\00\00\00\02\00\00\00-") + (data $50 (i32.const 3100) ",") + (data $50.1 (i32.const 3112) "\02\00\00\00\1c\00\00\00F\00i\00r\00e\00-\00A\00i\00r\00-\00W\00a\00t\00e\00r") + (data $51 (i32.const 3148) "\1c") + (data $51.1 (i32.const 3160) "\02\00\00\00\06\00\00\00 \00+\00 ") + (data $52 (i32.const 3180) "<") + (data $52.1 (i32.const 3192) "\02\00\00\00$\00\00\00F\00i\00r\00e\00 \00+\00 \00A\00i\00r\00 \00+\00 \00W\00a\00t\00e\00r") + (data $53 (i32.const 3244) "\1c") + (data $53.1 (i32.const 3256) "\04\00\00\00\08") + (data $54 (i32.const 3276) "\1c") + (data $54.1 (i32.const 3288) "\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $55 (i32.const 3308) ",") + (data $55.1 (i32.const 3320) "\04\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $56 (i32.const 3356) "\1c") + (data $56.1 (i32.const 3368) "\04\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data $57 (i32.const 3388) "\1c") + (data $57.1 (i32.const 3400) "\0c\00\00\00\08\00\00\00\01") + (data $58 (i32.const 3420) "\1c") + (data $58.1 (i32.const 3432) "\r\00\00\00\08\00\00\00\02") + (data $59 (i32.const 3452) "\1c") + (data $59.1 (i32.const 3464) "\0e\00\00\00\08\00\00\00\03") + (data $60 (i32.const 3484) "\1c") + (data $60.1 (i32.const 3496) "\0f\00\00\00\08\00\00\00\04") + (data $61 (i32.const 3516) "\1c") + (data $61.1 (i32.const 3528) "\0f\00\00\00\08\00\00\00\05") + (data $62 (i32.const 3548) "\1c") + (data $62.1 (i32.const 3560) "\0e\00\00\00\08\00\00\00\06") + (data $63 (i32.const 3580) "\1c") + (data $63.1 (i32.const 3592) "\0e\00\00\00\08\00\00\00\07") + (data $64 (i32.const 3612) "\1c") + (data $64.1 (i32.const 3624) "\0e\00\00\00\08\00\00\00\08") + (data $65 (i32.const 3644) "\1c") + (data $65.1 (i32.const 3656) "\0e\00\00\00\08\00\00\00\t") + (data $66 (i32.const 3676) "\1c") + (data $66.1 (i32.const 3688) "\0e\00\00\00\08\00\00\00\n") + (data $67 (i32.const 3708) "\1c") + (data $67.1 (i32.const 3720) "\0e\00\00\00\08\00\00\00\0b") + (data $68 (i32.const 3740) "\1c") + (data $68.1 (i32.const 3752) "\0e\00\00\00\08\00\00\00\0c") + (data $69 (i32.const 3772) "\1c") + (data $69.1 (i32.const 3784) "\0e\00\00\00\08\00\00\00\r") + (data $70 (i32.const 3804) ",") + (data $70.1 (i32.const 3816) "\04\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01") + (data $71 (i32.const 3852) "\1c") + (data $71.1 (i32.const 3864) "\10\00\00\00\08\00\00\00\0e") + (data $72 (i32.const 3888) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00$\t\00\00 \00\00\00\04A\00\00\02\t\00\00\04A\00\00\02A\00\00$\1a\00\00$\19") + (table $0 15 15 funcref) + (elem $0 (i32.const 1) $start:std/staticarray~anonymous|0 $start:std/staticarray~anonymous|1 $start:std/staticarray~anonymous|2 $start:std/staticarray~anonymous|3 $start:std/staticarray~anonymous|3 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $start:std/staticarray~anonymous|7 $start:std/staticarray~anonymous|8 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $~lib/util/sort/COMPARATOR~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + global.get $std/staticarray/arr3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr4 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1680 + call $~lib/rt/itcms/__visit + i32.const 2336 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1408 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1408 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$267 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 36728 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1408 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$267 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1408 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 3888 + i32.load + i32.gt_u + if + i32.const 1088 + i32.const 1536 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 3892 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1616 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36736 + i32.const 0 + i32.store + i32.const 38304 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36736 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36736 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36736 + i32.const 38308 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36736 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 36728 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36728 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1408 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36728 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1344 + i32.const 1616 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1344 + i32.const 1408 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1408 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $start:std/staticarray~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 1 + i32.add + ) + (func $start:std/staticarray~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $std/staticarray/maxVal + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + global.set $std/staticarray/maxVal + ) + (func $start:std/staticarray~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/staticarray~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $start:std/staticarray~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.eq + ) + (func $start:std/staticarray~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 4 + i32.eq + ) + (func $start:std/staticarray~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.le_s + ) + (func $start:std/staticarray~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.gt_s + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $4 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $4 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $6 + loop $for-loop|0 + local.get $2 + local.get $6 + i32.ge_s + if + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load offset=4 + local.tee $5 + local.set $4 + local.get $3 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $4 + local.get $5 + local.set $3 + end + local.get $6 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $7 + i32.store offset=8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + end + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $5 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $4 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $7 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + end + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + local.get $4 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + local.set $5 + local.get $4 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end + end + end + local.get $3 + ) + (func $~lib/util/sort/mergeRuns (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.get $2 + i32.const 1 + i32.sub + local.tee $5 + local.get $3 + i32.add + local.set $6 + local.get $5 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $7 + local.get $4 + i32.add + local.get $0 + local.get $7 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $4 + local.get $6 + local.get $5 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $~lib/staticarray/StaticArray~visit (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $invalid + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/array/Array<~lib/string/String> + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $std/staticarray/Ref + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $~lib/array/Array $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + local.get $0 + call $~lib/staticarray/StaticArray~visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 + end + local.get $0 + call $~lib/staticarray/StaticArray~visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 + end + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:std/staticarray + ) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.le_u + if + i32.const 1088 + i32.const 1152 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/staticarray/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray.fromArray (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1088 + i32.const 1776 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $2 + local.get $3 + i32.add + local.tee $4 + i32.const 268435455 + i32.gt_u + if + i32.const 1680 + i32.const 1152 + i32.const 178 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + local.tee $0 + memory.copy + local.get $0 + local.get $4 + i32.add + local.get $1 + local.get $2 + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $4 + local.get $0 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select + end + local.tee $5 + i32.const 2 + i32.shl + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $4 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select + end + local.get $5 + i32.sub + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + i32.const 2 + i32.shl + local.tee $0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + local.get $2 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load + local.tee $4 + i32.store + local.get $2 + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 2336 + i32.const 1152 + i32.const 82 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$106 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$106 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.tee $2 + local.get $3 + i32.add + local.tee $4 + i32.const 268435455 + i32.gt_u + if + i32.const 1680 + i32.const 1152 + i32.const 178 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 2 + i32.shl + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $5 + i32.lt_u + if + local.get $1 + local.get $4 + i32.add + local.get $0 + local.get $1 + i32.add + i32.load + local.tee $7 + i32.store + local.get $3 + local.get $7 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $4 + local.get $5 + i32.add + local.set $1 + local.get $2 + i32.const 2 + i32.shl + local.set $2 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_u + if + local.get $0 + local.get $1 + i32.add + local.get $0 + local.get $6 + i32.add + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $2 + br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + end + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $4 + local.get $1 + call $~lib/string/String.__eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.ge_s + return + end + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/staticarray/StaticArray#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/staticarray/StaticArray#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/staticarray/StaticArray#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/staticarray/StaticArray#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinStringArray (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $5 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2928 + return + end + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 2928 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $4 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $3 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $5 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=12 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $5 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=4 + local.get $7 + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $7 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.get $7 + i32.add + local.set $4 + end + local.get $1 + if + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $4 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $0 + local.get $2 + local.get $1 + call $~lib/util/string/joinStringArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray#filter (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $7 + loop $for-loop|0 + local.get $7 + local.get $9 + i32.gt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $8 + local.get $9 + local.get $0 + i32.const 3472 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.load offset=12 + local.tee $6 + i32.const 1 + i32.add + local.tee $5 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $3 + local.get $10 + i32.load offset=8 + local.tee $1 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $3 + i32.const 268435455 + i32.gt_u + if + i32.const 1680 + i32.const 1776 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$224 + i32.const 1073741820 + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + local.get $1 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $3 + local.get $3 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $4 + local.get $10 + i32.load + local.tee $1 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $4 + i32.store offset=16 + local.get $1 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$224 + end + local.get $4 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $1 + local.get $4 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $10 + local.get $2 + i32.store + local.get $10 + local.get $2 + i32.store offset=4 + local.get $10 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $10 + local.get $4 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.load offset=4 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/staticarray/StaticArray#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/staticarray/StaticArray#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + ) + (func $~lib/staticarray/StaticArray#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/staticarray/StaticArray#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $2 + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/util/sort/SORT (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 $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store + local.get $0 + i32.load offset=8 + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $1 + local.get $2 + local.get $3 + select + local.tee $1 + local.get $4 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $2 + local.get $0 + local.get $4 + local.get $1 + local.get $2 + select + i32.store offset=4 + local.get $0 + local.get $1 + local.get $4 + local.get $2 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + select + i32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $3 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + i32.shl + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $4 + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $9 + i32.add + local.set $10 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $9 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $8 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $8 + local.get $8 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + loop $while-continue|2 + local.get $4 + local.get $8 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $5 + local.get $8 + call $~lib/util/sort/extendRunRight + local.tee $3 + local.get $5 + i32.sub + i32.const 1 + i32.add + local.tee $6 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + local.get $0 + local.get $5 + local.get $8 + local.get $5 + i32.const 31 + i32.add + local.tee $3 + local.get $3 + local.get $8 + i32.gt_s + select + local.tee $3 + local.get $6 + call $~lib/util/sort/insertionSort + end + local.get $2 + local.get $5 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $8 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $12 + i64.div_u + local.get $3 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $12 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $6 + loop $for-loop|3 + local.get $1 + local.get $6 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $13 + local.get $9 + i32.add + local.tee $14 + i32.load + local.tee $7 + i32.const -1 + i32.ne + if + local.get $10 + local.get $13 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + local.get $0 + local.get $7 + local.get $2 + local.get $4 + local.get $11 + call $~lib/util/sort/mergeRuns + local.get $14 + i32.const -1 + i32.store + local.get $7 + local.set $2 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $6 + i32.const 2 + i32.shl + local.tee $1 + local.get $9 + i32.add + local.get $2 + i32.store + local.get $1 + local.get $10 + i32.add + local.get $4 + i32.store + local.get $5 + local.set $2 + local.get $3 + local.set $4 + local.get $6 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $9 + i32.add + i32.load + local.tee $3 + i32.const -1 + i32.ne + if + local.get $2 + local.get $10 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + local.get $0 + local.get $3 + local.get $2 + local.get $8 + local.get $11 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $11 + call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/staticarray + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 104 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 104 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1052 + i32.load + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 4 + call $~lib/staticarray/StaticArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1048 + i32.load + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store + i32.const 1280 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store + i32.const 1276 + i32.load + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store + i32.const 1280 + i32.const 4 + call $~lib/staticarray/StaticArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store + i32.const 1280 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 36728 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1460 + i32.const 1456 + i32.store + i32.const 1464 + i32.const 1456 + i32.store + i32.const 1456 + global.set $~lib/rt/itcms/pinSpace + i32.const 1492 + i32.const 1488 + i32.store + i32.const 1496 + i32.const 1488 + i32.store + i32.const 1488 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 1312 + i32.const 12 + memory.copy + local.get $5 + global.set $std/staticarray/arr3 + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $5 + i32.store + local.get $5 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $5 + i32.store + local.get $5 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $5 + i32.store + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $5 + i32.store + local.get $5 + i32.const 8 + call $~lib/staticarray/StaticArray#__set + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 1312 + i32.const 12 + memory.copy + local.get $5 + global.set $std/staticarray/arr3 + global.get $~lib/memory/__stack_pointer + global.get $std/staticarray/arr3 + local.tee $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + local.get $5 + call $std/staticarray/Ref#constructor + local.tee $6 + i32.store + local.get $5 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $5 + call $std/staticarray/Ref#constructor + local.tee $6 + i32.store offset=4 + local.get $5 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $5 + global.set $std/staticarray/arr4 + i32.const 0 + global.set $std/staticarray/arr3 + i32.const 0 + global.set $std/staticarray/arr4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $0 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/staticarray/StaticArray#__get + if + i32.const 0 + i32.const 1216 + i32.const 46 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 6 + i32.const 7 + i32.const 1728 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/staticarray/StaticArray.fromArray + local.tee $5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.get $6 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.get $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $1 + call $~lib/staticarray/StaticArray#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/array/Array#__get + local.get $6 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 58 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + i32.const 1824 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/staticarray/StaticArray.fromArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + if + i32.const 0 + i32.const 1216 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 1856 + i64.load align=1 + i64.store align=1 + local.get $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 1888 + i32.load align=1 + i32.store align=1 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $1 + local.get $5 + call $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 1920 + i32.const 0 + memory.copy + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $1 + local.get $5 + call $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 71 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 2016 + i64.load align=1 + i64.store align=1 + local.get $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 4 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 2080 + i32.load align=1 + i32.store align=1 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $7 + local.get $0 + i32.add + local.tee $8 + i32.const 268435455 + i32.gt_u + if + i32.const 1680 + i32.const 1152 + i32.const 178 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 2 + i32.shl + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=4 + loop $for-loop|03 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $2 + local.get $8 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load + local.tee $9 + i32.store + local.get $8 + local.get $9 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $for-loop|03 + end + end + local.get $0 + local.get $8 + i32.add + local.set $1 + local.get $7 + i32.const 2 + i32.shl + local.set $2 + i32.const 0 + local.set $0 + loop $for-loop|14 + local.get $0 + local.get $2 + i32.lt_u + if + local.get $0 + local.get $1 + i32.add + local.get $0 + local.get $6 + i32.add + i32.load + local.tee $7 + i32.store + local.get $8 + local.get $7 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $for-loop|14 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 76 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 2288 + i32.const 20 + memory.copy + local.get $2 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs + local.tee $0 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $1 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + local.get $2 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=24 + local.get $5 + local.get $6 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 86 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.const 3 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + local.tee $0 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 90 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $0 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $0 + i32.const 1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2176 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 92 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs + local.tee $0 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 50 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + local.tee $0 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 100 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs + local.tee $0 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + if + i32.const 0 + i32.const 1216 + i32.const 101 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const -1 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs + local.tee $0 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $0 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const -2 + i32.const -2 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + local.tee $0 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + if + i32.const 0 + i32.const 1216 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const -2 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + local.tee $0 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $0 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2176 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 112 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 2464 + i32.const 20 + memory.copy + local.get $1 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 9 + i32.const 2512 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=24 + local.get $1 + local.get $2 + call $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> + local.tee $0 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 9 + i32.const 2576 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=24 + local.get $1 + local.get $2 + call $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> + local.tee $0 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.add + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 2608 + i32.const 20 + memory.copy + local.get $1 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2144 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 133 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2544 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + if + i32.const 0 + i32.const 1216 + i32.const 134 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2240 + i32.const 5 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + if + i32.const 0 + i32.const 1216 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2240 + i32.const -1 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/staticarray/StaticArray#includes$276 (result i32) + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 2656 + i64.load align=1 + i64.store align=1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 3 + i32.shr_u + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$~lib/staticarray/StaticArray#includes$276 + end + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $3 + local.get $3 + f64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + br $__inlined_func$~lib/staticarray/StaticArray#includes$276 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/staticarray/StaticArray#includes$277 (result i32) + i32.const 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 2688 + i32.load align=1 + i32.store align=1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$~lib/staticarray/StaticArray#includes$277 + end + loop $while-continue|030 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $4 + local.get $4 + f32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + br $__inlined_func$~lib/staticarray/StaticArray#includes$277 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|030 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 139 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 2720 + i32.const 12 + memory.copy + local.get $1 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + i32.const 0 + call $~lib/staticarray/StaticArray#indexOf + if + i32.const 0 + i32.const 1216 + i32.const 145 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7 + i32.const 0 + call $~lib/staticarray/StaticArray#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 146 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 9 + i32.const 2 + call $~lib/staticarray/StaticArray#indexOf + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + i32.const -1 + call $~lib/staticarray/StaticArray#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + i32.const -3 + call $~lib/staticarray/StaticArray#indexOf + if + i32.const 0 + i32.const 1216 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 2752 + i32.const 16 + memory.copy + local.get $1 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $1 + i32.const 2 + call $~lib/staticarray/StaticArray#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $1 + i32.const 7 + call $~lib/staticarray/StaticArray#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 156 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/staticarray/StaticArray#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 157 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + i32.const 2 + call $~lib/staticarray/StaticArray#lastIndexOf + if + i32.const 0 + i32.const 1216 + i32.const 158 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + i32.const -2 + call $~lib/staticarray/StaticArray#lastIndexOf + if + i32.const 0 + i32.const 1216 + i32.const 159 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + i32.const -1 + call $~lib/staticarray/StaticArray#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 2896 + i32.const 12 + memory.copy + local.get $1 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 2960 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 2928 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3040 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 167 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 3088 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 168 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 3168 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3200 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 169 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=48 + local.get $1 + i32.const 2960 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2960 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 170 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 3264 + i64.load align=1 + i64.store align=1 + local.get $1 + i32.store offset=76 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 1 + i32.gt_u + select + local.set $0 + loop $for-loop|032 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.const 1 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|032 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + if + i32.const 0 + i32.const 1216 + i32.const 178 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 179 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 3296 + i32.const 12 + memory.copy + local.get $1 + i32.store offset=80 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 1 + i32.gt_u + if + i32.const 0 + local.set $0 + local.get $2 + i32.const 1 + i32.shr_u + local.set $5 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|035 + local.get $0 + local.get $5 + i32.lt_u + if + local.get $1 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.tee $6 + i32.load + local.set $7 + local.get $6 + local.get $1 + local.get $2 + local.get $0 + i32.sub + i32.const 2 + i32.shl + i32.add + local.tee $6 + i32.load + i32.store + local.get $6 + local.get $7 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|035 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 188 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 189 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 3328 + i32.const 20 + memory.copy + local.get $1 + i32.store offset=84 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $1 + i32.const 3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $0 + local.get $0 + i32.const 3 + i32.gt_u + select + local.tee $2 + i32.const 2 + i32.shl + i32.add + local.get $0 + i32.const 0 + i32.lt_s + if (result i32) + local.get $0 + local.get $0 + i32.add + local.tee $5 + i32.const 0 + local.get $5 + i32.const 0 + i32.gt_s + select + else + local.get $0 + end + local.get $2 + i32.sub + local.tee $2 + local.get $0 + local.get $0 + local.get $2 + i32.gt_s + select + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 197 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 199 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 3 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 201 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 3376 + i32.const 12 + memory.copy + local.get $2 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $5 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $0 + loop $for-loop|038 + local.get $0 + local.get $5 + i32.lt_s + if + local.get $0 + i32.const 2 + i32.shl + local.tee $8 + local.get $2 + i32.add + i32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $7 + local.get $8 + i32.add + local.get $9 + local.get $0 + local.get $2 + i32.const 3408 + i32.load + call_indirect (type $1) + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|038 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=92 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 0 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 210 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 1 + call $~lib/array/Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 211 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2 + call $~lib/array/Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 212 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3440 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $0 + loop $for-loop|040 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $2 + i32.const 3440 + i32.load + call_indirect (type $5) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|040 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/staticarray/maxVal + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 216 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/staticarray/StaticArray#filter + local.tee $0 + i32.store offset=96 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 220 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 221 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 222 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.store offset=24 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $5 + loop $for-loop|042 + local.get $0 + local.get $5 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $6 + local.get $0 + local.get $2 + i32.const 3504 + i32.load + call_indirect (type $6) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|042 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 226 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store offset=24 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|044 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $5 + local.get $0 + local.get $2 + i32.const 3536 + i32.load + call_indirect (type $6) + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|044 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3568 + i32.store offset=24 + local.get $2 + i32.const 3568 + call $~lib/staticarray/StaticArray#some + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 233 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3600 + i32.store offset=24 + local.get $2 + i32.const 3600 + call $~lib/staticarray/StaticArray#some + if + i32.const 0 + i32.const 1216 + i32.const 234 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.store offset=24 + local.get $2 + i32.const 3632 + call $~lib/staticarray/StaticArray#every + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3664 + i32.store offset=24 + local.get $2 + i32.const 3664 + call $~lib/staticarray/StaticArray#every + if + i32.const 0 + i32.const 1216 + i32.const 238 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3696 + i32.store offset=24 + local.get $2 + i32.const 3696 + call $~lib/staticarray/StaticArray#findIndex + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 241 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3728 + i32.store offset=24 + local.get $2 + i32.const 3728 + call $~lib/staticarray/StaticArray#findIndex + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 242 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3760 + i32.store offset=24 + local.get $2 + i32.const 3760 + call $~lib/staticarray/StaticArray#findLastIndex + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 245 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3792 + i32.store offset=24 + local.get $2 + i32.const 3792 + call $~lib/staticarray/StaticArray#findLastIndex + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 246 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 3824 + i32.const 16 + memory.copy + local.get $1 + i32.store offset=100 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + local.get $1 + local.get $0 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + if + i32.const 0 + i32.const 1216 + i32.const 255 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 256 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 257 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 3 + call $~lib/staticarray/StaticArray#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 258 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 36728 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|047 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|047 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 104 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $3 + local.get $2 + if + local.get $3 + local.get $2 + local.get $4 + memory.copy + end + local.get $3 + i32.store + i32.const 16 + local.get $1 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/std/staticarray.ts b/tests/compiler/std/staticarray.ts index fa72c911d7..9ea53b08bb 100644 --- a/tests/compiler/std/staticarray.ts +++ b/tests/compiler/std/staticarray.ts @@ -1,4 +1,4 @@ -import { BLOCK_OVERHEAD, BLOCK } from "rt/common"; +import { OBJECT, TOTAL_OVERHEAD } from "rt/common"; // from contextual type const arr1: StaticArray = [1,2,3]; @@ -6,7 +6,7 @@ assert(arr1[1] == 2); assert(arr1.length == 3); arr1[1] = 4; assert(arr1[1] == 4); -assert(changetype(changetype(arr1) - BLOCK_OVERHEAD).rtId == idof>()); +assert(changetype(changetype(arr1) - TOTAL_OVERHEAD).rtId == idof>()); // from assertion const arr2 = [1,2,3] as StaticArray; @@ -35,3 +35,228 @@ var arr4: StaticArray = [ new Ref(), new Ref() ]; arr3 = changetype>(0); // unleak arr4 = changetype>(0); + + +// constructor + +{ + const source = new StaticArray(3); + assert(source.length == 3); + for (let i = 0; i < source.length; i++) { + assert(source[i] == 0); + } +} + + +// fromArray + +{ + const source: i32[] = [0, 1, 1, 2, 3, 5]; + let subject = StaticArray.fromArray(source); + assert(subject.length == source.length); + for (let i = 0; i < source.length; i++) { + assert(subject[i] == source[i]); + } + subject = StaticArray.fromArray([]); + assert(subject.length == 0); +} + +// concat + +{ + let source: StaticArray = [1, 2]; + let result = source.concat>([1]); + assert(result.length == 3); + result = source.concat>([]); + assert(result.length == source.length); +} +{ + let source: StaticArray = ["1", "2"]; + let result = source.concat>(["3"]); + assert(result.length == 3); +} + +// slice +{ + const source: StaticArray = ['ant', 'bison', 'camel', 'duck', 'elephant']; + let result = source.slice>(); + assert(result.length == source.length); + + for(let i = 0; i < source.length; i++) { + assert(source[i] == result[i]); + } + + result = source.slice>(1, 3); + assert(result.length == 2); + assert(result[0] == "bison"); + assert(result[1] == "camel"); + + result = source.slice>(1); + assert(result.length == (source.length - 1)); + + result = source.slice>(0, 50); + assert(result.length == source.length); + + result = source.slice>(100); + assert(result.length == 0); + + result = source.slice>(-1); + assert(result.length == 1); + assert(result[0] == "elephant"); + + result = source.slice>(-2, -2); + assert(result.length == 0); + + result = source.slice>(2, -2); + assert(result.length == 1); + assert(result[0] == "camel"); +} + +// concat +{ + const source: StaticArray = ['ant', 'bison', 'camel', 'duck', 'elephant']; + + // TODO: omit default generic type after + // when https://github.com/AssemblyScript/assemblyscript/issues/2405 fixed + let result = source.concat([]); + assert(result.length == source.length); + assert(isArray(result)); + + result = source.concat(["foo"]); + assert(result.length == (source.length + 1)); + assert(isArray(result)); +} + +// includes +{ + const source: StaticArray = ['ant', 'bison', 'camel', 'duck', 'elephant']; + assert(source.includes("bison") == true); + assert(source.includes("foo") == false); + assert(source.includes("elephant", 5) == false); + assert(source.includes("elephant", -1) == true); + + assert(([NaN] as StaticArray).includes(NaN) == true); + assert(([NaN] as StaticArray).includes(NaN) == true); +} + +// indexOf +{ + const array: StaticArray = [2, 9, 9]; + assert(array.indexOf(2) == 0); + assert(array.indexOf(7) == -1); + assert(array.indexOf(9, 2) == 2); + assert(array.indexOf(2, -1) == -1); + assert(array.indexOf(2, -3) == 0); +} + +// lastIndexOf +{ + const numbers: StaticArray = [2, 5, 9, 2]; + assert(numbers.lastIndexOf(2) == 3); + assert(numbers.lastIndexOf(7) == -1); + assert(numbers.lastIndexOf(2, 3) == 3); + assert(numbers.lastIndexOf(2, 2) == 0); + assert(numbers.lastIndexOf(2, -2) == 0); + assert(numbers.lastIndexOf(2, -1) == 3); +} + +// join + toString +{ + const elements: StaticArray = ['Fire', 'Air', 'Water']; + assert(elements.join() == "Fire,Air,Water"); + assert(elements.join('') == "FireAirWater"); + assert(elements.join('-') == "Fire-Air-Water"); + assert(elements.join(' + ') == "Fire + Air + Water"); + assert(elements.join() == elements.toString()); +} + +// fill +{ + const numbers: StaticArray = [0, 0]; + numbers.fill(1, 1); + + assert(numbers[0] == 0); + assert(numbers[1] == 1); +} + +// reverse +{ + const numbers: StaticArray = [1, 2, 3]; + numbers.reverse(); + + assert(numbers[0] == 3); + assert(numbers[1] == 2); + assert(numbers[2] == 1); +} + +// copyWithin +{ + const numbers: StaticArray = [1, 2, 3, 4, 5]; + numbers.copyWithin(0, 3); + + assert(numbers[0] == 4); + assert(numbers[1] == 5); + assert(numbers[2] == 3); + assert(numbers[3] == 4); + assert(numbers[4] == 5); +} + +let maxVal = 0; +{ + const numbers: StaticArray = [1, 2, 3]; + + // map + const incNums = numbers.map(x => x + 1); + assert(incNums[0] == 2); + assert(incNums[1] == 3); + assert(incNums[2] == 4); + + // forEach + numbers.forEach(x => { maxVal = max(maxVal, x); } ); + assert(maxVal == 3); + + // filter + const filtered = numbers.filter(x => x >= 2); + assert(filtered.length == 2); + assert(filtered[0] == 2); + assert(filtered[1] == 3); + + // reduce + const sum1 = numbers.reduce((x, y) => x + y, 0); + assert(sum1 == 6); + + // reduceRight + const sum2 = numbers.reduceRight((x, y) => x + y, 0); + assert(sum2 == 6); + + // some + assert(numbers.some(x => x == 2)); + assert(!numbers.some(x => x == 4)); + + // every + assert(numbers.every(x => x <= 3)); + assert(!numbers.every(x => x > 3)); + + // findIndex + assert(numbers.findIndex(x => x == 2) == 1); + assert(numbers.findIndex(x => x == 4) == -1); + + // findLastIndex + assert(numbers.findLastIndex(x => x == 2) == 1); + assert(numbers.findLastIndex(x => x == 4) == -1); +} + + +// sort +{ + const array: StaticArray = [0, 3, 2, 1]; + array.sort(); + + assert(array[0] == 0); + assert(array[1] == 1); + assert(array[2] == 2); + assert(array[3] == 3); +} + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat deleted file mode 100644 index b74ba95635..0000000000 --- a/tests/compiler/std/staticarray.untouched.wat +++ /dev/null @@ -1,3384 +0,0 @@ -(module - (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 $none_=>_none (func)) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 48) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 112) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 176) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 240) "\0c\00\00\00\01\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 272) "\0c\00\00\00\01\00\00\00\03\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00") - (data (i32.const 304) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 352) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 416) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (table $0 1 funcref) - (global $std/staticarray/arr1 i32 (i32.const 32)) - (global $std/staticarray/arr2 i32 (i32.const 256)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $std/staticarray/arr3 (mut i32) (i32.const 0)) - (global $std/staticarray/arr4 (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 464)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 2 - i32.shr_u - ) - (func $~lib/staticarray/StaticArray#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - call $~lib/staticarray/StaticArray#get:length - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 95 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/staticarray/StaticArray#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - call $~lib/staticarray/StaticArray#get:length - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 110 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/staticarray/StaticArray#__uset - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 368 - i32.const 320 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end - local.get $3 - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 432 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 432 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $std/staticarray/test (result i32) - (local $0 i32) - i32.const 12 - i32.const 3 - i32.const 288 - call $~lib/rt/__allocBuffer - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $std/staticarray/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $start:std/staticarray - (local $0 i32) - (local $1 i32) - global.get $std/staticarray/arr1 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr1 - call $~lib/staticarray/StaticArray#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr1 - i32.const 1 - i32.const 4 - call $~lib/staticarray/StaticArray#__set - global.get $std/staticarray/arr1 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr1 - i32.const 16 - i32.sub - i32.load offset=8 - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr2 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr2 - call $~lib/staticarray/StaticArray#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr2 - i32.const 1 - i32.const 4 - call $~lib/staticarray/StaticArray#__set - global.get $std/staticarray/arr2 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $std/staticarray/test - global.set $std/staticarray/arr3 - global.get $std/staticarray/arr3 - i32.const 0 - call $~lib/staticarray/StaticArray#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr3 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr3 - i32.const 2 - call $~lib/staticarray/StaticArray#__get - i32.const 7 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr3 - call $~lib/staticarray/StaticArray#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr3 - i32.const 1 - i32.const 8 - call $~lib/staticarray/StaticArray#__set - global.get $std/staticarray/arr3 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $std/staticarray/test - local.set $0 - global.get $std/staticarray/arr3 - call $~lib/rt/pure/__release - local.get $0 - global.set $std/staticarray/arr3 - global.get $std/staticarray/arr3 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 5 - i32.const 0 - call $~lib/rt/__allocBuffer - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.const 0 - call $std/staticarray/Ref#constructor - i32.store - local.get $0 - i32.const 0 - call $std/staticarray/Ref#constructor - i32.store offset=4 - local.get $0 - global.set $std/staticarray/arr4 - i32.const 0 - local.tee $0 - global.get $std/staticarray/arr3 - local.tee $1 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $0 - global.set $std/staticarray/arr3 - i32.const 0 - local.tee $1 - global.get $std/staticarray/arr4 - local.tee $0 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - end - local.get $1 - global.set $std/staticarray/arr4 - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:std/staticarray - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 432 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 432 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 432 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 432 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/staticarray/StaticArray#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - ) - (func $~lib/staticarray/StaticArray#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - local.set $2 - local.get $2 - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$7 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$2 $switch$1$case$7 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/std/string-casemapping.debug.wat b/tests/compiler/std/string-casemapping.debug.wat new file mode 100644 index 0000000000..5e412bc990 --- /dev/null +++ b/tests/compiler/std/string-casemapping.debug.wat @@ -0,0 +1,6971 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i64 i32) (result i32))) + (type $7 (func (param i32 i64 i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $12 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $13 (func (param i64) (result i32))) + (type $14 (func (param i32 i64 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) + (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/util/casemap/SPECIALS_UPPER i32 (i32.const 464)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/rt/__rtti_base i32 (i32.const 20032)) + (global $~lib/memory/__data_end i32 (i32.const 20056)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 52824)) + (global $~lib/memory/__heap_base i32 (i32.const 52824)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) "L\03\00\00\00\00\00\00\00\00\00\00\04\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\r\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\r\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 1292) "\00\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7f") + (data $11 (i32.const 1420) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\r\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$++++++++\01\00TVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\r\rN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\r1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0cl\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\r\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00N1P1P1P1P1P1P1P\r\00\00\00\00\00$P1P1P1P1P\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\00\00\00\00\00\00*++++++++++++++++++++++++++\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00++++++++\07\00HVVVVVVVV\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++++UVVVVVVVVVVVV\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\00\00\00\00\00\00$+++++++++++\07\00VVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++VVVVVVVVVV\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\00\00\00\00\00\00\00*++++++++++VVVVVVVVVV\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++UVVVVVVVVVV\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 4088) "\00\08\00\00V\01\00\009\00\00\00") + (data $13 (i32.const 4100) "\00\00\00\00\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") + (data $14 (i32.const 5060) "\00\06\'Qow\00\00\00\00\00\00\00\00\00\00|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa\00\00\00\00\00\00\00\00\00\00\b4\c4\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c6\c9\00\00\00\db\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4\00\00\00\00\00\00\00\00\00\00\00\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ea\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ed\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 5572) "0\0c1\rx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") + (data $16 (i32.const 5980) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 6060) "\00\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7f") + (data $18 (i32.const 6188) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01\00\00\00\00\00\00\00\00\00\00\00\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\\00\00\00\00\00\00\00\00\00\00\00\f2\07\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00\f2\1f@?\00\00\00\00\00\00\00\00\00\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@\00\00\00\00\00\00\00\00\00\00\00\00\e0\fdf\00\00\00\c3\01\00\1e\00d \00 \00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\e0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\87\01\04\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\00\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?\00\00\00\00\00\00\00\00\00\00\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\80\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\80\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\00\00\00\00\00\80\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00<>\08\00\00\00\00\00\00\00\00\00\00\00~\00\00\00\00\00\00\00\00\00\00\00p\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\80\f7\bf\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\03\00\ff\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\01\00\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00\03D\08\00\00`\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X\00\00\00\00\00\00\00\00\00\00\00\00\f8\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\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\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\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\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\00\00\00\00\00\00 \00\00\00\00\00\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00n\f0\00\00\00\00\00\87\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`\00\00\00\00\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e\00\00\00\00\00\00\00\00\00\00\00\80\d3@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\\\00\00@\00\00\00\00\00\00\00\00\00\00\f8\85\r\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00<\b0\01\00\000\00\00\00\00\00\00\00\00\00\00\f8\a7\01\00\00\00\00\00\00\00\00\00\00\00\00(\bf\00\00\00\00\00\00\00\00\00\00\00\00\e0\bc\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\ff\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00X\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7f\bf\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\fcm\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00~\b4\bf\00\00\00\00\00\00\00\00\00\a3\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\00\00\00\00\7f\00\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\03\f8\ff\e7\0f\00\00\00<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff\00\00\00\00\00\00\00\00\00\00\7f\ff\ff\f9\db\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8") + (data $19 (i32.const 9196) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\80\00\00\ff\1f\00\00\00\00\00\00\00\00\00\00\00\00\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 10764) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n\00\00\00\00\00\00\00") + (data $21 (i32.const 10812) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n\00\00\00\00\00\00\00") + (data $22 (i32.const 10860) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t\00\00\00\00\00\00\00") + (data $23 (i32.const 10908) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t\00\00\00\00\00\00\00") + (data $24 (i32.const 10956) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e\00\00\00") + (data $25 (i32.const 11052) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E\00\00\00") + (data $26 (i32.const 11148) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e\00\00\00") + (data $27 (i32.const 11244) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 11308) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 11372) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 11436) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 11532) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 11628) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 11724) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\00\00\00\00") + (data $34 (i32.const 11820) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N\00\00\00\00\00") + (data $35 (i32.const 11916) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n\00\00\00\00\00") + (data $36 (i32.const 12012) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 12092) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $38 (i32.const 12172) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $39 (i32.const 12252) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 12332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") + (data $41 (i32.const 12396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") + (data $42 (i32.const 12460) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\00\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 12540) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.\00\00\00\00\00\00\00\00\00") + (data $44 (i32.const 12620) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $45 (i32.const 12700) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $46 (i32.const 12780) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03\00\00\00\00") + (data $47 (i32.const 12844) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03\00\00") + (data $48 (i32.const 12908) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03\00\00\00\00\00\00\00\00\00\00") + (data $49 (i32.const 12988) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03\00\00\00\00\00\00\00\00") + (data $50 (i32.const 13068) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!\00\00\00\00\00\00\00") + (data $51 (i32.const 13148) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!\00\00\00") + (data $52 (i32.const 13228) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $53 (i32.const 13388) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $54 (i32.const 13548) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\80\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $55 (i32.const 13708) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\df\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 13740) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00S\00S\00\00\00\00\00\00\00\00\00") + (data $57 (i32.const 13772) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\01\00\00\00\00\00\00\00\00\00\00") + (data $58 (i32.const 13804) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00i\00\07\03\00\00\00\00\00\00\00\00") + (data $59 (i32.const 13836) "\cc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 14044) "\cc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c\00\00\00\00\00\00\00\00\00\00") + (data $61 (i32.const 14252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00s\00s\00\00\00\00\00\00\00\00\00") + (data $62 (i32.const 14284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\01\fb\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 14316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00f\00i\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 14348) "\cc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc\00\00\00\00") + (data $65 (i32.const 14556) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data $66 (i32.const 14604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\00\d8\00\dc\00\00\00\00\00\00\00\00") + (data $67 (i32.const 14636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\88\1f\00\00\00\00\00\00\00\00\00\00") + (data $68 (i32.const 14668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\80\1f\00\00\00\00\00\00\00\00\00\00") + (data $69 (i32.const 14700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\8f\1f\00\00\00\00\00\00\00\00\00\00") + (data $70 (i32.const 14732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\87\1f\00\00\00\00\00\00\00\00\00\00") + (data $71 (i32.const 14764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\fc\1f\00\00\00\00\00\00\00\00\00\00") + (data $72 (i32.const 14796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\f3\1f\00\00\00\00\00\00\00\00\00\00") + (data $73 (i32.const 14828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\a3\03\00\00\00\00\00\00\00\00\00\00") + (data $74 (i32.const 14860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\c3\03\00\00\00\00\00\00\00\00\00\00") + (data $75 (i32.const 14892) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00 \00\a3\03\00\00\00\00\00\00\00\00") + (data $76 (i32.const 14924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00 \00\c3\03\00\00\00\00\00\00\00\00") + (data $77 (i32.const 14956) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\a3\03 \00\00\00\00\00\00\00\00\00") + (data $78 (i32.const 14988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\c3\03 \00\00\00\00\00\00\00\00\00") + (data $79 (i32.const 15020) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00 \00\a3\03 \00\00\00\00\00\00\00") + (data $80 (i32.const 15052) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00 \00\c3\03 \00\00\00\00\00\00\00") + (data $81 (i32.const 15084) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\a3\03 \00\00\00\00\00\00\00") + (data $82 (i32.const 15116) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c2\03 \00\00\00\00\00\00\00") + (data $83 (i32.const 15148) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\a3\03\n\00\00\00\00\00\00\00") + (data $84 (i32.const 15180) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c2\03\n\00\00\00\00\00\00\00") + (data $85 (i32.const 15212) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00\a3\03\00\00\00\00\00\00\00\00") + (data $86 (i32.const 15244) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00\c2\03\00\00\00\00\00\00\00\00") + (data $87 (i32.const 15276) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\a3\03b\00\00\00\00\00\00\00") + (data $88 (i32.const 15308) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c3\03b\00\00\00\00\00\00\00") + (data $89 (i32.const 15340) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\a3\03\a3\03 \00\00\00\00\00\00\00") + (data $90 (i32.const 15372) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\c3\03\c2\03 \00\00\00\00\00\00\00") + (data $91 (i32.const 15404) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00\a3\03 \00\00\00\00\00\00\00") + (data $92 (i32.const 15436) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00\c3\03 \00\00\00\00\00\00\00") + (data $93 (i32.const 15468) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00;\00\a3\03 \00\00\00\00\00\00\00") + (data $94 (i32.const 15500) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00;\00\c3\03 \00\00\00\00\00\00\00") + (data $95 (i32.const 15532) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\01\03\a3\03 \00\00\00\00\00\00\00") + (data $96 (i32.const 15564) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\01\03\c3\03 \00\00\00\00\00\00\00") + (data $97 (i32.const 15596) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 \00\00\00") + (data $98 (i32.const 15628) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 \00\00\00") + (data $99 (i32.const 15660) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\a3\03\a3\03-\00\00\00\00\00\00\00") + (data $100 (i32.const 15692) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\c3\03\c2\03-\00\00\00\00\00\00\00") + (data $101 (i32.const 15724) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-\00\00\00") + (data $102 (i32.const 15756) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-\00\00\00") + (data $103 (i32.const 15788) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s\00\00") + (data $104 (i32.const 15820) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s\00\00") + (data $105 (i32.const 15852) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\005\d8\a2\dc\a3\03\00\00\00\00\00\00") + (data $106 (i32.const 15884) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\005\d8\a2\dc\c2\03\00\00\00\00\00\00") + (data $107 (i32.const 15916) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00.\00\a3\03\00\00\00\00\00\00") + (data $108 (i32.const 15948) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00.\00\c2\03\00\00\00\00\00\00") + (data $109 (i32.const 15980) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\ad\00\a3\03\00\00\00\00\00\00") + (data $110 (i32.const 16012) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\ad\00\c2\03\00\00\00\00\00\00") + (data $111 (i32.const 16044) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\004\d8B\de\a3\03\00\00\00\00") + (data $112 (i32.const 16076) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\004\d8B\de\c2\03\00\00\00\00") + (data $113 (i32.const 16108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00E\03\a3\03\00\00\00\00\00\00\00\00") + (data $114 (i32.const 16140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00E\03\c3\03\00\00\00\00\00\00\00\00") + (data $115 (i32.const 16172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\91\03E\03\a3\03\00\00\00\00\00\00") + (data $116 (i32.const 16204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\b1\03E\03\c2\03\00\00\00\00\00\00") + (data $117 (i32.const 16236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\a3\03B\00\00\00\00\00\00\00") + (data $118 (i32.const 16268) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc\00\00\00\00") + (data $119 (i32.const 16300) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc\00\00\00\00") + (data $120 (i32.const 16332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\03.\00b\00\00\00\00\00") + (data $121 (i32.const 16364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\03.\00b\00\00\00\00\00") + (data $122 (i32.const 16396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\03\ad\00B\00\00\00\00\00") + (data $123 (i32.const 16428) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\03\ad\00b\00\00\00\00\00") + (data $124 (i32.const 16460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00A\00\a3\034\d8B\deB\00\00\00") + (data $125 (i32.const 16492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00\c3\034\d8B\deb\00\00\00") + (data $126 (i32.const 16524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\a3\03E\03\00\00\00\00\00\00") + (data $127 (i32.const 16556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c2\03E\03\00\00\00\00\00\00") + (data $128 (i32.const 16588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\03E\03\91\03\00\00\00\00") + (data $129 (i32.const 16620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03\00\00\00\00") + (data $130 (i32.const 16652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\0e\18\a3\03\00\00\00\00\00\00") + (data $131 (i32.const 16684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\0e\18\c2\03\00\00\00\00\00\00") + (data $132 (i32.const 16716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\0e\18\a3\03B\00\00\00\00\00") + (data $133 (i32.const 16748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\0e\18\c3\03b\00\00\00\00\00") + (data $134 (i32.const 16780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00\a3\03\0e\18\00\00\00\00\00\00") + (data $135 (i32.const 16812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00\c2\03\0e\18\00\00\00\00\00\00") + (data $136 (i32.const 16844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\a3\03\0e\18B\00\00\00\00\00") + (data $137 (i32.const 16876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\c3\03\0e\18b\00\00\00\00\00") + (data $138 (i32.const 16908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18\00\00\00\00") + (data $139 (i32.const 16940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18\00\00\00\00") + (data $140 (i32.const 16972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B\00\00\00") + (data $141 (i32.const 17004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b\00\00\00") + (data $142 (i32.const 17036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\fb\00\00\00\00\00\00\00\00\00\00") + (data $143 (i32.const 17068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00F\00F\00\00\00\00\00\00\00\00\00") + (data $144 (i32.const 17100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00F\00I\00\00\00\00\00\00\00\00\00") + (data $145 (i32.const 17132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\02\fb\00\00\00\00\00\00\00\00\00\00") + (data $146 (i32.const 17164) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00F\00L\00\00\00\00\00\00\00\00\00") + (data $147 (i32.const 17196) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\03\fb\00\00\00\00\00\00\00\00\00\00") + (data $148 (i32.const 17228) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00F\00F\00I\00\00\00\00\00\00\00") + (data $149 (i32.const 17260) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\04\fb\00\00\00\00\00\00\00\00\00\00") + (data $150 (i32.const 17292) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00F\00F\00L\00\00\00\00\00\00\00") + (data $151 (i32.const 17324) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\05\fb\00\00\00\00\00\00\00\00\00\00") + (data $152 (i32.const 17356) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00S\00T\00\00\00\00\00\00\00\00\00") + (data $153 (i32.const 17388) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\06\fb\00\00\00\00\00\00\00\00\00\00") + (data $154 (i32.const 17420) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\f0\01\00\00\00\00\00\00\00\00\00\00") + (data $155 (i32.const 17452) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00J\00\0c\03\00\00\00\00\00\00\00\00") + (data $156 (i32.const 17484) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\96\1e\00\00\00\00\00\00\00\00\00\00") + (data $157 (i32.const 17516) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00H\001\03\00\00\00\00\00\00\00\00") + (data $158 (i32.const 17548) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\97\1e\00\00\00\00\00\00\00\00\00\00") + (data $159 (i32.const 17580) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00T\00\08\03\00\00\00\00\00\00\00\00") + (data $160 (i32.const 17612) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\98\1e\00\00\00\00\00\00\00\00\00\00") + (data $161 (i32.const 17644) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00W\00\n\03\00\00\00\00\00\00\00\00") + (data $162 (i32.const 17676) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\99\1e\00\00\00\00\00\00\00\00\00\00") + (data $163 (i32.const 17708) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00Y\00\n\03\00\00\00\00\00\00\00\00") + (data $164 (i32.const 17740) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\9a\1e\00\00\00\00\00\00\00\00\00\00") + (data $165 (i32.const 17772) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00A\00\be\02\00\00\00\00\00\00\00\00") + (data $166 (i32.const 17804) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $167 (i32.const 17900) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $168 (i32.const 17964) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $169 (i32.const 18092) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $170 (i32.const 18156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $171 (i32.const 18188) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $172 (i32.const 18588) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $173 (i32.const 19644) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $174 (i32.const 19740) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 \00\00\00\00\00\00\00") + (data $175 (i32.const 19804) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $176 (i32.const 19900) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $177 (i32.const 19964) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 \00\00\00\00\00\00\00") + (data $178 (i32.const 20032) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\a4\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 256 + i32.const 320 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 128 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 64 + i32.const 400 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 64 + i32.const 128 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/staticarray/StaticArray#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/casemap/casemap (param $c i32) (param $dir i32) (result i32) + (local $c0 i32) + (local $b i32) + (local $x i32) + (local $y i32) + (local $v i32) + (local $r i32) + (local $rt i32) + (local $rd i32) + (local $xn i32) + (local $xb i32) + (local $h i32) + (local $t i32) + local.get $c + local.set $c0 + local.get $c + i32.const 8 + i32.shr_u + local.set $b + local.get $c + i32.const 255 + i32.and + local.set $c + local.get $c + i32.const 3 + i32.div_u + local.set $x + local.get $c + i32.const 3 + i32.rem_u + local.set $y + i32.const 1420 + i32.const 1420 + local.get $b + i32.add + i32.load8_u + i32.const 86 + i32.mul + i32.add + local.get $x + i32.add + i32.load8_u + local.set $v + local.get $v + i32.const 4088 + local.get $y + i32.const 2 + i32.shl + i32.add + i32.load + i32.mul + i32.const 11 + i32.shr_u + i32.const 6 + i32.rem_u + local.set $v + i32.const 4100 + i32.const 5060 + local.get $b + i32.add + i32.load8_u + local.get $v + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + local.set $r + local.get $r + i32.const 255 + i32.and + local.set $rt + local.get $r + i32.const 8 + i32.shr_s + local.set $rd + local.get $rt + i32.const 2 + i32.lt_u + if + local.get $c0 + local.get $rd + i32.const 0 + local.get $rt + local.get $dir + i32.xor + i32.sub + i32.and + i32.add + return + end + local.get $rd + i32.const 255 + i32.and + local.set $xn + local.get $rd + i32.const 8 + i32.shr_u + local.set $xb + loop $while-continue|0 + local.get $xn + if + local.get $xn + i32.const 1 + i32.shr_u + local.set $h + i32.const 5572 + local.get $xb + local.get $h + i32.add + i32.const 2 + i32.mul + i32.add + i32.load8_u + local.set $t + local.get $t + local.get $c + i32.eq + if + i32.const 4100 + i32.const 5572 + local.get $xb + local.get $h + i32.add + i32.const 2 + i32.mul + i32.add + i32.load8_u offset=1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $r + local.get $r + i32.const 255 + i32.and + local.set $rt + local.get $r + i32.const 8 + i32.shr_s + local.set $rd + local.get $rt + i32.const 2 + i32.lt_u + if + local.get $c0 + local.get $rd + i32.const 0 + local.get $rt + local.get $dir + i32.xor + i32.sub + i32.and + i32.add + return + end + local.get $c0 + i32.const 1 + i32.add + local.get $dir + i32.const 1 + i32.shl + i32.sub + return + else + local.get $t + local.get $c + i32.gt_u + if + local.get $h + local.set $xn + else + local.get $xb + local.get $h + i32.add + local.set $xb + local.get $xn + local.get $h + i32.sub + local.set $xn + end + end + br $while-continue|0 + end + end + local.get $c0 + return + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/util/string/stagedBinaryLookup (param $table i32) (param $c i32) (result i32) + local.get $table + local.get $table + local.get $c + i32.const 8 + i32.shr_u + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.add + local.get $c + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $c + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 18188 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 18188 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 18188 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 18188 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/decimalCount64High (param $value i64) (result i32) + local.get $value + i64.const 1000000000000000 + i64.lt_u + if + local.get $value + i64.const 1000000000000 + i64.lt_u + if + i32.const 10 + local.get $value + i64.const 100000000000 + i64.ge_u + i32.add + local.get $value + i64.const 10000000000 + i64.ge_u + i32.add + return + else + i32.const 13 + local.get $value + i64.const 100000000000000 + i64.ge_u + i32.add + local.get $value + i64.const 10000000000000 + i64.ge_u + i32.add + return + end + unreachable + else + local.get $value + i64.const 100000000000000000 + i64.lt_u + if + i32.const 16 + local.get $value + i64.const 10000000000000000 + i64.ge_u + i32.add + return + else + i32.const 18 + local.get $value + i64.const -8446744073709551616 + i64.ge_u + i32.add + local.get $value + i64.const 1000000000000000000 + i64.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa64_dec_lut (param $buffer i32) (param $num i64) (param $offset i32) + (local $t i64) + (local $r i32) + (local $b i32) + (local $c i32) + (local $b1 i32) + (local $b2 i32) + (local $c1 i32) + (local $c2 i32) + (local $digits1 i64) + (local $digits2 i64) + loop $while-continue|0 + local.get $num + i64.const 100000000 + i64.ge_u + if + local.get $num + i64.const 100000000 + i64.div_u + local.set $t + local.get $num + local.get $t + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 10000 + i32.div_u + local.set $b + local.get $r + i32.const 10000 + i32.rem_u + local.set $c + local.get $b + i32.const 100 + i32.div_u + local.set $b1 + local.get $b + i32.const 100 + i32.rem_u + local.set $b2 + local.get $c + i32.const 100 + i32.div_u + local.set $c1 + local.get $c + i32.const 100 + i32.rem_u + local.set $c2 + i32.const 18188 + local.get $c1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 18188 + local.get $c2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + i32.const 18188 + local.get $b1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 18188 + local.get $b2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $buffer + local.get $num + i32.wrap_i64 + local.get $offset + call $~lib/util/number/utoa32_dec_lut + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 18608 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 18608 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 19664 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 19664 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/I64#toString (param $this i64) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/itoa64 + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 18608 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 19664 + local.get $0 + call $~lib/rt/itcms/__visit + global.get $~lib/util/casemap/SPECIALS_UPPER + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:std/string-casemapping + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 52848 + i32.const 52896 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#toUpperCase (param $this i32) (result i32) + (local $len i32) + (local $codes i32) + (local $specialsPtr i32) + (local $specialsLen i32) + (local $j i32) + (local $i i32) + (local $c i32) + (local $c|8 i32) + (local $c|9 i32) + (local $c1 i32) + (local $c0 i32) + (local $index i32) + (local $key i32) + (local $ptr i32) + (local $max i32) + (local $min i32) + (local $mid i32) + (local $cmp i32) + (local $ab i32) + (local $cc i32) + (local $code i32) + (local $lo i32) + (local $hi i32) + (local $24 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $24 + global.get $~lib/memory/__stack_pointer + local.get $24 + i32.store + local.get $24 + call $~lib/string/String#get:length + local.set $len + local.get $len + i32.eqz + if + local.get $this + local.set $24 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $24 + return + end + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 3 + i32.mul + i32.const 2 + i32.mul + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $codes + i32.store offset=4 + global.get $~lib/util/casemap/SPECIALS_UPPER + local.set $specialsPtr + global.get $~lib/util/casemap/SPECIALS_UPPER + local.set $24 + global.get $~lib/memory/__stack_pointer + local.get $24 + i32.store + local.get $24 + call $~lib/staticarray/StaticArray#get:length + local.set $specialsLen + i32.const 0 + local.set $j + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_u + if + block $for-continue|0 + local.get $this + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $c + block $~lib/util/string/isAscii|inlined.0 (result i32) + local.get $c + local.set $c|8 + local.get $c|8 + i32.const 7 + i32.shr_u + i32.eqz + br $~lib/util/string/isAscii|inlined.0 + end + if + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + block $~lib/util/string/toUpper8|inlined.0 (result i32) + local.get $c + local.set $c|9 + i32.const 0 + i32.const 0 + i32.gt_s + drop + i32.const 1292 + local.get $c|9 + i32.add + i32.load8_u + br $~lib/util/string/toUpper8|inlined.0 + end + i32.store16 + else + local.get $c + i32.const 55295 + i32.sub + i32.const 56320 + i32.const 55295 + i32.sub + i32.lt_u + if (result i32) + local.get $i + local.get $len + i32.const 1 + i32.sub + i32.lt_u + else + i32.const 0 + end + if + local.get $this + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.set $c1 + local.get $c1 + i32.const 56319 + i32.sub + i32.const 57344 + i32.const 56319 + i32.sub + i32.lt_u + if + local.get $c + local.set $c0 + local.get $c + i32.const 1023 + i32.and + i32.const 10 + i32.shl + local.get $c1 + i32.const 1023 + i32.and + i32.or + i32.const 65536 + i32.add + local.set $c + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $c + i32.const 131072 + i32.ge_u + if + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $c0 + local.get $c1 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-continue|0 + end + end + end + local.get $c + i32.const 9424 + i32.sub + i32.const 9449 + i32.const 9424 + i32.sub + i32.le_u + if + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $c + i32.const 26 + i32.sub + i32.store16 + else + i32.const -1 + local.set $index + local.get $c + i32.const 223 + i32.sub + i32.const 64279 + i32.const 223 + i32.sub + i32.le_u + if + block $~lib/util/casemap/bsearch|inlined.0 (result i32) + local.get $c + local.set $key + local.get $specialsPtr + local.set $ptr + local.get $specialsLen + local.set $max + i32.const 0 + local.set $min + loop $while-continue|1 + local.get $min + local.get $max + i32.le_s + if + local.get $min + local.get $max + i32.add + i32.const 3 + i32.shr_u + i32.const 2 + i32.shl + local.set $mid + local.get $ptr + local.get $mid + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $key + i32.sub + local.set $cmp + local.get $cmp + i32.const 0 + i32.eq + if + local.get $mid + br $~lib/util/casemap/bsearch|inlined.0 + else + local.get $cmp + i32.const 31 + i32.shr_u + if + local.get $mid + i32.const 4 + i32.add + local.set $min + else + local.get $mid + i32.const 4 + i32.sub + local.set $max + end + end + br $while-continue|1 + end + end + i32.const -1 + br $~lib/util/casemap/bsearch|inlined.0 + end + local.set $index + end + local.get $index + i32.const -1 + i32.xor + if + local.get $specialsPtr + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load offset=2 + local.set $ab + local.get $specialsPtr + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=6 + local.set $cc + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $ab + i32.store + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $cc + i32.store16 offset=4 + local.get $j + i32.const 1 + local.get $cc + i32.const 0 + i32.ne + i32.add + i32.add + local.set $j + else + local.get $c + i32.const 1 + call $~lib/util/casemap/casemap + i32.const 2097151 + i32.and + local.set $code + local.get $code + i32.const 65536 + i32.lt_s + if + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $code + i32.store16 + else + local.get $code + i32.const 65536 + i32.sub + local.set $code + local.get $code + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.set $lo + local.get $code + i32.const 1023 + i32.and + i32.const 56320 + i32.or + local.set $hi + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $lo + local.get $hi + i32.const 16 + i32.shl + i32.or + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + end + end + end + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|0 + end + end + local.get $codes + local.get $j + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.set $24 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $24 + return + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String#toLowerCase (param $this i32) (result i32) + (local $len i32) + (local $codes i32) + (local $j i32) + (local $i i32) + (local $c i32) + (local $c|6 i32) + (local $c|7 i32) + (local $c1 i32) + (local $c0 i32) + (local $sigma i32) + (local $buffer i32) + (local $index i32) + (local $len|13 i32) + (local $found i32) + (local $pos i32) + (local $16 i32) + (local $17 i32) + (local $minPos i32) + (local $buffer|19 i32) + (local $index|20 i32) + (local $c|21 i32) + (local $c1|22 i32) + (local $c|23 i32) + (local $c|24 i32) + (local $c|25 i32) + (local $26 i32) + (local $27 i32) + (local $maxPos i32) + (local $c|29 i32) + (local $c1|30 i32) + (local $c|31 i32) + (local $c|32 i32) + (local $code i32) + (local $lo i32) + (local $hi i32) + (local $36 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $36 + global.get $~lib/memory/__stack_pointer + local.get $36 + i32.store + local.get $36 + call $~lib/string/String#get:length + local.set $len + local.get $len + i32.eqz + if + local.get $this + local.set $36 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $36 + return + end + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.mul + i32.const 2 + i32.mul + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $codes + i32.store offset=4 + i32.const 0 + local.set $j + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_u + if + block $for-continue|0 + local.get $this + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $c + block $~lib/util/string/isAscii|inlined.1 (result i32) + local.get $c + local.set $c|6 + local.get $c|6 + i32.const 7 + i32.shr_u + i32.eqz + br $~lib/util/string/isAscii|inlined.1 + end + if + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + block $~lib/util/string/toLower8|inlined.0 (result i32) + local.get $c + local.set $c|7 + i32.const 0 + i32.const 0 + i32.gt_s + drop + i32.const 6060 + local.get $c|7 + i32.add + i32.load8_u + br $~lib/util/string/toLower8|inlined.0 + end + i32.store16 + else + local.get $c + i32.const 55295 + i32.sub + i32.const 56320 + i32.const 55295 + i32.sub + i32.lt_u + if (result i32) + local.get $i + local.get $len + i32.const 1 + i32.sub + i32.lt_u + else + i32.const 0 + end + if + local.get $this + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.set $c1 + local.get $c1 + i32.const 56319 + i32.sub + i32.const 57344 + i32.const 56319 + i32.sub + i32.lt_u + if + local.get $c + local.set $c0 + local.get $c + i32.const 1023 + i32.and + i32.const 10 + i32.shl + local.get $c1 + i32.const 1023 + i32.and + i32.or + i32.const 65536 + i32.add + local.set $c + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $c + i32.const 131072 + i32.ge_u + if + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $c0 + local.get $c1 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-continue|0 + end + end + end + local.get $c + i32.const 304 + i32.eq + if + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + i32.const 775 + i32.const 16 + i32.shl + i32.const 105 + i32.or + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + else + local.get $c + i32.const 931 + i32.eq + if + i32.const 963 + local.set $sigma + local.get $len + i32.const 1 + i32.gt_u + if (result i32) + block $~lib/util/string/isFinalSigma|inlined.0 (result i32) + local.get $this + local.set $buffer + local.get $i + local.set $index + local.get $len + local.set $len|13 + i32.const 0 + local.set $found + local.get $index + local.set $pos + i32.const 0 + local.tee $16 + local.get $pos + i32.const 30 + i32.sub + local.tee $17 + local.get $16 + local.get $17 + i32.gt_s + select + local.set $minPos + loop $while-continue|1 + local.get $pos + local.get $minPos + i32.gt_s + if + block $~lib/util/string/codePointBefore|inlined.0 (result i32) + local.get $buffer + local.set $buffer|19 + local.get $pos + local.set $index|20 + local.get $index|20 + i32.const 0 + i32.le_s + if + i32.const -1 + br $~lib/util/string/codePointBefore|inlined.0 + end + local.get $buffer|19 + local.get $index|20 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $c|21 + local.get $c|21 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + local.get $index|20 + i32.const 2 + i32.sub + i32.const 0 + i32.ge_s + i32.and + if + local.get $buffer|19 + local.get $index|20 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $c1|22 + local.get $c1|22 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if + local.get $c1|22 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + local.get $c|21 + i32.const 1023 + i32.and + i32.add + i32.const 65536 + i32.add + br $~lib/util/string/codePointBefore|inlined.0 + end + end + local.get $c|21 + i32.const 63488 + i32.and + i32.const 55296 + i32.eq + if (result i32) + i32.const 65533 + else + local.get $c|21 + end + br $~lib/util/string/codePointBefore|inlined.0 + end + local.set $c|23 + block $~lib/util/string/isCaseIgnorable|inlined.0 (result i32) + local.get $c|23 + local.set $c|24 + local.get $c|24 + i32.const 918000 + i32.lt_u + if (result i32) + i32.const 6188 + local.get $c|24 + call $~lib/util/string/stagedBinaryLookup + else + i32.const 0 + end + br $~lib/util/string/isCaseIgnorable|inlined.0 + end + i32.eqz + if + block $~lib/util/string/isCased|inlined.0 (result i32) + local.get $c|23 + local.set $c|25 + local.get $c|25 + i32.const 127370 + i32.lt_u + if (result i32) + i32.const 9196 + local.get $c|25 + call $~lib/util/string/stagedBinaryLookup + else + i32.const 0 + end + br $~lib/util/string/isCased|inlined.0 + end + if + i32.const 1 + local.set $found + else + i32.const 0 + br $~lib/util/string/isFinalSigma|inlined.0 + end + end + local.get $pos + local.get $c|23 + i32.const 65536 + i32.ge_s + i32.const 1 + i32.add + i32.sub + local.set $pos + br $while-continue|1 + end + end + local.get $found + i32.eqz + if + i32.const 0 + br $~lib/util/string/isFinalSigma|inlined.0 + end + local.get $index + i32.const 1 + i32.add + local.set $pos + local.get $pos + i32.const 30 + i32.add + local.tee $26 + local.get $len|13 + local.tee $27 + local.get $26 + local.get $27 + i32.lt_s + select + local.set $maxPos + loop $while-continue|2 + local.get $pos + local.get $maxPos + i32.lt_s + if + local.get $buffer + local.get $pos + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $c|29 + local.get $c|29 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + local.get $pos + i32.const 1 + i32.add + local.get $len|13 + i32.ne + i32.and + if + local.get $buffer + local.get $pos + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.set $c1|30 + local.get $c1|30 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $c|29 + i32.const 55296 + i32.sub + i32.const 10 + i32.shl + local.get $c1|30 + i32.const 56320 + i32.sub + i32.add + i32.const 65536 + i32.add + local.set $c|29 + end + end + block $~lib/util/string/isCaseIgnorable|inlined.1 (result i32) + local.get $c|29 + local.set $c|31 + local.get $c|31 + i32.const 918000 + i32.lt_u + if (result i32) + i32.const 6188 + local.get $c|31 + call $~lib/util/string/stagedBinaryLookup + else + i32.const 0 + end + br $~lib/util/string/isCaseIgnorable|inlined.1 + end + i32.eqz + if + block $~lib/util/string/isCased|inlined.1 (result i32) + local.get $c|29 + local.set $c|32 + local.get $c|32 + i32.const 127370 + i32.lt_u + if (result i32) + i32.const 9196 + local.get $c|32 + call $~lib/util/string/stagedBinaryLookup + else + i32.const 0 + end + br $~lib/util/string/isCased|inlined.1 + end + i32.eqz + br $~lib/util/string/isFinalSigma|inlined.0 + end + local.get $pos + local.get $c|29 + i32.const 65536 + i32.ge_u + i32.const 1 + i32.add + i32.add + local.set $pos + br $while-continue|2 + end + end + i32.const 1 + br $~lib/util/string/isFinalSigma|inlined.0 + end + else + i32.const 0 + end + if + i32.const 962 + local.set $sigma + end + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $sigma + i32.store16 + else + local.get $c + i32.const 9398 + i32.sub + i32.const 9423 + i32.const 9398 + i32.sub + i32.le_u + if + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $c + i32.const 26 + i32.add + i32.store16 + else + local.get $c + i32.const 0 + call $~lib/util/casemap/casemap + i32.const 2097151 + i32.and + local.set $code + local.get $code + i32.const 65536 + i32.lt_s + if + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $code + i32.store16 + else + local.get $code + i32.const 65536 + i32.sub + local.set $code + local.get $code + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.set $lo + local.get $code + i32.const 1023 + i32.and + i32.const 56320 + i32.or + local.set $hi + local.get $codes + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $lo + local.get $hi + i32.const 16 + i32.shl + i32.or + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + end + end + end + end + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|0 + end + end + local.get $codes + local.get $j + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.set $36 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $36 + return + ) + (func $~lib/string/String#codePointAt (param $this i32) (param $pos i32) (result i32) + (local $len i32) + (local $first i32) + (local $second i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/string/String#get:length + local.set $len + local.get $pos + local.get $len + i32.ge_u + if + i32.const -1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $this + local.get $pos + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $first + local.get $first + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + if (result i32) + i32.const 1 + else + local.get $pos + i32.const 1 + i32.add + local.get $len + i32.eq + end + if + local.get $first + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $this + local.get $pos + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.set $second + local.get $second + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + if + local.get $first + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $first + i32.const 55296 + i32.sub + i32.const 10 + i32.shl + local.get $second + i32.const 56320 + i32.sub + i32.add + i32.const 65536 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 32 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $start:std/string-casemapping + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 32 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10784 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 10832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10880 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 10928 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10976 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 11072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11072 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 11168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11264 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 11328 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11328 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 11392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11456 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 11552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11552 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 11648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11744 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 11840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11840 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 11936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12032 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 12112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12192 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 12272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12352 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 12416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12480 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 12560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12640 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 12720 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12800 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 12864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12928 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 13008 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13088 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 13168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13248 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 13408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13248 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 13568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13728 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 13760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13792 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 13824 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13856 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 14064 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13728 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 14272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14304 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 14336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14368 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 14368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 65536 + call $~lib/string/String.fromCodePoint + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 14624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 65536 + call $~lib/string/String.fromCodePoint + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 14624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14656 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 14688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14720 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 14752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 55 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14784 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 14816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14848 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 14880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14912 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 14944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14976 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15008 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15040 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15104 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15168 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15200 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15232 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 65 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15296 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15328 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15360 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15424 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15488 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15552 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15616 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15680 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15744 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15808 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 75 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15872 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15936 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16000 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 80 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16064 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 81 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16128 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16160 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 82 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16192 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16224 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16256 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 15328 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16288 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 85 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16352 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16384 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 86 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16416 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16448 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16480 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16512 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 88 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16544 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16576 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16608 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16672 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16704 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 91 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16736 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16800 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16864 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16896 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16928 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 16960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16992 + call $~lib/string/String#toLowerCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17024 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17056 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 99 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14304 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17152 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17216 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17280 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 103 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17344 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 104 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17408 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17440 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17504 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17536 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17568 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17600 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17632 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17696 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17728 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17760 + call $~lib/string/String#toUpperCase + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 17792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 6000 + i32.const 111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + i32.const 1114111 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/string/String.fromCodePoint + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#toLowerCase + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#toUpperCase + local.tee $3 + i32.store offset=16 + local.get $2 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.set $6 + local.get $2 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 1 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $4 + i64.const 0 + i64.ge_s + if + local.get $6 + local.get $4 + i64.const 16 + i64.shl + i64.add + local.set $6 + end + local.get $2 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 2 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $5 + i64.const 0 + i64.ge_s + if + local.get $6 + local.get $5 + i64.const 32 + i64.shl + i64.add + local.set $6 + end + local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.set $7 + local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 1 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $4 + i64.const 0 + i64.ge_s + if + local.get $7 + local.get $4 + i64.const 16 + i64.shl + i64.add + local.set $7 + end + local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 2 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $5 + i64.const 0 + i64.ge_s + if + local.get $7 + local.get $5 + i64.const 32 + i64.shl + i64.add + local.set $7 + end + local.get $0 + i32.const 0 + call $std/string-casemapping/toLowerCaseFromIndex + i64.extend_i32_s + local.set $8 + local.get $0 + i32.const 1 + call $std/string-casemapping/toLowerCaseFromIndex + i64.extend_i32_s + local.tee $4 + i64.const 0 + i64.ge_s + if + local.get $8 + local.get $4 + i64.const 16 + i64.shl + i64.add + local.set $8 + end + local.get $0 + i32.const 2 + call $std/string-casemapping/toLowerCaseFromIndex + i64.extend_i32_s + local.tee $5 + i64.const 0 + i64.ge_s + if + local.get $8 + local.get $5 + i64.const 32 + i64.shl + i64.add + local.set $8 + end + local.get $0 + i32.const 0 + call $std/string-casemapping/toUpperCaseFromIndex + i64.extend_i32_s + local.set $9 + local.get $0 + i32.const 1 + call $std/string-casemapping/toUpperCaseFromIndex + i64.extend_i32_s + local.tee $4 + i64.const 0 + i64.ge_s + if + local.get $9 + local.get $4 + i64.const 16 + i64.shl + i64.add + local.set $9 + end + local.get $0 + i32.const 2 + call $std/string-casemapping/toUpperCaseFromIndex + i64.extend_i32_s + local.tee $5 + i64.const 0 + i64.ge_s + if + local.get $9 + local.get $5 + i64.const 32 + i64.shl + i64.add + local.set $9 + end + local.get $6 + local.get $8 + i64.ne + if + i32.const 17824 + i32.const 1 + local.get $0 + f64.convert_i32_s + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 17920 + local.get $6 + i32.const 10 + call $~lib/number/I64#toString + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 19760 + local.get $8 + i32.const 10 + call $~lib/number/I64#toString + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + end + local.get $7 + local.get $9 + i64.ne + if + i32.const 19824 + i32.const 1 + local.get $0 + f64.convert_i32_s + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 19920 + local.get $7 + i32.const 10 + call $~lib/number/I64#toString + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 19984 + local.get $9 + i32.const 10 + call $~lib/number/I64#toString + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/string/String.__concat + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.fromCodePoint (param $code i32) (result i32) + (local $hasSur i32) + (local $out i32) + (local $hi i32) + (local $lo i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $code + i32.const 65535 + i32.gt_u + local.set $hasSur + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $hasSur + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $hasSur + i32.eqz + if + local.get $out + local.get $code + i32.store16 + else + local.get $code + i32.const 1114111 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 14576 + i32.const 39 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $code + i32.const 65536 + i32.sub + local.set $code + local.get $code + i32.const 1023 + i32.and + i32.const 56320 + i32.or + local.set $hi + local.get $code + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.set $lo + local.get $out + local.get $lo + local.get $hi + i32.const 16 + i32.shl + i32.or + i32.store + end + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/util/number/itoa64 (param $value i64) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $val32 i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|9 i32) + (local $buffer|10 i32) + (local $num|11 i64) + (local $offset|12 i32) + (local $decimals|13 i32) + (local $buffer|14 i32) + (local $num|15 i64) + (local $offset|16 i32) + (local $decimals|17 i32) + (local $18 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 17984 + i32.const 18112 + i32.const 431 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i64.const 0 + i64.ne + i32.eqz + if + i32.const 18176 + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return + end + local.get $value + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i64.const 0 + local.get $value + i64.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + call $~lib/util/number/decimalCount64High + local.set $decimals|9 + global.get $~lib/memory/__stack_pointer + local.get $decimals|9 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|10 + local.get $value + local.set $num|11 + local.get $decimals|9 + local.set $offset|12 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|10 + local.get $num|11 + local.get $offset|12 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 63 + local.get $value + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|14 + local.get $value + local.set $num|15 + local.get $decimals|13 + local.set $offset|16 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|14 + local.get $num|15 + local.get $offset|16 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|17 + global.get $~lib/memory/__stack_pointer + local.get $decimals|17 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $value + local.get $decimals|17 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return + ) +) diff --git a/tests/compiler/std/string-casemapping.js b/tests/compiler/std/string-casemapping.js index b944c36cf8..83a5422839 100644 --- a/tests/compiler/std/string-casemapping.js +++ b/tests/compiler/std/string-casemapping.js @@ -1,4 +1,4 @@ -exports.preInstantiate = function preInstantiate(imports) { +export function preInstantiate(imports) { imports.string_casemapping = { toUpperCaseFromIndex: function toUpperCaseFromIndex(index, codePointIndex) { const code = String.fromCodePoint(index).toUpperCase().codePointAt(codePointIndex|0); @@ -9,4 +9,4 @@ exports.preInstantiate = function preInstantiate(imports) { return code !== undefined ? code : -1; } }; -}; \ No newline at end of file +} diff --git a/tests/compiler/std/string-casemapping.json b/tests/compiler/std/string-casemapping.json index 59c251c705..1bdd02b1be 100644 --- a/tests/compiler/std/string-casemapping.json +++ b/tests/compiler/std/string-casemapping.json @@ -1,7 +1,4 @@ { "asc_flags": [ - "--runtime half", - "--explicitStart", - "--use ASC_RTRACE=1" ] -} \ No newline at end of file +} diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat deleted file mode 100644 index 242a26ef06..0000000000 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ /dev/null @@ -1,4966 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (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 $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) - (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 1028) "\01\00\00\00\01") - (data (i32.const 1040) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1088) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1136) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1200) "0\03\00\00\01\00\00\00\03\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\0d\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\0d\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05") - (data (i32.const 2032) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\0d\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06") - (data (i32.const 2655) "$++++++++\01\00TVVVVVVVV") - (data (i32.const 2694) "\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\0d\0dN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\0d1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV") - (data (i32.const 3203) "TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01") - (data (i32.const 3289) "*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01") - (data (i32.const 3448) "\0cl\00\00\00\00\00\06") - (data (i32.const 3494) "\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\0d\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\00\01") - (data (i32.const 3945) "N1P1P1P1P1P1P1P\0d\00\00\00\00\00$P1P1P1P1P") - (data (i32.const 4010) "+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01") - (data (i32.const 4123) "H") - (data (i32.const 4133) "*++++++++++++++++++++++++++") - (data (i32.const 4193) "++++++++\07\00HVVVVVVVV\02") - (data (i32.const 4268) "+++++++++++++UVVVVVVVVVVVV\0e") - (data (i32.const 4326) "$+++++++++++\07\00VVVVVVVVVVVV") - (data (i32.const 4396) "$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV") - (data (i32.const 4493) "*++++++++++VVVVVVVVVV\0e") - (data (i32.const 4547) "*++++++++++VVVVVVVVVV\0e") - (data (i32.const 4612) "+++++++++++UVVVVVVVVVV\0e") - (data (i32.const 4701) "\08\00\00V\01\00\009") - (data (i32.const 4716) "\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") - (data (i32.const 5673) "\06\'Qow") - (data (i32.const 5688) "|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa") - (data (i32.const 5716) "\b4\c4") - (data (i32.const 5838) "\c6\c9\00\00\00\db") - (data (i32.const 5927) "\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4") - (data (i32.const 5952) "\e7") - (data (i32.const 6038) "\ea") - (data (i32.const 6161) "\ed") - (data (i32.const 6184) "0\0c1\0dx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") - (data (i32.const 6592) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s") - (data (i32.const 6658) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10") - (data (i32.const 7202) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01") - (data (i32.const 7288) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0") - (data (i32.const 7346) "\f8\03") - (data (i32.const 7373) "\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01") - (data (i32.const 7420) "\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07") - (data (i32.const 7446) "\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e") - (data (i32.const 7484) "\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\") - (data (i32.const 7656) "\f2\07\c0\7f") - (data (i32.const 7672) "\f2\1f@?") - (data (i32.const 7685) "\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@") - (data (i32.const 7719) "\e0\fdf\00\00\00\c3\01\00\1e\00d \00 ") - (data (i32.const 7745) "\10") - (data (i32.const 7757) "\e0") - (data (i32.const 7780) "\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02") - (data (i32.const 7846) "\87\01\04\0e") - (data (i32.const 7876) "\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?") - (data (i32.const 7964) "\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb") - (data (i32.const 8025) "\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01") - (data (i32.const 8081) "0") - (data (i32.const 8095) "\80\03") - (data (i32.const 8111) "\80\00\80") - (data (i32.const 8126) "\ff\ff\ff\ff\00\00\00\00\00\80") - (data (i32.const 8162) " \00\00\00\00<>\08") - (data (i32.const 8181) "~") - (data (i32.const 8193) "p\00\00 ") - (data (i32.const 8257) "?\00\10") - (data (i32.const 8271) "\80\f7\bf\00\00\00\f0") - (data (i32.const 8288) "\03\00\ff\ff\ff\ff\03") - (data (i32.const 8304) "\01\00\00\07") - (data (i32.const 8321) "\03D\08\00\00`\10") - (data (i32.const 8346) "0\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X") - (data (i32.const 8429) "\f8\00\0e") - (data (i32.const 8446) " !\00\00\00\00\00@") - (data (i32.const 8472) "\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$") - (data (i32.const 8513) "\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e") - (data (i32.const 8577) " ") - (data (i32.const 8606) "\01") - (data (i32.const 8624) "\c0\07") - (data (i32.const 8642) "n\f0\00\00\00\00\00\87") - (data (i32.const 8670) "`\00\00\00\00\00\00\00\f0") - (data (i32.const 8727) "\18") - (data (i32.const 8746) "\c0\ff\01") - (data (i32.const 8770) "\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e") - (data (i32.const 8839) "\80\d3@") - (data (i32.const 8861) "\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f") - (data (i32.const 8905) "\ff\\\00\00@") - (data (i32.const 8920) "\f8\85\0d") - (data (i32.const 8952) "<\b0\01\00\000") - (data (i32.const 8968) "\f8\a7\01") - (data (i32.const 8983) "(\bf") - (data (i32.const 8997) "\e0\bc\0f") - (data (i32.const 9031) "\80\ff\06") - (data (i32.const 9065) "X\08") - (data (i32.const 9084) "\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03") - (data (i32.const 9128) "\7f\bf") - (data (i32.const 9140) "\fc\ff\ff\fcm") - (data (i32.const 9160) "~\b4\bf") - (data (i32.const 9172) "\a3") - (data (i32.const 9216) "\18\00\00\00\00\00\00\00\ff\01") - (data (i32.const 9280) "\1f\00\00\00\00\00\00\00\7f\00\0f") - (data (i32.const 9323) "\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b") - (data (i32.const 9365) "`\0f") - (data (i32.const 9390) "\80\03\f8\ff\e7\0f\00\00\00<") - (data (i32.const 9418) "\1c") - (data (i32.const 9442) "\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff") - (data (i32.const 9474) "\7f\ff\ff\f9\db\07") - (data (i32.const 9512) "\ff?") - (data (i32.const 9567) "\f0") - (data (i32.const 9596) "\7f") - (data (i32.const 9610) "\f0\0f") - (data (i32.const 9665) "\f8") - (data (i32.const 9666) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10") - (data (i32.const 10210) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f") - (data (i32.const 10346) " \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01") - (data (i32.const 10454) "\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7") - (data (i32.const 10486) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??") - (data (i32.const 10514) "\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f") - (data (i32.const 10608) "\02\80\00\00\ff\1f") - (data (i32.const 10626) "\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18") - (data (i32.const 10680) "\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf ") - (data (i32.const 10762) "\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?") - (data (i32.const 10790) "\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8") - (data (i32.const 10886) "\fe\ff\ff\07\fe\ff\ff\07") - (data (i32.const 10914) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 10936) "\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f") - (data (i32.const 10962) "\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07") - (data (i32.const 10998) "\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11018) "\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11042) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f") - (data (i32.const 11208) "\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03") - (data (i32.const 11248) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n") - (data (i32.const 11296) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n") - (data (i32.const 11344) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t") - (data (i32.const 11392) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t") - (data (i32.const 11440) "J\00\00\00\01\00\00\00\01\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") - (data (i32.const 11536) "J\00\00\00\01\00\00\00\01\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E") - (data (i32.const 11632) "J\00\00\00\01\00\00\00\01\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") - (data (i32.const 11728) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") - (data (i32.const 11792) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!") - (data (i32.const 11856) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") - (data (i32.const 11920) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") - (data (i32.const 12016) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)") - (data (i32.const 12112) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") - (data (i32.const 12208) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n") - (data (i32.const 12304) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N") - (data (i32.const 12400) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n") - (data (i32.const 12496) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03") - (data (i32.const 12560) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03") - (data (i32.const 12624) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,") - (data (i32.const 12688) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,") - (data (i32.const 12768) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") - (data (i32.const 12832) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") - (data (i32.const 12896) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.") - (data (i32.const 12976) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.") - (data (i32.const 13056) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03") - (data (i32.const 13120) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03") - (data (i32.const 13184) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03") - (data (i32.const 13248) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03") - (data (i32.const 13312) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03") - (data (i32.const 13392) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03") - (data (i32.const 13472) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!") - (data (i32.const 13552) ":\00\00\00\01\00\00\00\01\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!") - (data (i32.const 13632) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 13776) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z") - (data (i32.const 13920) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 14064) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\df") - (data (i32.const 14096) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00S\00S") - (data (i32.const 14128) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\01") - (data (i32.const 14160) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00i\00\07\03") - (data (i32.const 14192) "\ae\00\00\00\01\00\00\00\01\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10") - (data (i32.const 14384) "\b2\00\00\00\01\00\00\00\01\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c") - (data (i32.const 14592) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00s\00s") - (data (i32.const 14624) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\01\fb") - (data (i32.const 14656) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00f\00i") - (data (i32.const 14688) "\b8\00\00\00\01\00\00\00\01\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc") - (data (i32.const 14896) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 14944) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\dc") - (data (i32.const 14976) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\88\1f") - (data (i32.const 15008) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\80\1f") - (data (i32.const 15040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\8f\1f") - (data (i32.const 15072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\87\1f") - (data (i32.const 15104) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\fc\1f") - (data (i32.const 15136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\f3\1f") - (data (i32.const 15168) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\a3\03") - (data (i32.const 15200) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\c3\03") - (data (i32.const 15232) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00 \00\a3\03") - (data (i32.const 15264) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00 \00\c3\03") - (data (i32.const 15296) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\a3\03 ") - (data (i32.const 15328) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\c3\03 ") - (data (i32.const 15360) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00\a3\03 ") - (data (i32.const 15392) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00\c3\03 ") - (data (i32.const 15424) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03 ") - (data (i32.const 15456) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03 ") - (data (i32.const 15488) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03\n") - (data (i32.const 15520) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\n") - (data (i32.const 15552) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00\a3\03") - (data (i32.const 15584) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00\c2\03") - (data (i32.const 15616) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03b") - (data (i32.const 15648) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c3\03b") - (data (i32.const 15680) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03 ") - (data (i32.const 15712) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03 ") - (data (i32.const 15744) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00\a3\03 ") - (data (i32.const 15776) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00\c3\03 ") - (data (i32.const 15808) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00;\00\a3\03 ") - (data (i32.const 15840) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00;\00\c3\03 ") - (data (i32.const 15872) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\01\03\a3\03 ") - (data (i32.const 15904) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\01\03\c3\03 ") - (data (i32.const 15936) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 ") - (data (i32.const 15968) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 ") - (data (i32.const 16000) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03-") - (data (i32.const 16032) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03-") - (data (i32.const 16064) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-") - (data (i32.const 16096) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-") - (data (i32.const 16128) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") - (data (i32.const 16160) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") - (data (i32.const 16192) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\a3\03") - (data (i32.const 16224) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\c2\03") - (data (i32.const 16256) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00.\00\a3\03") - (data (i32.const 16288) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00.\00\c2\03") - (data (i32.const 16320) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\ad\00\a3\03") - (data (i32.const 16352) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\ad\00\c2\03") - (data (i32.const 16384) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\004\d8B\de\a3\03") - (data (i32.const 16416) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\004\d8B\de\c2\03") - (data (i32.const 16448) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00E\03\a3\03") - (data (i32.const 16480) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00E\03\c3\03") - (data (i32.const 16512) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\91\03E\03\a3\03") - (data (i32.const 16544) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\b1\03E\03\c2\03") - (data (i32.const 16576) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03B") - (data (i32.const 16608) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") - (data (i32.const 16640) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") - (data (i32.const 16672) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03.\00b") - (data (i32.const 16704) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03.\00b") - (data (i32.const 16736) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\ad\00B") - (data (i32.const 16768) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\ad\00b") - (data (i32.const 16800) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00A\00\a3\034\d8B\deB") - (data (i32.const 16832) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00\c3\034\d8B\deb") - (data (i32.const 16864) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03E\03") - (data (i32.const 16896) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03E\03") - (data (i32.const 16928) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") - (data (i32.const 16960) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") - (data (i32.const 16992) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\0e\18\a3\03") - (data (i32.const 17024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\0e\18\c2\03") - (data (i32.const 17056) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03B") - (data (i32.const 17088) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c3\03b") - (data (i32.const 17120) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03\0e\18") - (data (i32.const 17152) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\0e\18") - (data (i32.const 17184) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\0e\18B") - (data (i32.const 17216) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\0e\18b") - (data (i32.const 17248) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") - (data (i32.const 17280) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") - (data (i32.const 17312) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B") - (data (i32.const 17344) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b") - (data (i32.const 17376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\00\fb") - (data (i32.const 17408) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00F\00F") - (data (i32.const 17440) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00F\00I") - (data (i32.const 17472) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\02\fb") - (data (i32.const 17504) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00F\00L") - (data (i32.const 17536) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\03\fb") - (data (i32.const 17568) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00F\00F\00I") - (data (i32.const 17600) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\04\fb") - (data (i32.const 17632) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00F\00F\00L") - (data (i32.const 17664) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\05\fb") - (data (i32.const 17696) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00S\00T") - (data (i32.const 17728) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\06\fb") - (data (i32.const 17760) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\f0\01") - (data (i32.const 17792) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00J\00\0c\03") - (data (i32.const 17824) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\96\1e") - (data (i32.const 17856) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00H\001\03") - (data (i32.const 17888) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\97\1e") - (data (i32.const 17920) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00T\00\08\03") - (data (i32.const 17952) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\98\1e") - (data (i32.const 17984) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00W\00\n\03") - (data (i32.const 18016) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\99\1e") - (data (i32.const 18048) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00Y\00\n\03") - (data (i32.const 18080) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\9a\1e") - (data (i32.const 18112) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00A\00\be\02") - (data (i32.const 18144) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e") - (data (i32.const 18224) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 18288) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 18416) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 18480) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 18512) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 18608) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 18640) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 18704) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e") - (data (i32.const 18784) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (data (i32.const 18848) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 18904 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1056 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1104 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1104 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 18912 - local.set $1 - i32.const 18912 - i32.const 0 - i32.store - i32.const 20480 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 18912 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 18912 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 18912 - i32.const 20496 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 18912 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 1152 - i32.const 1104 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1104 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1104 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1104 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - call $~lib/rt/rtrace/onalloc - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - i32.const 1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/util/casemap/casemap (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 8 - i32.shr_u - local.tee $2 - i32.const 5672 - i32.add - i32.load8_u - local.get $2 - i32.const 2032 - i32.add - i32.load8_u - i32.const 86 - i32.mul - i32.const 2032 - i32.add - local.get $0 - i32.const 255 - i32.and - local.tee $5 - i32.const 3 - i32.div_u - i32.add - i32.load8_u - local.get $5 - i32.const 3 - i32.rem_u - i32.const 2 - i32.shl - i32.const 4700 - i32.add - i32.load - i32.mul - i32.const 11 - i32.shr_u - i32.const 6 - i32.rem_u - i32.add - i32.const 2 - i32.shl - i32.const 4712 - i32.add - i32.load - local.tee $2 - i32.const 8 - i32.shr_s - local.set $3 - block $folding-inner0 - local.get $2 - i32.const 255 - i32.and - local.tee $2 - i32.const 2 - i32.lt_u - br_if $folding-inner0 - local.get $3 - i32.const 255 - i32.and - local.set $2 - local.get $3 - i32.const 8 - i32.shr_u - local.set $4 - loop $while-continue|0 - local.get $2 - if - local.get $5 - local.get $2 - i32.const 1 - i32.shr_u - local.tee $3 - local.get $4 - i32.add - i32.const 1 - i32.shl - i32.const 6184 - i32.add - i32.load8_u - local.tee $6 - i32.eq - if (result i32) - local.get $3 - local.get $4 - i32.add - i32.const 1 - i32.shl - i32.const 6184 - i32.add - i32.load8_u offset=1 - i32.const 2 - i32.shl - i32.const 4712 - i32.add - i32.load - local.tee $2 - i32.const 8 - i32.shr_s - local.set $3 - local.get $2 - i32.const 255 - i32.and - local.tee $2 - i32.const 2 - i32.lt_u - br_if $folding-inner0 - local.get $0 - i32.const 1 - i32.add - local.get $1 - i32.const 1 - i32.shl - i32.sub - return - else - local.get $6 - local.get $5 - i32.gt_u - if (result i32) - local.get $3 - else - local.get $3 - local.get $4 - i32.add - local.set $4 - local.get $2 - local.get $3 - i32.sub - end - end - local.set $2 - br $while-continue|0 - end - end - local.get $0 - return - end - local.get $0 - local.get $3 - i32.const 0 - local.get $1 - local.get $2 - i32.xor - i32.sub - i32.and - i32.add - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - local.get $1 - i32.load - local.tee $5 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $4 - i32.const 1 - i32.and - if - local.get $5 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 18904 - i32.ge_u - if - local.get $1 - local.get $3 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - i32.const 16 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - if (result i32) - local.get $2 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/string/String#toUpperCase (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.get $0 - call $~lib/string/String#get:length - local.tee $8 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $8 - i32.const 3 - i32.mul - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $10 - i32.const 1216 - call $~lib/string/String#get:length - local.set $3 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_u - if - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.tee $2 - i32.const 7 - i32.shr_u - if - block $for-continue|0 - local.get $9 - local.get $8 - i32.const 1 - i32.sub - i32.lt_u - i32.const 0 - local.get $2 - i32.const 55295 - i32.sub - i32.const 1025 - i32.lt_u - select - if - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.tee $4 - i32.const 56319 - i32.sub - i32.const 1025 - i32.lt_u - if - local.get $9 - i32.const 1 - i32.add - local.set $9 - local.get $4 - i32.const 1023 - i32.and - local.get $2 - local.tee $1 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.or - i32.const 65536 - i32.add - local.tee $2 - i32.const 131072 - i32.ge_u - if - local.get $10 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $11 - i32.const 1 - i32.add - local.set $11 - br $for-continue|0 - end - end - end - local.get $2 - i32.const 9424 - i32.sub - i32.const 25 - i32.le_u - if - local.get $10 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.const 26 - i32.sub - i32.store16 - else - local.get $2 - i32.const 223 - i32.sub - i32.const 64056 - i32.le_u - if (result i32) - local.get $3 - local.set $1 - i32.const 0 - local.set $7 - block $~lib/util/casemap/bsearch|inlined.0 - loop $while-continue|1 - local.get $7 - local.get $1 - i32.le_s - if - local.get $1 - local.get $7 - i32.add - i32.const 3 - i32.shr_u - i32.const 2 - i32.shl - local.tee $6 - local.set $4 - local.get $6 - i32.const 1 - i32.shl - i32.const 1216 - i32.add - i32.load16_u - local.get $2 - i32.sub - local.tee $5 - i32.eqz - br_if $~lib/util/casemap/bsearch|inlined.0 - local.get $5 - i32.const 31 - i32.shr_u - if - local.get $6 - i32.const 4 - i32.add - local.set $7 - else - local.get $6 - i32.const 4 - i32.sub - local.set $1 - end - br $while-continue|1 - end - end - i32.const -1 - local.set $4 - end - local.get $4 - else - i32.const -1 - end - local.tee $1 - i32.const -1 - i32.xor - if - local.get $1 - i32.const 1 - i32.shl - i32.const 1216 - i32.add - local.tee $4 - i32.load16_u offset=6 - local.set $2 - local.get $10 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.tee $1 - local.get $4 - i32.load offset=2 - i32.store - local.get $1 - local.get $2 - i32.store16 offset=4 - local.get $11 - local.get $2 - i32.const 0 - i32.ne - i32.const 1 - i32.add - i32.add - local.set $11 - else - local.get $2 - i32.const 1 - call $~lib/util/casemap/casemap - i32.const 2097151 - i32.and - local.tee $2 - i32.const 65536 - i32.lt_s - if - local.get $10 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - else - local.get $10 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.const 65536 - i32.sub - local.tee $2 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - local.get $2 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - i32.or - i32.store - local.get $11 - i32.const 1 - i32.add - local.set $11 - end - end - end - end - else - local.get $10 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $2 - i32.const 97 - i32.sub - i32.const 26 - i32.lt_u - i32.const 0 - i32.ne - i32.const 5 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store16 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - local.get $11 - i32.const 1 - i32.add - local.set $11 - br $for-loop|0 - end - end - local.get $10 - local.get $11 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__realloc - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 18904 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - if - local.get $3 - i32.load16_u - local.tee $0 - local.get $1 - i32.load16_u - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - local.get $6 - i32.sub - return - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/util/string/stagedBinaryLookup (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $0 - local.get $1 - i32.const 8 - i32.shr_u - i32.add - i32.load8_u - i32.const 5 - i32.shl - i32.add - local.get $1 - i32.const 255 - i32.and - i32.const 3 - i32.shr_u - i32.add - i32.load8_u - local.get $1 - i32.const 7 - i32.and - i32.shr_u - i32.const 1 - i32.and - ) - (func $~lib/string/String#toLowerCase (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.get $0 - call $~lib/string/String#get:length - local.tee $12 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $12 - i32.const 2 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $10 - loop $for-loop|0 - local.get $4 - local.get $12 - i32.lt_u - if - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.tee $3 - local.set $1 - local.get $3 - i32.const 7 - i32.shr_u - if - block $for-continue|0 - local.get $4 - local.get $12 - i32.const 1 - i32.sub - i32.lt_u - i32.const 0 - local.get $3 - i32.const 55295 - i32.sub - i32.const 1025 - i32.lt_u - select - if - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.tee $7 - i32.const 56319 - i32.sub - i32.const 1025 - i32.lt_u - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.const 1023 - i32.and - local.get $3 - local.tee $1 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.or - i32.const 65536 - i32.add - local.tee $3 - i32.const 131072 - i32.ge_u - if - local.get $10 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $7 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $11 - i32.const 1 - i32.add - local.set $11 - br $for-continue|0 - end - end - end - local.get $3 - i32.const 304 - i32.eq - if - local.get $10 - local.get $11 - i32.const 1 - i32.shl - i32.add - i32.const 50790505 - i32.store - local.get $11 - i32.const 1 - i32.add - local.set $11 - else - local.get $3 - i32.const 931 - i32.eq - if - local.get $10 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $12 - i32.const 1 - i32.gt_u - if (result i32) - block $~lib/util/string/isFinalSigma|inlined.0 (result i32) - local.get $0 - local.set $7 - local.get $4 - i32.const 0 - local.set $2 - i32.const 0 - local.get $4 - local.tee $3 - i32.const 30 - i32.sub - local.tee $1 - i32.const 0 - local.get $1 - i32.gt_s - select - local.set $8 - loop $while-continue|1 - local.get $3 - local.get $8 - i32.gt_s - if - local.get $3 - local.set $1 - i32.const -1 - local.set $6 - block $~lib/util/string/codePointBefore|inlined.0 - local.get $3 - i32.const 0 - i32.le_s - br_if $~lib/util/string/codePointBefore|inlined.0 - local.get $7 - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.tee $9 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - local.get $1 - i32.const 2 - i32.sub - i32.const 0 - i32.ge_s - i32.and - if - local.get $9 - i32.const 1023 - i32.and - local.get $7 - local.get $1 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.tee $1 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.add - i32.const 65536 - i32.add - local.set $6 - local.get $1 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - br_if $~lib/util/string/codePointBefore|inlined.0 - end - i32.const 65533 - local.get $9 - local.get $9 - i32.const 63488 - i32.and - i32.const 55296 - i32.eq - select - local.set $6 - end - local.get $6 - local.tee $1 - i32.const 918000 - i32.lt_u - if (result i32) - i32.const 6658 - local.get $1 - call $~lib/util/string/stagedBinaryLookup - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - local.get $1 - i32.const 127370 - i32.lt_u - if (result i32) - i32.const 9666 - local.get $1 - call $~lib/util/string/stagedBinaryLookup - else - i32.const 0 - end - i32.eqz - br_if $~lib/util/string/isFinalSigma|inlined.0 - drop - i32.const 1 - local.set $2 - end - local.get $3 - local.get $1 - i32.const 65536 - i32.ge_s - i32.const 1 - i32.add - i32.sub - local.set $3 - br $while-continue|1 - end - end - i32.const 0 - local.get $2 - i32.eqz - br_if $~lib/util/string/isFinalSigma|inlined.0 - drop - i32.const 1 - i32.add - local.tee $3 - i32.const 30 - i32.add - local.tee $1 - local.get $12 - local.get $1 - local.get $12 - i32.lt_s - select - local.set $5 - loop $while-continue|2 - local.get $3 - local.get $5 - i32.lt_s - if - local.get $7 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.tee $1 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - local.get $12 - local.get $3 - i32.const 1 - i32.add - i32.ne - i32.and - if (result i32) - local.get $7 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.tee $6 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if (result i32) - local.get $1 - i32.const 10 - i32.shl - local.get $6 - i32.add - i32.const -56613888 - i32.add - else - local.get $1 - end - else - local.get $1 - end - local.tee $6 - i32.const 918000 - i32.lt_u - if (result i32) - i32.const 6658 - local.get $6 - call $~lib/util/string/stagedBinaryLookup - else - i32.const 0 - end - i32.eqz - if - local.get $6 - i32.const 127370 - i32.lt_u - if (result i32) - i32.const 9666 - local.get $6 - call $~lib/util/string/stagedBinaryLookup - else - i32.const 0 - end - i32.eqz - br $~lib/util/string/isFinalSigma|inlined.0 - end - local.get $3 - local.get $6 - i32.const 65536 - i32.ge_u - i32.const 1 - i32.add - i32.add - local.set $3 - br $while-continue|2 - end - end - i32.const 1 - end - else - i32.const 0 - end - if (result i32) - i32.const 962 - else - i32.const 963 - end - i32.store16 - else - local.get $3 - i32.const 9398 - i32.sub - i32.const 25 - i32.le_u - if - local.get $10 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 26 - i32.add - i32.store16 - else - local.get $3 - i32.const 0 - call $~lib/util/casemap/casemap - i32.const 2097151 - i32.and - local.tee $3 - i32.const 65536 - i32.lt_s - if - local.get $10 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.store16 - else - local.get $10 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 65536 - i32.sub - local.tee $3 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $3 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - local.get $11 - i32.const 1 - i32.add - local.set $11 - end - end - end - end - end - else - local.get $10 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $1 - i32.const 65 - i32.sub - i32.const 26 - i32.lt_u - i32.const 0 - i32.ne - i32.const 5 - i32.shl - i32.or - i32.store16 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - local.get $11 - i32.const 1 - i32.add - local.set $11 - br $for-loop|0 - end - end - local.get $10 - local.get $11 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__realloc - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1114111 - i32.gt_u - if - i32.const 0 - i32.const 14912 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - local.get $0 - i32.const 65535 - i32.gt_s - local.tee $2 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $1 - local.get $2 - if - local.get $1 - local.get $0 - i32.const 65536 - i32.sub - local.tee $0 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $0 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - else - local.get $1 - local.get $0 - i32.store16 - end - local.get $1 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#codePointAt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - i32.ge_u - if - i32.const -1 - return - end - i32.const 1 - local.get $2 - local.get $1 - i32.const 1 - i32.add - i32.eq - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.tee $2 - i32.const 64512 - i32.and - i32.const 55296 - i32.ne - select - if - local.get $2 - return - end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.tee $0 - i32.const 64512 - i32.and - i32.const 56320 - i32.ne - if - local.get $2 - return - end - local.get $2 - i32.const 10 - i32.shl - local.get $0 - i32.add - i32.const -56613888 - i32.add - ) - (func $~lib/util/number/utoa64 (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i64.eqz - if - i32.const 18496 - return - end - local.get $0 - i64.const 4294967295 - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.tee $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - local.get $1 - i32.const 100 - i32.lt_u - select - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - local.get $1 - i32.const 10000000 - i32.lt_u - select - local.get $1 - i32.const 100000 - i32.lt_u - select - local.tee $2 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $4 - local.set $3 - loop $do-continue|0 - local.get $1 - i32.const 10 - i32.rem_u - local.set $5 - local.get $1 - i32.const 10 - i32.div_u - local.set $1 - local.get $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $5 - i32.const 48 - i32.add - i32.store16 - local.get $1 - br_if $do-continue|0 - end - else - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 - i64.const 1000000000000000 - i64.lt_u - select - local.tee $1 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $4 - local.set $2 - loop $do-continue|00 - local.get $0 - i64.const 10 - i64.rem_u - i32.wrap_i64 - local.set $3 - local.get $0 - i64.const 10 - i64.div_u - local.set $0 - local.get $2 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 - local.get $0 - i64.const 0 - i64.ne - br_if $do-continue|00 - end - end - local.get $4 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $__inlined_func$~lib/string/String#concat (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 18624 - local.get $2 - select - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - i32.eqz - if - local.get $0 - i32.const 18624 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 18624 - local.set $0 - end - local.get $3 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.tee $4 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.tee $6 - i32.add - local.tee $1 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - i32.const 1040 - br $__inlined_func$~lib/string/String#concat - end - local.get $1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - local.get $3 - local.get $4 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.add - local.get $0 - local.get $6 - call $~lib/memory/memory.copy - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - end - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $start:std/string-casemapping - (local $0 i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (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 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) - i32.const 1040 - call $~lib/string/String#toUpperCase - local.tee $13 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - call $~lib/string/String#toLowerCase - local.tee $14 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11264 - call $~lib/string/String#toUpperCase - local.tee $15 - i32.const 11312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11360 - call $~lib/string/String#toLowerCase - local.tee $16 - i32.const 11408 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11456 - call $~lib/string/String#toUpperCase - local.tee $17 - i32.const 11552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11552 - call $~lib/string/String#toLowerCase - local.tee $18 - i32.const 11648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11744 - call $~lib/string/String#toUpperCase - local.tee $19 - i32.const 11808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11808 - call $~lib/string/String#toLowerCase - local.tee $20 - i32.const 11872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11936 - call $~lib/string/String#toUpperCase - local.tee $21 - i32.const 12032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12032 - call $~lib/string/String#toLowerCase - local.tee $22 - i32.const 12128 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12224 - call $~lib/string/String#toUpperCase - local.tee $23 - i32.const 12320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12320 - call $~lib/string/String#toLowerCase - local.tee $24 - i32.const 12416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12512 - call $~lib/string/String#toUpperCase - local.tee $25 - i32.const 12576 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12640 - call $~lib/string/String#toUpperCase - local.tee $26 - i32.const 12704 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12784 - call $~lib/string/String#toUpperCase - local.tee $27 - i32.const 12848 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12912 - call $~lib/string/String#toUpperCase - local.tee $28 - i32.const 12992 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13072 - call $~lib/string/String#toUpperCase - local.tee $29 - i32.const 13136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13200 - call $~lib/string/String#toUpperCase - local.tee $30 - i32.const 13264 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13328 - call $~lib/string/String#toUpperCase - local.tee $31 - i32.const 13408 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13488 - call $~lib/string/String#toUpperCase - local.tee $32 - i32.const 13568 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13648 - call $~lib/string/String#toUpperCase - local.tee $33 - i32.const 13792 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13648 - call $~lib/string/String#toLowerCase - local.tee $34 - i32.const 13936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14080 - call $~lib/string/String#toUpperCase - local.tee $35 - i32.const 14112 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14144 - call $~lib/string/String#toLowerCase - local.tee $36 - i32.const 14176 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14208 - call $~lib/string/String#toUpperCase - local.tee $37 - i32.const 14400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14080 - call $~lib/string/String#toUpperCase - local.tee $38 - call $~lib/string/String#toLowerCase - local.tee $39 - i32.const 14608 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14640 - call $~lib/string/String#toUpperCase - local.tee $40 - call $~lib/string/String#toLowerCase - local.tee $41 - i32.const 14672 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14704 - call $~lib/string/String#toUpperCase - local.tee $42 - call $~lib/string/String#toLowerCase - local.tee $43 - i32.const 14704 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 65536 - call $~lib/string/String.fromCodePoint - local.tee $44 - call $~lib/string/String#toLowerCase - local.tee $45 - i32.const 14960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 65536 - call $~lib/string/String.fromCodePoint - local.tee $46 - call $~lib/string/String#toUpperCase - local.tee $47 - i32.const 14960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14992 - call $~lib/string/String#toLowerCase - local.tee $48 - i32.const 15024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 54 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15056 - call $~lib/string/String#toLowerCase - local.tee $49 - i32.const 15088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 55 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15120 - call $~lib/string/String#toLowerCase - local.tee $50 - i32.const 15152 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15184 - call $~lib/string/String#toLowerCase - local.tee $51 - i32.const 15216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15248 - call $~lib/string/String#toLowerCase - local.tee $52 - i32.const 15280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 60 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15312 - call $~lib/string/String#toLowerCase - local.tee $53 - i32.const 15344 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15376 - call $~lib/string/String#toLowerCase - local.tee $54 - i32.const 15408 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15440 - call $~lib/string/String#toLowerCase - local.tee $55 - i32.const 15472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15504 - call $~lib/string/String#toLowerCase - local.tee $56 - i32.const 15536 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15568 - call $~lib/string/String#toLowerCase - local.tee $57 - i32.const 15600 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 65 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15632 - call $~lib/string/String#toLowerCase - local.tee $58 - i32.const 15664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15696 - call $~lib/string/String#toLowerCase - local.tee $59 - i32.const 15728 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 67 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15760 - call $~lib/string/String#toLowerCase - local.tee $60 - i32.const 15792 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 68 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15824 - call $~lib/string/String#toLowerCase - local.tee $61 - i32.const 15856 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15888 - call $~lib/string/String#toLowerCase - local.tee $62 - i32.const 15920 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15952 - call $~lib/string/String#toLowerCase - local.tee $63 - i32.const 15984 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16016 - call $~lib/string/String#toLowerCase - local.tee $64 - i32.const 16048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16080 - call $~lib/string/String#toLowerCase - local.tee $65 - i32.const 16112 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 74 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16144 - call $~lib/string/String#toLowerCase - local.tee $66 - i32.const 16176 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 75 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16208 - call $~lib/string/String#toLowerCase - local.tee $67 - i32.const 16240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16272 - call $~lib/string/String#toLowerCase - local.tee $68 - i32.const 16304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16336 - call $~lib/string/String#toLowerCase - local.tee $69 - i32.const 16368 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 80 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16400 - call $~lib/string/String#toLowerCase - local.tee $70 - i32.const 16432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 81 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16464 - call $~lib/string/String#toLowerCase - local.tee $71 - i32.const 16496 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 82 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16528 - call $~lib/string/String#toLowerCase - local.tee $72 - i32.const 16560 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 83 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16592 - call $~lib/string/String#toLowerCase - local.tee $73 - i32.const 15664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16624 - call $~lib/string/String#toLowerCase - local.tee $74 - i32.const 16656 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 85 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16688 - call $~lib/string/String#toLowerCase - local.tee $75 - i32.const 16720 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 86 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16752 - call $~lib/string/String#toLowerCase - local.tee $76 - i32.const 16784 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16816 - call $~lib/string/String#toLowerCase - local.tee $77 - i32.const 16848 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 88 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16880 - call $~lib/string/String#toLowerCase - local.tee $78 - i32.const 16912 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 89 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16944 - call $~lib/string/String#toLowerCase - local.tee $79 - i32.const 16976 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 90 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17008 - call $~lib/string/String#toLowerCase - local.tee $80 - i32.const 17040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 91 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17072 - call $~lib/string/String#toLowerCase - local.tee $81 - i32.const 17104 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17136 - call $~lib/string/String#toLowerCase - local.tee $82 - i32.const 17168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 93 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17200 - call $~lib/string/String#toLowerCase - local.tee $83 - i32.const 17232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 94 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17264 - call $~lib/string/String#toLowerCase - local.tee $84 - i32.const 17296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17328 - call $~lib/string/String#toLowerCase - local.tee $85 - i32.const 17360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 96 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17392 - call $~lib/string/String#toUpperCase - local.tee $86 - i32.const 17424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 99 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14640 - call $~lib/string/String#toUpperCase - local.tee $87 - i32.const 17456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17488 - call $~lib/string/String#toUpperCase - local.tee $88 - i32.const 17520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17552 - call $~lib/string/String#toUpperCase - local.tee $89 - i32.const 17584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17616 - call $~lib/string/String#toUpperCase - local.tee $90 - i32.const 17648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17680 - call $~lib/string/String#toUpperCase - local.tee $91 - i32.const 17712 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17744 - call $~lib/string/String#toUpperCase - local.tee $92 - i32.const 17712 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17776 - call $~lib/string/String#toUpperCase - local.tee $93 - i32.const 17808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17840 - call $~lib/string/String#toUpperCase - local.tee $94 - i32.const 17872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17904 - call $~lib/string/String#toUpperCase - local.tee $95 - i32.const 17936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17968 - call $~lib/string/String#toUpperCase - local.tee $96 - i32.const 18000 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 109 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 18032 - call $~lib/string/String#toUpperCase - local.tee $97 - i32.const 18064 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 18096 - call $~lib/string/String#toUpperCase - local.tee $98 - i32.const 18128 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 6608 - i32.const 111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $4 - i32.const 1114111 - i32.le_s - if - local.get $4 - call $~lib/string/String.fromCodePoint - local.tee $12 - call $~lib/string/String#toLowerCase - local.set $5 - local.get $12 - call $~lib/string/String#toUpperCase - local.set $6 - local.get $5 - i32.const 0 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.set $3 - local.get $5 - i32.const 1 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $0 - i64.const 0 - i64.ge_u - if - local.get $3 - local.get $0 - i64.const 16 - i64.shl - i64.add - local.set $3 - end - local.get $5 - i32.const 2 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $0 - i64.const 0 - i64.ge_u - if - local.get $3 - local.get $0 - i64.const 32 - i64.shl - i64.add - local.set $3 - end - local.get $6 - i32.const 0 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.set $0 - local.get $6 - i32.const 1 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $1 - i64.const 0 - i64.ge_u - if - local.get $0 - local.get $1 - i64.const 16 - i64.shl - i64.add - local.set $0 - end - local.get $6 - i32.const 2 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $1 - i64.const 0 - i64.ge_u - if - local.get $0 - local.get $1 - i64.const 32 - i64.shl - i64.add - local.set $0 - end - local.get $4 - i32.const 0 - call $std/string-casemapping/toLowerCaseFromIndex - i64.extend_i32_s - local.set $1 - local.get $4 - i32.const 1 - call $std/string-casemapping/toLowerCaseFromIndex - i64.extend_i32_s - local.tee $2 - i64.const 0 - i64.ge_u - if - local.get $1 - local.get $2 - i64.const 16 - i64.shl - i64.add - local.set $1 - end - local.get $4 - i32.const 2 - call $std/string-casemapping/toLowerCaseFromIndex - i64.extend_i32_s - local.tee $2 - i64.const 0 - i64.ge_u - if - local.get $1 - local.get $2 - i64.const 32 - i64.shl - i64.add - local.set $1 - end - local.get $4 - i32.const 0 - call $std/string-casemapping/toUpperCaseFromIndex - i64.extend_i32_s - local.set $2 - local.get $4 - i32.const 1 - call $std/string-casemapping/toUpperCaseFromIndex - i64.extend_i32_s - local.tee $7 - i64.const 0 - i64.ge_u - if - local.get $2 - local.get $7 - i64.const 16 - i64.shl - i64.add - local.set $2 - end - local.get $4 - i32.const 2 - call $std/string-casemapping/toUpperCaseFromIndex - i64.extend_i32_s - local.tee $7 - i64.const 0 - i64.ge_u - if - local.get $2 - local.get $7 - i64.const 32 - i64.shl - i64.add - local.set $2 - end - local.get $1 - local.get $3 - i64.ne - if - i32.const 18160 - i32.const 1 - local.get $4 - f64.convert_i32_s - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 18240 - local.get $3 - call $~lib/util/number/utoa64 - local.tee $8 - call $~lib/string/String.__concat - local.tee $9 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 18656 - local.get $1 - call $~lib/util/number/utoa64 - local.tee $10 - call $~lib/string/String.__concat - local.tee $11 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i64.ne - if - i32.const 18720 - i32.const 1 - local.get $4 - f64.convert_i32_s - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 18800 - local.get $0 - call $~lib/util/number/utoa64 - local.tee $8 - call $~lib/string/String.__concat - local.tee $9 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 18864 - local.get $2 - call $~lib/util/number/utoa64 - local.tee $10 - call $~lib/string/String.__concat - local.tee $11 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - end - local.get $12 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $55 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $59 - call $~lib/rt/pure/__release - local.get $60 - call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - local.get $64 - call $~lib/rt/pure/__release - local.get $65 - call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $67 - call $~lib/rt/pure/__release - local.get $68 - call $~lib/rt/pure/__release - local.get $69 - call $~lib/rt/pure/__release - local.get $70 - call $~lib/rt/pure/__release - local.get $71 - call $~lib/rt/pure/__release - local.get $72 - call $~lib/rt/pure/__release - local.get $73 - call $~lib/rt/pure/__release - local.get $74 - call $~lib/rt/pure/__release - local.get $75 - call $~lib/rt/pure/__release - local.get $76 - call $~lib/rt/pure/__release - local.get $77 - call $~lib/rt/pure/__release - local.get $78 - call $~lib/rt/pure/__release - local.get $79 - call $~lib/rt/pure/__release - local.get $80 - call $~lib/rt/pure/__release - local.get $81 - call $~lib/rt/pure/__release - local.get $82 - call $~lib/rt/pure/__release - local.get $83 - call $~lib/rt/pure/__release - local.get $84 - call $~lib/rt/pure/__release - local.get $85 - call $~lib/rt/pure/__release - local.get $86 - call $~lib/rt/pure/__release - local.get $87 - call $~lib/rt/pure/__release - local.get $88 - call $~lib/rt/pure/__release - local.get $89 - call $~lib/rt/pure/__release - local.get $90 - call $~lib/rt/pure/__release - local.get $91 - call $~lib/rt/pure/__release - local.get $92 - call $~lib/rt/pure/__release - local.get $93 - call $~lib/rt/pure/__release - local.get $94 - call $~lib/rt/pure/__release - local.get $95 - call $~lib/rt/pure/__release - local.get $96 - call $~lib/rt/pure/__release - local.get $97 - call $~lib/rt/pure/__release - local.get $98 - call $~lib/rt/pure/__release - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:std/string-casemapping - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1056 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 18904 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1056 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1056 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/std/string-casemapping.release.wat b/tests/compiler/std/string-casemapping.release.wat new file mode 100644 index 0000000000..c93b01b017 --- /dev/null +++ b/tests/compiler/std/string-casemapping.release.wat @@ -0,0 +1,5755 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $9 (func (param i32 i32 i32))) + (type $10 (func (param i64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) + (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 53848)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02") + (data $1 (i32.const 1068) "<") + (data $1.1 (i32.const 1080) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1132) "<") + (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1260) "<") + (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1324) ",") + (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1404) "<") + (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1468) "L\03") + (data $9.1 (i32.const 1480) "\04\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\r\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\r\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05") + (data $10 (i32.const 2317) "\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7f") + (data $11 (i32.const 2444) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\r\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06") + (data $11.1 (i32.const 3067) "$++++++++\01\00TVVVVVVVV") + (data $11.2 (i32.const 3106) "\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\r\rN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\r1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV") + (data $11.3 (i32.const 3615) "TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01") + (data $11.4 (i32.const 3701) "*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01") + (data $11.5 (i32.const 3860) "\0cl\00\00\00\00\00\06") + (data $11.6 (i32.const 3906) "\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\r\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\00\01") + (data $11.7 (i32.const 4357) "N1P1P1P1P1P1P1P\r\00\00\00\00\00$P1P1P1P1P") + (data $11.8 (i32.const 4422) "+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01") + (data $11.9 (i32.const 4535) "H") + (data $11.10 (i32.const 4545) "*++++++++++++++++++++++++++") + (data $11.11 (i32.const 4605) "++++++++\07\00HVVVVVVVV\02") + (data $11.12 (i32.const 4680) "+++++++++++++UVVVVVVVVVVVV\0e") + (data $11.13 (i32.const 4738) "$+++++++++++\07\00VVVVVVVVVVVV") + (data $11.14 (i32.const 4808) "$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV") + (data $11.15 (i32.const 4905) "*++++++++++VVVVVVVVVV\0e") + (data $11.16 (i32.const 4959) "*++++++++++VVVVVVVVVV\0e") + (data $11.17 (i32.const 5024) "+++++++++++UVVVVVVVVVV\0e") + (data $12 (i32.const 5113) "\08\00\00V\01\00\009") + (data $13 (i32.const 5128) "\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") + (data $14 (i32.const 6085) "\06\'Qow") + (data $14.1 (i32.const 6100) "|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa") + (data $14.2 (i32.const 6128) "\b4\c4") + (data $14.3 (i32.const 6250) "\c6\c9\00\00\00\db") + (data $14.4 (i32.const 6339) "\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4") + (data $14.5 (i32.const 6364) "\e7") + (data $14.6 (i32.const 6450) "\ea") + (data $14.7 (i32.const 6573) "\ed") + (data $15 (i32.const 6596) "0\0c1\rx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") + (data $16 (i32.const 7004) "L") + (data $16.1 (i32.const 7016) "\02\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s") + (data $17 (i32.const 7085) "\01\02\03\04\05\06\07\08\t\n\0b\0c\r\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7f") + (data $18 (i32.const 7212) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10") + (data $18.1 (i32.const 7756) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01") + (data $18.2 (i32.const 7842) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0") + (data $18.3 (i32.const 7900) "\f8\03") + (data $18.4 (i32.const 7927) "\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01") + (data $18.5 (i32.const 7974) "\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07") + (data $18.6 (i32.const 8000) "\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e") + (data $18.7 (i32.const 8038) "\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\") + (data $18.8 (i32.const 8210) "\f2\07\c0\7f") + (data $18.9 (i32.const 8226) "\f2\1f@?") + (data $18.10 (i32.const 8239) "\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@") + (data $18.11 (i32.const 8273) "\e0\fdf\00\00\00\c3\01\00\1e\00d \00 ") + (data $18.12 (i32.const 8299) "\10") + (data $18.13 (i32.const 8311) "\e0") + (data $18.14 (i32.const 8334) "\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02") + (data $18.15 (i32.const 8400) "\87\01\04\0e") + (data $18.16 (i32.const 8430) "\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?") + (data $18.17 (i32.const 8518) "\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb") + (data $18.18 (i32.const 8579) "\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01") + (data $18.19 (i32.const 8635) "0") + (data $18.20 (i32.const 8649) "\80\03") + (data $18.21 (i32.const 8665) "\80\00\80") + (data $18.22 (i32.const 8680) "\ff\ff\ff\ff\00\00\00\00\00\80") + (data $18.23 (i32.const 8716) " \00\00\00\00<>\08") + (data $18.24 (i32.const 8735) "~") + (data $18.25 (i32.const 8747) "p\00\00 ") + (data $18.26 (i32.const 8811) "?\00\10") + (data $18.27 (i32.const 8825) "\80\f7\bf\00\00\00\f0") + (data $18.28 (i32.const 8842) "\03\00\ff\ff\ff\ff\03") + (data $18.29 (i32.const 8858) "\01\00\00\07") + (data $18.30 (i32.const 8875) "\03D\08\00\00`\10") + (data $18.31 (i32.const 8900) "0\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X") + (data $18.32 (i32.const 8983) "\f8\00\0e") + (data $18.33 (i32.const 9000) " !\00\00\00\00\00@") + (data $18.34 (i32.const 9026) "\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$") + (data $18.35 (i32.const 9067) "\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e") + (data $18.36 (i32.const 9131) " ") + (data $18.37 (i32.const 9160) "\01") + (data $18.38 (i32.const 9178) "\c0\07") + (data $18.39 (i32.const 9196) "n\f0\00\00\00\00\00\87") + (data $18.40 (i32.const 9224) "`\00\00\00\00\00\00\00\f0") + (data $18.41 (i32.const 9281) "\18") + (data $18.42 (i32.const 9300) "\c0\ff\01") + (data $18.43 (i32.const 9324) "\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e") + (data $18.44 (i32.const 9393) "\80\d3@") + (data $18.45 (i32.const 9415) "\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f") + (data $18.46 (i32.const 9459) "\ff\\\00\00@") + (data $18.47 (i32.const 9474) "\f8\85\r") + (data $18.48 (i32.const 9506) "<\b0\01\00\000") + (data $18.49 (i32.const 9522) "\f8\a7\01") + (data $18.50 (i32.const 9537) "(\bf") + (data $18.51 (i32.const 9551) "\e0\bc\0f") + (data $18.52 (i32.const 9585) "\80\ff\06") + (data $18.53 (i32.const 9619) "X\08") + (data $18.54 (i32.const 9638) "\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03") + (data $18.55 (i32.const 9682) "\7f\bf") + (data $18.56 (i32.const 9694) "\fc\ff\ff\fcm") + (data $18.57 (i32.const 9714) "~\b4\bf") + (data $18.58 (i32.const 9726) "\a3") + (data $18.59 (i32.const 9770) "\18\00\00\00\00\00\00\00\ff\01") + (data $18.60 (i32.const 9834) "\1f\00\00\00\00\00\00\00\7f\00\0f") + (data $18.61 (i32.const 9877) "\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b") + (data $18.62 (i32.const 9919) "`\0f") + (data $18.63 (i32.const 9944) "\80\03\f8\ff\e7\0f\00\00\00<") + (data $18.64 (i32.const 9972) "\1c") + (data $18.65 (i32.const 9996) "\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff") + (data $18.66 (i32.const 10028) "\7f\ff\ff\f9\db\07") + (data $18.67 (i32.const 10066) "\ff?") + (data $18.68 (i32.const 10121) "\f0") + (data $18.69 (i32.const 10150) "\7f") + (data $18.70 (i32.const 10164) "\f0\0f") + (data $18.71 (i32.const 10219) "\f8") + (data $19 (i32.const 10220) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10") + (data $19.1 (i32.const 10764) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f") + (data $19.2 (i32.const 10900) " \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01") + (data $19.3 (i32.const 11008) "\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7") + (data $19.4 (i32.const 11040) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??") + (data $19.5 (i32.const 11068) "\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f") + (data $19.6 (i32.const 11162) "\02\80\00\00\ff\1f") + (data $19.7 (i32.const 11180) "\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18") + (data $19.8 (i32.const 11234) "\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf ") + (data $19.9 (i32.const 11316) "\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?") + (data $19.10 (i32.const 11344) "\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8") + (data $19.11 (i32.const 11440) "\fe\ff\ff\07\fe\ff\ff\07") + (data $19.12 (i32.const 11468) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") + (data $19.13 (i32.const 11490) "\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f") + (data $19.14 (i32.const 11516) "\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07") + (data $19.15 (i32.const 11552) "\ff\ff\ff\ff\ff\ff\ff\ff") + (data $19.16 (i32.const 11572) "\ff\ff\ff\ff\ff\ff\ff\ff") + (data $19.17 (i32.const 11596) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f") + (data $19.18 (i32.const 11762) "\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03") + (data $20 (i32.const 11788) ",") + (data $20.1 (i32.const 11800) "\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n") + (data $21 (i32.const 11836) ",") + (data $21.1 (i32.const 11848) "\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n") + (data $22 (i32.const 11884) ",") + (data $22.1 (i32.const 11896) "\02\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t") + (data $23 (i32.const 11932) ",") + (data $23.1 (i32.const 11944) "\02\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t") + (data $24 (i32.const 11980) "\\") + (data $24.1 (i32.const 11992) "\02\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") + (data $25 (i32.const 12076) "\\") + (data $25.1 (i32.const 12088) "\02\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E") + (data $26 (i32.const 12172) "\\") + (data $26.1 (i32.const 12184) "\02\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e") + (data $27 (i32.const 12268) "<") + (data $27.1 (i32.const 12280) "\02\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") + (data $28 (i32.const 12332) "<") + (data $28.1 (i32.const 12344) "\02\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!") + (data $29 (i32.const 12396) "<") + (data $29.1 (i32.const 12408) "\02\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!") + (data $30 (i32.const 12460) "\\") + (data $30.1 (i32.const 12472) "\02\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") + (data $31 (i32.const 12556) "\\") + (data $31.1 (i32.const 12568) "\02\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)") + (data $32 (i32.const 12652) "\\") + (data $32.1 (i32.const 12664) "\02\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)") + (data $33 (i32.const 12748) "\\") + (data $33.1 (i32.const 12760) "\02\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n") + (data $34 (i32.const 12844) "\\") + (data $34.1 (i32.const 12856) "\02\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N") + (data $35 (i32.const 12940) "\\") + (data $35.1 (i32.const 12952) "\02\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n") + (data $36 (i32.const 13036) "L") + (data $36.1 (i32.const 13048) "\02\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03") + (data $37 (i32.const 13116) "L") + (data $37.1 (i32.const 13128) "\02\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03") + (data $38 (i32.const 13196) "L") + (data $38.1 (i32.const 13208) "\02\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,") + (data $39 (i32.const 13276) "L") + (data $39.1 (i32.const 13288) "\02\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,") + (data $40 (i32.const 13356) "<") + (data $40.1 (i32.const 13368) "\02\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") + (data $41 (i32.const 13420) "<") + (data $41.1 (i32.const 13432) "\02\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") + (data $42 (i32.const 13484) "L") + (data $42.1 (i32.const 13496) "\02\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.") + (data $43 (i32.const 13564) "L") + (data $43.1 (i32.const 13576) "\02\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.") + (data $44 (i32.const 13644) "L") + (data $44.1 (i32.const 13656) "\02\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03") + (data $45 (i32.const 13724) "L") + (data $45.1 (i32.const 13736) "\02\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03") + (data $46 (i32.const 13804) "<") + (data $46.1 (i32.const 13816) "\02\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03") + (data $47 (i32.const 13868) "<") + (data $47.1 (i32.const 13880) "\02\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03") + (data $48 (i32.const 13932) "L") + (data $48.1 (i32.const 13944) "\02\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03") + (data $49 (i32.const 14012) "L") + (data $49.1 (i32.const 14024) "\02\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03") + (data $50 (i32.const 14092) "L") + (data $50.1 (i32.const 14104) "\02\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!") + (data $51 (i32.const 14172) "L") + (data $51.1 (i32.const 14184) "\02\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!") + (data $52 (i32.const 14252) "\9c") + (data $52.1 (i32.const 14264) "\02\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $53 (i32.const 14412) "\9c") + (data $53.1 (i32.const 14424) "\02\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z") + (data $54 (i32.const 14572) "\9c") + (data $54.1 (i32.const 14584) "\02\00\00\00\80\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $55 (i32.const 14732) "\1c") + (data $55.1 (i32.const 14744) "\02\00\00\00\02\00\00\00\df") + (data $56 (i32.const 14764) "\1c") + (data $56.1 (i32.const 14776) "\02\00\00\00\04\00\00\00S\00S") + (data $57 (i32.const 14796) "\1c") + (data $57.1 (i32.const 14808) "\02\00\00\00\02\00\00\000\01") + (data $58 (i32.const 14828) "\1c") + (data $58.1 (i32.const 14840) "\02\00\00\00\04\00\00\00i\00\07\03") + (data $59 (i32.const 14860) "\cc") + (data $59.1 (i32.const 14872) "\02\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10") + (data $60 (i32.const 15068) "\cc") + (data $60.1 (i32.const 15080) "\02\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c") + (data $61 (i32.const 15276) "\1c") + (data $61.1 (i32.const 15288) "\02\00\00\00\04\00\00\00s\00s") + (data $62 (i32.const 15308) "\1c") + (data $62.1 (i32.const 15320) "\02\00\00\00\02\00\00\00\01\fb") + (data $63 (i32.const 15340) "\1c") + (data $63.1 (i32.const 15352) "\02\00\00\00\04\00\00\00f\00i") + (data $64 (i32.const 15372) "\cc") + (data $64.1 (i32.const 15384) "\02\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc") + (data $65 (i32.const 15580) ",") + (data $65.1 (i32.const 15592) "\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data $66 (i32.const 15628) "\1c") + (data $66.1 (i32.const 15640) "\02\00\00\00\04\00\00\00\00\d8\00\dc") + (data $67 (i32.const 15660) "\1c") + (data $67.1 (i32.const 15672) "\02\00\00\00\02\00\00\00\88\1f") + (data $68 (i32.const 15692) "\1c") + (data $68.1 (i32.const 15704) "\02\00\00\00\02\00\00\00\80\1f") + (data $69 (i32.const 15724) "\1c") + (data $69.1 (i32.const 15736) "\02\00\00\00\02\00\00\00\8f\1f") + (data $70 (i32.const 15756) "\1c") + (data $70.1 (i32.const 15768) "\02\00\00\00\02\00\00\00\87\1f") + (data $71 (i32.const 15788) "\1c") + (data $71.1 (i32.const 15800) "\02\00\00\00\02\00\00\00\fc\1f") + (data $72 (i32.const 15820) "\1c") + (data $72.1 (i32.const 15832) "\02\00\00\00\02\00\00\00\f3\1f") + (data $73 (i32.const 15852) "\1c") + (data $73.1 (i32.const 15864) "\02\00\00\00\02\00\00\00\a3\03") + (data $74 (i32.const 15884) "\1c") + (data $74.1 (i32.const 15896) "\02\00\00\00\02\00\00\00\c3\03") + (data $75 (i32.const 15916) "\1c") + (data $75.1 (i32.const 15928) "\02\00\00\00\04\00\00\00 \00\a3\03") + (data $76 (i32.const 15948) "\1c") + (data $76.1 (i32.const 15960) "\02\00\00\00\04\00\00\00 \00\c3\03") + (data $77 (i32.const 15980) "\1c") + (data $77.1 (i32.const 15992) "\02\00\00\00\04\00\00\00\a3\03 ") + (data $78 (i32.const 16012) "\1c") + (data $78.1 (i32.const 16024) "\02\00\00\00\04\00\00\00\c3\03 ") + (data $79 (i32.const 16044) "\1c") + (data $79.1 (i32.const 16056) "\02\00\00\00\06\00\00\00 \00\a3\03 ") + (data $80 (i32.const 16076) "\1c") + (data $80.1 (i32.const 16088) "\02\00\00\00\06\00\00\00 \00\c3\03 ") + (data $81 (i32.const 16108) "\1c") + (data $81.1 (i32.const 16120) "\02\00\00\00\06\00\00\00a\00\a3\03 ") + (data $82 (i32.const 16140) "\1c") + (data $82.1 (i32.const 16152) "\02\00\00\00\06\00\00\00a\00\c2\03 ") + (data $83 (i32.const 16172) "\1c") + (data $83.1 (i32.const 16184) "\02\00\00\00\06\00\00\00a\00\a3\03\n") + (data $84 (i32.const 16204) "\1c") + (data $84.1 (i32.const 16216) "\02\00\00\00\06\00\00\00a\00\c2\03\n") + (data $85 (i32.const 16236) "\1c") + (data $85.1 (i32.const 16248) "\02\00\00\00\04\00\00\00a\00\a3\03") + (data $86 (i32.const 16268) "\1c") + (data $86.1 (i32.const 16280) "\02\00\00\00\04\00\00\00a\00\c2\03") + (data $87 (i32.const 16300) "\1c") + (data $87.1 (i32.const 16312) "\02\00\00\00\06\00\00\00a\00\a3\03b") + (data $88 (i32.const 16332) "\1c") + (data $88.1 (i32.const 16344) "\02\00\00\00\06\00\00\00a\00\c3\03b") + (data $89 (i32.const 16364) "\1c") + (data $89.1 (i32.const 16376) "\02\00\00\00\06\00\00\00\a3\03\a3\03 ") + (data $90 (i32.const 16396) "\1c") + (data $90.1 (i32.const 16408) "\02\00\00\00\06\00\00\00\c3\03\c2\03 ") + (data $91 (i32.const 16428) "\1c") + (data $91.1 (i32.const 16440) "\02\00\00\00\06\00\00\001\00\a3\03 ") + (data $92 (i32.const 16460) "\1c") + (data $92.1 (i32.const 16472) "\02\00\00\00\06\00\00\001\00\c3\03 ") + (data $93 (i32.const 16492) "\1c") + (data $93.1 (i32.const 16504) "\02\00\00\00\06\00\00\00;\00\a3\03 ") + (data $94 (i32.const 16524) "\1c") + (data $94.1 (i32.const 16536) "\02\00\00\00\06\00\00\00;\00\c3\03 ") + (data $95 (i32.const 16556) "\1c") + (data $95.1 (i32.const 16568) "\02\00\00\00\06\00\00\00\01\03\a3\03 ") + (data $96 (i32.const 16588) "\1c") + (data $96.1 (i32.const 16600) "\02\00\00\00\06\00\00\00\01\03\c3\03 ") + (data $97 (i32.const 16620) "\1c") + (data $97.1 (i32.const 16632) "\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 ") + (data $98 (i32.const 16652) "\1c") + (data $98.1 (i32.const 16664) "\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 ") + (data $99 (i32.const 16684) "\1c") + (data $99.1 (i32.const 16696) "\02\00\00\00\06\00\00\00\a3\03\a3\03-") + (data $100 (i32.const 16716) "\1c") + (data $100.1 (i32.const 16728) "\02\00\00\00\06\00\00\00\c3\03\c2\03-") + (data $101 (i32.const 16748) "\1c") + (data $101.1 (i32.const 16760) "\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-") + (data $102 (i32.const 16780) "\1c") + (data $102.1 (i32.const 16792) "\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-") + (data $103 (i32.const 16812) "\1c") + (data $103.1 (i32.const 16824) "\02\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") + (data $104 (i32.const 16844) "\1c") + (data $104.1 (i32.const 16856) "\02\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") + (data $105 (i32.const 16876) "\1c") + (data $105.1 (i32.const 16888) "\02\00\00\00\06\00\00\005\d8\a2\dc\a3\03") + (data $106 (i32.const 16908) "\1c") + (data $106.1 (i32.const 16920) "\02\00\00\00\06\00\00\005\d8\a2\dc\c2\03") + (data $107 (i32.const 16940) "\1c") + (data $107.1 (i32.const 16952) "\02\00\00\00\06\00\00\00A\00.\00\a3\03") + (data $108 (i32.const 16972) "\1c") + (data $108.1 (i32.const 16984) "\02\00\00\00\06\00\00\00a\00.\00\c2\03") + (data $109 (i32.const 17004) "\1c") + (data $109.1 (i32.const 17016) "\02\00\00\00\06\00\00\00A\00\ad\00\a3\03") + (data $110 (i32.const 17036) "\1c") + (data $110.1 (i32.const 17048) "\02\00\00\00\06\00\00\00a\00\ad\00\c2\03") + (data $111 (i32.const 17068) "\1c") + (data $111.1 (i32.const 17080) "\02\00\00\00\08\00\00\00A\004\d8B\de\a3\03") + (data $112 (i32.const 17100) "\1c") + (data $112.1 (i32.const 17112) "\02\00\00\00\08\00\00\00a\004\d8B\de\c2\03") + (data $113 (i32.const 17132) "\1c") + (data $113.1 (i32.const 17144) "\02\00\00\00\04\00\00\00E\03\a3\03") + (data $114 (i32.const 17164) "\1c") + (data $114.1 (i32.const 17176) "\02\00\00\00\04\00\00\00E\03\c3\03") + (data $115 (i32.const 17196) "\1c") + (data $115.1 (i32.const 17208) "\02\00\00\00\06\00\00\00\91\03E\03\a3\03") + (data $116 (i32.const 17228) "\1c") + (data $116.1 (i32.const 17240) "\02\00\00\00\06\00\00\00\b1\03E\03\c2\03") + (data $117 (i32.const 17260) "\1c") + (data $117.1 (i32.const 17272) "\02\00\00\00\06\00\00\00A\00\a3\03B") + (data $118 (i32.const 17292) "\1c") + (data $118.1 (i32.const 17304) "\02\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") + (data $119 (i32.const 17324) "\1c") + (data $119.1 (i32.const 17336) "\02\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") + (data $120 (i32.const 17356) "\1c") + (data $120.1 (i32.const 17368) "\02\00\00\00\08\00\00\00A\00\a3\03.\00b") + (data $121 (i32.const 17388) "\1c") + (data $121.1 (i32.const 17400) "\02\00\00\00\08\00\00\00a\00\c3\03.\00b") + (data $122 (i32.const 17420) "\1c") + (data $122.1 (i32.const 17432) "\02\00\00\00\08\00\00\00A\00\a3\03\ad\00B") + (data $123 (i32.const 17452) "\1c") + (data $123.1 (i32.const 17464) "\02\00\00\00\08\00\00\00a\00\c3\03\ad\00b") + (data $124 (i32.const 17484) "\1c") + (data $124.1 (i32.const 17496) "\02\00\00\00\n\00\00\00A\00\a3\034\d8B\deB") + (data $125 (i32.const 17516) "\1c") + (data $125.1 (i32.const 17528) "\02\00\00\00\n\00\00\00a\00\c3\034\d8B\deb") + (data $126 (i32.const 17548) "\1c") + (data $126.1 (i32.const 17560) "\02\00\00\00\06\00\00\00A\00\a3\03E\03") + (data $127 (i32.const 17580) "\1c") + (data $127.1 (i32.const 17592) "\02\00\00\00\06\00\00\00a\00\c2\03E\03") + (data $128 (i32.const 17612) "\1c") + (data $128.1 (i32.const 17624) "\02\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") + (data $129 (i32.const 17644) "\1c") + (data $129.1 (i32.const 17656) "\02\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") + (data $130 (i32.const 17676) "\1c") + (data $130.1 (i32.const 17688) "\02\00\00\00\06\00\00\00A\00\0e\18\a3\03") + (data $131 (i32.const 17708) "\1c") + (data $131.1 (i32.const 17720) "\02\00\00\00\06\00\00\00a\00\0e\18\c2\03") + (data $132 (i32.const 17740) "\1c") + (data $132.1 (i32.const 17752) "\02\00\00\00\08\00\00\00A\00\0e\18\a3\03B") + (data $133 (i32.const 17772) "\1c") + (data $133.1 (i32.const 17784) "\02\00\00\00\08\00\00\00a\00\0e\18\c3\03b") + (data $134 (i32.const 17804) "\1c") + (data $134.1 (i32.const 17816) "\02\00\00\00\06\00\00\00A\00\a3\03\0e\18") + (data $135 (i32.const 17836) "\1c") + (data $135.1 (i32.const 17848) "\02\00\00\00\06\00\00\00a\00\c2\03\0e\18") + (data $136 (i32.const 17868) "\1c") + (data $136.1 (i32.const 17880) "\02\00\00\00\08\00\00\00A\00\a3\03\0e\18B") + (data $137 (i32.const 17900) "\1c") + (data $137.1 (i32.const 17912) "\02\00\00\00\08\00\00\00a\00\c3\03\0e\18b") + (data $138 (i32.const 17932) "\1c") + (data $138.1 (i32.const 17944) "\02\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") + (data $139 (i32.const 17964) "\1c") + (data $139.1 (i32.const 17976) "\02\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") + (data $140 (i32.const 17996) "\1c") + (data $140.1 (i32.const 18008) "\02\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B") + (data $141 (i32.const 18028) "\1c") + (data $141.1 (i32.const 18040) "\02\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b") + (data $142 (i32.const 18060) "\1c") + (data $142.1 (i32.const 18072) "\02\00\00\00\02\00\00\00\00\fb") + (data $143 (i32.const 18092) "\1c") + (data $143.1 (i32.const 18104) "\02\00\00\00\04\00\00\00F\00F") + (data $144 (i32.const 18124) "\1c") + (data $144.1 (i32.const 18136) "\02\00\00\00\04\00\00\00F\00I") + (data $145 (i32.const 18156) "\1c") + (data $145.1 (i32.const 18168) "\02\00\00\00\02\00\00\00\02\fb") + (data $146 (i32.const 18188) "\1c") + (data $146.1 (i32.const 18200) "\02\00\00\00\04\00\00\00F\00L") + (data $147 (i32.const 18220) "\1c") + (data $147.1 (i32.const 18232) "\02\00\00\00\02\00\00\00\03\fb") + (data $148 (i32.const 18252) "\1c") + (data $148.1 (i32.const 18264) "\02\00\00\00\06\00\00\00F\00F\00I") + (data $149 (i32.const 18284) "\1c") + (data $149.1 (i32.const 18296) "\02\00\00\00\02\00\00\00\04\fb") + (data $150 (i32.const 18316) "\1c") + (data $150.1 (i32.const 18328) "\02\00\00\00\06\00\00\00F\00F\00L") + (data $151 (i32.const 18348) "\1c") + (data $151.1 (i32.const 18360) "\02\00\00\00\02\00\00\00\05\fb") + (data $152 (i32.const 18380) "\1c") + (data $152.1 (i32.const 18392) "\02\00\00\00\04\00\00\00S\00T") + (data $153 (i32.const 18412) "\1c") + (data $153.1 (i32.const 18424) "\02\00\00\00\02\00\00\00\06\fb") + (data $154 (i32.const 18444) "\1c") + (data $154.1 (i32.const 18456) "\02\00\00\00\02\00\00\00\f0\01") + (data $155 (i32.const 18476) "\1c") + (data $155.1 (i32.const 18488) "\02\00\00\00\04\00\00\00J\00\0c\03") + (data $156 (i32.const 18508) "\1c") + (data $156.1 (i32.const 18520) "\02\00\00\00\02\00\00\00\96\1e") + (data $157 (i32.const 18540) "\1c") + (data $157.1 (i32.const 18552) "\02\00\00\00\04\00\00\00H\001\03") + (data $158 (i32.const 18572) "\1c") + (data $158.1 (i32.const 18584) "\02\00\00\00\02\00\00\00\97\1e") + (data $159 (i32.const 18604) "\1c") + (data $159.1 (i32.const 18616) "\02\00\00\00\04\00\00\00T\00\08\03") + (data $160 (i32.const 18636) "\1c") + (data $160.1 (i32.const 18648) "\02\00\00\00\02\00\00\00\98\1e") + (data $161 (i32.const 18668) "\1c") + (data $161.1 (i32.const 18680) "\02\00\00\00\04\00\00\00W\00\n\03") + (data $162 (i32.const 18700) "\1c") + (data $162.1 (i32.const 18712) "\02\00\00\00\02\00\00\00\99\1e") + (data $163 (i32.const 18732) "\1c") + (data $163.1 (i32.const 18744) "\02\00\00\00\04\00\00\00Y\00\n\03") + (data $164 (i32.const 18764) "\1c") + (data $164.1 (i32.const 18776) "\02\00\00\00\02\00\00\00\9a\1e") + (data $165 (i32.const 18796) "\1c") + (data $165.1 (i32.const 18808) "\02\00\00\00\04\00\00\00A\00\be\02") + (data $166 (i32.const 18828) "\\") + (data $166.1 (i32.const 18840) "\02\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e") + (data $167 (i32.const 18924) "<") + (data $167.1 (i32.const 18936) "\02\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data $168 (i32.const 18988) "|") + (data $168.1 (i32.const 19000) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $169 (i32.const 19116) "<") + (data $169.1 (i32.const 19128) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $170 (i32.const 19180) "\1c") + (data $170.1 (i32.const 19192) "\02\00\00\00\02\00\00\000") + (data $171 (i32.const 19212) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $172 (i32.const 19612) "\1c\04") + (data $172.1 (i32.const 19624) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $173 (i32.const 20668) "\\") + (data $173.1 (i32.const 20680) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $174 (i32.const 20764) "<") + (data $174.1 (i32.const 20776) "\02\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data $175 (i32.const 20828) "\\") + (data $175.1 (i32.const 20840) "\02\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e") + (data $176 (i32.const 20924) "<") + (data $176.1 (i32.const 20936) "\02\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data $177 (i32.const 20988) "<") + (data $177.1 (i32.const 21000) "\02\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 ") + (data $178 (i32.const 21056) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\a4") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 19632 + call $~lib/rt/itcms/__visit + i32.const 20688 + call $~lib/rt/itcms/__visit + i32.const 1488 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$143 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 53848 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$143 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 21056 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 21060 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 53856 + i32.const 0 + i32.store + i32.const 55424 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 53856 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 53856 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 53856 + i32.const 55428 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 53856 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 53848 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 53848 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 53848 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1088 + i32.const 1424 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1424 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/util/casemap/casemap (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.get $0 + i32.const 8 + i32.shr_u + local.tee $2 + i32.const 6084 + i32.add + i32.load8_u + local.get $2 + i32.const 2444 + i32.add + i32.load8_u + i32.const 86 + i32.mul + i32.const 2444 + i32.add + local.get $0 + i32.const 255 + i32.and + local.tee $4 + i32.const 3 + i32.div_u + i32.add + i32.load8_u + local.get $4 + i32.const 3 + i32.rem_u + i32.const 2 + i32.shl + i32.const 5112 + i32.add + i32.load + i32.mul + i32.const 11 + i32.shr_u + i32.const 6 + i32.rem_u + i32.add + i32.const 2 + i32.shl + i32.const 5124 + i32.add + i32.load + local.tee $2 + i32.const 255 + i32.and + local.set $3 + local.get $2 + i32.const 8 + i32.shr_s + local.set $2 + block $folding-inner0 + local.get $3 + i32.const 2 + i32.lt_u + br_if $folding-inner0 + local.get $2 + i32.const 255 + i32.and + local.set $3 + local.get $2 + i32.const 8 + i32.shr_u + local.set $2 + loop $while-continue|0 + local.get $3 + if + local.get $2 + local.get $3 + i32.const 1 + i32.shr_u + local.tee $7 + i32.add + i32.const 1 + i32.shl + i32.const 6596 + i32.add + local.tee $5 + i32.load8_u + local.tee $6 + local.get $4 + i32.eq + if (result i32) + local.get $5 + i32.load8_u offset=1 + i32.const 2 + i32.shl + i32.const 5124 + i32.add + i32.load + local.tee $2 + i32.const 255 + i32.and + local.set $3 + local.get $2 + i32.const 8 + i32.shr_s + local.set $2 + local.get $3 + i32.const 2 + i32.lt_u + br_if $folding-inner0 + local.get $0 + i32.const 1 + i32.add + local.get $1 + i32.const 1 + i32.shl + i32.sub + return + else + local.get $4 + local.get $6 + i32.lt_u + if (result i32) + local.get $7 + else + local.get $2 + local.get $7 + i32.add + local.set $2 + local.get $3 + local.get $7 + i32.sub + end + end + local.set $3 + br $while-continue|0 + end + end + local.get $0 + return + end + local.get $0 + local.get $2 + i32.const 0 + local.get $1 + local.get $3 + i32.xor + i32.sub + i32.and + i32.add + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $1 + i32.gt_u + select + memory.copy + local.get $2 + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + call $start:std/string-casemapping + ) + (func $~lib/string/String#toUpperCase (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + if + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $8 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 6 + i32.mul + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1488 + i32.store + i32.const 1484 + i32.load + i32.const 1 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_u + if + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_u + local.tee $2 + i32.const 7 + i32.shr_u + if + block $for-continue|0 + local.get $2 + i32.const 55295 + i32.sub + i32.const 1025 + i32.lt_u + local.get $7 + local.get $8 + i32.const 1 + i32.sub + i32.lt_u + i32.and + if + local.get $1 + i32.load16_u offset=2 + local.tee $4 + i32.const 56319 + i32.sub + i32.const 1025 + i32.lt_u + if + local.get $7 + i32.const 1 + i32.add + local.set $7 + local.get $4 + i32.const 1023 + i32.and + local.get $2 + local.tee $1 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.or + i32.const 65536 + i32.add + local.tee $2 + i32.const 131072 + i32.ge_u + if + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-continue|0 + end + end + end + local.get $2 + i32.const 9424 + i32.sub + i32.const 25 + i32.le_u + if + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.const 26 + i32.sub + i32.store16 + else + local.get $2 + i32.const 223 + i32.sub + i32.const 64056 + i32.le_u + if (result i32) + local.get $3 + local.set $1 + i32.const 0 + local.set $9 + block $~lib/util/casemap/bsearch|inlined.0 + loop $while-continue|1 + local.get $1 + local.get $9 + i32.ge_s + if + local.get $1 + local.get $9 + i32.add + i32.const 3 + i32.shr_u + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + i32.shl + i32.const 1488 + i32.add + i32.load16_u + local.get $2 + i32.sub + local.tee $10 + i32.eqz + br_if $~lib/util/casemap/bsearch|inlined.0 + local.get $10 + i32.const 31 + i32.shr_u + if + local.get $4 + i32.const 4 + i32.add + local.set $9 + else + local.get $4 + i32.const 4 + i32.sub + local.set $1 + end + br $while-continue|1 + end + end + i32.const -1 + local.set $4 + end + local.get $4 + else + i32.const -1 + end + local.tee $1 + i32.const -1 + i32.xor + if + local.get $1 + i32.const 1 + i32.shl + i32.const 1488 + i32.add + local.tee $1 + i32.load16_u offset=6 + local.set $2 + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.tee $4 + local.get $1 + i32.load offset=2 + i32.store + local.get $4 + local.get $2 + i32.store16 offset=4 + local.get $5 + local.get $2 + i32.const 0 + i32.ne + i32.const 1 + i32.add + i32.add + local.set $5 + else + local.get $2 + i32.const 1 + call $~lib/util/casemap/casemap + i32.const 2097151 + i32.and + local.tee $1 + i32.const 65536 + i32.lt_u + if + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.store16 + else + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 65536 + i32.sub + local.tee $1 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $1 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + end + end + end + else + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.const 2316 + i32.add + i32.load8_u + i32.store16 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + local.get $5 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + if + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$81 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$81 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String#toLowerCase (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + if + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $6 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 2 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_u + if + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_u + local.tee $4 + i32.const 7 + i32.shr_u + if + block $for-continue|0 + local.get $4 + i32.const 55295 + i32.sub + i32.const 1025 + i32.lt_u + local.get $3 + local.get $6 + i32.const 1 + i32.sub + i32.lt_u + i32.and + if + local.get $1 + i32.load16_u offset=2 + local.tee $2 + i32.const 56319 + i32.sub + i32.const 1025 + i32.lt_u + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $2 + i32.const 1023 + i32.and + local.get $4 + local.tee $1 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.or + i32.const 65536 + i32.add + local.tee $4 + i32.const 131072 + i32.ge_u + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $2 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-continue|0 + end + end + end + local.get $4 + i32.const 304 + i32.eq + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + i32.const 50790505 + i32.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + else + local.get $4 + i32.const 931 + i32.eq + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + i32.const 962 + i32.const 963 + local.get $6 + i32.const 1 + i32.gt_u + if (result i32) + block $~lib/util/string/isFinalSigma|inlined.0 (result i32) + i32.const 0 + local.set $1 + local.get $3 + local.tee $2 + i32.const 30 + i32.sub + local.tee $4 + i32.const 0 + local.get $4 + i32.const 0 + i32.ge_s + select + local.set $5 + loop $while-continue|1 + local.get $2 + local.get $5 + i32.gt_s + if + i32.const -1 + local.set $4 + block $~lib/util/string/codePointBefore|inlined.0 + local.get $2 + i32.const 0 + i32.le_s + br_if $~lib/util/string/codePointBefore|inlined.0 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.tee $9 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + local.get $2 + i32.const 2 + i32.sub + local.tee $4 + i32.const 0 + i32.ge_s + i32.and + if + local.get $9 + i32.const 1023 + i32.and + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.tee $10 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.add + i32.const 65536 + i32.add + local.set $4 + local.get $10 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + br_if $~lib/util/string/codePointBefore|inlined.0 + end + i32.const 65533 + local.get $9 + local.get $9 + i32.const 63488 + i32.and + i32.const 55296 + i32.eq + select + local.set $4 + end + local.get $4 + i32.const 918000 + i32.lt_u + if (result i32) + local.get $4 + i32.const 8 + i32.shr_u + i32.const 7212 + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.const 7212 + i32.add + local.get $4 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $4 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + local.get $4 + i32.const 127370 + i32.lt_u + if (result i32) + local.get $4 + i32.const 8 + i32.shr_u + i32.const 10220 + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.const 10220 + i32.add + local.get $4 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $4 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and + else + i32.const 0 + end + i32.eqz + br_if $~lib/util/string/isFinalSigma|inlined.0 + drop + i32.const 1 + local.set $1 + end + local.get $2 + local.get $4 + i32.const 65536 + i32.ge_s + i32.const 1 + i32.add + i32.sub + local.set $2 + br $while-continue|1 + end + end + i32.const 0 + local.get $1 + i32.eqz + br_if $~lib/util/string/isFinalSigma|inlined.0 + drop + local.get $3 + i32.const 1 + i32.add + local.tee $2 + i32.const 30 + i32.add + local.tee $1 + local.get $6 + local.get $1 + local.get $6 + i32.lt_s + select + local.set $4 + loop $while-continue|2 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u + local.tee $1 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + local.get $2 + i32.const 1 + i32.add + local.get $6 + i32.ne + i32.and + if + local.get $5 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $1 + i32.const 10 + i32.shl + local.get $5 + i32.add + i32.const 56613888 + i32.sub + local.set $1 + end + end + local.get $1 + i32.const 918000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 8 + i32.shr_u + i32.const 7212 + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.const 7212 + i32.add + local.get $1 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $1 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and + else + i32.const 0 + end + i32.eqz + if + local.get $1 + i32.const 127370 + i32.lt_u + if (result i32) + local.get $1 + i32.const 8 + i32.shr_u + i32.const 10220 + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.const 10220 + i32.add + local.get $1 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $1 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and + else + i32.const 0 + end + i32.eqz + br $~lib/util/string/isFinalSigma|inlined.0 + end + local.get $2 + local.get $1 + i32.const 65536 + i32.ge_u + i32.const 1 + i32.add + i32.add + local.set $2 + br $while-continue|2 + end + end + i32.const 1 + end + else + i32.const 0 + end + select + i32.store16 + else + local.get $4 + i32.const 9398 + i32.sub + i32.const 25 + i32.le_u + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 26 + i32.add + i32.store16 + else + local.get $4 + i32.const 0 + call $~lib/util/casemap/casemap + i32.const 2097151 + i32.and + local.tee $1 + i32.const 65536 + i32.lt_u + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.store16 + else + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 65536 + i32.sub + local.tee $1 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $1 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + end + end + end + end + end + else + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 7084 + i32.add + i32.load8_u + i32.store16 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|0 + end + end + local.get $7 + local.get $8 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#codePointAt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + if + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $1 + i32.le_u + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + block $folding-inner0 + local.get $1 + i32.const 1 + i32.add + local.get $2 + i32.eq + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.tee $1 + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + i32.or + br_if $folding-inner0 + local.get $0 + i32.load16_u offset=2 + local.tee $0 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 10 + i32.shl + local.get $0 + i32.add + i32.const 56613888 + i32.sub + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$148 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + local.set $0 + br $__inlined_func$~lib/string/String#concat$148 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $start:std/string-casemapping + (local $0 i64) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + if + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 53848 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace + i32.const 1056 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11808 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 11856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11904 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 11952 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12000 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12096 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12288 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12352 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12480 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12576 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12576 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12768 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12864 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13056 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13216 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13376 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13504 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13664 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13824 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13952 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14112 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14272 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14272 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14752 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14816 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14848 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14880 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14752 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15328 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15392 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 65536 + call $~lib/string/String.fromCodePoint + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 65536 + call $~lib/string/String.fromCodePoint + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15680 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15744 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 55 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15808 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15872 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15936 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16000 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16064 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16128 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16160 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16192 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16224 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16256 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16288 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 65 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16320 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16384 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16448 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16480 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16512 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16576 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16640 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16704 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16768 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16800 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16832 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 75 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16896 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16928 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16960 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17024 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 80 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17088 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 81 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17152 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 82 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17216 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17280 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17312 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 85 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17376 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 86 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17440 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17504 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17536 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 88 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17568 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17600 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17632 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17696 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17728 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 91 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17760 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17824 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17888 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17952 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17984 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18016 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18080 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 99 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15328 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18176 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18240 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18304 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 103 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18368 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 104 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18432 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18464 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18528 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18592 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18656 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18720 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18784 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $4 + i32.const 1114111 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/string/String.fromCodePoint + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + call $~lib/string/String#toLowerCase + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + call $~lib/string/String#toUpperCase + local.tee $5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 0 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 1 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $1 + i64.const 0 + i64.ge_s + if + local.get $0 + local.get $1 + i64.const 16 + i64.shl + i64.add + local.set $0 + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $1 + i64.const 0 + i64.ge_s + if (result i64) + local.get $0 + local.get $1 + i64.const 32 + i64.shl + i64.add + else + local.get $0 + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $2 + i64.const 0 + i64.ge_s + if + local.get $0 + local.get $2 + i64.const 16 + i64.shl + i64.add + local.set $0 + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 2 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $2 + i64.const 0 + i64.ge_s + if (result i64) + local.get $0 + local.get $2 + i64.const 32 + i64.shl + i64.add + else + local.get $0 + end + local.set $2 + local.get $4 + i32.const 0 + call $std/string-casemapping/toLowerCaseFromIndex + i64.extend_i32_s + local.set $0 + local.get $4 + i32.const 1 + call $std/string-casemapping/toLowerCaseFromIndex + i64.extend_i32_s + local.tee $3 + i64.const 0 + i64.ge_s + if + local.get $0 + local.get $3 + i64.const 16 + i64.shl + i64.add + local.set $0 + end + local.get $4 + i32.const 2 + call $std/string-casemapping/toLowerCaseFromIndex + i64.extend_i32_s + local.tee $3 + i64.const 0 + i64.ge_s + if (result i64) + local.get $0 + local.get $3 + i64.const 32 + i64.shl + i64.add + else + local.get $0 + end + local.set $3 + local.get $4 + i32.const 0 + call $std/string-casemapping/toUpperCaseFromIndex + i64.extend_i32_s + local.set $0 + local.get $4 + i32.const 1 + call $std/string-casemapping/toUpperCaseFromIndex + i64.extend_i32_s + local.tee $7 + i64.const 0 + i64.ge_s + if + local.get $0 + local.get $7 + i64.const 16 + i64.shl + i64.add + local.set $0 + end + local.get $4 + i32.const 2 + call $std/string-casemapping/toUpperCaseFromIndex + i64.extend_i32_s + local.tee $7 + i64.const 0 + i64.ge_s + if + local.get $0 + local.get $7 + i64.const 32 + i64.shl + i64.add + local.set $0 + end + local.get $1 + local.get $3 + i64.ne + if + i32.const 18848 + i32.const 1 + local.get $4 + f64.convert_i32_s + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + local.get $1 + call $~lib/util/number/itoa64 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 18944 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + local.get $3 + call $~lib/util/number/itoa64 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 20784 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + end + local.get $0 + local.get $2 + i64.ne + if + i32.const 20848 + i32.const 1 + local.get $4 + f64.convert_i32_s + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + local.get $2 + call $~lib/util/number/itoa64 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 20944 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + local.get $0 + call $~lib/util/number/itoa64 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 21008 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + if + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $0 + i32.const 65535 + i32.gt_u + local.tee $2 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $2 + if + local.get $0 + i32.const 1114111 + i32.gt_u + if + i32.const 0 + i32.const 15600 + i32.const 39 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.const 65536 + i32.sub + local.tee $0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $0 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + else + local.get $1 + local.get $0 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/itoa64 (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + if + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 19200 + return + end + i64.const 0 + local.get $0 + i64.sub + local.get $0 + local.get $0 + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.const 1 + i32.shl + local.tee $2 + select + local.tee $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.wrap_i64 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $4 + i32.const 1 + i32.shl + local.get $2 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $2 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $2 + local.get $3 + i32.add + local.set $5 + loop $while-continue|0 + local.get $0 + i64.const 100000000 + i64.ge_u + if + local.get $5 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i64.const 100000000 + i64.div_u + local.tee $0 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $4 + i32.const 10000 + i32.rem_u + local.tee $6 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + local.get $6 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $5 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 10000 + i32.div_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $5 + local.get $0 + i32.wrap_i64 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + end + local.get $2 + if + local.get $3 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) +) diff --git a/tests/compiler/std/string-casemapping.ts b/tests/compiler/std/string-casemapping.ts index efed0bc741..34b7848075 100644 --- a/tests/compiler/std/string-casemapping.ts +++ b/tests/compiler/std/string-casemapping.ts @@ -115,27 +115,27 @@ for (let i = 0; i <= 0x10FFFF; i++) { let source = String.fromCodePoint(i); let origLower = source.toLowerCase(); let origUpper = source.toUpperCase(); - let code1: u64, code2: u64; + let code1: i64, code2: i64; // collect all code points for lower case on AssemblyScript side - let origLowerCode = origLower.codePointAt(0); - if ((code1 = origLower.codePointAt(1)) >= 0) origLowerCode += code1 << 16; - if ((code2 = origLower.codePointAt(2)) >= 0) origLowerCode += code2 << 32; + let origLowerCode = origLower.codePointAt(0); + if ((code1 = origLower.codePointAt(1)) >= 0) origLowerCode += code1 << 16; + if ((code2 = origLower.codePointAt(2)) >= 0) origLowerCode += code2 << 32; // collect all code points for upper case on AssemblyScript side - let origUpperCode = origUpper.codePointAt(0); - if ((code1 = origUpper.codePointAt(1)) >= 0) origUpperCode += code1 << 16; - if ((code2 = origUpper.codePointAt(2)) >= 0) origUpperCode += code2 << 32; + let origUpperCode = origUpper.codePointAt(0); + if ((code1 = origUpper.codePointAt(1)) >= 0) origUpperCode += code1 << 16; + if ((code2 = origUpper.codePointAt(2)) >= 0) origUpperCode += code2 << 32; // collect all code points for lower case on JavaScript side - let expectLowerCode = toLowerCaseFromIndex(i, 0); - if ((code1 = toLowerCaseFromIndex(i, 1)) >= 0) expectLowerCode += code1 << 16; - if ((code2 = toLowerCaseFromIndex(i, 2)) >= 0) expectLowerCode += code2 << 32; + let expectLowerCode = toLowerCaseFromIndex(i, 0); + if ((code1 = toLowerCaseFromIndex(i, 1)) >= 0) expectLowerCode += code1 << 16; + if ((code2 = toLowerCaseFromIndex(i, 2)) >= 0) expectLowerCode += code2 << 32; // collect all code points for upper case on JavaScript side - let expectUpperCode = toUpperCaseFromIndex(i, 0); - if ((code1 = toUpperCaseFromIndex(i, 1)) >= 0) expectUpperCode += code1 << 16; - if ((code2 = toUpperCaseFromIndex(i, 2)) >= 0) expectUpperCode += code2 << 32; + let expectUpperCode = toUpperCaseFromIndex(i, 0); + if ((code1 = toUpperCaseFromIndex(i, 1)) >= 0) expectUpperCode += code1 << 16; + if ((code2 = toUpperCaseFromIndex(i, 2)) >= 0) expectUpperCode += code2 << 32; if (origLowerCode != expectLowerCode) { trace("origLowerCode != expectLowerCode", 1, i); diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat deleted file mode 100644 index 00768c8b28..0000000000 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ /dev/null @@ -1,7366 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (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_=>_none (func)) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) - (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 32) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 80) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 128) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 192) "0\03\00\00\01\00\00\00\03\00\00\000\03\00\00\df\00S\00S\00\00\00I\01\bc\02N\00\00\00\f0\01J\00\0c\03\00\00\90\03\99\03\08\03\01\03\b0\03\a5\03\08\03\01\03\87\055\05R\05\00\00\96\1eH\001\03\00\00\97\1eT\00\08\03\00\00\98\1eW\00\n\03\00\00\99\1eY\00\n\03\00\00\9a\1eA\00\be\02\00\00P\1f\a5\03\13\03\00\00R\1f\a5\03\13\03\00\03T\1f\a5\03\13\03\01\03V\1f\a5\03\13\03B\03\80\1f\08\1f\99\03\00\00\81\1f\t\1f\99\03\00\00\82\1f\n\1f\99\03\00\00\83\1f\0b\1f\99\03\00\00\84\1f\0c\1f\99\03\00\00\85\1f\0d\1f\99\03\00\00\86\1f\0e\1f\99\03\00\00\87\1f\0f\1f\99\03\00\00\88\1f\08\1f\99\03\00\00\89\1f\t\1f\99\03\00\00\8a\1f\n\1f\99\03\00\00\8b\1f\0b\1f\99\03\00\00\8c\1f\0c\1f\99\03\00\00\8d\1f\0d\1f\99\03\00\00\8e\1f\0e\1f\99\03\00\00\8f\1f\0f\1f\99\03\00\00\90\1f(\1f\99\03\00\00\91\1f)\1f\99\03\00\00\92\1f*\1f\99\03\00\00\93\1f+\1f\99\03\00\00\94\1f,\1f\99\03\00\00\95\1f-\1f\99\03\00\00\96\1f.\1f\99\03\00\00\97\1f/\1f\99\03\00\00\98\1f(\1f\99\03\00\00\99\1f)\1f\99\03\00\00\9a\1f*\1f\99\03\00\00\9b\1f+\1f\99\03\00\00\9c\1f,\1f\99\03\00\00\9d\1f-\1f\99\03\00\00\9e\1f.\1f\99\03\00\00\9f\1f/\1f\99\03\00\00\a0\1fh\1f\99\03\00\00\a1\1fi\1f\99\03\00\00\a2\1fj\1f\99\03\00\00\a3\1fk\1f\99\03\00\00\a4\1fl\1f\99\03\00\00\a5\1fm\1f\99\03\00\00\a6\1fn\1f\99\03\00\00\a7\1fo\1f\99\03\00\00\a8\1fh\1f\99\03\00\00\a9\1fi\1f\99\03\00\00\aa\1fj\1f\99\03\00\00\ab\1fk\1f\99\03\00\00\ac\1fl\1f\99\03\00\00\ad\1fm\1f\99\03\00\00\ae\1fn\1f\99\03\00\00\af\1fo\1f\99\03\00\00\b2\1f\ba\1f\99\03\00\00\b3\1f\91\03\99\03\00\00\b4\1f\86\03\99\03\00\00\b6\1f\91\03B\03\00\00\b7\1f\91\03B\03\99\03\bc\1f\91\03\99\03\00\00\c2\1f\ca\1f\99\03\00\00\c3\1f\97\03\99\03\00\00\c4\1f\89\03\99\03\00\00\c6\1f\97\03B\03\00\00\c7\1f\97\03B\03\99\03\cc\1f\97\03\99\03\00\00\d2\1f\99\03\08\03\00\03\d3\1f\99\03\08\03\01\03\d6\1f\99\03B\03\00\00\d7\1f\99\03\08\03B\03\e2\1f\a5\03\08\03\00\03\e3\1f\a5\03\08\03\01\03\e4\1f\a1\03\13\03\00\00\e6\1f\a5\03B\03\00\00\e7\1f\a5\03\08\03B\03\f2\1f\fa\1f\99\03\00\00\f3\1f\a9\03\99\03\00\00\f4\1f\8f\03\99\03\00\00\f6\1f\a9\03B\03\00\00\f7\1f\a9\03B\03\99\03\fc\1f\a9\03\99\03\00\00\00\fbF\00F\00\00\00\01\fbF\00I\00\00\00\02\fbF\00L\00\00\00\03\fbF\00F\00I\00\04\fbF\00F\00L\00\05\fbS\00T\00\00\00\06\fbS\00T\00\00\00\13\fbD\05F\05\00\00\14\fbD\055\05\00\00\15\fbD\05;\05\00\00\16\fbN\05F\05\00\00\17\fbD\05=\05\00\00") - (data (i32.const 1024) "\00\01\02\03\04\05\06\07\08\t\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7f") - (data (i32.const 1152) "\07\08\t\n\0b\0c\06\06\06\06\06\06\06\06\06\06\0d\06\06\0e\06\06\06\06\06\06\06\06\0f\10\11\12\06\13\06\06\06\06\06\06\06\06\06\06\14\15\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\16\17\06\06\06\18\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\19\06\06\06\06\1a\06\06\06\06\06\06\06\1b\06\06\06\06\06\06\06\06\06\06\06\1c\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1d\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\1e\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$++++++++\01\00TVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00+++++++\07++[VVVVVVVJVV\051P1P1P1P1P1P1P1P$Py1P1P18P1P1P1P1P1P1P1PN1\02N\0d\0dN\03N\00$n\00N1&nQN$PN9\14\81\1b\1d\1dS1P1P\0d1P1P1P\1bS$P1\02\\{\\{\\{\\{\\{\14y\\{\\{\\-+I\03H\03x\\{\14\00\96\n\01+(\06\06\00*\06**+\07\bb\b5+\1e\00+\07+++\01++++++++++++++++++++++++++++++++\01+++++++++++++++++++++++*+++++++++++++\cdF\cd+\00%+\07\01\06\01UVVVVVUVV\02$\81\81\81\81\81\15\81\81\81\00\00+\00\b2\d1\b2\d1\b2\d1\b2\d1\00\00\cd\cc\01\00\d7\d7\d7\d7\d7\83\81\81\81\81\81\81\81\81\81\81\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\1c\00\00\00\00\001P1P1P1P1P1\02\00\001P1P1P1P1P1P1P1P1PN1P1PN1P1P1P1P1P1P1P1\02\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6\87\a6*++++++++++++\00\00\00TVVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0cl\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%Vz\9e&\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06%\06\01++OVV,+\7fVV9++UVV++OVV,+\7fVV\817u[{\\++OVV\02\ac\04\00\009++UVV++OVV,++VV2\13\81W\00o\81~\c9\d7~-\81\81\0e~9\7foW\00\81\81~\15\00~\03++++++++++++\07+$+\97+++++++++*+++++VVVVV\80\81\81\81\819\bb*++++++++++++++++++++++++++++++++++++++++\01\81\81\81\81\81\81\81\81\81\81\81\81\81\81\81\c9\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\ac\d0\0d\00N1\02\b4\c1\c1\d7\d7$P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P\d7\d7S\c1G\d4\d7\d7\d7\05++++++++++++\07\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00N1P1P1P1P1P1P1P\0d\00\00\00\00\00$P1P1P1P1P\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\00\00\00\00\00\00*++++++++++++++++++++++++++\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00++++++++\07\00HVVVVVVVV\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++++UVVVVVVVVVVVV\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\00\00\00\00\00\00$+++++++++++\07\00VVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*++++++++++VVVVVVVVVV\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\00\00\00\00\00\00\00*++++++++++VVVVVVVVVV\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+++++++++++UVVVVVVVVVV\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3820) "\00\08\00\00V\01\00\009\00\00\00") - (data (i32.const 3832) "\00\00\00\00\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") - (data (i32.const 4792) "\00\06\'Qow\00\00\00\00\00\00\00\00\00\00|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa\00\00\00\00\00\00\00\00\00\00\b4\c4\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c6\c9\00\00\00\db\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4\00\00\00\00\00\00\00\00\00\00\00\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ea\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ed\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5304) "0\0c1\0dx\0e\7f\0f\80\10\81\11\86\12\89\13\8a\13\8e\14\8f\15\90\16\93\13\94\17\95\18\96\19\97\1a\9a\1b\9c\19\9d\1c\9e\1d\9f\1e\a6\1f\a9\1f\ae\1f\b1 \b2 \b7!\bf\"\c5#\c8#\cb#\dd$\f2#\f6%\f7& -:.=/>0?1@1C2D3E4P5Q6R7S8T9Y:[;\\e?f@hAiBj@kClDoBqErFuG}H\82I\87J\89K\8aL\8bL\8cM\92N\9dO\9ePEW{\1d|\1d}\1d\7fX\86Y\88Z\89Z\8aZ\8c[\8e\\\8f\\\ac]\ad^\ae^\af^\c2_\cc`\cda\cea\cfb\d0c\d1d\d5e\d6f\d7g\f0h\f1i\f2j\f3k\f4l\f5m\f9n\fd-\fe-\ff-PiQiRiSiTiUiViWiXiYiZi[i\\i]i^i_i\82\00\83\00\84\00\85\00\86\00\87\00\88\00\89\00\c0u\cfv\80\89\81\8a\82\8b\85\8c\86\8dp\9dq\9dv\9ew\9ex\9fy\9fz\a0{\a0|\a1}\a1\b3\a2\ba\a3\bb\a3\bc\a4\be\a5\c3\a2\cc\a4\da\a6\db\a6\e5j\ea\a7\eb\a7\ecn\f3\a2\f8\a8\f9\a8\fa\a9\fb\a9\fc\a4&\b0*\b1+\b2N\b3\84\08b\bac\bbd\bce\bdf\bem\bfn\c0o\c1p\c2~\c3\7f\c3}\cf\8d\d0\94\d1\ab\d2\ac\d3\ad\d4\b0\d5\b1\d6\b2\d7\c4\d8\c5\d9\c6\da") - (data (i32.const 5712) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00c\00a\00s\00e\00m\00a\00p\00p\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 5778) "\00\01\02\03\04\05\06\07\08\t\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#$%&\'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7f") - (data (i32.const 5906) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01\00\00\00\00\00\00\00\00\00\00\00\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\\00\00\00\00\00\00\00\00\00\00\00\f2\07\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00\f2\1f@?\00\00\00\00\00\00\00\00\00\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@\00\00\00\00\00\00\00\00\00\00\00\00\e0\fdf\00\00\00\c3\01\00\1e\00d \00 \00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\e0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\87\01\04\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\00\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?\00\00\00\00\00\00\00\00\00\00\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\80\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\80\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\00\00\00\00\00\80\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00<>\08\00\00\00\00\00\00\00\00\00\00\00~\00\00\00\00\00\00\00\00\00\00\00p\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\80\f7\bf\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\03\00\ff\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\01\00\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00\03D\08\00\00`\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X\00\00\00\00\00\00\00\00\00\00\00\00\f8\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\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\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\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\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\00\00\00\00\00\00 \00\00\00\00\00\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00n\f0\00\00\00\00\00\87\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`\00\00\00\00\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e\00\00\00\00\00\00\00\00\00\00\00\80\d3@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\\\00\00@\00\00\00\00\00\00\00\00\00\00\f8\85\0d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00<\b0\01\00\000\00\00\00\00\00\00\00\00\00\00\f8\a7\01\00\00\00\00\00\00\00\00\00\00\00\00(\bf\00\00\00\00\00\00\00\00\00\00\00\00\e0\bc\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\ff\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00X\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\0c\01\00\00\00\fe\07\00\00\00\00\f8y\80\00~\0e\00\00\00\00\00\fc\7f\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7f\bf\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\fcm\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00~\b4\bf\00\00\00\00\00\00\00\00\00\a3\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\00\00\00\00\7f\00\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\03\f8\ff\e7\0f\00\00\00<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff\00\00\00\00\00\00\00\00\00\00\7f\ff\ff\f9\db\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8") - (data (i32.const 8914) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\80\00\00\ff\1f\00\00\00\00\00\00\00\00\00\00\00\00\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10496) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n\00") - (data (i32.const 10544) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n\00") - (data (i32.const 10592) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t\00") - (data (i32.const 10640) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t\00") - (data (i32.const 10688) "J\00\00\00\01\00\00\00\01\00\00\00J\00\00\00D\00e\00r\00 \00W\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00B\00e\00s\00t\00\e4\00n\00d\00i\00g\00e\00") - (data (i32.const 10784) "J\00\00\00\01\00\00\00\01\00\00\00J\00\00\00D\00E\00R\00 \00W\00E\00C\00H\00S\00E\00L\00 \00A\00L\00L\00E\00I\00N\00 \00I\00S\00T\00 \00D\00A\00S\00 \00B\00E\00S\00T\00\c4\00N\00D\00I\00G\00E\00") - (data (i32.const 10880) "J\00\00\00\01\00\00\00\01\00\00\00J\00\00\00d\00e\00r\00 \00w\00e\00c\00h\00s\00e\00l\00 \00a\00l\00l\00e\00i\00n\00 \00i\00s\00t\00 \00d\00a\00s\00 \00b\00e\00s\00t\00\e4\00n\00d\00i\00g\00e\00") - (data (i32.const 10976) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!\00") - (data (i32.const 11040) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \00\14\04 \04#\04\13\04 \00\'\04\15\04\1b\04\1e\04\12\04\15\04\1a\04\10\04!\00") - (data (i32.const 11104) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00@\00 \00\14 \004\04@\04C\043\04 \00G\045\04;\04>\042\045\04:\040\04!\00") - (data (i32.const 11168) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00") - (data (i32.const 11264) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00.\" \00E\00\c5\"D\00A\00 \00=\00 \00Q\00,\00 \00N\00 \00\92! \00\1e\",\00 \00\11\" \00F\00(\00I\00)\00 \00=\00 \00\0f\" \00G\00(\00I\00)\00") - (data (i32.const 11360) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00.\" \00e\00\c5\"d\00a\00 \00=\00 \00q\00,\00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00") - (data (i32.const 11456) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00") - (data (i32.const 11552) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00\d0\00I\00 \00I\00N\00T\00\8f\01\c8\02N\00\c6\00\a9\01\8f\01N\00\8f\01L\00 \00F\00\8f\01\c8\02N\00\90\01T\00I\00K\00 \00\8f\01S\00O\00\b1\01S\00I\00\c8\02E\00I\00\a9\01N\00") - (data (i32.const 11648) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\00\f0\00i\00 \00i\00n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\00i\00k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\00i\00\83\02n\00") - (data (i32.const 11744) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03\cc\03\c8\03\b7\03") - (data (i32.const 11808) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00\9a\03\8c\03\a8\03\97\03") - (data (i32.const 11872) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03\ae\03,\00") - (data (i32.const 11936) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00\a4\03\9f\03\a5\03B\03 \00\a3\03\a0\03\91\03\98\03\99\03\9f\03\a5\03B\03 \00\a4\03\ca\1f\9d\03 \00\a4\03\a1\03\9f\03\9c\03\95\03\a1\03\89\03,\00") - (data (i32.const 12016) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03\af\03\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03") - (data (i32.const 12080) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00\a3\03\c8\1f \00\93\03\9d\03\a9\03\a1\03\8a\03\96\03\a9\03 \00\08\1f\a0\03\f8\1f \00\a4\03\ca\1f\9d\03 \00L\1f\a8\03\97\03") - (data (i32.const 12144) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03\af\03\b1\03 \00\bc\03\b5\03\c4\03\c1\03\ac\03\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00") - (data (i32.const 12224) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00\a0\03\9f\03\ea\1f \00\9c\03\c8\1f \00\92\03\8a\03\91\03 \00\9c\03\95\03\a4\03\a1\03\86\03\95\03\99\03 \00\a4\03\ca\1f \00\93\03\97\03B\03.\00") - (data (i32.const 12304) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03\cc\03\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03\ad\03\bd\03\b7\03") - (data (i32.const 12368) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00\91\03\a0\03\bf\1f \00\a4\03\ba\1f \00\9a\03\8c\03\9a\03\9a\03\91\03\9b\03\91\03 \00\92\03\93\03\91\03\9b\03\9c\03\88\03\9d\03\97\03") - (data (i32.const 12432) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03\ae\03\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03\ac\03") - (data (i32.const 12496) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\00\a4\03\a9\03B\03\9d\03 \00\fe\1f\95\03\9b\03\9b\03\89\03\9d\03\a9\03\9d\03 \00\a4\03\ba\1f \009\1f\95\03\a1\03\86\03") - (data (i32.const 12560) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03\ad\03\bd\03\b7\03") - (data (i32.const 12640) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00\9a\03\91\03\da\1f \00\a3\03\ba\1f\9d\03 \00\a0\03\a1\03\a9\03B\03\a4\03\91\03 \00\08\1f\9d\03\94\03\a1\03\95\03\99\03\a9\03\9c\03\88\03\9d\03\97\03") - (data (i32.const 12720) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03\ac\03!\00") - (data (i32.const 12800) ":\00\00\00\01\00\00\00\01\00\00\00:\00\00\00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00n\1f \00\a7\03\91\03\99\03B\03\a1\03\95\03,\00 \00\bf\1f\95\03\9b\03\95\03\a5\03\98\03\95\03\a1\03\99\03\86\03!\00") - (data (i32.const 12880) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00") - (data (i32.const 13024) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00") - (data (i32.const 13168) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00/\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00") - (data (i32.const 13312) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\df\00") - (data (i32.const 13344) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00S\00S\00") - (data (i32.const 13376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\01") - (data (i32.const 13408) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00i\00\07\03") - (data (i32.const 13440) "\ae\00\00\00\01\00\00\00\01\00\00\00\ae\00\00\00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10") - (data (i32.const 13632) "\b2\00\00\00\01\00\00\00\01\00\00\00\b2\00\00\00\a3\00\a9\00\9c\03\c0\00\c6\00\d6\00\de\00S\00S\00\c9\00\d6\00x\01\13 \14 \18 \1c \1d \1e \" & 0 \"!R\01`\01x\01}\01\ac \00\91\03\92\03\93\03\94\03\a9\03\91\03\92\03\93\03\94\03\a9\03 \00\10\04\11\04\12\04\13\04\14\04\10\04\11\04\12\04\13\04\14\04\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00F\00I\00\fd\ff@$\82 (\1f\02\1e\e4\04\84\1eo,\d0\02N#\d0\051\05\90\1c") - (data (i32.const 13840) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00s\00s\00") - (data (i32.const 13872) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\01\fb") - (data (i32.const 13904) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00f\00i\00") - (data (i32.const 13936) "\b8\00\00\00\01\00\00\00\01\00\00\00\b8\00\00\00A\d8\0e\df \00A\d81\df \00A\d8y\df \00C\d8S\dc \00C\d8x\dc \00C\d8\96\dc \00C\d8\cf\dc \00C\d8\d5\dc \00C\d8\15\dd \00C\d8|\dd \00C\d8\7f\dd \00C\d8\0e\de \00C\d8\0f\de \00C\d8w\de \00C\d8\9d\de \00C\d8\a2\de \00C\d8\d7\de \00C\d8\f9\de \00C\d8\fa\de \00C\d8-\df \00C\d8.\df \00C\d8L\df \00C\d8\b4\df \00C\d8\bc\df \00C\d8\ea\df \00D\d8\\\dc \00D\d8o\dc \00D\d8u\dc \00D\d8v\dc \00D\d8{\dc \00D\d8\c1\dc") - (data (i32.const 14144) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 14192) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\dc") - (data (i32.const 14224) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\88\1f") - (data (i32.const 14256) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\80\1f") - (data (i32.const 14288) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\8f\1f") - (data (i32.const 14320) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\87\1f") - (data (i32.const 14352) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\fc\1f") - (data (i32.const 14384) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\f3\1f") - (data (i32.const 14416) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\a3\03") - (data (i32.const 14448) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\c3\03") - (data (i32.const 14480) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00 \00\a3\03") - (data (i32.const 14512) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00 \00\c3\03") - (data (i32.const 14544) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\a3\03 \00") - (data (i32.const 14576) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\c3\03 \00") - (data (i32.const 14608) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00\a3\03 \00") - (data (i32.const 14640) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00\c3\03 \00") - (data (i32.const 14672) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03 \00") - (data (i32.const 14704) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03 \00") - (data (i32.const 14736) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03\n\00") - (data (i32.const 14768) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\n\00") - (data (i32.const 14800) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00\a3\03") - (data (i32.const 14832) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00\c2\03") - (data (i32.const 14864) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03b\00") - (data (i32.const 14896) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c3\03b\00") - (data (i32.const 14928) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03 \00") - (data (i32.const 14960) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03 \00") - (data (i32.const 14992) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00\a3\03 \00") - (data (i32.const 15024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00\c3\03 \00") - (data (i32.const 15056) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00;\00\a3\03 \00") - (data (i32.const 15088) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00;\00\c3\03 \00") - (data (i32.const 15120) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\01\03\a3\03 \00") - (data (i32.const 15152) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\01\03\c3\03 \00") - (data (i32.const 15184) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 \00") - (data (i32.const 15216) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 \00") - (data (i32.const 15248) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03-\00") - (data (i32.const 15280) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03-\00") - (data (i32.const 15312) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-\00") - (data (i32.const 15344) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-\00") - (data (i32.const 15376) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") - (data (i32.const 15408) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") - (data (i32.const 15440) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\a3\03") - (data (i32.const 15472) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\c2\03") - (data (i32.const 15504) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00.\00\a3\03") - (data (i32.const 15536) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00.\00\c2\03") - (data (i32.const 15568) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\ad\00\a3\03") - (data (i32.const 15600) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\ad\00\c2\03") - (data (i32.const 15632) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\004\d8B\de\a3\03") - (data (i32.const 15664) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\004\d8B\de\c2\03") - (data (i32.const 15696) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00E\03\a3\03") - (data (i32.const 15728) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00E\03\c3\03") - (data (i32.const 15760) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\91\03E\03\a3\03") - (data (i32.const 15792) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\b1\03E\03\c2\03") - (data (i32.const 15824) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03B\00") - (data (i32.const 15856) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") - (data (i32.const 15888) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") - (data (i32.const 15920) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03.\00b\00") - (data (i32.const 15952) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03.\00b\00") - (data (i32.const 15984) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\ad\00B\00") - (data (i32.const 16016) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\ad\00b\00") - (data (i32.const 16048) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00A\00\a3\034\d8B\deB\00") - (data (i32.const 16080) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00\c3\034\d8B\deb\00") - (data (i32.const 16112) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03E\03") - (data (i32.const 16144) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03E\03") - (data (i32.const 16176) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") - (data (i32.const 16208) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") - (data (i32.const 16240) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\0e\18\a3\03") - (data (i32.const 16272) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\0e\18\c2\03") - (data (i32.const 16304) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03B\00") - (data (i32.const 16336) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c3\03b\00") - (data (i32.const 16368) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03\0e\18") - (data (i32.const 16400) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\0e\18") - (data (i32.const 16432) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\0e\18B\00") - (data (i32.const 16464) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\0e\18b\00") - (data (i32.const 16496) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") - (data (i32.const 16528) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") - (data (i32.const 16560) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B\00") - (data (i32.const 16592) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b\00") - (data (i32.const 16624) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\00\fb") - (data (i32.const 16656) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00F\00F\00") - (data (i32.const 16688) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00F\00I\00") - (data (i32.const 16720) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\02\fb") - (data (i32.const 16752) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00F\00L\00") - (data (i32.const 16784) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\03\fb") - (data (i32.const 16816) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00F\00F\00I\00") - (data (i32.const 16848) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\04\fb") - (data (i32.const 16880) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00F\00F\00L\00") - (data (i32.const 16912) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\05\fb") - (data (i32.const 16944) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00S\00T\00") - (data (i32.const 16976) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\06\fb") - (data (i32.const 17008) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\f0\01") - (data (i32.const 17040) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00J\00\0c\03") - (data (i32.const 17072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\96\1e") - (data (i32.const 17104) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00H\001\03") - (data (i32.const 17136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\97\1e") - (data (i32.const 17168) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00T\00\08\03") - (data (i32.const 17200) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\98\1e") - (data (i32.const 17232) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00W\00\n\03") - (data (i32.const 17264) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\99\1e") - (data (i32.const 17296) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00Y\00\n\03") - (data (i32.const 17328) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\9a\1e") - (data (i32.const 17360) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00A\00\be\02") - (data (i32.const 17392) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00") - (data (i32.const 17472) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 \00") - (data (i32.const 17536) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 17664) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 17728) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 17748) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 18160) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 19200) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00") - (data (i32.const 19296) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 19328) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00L\00o\00w\00e\00r\00C\00o\00d\00e\00 \00=\00 \00") - (data (i32.const 19392) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00!\00=\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00") - (data (i32.const 19472) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00 \00o\00r\00i\00g\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 \00") - (data (i32.const 19536) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00 \00e\00x\00p\00e\00c\00t\00U\00p\00p\00e\00r\00C\00o\00d\00e\00 \00=\00 \00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/util/casemap/SPECIALS_UPPER i32 (i32.const 208)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 19592)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 144 - i32.const 96 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/casemap/casemap (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.get $0 - local.set $2 - local.get $0 - i32.const 8 - i32.shr_u - local.set $3 - local.get $0 - i32.const 255 - i32.and - local.set $0 - local.get $0 - i32.const 3 - i32.div_u - local.set $4 - local.get $0 - i32.const 3 - i32.rem_u - local.set $5 - i32.const 1152 - i32.const 1152 - local.get $3 - i32.add - i32.load8_u - i32.const 86 - i32.mul - i32.add - local.get $4 - i32.add - i32.load8_u - local.set $6 - local.get $6 - i32.const 3820 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - i32.mul - i32.const 11 - i32.shr_u - i32.const 6 - i32.rem_u - local.set $6 - i32.const 3832 - i32.const 4792 - local.get $3 - i32.add - i32.load8_u - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $7 - i32.const 255 - i32.and - local.set $8 - local.get $7 - i32.const 8 - i32.shr_s - local.set $9 - local.get $8 - i32.const 2 - i32.lt_u - if - local.get $2 - local.get $9 - i32.const 0 - local.get $8 - local.get $1 - i32.xor - i32.sub - i32.and - i32.add - return - end - local.get $9 - i32.const 255 - i32.and - local.set $10 - local.get $9 - i32.const 8 - i32.shr_u - local.set $11 - loop $while-continue|0 - local.get $10 - local.set $12 - local.get $12 - if - local.get $10 - i32.const 1 - i32.shr_u - local.set $13 - i32.const 5304 - local.get $11 - local.get $13 - i32.add - i32.const 2 - i32.mul - i32.add - i32.load8_u - local.set $14 - local.get $14 - local.get $0 - i32.eq - if - i32.const 3832 - i32.const 5304 - local.get $11 - local.get $13 - i32.add - i32.const 2 - i32.mul - i32.add - i32.load8_u offset=1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $7 - i32.const 255 - i32.and - local.set $8 - local.get $7 - i32.const 8 - i32.shr_s - local.set $9 - local.get $8 - i32.const 2 - i32.lt_u - if - local.get $2 - local.get $9 - i32.const 0 - local.get $8 - local.get $1 - i32.xor - i32.sub - i32.and - i32.add - return - end - local.get $2 - i32.const 1 - i32.add - local.get $1 - i32.const 1 - i32.shl - i32.sub - return - else - local.get $14 - local.get $0 - i32.gt_u - if - local.get $13 - local.set $10 - else - local.get $11 - local.get $13 - i32.add - local.set $11 - local.get $10 - local.get $13 - i32.sub - local.set $10 - end - end - br $while-continue|0 - end - end - local.get $2 - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (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.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $3 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $6 - local.get $6 - i32.load - local.set $7 - local.get $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $5 - local.get $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $8 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u - if - i32.const 1 - drop - local.get $1 - local.get $8 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $8 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/string/String#toUpperCase (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.get $0 - call $~lib/string/String#get:length - local.set $1 - local.get $1 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $1 - i32.const 3 - i32.mul - i32.const 2 - i32.mul - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - global.get $~lib/util/casemap/SPECIALS_UPPER - local.set $3 - global.get $~lib/util/casemap/SPECIALS_UPPER - call $~lib/staticarray/StaticArray#get:length - local.set $4 - i32.const 0 - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_u - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $8 - local.get $8 - local.set $9 - local.get $9 - i32.const 7 - i32.shr_u - i32.eqz - if - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - block $~lib/util/string/toUpper8|inlined.0 (result i32) - local.get $8 - local.set $9 - i32.const 0 - i32.const 0 - i32.gt_s - drop - i32.const 1024 - local.get $9 - i32.add - i32.load8_u - br $~lib/util/string/toUpper8|inlined.0 - end - i32.store16 - else - local.get $8 - i32.const 55295 - i32.sub - i32.const 56320 - i32.const 55295 - i32.sub - i32.lt_u - if (result i32) - local.get $6 - local.get $1 - i32.const 1 - i32.sub - i32.lt_u - else - i32.const 0 - end - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.set $9 - local.get $9 - i32.const 56319 - i32.sub - i32.const 57344 - i32.const 56319 - i32.sub - i32.lt_u - if - local.get $8 - local.set $10 - local.get $8 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - local.get $9 - i32.const 1023 - i32.and - i32.or - i32.const 65536 - i32.add - local.set $8 - local.get $6 - i32.const 1 - i32.add - local.set $6 - local.get $8 - i32.const 131072 - i32.ge_u - if - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $10 - local.get $9 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-continue|0 - end - end - end - local.get $8 - i32.const 9424 - i32.sub - i32.const 9449 - i32.const 9424 - i32.sub - i32.le_u - if - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $8 - i32.const 26 - i32.sub - i32.store16 - else - i32.const -1 - local.set $9 - local.get $8 - i32.const 223 - i32.sub - i32.const 64279 - i32.const 223 - i32.sub - i32.le_u - if - block $~lib/util/casemap/bsearch|inlined.0 (result i32) - local.get $8 - local.set $12 - local.get $3 - local.set $11 - local.get $4 - local.set $10 - i32.const 0 - local.set $13 - loop $while-continue|1 - local.get $13 - local.get $10 - i32.le_s - local.set $14 - local.get $14 - if - local.get $13 - local.get $10 - i32.add - i32.const 3 - i32.shr_u - i32.const 2 - i32.shl - local.set $15 - local.get $11 - local.get $15 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $12 - i32.sub - local.set $16 - local.get $16 - i32.const 0 - i32.eq - if - local.get $15 - br $~lib/util/casemap/bsearch|inlined.0 - else - local.get $16 - i32.const 31 - i32.shr_u - if - local.get $15 - i32.const 4 - i32.add - local.set $13 - else - local.get $15 - i32.const 4 - i32.sub - local.set $10 - end - end - br $while-continue|1 - end - end - i32.const -1 - end - local.set $9 - end - local.get $9 - i32.const -1 - i32.xor - if - local.get $3 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load offset=2 - local.set $13 - local.get $3 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=6 - local.set $12 - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $13 - i32.store - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $12 - i32.store16 offset=4 - local.get $5 - i32.const 1 - local.get $12 - i32.const 0 - i32.ne - i32.add - i32.add - local.set $5 - else - local.get $8 - i32.const 1 - call $~lib/util/casemap/casemap - i32.const 2097151 - i32.and - local.set $12 - local.get $12 - i32.const 65536 - i32.lt_s - if - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $12 - i32.store16 - else - local.get $12 - i32.const 65536 - i32.sub - local.set $12 - local.get $12 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.set $13 - local.get $12 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - local.set $11 - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $13 - local.get $11 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - end - end - end - end - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__realloc - local.set $2 - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/util/string/stagedBinaryLookup (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $0 - local.get $1 - i32.const 8 - i32.shr_u - i32.add - i32.load8_u - i32.const 5 - i32.shl - i32.add - local.get $1 - i32.const 255 - i32.and - i32.const 3 - i32.shr_u - i32.add - i32.load8_u - local.get $1 - i32.const 7 - i32.and - i32.shr_u - i32.const 1 - i32.and - ) - (func $~lib/string/String#toLowerCase (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.get $0 - call $~lib/string/String#get:length - local.set $1 - local.get $1 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $1 - i32.const 2 - i32.mul - i32.const 2 - i32.mul - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - i32.const 0 - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_u - local.set $5 - local.get $5 - if - block $for-continue|0 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $6 - local.get $6 - local.set $7 - local.get $7 - i32.const 7 - i32.shr_u - i32.eqz - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - block $~lib/util/string/toLower8|inlined.0 (result i32) - local.get $6 - local.set $7 - i32.const 0 - i32.const 0 - i32.gt_s - drop - i32.const 5778 - local.get $7 - i32.add - i32.load8_u - br $~lib/util/string/toLower8|inlined.0 - end - i32.store16 - else - local.get $6 - i32.const 55295 - i32.sub - i32.const 56320 - i32.const 55295 - i32.sub - i32.lt_u - if (result i32) - local.get $4 - local.get $1 - i32.const 1 - i32.sub - i32.lt_u - else - i32.const 0 - end - if - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.set $7 - local.get $7 - i32.const 56319 - i32.sub - i32.const 57344 - i32.const 56319 - i32.sub - i32.lt_u - if - local.get $6 - local.set $8 - local.get $6 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - local.get $7 - i32.const 1023 - i32.and - i32.or - i32.const 65536 - i32.add - local.set $6 - local.get $4 - i32.const 1 - i32.add - local.set $4 - local.get $6 - i32.const 131072 - i32.ge_u - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $7 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-continue|0 - end - end - end - local.get $6 - i32.const 304 - i32.eq - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 775 - i32.const 16 - i32.shl - i32.const 105 - i32.or - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - else - local.get $6 - i32.const 931 - i32.eq - if - i32.const 963 - local.set $7 - local.get $1 - i32.const 1 - i32.gt_u - if (result i32) - block $~lib/util/string/isFinalSigma|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $1 - local.set $8 - i32.const 0 - local.set $11 - local.get $9 - local.set $12 - i32.const 0 - local.tee $13 - local.get $12 - i32.const 30 - i32.sub - local.tee $14 - local.get $13 - local.get $14 - i32.gt_s - select - local.set $13 - loop $while-continue|1 - local.get $12 - local.get $13 - i32.gt_s - local.set $14 - local.get $14 - if - block $~lib/util/string/codePointBefore|inlined.0 (result i32) - local.get $10 - local.set $16 - local.get $12 - local.set $15 - local.get $15 - i32.const 0 - i32.le_s - if - i32.const -1 - br $~lib/util/string/codePointBefore|inlined.0 - end - local.get $16 - local.get $15 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $17 - local.get $17 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - local.get $15 - i32.const 2 - i32.sub - i32.const 0 - i32.ge_s - i32.and - if - local.get $16 - local.get $15 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $18 - local.get $18 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - if - local.get $18 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - local.get $17 - i32.const 1023 - i32.and - i32.add - i32.const 65536 - i32.add - br $~lib/util/string/codePointBefore|inlined.0 - end - end - local.get $17 - i32.const 63488 - i32.and - i32.const 55296 - i32.eq - if (result i32) - i32.const 65533 - else - local.get $17 - end - end - local.set $17 - local.get $17 - local.set $18 - local.get $18 - i32.const 918000 - i32.lt_u - if (result i32) - i32.const 5906 - local.get $18 - call $~lib/util/string/stagedBinaryLookup - else - i32.const 0 - end - i32.eqz - if - local.get $17 - local.set $15 - local.get $15 - i32.const 127370 - i32.lt_u - if (result i32) - i32.const 8914 - local.get $15 - call $~lib/util/string/stagedBinaryLookup - else - i32.const 0 - end - if - i32.const 1 - local.set $11 - else - i32.const 0 - br $~lib/util/string/isFinalSigma|inlined.0 - end - end - local.get $12 - local.get $17 - i32.const 65536 - i32.ge_s - i32.const 1 - i32.add - i32.sub - local.set $12 - br $while-continue|1 - end - end - local.get $11 - i32.eqz - if - i32.const 0 - br $~lib/util/string/isFinalSigma|inlined.0 - end - local.get $9 - i32.const 1 - i32.add - local.set $12 - local.get $12 - i32.const 30 - i32.add - local.tee $14 - local.get $8 - local.tee $15 - local.get $14 - local.get $15 - i32.lt_s - select - local.set $14 - loop $while-continue|2 - local.get $12 - local.get $14 - i32.lt_s - local.set $15 - local.get $15 - if - local.get $10 - local.get $12 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $18 - local.get $18 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - local.get $12 - i32.const 1 - i32.add - local.get $8 - i32.ne - i32.and - if - local.get $10 - local.get $12 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.set $16 - local.get $16 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $18 - i32.const 55296 - i32.sub - i32.const 10 - i32.shl - local.get $16 - i32.const 56320 - i32.sub - i32.add - i32.const 65536 - i32.add - local.set $18 - end - end - local.get $18 - local.set $16 - local.get $16 - i32.const 918000 - i32.lt_u - if (result i32) - i32.const 5906 - local.get $16 - call $~lib/util/string/stagedBinaryLookup - else - i32.const 0 - end - i32.eqz - if - local.get $18 - local.set $16 - local.get $16 - i32.const 127370 - i32.lt_u - if (result i32) - i32.const 8914 - local.get $16 - call $~lib/util/string/stagedBinaryLookup - else - i32.const 0 - end - i32.eqz - br $~lib/util/string/isFinalSigma|inlined.0 - end - local.get $12 - local.get $18 - i32.const 65536 - i32.ge_u - i32.const 1 - i32.add - i32.add - local.set $12 - br $while-continue|2 - end - end - i32.const 1 - end - else - i32.const 0 - end - if - i32.const 962 - local.set $7 - end - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - else - local.get $6 - i32.const 9398 - i32.sub - i32.const 9423 - i32.const 9398 - i32.sub - i32.le_u - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $6 - i32.const 26 - i32.add - i32.store16 - else - local.get $6 - i32.const 0 - call $~lib/util/casemap/casemap - i32.const 2097151 - i32.and - local.set $7 - local.get $7 - i32.const 65536 - i32.lt_s - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - else - local.get $7 - i32.const 65536 - i32.sub - local.set $7 - local.get $7 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.set $14 - local.get $7 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - local.set $13 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $14 - local.get $13 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - end - end - end - end - end - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $3 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__realloc - local.set $2 - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 1114111 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 14160 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 65535 - i32.gt_s - local.set $1 - i32.const 2 - local.get $1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $1 - i32.eqz - if - local.get $2 - local.get $0 - i32.store16 - else - local.get $0 - i32.const 65536 - i32.sub - local.set $0 - local.get $0 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - local.set $3 - local.get $0 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.set $4 - local.get $2 - local.get $4 - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#codePointAt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $1 - local.get $2 - i32.ge_u - if - i32.const -1 - return - end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $3 - local.get $3 - i32.const 64512 - i32.and - i32.const 55296 - i32.ne - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1 - i32.add - local.get $2 - i32.eq - end - if - local.get $3 - return - end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.set $4 - local.get $4 - i32.const 64512 - i32.and - i32.const 56320 - i32.ne - if - local.get $3 - return - end - local.get $3 - i32.const 55296 - i32.sub - i32.const 10 - i32.shl - local.get $4 - i32.const 56320 - i32.sub - i32.add - i32.const 65536 - i32.add - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 100000 - i32.lt_u - if - local.get $0 - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $0 - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $0 - i32.const 10000 - i32.ge_u - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $0 - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - i32.const 17748 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - i32.const 17748 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $1 - i32.const 100 - i32.div_u - local.set $3 - local.get $1 - i32.const 100 - i32.rem_u - local.set $10 - local.get $3 - local.set $1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 17748 - local.get $10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 17748 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - else - local.get $2 - i32.const 1 - i32.sub - local.set $2 - i32.const 48 - local.get $1 - i32.add - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if - local.get $0 - i64.const 1000000000000 - i64.lt_u - if - i32.const 10 - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - return - else - i32.const 13 - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if - i32.const 16 - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.add - return - else - i32.const 18 - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - loop $while-continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i64.const 100000000 - i64.div_u - local.set $4 - local.get $1 - local.get $4 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 - local.get $6 - i32.const 100 - i32.div_u - local.set $8 - local.get $6 - i32.const 100 - i32.rem_u - local.set $9 - local.get $7 - i32.const 100 - i32.div_u - local.set $10 - local.get $7 - i32.const 100 - i32.rem_u - local.set $11 - i32.const 17748 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 17748 - local.get $11 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - i32.const 17748 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 17748 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $0 - local.get $1 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - ) - (func $~lib/util/number/utoa_hex_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $2 - i32.const 2 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 18176 - local.get $1 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i64.const 8 - i64.shr_u - local.set $1 - br $while-continue|0 - end - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - i32.const 18176 - local.get $1 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - local.get $1 - local.set $2 - local.get $2 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $1 - i64.extend_i32_s - local.set $3 - local.get $3 - local.set $4 - i32.const 1 - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $4 - i64.div_u - local.set $0 - local.get $4 - local.get $4 - i64.mul - local.set $4 - local.get $5 - i32.const 1 - i32.shl - local.set $5 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $0 - i64.const 1 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $3 - i64.div_u - local.set $0 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $while-continue|1 - end - end - local.get $5 - i32.const 1 - i32.sub - ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i32) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $5 - local.get $4 - i64.const 1 - i64.sub - local.set $6 - loop $do-continue|0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 19216 - local.get $1 - local.get $6 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $5 - i64.shr_u - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|0 - end - else - loop $do-continue|1 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $4 - i64.div_u - local.set $6 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 19216 - local.get $1 - local.get $6 - local.get $4 - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $6 - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|1 - end - end - ) - (func $~lib/util/number/utoa64 (param $0 i64) (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 i64) - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 17552 - i32.const 17680 - i32.const 401 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 0 - i64.ne - i32.eqz - if - i32.const 17744 - return - end - i32.const 0 - local.set $2 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.set $3 - local.get $3 - call $~lib/util/number/decimalCount32 - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $7 - local.get $3 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $8 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $3 - local.get $0 - local.set $8 - local.get $4 - local.set $7 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $3 - local.get $8 - local.get $7 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.get $0 - local.get $4 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/number/U64#toString (param $0 i64) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/util/number/utoa64 - ) - (func $~lib/string/String#concat (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 19312 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - end - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $4 - local.get $1 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $5 - local.get $4 - local.get $5 - i32.add - local.set $6 - local.get $6 - i32.const 0 - i32.eq - if - i32.const 32 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $6 - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 - local.get $0 - local.get $4 - call $~lib/memory/memory.copy - local.get $7 - local.get $4 - i32.add - local.get $1 - local.get $5 - call $~lib/memory/memory.copy - local.get $7 - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.const 19312 - local.get $0 - i32.const 0 - i32.ne - select - local.get $1 - call $~lib/string/String#concat - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $start:std/string-casemapping - (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) - (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 i64) - (local $92 i64) - (local $93 i64) - (local $94 i64) - (local $95 i64) - (local $96 i64) - (local $97 i32) - (local $98 i32) - (local $99 i32) - (local $100 i32) - i32.const 32 - call $~lib/string/String#toUpperCase - local.tee $0 - i32.const 32 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - call $~lib/string/String#toLowerCase - local.tee $1 - i32.const 32 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10512 - call $~lib/string/String#toUpperCase - local.tee $2 - i32.const 10560 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10608 - call $~lib/string/String#toLowerCase - local.tee $3 - i32.const 10656 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10704 - call $~lib/string/String#toUpperCase - local.tee $4 - i32.const 10800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10800 - call $~lib/string/String#toLowerCase - local.tee $5 - i32.const 10896 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10992 - call $~lib/string/String#toUpperCase - local.tee $6 - i32.const 11056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11056 - call $~lib/string/String#toLowerCase - local.tee $7 - i32.const 11120 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11184 - call $~lib/string/String#toUpperCase - local.tee $8 - i32.const 11280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11280 - call $~lib/string/String#toLowerCase - local.tee $9 - i32.const 11376 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11472 - call $~lib/string/String#toUpperCase - local.tee $10 - i32.const 11568 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11568 - call $~lib/string/String#toLowerCase - local.tee $11 - i32.const 11664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11760 - call $~lib/string/String#toUpperCase - local.tee $12 - i32.const 11824 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11888 - call $~lib/string/String#toUpperCase - local.tee $13 - i32.const 11952 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12032 - call $~lib/string/String#toUpperCase - local.tee $14 - i32.const 12096 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12160 - call $~lib/string/String#toUpperCase - local.tee $15 - i32.const 12240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12320 - call $~lib/string/String#toUpperCase - local.tee $16 - i32.const 12384 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12448 - call $~lib/string/String#toUpperCase - local.tee $17 - i32.const 12512 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12576 - call $~lib/string/String#toUpperCase - local.tee $18 - i32.const 12656 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12736 - call $~lib/string/String#toUpperCase - local.tee $19 - i32.const 12816 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12896 - call $~lib/string/String#toUpperCase - local.tee $20 - i32.const 13040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12896 - call $~lib/string/String#toLowerCase - local.tee $21 - i32.const 13184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13328 - call $~lib/string/String#toUpperCase - local.tee $22 - i32.const 13360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13392 - call $~lib/string/String#toLowerCase - local.tee $23 - i32.const 13424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13456 - call $~lib/string/String#toUpperCase - local.tee $24 - i32.const 13648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13328 - call $~lib/string/String#toUpperCase - local.tee $25 - call $~lib/string/String#toLowerCase - local.tee $26 - i32.const 13856 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13888 - call $~lib/string/String#toUpperCase - local.tee $27 - call $~lib/string/String#toLowerCase - local.tee $28 - i32.const 13920 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13952 - call $~lib/string/String#toUpperCase - local.tee $29 - call $~lib/string/String#toLowerCase - local.tee $30 - i32.const 13952 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 65536 - call $~lib/string/String.fromCodePoint - local.tee $31 - call $~lib/string/String#toLowerCase - local.tee $32 - i32.const 14208 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 65536 - call $~lib/string/String.fromCodePoint - local.tee $33 - call $~lib/string/String#toUpperCase - local.tee $34 - i32.const 14208 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14240 - call $~lib/string/String#toLowerCase - local.tee $35 - i32.const 14272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 54 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14304 - call $~lib/string/String#toLowerCase - local.tee $36 - i32.const 14336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 55 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14368 - call $~lib/string/String#toLowerCase - local.tee $37 - i32.const 14400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14432 - call $~lib/string/String#toLowerCase - local.tee $38 - i32.const 14464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14496 - call $~lib/string/String#toLowerCase - local.tee $39 - i32.const 14528 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 60 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14560 - call $~lib/string/String#toLowerCase - local.tee $40 - i32.const 14592 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14624 - call $~lib/string/String#toLowerCase - local.tee $41 - i32.const 14656 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14688 - call $~lib/string/String#toLowerCase - local.tee $42 - i32.const 14720 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14752 - call $~lib/string/String#toLowerCase - local.tee $43 - i32.const 14784 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14816 - call $~lib/string/String#toLowerCase - local.tee $44 - i32.const 14848 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 65 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14880 - call $~lib/string/String#toLowerCase - local.tee $45 - i32.const 14912 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14944 - call $~lib/string/String#toLowerCase - local.tee $46 - i32.const 14976 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 67 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15008 - call $~lib/string/String#toLowerCase - local.tee $47 - i32.const 15040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 68 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15072 - call $~lib/string/String#toLowerCase - local.tee $48 - i32.const 15104 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15136 - call $~lib/string/String#toLowerCase - local.tee $49 - i32.const 15168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15200 - call $~lib/string/String#toLowerCase - local.tee $50 - i32.const 15232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15264 - call $~lib/string/String#toLowerCase - local.tee $51 - i32.const 15296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15328 - call $~lib/string/String#toLowerCase - local.tee $52 - i32.const 15360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 74 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15392 - call $~lib/string/String#toLowerCase - local.tee $53 - i32.const 15424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 75 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15456 - call $~lib/string/String#toLowerCase - local.tee $54 - i32.const 15488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15520 - call $~lib/string/String#toLowerCase - local.tee $55 - i32.const 15552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15584 - call $~lib/string/String#toLowerCase - local.tee $56 - i32.const 15616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 80 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15648 - call $~lib/string/String#toLowerCase - local.tee $57 - i32.const 15680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 81 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15712 - call $~lib/string/String#toLowerCase - local.tee $58 - i32.const 15744 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 82 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15776 - call $~lib/string/String#toLowerCase - local.tee $59 - i32.const 15808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 83 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15840 - call $~lib/string/String#toLowerCase - local.tee $60 - i32.const 14912 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15872 - call $~lib/string/String#toLowerCase - local.tee $61 - i32.const 15904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 85 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15936 - call $~lib/string/String#toLowerCase - local.tee $62 - i32.const 15968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 86 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16000 - call $~lib/string/String#toLowerCase - local.tee $63 - i32.const 16032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16064 - call $~lib/string/String#toLowerCase - local.tee $64 - i32.const 16096 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 88 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16128 - call $~lib/string/String#toLowerCase - local.tee $65 - i32.const 16160 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 89 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16192 - call $~lib/string/String#toLowerCase - local.tee $66 - i32.const 16224 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 90 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16256 - call $~lib/string/String#toLowerCase - local.tee $67 - i32.const 16288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 91 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16320 - call $~lib/string/String#toLowerCase - local.tee $68 - i32.const 16352 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16384 - call $~lib/string/String#toLowerCase - local.tee $69 - i32.const 16416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 93 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16448 - call $~lib/string/String#toLowerCase - local.tee $70 - i32.const 16480 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 94 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16512 - call $~lib/string/String#toLowerCase - local.tee $71 - i32.const 16544 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16576 - call $~lib/string/String#toLowerCase - local.tee $72 - i32.const 16608 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 96 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16640 - call $~lib/string/String#toUpperCase - local.tee $73 - i32.const 16672 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 99 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13888 - call $~lib/string/String#toUpperCase - local.tee $74 - i32.const 16704 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16736 - call $~lib/string/String#toUpperCase - local.tee $75 - i32.const 16768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16800 - call $~lib/string/String#toUpperCase - local.tee $76 - i32.const 16832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16864 - call $~lib/string/String#toUpperCase - local.tee $77 - i32.const 16896 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16928 - call $~lib/string/String#toUpperCase - local.tee $78 - i32.const 16960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16992 - call $~lib/string/String#toUpperCase - local.tee $79 - i32.const 16960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17024 - call $~lib/string/String#toUpperCase - local.tee $80 - i32.const 17056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17088 - call $~lib/string/String#toUpperCase - local.tee $81 - i32.const 17120 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17152 - call $~lib/string/String#toUpperCase - local.tee $82 - i32.const 17184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17216 - call $~lib/string/String#toUpperCase - local.tee $83 - i32.const 17248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 109 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17280 - call $~lib/string/String#toUpperCase - local.tee $84 - i32.const 17312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17344 - call $~lib/string/String#toUpperCase - local.tee $85 - i32.const 17376 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 5728 - i32.const 111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $86 - loop $for-loop|0 - local.get $86 - i32.const 1114111 - i32.le_s - local.set $87 - local.get $87 - if - local.get $86 - call $~lib/string/String.fromCodePoint - local.set $88 - local.get $88 - call $~lib/string/String#toLowerCase - local.set $89 - local.get $88 - call $~lib/string/String#toUpperCase - local.set $90 - local.get $89 - i32.const 0 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.set $93 - local.get $89 - i32.const 1 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $91 - i64.const 0 - i64.ge_u - if - local.get $93 - local.get $91 - i64.const 16 - i64.shl - i64.add - local.set $93 - end - local.get $89 - i32.const 2 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $92 - i64.const 0 - i64.ge_u - if - local.get $93 - local.get $92 - i64.const 32 - i64.shl - i64.add - local.set $93 - end - local.get $90 - i32.const 0 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.set $94 - local.get $90 - i32.const 1 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $91 - i64.const 0 - i64.ge_u - if - local.get $94 - local.get $91 - i64.const 16 - i64.shl - i64.add - local.set $94 - end - local.get $90 - i32.const 2 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $92 - i64.const 0 - i64.ge_u - if - local.get $94 - local.get $92 - i64.const 32 - i64.shl - i64.add - local.set $94 - end - local.get $86 - i32.const 0 - call $std/string-casemapping/toLowerCaseFromIndex - i64.extend_i32_s - local.set $95 - local.get $86 - i32.const 1 - call $std/string-casemapping/toLowerCaseFromIndex - i64.extend_i32_s - local.tee $91 - i64.const 0 - i64.ge_u - if - local.get $95 - local.get $91 - i64.const 16 - i64.shl - i64.add - local.set $95 - end - local.get $86 - i32.const 2 - call $std/string-casemapping/toLowerCaseFromIndex - i64.extend_i32_s - local.tee $92 - i64.const 0 - i64.ge_u - if - local.get $95 - local.get $92 - i64.const 32 - i64.shl - i64.add - local.set $95 - end - local.get $86 - i32.const 0 - call $std/string-casemapping/toUpperCaseFromIndex - i64.extend_i32_s - local.set $96 - local.get $86 - i32.const 1 - call $std/string-casemapping/toUpperCaseFromIndex - i64.extend_i32_s - local.tee $91 - i64.const 0 - i64.ge_u - if - local.get $96 - local.get $91 - i64.const 16 - i64.shl - i64.add - local.set $96 - end - local.get $86 - i32.const 2 - call $std/string-casemapping/toUpperCaseFromIndex - i64.extend_i32_s - local.tee $92 - i64.const 0 - i64.ge_u - if - local.get $96 - local.get $92 - i64.const 32 - i64.shl - i64.add - local.set $96 - end - local.get $93 - local.get $95 - i64.ne - if - i32.const 17408 - i32.const 1 - local.get $86 - f64.convert_i32_s - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 17488 - local.get $93 - i32.const 10 - call $~lib/number/U64#toString - local.tee $97 - call $~lib/string/String.__concat - local.tee $98 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 19344 - local.get $95 - i32.const 10 - call $~lib/number/U64#toString - local.tee $99 - call $~lib/string/String.__concat - local.tee $100 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - local.get $97 - call $~lib/rt/pure/__release - local.get $98 - call $~lib/rt/pure/__release - local.get $99 - call $~lib/rt/pure/__release - local.get $100 - call $~lib/rt/pure/__release - end - local.get $94 - local.get $96 - i64.ne - if - i32.const 19408 - i32.const 1 - local.get $86 - f64.convert_i32_s - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 19488 - local.get $94 - i32.const 10 - call $~lib/number/U64#toString - local.tee $100 - call $~lib/string/String.__concat - local.tee $99 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 19552 - local.get $96 - i32.const 10 - call $~lib/number/U64#toString - local.tee $98 - call $~lib/string/String.__concat - local.tee $97 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - local.get $100 - call $~lib/rt/pure/__release - local.get $99 - call $~lib/rt/pure/__release - local.get $98 - call $~lib/rt/pure/__release - local.get $97 - call $~lib/rt/pure/__release - end - local.get $88 - call $~lib/rt/pure/__release - local.get $89 - call $~lib/rt/pure/__release - local.get $90 - call $~lib/rt/pure/__release - local.get $86 - i32.const 1 - i32.add - local.set $86 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $55 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $59 - call $~lib/rt/pure/__release - local.get $60 - call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - local.get $64 - call $~lib/rt/pure/__release - local.get $65 - call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $67 - call $~lib/rt/pure/__release - local.get $68 - call $~lib/rt/pure/__release - local.get $69 - call $~lib/rt/pure/__release - local.get $70 - call $~lib/rt/pure/__release - local.get $71 - call $~lib/rt/pure/__release - local.get $72 - call $~lib/rt/pure/__release - local.get $73 - call $~lib/rt/pure/__release - local.get $74 - call $~lib/rt/pure/__release - local.get $75 - call $~lib/rt/pure/__release - local.get $76 - call $~lib/rt/pure/__release - local.get $77 - call $~lib/rt/pure/__release - local.get $78 - call $~lib/rt/pure/__release - local.get $79 - call $~lib/rt/pure/__release - local.get $80 - call $~lib/rt/pure/__release - local.get $81 - call $~lib/rt/pure/__release - local.get $82 - call $~lib/rt/pure/__release - local.get $83 - call $~lib/rt/pure/__release - local.get $84 - call $~lib/rt/pure/__release - local.get $85 - call $~lib/rt/pure/__release - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:std/string-casemapping - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 48 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/staticarray/StaticArray#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/std/string-encoding.debug.wat b/tests/compiler/std/string-encoding.debug.wat new file mode 100644 index 0000000000..eb35cd9489 --- /dev/null +++ b/tests/compiler/std/string-encoding.debug.wat @@ -0,0 +1,5234 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $std/string-encoding/str (mut i32) (i32.const 32)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 21760)) + (global $~lib/memory/__data_end i32 (i32.const 21780)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 54548)) + (global $~lib/memory/__heap_base i32 (i32.const 54548)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") + (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s\00") + (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $3 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 364) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\01\d87\dc\00\00\00\00\00\00\00\00") + (data $12 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00h\00i\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00R\d8b\df\00\00\00\00\00\00\00\00") + (data $15 (i32.const 668) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00U\00n\00p\00a\00i\00r\00e\00d\00 \00s\00u\00r\00r\00o\00g\00a\00t\00e\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 732) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data $17 (i32.const 780) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\008\00\00\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00\00\00\00\00\00\00") + (data $18 (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\004\d8\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 892) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\fd\ff\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\1e\dd\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 956) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\002\003\00\00\004\005\006\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 1004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\002\003\00\00\00\00\00\00\00") + (data $23 (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00h\00i\00R\d8b\df\00\00\00\00") + (data $24 (i32.const 1068) "<3\00\00\00\00\00\00\00\00\00\00\02\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\r\0e\r\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\r\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\r\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\r\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\r\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\r\12 \00`\12\a5\12\r\13)\12 \00\ed\12\04\12\f3\12\r\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\r\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\r\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\r\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\r\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\r\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\r\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\r\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\r\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\r(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\r(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\r(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\r(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\r(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\r(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\r(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\r(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\r( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\r(\n(\07(\11(\06( \00\01(\1d(\19( \00\r(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\r(\n(\1e( \00\r(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\r(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\r%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n\00\00\00") + (data $25 (i32.const 14188) "\8c\1d\00\00\00\00\00\00\00\00\00\00\02\00\00\00p\1d\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\r\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n\00\n\00O\00t\00h\00e\00r\00\n\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c0\00\c8\00 \00/\00 \00c\003\00_\008\000\00 \00c\003\00_\008\008\00\n\00 \00 \00\d8S\cf\91 \00/\00 \00e\005\00_\008\00f\00_\009\008\00 \00e\009\00_\008\007\00_\008\00f\00\n\00 \00 \00A\d8\0e\dfA\d81\df \00/\00 \00f\000\00_\00a\000\00_\009\00c\00_\008\00e\00 \00f\000\00_\00a\000\00_\009\00c\00_\00b\001\00\n\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 21760) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String.UTF16.byteLength (param $str i32) (result i32) + local.get $str + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 320 + i32.const 384 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 192 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 128 + i32.const 464 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 128 + i32.const 192 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/string/String.UTF16.encodeUnsafe (param $str i32) (param $len i32) (param $buf i32) (result i32) + (local $size i32) + local.get $len + i32.const 1 + i32.shl + local.set $size + local.get $buf + local.get $str + local.get $size + memory.copy + local.get $size + return + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/string/String.UTF8.byteLength (param $str i32) (param $nullTerminated i32) (result i32) + (local $strOff i32) + (local $strEnd i32) + (local $bufLen i32) + (local $c1 i32) + local.get $str + local.set $strOff + local.get $strOff + local.get $str + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.add + local.set $strEnd + local.get $nullTerminated + i32.const 0 + i32.ne + local.set $bufLen + block $while-break|0 + loop $while-continue|0 + local.get $strOff + local.get $strEnd + i32.lt_u + if + local.get $strOff + i32.load16_u + local.set $c1 + local.get $c1 + i32.const 128 + i32.lt_u + if + local.get $nullTerminated + local.get $c1 + i32.eqz + i32.and + if + br $while-break|0 + end + local.get $bufLen + i32.const 1 + i32.add + local.set $bufLen + else + local.get $c1 + i32.const 2048 + i32.lt_u + if + local.get $bufLen + i32.const 2 + i32.add + local.set $bufLen + else + local.get $c1 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $strOff + i32.const 2 + i32.add + local.get $strEnd + i32.lt_u + else + i32.const 0 + end + if + local.get $strOff + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $bufLen + i32.const 4 + i32.add + local.set $bufLen + local.get $strOff + i32.const 4 + i32.add + local.set $strOff + br $while-continue|0 + end + end + local.get $bufLen + i32.const 3 + i32.add + local.set $bufLen + end + end + local.get $strOff + i32.const 2 + i32.add + local.set $strOff + br $while-continue|0 + end + end + end + local.get $bufLen + return + ) + (func $~lib/string/String.UTF8.encodeUnsafe (param $str i32) (param $len i32) (param $buf i32) (param $nullTerminated i32) (param $errorMode i32) (result i32) + (local $strEnd i32) + (local $bufOff i32) + (local $c1 i32) + (local $b0 i32) + (local $b1 i32) + (local $c2 i32) + (local $b0|11 i32) + (local $b1|12 i32) + (local $b2 i32) + (local $b3 i32) + (local $b0|15 i32) + (local $b1|16 i32) + (local $b2|17 i32) + (local $18 i32) + local.get $str + local.get $len + i32.const 1 + i32.shl + i32.add + local.set $strEnd + local.get $buf + local.set $bufOff + loop $while-continue|0 + local.get $str + local.get $strEnd + i32.lt_u + if + local.get $str + i32.load16_u + local.set $c1 + local.get $c1 + i32.const 128 + i32.lt_u + if + local.get $bufOff + local.get $c1 + i32.store8 + local.get $bufOff + i32.const 1 + i32.add + local.set $bufOff + local.get $nullTerminated + local.get $c1 + i32.eqz + i32.and + if + local.get $bufOff + local.get $buf + i32.sub + return + end + else + local.get $c1 + i32.const 2048 + i32.lt_u + if + local.get $c1 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.set $b0 + local.get $c1 + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $b1 + local.get $bufOff + local.get $b1 + i32.const 8 + i32.shl + local.get $b0 + i32.or + i32.store16 + local.get $bufOff + i32.const 2 + i32.add + local.set $bufOff + else + local.get $c1 + i32.const 63488 + i32.and + i32.const 55296 + i32.eq + if + local.get $c1 + i32.const 56320 + i32.lt_u + if (result i32) + local.get $str + i32.const 2 + i32.add + local.get $strEnd + i32.lt_u + else + i32.const 0 + end + if + local.get $str + i32.load16_u offset=2 + local.set $c2 + local.get $c2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + i32.const 65536 + local.get $c1 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.add + local.get $c2 + i32.const 1023 + i32.and + i32.or + local.set $c1 + local.get $c1 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + local.set $b0|11 + local.get $c1 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $b1|12 + local.get $c1 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $b2 + local.get $c1 + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $b3 + local.get $bufOff + local.get $b3 + i32.const 24 + i32.shl + local.get $b2 + i32.const 16 + i32.shl + i32.or + local.get $b1|12 + i32.const 8 + i32.shl + i32.or + local.get $b0|11 + i32.or + i32.store + local.get $bufOff + i32.const 4 + i32.add + local.set $bufOff + local.get $str + i32.const 4 + i32.add + local.set $str + br $while-continue|0 + end + end + local.get $errorMode + i32.const 0 + i32.ne + if + local.get $errorMode + i32.const 2 + i32.eq + if + i32.const 688 + i32.const 752 + i32.const 742 + i32.const 49 + call $~lib/builtins/abort + unreachable + end + i32.const 65533 + local.set $c1 + end + end + local.get $c1 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.set $b0|15 + local.get $c1 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $b1|16 + local.get $c1 + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $b2|17 + local.get $bufOff + local.get $b1|16 + i32.const 8 + i32.shl + local.get $b0|15 + i32.or + i32.store16 + local.get $bufOff + local.get $b2|17 + i32.store8 offset=2 + local.get $bufOff + i32.const 3 + i32.add + local.set $bufOff + end + end + local.get $str + i32.const 2 + i32.add + local.set $str + br $while-continue|0 + end + end + local.get $nullTerminated + if + local.get $bufOff + local.tee $18 + i32.const 1 + i32.add + local.set $bufOff + local.get $18 + i32.const 0 + i32.store8 + end + local.get $bufOff + local.get $buf + i32.sub + return + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $start:std/string-encoding + call $std/string-encoding/testUTF16Length + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 240 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $std/string-encoding/testUTF16Encode + call $std/string-encoding/testUTF16Decode + call $std/string-encoding/testUTF16DecodeUnsafe + call $std/string-encoding/testUTF8Length + call $std/string-encoding/testUTF8Encode + call $std/string-encoding/testUTF8EncodeNullTerminated + call $std/string-encoding/testUTF8ErrorMode + call $std/string-encoding/testUTF8Decode + call $std/string-encoding/testUTF8DecodeNullTerminated + call $std/string-encoding/testUTF8DecodeUnsafe + i32.const 1088 + call $std/string-encoding/testRoundtrip + i32.const 14208 + call $std/string-encoding/testRoundtrip + call $~lib/rt/itcms/__collect + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/string-encoding/str + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 688 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) + (func $~start + call $start:std/string-encoding + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 54576 + i32.const 54624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $std/string-encoding/testUTF16Length + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/string-encoding/str + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/string/String.UTF16.byteLength + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF16.encode (param $str i32) (result i32) + (local $buf i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $str + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/string/String.UTF16.byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=4 + local.get $str + local.get $str + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/string/String#get:length + local.get $buf + call $~lib/string/String.UTF16.encodeUnsafe + drop + local.get $buf + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/string-encoding/testUTF16Encode + (local $buf i32) + (local $ptr i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $std/string-encoding/str + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/string/String.UTF16.encode + local.tee $buf + i32.store offset=4 + local.get $buf + local.set $ptr + local.get $buf + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=1 + i32.const 216 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 17 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=2 + i32.const 55 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=3 + i32.const 220 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=4 + i32.const 104 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 20 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=5 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=6 + i32.const 105 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=7 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=8 + i32.const 82 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=9 + i32.const 216 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=10 + i32.const 98 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 26 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=11 + i32.const 223 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF16.decode (param $buf i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $buf + local.get $buf + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/string-encoding/testUTF16Decode + (local $buf i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $std/string-encoding/str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String.UTF16.encode + local.tee $buf + i32.store offset=4 + local.get $buf + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/string/String.UTF16.decode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + global.get $std/string-encoding/str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF16DecodeUnsafe + (local $buf i32) + (local $len i32) + (local $ptr i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $std/string-encoding/str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String.UTF16.encode + local.tee $buf + i32.store offset=4 + global.get $std/string-encoding/str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String.UTF16.byteLength + local.set $len + local.get $buf + local.set $ptr + local.get $ptr + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + local.get $len + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + global.get $std/string-encoding/str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + i32.const 2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 8 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 12 + i32.add + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF8Length + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/string-encoding/str + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 55 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/string-encoding/str + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF8.encode (param $str i32) (param $nullTerminated i32) (param $errorMode i32) (result i32) + (local $buf i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $nullTerminated + call $~lib/string/String.UTF8.byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=4 + local.get $str + local.get $str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/String#get:length + local.get $buf + local.get $nullTerminated + local.get $errorMode + call $~lib/string/String.UTF8.encodeUnsafe + drop + local.get $buf + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/string/String.UTF8.encode@varargs (param $str i32) (param $nullTerminated i32) (param $errorMode i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $nullTerminated + end + i32.const 0 + local.set $errorMode + end + local.get $str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $nullTerminated + local.get $errorMode + call $~lib/string/String.UTF8.encode + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $std/string-encoding/testUTF8Encode + (local $buf i32) + (local $ptr i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $std/string-encoding/str + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $buf + i32.store offset=4 + local.get $buf + local.set $ptr + local.get $buf + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u + i32.const 240 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=1 + i32.const 144 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=2 + i32.const 144 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=3 + i32.const 183 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=4 + i32.const 104 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=5 + i32.const 105 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=6 + i32.const 240 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=7 + i32.const 164 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 71 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=8 + i32.const 173 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=9 + i32.const 162 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF8EncodeNullTerminated + (local $buf i32) + (local $ptr i32) + (local $str2 i32) + (local $buf2 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $std/string-encoding/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $buf + i32.store offset=4 + local.get $buf + local.set $ptr + local.get $buf + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u + i32.const 240 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=1 + i32.const 144 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=2 + i32.const 144 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=3 + i32.const 183 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=4 + i32.const 104 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=5 + i32.const 105 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 86 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=6 + i32.const 240 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 87 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=7 + i32.const 164 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 88 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=8 + i32.const 173 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=9 + i32.const 162 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 90 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.load8_u offset=10 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 800 + local.tee $str2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $str2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $buf2 + i32.store offset=12 + local.get $buf2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.get $str2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 94 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF8.decode (param $buf i32) (param $nullTerminated i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $buf + local.get $buf + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.get $nullTerminated + call $~lib/string/String.UTF8.decodeUnsafe + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/string-encoding/testUTF8ErrorMode + (local $str i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 880 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $str + i32.store offset=4 + local.get $str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 101 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 880 + i32.const 0 + i32.const 1 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $str + i32.store offset=4 + local.get $str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 944 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $str + i32.store offset=4 + local.get $str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 944 + i32.const 0 + i32.const 1 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $str + i32.store offset=4 + local.get $str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF8Decode + (local $buf i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $std/string-encoding/str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $buf + i32.store offset=4 + local.get $buf + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + global.get $std/string-encoding/str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF8DecodeNullTerminated + (local $buf i32) + (local $str2 i32) + (local $buf2 i32) + (local $str3 i32) + (local $buf3 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/string-encoding/str + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $buf + i32.store offset=4 + local.get $buf + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + i32.const 1 + call $~lib/string/String.UTF8.decode + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + global.get $std/string-encoding/str + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 976 + local.tee $str2 + i32.store offset=16 + local.get $str2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $str2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $buf2 + i32.store offset=20 + local.get $buf2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1024 + local.tee $str3 + i32.store offset=24 + local.get $str3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $buf2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + i32.const 1 + call $~lib/string/String.UTF8.decode + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $str3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 127 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $str2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $buf3 + i32.store offset=28 + local.get $buf3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + i32.const 1 + call $~lib/string/String.UTF8.decode + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $str3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF8DecodeUnsafe + (local $buf i32) + (local $len i32) + (local $ptr i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $std/string-encoding/str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 1 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $buf + i32.store offset=4 + global.get $std/string-encoding/str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + local.set $len + local.get $buf + local.set $ptr + local.get $ptr + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + local.get $len + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + global.get $std/string-encoding/str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 139 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 140 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + i32.const 2 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 141 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 6 + i32.add + i32.const 4 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 142 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 10 + i32.add + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 143 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + i32.const 100 + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 145 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 6 + i32.add + i32.const 100 + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 146 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 10 + i32.add + i32.const 100 + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testRoundtrip (param $str i32) + (local $buf8 i32) + (local $buf16 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $buf8 + i32.store offset=4 + local.get $buf8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 153 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String.UTF16.encode + local.tee $buf16 + i32.store offset=16 + local.get $buf16 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $~lib/string/String.UTF16.decode + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF16.decodeUnsafe (param $buf i32) (param $len i32) (result i32) + (local $str i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.tee $len + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $str + i32.store + local.get $str + local.get $buf + local.get $len + memory.copy + local.get $str + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String.UTF8.decodeUnsafe (param $buf i32) (param $len i32) (param $nullTerminated i32) (result i32) + (local $bufOff i32) + (local $bufEnd i32) + (local $str i32) + (local $strOff i32) + (local $u0 i32) + (local $u1 i32) + (local $u2 i32) + (local $lo i32) + (local $hi i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $buf + local.set $bufOff + local.get $buf + local.get $len + i32.add + local.set $bufEnd + local.get $bufEnd + local.get $bufOff + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 752 + i32.const 770 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $str + i32.store + local.get $str + local.set $strOff + block $while-break|0 + loop $while-continue|0 + local.get $bufOff + local.get $bufEnd + i32.lt_u + if + local.get $bufOff + i32.load8_u + local.set $u0 + local.get $bufOff + i32.const 1 + i32.add + local.set $bufOff + local.get $u0 + i32.const 128 + i32.and + i32.eqz + if + local.get $nullTerminated + local.get $u0 + i32.eqz + i32.and + if + br $while-break|0 + end + local.get $strOff + local.get $u0 + i32.store16 + else + local.get $bufEnd + local.get $bufOff + i32.eq + if + br $while-break|0 + end + local.get $bufOff + i32.load8_u + i32.const 63 + i32.and + local.set $u1 + local.get $bufOff + i32.const 1 + i32.add + local.set $bufOff + local.get $u0 + i32.const 224 + i32.and + i32.const 192 + i32.eq + if + local.get $strOff + local.get $u0 + i32.const 31 + i32.and + i32.const 6 + i32.shl + local.get $u1 + i32.or + i32.store16 + else + local.get $bufEnd + local.get $bufOff + i32.eq + if + br $while-break|0 + end + local.get $bufOff + i32.load8_u + i32.const 63 + i32.and + local.set $u2 + local.get $bufOff + i32.const 1 + i32.add + local.set $bufOff + local.get $u0 + i32.const 240 + i32.and + i32.const 224 + i32.eq + if + local.get $u0 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $u1 + i32.const 6 + i32.shl + i32.or + local.get $u2 + i32.or + local.set $u0 + else + local.get $bufEnd + local.get $bufOff + i32.eq + if + br $while-break|0 + end + local.get $u0 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $u1 + i32.const 12 + i32.shl + i32.or + local.get $u2 + i32.const 6 + i32.shl + i32.or + local.get $bufOff + i32.load8_u + i32.const 63 + i32.and + i32.or + local.set $u0 + local.get $bufOff + i32.const 1 + i32.add + local.set $bufOff + end + local.get $u0 + i32.const 65536 + i32.lt_u + if + local.get $strOff + local.get $u0 + i32.store16 + else + local.get $u0 + i32.const 65536 + i32.sub + local.set $u0 + local.get $u0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.set $lo + local.get $u0 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + local.set $hi + local.get $strOff + local.get $lo + local.get $hi + i32.const 16 + i32.shl + i32.or + i32.store + local.get $strOff + i32.const 2 + i32.add + local.set $strOff + end + end + end + local.get $strOff + i32.const 2 + i32.add + local.set $strOff + br $while-continue|0 + end + end + end + local.get $str + local.get $strOff + local.get $str + i32.sub + call $~lib/rt/itcms/__renew + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) +) diff --git a/tests/compiler/std/string-encoding.json b/tests/compiler/std/string-encoding.json index 9f7878d475..b83788465e 100644 --- a/tests/compiler/std/string-encoding.json +++ b/tests/compiler/std/string-encoding.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + ], + "asc_rtrace": true +} diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat deleted file mode 100644 index 47d0c5f5b2..0000000000 --- a/tests/compiler/std/string-encoding.optimized.wat +++ /dev/null @@ -1,3312 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") - (data (i32.const 1056) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1104) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s") - (data (i32.const 1168) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1216) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1284) "\01\00\00\00\01") - (data (i32.const 1296) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\01\d87\dc") - (data (i32.const 1328) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00h") - (data (i32.const 1360) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i") - (data (i32.const 1392) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00R\d8b\df") - (data (i32.const 1424) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 1472) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\002\003\00\00\004\005\006") - (data (i32.const 1504) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 1536) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00h\00i\00R\d8b\df") - (data (i32.const 1568) "*3\00\00\01\00\00\00\01\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\0d\0e\0d\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\0d\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\0d\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\0d\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\0d\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\0d\12 \00`\12\a5\12\0d\13)\12 \00\ed\12\04\12\f3\12\0d\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\0d\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\0d\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\0d\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\0d\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\0d\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\0d\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\0d\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\0d\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\0d(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\0d(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\0d(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\0d(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\0d(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\0d(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\0d(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\0d(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\0d( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\0d(\n(\07(\11(\06( \00\01(\1d(\19( \00\0d(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\0d(\n(\1e( \00\0d(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\0d(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\0d%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n") - (data (i32.const 14688) "\ba\1c\00\00\01\00\00\00\01\00\00\00\ba\1c\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\0d\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 22060 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1072 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 22060 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/string/String.UTF16.byteLength (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1184 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1184 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1184 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 22064 - local.set $1 - i32.const 22064 - i32.const 0 - i32.store - i32.const 23632 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 22064 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 22064 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 22064 - i32.const 23648 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 22064 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 1232 - i32.const 1184 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1184 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1184 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1184 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - call $~lib/rt/rtrace/onalloc - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/string/String.UTF16.byteLength - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $0 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF16Encode - (local $0 i32) - (local $1 i32) - i32.const 1040 - call $~lib/string/String.UTF16.encode - local.tee $1 - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=1 - i32.const 216 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=2 - i32.const 55 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=3 - i32.const 220 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=4 - i32.const 104 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 20 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=5 - if - i32.const 0 - i32.const 1120 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=6 - i32.const 105 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=7 - if - i32.const 0 - i32.const 1120 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=8 - i32.const 82 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 24 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=9 - i32.const 216 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=10 - i32.const 98 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 26 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=11 - i32.const 223 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.UTF16.decodeUnsafe (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const -2 - i32.and - local.tee $1 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String.UTF16.decode (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.set $1 - local.get $0 - local.get $1 - call $~lib/string/String.UTF16.decodeUnsafe - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - if - local.get $3 - i32.load16_u - local.tee $0 - local.get $1 - i32.load16_u - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - local.get $6 - i32.sub - return - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $std/string-encoding/testUTF16DecodeUnsafe - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 1040 - call $~lib/string/String.UTF16.encode - local.set $1 - i32.const 1040 - call $~lib/string/String.UTF16.byteLength - local.set $2 - local.get $1 - local.tee $0 - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $3 - i32.const 1296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $4 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $5 - i32.const 1312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 2 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $6 - i32.const 1344 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $7 - i32.const 1376 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 8 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $2 - i32.const 1408 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - i32.add - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $0 - i32.const 1296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $0 - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.add - local.set $4 - local.get $1 - i32.const 0 - i32.ne - local.set $2 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - if - block $while-break|0 - local.get $0 - i32.load16_u - local.tee $3 - i32.const 128 - i32.lt_u - if (result i32) - local.get $1 - local.get $3 - i32.eqz - i32.and - br_if $while-break|0 - local.get $2 - i32.const 1 - i32.add - else - local.get $3 - i32.const 2048 - i32.lt_u - if (result i32) - local.get $2 - i32.const 2 - i32.add - else - local.get $0 - i32.const 2 - i32.add - local.get $4 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - select - if - local.get $0 - i32.load16_u offset=2 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $2 - i32.const 3 - i32.add - end - end - local.set $2 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $4 - local.get $2 - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - if - local.get $0 - i32.load16_u - local.tee $2 - i32.const 128 - i32.lt_u - if (result i32) - local.get $1 - local.get $2 - i32.store8 - local.get $1 - i32.const 1 - i32.add - else - local.get $2 - i32.const 2048 - i32.lt_u - if (result i32) - local.get $1 - local.get $2 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - local.get $2 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 - local.get $1 - i32.const 2 - i32.add - else - local.get $0 - i32.const 2 - i32.add - local.get $4 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - select - if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $1 - local.get $2 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $5 - i32.const 1023 - i32.and - i32.or - local.tee $2 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 24 - i32.shl - local.get $2 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 16 - i32.shl - i32.or - local.get $2 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - local.get $2 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $1 - local.get $2 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - local.get $2 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 - local.get $1 - local.get $2 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $1 - i32.const 3 - i32.add - end - end - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $3 - if - local.get $1 - i32.const 0 - i32.store8 - end - ) - (func $~lib/string/String.UTF8.encode (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/string/String.UTF8.byteLength - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $0 - local.get $0 - call $~lib/string/String#get:length - local.get $2 - local.get $1 - call $~lib/string/String.UTF8.encodeUnsafe - local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF8Encode - (local $0 i32) - (local $1 i32) - i32.const 1040 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.tee $1 - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u - i32.const 240 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=1 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=2 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=3 - i32.const 183 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=4 - i32.const 104 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=5 - i32.const 105 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=6 - i32.const 240 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 70 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=7 - i32.const 164 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 71 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=8 - i32.const 173 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=9 - i32.const 162 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF8EncodeNullTerminated - (local $0 i32) - (local $1 i32) - i32.const 1040 - i32.const 1 - call $~lib/string/String.UTF8.encode - local.tee $1 - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 11 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u - i32.const 240 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 81 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=1 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=2 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=3 - i32.const 183 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=4 - i32.const 104 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=5 - i32.const 105 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 86 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=6 - i32.const 240 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 87 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=7 - i32.const 164 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 88 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=8 - i32.const 173 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 89 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=9 - i32.const 162 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 90 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=10 - if - i32.const 0 - i32.const 1120 - i32.const 91 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - local.get $1 - i32.load - local.tee $5 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $4 - i32.const 1 - i32.and - if - local.get $5 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 22060 - i32.ge_u - if - local.get $1 - local.get $3 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 - ) - (func $~lib/string/String.UTF8.decodeUnsafe (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.get $0 - local.get $1 - i32.add - local.tee $4 - local.get $0 - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 738 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $5 - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - if - block $while-break|0 - local.get $0 - i32.load8_u - local.set $3 - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $3 - i32.const 128 - i32.and - if - local.get $0 - local.get $4 - i32.eq - br_if $while-break|0 - local.get $0 - i32.load8_u - i32.const 63 - i32.and - local.set $6 - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $3 - i32.const 224 - i32.and - i32.const 192 - i32.eq - if - local.get $1 - local.get $6 - local.get $3 - i32.const 31 - i32.and - i32.const 6 - i32.shl - i32.or - i32.store16 - else - local.get $0 - local.get $4 - i32.eq - br_if $while-break|0 - local.get $0 - i32.load8_u - i32.const 63 - i32.and - local.set $7 - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $3 - i32.const 240 - i32.and - i32.const 224 - i32.eq - if - local.get $7 - local.get $3 - i32.const 15 - i32.and - i32.const 12 - i32.shl - local.get $6 - i32.const 6 - i32.shl - i32.or - i32.or - local.set $3 - else - local.get $0 - local.get $4 - i32.eq - br_if $while-break|0 - local.get $0 - i32.load8_u - i32.const 63 - i32.and - local.get $3 - i32.const 7 - i32.and - i32.const 18 - i32.shl - local.get $6 - i32.const 12 - i32.shl - i32.or - local.get $7 - i32.const 6 - i32.shl - i32.or - i32.or - local.set $3 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $3 - i32.const 65536 - i32.lt_u - if - local.get $1 - local.get $3 - i32.store16 - else - local.get $1 - local.get $3 - i32.const 65536 - i32.sub - local.tee $3 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $3 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - end - else - local.get $2 - local.get $3 - i32.eqz - i32.and - br_if $while-break|0 - local.get $1 - local.get $3 - i32.store16 - end - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - call $~lib/rt/tlsf/maybeInitialize - local.get $5 - i32.const 16 - i32.sub - local.set $0 - local.get $5 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $5 - select - if (result i32) - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $0 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $5 - i32.sub - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String.UTF8.decode (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.set $2 - local.get $0 - local.get $2 - local.get $1 - call $~lib/string/String.UTF8.decodeUnsafe - local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF8DecodeNullTerminated - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1040 - i32.const 1 - call $~lib/string/String.UTF8.encode - local.tee $1 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.tee $2 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1488 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1488 - i32.const 1 - call $~lib/string/String.UTF8.encode - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 107 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1520 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.tee $3 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1488 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.tee $4 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.tee $5 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 112 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF8DecodeUnsafe - (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) - i32.const 1040 - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $1 - i32.const 1040 - i32.const 0 - call $~lib/string/String.UTF8.byteLength - local.set $2 - local.get $1 - local.tee $0 - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $3 - i32.const 1296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $4 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $5 - i32.const 1312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 2 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $6 - i32.const 1376 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - i32.add - i32.const 4 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $7 - i32.const 1408 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 125 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 10 - i32.add - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $8 - i32.const 1296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 100 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $9 - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 6 - i32.add - i32.const 100 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $2 - i32.const 1408 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 129 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 10 - i32.add - i32.const 100 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $0 - i32.const 1296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 130 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testLarge (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.tee $1 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $2 - local.get $0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 136 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/string/String.UTF16.encode - local.tee $3 - call $~lib/string/String.UTF16.decode - local.tee $4 - local.get $0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 138 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $start:std/string-encoding - (local $0 i32) - (local $1 i32) - i32.const 1040 - call $~lib/string/String.UTF16.byteLength - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - call $std/string-encoding/testUTF16Encode - i32.const 1040 - call $~lib/string/String.UTF16.encode - local.tee $0 - call $~lib/string/String.UTF16.decode - local.tee $1 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - call $std/string-encoding/testUTF16DecodeUnsafe - i32.const 1040 - i32.const 0 - call $~lib/string/String.UTF8.byteLength - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 55 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 11 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - call $std/string-encoding/testUTF8Encode - call $std/string-encoding/testUTF8EncodeNullTerminated - i32.const 1040 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.tee $0 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $1 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - call $std/string-encoding/testUTF8DecodeNullTerminated - call $std/string-encoding/testUTF8DecodeUnsafe - i32.const 1584 - call $std/string-encoding/testLarge - i32.const 14704 - call $std/string-encoding/testLarge - ) - (func $~start - call $start:std/string-encoding - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1072 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 22060 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1072 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1072 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/std/string-encoding.release.wat b/tests/compiler/std/string-encoding.release.wat new file mode 100644 index 0000000000..1dd0f55a65 --- /dev/null +++ b/tests/compiler/std/string-encoding.release.wat @@ -0,0 +1,4194 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 55572)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") + (data $1 (i32.const 1068) "<") + (data $1.1 (i32.const 1080) "\02\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s") + (data $2 (i32.const 1132) "<") + (data $2.1 (i32.const 1144) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $3 (i32.const 1196) "<") + (data $3.1 (i32.const 1208) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $6 (i32.const 1324) "<") + (data $6.1 (i32.const 1336) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $7 (i32.const 1388) ",") + (data $7.1 (i32.const 1400) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $9 (i32.const 1468) "<") + (data $9.1 (i32.const 1480) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 1532) "\1c") + (data $10.1 (i32.const 1544) "\02") + (data $11 (i32.const 1564) "\1c") + (data $11.1 (i32.const 1576) "\02\00\00\00\04\00\00\00\01\d87\dc") + (data $12 (i32.const 1596) "\1c") + (data $12.1 (i32.const 1608) "\02\00\00\00\02\00\00\00h") + (data $13 (i32.const 1628) "\1c") + (data $13.1 (i32.const 1640) "\02\00\00\00\04\00\00\00h\00i") + (data $14 (i32.const 1660) "\1c") + (data $14.1 (i32.const 1672) "\02\00\00\00\04\00\00\00R\d8b\df") + (data $15 (i32.const 1692) "<") + (data $15.1 (i32.const 1704) "\02\00\00\00$\00\00\00U\00n\00p\00a\00i\00r\00e\00d\00 \00s\00u\00r\00r\00o\00g\00a\00t\00e") + (data $16 (i32.const 1756) ",") + (data $16.1 (i32.const 1768) "\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data $17 (i32.const 1804) "L") + (data $17.1 (i32.const 1816) "\02\00\00\008\00\00\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a\00a") + (data $18 (i32.const 1884) "\1c") + (data $18.1 (i32.const 1896) "\02\00\00\00\02\00\00\004\d8") + (data $19 (i32.const 1916) "\1c") + (data $19.1 (i32.const 1928) "\02\00\00\00\02\00\00\00\fd\ff") + (data $20 (i32.const 1948) "\1c") + (data $20.1 (i32.const 1960) "\02\00\00\00\02\00\00\00\1e\dd") + (data $21 (i32.const 1980) ",") + (data $21.1 (i32.const 1992) "\02\00\00\00\0e\00\00\001\002\003\00\00\004\005\006") + (data $22 (i32.const 2028) "\1c") + (data $22.1 (i32.const 2040) "\02\00\00\00\06\00\00\001\002\003") + (data $23 (i32.const 2060) "\1c") + (data $23.1 (i32.const 2072) "\02\00\00\00\08\00\00\00h\00i\00R\d8b\df") + (data $24 (i32.const 2092) "<3") + (data $24.1 (i32.const 2104) "\02\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\r\0e\r\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\r\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\r\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\r\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\r\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\r\12 \00`\12\a5\12\r\13)\12 \00\ed\12\04\12\f3\12\r\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\r\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\r\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\r\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\r\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\r\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\r\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\r\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\r\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\r(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\r(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\r(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\r(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\r(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\r(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\r(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\r(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\r( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\r(\n(\07(\11(\06( \00\01(\1d(\19( \00\r(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\r(\n(\1e( \00\r(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\r(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\r%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n") + (data $25 (i32.const 15212) "\8c\1d") + (data $25.1 (i32.const 15224) "\02\00\00\00p\1d\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\r\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n\00\n\00O\00t\00h\00e\00r\00\n\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c0\00\c8\00 \00/\00 \00c\003\00_\008\000\00 \00c\003\00_\008\008\00\n\00 \00 \00\d8S\cf\91 \00/\00 \00e\005\00_\008\00f\00_\009\008\00 \00e\009\00_\008\007\00_\008\00f\00\n\00 \00 \00A\d8\0e\dfA\d81\df \00/\00 \00f\000\00_\00a\000\00_\009\00c\00_\008\00e\00 \00f\000\00_\00a\000\00_\009\00c\00_\00b\001\00\n") + (data $26 (i32.const 22784) "\04\00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 1712 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$158 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 55572 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$158 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 22784 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 22788 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 55584 + i32.const 0 + i32.store + i32.const 57152 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 55584 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 55584 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 55584 + i32.const 57156 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 55584 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 55572 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 55572 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 55572 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $4 + local.get $1 + i32.const 0 + i32.ne + local.set $2 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + if + block $while-break|0 + local.get $0 + i32.load16_u + local.tee $3 + i32.const 128 + i32.lt_u + if (result i32) + local.get $1 + local.get $3 + i32.eqz + i32.and + br_if $while-break|0 + local.get $2 + i32.const 1 + i32.add + else + local.get $3 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $2 + i32.const 2 + i32.add + else + local.get $3 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + local.get $0 + i32.const 2 + i32.add + local.get $4 + i32.lt_u + i32.and + if + local.get $0 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $2 + i32.const 3 + i32.add + end + end + local.set $2 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end + end + end + local.get $2 + ) + (func $start:std/string-encoding + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1052 + i32.load + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + memory.size + i32.const 16 + i32.shl + i32.const 55572 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=1 + i32.const 216 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 17 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=2 + i32.const 55 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=3 + i32.const 220 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=4 + i32.const 104 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 20 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=5 + if + i32.const 0 + i32.const 1088 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=6 + i32.const 105 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=7 + if + i32.const 0 + i32.const 1088 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=8 + i32.const 82 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=9 + i32.const 216 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=10 + i32.const 98 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 26 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=11 + i32.const 223 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/string/String.UTF16.decode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1052 + i32.load + local.set $2 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + i32.const 2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 8 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + i32.add + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 55 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u + i32.const 240 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=1 + i32.const 144 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=2 + i32.const 144 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=3 + i32.const 183 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=4 + i32.const 104 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=5 + i32.const 105 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=6 + i32.const 240 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=7 + i32.const 164 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 71 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=8 + i32.const 173 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=9 + i32.const 162 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF8EncodeNullTerminated + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 101 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.const 0 + i32.const 1 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.const 0 + i32.const 1 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 1 + call $~lib/string/String.UTF8.decode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store + i32.const 2000 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.store + i32.const 2048 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 1 + call $~lib/string/String.UTF8.decode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.store offset=8 + local.get $0 + i32.const 2048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 127 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 1 + call $~lib/string/String.UTF8.decode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.store offset=8 + local.get $0 + i32.const 2048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF8DecodeUnsafe + i32.const 2112 + call $std/string-encoding/testRoundtrip + i32.const 15232 + call $std/string-encoding/testRoundtrip + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + return + end + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + call $start:std/string-encoding + ) + (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.UTF16.decode (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + call $~lib/string/String.UTF16.decodeUnsafe + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$94 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$94 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String.UTF8.encode (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/string/String.UTF8.byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $5 + local.set $4 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + i32.add + local.set $6 + block $__inlined_func$~lib/string/String.UTF8.encodeUnsafe$1 + loop $while-continue|0 + local.get $0 + local.get $6 + i32.lt_u + if + local.get $0 + i32.load16_u + local.tee $3 + i32.const 128 + i32.lt_u + if + local.get $4 + local.get $3 + i32.store8 + local.get $4 + i32.const 1 + i32.add + local.set $4 + local.get $1 + local.get $3 + i32.eqz + i32.and + br_if $__inlined_func$~lib/string/String.UTF8.encodeUnsafe$1 + else + local.get $3 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $4 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $4 + i32.const 2 + i32.add + else + local.get $3 + i32.const 63488 + i32.and + i32.const 55296 + i32.eq + if + local.get $3 + i32.const 56320 + i32.lt_u + local.get $0 + i32.const 2 + i32.add + local.get $6 + i32.lt_u + i32.and + if + local.get $0 + i32.load16_u offset=2 + local.tee $7 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $4 + local.get $3 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $7 + i32.const 1023 + i32.and + i32.or + local.tee $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $3 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 16 + i32.shl + i32.or + local.get $3 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + local.get $3 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $2 + if + local.get $2 + i32.const 2 + i32.eq + if + i32.const 1712 + i32.const 1776 + i32.const 742 + i32.const 49 + call $~lib/builtins/abort + unreachable + end + i32.const 65533 + local.set $3 + end + end + local.get $4 + local.get $3 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.get $3 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $4 + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $4 + i32.const 3 + i32.add + end + local.set $4 + end + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $1 + if + local.get $4 + i32.const 0 + i32.store8 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/string/String.UTF8.encode@varargs (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $2of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.encode + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF8EncodeNullTerminated + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u + i32.const 240 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=1 + i32.const 144 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=2 + i32.const 144 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=3 + i32.const 183 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=4 + i32.const 104 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=5 + i32.const 105 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 86 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=6 + i32.const 240 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 87 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=7 + i32.const 164 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 88 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=8 + i32.const 173 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=9 + i32.const 162 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 90 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=10 + if + i32.const 0 + i32.const 1088 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1824 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1824 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1824 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 1824 + i32.store + i32.const 1824 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 94 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF8.decode (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.get $1 + call $~lib/string/String.UTF8.decodeUnsafe + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF8DecodeUnsafe + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + local.set $2 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $1 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 139 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 140 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.add + i32.const 2 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 141 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 6 + i32.add + i32.const 4 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 142 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 10 + i32.add + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 143 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.add + i32.const 100 + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2080 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 145 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 6 + i32.add + i32.const 100 + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 146 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 10 + i32.add + i32.const 100 + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testRoundtrip (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 153 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/string/String.UTF16.encode + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/string/String.UTF16.decode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF16.decodeUnsafe (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const -2 + i32.and + local.tee $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.UTF8.decodeUnsafe (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.tee $3 + local.get $1 + i32.add + local.set $5 + local.get $3 + local.get $5 + i32.gt_u + if + i32.const 0 + i32.const 1776 + i32.const 770 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.set $1 + loop $while-continue|0 + local.get $3 + local.get $5 + i32.lt_u + if + block $while-break|0 + local.get $3 + i32.load8_u + local.set $6 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $6 + i32.const 128 + i32.and + if + local.get $3 + local.get $5 + i32.eq + br_if $while-break|0 + local.get $3 + i32.load8_u + i32.const 63 + i32.and + local.set $7 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $6 + i32.const 224 + i32.and + i32.const 192 + i32.eq + if + local.get $1 + local.get $6 + i32.const 31 + i32.and + i32.const 6 + i32.shl + local.get $7 + i32.or + i32.store16 + else + local.get $3 + local.get $5 + i32.eq + br_if $while-break|0 + local.get $3 + i32.load8_u + i32.const 63 + i32.and + local.set $4 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $6 + i32.const 240 + i32.and + i32.const 224 + i32.eq + if + local.get $6 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $7 + i32.const 6 + i32.shl + i32.or + local.get $4 + i32.or + local.set $4 + else + local.get $3 + local.get $5 + i32.eq + br_if $while-break|0 + local.get $3 + i32.load8_u + i32.const 63 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $7 + i32.const 12 + i32.shl + i32.or + local.get $4 + i32.const 6 + i32.shl + i32.or + i32.or + local.set $4 + local.get $3 + i32.const 1 + i32.add + local.set $3 + end + local.get $4 + i32.const 65536 + i32.lt_u + if + local.get $1 + local.get $4 + i32.store16 + else + local.get $1 + local.get $4 + i32.const 65536 + i32.sub + local.tee $4 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $4 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + end + else + local.get $2 + local.get $6 + i32.eqz + i32.and + br_if $while-break|0 + local.get $1 + local.get $6 + i32.store16 + end + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + block $__inlined_func$~lib/rt/itcms/__renew$157 + local.get $1 + local.get $0 + i32.sub + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $2 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew$157 + end + local.get $2 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $0 + local.get $2 + local.get $3 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $2 + i32.gt_u + select + memory.copy + local.get $1 + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/std/string-encoding.ts b/tests/compiler/std/string-encoding.ts index 5b06526f0e..7a131280dc 100644 --- a/tests/compiler/std/string-encoding.ts +++ b/tests/compiler/std/string-encoding.ts @@ -89,9 +89,26 @@ function testUTF8EncodeNullTerminated(): void { assert(load(ptr, 8) == 0xAD); assert(load(ptr, 9) == 0xA2); assert(load(ptr, 10) == 0x00); + var str2 ="aaaaaaaaaaaaaaaaaaaaaaaaaaa\0"; + var buf2 = String.UTF8.encode(str2, true); + assert(buf2.byteLength == String.UTF8.byteLength(str2, true)); } testUTF8EncodeNullTerminated(); +function testUTF8ErrorMode(): void { + // Unpaired lead surrogate + var str = String.UTF8.decode(String.UTF8.encode("\uD834", false, String.UTF8.ErrorMode.WTF8)); + assert(str == "\uD834"); + str = String.UTF8.decode(String.UTF8.encode("\uD834", false, String.UTF8.ErrorMode.REPLACE)); + assert(str == "\uFFFD"); + // Unpaired trail surrogate + str = String.UTF8.decode(String.UTF8.encode("\uDD1E", false, String.UTF8.ErrorMode.WTF8)); + assert(str == "\uDD1E"); + str = String.UTF8.decode(String.UTF8.encode("\uDD1E", false, String.UTF8.ErrorMode.REPLACE)); + assert(str == "\uFFFD"); +} +testUTF8ErrorMode(); + function testUTF8Decode(): void { var buf = String.UTF8.encode(str); assert(String.UTF8.decode(buf) == str); @@ -101,7 +118,7 @@ testUTF8Decode(); function testUTF8DecodeNullTerminated(): void { var buf = String.UTF8.encode(str, true); assert(String.UTF8.decode(buf, true) == str); - var str2 = "123\0456"; + var str2 = "123\x00456"; assert(String.UTF8.byteLength(str2, true) == 4); var buf2 = String.UTF8.encode(str2, true); assert(buf2.byteLength == 4); @@ -131,7 +148,7 @@ function testUTF8DecodeUnsafe(): void { } testUTF8DecodeUnsafe(); -function testLarge(str: string): void { +function testRoundtrip(str: string): void { var buf8 = String.UTF8.encode(str); assert(String.UTF8.decode(buf8) == str); var buf16 = String.UTF16.encode(str); @@ -139,7 +156,7 @@ function testLarge(str: string): void { } // https://www.w3.org/2001/06/utf-8-test/UTF-8-demo.html -testLarge(`Mathematics and Sciences: +testRoundtrip(`Mathematics and Sciences: ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), @@ -332,7 +349,7 @@ Box drawing alignment tests: █ `); // https://www.cl.cam.ac.uk/~mgk25/ucs/examples/quickbrown.txt -testLarge(`Sentences that contain all letters commonly used in a language +testRoundtrip(`Sentences that contain all letters commonly used in a language -------------------------------------------------------------- Markus Kuhn -- 2012-04-11 @@ -473,4 +490,13 @@ Turkish (tr) Pijamalı hasta, yağız şoföre çabucak güvendi. (=Patient with pajamas, trusted swarthy driver quickly) + +Other +----- + + ÀÈ / c3_80 c3_88 + 变量 / e5_8f_98 e9_87_8f + 𠜎𠜱 / f0_a0_9c_8e f0_a0_9c_b1 `); + +__collect(); diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat deleted file mode 100644 index 1fe5cf554d..0000000000 --- a/tests/compiler/std/string-encoding.untouched.wat +++ /dev/null @@ -1,5184 +0,0 @@ -(module - (type $none_=>_none (func)) - (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 $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 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 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") - (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 96) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 208) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 272) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 288) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\01\d87\dc") - (data (i32.const 320) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00h\00") - (data (i32.const 352) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i\00") - (data (i32.const 384) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00R\d8b\df") - (data (i32.const 416) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 464) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\002\003\00\00\004\005\006\00") - (data (i32.const 496) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 528) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00h\00i\00R\d8b\df") - (data (i32.const 560) "*3\00\00\01\00\00\00\01\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\0d\0e\0d\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\0d\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\0d\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\0d\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\0d\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\0d\12 \00`\12\a5\12\0d\13)\12 \00\ed\12\04\12\f3\12\0d\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\0d\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\0d\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\0d\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\0d\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\0d\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\0d\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\0d\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\0d\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\0d(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\0d(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\0d(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\0d(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\0d(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\0d(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\0d(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\0d(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\0d( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\0d(\n(\07(\11(\06( \00\01(\1d(\19( \00\0d(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\0d(\n(\1e( \00\0d(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\0d(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\0d%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n\00") - (data (i32.const 13680) "\ba\1c\00\00\01\00\00\00\01\00\00\00\ba\1c\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\0d\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n\00") - (table $0 1 funcref) - (global $std/string-encoding/str (mut i32) (i32.const 32)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 21052)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/string/String.UTF16.byteLength (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $std/string-encoding/testUTF16Length - global.get $std/string-encoding/str - call $~lib/string/String.UTF16.byteLength - i32.const 12 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 224 - i32.const 176 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/string/String.UTF16.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $1 - i32.const 1 - i32.shl - local.set $3 - local.get $2 - local.get $0 - local.get $3 - call $~lib/memory/memory.copy - local.get $3 - ) - (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/string/String.UTF16.byteLength - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $1 - local.get $0 - local.get $0 - call $~lib/string/String#get:length - local.get $1 - call $~lib/string/String.UTF16.encodeUnsafe - drop - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - ) - (func $std/string-encoding/testUTF16Encode - (local $0 i32) - (local $1 i32) - global.get $std/string-encoding/str - call $~lib/string/String.UTF16.encode - local.set $0 - local.get $0 - local.set $1 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 12 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=1 - i32.const 216 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=2 - i32.const 55 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=3 - i32.const 220 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=4 - i32.const 104 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 20 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=5 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=6 - i32.const 105 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=7 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=8 - i32.const 82 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 24 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=9 - i32.const 216 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=10 - i32.const 98 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 26 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=11 - i32.const 223 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.UTF16.decodeUnsafe (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String.UTF16.decode (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/string-encoding/testUTF16Decode - (local $0 i32) - (local $1 i32) - global.get $std/string-encoding/str - call $~lib/string/String.UTF16.encode - local.set $0 - local.get $0 - call $~lib/string/String.UTF16.decode - local.tee $1 - global.get $std/string-encoding/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF16DecodeUnsafe - (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) - global.get $std/string-encoding/str - call $~lib/string/String.UTF16.encode - local.set $0 - global.get $std/string-encoding/str - call $~lib/string/String.UTF16.byteLength - local.set $1 - local.get $0 - local.set $2 - local.get $2 - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $3 - i32.const 288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $4 - global.get $std/string-encoding/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $5 - i32.const 304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 4 - i32.add - i32.const 2 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $6 - i32.const 336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 4 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $7 - i32.const 368 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 8 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $8 - i32.const 400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 12 - i32.add - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $9 - i32.const 288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.set $2 - local.get $2 - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.add - local.set $3 - local.get $1 - i32.const 0 - i32.ne - local.set $4 - block $while-break|0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $2 - i32.load16_u - local.set $6 - local.get $6 - i32.const 128 - i32.lt_u - if - local.get $1 - local.get $6 - i32.eqz - i32.and - if - br $while-break|0 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - else - local.get $6 - i32.const 2048 - i32.lt_u - if - local.get $4 - i32.const 2 - i32.add - local.set $4 - else - local.get $6 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - if (result i32) - local.get $2 - i32.const 2 - i32.add - local.get $3 - i32.lt_u - else - i32.const 0 - end - if - local.get $2 - i32.load16_u offset=2 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $4 - i32.const 3 - i32.add - local.set $4 - end - end - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|0 - end - end - end - local.get $4 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $std/string-encoding/testUTF8Length - global.get $std/string-encoding/str - i32.const 0 - call $~lib/string/String.UTF8.byteLength - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 55 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/string-encoding/str - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 11 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/string/String.UTF8.encodeUnsafe (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.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $4 - local.get $2 - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - local.set $6 - local.get $6 - if - local.get $0 - i32.load16_u - local.set $7 - local.get $7 - i32.const 128 - i32.lt_u - if - local.get $5 - local.get $7 - i32.store8 - local.get $5 - i32.const 1 - i32.add - local.set $5 - else - local.get $7 - i32.const 2048 - i32.lt_u - if - local.get $7 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - local.set $8 - local.get $7 - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $9 - local.get $5 - local.get $9 - i32.const 8 - i32.shl - local.get $8 - i32.or - i32.store16 - local.get $5 - i32.const 2 - i32.add - local.set $5 - else - local.get $7 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - if (result i32) - local.get $0 - i32.const 2 - i32.add - local.get $4 - i32.lt_u - else - i32.const 0 - end - if - local.get $0 - i32.load16_u offset=2 - local.set $9 - local.get $9 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - i32.const 65536 - local.get $7 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.add - local.get $9 - i32.const 1023 - i32.and - i32.or - local.set $7 - local.get $7 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - local.set $8 - local.get $7 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $10 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $11 - local.get $7 - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $12 - local.get $5 - local.get $12 - i32.const 24 - i32.shl - local.get $11 - i32.const 16 - i32.shl - i32.or - local.get $10 - i32.const 8 - i32.shl - i32.or - local.get $8 - i32.or - i32.store - local.get $5 - i32.const 4 - i32.add - local.set $5 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $7 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - local.set $9 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $12 - local.get $7 - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $11 - local.get $5 - local.get $12 - i32.const 8 - i32.shl - local.get $9 - i32.or - i32.store16 - local.get $5 - local.get $11 - i32.store8 offset=2 - local.get $5 - i32.const 3 - i32.add - local.set $5 - end - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $3 - if - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - i32.const 0 - i32.store8 - end - local.get $5 - local.get $2 - i32.sub - ) - (func $~lib/string/String.UTF8.encode (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $1 - call $~lib/string/String.UTF8.byteLength - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $0 - local.get $0 - call $~lib/string/String#get:length - local.get $2 - local.get $1 - call $~lib/string/String.UTF8.encodeUnsafe - drop - local.get $2 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/string-encoding/testUTF8Encode - (local $0 i32) - (local $1 i32) - global.get $std/string-encoding/str - i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $0 - local.get $0 - local.set $1 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u - i32.const 240 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=1 - i32.const 144 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=2 - i32.const 144 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=3 - i32.const 183 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=4 - i32.const 104 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=5 - i32.const 105 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=6 - i32.const 240 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 70 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=7 - i32.const 164 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 71 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=8 - i32.const 173 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=9 - i32.const 162 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF8EncodeNullTerminated - (local $0 i32) - (local $1 i32) - global.get $std/string-encoding/str - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $0 - local.get $0 - local.set $1 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 11 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u - i32.const 240 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 81 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=1 - i32.const 144 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=2 - i32.const 144 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=3 - i32.const 183 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=4 - i32.const 104 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=5 - i32.const 105 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 86 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=6 - i32.const 240 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 87 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=7 - i32.const 164 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 88 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=8 - i32.const 173 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 89 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=9 - i32.const 162 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 90 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=10 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 91 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (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.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $3 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $6 - local.get $6 - i32.load - local.set $7 - local.get $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $5 - local.get $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $8 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u - if - i32.const 1 - drop - local.get $1 - local.get $8 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $8 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/string/String.UTF8.decodeUnsafe (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.get $0 - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $4 - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 432 - i32.const 738 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.set $6 - block $while-break|0 - loop $while-continue|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - i32.load8_u - local.set $8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $8 - i32.const 128 - i32.and - i32.eqz - if - local.get $2 - local.get $8 - i32.eqz - i32.and - if - br $while-break|0 - end - local.get $6 - local.get $8 - i32.store16 - else - local.get $4 - local.get $3 - i32.eq - if - br $while-break|0 - end - local.get $3 - i32.load8_u - i32.const 63 - i32.and - local.set $9 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $8 - i32.const 224 - i32.and - i32.const 192 - i32.eq - if - local.get $6 - local.get $8 - i32.const 31 - i32.and - i32.const 6 - i32.shl - local.get $9 - i32.or - i32.store16 - else - local.get $4 - local.get $3 - i32.eq - if - br $while-break|0 - end - local.get $3 - i32.load8_u - i32.const 63 - i32.and - local.set $10 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $8 - i32.const 240 - i32.and - i32.const 224 - i32.eq - if - local.get $8 - i32.const 15 - i32.and - i32.const 12 - i32.shl - local.get $9 - i32.const 6 - i32.shl - i32.or - local.get $10 - i32.or - local.set $8 - else - local.get $4 - local.get $3 - i32.eq - if - br $while-break|0 - end - local.get $8 - i32.const 7 - i32.and - i32.const 18 - i32.shl - local.get $9 - i32.const 12 - i32.shl - i32.or - local.get $10 - i32.const 6 - i32.shl - i32.or - local.get $3 - i32.load8_u - i32.const 63 - i32.and - i32.or - local.set $8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - end - local.get $8 - i32.const 65536 - i32.lt_u - if - local.get $6 - local.get $8 - i32.store16 - else - local.get $8 - i32.const 65536 - i32.sub - local.set $8 - local.get $8 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.set $11 - local.get $8 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - local.set $12 - local.get $6 - local.get $11 - local.get $12 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $6 - i32.const 2 - i32.add - local.set $6 - end - end - end - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|0 - end - end - end - local.get $5 - local.get $6 - local.get $5 - i32.sub - call $~lib/rt/tlsf/__realloc - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String.UTF8.decode (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.get $1 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/string-encoding/testUTF8Decode - (local $0 i32) - (local $1 i32) - global.get $std/string-encoding/str - i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $0 - local.get $0 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $1 - global.get $std/string-encoding/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF8DecodeNullTerminated - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/string-encoding/str - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $0 - local.get $0 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.tee $1 - global.get $std/string-encoding/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 480 - local.set $2 - local.get $2 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $3 - local.get $3 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 107 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 512 - local.set $4 - local.get $4 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.tee $5 - local.get $4 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $6 - local.get $6 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.tee $7 - local.get $4 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 112 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF8DecodeUnsafe - (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) - global.get $std/string-encoding/str - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $0 - global.get $std/string-encoding/str - i32.const 0 - call $~lib/string/String.UTF8.byteLength - local.set $1 - local.get $0 - local.set $2 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $3 - i32.const 288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $4 - global.get $std/string-encoding/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 4 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $5 - i32.const 304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 4 - i32.add - i32.const 2 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $6 - i32.const 368 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 6 - i32.add - i32.const 4 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $7 - i32.const 400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 125 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 10 - i32.add - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $8 - i32.const 288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 4 - i32.add - i32.const 100 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $9 - i32.const 544 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 128 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 6 - i32.add - i32.const 100 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $10 - i32.const 400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 129 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 10 - i32.add - i32.const 100 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $11 - i32.const 288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 130 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testLarge (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $1 - local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $2 - local.get $0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 136 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/string/String.UTF16.encode - local.set $3 - local.get $3 - call $~lib/string/String.UTF16.decode - local.tee $4 - local.get $0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 138 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $start:std/string-encoding - call $std/string-encoding/testUTF16Length - call $std/string-encoding/testUTF16Encode - call $std/string-encoding/testUTF16Decode - call $std/string-encoding/testUTF16DecodeUnsafe - call $std/string-encoding/testUTF8Length - call $std/string-encoding/testUTF8Encode - call $std/string-encoding/testUTF8EncodeNullTerminated - call $std/string-encoding/testUTF8Decode - call $std/string-encoding/testUTF8DecodeNullTerminated - call $std/string-encoding/testUTF8DecodeUnsafe - i32.const 576 - call $std/string-encoding/testLarge - i32.const 13696 - call $std/string-encoding/testLarge - ) - (func $~start - call $start:std/string-encoding - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/std/string-nonnull.debug.wat b/tests/compiler/std/string-nonnull.debug.wat new file mode 100644 index 0000000000..9e74fc89e8 --- /dev/null +++ b/tests/compiler/std/string-nonnull.debug.wat @@ -0,0 +1,438 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 44)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32812)) + (global $~lib/memory/__heap_base i32 (i32.const 32812)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~start + call $start:std/string-nonnull + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 32832 + i32.const 32880 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String.__ne (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/string/String.__not (param $str i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String#get:length + i32.eqz + end + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $start:std/string-nonnull + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 32 + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/string/String#get:length + drop + end + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/string/String.__ne + if + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/string/String#get:length + drop + end + local.get $0 + if + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/string/String#get:length + drop + end + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if + else + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/string/String#get:length + drop + end + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + if + else + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/string/String#get:length + drop + end + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/string/String.__not + if + else + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/string/String#get:length + drop + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/std/string-nonnull.json b/tests/compiler/std/string-nonnull.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/std/string-nonnull.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/std/string-nonnull.release.wat b/tests/compiler/std/string-nonnull.release.wat new file mode 100644 index 0000000000..63edc700be --- /dev/null +++ b/tests/compiler/std/string-nonnull.release.wat @@ -0,0 +1,191 @@ +(module + (type $0 (func (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02") + (export "memory" (memory $0)) + (start $~start) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + call $~lib/string/String.__ne + if + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + i32.const 1052 + i32.load + drop + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + call $~lib/string/String.__ne + if + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + i32.const 1052 + i32.load + drop + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + i32.const 1052 + i32.load + drop + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + call $~lib/string/String.__eq + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + i32.const 1052 + i32.load + drop + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + call $~lib/string/String.__eq + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + i32.const 1052 + i32.load + drop + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + i32.const 1052 + i32.load + drop + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String.__ne (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=4 + call $~lib/string/String.__eq + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/std/string-nonnull.ts b/tests/compiler/std/string-nonnull.ts new file mode 100644 index 0000000000..930066cee7 --- /dev/null +++ b/tests/compiler/std/string-nonnull.ts @@ -0,0 +1,13 @@ +{ + let s: string | null = ""; + + // should derive that s is non-null in then + if (s != null) s.length; + if (s !== null) s.length; + if (s) s.length; + + // should derive that s is non-null in else + if (s == null) {} else s.length; + if (s === null) {} else s.length; + if (!s) {} else s.length; +} diff --git a/tests/compiler/std/string.debug.wat b/tests/compiler/std/string.debug.wat new file mode 100644 index 0000000000..738795005a --- /dev/null +++ b/tests/compiler/std/string.debug.wat @@ -0,0 +1,25277 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i64 i32) (result i32))) + (type $9 (func (param i32) (result f64))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i64 i32))) + (type $12 (func (param i32 i32) (result f64))) + (type $13 (func (param i32 i32) (result i64))) + (type $14 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $15 (func (param i32 i32 i64) (result i32))) + (type $16 (func (param f64 i32) (result f64))) + (type $17 (func (param f64 f64) (result i32))) + (type $18 (func (param i32 i64 i32 i32))) + (type $19 (func (param i64) (result i32))) + (type $20 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $21 (func (param i32 f64 i32) (result i32))) + (type $22 (func (param i32) (result f32))) + (type $23 (func (param i32 i32 i32 i32) (result i32))) + (type $24 (func (param f64) (result i32))) + (type $25 (func (param f32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $std/string/str (mut i32) (i32.const 32)) + (global $std/string/nullStr (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/string/String.MAX_LENGTH i32 (i32.const 536870910)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/util/string/__fixmulShift (mut i64) (i64.const 0)) + (global $~lib/number/I32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) + (global $~lib/number/I64.MAX_VALUE i64 (i64.const 9223372036854775807)) + (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) + (global $~lib/builtins/f64.MAX_VALUE f64 (f64.const 1797693134862315708145274e284)) + (global $~lib/builtins/f64.MIN_VALUE f64 (f64.const 5e-324)) + (global $std/string/Ox1p_1073 f64 (f64.const 1e-323)) + (global $std/string/Ox1_0000000000001p_1022 f64 (f64.const 2.225073858507202e-308)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) + (global $~lib/builtins/i16.MIN_VALUE i32 (i32.const -32768)) + (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) + (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/builtins/f32.EPSILON f32 (f32.const 1.1920928955078125e-07)) + (global $~lib/builtins/f32.MAX_VALUE f32 (f32.const 3402823466385288598117041e14)) + (global $~lib/rt/__rtti_base i32 (i32.const 25584)) + (global $~lib/memory/__data_end i32 (i32.const 25612)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 58380)) + (global $~lib/memory/__heap_base i32 (i32.const 58380)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00\00\00") + (data $2 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\df\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\df\00\df\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\df\00a\00b\00\00\00\00\00\00\00") + (data $5 (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 284) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data $7 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $8 (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 496) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 524) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 576) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 604) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00@\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\006\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\00\d8\00\df\00\00\00\00\00\00\00\00") + (data $21 (i32.const 892) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\00\00\00\006\00\00\00\00\00\00\00") + (data $22 (i32.const 924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\00\006\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 956) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00A\00\00\00B\00\00\00C\00\00\00") + (data $24 (i32.const 988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00A\00B\00C\00\00\00\00\00\00\00") + (data $25 (i32.const 1020) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\004\d8\00\00\06\df\00\00a\00\00\004\d8\00\00\07\df\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 1068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\004\d8\06\dfa\004\d8\07\df\00\00") + (data $27 (i32.const 1100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\004\d8\06\df\00\00\00\00\00\00\00\00") + (data $28 (i32.const 1132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00h\00i\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 1164) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") + (data $30 (i32.const 1196) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00I\00\'\00m\00\00\00\00\00\00\00") + (data $31 (i32.const 1228) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 1260) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00 \00 \00 \00\00\00\00\00\00\00") + (data $33 (i32.const 1292) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00c\00\00\00\00\00\00\00") + (data $34 (i32.const 1324) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \00 \00a\00b\00c\00\00\00") + (data $35 (i32.const 1356) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\002\003\00\00\00\00\00\00\00") + (data $36 (i32.const 1388) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\002\003\00a\00b\00c\00") + (data $37 (i32.const 1420) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $38 (i32.const 1468) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00c\00 \00 \00\00\00") + (data $39 (i32.const 1500) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c\00") + (data $40 (i32.const 1532) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 1580) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 1612) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00x\00\00\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 1644) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00,\00 \00I\00\00\00\00\00\00\00") + (data $44 (i32.const 1676) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00g\00\00\00\00\00\00\00\00\00\00\00") + (data $45 (i32.const 1708) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00i\00\00\00\00\00\00\00\00\00\00\00") + (data $46 (i32.const 1740) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00n\00u\00l\00l\00\00\00\00\00") + (data $47 (i32.const 1772) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00d\00\00\00\00\00\00\00") + (data $48 (i32.const 1804) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00f\00\00\00\00\00\00\00") + (data $49 (i32.const 1836) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00z\00\00\00\00\00\00\00") + (data $50 (i32.const 1868) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00b\00c\00d\00\00\00\00\00") + (data $51 (i32.const 1900) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00b\00d\00d\00\00\00\00\00") + (data $52 (i32.const 1932) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00b\00 \00c\00\00\00\00\00") + (data $53 (i32.const 1964) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00 \00\n\00\t\00\r\00a\00b\00c\00 \00\t\00\r\00 \00\00\00\00\00\00\00") + (data $54 (i32.const 2012) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00a\00b\00c\00 \00\t\00\r\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $55 (i32.const 2060) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00 \00\n\00\t\00\r\00a\00b\00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 2108) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00\t\00\n\00 \00t\00r\00u\00e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $57 (i32.const 2156) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00\t\00\n\00 \00t\00r\00u\00e\00\n\00\r\00 \00\00\00\00\00\00\00\00\00") + (data $58 (i32.const 2204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00 \00 \00t\00r\00u\00e\00a\00b\00c\00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 2252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00t\00r\00u\00\00\00\00\00\00\00") + (data $60 (i32.const 2284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00T\00r\00u\00e\00\00\00\00\00") + (data $61 (i32.const 2316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") + (data $62 (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\000\000\00\00\00\00\00\00\00") + (data $64 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 2444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\000\000\001\00\00\00\00\00") + (data $66 (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\00b\001\000\001\00\00\00") + (data $67 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\00o\007\000\007\00\00\00") + (data $68 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\00x\00f\000\00f\00\00\00") + (data $69 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\00X\00F\000\00F\00\00\00") + (data $70 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\001\001\00\00\00\00\00\00\00") + (data $71 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\00x\001\00g\00\00\00\00\00") + (data $72 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00-\001\002\003\00\00\00\00\00") + (data $73 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00+\001\002\003\00\00\00\00\00") + (data $74 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00-\001\002\00.\003\00\00\00") + (data $75 (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00x\000\00\00\00\00\00\00\00") + (data $76 (i32.const 2796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\00b\001\001\00\00\00\00\00") + (data $77 (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\n\001\00\00\00\00\00\00\00\00\00") + (data $78 (i32.const 2860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00( 1\00\00\00\00\00\00\00\00\00") + (data $79 (i32.const 2892) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00) 1\00\00\00\00\00\00\00\00\00") + (data $80 (i32.const 2924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00-\000\00\00\00\00\00\00\00\00\00") + (data $81 (i32.const 2956) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\000\00X\00A\00B\00C\00D\00E\00F\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $82 (i32.const 3004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00A\00B\00C\00D\00E\00F\00") + (data $83 (i32.const 3036) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\003\006\008\009\003\004\008\008\001\004\007\004\001\009\001\000\003\002\003\002\00\00\00\00\00") + (data $84 (i32.const 3100) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00-\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00") + (data $85 (i32.const 3180) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\000\00x\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00") + (data $86 (i32.const 3244) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00=\d8%\dd\00\00\00\00\00\00") + (data $87 (i32.const 3276) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\002\00b\00a\00d\00n\00u\00m\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $88 (i32.const 3324) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00 \00\t\00\n\001\00\00\00\00\00") + (data $89 (i32.const 3356) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00 \00\t\00\n\000\00x\000\002\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $90 (i32.const 3404) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\00 \00a\00b\00c\00\00\00") + (data $91 (i32.const 3436) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00 \00a\00b\00c\00\00\00") + (data $92 (i32.const 3468) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00 \00\t\00\n\000\00 \00a\00b\00c\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $93 (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $94 (i32.const 3548) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $95 (i32.const 3580) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00=\d8%\dd\00\00\00\00\00\00\00\00") + (data $96 (i32.const 3612) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00b\00a\00d\00n\00u\00m\00") + (data $97 (i32.const 3648) "\00\00\00\00\00\00\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $98 (i32.const 3836) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00\00\00\00\00\00\00\00\00") + (data $99 (i32.const 3884) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00\00\00\00\00\00\00\00\00") + (data $100 (i32.const 3948) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\00.\00\00\00\00\00\00\00\00\00") + (data $101 (i32.const 3980) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00.\000\000\00\00\00\00\00") + (data $102 (i32.const 4012) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\00-\005\00\00\00\00\00") + (data $103 (i32.const 4044) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00-\001\00e\00-\005\00\00\00") + (data $104 (i32.const 4076) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00-\000\00.\003\00e\00-\002\002\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $105 (i32.const 4124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\000\00.\003\00e\00+\002\002\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $106 (i32.const 4172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\00-\001\00\00\00\00\00") + (data $107 (i32.const 4204) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\000\00.\001\00e\00-\000\00") + (data $108 (i32.const 4236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\001\00\00\00\00\00\00\00") + (data $109 (i32.const 4268) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00.\002\005\00\00\00\00\00\00\00") + (data $110 (i32.const 4300) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00.\00e\00+\003\00a\00") + (data $111 (i32.const 4332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00.\000\00e\00-\001\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $112 (i32.const 4380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00.\000\00e\00-\003\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $113 (i32.const 4428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\003\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $114 (i32.const 4476) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\004\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $115 (i32.const 4524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00e\00+\003\000\008\00") + (data $116 (i32.const 4556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00e\00+\003\000\009\00") + (data $117 (i32.const 4588) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\00.\000\00e\00-\001\00_\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $118 (i32.const 4636) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00.\000\00e\00-\001\000\00_\000\00\00\00\00\00\00\00\00\00\00\00") + (data $119 (i32.const 4684) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\00.\000\00e\00+\001\00_\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $120 (i32.const 4732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00_\000\00\00\00\00\00\00\00") + (data $121 (i32.const 4764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00_\001\00\00\00\00\00\00\00") + (data $122 (i32.const 4796) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\001\000\00.\000\000\00_\000\001\00e\002\00\00\00\00\00\00\00\00\00") + (data $123 (i32.const 4844) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\001\002\003\004\005\006\007\008\009\00_\004\00\00\00\00\00\00\00") + (data $124 (i32.const 4892) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\001\00_\000\001\002\003\004\005\006\007\008\009\00\00\00\00\00") + (data $125 (i32.const 4940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\00-\006\000\00\00\00") + (data $126 (i32.const 4972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\006\000\00\00\00\00\00") + (data $127 (i32.const 5004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\002\003\00.\004\00e\00") + (data $128 (i32.const 5036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\00x\00\00\00\00\00\00\00\00\00") + (data $129 (i32.const 5068) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00-\001\001\00e\00-\001\00s\00t\00r\00i\00n\00g\00\00\00\00\00") + (data $130 (i32.const 5116) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\000\001\00e\001\00s\00t\00r\00i\00n\00g\00\00\00\00\00\00\00\00\00") + (data $131 (i32.const 5164) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\000\001\000\00s\00t\00r\00i\00n\00g\00\00\00\00\00\00\00\00\00\00\00") + (data $132 (i32.const 5212) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00+\00.\002\002\00e\00-\001\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $133 (i32.const 5260) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\001\00.\00s\001\00\00\00") + (data $134 (i32.const 5292) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00x\005\00\00\00\00\00\00\00") + (data $135 (i32.const 5324) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00x\00D\00\00\00\00\00\00\00") + (data $136 (i32.const 5356) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00\0b\001\00.\001\00\00\00\00\00") + (data $137 (i32.const 5388) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00\0b\00\0b\00-\001\00.\001\00") + (data $138 (i32.const 5420) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00\0c\00\0c\00-\001\00.\001\00") + (data $139 (i32.const 5452) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00( ( -\001\00.\001\00") + (data $140 (i32.const 5484) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00) ) -\001\00.\001\00") + (data $141 (i32.const 5516) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\000\000\000\000\00\00\00") + (data $142 (i32.const 5548) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\000\000\000\00a\00\00\00") + (data $143 (i32.const 5580) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\000\000\000\001\00\00\00") + (data $144 (i32.const 5612) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\000\00.\000\000\00\00\00") + (data $145 (i32.const 5644) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\000\00.\000\00a\00\00\00") + (data $146 (i32.const 5676) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\001\00e\00\00\00\00\00") + (data $147 (i32.const 5708) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00e\00+\000\000\000\001\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $148 (i32.const 5756) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\000\00e\00+\001\000\000\00") + (data $149 (i32.const 5788) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00.\00-\001\00.\00\00\00") + (data $150 (i32.const 5820) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00e\00-\001\00.\002\00") + (data $151 (i32.const 5852) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\00e\00x\00\00\00\00\00\00\00") + (data $152 (i32.const 5884) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\001\00x\00\00\00\00\00") + (data $153 (i32.const 5916) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\00-\00x\00\00\00\00\00") + (data $154 (i32.const 5948) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\00-\001\00x\00\00\00") + (data $155 (i32.const 5980) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\000\00.\001\00e\00-\001\00x\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $156 (i32.const 6028) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\000\00.\00\00\00\00\00\00\00") + (data $157 (i32.const 6060) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00.\000\000\00\00\00\00\00\00\00") + (data $158 (i32.const 6092) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00.\000\00.\00\00\00\00\00\00\00") + (data $159 (i32.const 6124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00.\001\00.\00\00\00\00\00\00\00") + (data $160 (i32.const 6156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\00.\00\00\00\00\00\00\00") + (data $161 (i32.const 6188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\00a\00\00\00\00\00\00\00") + (data $162 (i32.const 6220) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00.\00.\001\00\00\00\00\00") + (data $163 (i32.const 6252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\000\00.\001\00.\001\00\00\00") + (data $164 (i32.const 6284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\000\00.\00 \001\00\00\00\00\00") + (data $165 (i32.const 6316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00+\000\00.\000\00\00\00\00\00") + (data $166 (i32.const 6348) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00-\000\00.\000\00\00\00\00\00") + (data $167 (i32.const 6380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00+\000\00\00\00\00\00\00\00\00\00") + (data $168 (i32.const 6412) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\00.\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $169 (i32.const 6460) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00-\00-\000\00\00\00\00\00\00\00") + (data $170 (i32.const 6492) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00+\00+\000\00\00\00\00\00\00\00") + (data $171 (i32.const 6524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00.\00a\00\00\00\00\00\00\00\00\00") + (data $172 (i32.const 6556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00.\00.\000\00\00\00\00\00\00\00") + (data $173 (i32.const 6588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data $174 (i32.const 6620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00.\00.\00\00\00\00\00\00\00\00\00") + (data $175 (i32.const 6652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data $176 (i32.const 6684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $177 (i32.const 6716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\0e\18\00\00\00\00\00\00\00\00\00\00") + (data $178 (i32.const 6748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00\0e\181\00.\001\00\00\00\00\00") + (data $179 (i32.const 6780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\0e\18\0e\181\00.\001\00\00\00") + (data $180 (i32.const 6812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $181 (i32.const 6844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") + (data $182 (i32.const 6876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\002\002\00\00\00\00\00") + (data $183 (i32.const 6908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\00-\002\002\00\00\00") + (data $184 (i32.const 6940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\002\003\00\00\00\00\00") + (data $185 (i32.const 6972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\00-\002\003\00\00\00") + (data $186 (i32.const 7004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\003\007\00\00\00\00\00") + (data $187 (i32.const 7036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\00-\003\007\00\00\00") + (data $188 (i32.const 7068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\00e\003\008\00\00\00\00\00") + (data $189 (i32.const 7100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\00-\003\008\00\00\00") + (data $190 (i32.const 7132) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006\00\00\00") + (data $191 (i32.const 7196) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00.\00\00\001\00.\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\007\00e\00+\003\000\008\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $192 (i32.const 7276) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\005\00e\00-\003\002\004\00") + (data $193 (i32.const 7308) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\000\00.\000\000\000\000\000\001\00e\00+\003\001\004\00\00\00") + (data $194 (i32.const 7356) "\8c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00|\00\00\000\00.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\00e\00+\005\006\00") + (data $195 (i32.const 7500) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00+\001\00E\00-\003\002\005\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $196 (i32.const 7548) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00+\001\00E\00+\003\000\009\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $197 (i32.const 7596) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\001\00E\00-\003\002\005\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $198 (i32.const 7644) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\001\00E\00+\003\000\009\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $199 (i32.const 7692) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\001\00e\00-\001\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00") + (data $200 (i32.const 7740) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\001\00e\00+\001\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00") + (data $201 (i32.const 7788) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\00.\00e\003\006\000\00") + (data $202 (i32.const 7820) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00 \00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $203 (i32.const 7868) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $204 (i32.const 7916) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $205 (i32.const 7964) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00x\00\00\00\00\00\00\00\00\00\00\00") + (data $206 (i32.const 8012) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00+\001\00\00\00\00\00\00\00\00\00") + (data $207 (i32.const 8060) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00I\00n\00f\00i\00\00\00\00\00") + (data $208 (i32.const 8092) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $209 (i32.const 8140) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00i\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $210 (i32.const 8188) "\bc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\aa\00\00\00.\002\004\007\000\003\002\008\002\002\009\002\000\006\002\003\002\007\002\000\008\008\002\008\004\003\009\006\004\003\004\001\001\000\006\008\006\001\008\002\005\002\009\009\000\001\003\000\007\001\006\002\003\008\002\002\001\002\007\009\002\008\004\001\002\005\000\003\003\007\007\005\003\006\003\005\001\000\004\003\00e\00-\003\002\003\00\00\00") + (data $211 (i32.const 8380) "\bc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\aa\00\00\00.\007\004\001\000\009\008\004\006\008\007\006\001\008\006\009\008\001\006\002\006\004\008\005\003\001\008\009\003\000\002\003\003\002\000\005\008\005\004\007\005\008\009\007\000\003\009\002\001\004\008\007\001\004\006\006\003\008\003\007\008\005\002\003\007\005\001\000\001\003\002\006\000\009\000\005\003\001\003\002\00e\00-\003\002\003\00\00\00") + (data $212 (i32.const 8572) "\bc\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\aa\00\00\00.\002\002\002\005\000\007\003\008\005\008\005\000\007\002\000\001\006\003\000\001\002\003\000\005\005\006\003\007\009\005\005\006\007\006\001\005\002\005\000\003\006\001\002\004\001\004\005\007\003\000\001\008\000\001\003\000\008\003\002\002\008\007\002\004\000\004\009\005\008\006\006\004\007\006\000\006\007\006\000\00e\00-\003\000\007\00\00\00") + (data $213 (i32.const 8764) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\88\00\00\001\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\008\000\007\009\003\007\002\008\009\007\001\004\000\005\003\000\003\004\001\005\000\007\009\009\003\004\001\003\002\007\001\000\000\003\007\008\002\006\009\003\006\001\007\003\007\007\008\009\008\000\004\004\00\00\00\00\00") + (data $214 (i32.const 8924) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\88\00\00\004\009\006\008\002\009\002\007\006\004\007\005\000\009\004\006\006\004\009\000\001\007\009\007\007\005\008\007\002\000\007\000\009\006\003\003\000\002\008\006\004\001\006\006\009\002\008\008\007\009\001\000\009\004\006\005\005\005\005\004\007\008\005\001\009\004\000\004\00\00\00\00\00") + (data $215 (i32.const 9084) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\88\00\00\000\002\006\003\000\006\005\007\004\008\008\006\007\001\005\000\005\008\002\000\006\008\001\009\000\008\009\000\002\000\000\000\007\000\008\003\008\003\006\007\006\002\007\003\008\005\004\008\004\005\008\001\007\007\001\001\005\003\001\007\006\004\004\007\005\007\003\000\00\00\00\00\00") + (data $216 (i32.const 9244) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\88\00\00\002\007\000\000\006\009\008\005\005\005\007\001\003\006\006\009\005\009\006\002\002\008\004\002\009\001\004\008\001\009\008\006\000\008\003\004\009\003\006\004\007\005\002\009\002\007\001\009\000\007\004\001\006\008\004\004\004\003\006\005\005\001\000\007\000\004\003\004\00\00\00\00\00") + (data $217 (i32.const 9404) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\88\00\00\002\007\001\001\005\005\009\006\009\009\005\000\008\000\009\003\000\004\002\008\008\000\001\007\007\009\000\004\001\007\004\004\009\007\007\009\001\00.\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\00\00\00\00\00") + (data $218 (i32.const 9564) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\\\00\00\000\00.\009\007\005\003\005\003\001\008\008\008\007\009\009\005\000\002\006\001\003\008\000\007\001\003\005\002\007\006\001\004\007\001\006\004\004\000\004\003\009\00e\00-\001\000\003\00") + (data $219 (i32.const 9676) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\00.\005\009\006\001\008\006\000\003\004\008\001\003\001\008\000\007\000\009\001\008\006\001\000\000\002\002\006\006\004\005\003\009\004\001\009\005\000\004\002\008\00e\000\000\00\00\00\00\00") + (data $220 (i32.const 9788) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\001\00.\008\001\005\000\001\003\001\006\009\002\001\008\000\003\008\007\002\009\008\008\007\004\006\000\008\009\008\007\003\003\005\002\006\009\005\007\004\004\002\00e\00-\001\00\00\00\00\00") + (data $221 (i32.const 9900) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\004\002\00.\000\007\000\008\002\003\005\007\005\003\004\004\005\003\006\000\000\006\008\001\006\001\008\006\008\005\006\008\002\002\005\007\005\009\000\007\007\002\00e\00-\002\00\00\00\00\00") + (data $222 (i32.const 10012) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\006\006\005\00.\004\006\008\006\003\000\006\005\001\006\002\006\001\004\005\006\003\002\008\009\007\003\002\002\005\005\007\009\008\003\003\004\007\000\008\001\006\00e\00-\003\00\00\00\00\00") + (data $223 (i32.const 10124) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\006\001\000\001\00.\008\005\002\009\002\002\009\007\000\008\006\008\006\002\001\007\008\006\006\009\000\004\009\005\004\008\005\004\004\009\008\003\001\007\005\003\00e\00-\004\00\00\00\00\00") + (data $224 (i32.const 10236) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\007\006\009\006\006\00.\009\005\002\000\008\002\003\006\009\006\008\000\007\007\008\004\009\004\006\004\003\004\008\008\007\005\004\007\001\001\005\008\005\004\009\00e\00-\005\00\00\00\00\00") + (data $225 (i32.const 10348) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\002\005\000\005\000\006\00.\005\003\002\002\002\002\008\006\008\002\004\009\006\001\003\002\006\000\004\008\000\007\002\002\002\009\002\003\007\000\002\003\000\004\00e\00-\006\00\00\00\00\00") + (data $226 (i32.const 10460) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\002\007\004\000\000\003\007\00.\002\003\000\002\002\008\000\000\005\003\002\005\008\005\002\004\002\004\006\009\007\006\009\008\003\003\001\001\007\007\003\007\007\00e\00-\007\00\00\00\00\00") + (data $227 (i32.const 10572) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\002\000\007\002\003\000\009\003\00.\005\000\000\004\009\007\004\002\006\004\005\009\004\001\005\002\009\002\006\008\007\001\005\004\002\008\003\002\004\004\009\000\00e\00-\008\00\00\00\00\00") + (data $228 (i32.const 10684) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\007\009\000\000\002\008\000\002\003\008\000\008\001\006\000\004\009\005\006\002\002\006\000\001\001\000\004\007\004\006\000\002\003\008\007\004\008\009\001\002\00e\001\00\00\00\00\00") + (data $229 (i32.const 10796) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\009\008\002\002\008\006\000\006\005\003\007\003\007\002\009\006\008\004\008\001\009\000\005\005\008\004\004\008\007\006\000\004\006\005\008\006\003\005\009\007\00e\002\00\00\00\00\00") + (data $230 (i32.const 10908) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\007\004\006\008\009\004\009\007\002\003\001\009\000\003\007\000\008\000\009\004\000\005\005\007\000\005\006\000\001\006\000\004\000\005\003\002\004\008\006\009\00e\003\00\00\00\00\00") + (data $231 (i32.const 11020) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\001\006\003\000\002\006\008\003\002\000\002\008\002\007\002\008\004\007\005\009\008\000\004\005\009\008\004\004\002\007\001\000\003\001\007\005\001\006\006\005\00e\004\00\00\00\00\00") + (data $232 (i32.const 11132) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\004\006\003\007\001\006\008\006\002\009\007\001\009\001\007\000\006\009\005\001\000\009\009\001\008\007\006\009\006\004\005\004\009\002\000\002\002\000\008\008\00e\005\00\00\00\00\00") + (data $233 (i32.const 11244) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\006\005\003\007\008\000\005\009\004\004\004\009\007\007\001\001\005\005\004\002\000\009\004\006\001\006\008\006\004\001\005\008\007\002\000\006\007\005\002\003\00e\006\00\00\00\00\00") + (data $234 (i32.const 11356) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\002\003\004\006\003\002\004\003\005\006\005\000\002\004\003\007\000\004\005\002\001\002\002\003\000\007\001\003\009\006\000\004\005\007\006\007\006\005\003\001\00e\006\00\00\00\00\00") + (data $235 (i32.const 11468) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\009\007\000\009\004\008\001\007\001\006\004\002\000\000\004\008\003\004\001\008\009\007\002\005\008\009\008\000\004\005\004\002\009\008\002\000\005\002\007\008\00e\008\00\00\00\00\00") + (data $236 (i32.const 11580) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00X\00\00\000\00.\004\009\009\006\009\000\008\005\002\002\000\005\001\008\007\004\001\001\000\007\007\009\009\008\002\003\005\004\009\003\002\004\009\009\004\009\009\006\000\002\00e\009\00\00\00\00\00") + (data $237 (i32.const 11692) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00Z\00\00\000\00.\007\009\002\005\002\000\001\002\000\000\005\005\007\002\004\005\008\006\001\009\004\004\000\001\001\002\006\007\000\004\001\007\008\007\005\000\005\001\004\009\00e\002\002\00\00\00") + (data $238 (i32.const 11804) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00Z\00\00\000\00.\006\000\009\006\005\006\004\005\008\005\009\008\003\001\007\007\004\000\008\009\003\004\003\005\002\005\007\000\002\001\003\003\007\007\004\007\005\007\003\009\00e\003\000\00\00\00") + (data $239 (i32.const 11916) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00Z\00\00\000\00.\004\008\000\000\004\001\006\001\001\007\004\007\007\000\002\008\007\008\007\008\007\004\003\006\000\002\000\005\000\002\003\005\004\009\004\009\007\001\002\008\00e\006\007\00\00\00") + (data $240 (i32.const 12028) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\\\00\00\000\00.\008\005\002\004\008\002\009\000\007\009\008\001\007\009\006\008\002\002\004\008\003\000\003\003\007\009\003\001\000\005\002\007\008\001\006\004\001\004\008\003\00e\001\000\005\00") + (data $241 (i32.const 12140) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\\\00\00\000\00.\000\003\002\007\001\002\003\009\002\009\001\007\000\009\007\008\002\001\001\005\004\004\007\000\006\009\003\007\002\007\004\008\009\005\006\000\008\004\002\005\00e\002\006\009\00") + (data $242 (i32.const 12252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00 \00\t\00\n\00\00\00\00\00\00\00") + (data $243 (i32.const 12284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00 \00\t\00\n\00\r\00.\001\00") + (data $244 (i32.const 12316) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $245 (i32.const 12348) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") + (data $246 (i32.const 12380) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00k\00e\00y\001\00\00\00\00\00") + (data $247 (i32.const 12412) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00k\00e\00y\002\00\00\00\00\00") + (data $248 (i32.const 12444) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00k\00e\001\00\00\00\00\00\00\00") + (data $249 (i32.const 12476) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00k\00e\002\00\00\00\00\00\00\00") + (data $250 (i32.const 12508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00k\00e\00y\001\002\00\00\00") + (data $251 (i32.const 12540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00k\00e\00y\001\001\00\00\00") + (data $252 (i32.const 12572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $253 (i32.const 12620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $254 (i32.const 12668) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l\00\00\00\00\00\00\00") + (data $255 (i32.const 12716) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l\00\00\00\00\00\00\00\00\00") + (data $256 (i32.const 12764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00b\00a\00\00\00\00\00\00\00\00\00") + (data $257 (i32.const 12796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00a\00\00\00\00\00\00\00\00\00") + (data $258 (i32.const 12828) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\000\00\00\00\00\00\00\00\00\00") + (data $259 (i32.const 12860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\001\00\00\00\00\00\00\00\00\00") + (data $260 (i32.const 12892) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\000\001\00\00\00\00\00\00\00") + (data $261 (i32.const 12924) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\002\002\00\00\00\00\00\00\00") + (data $262 (i32.const 12956) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\002\003\004\00\00\00\00\00") + (data $263 (i32.const 12988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\002\003\003\00\00\00\00\00") + (data $264 (i32.const 13020) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $265 (i32.const 13068) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00a\00a\00\00\00\00\00\00\00") + (data $266 (i32.const 13100) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $267 (i32.const 13148) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00a\00a\00a\00a\00\00\00") + (data $268 (i32.const 13180) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a\00") + (data $269 (i32.const 13212) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $270 (i32.const 13260) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00-\00b\00-\00c\00\00\00") + (data $271 (i32.const 13292) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00+\00b\00-\00c\00\00\00") + (data $272 (i32.const 13324) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00+\00a\00b\00c\00\00\00\00\00") + (data $273 (i32.const 13356) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00\n\00a\00b\00c\00\00\00\00\00") + (data $274 (i32.const 13388) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $275 (i32.const 13420) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") + (data $276 (i32.const 13452) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00+\00+\00\00\00\00\00\00\00\00\00") + (data $277 (i32.const 13484) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00a\00b\00+\00+\00\00\00\00\00") + (data $278 (i32.const 13516) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00c\00\00\00\00\00\00\00\00\00\00\00") + (data $279 (i32.const 13564) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00+\00+\00+\00\00\00\00\00\00\00") + (data $280 (i32.const 13596) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00a\00b\00c\00a\00b\00c\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $281 (i32.const 13644) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00+\00+\00+\00b\00c\00+\00+\00+\00b\00c\00+\00+\00+\00\00\00") + (data $282 (i32.const 13692) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00+\00+\00c\00+\00+\00c\00") + (data $283 (i32.const 13724) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00c\00c\00c\00c\00\00\00\00\00") + (data $284 (i32.const 13756) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00c\00c\00\00\00\00\00\00\00\00\00") + (data $285 (i32.const 13788) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00+\00+\00+\00+\00\00\00\00\00") + (data $286 (i32.const 13820) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00e\00\00\00\00\00\00\00\00\00\00\00") + (data $287 (i32.const 13852) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00b\00c\00\00\00\00\00\00\00\00\00") + (data $288 (i32.const 13884) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00+\00\00\00\00\00\00\00\00\00") + (data $289 (i32.const 13916) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00+\00b\00+\00c\00\00\00") + (data $290 (i32.const 13948) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00+\00a\00+\00b\00+\00c\00+\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $291 (i32.const 13996) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00b\00c\00d\00e\00\00\00") + (data $292 (i32.const 14028) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00-\00-\00-\00\00\00\00\00\00\00") + (data $293 (i32.const 14060) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\00-\00-\00b\00c\00d\00e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $294 (i32.const 14108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00-\00-\00-\00-\00-\00\00\00") + (data $295 (i32.const 14140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00-\00-\00-\00-\00\00\00\00\00") + (data $296 (i32.const 14172) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\00\00\00\00") + (data $297 (i32.const 14220) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00-\00-\00-\00a\00\00\00\00\00") + (data $298 (i32.const 14252) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00") + (data $299 (i32.const 14300) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00n\00\00\00\00\00\00\00\00\00\00\00") + (data $300 (i32.const 14332) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00j\00k\00l\00m\00n\00\00\00") + (data $301 (i32.const 14364) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00c\00d\00e\00f\00g\00\00\00") + (data $302 (i32.const 14396) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00d\00e\00f\00g\00h\00\00\00") + (data $303 (i32.const 14428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00\00\00") + (data $304 (i32.const 14476) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00c\00d\00e\00f\00g\00h\00i\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $305 (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00e\00f\00g\00\00\00\00\00\00\00") + (data $306 (i32.const 14556) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00e\00f\00g\00h\00\00\00\00\00") + (data $307 (i32.const 14588) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00d\00\00\00\00\00\00\00\00\00\00\00") + (data $308 (i32.const 14620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $309 (i32.const 14668) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $310 (i32.const 14796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00a\00,\00b\00,\00c\00\00\00") + (data $311 (i32.const 14828) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $312 (i32.const 14876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00,\00 \00\00\00\00\00\00\00\00\00") + (data $313 (i32.const 14908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c\00") + (data $314 (i32.const 14940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c\00") + (data $315 (i32.const 14972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,\00") + (data $316 (i32.const 15004) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $317 (i32.const 15132) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $318 (i32.const 15196) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $319 (i32.const 15596) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $320 (i32.const 16652) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $321 (i32.const 16748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data $322 (i32.const 16780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\002\00\00\00\00\00\00\00\00\00") + (data $323 (i32.const 16812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00-\001\000\000\000\00\00\00") + (data $324 (i32.const 16844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\002\003\004\005\00\00\00") + (data $325 (i32.const 16876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\002\003\004\005\006\00") + (data $326 (i32.const 16908) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\001\001\001\001\001\001\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $327 (i32.const 16956) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\002\003\004\005\006\007\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $328 (i32.const 17004) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\001\002\003\004\005\006\007\008\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $329 (i32.const 17052) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009\00\00\00\00\00\00\00\00\00\00\00") + (data $330 (i32.const 17100) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006\00\00\00\00\00\00\00\00\00") + (data $331 (i32.const 17148) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007\00\00\00\00\00\00\00\00\00") + (data $332 (i32.const 17196) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008\00\00\00\00\00\00\00") + (data $333 (i32.const 17244) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00-\001\00\00\00\00\00\00\00\00\00") + (data $334 (i32.const 17276) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00-\001\002\008\00\00\00\00\00") + (data $335 (i32.const 17308) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00-\003\002\007\006\008\00") + (data $336 (i32.const 17340) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\000\000\000\00\00\00\00\00") + (data $337 (i32.const 17372) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008\00\00\00\00\00\00\00\00\00") + (data $338 (i32.const 17420) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005\00\00\00\00\00\00\00\00\00") + (data $339 (i32.const 17468) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\007\00b\00\00\00\00\00\00\00\00\00") + (data $340 (i32.const 17500) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\004\00d\002\00\00\00\00\00\00\00") + (data $341 (i32.const 17532) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\003\000\003\009\00\00\00\00\00") + (data $342 (i32.const 17564) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\00e\002\004\000\00\00\00") + (data $343 (i32.const 17596) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\000\00f\004\004\007\00") + (data $344 (i32.const 17628) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\002\00d\006\008\007\00") + (data $345 (i32.const 17660) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00b\00c\006\001\004\00e\00") + (data $346 (i32.const 17692) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $347 (i32.const 17740) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00e\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $348 (i32.const 17788) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $349 (i32.const 17836) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\008\000\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $350 (i32.const 17884) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00f\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $351 (i32.const 17932) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00") + (data $352 (i32.const 17980) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00-\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $353 (i32.const 18028) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\008\000\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00") + (data $354 (i32.const 18076) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\001\001\00\00\00\00\00\00\00") + (data $355 (i32.const 18108) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\001\001\001\000\00\00\00\00\00") + (data $356 (i32.const 18140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\001\001\001\000\001\00\00\00") + (data $357 (i32.const 18172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\001\001\001\000\001\001\00") + (data $358 (i32.const 18204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\001\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00") + (data $359 (i32.const 18252) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00\00\00\00\00\00\00") + (data $360 (i32.const 18332) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\001\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $361 (i32.const 18428) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $362 (i32.const 18524) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $363 (i32.const 18620) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $364 (i32.const 18716) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00") + (data $365 (i32.const 18764) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00*\00\00\001\000\002\000\000\002\000\002\002\002\000\001\002\002\001\001\001\001\002\001\000\00\00\00") + (data $366 (i32.const 18828) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $367 (i32.const 18892) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\003\002\002\004\004\000\000\002\004\002\003\001\004\000\00") + (data $368 (i32.const 18940) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\003\007\007\007\007\007\007\007\007\007\007\00\00\00\00\00\00\00") + (data $369 (i32.const 18988) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\001\009\000\004\004\004\000\005\005\003\00\00\00\00\00\00\00\00\00") + (data $370 (i32.const 19036) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00a\002\000\00d\00c\00d\008\000\00\00\00\00\00\00\00\00\00\00\00") + (data $371 (i32.const 19084) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00a\007\00f\00f\00d\00a\009\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $372 (i32.const 19132) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\002\008\001\00d\005\005\00i\003\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $373 (i32.const 19180) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00b\002\008\00j\00p\00d\00l\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $374 (i32.const 19228) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\003\00v\00v\00v\00v\00v\00v\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $375 (i32.const 19276) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\001\00z\001\004\001\00z\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $376 (i32.const 19324) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\009\009\009\009\009\009\009\009\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $377 (i32.const 19372) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00") + (data $378 (i32.const 19420) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\007\00\00\00\00\00\00\00\00\00") + (data $379 (i32.const 19468) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00") + (data $380 (i32.const 19516) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00") + (data $381 (i32.const 19564) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\00\00\00") + (data $382 (i32.const 19612) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\001\00") + (data $383 (i32.const 19660) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $384 (i32.const 19724) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $385 (i32.const 19788) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00\00\00\00\00") + (data $386 (i32.const 19852) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\001\002\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00\00\00") + (data $387 (i32.const 19916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\001\002\003\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00") + (data $388 (i32.const 19980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00\00\00\00\00") + (data $389 (i32.const 20044) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00-\001\002\003\004\00\00\00") + (data $390 (i32.const 20076) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005\00\00\00\00\00\00\00") + (data $391 (i32.const 20124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00") + (data $392 (i32.const 20172) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00") + (data $393 (i32.const 20220) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $394 (i32.const 20284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00\00\00\00\00\00\00\00\00") + (data $395 (i32.const 20348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00\00\00\00\00\00\00") + (data $396 (i32.const 20412) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00\00\00\00\00") + (data $397 (i32.const 20476) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00f\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00") + (data $398 (i32.const 20524) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\005\006\007\008\009\00a\00b\00c\00d\00e\001\00\00\00\00\00\00\00") + (data $399 (i32.const 20572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\004\005\006\007\008\009\00a\00b\00c\00d\00e\001\00\00\00\00\00") + (data $400 (i32.const 20620) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00\00\00") + (data $401 (i32.const 20668) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00") + (data $402 (i32.const 20716) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $403 (i32.const 20780) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $404 (i32.const 20844) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $405 (i32.const 20908) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $406 (i32.const 20972) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00") + (data $407 (i32.const 21036) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00-\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00") + (data $408 (i32.const 21100) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00b\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00\00\00\00\00\00\00") + (data $409 (i32.const 21228) "\9c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\80\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $410 (i32.const 21388) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00D\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00\00\00\00\00\00\00\00\00") + (data $411 (i32.const 21484) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00R\00\00\001\001\001\001\002\002\002\000\000\002\002\001\002\002\001\002\000\001\000\001\002\001\001\000\002\000\001\002\000\002\001\000\002\001\000\002\001\001\002\002\000\00\00\00\00\00\00\00\00\00\00\00") + (data $412 (i32.const 21596) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00@\00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $413 (i32.const 21692) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\008\00\00\002\002\001\004\002\002\000\003\000\003\001\001\004\004\000\000\004\002\004\001\002\001\001\002\002\004\003\000\00\00\00\00\00") + (data $414 (i32.const 21772) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00,\00\00\001\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\00") + (data $415 (i32.const 21836) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\003\003\005\005\000\000\005\001\006\00a\004\002\009\000\007\001\002\008\004\00\00\00\00\00\00\00") + (data $416 (i32.const 21900) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\002\00c\001\00d\005\006\00b\006\004\008\00c\006\00c\00d\001\001\000\00\00\00\00\00\00\00\00\00\00\00") + (data $417 (i32.const 21964) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\006\007\009\007\009\00g\006\000\00f\005\004\002\008\000\001\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $418 (i32.const 22028) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\005\00e\008\00g\004\00g\00g\00g\007\00g\005\006\00d\00i\00f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $419 (i32.const 22092) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\004\00e\00o\008\00h\00f\00a\00m\006\00f\00l\00l\00m\00o\00") + (data $420 (i32.const 22140) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00f\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00\00\00") + (data $421 (i32.const 22188) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\003\00w\005\00e\001\001\002\006\004\00s\00g\00s\00f\00\00\00") + (data $422 (i32.const 22236) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data $423 (i32.const 22268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $424 (i32.const 22320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $425 (i32.const 22376) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/memory/memory.repeat (param $dst i32) (param $src i32) (param $srcLength i32) (param $count i32) + (local $index i32) + (local $total i32) + i32.const 0 + local.set $index + local.get $srcLength + local.get $count + i32.mul + local.set $total + loop $while-continue|0 + local.get $index + local.get $total + i32.lt_u + if + local.get $dst + local.get $index + i32.add + local.get $src + local.get $srcLength + memory.copy + local.get $index + local.get $srcLength + i32.add + local.set $index + br $while-continue|0 + end + end + ) + (func $~lib/util/string/isSpace (param $c i32) (result i32) + (local $1 i32) + local.get $c + i32.const 5760 + i32.lt_u + if + local.get $c + i32.const 128 + i32.or + i32.const 160 + i32.eq + if (result i32) + i32.const 1 + else + local.get $c + i32.const 9 + i32.sub + i32.const 13 + i32.const 9 + i32.sub + i32.le_u + end + return + end + local.get $c + i32.const 8192 + i32.sub + i32.const 8202 + i32.const 8192 + i32.sub + i32.le_u + if + i32.const 1 + return + end + block $break|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $c + local.set $1 + local.get $1 + i32.const 5760 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 8232 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 8233 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 8239 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 8287 + i32.eq + br_if $case4|0 + local.get $1 + i32.const 12288 + i32.eq + br_if $case5|0 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + end + end + end + end + end + end + i32.const 1 + return + end + i32.const 0 + return + ) + (func $~lib/math/ipow32 (param $x i32) (param $e i32) (result i32) + (local $out i32) + (local $log i32) + (local $4 i32) + i32.const 1 + local.set $out + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $x + i32.const 2 + i32.eq + if + i32.const 1 + local.get $e + i32.shl + i32.const 0 + local.get $e + i32.const 32 + i32.lt_u + select + return + end + local.get $e + i32.const 0 + i32.le_s + if + local.get $x + i32.const -1 + i32.eq + if + i32.const -1 + i32.const 1 + local.get $e + i32.const 1 + i32.and + select + return + end + local.get $e + i32.const 0 + i32.eq + local.get $x + i32.const 1 + i32.eq + i32.or + return + else + local.get $e + i32.const 1 + i32.eq + if + local.get $x + return + else + local.get $e + i32.const 2 + i32.eq + if + local.get $x + local.get $x + i32.mul + return + else + local.get $e + i32.const 32 + i32.lt_s + if + i32.const 32 + local.get $e + i32.clz + i32.sub + local.set $log + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $log + local.set $4 + local.get $4 + i32.const 5 + i32.eq + br_if $case0|0 + local.get $4 + i32.const 4 + i32.eq + br_if $case1|0 + local.get $4 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $4 + i32.const 2 + i32.eq + br_if $case3|0 + local.get $4 + i32.const 1 + i32.eq + br_if $case4|0 + br $break|0 + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + end + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + end + local.get $out + return + end + end + end + end + loop $while-continue|1 + local.get $e + if + local.get $e + i32.const 1 + i32.and + if + local.get $out + local.get $x + i32.mul + local.set $out + end + local.get $e + i32.const 1 + i32.shr_u + local.set $e + local.get $x + local.get $x + i32.mul + local.set $x + br $while-continue|1 + end + end + local.get $out + return + ) + (func $~lib/math/NativeMath.scalbn (param $x f64) (param $n i32) (result f64) + (local $y f64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $x + local.set $y + local.get $n + i32.const 1023 + i32.gt_s + if + local.get $y + f64.const 8988465674311579538646525e283 + f64.mul + local.set $y + local.get $n + i32.const 1023 + i32.sub + local.set $n + local.get $n + i32.const 1023 + i32.gt_s + if + local.get $y + f64.const 8988465674311579538646525e283 + f64.mul + local.set $y + local.get $n + i32.const 1023 + i32.sub + local.tee $3 + i32.const 1023 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.set $n + end + else + local.get $n + i32.const -1022 + i32.lt_s + if + local.get $y + f64.const 2.2250738585072014e-308 + f64.const 9007199254740992 + f64.mul + f64.mul + local.set $y + local.get $n + i32.const 1022 + i32.const 53 + i32.sub + i32.add + local.set $n + local.get $n + i32.const -1022 + i32.lt_s + if + local.get $y + f64.const 2.2250738585072014e-308 + f64.const 9007199254740992 + f64.mul + f64.mul + local.set $y + local.get $n + i32.const 1022 + i32.add + i32.const 53 + i32.sub + local.tee $5 + i32.const -1022 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $n + end + end + end + local.get $y + i64.const 1023 + local.get $n + i64.extend_i32_s + i64.add + i64.const 52 + i64.shl + f64.reinterpret_i64 + f64.mul + return + ) + (func $~lib/object/Object.is (param $x f64) (param $y f64) (result i32) + i32.const 1 + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $x + local.get $x + f64.ne + local.get $y + local.get $y + f64.ne + i32.and + local.get $x + i64.reinterpret_f64 + local.get $y + i64.reinterpret_f64 + i64.eq + i32.or + return + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array<~lib/string/String>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/string/String>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 15196 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 15196 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 15196 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 15196 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 15616 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 15616 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 16672 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 16672 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/util/number/decimalCount64High (param $value i64) (result i32) + local.get $value + i64.const 1000000000000000 + i64.lt_u + if + local.get $value + i64.const 1000000000000 + i64.lt_u + if + i32.const 10 + local.get $value + i64.const 100000000000 + i64.ge_u + i32.add + local.get $value + i64.const 10000000000 + i64.ge_u + i32.add + return + else + i32.const 13 + local.get $value + i64.const 100000000000000 + i64.ge_u + i32.add + local.get $value + i64.const 10000000000000 + i64.ge_u + i32.add + return + end + unreachable + else + local.get $value + i64.const 100000000000000000 + i64.lt_u + if + i32.const 16 + local.get $value + i64.const 10000000000000000 + i64.ge_u + i32.add + return + else + i32.const 18 + local.get $value + i64.const -8446744073709551616 + i64.ge_u + i32.add + local.get $value + i64.const 1000000000000000000 + i64.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa64_dec_lut (param $buffer i32) (param $num i64) (param $offset i32) + (local $t i64) + (local $r i32) + (local $b i32) + (local $c i32) + (local $b1 i32) + (local $b2 i32) + (local $c1 i32) + (local $c2 i32) + (local $digits1 i64) + (local $digits2 i64) + loop $while-continue|0 + local.get $num + i64.const 100000000 + i64.ge_u + if + local.get $num + i64.const 100000000 + i64.div_u + local.set $t + local.get $num + local.get $t + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 10000 + i32.div_u + local.set $b + local.get $r + i32.const 10000 + i32.rem_u + local.set $c + local.get $b + i32.const 100 + i32.div_u + local.set $b1 + local.get $b + i32.const 100 + i32.rem_u + local.set $b2 + local.get $c + i32.const 100 + i32.div_u + local.set $c1 + local.get $c + i32.const 100 + i32.rem_u + local.set $c2 + i32.const 15196 + local.get $c1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 15196 + local.get $c2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + i32.const 15196 + local.get $b1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 15196 + local.get $b2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $buffer + local.get $num + i32.wrap_i64 + local.get $offset + call $~lib/util/number/utoa32_dec_lut + ) + (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) + (local $one_exp i32) + (local $one_frc i64) + (local $mask i64) + (local $wp_w_frc i64) + (local $p1 i32) + (local $p2 i64) + (local $kappa i32) + (local $len i32) + (local $d i32) + (local $16 i32) + (local $17 i32) + (local $tmp i64) + (local $buffer|19 i32) + (local $len|20 i32) + (local $delta|21 i64) + (local $rest i64) + (local $ten_kappa i64) + (local $wp_w i64) + (local $lastp i32) + (local $digit i32) + (local $d|27 i64) + (local $28 i32) + (local $buffer|29 i32) + (local $len|30 i32) + (local $delta|31 i64) + (local $rest|32 i64) + (local $ten_kappa|33 i64) + (local $wp_w|34 i64) + (local $lastp|35 i32) + (local $digit|36 i32) + i32.const 0 + local.get $mp_exp + i32.sub + local.set $one_exp + i64.const 1 + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $one_frc + local.get $one_frc + i64.const 1 + i64.sub + local.set $mask + local.get $mp_frc + local.get $w_frc + i64.sub + local.set $wp_w_frc + local.get $mp_frc + local.get $one_exp + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $p1 + local.get $mp_frc + local.get $mask + i64.and + local.set $p2 + local.get $p1 + call $~lib/util/number/decimalCount32 + local.set $kappa + local.get $sign + local.set $len + loop $while-continue|0 + local.get $kappa + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $kappa + local.set $16 + local.get $16 + i32.const 10 + i32.eq + br_if $case0|1 + local.get $16 + i32.const 9 + i32.eq + br_if $case1|1 + local.get $16 + i32.const 8 + i32.eq + br_if $case2|1 + local.get $16 + i32.const 7 + i32.eq + br_if $case3|1 + local.get $16 + i32.const 6 + i32.eq + br_if $case4|1 + local.get $16 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $16 + i32.const 4 + i32.eq + br_if $case6|1 + local.get $16 + i32.const 3 + i32.eq + br_if $case7|1 + local.get $16 + i32.const 2 + i32.eq + br_if $case8|1 + local.get $16 + i32.const 1 + i32.eq + br_if $case9|1 + br $case10|1 + end + local.get $p1 + i32.const 1000000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100 + i32.div_u + local.set $d + local.get $p1 + i32.const 100 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10 + i32.div_u + local.set $d + local.get $p1 + i32.const 10 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + local.set $d + i32.const 0 + local.set $p1 + br $break|1 + end + i32.const 0 + local.set $d + br $break|1 + end + local.get $d + local.get $len + i32.or + if + local.get $buffer + local.get $len + local.tee $17 + i32.const 1 + i32.add + local.set $len + local.get $17 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p1 + i64.extend_i32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.get $p2 + i64.add + local.set $tmp + local.get $tmp + local.get $delta + i64.le_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $buffer + local.set $buffer|19 + local.get $len + local.set $len|20 + local.get $delta + local.set $delta|21 + local.get $tmp + local.set $rest + i32.const 23248 + local.get $kappa + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $ten_kappa + local.get $wp_w_frc + local.set $wp_w + local.get $buffer|19 + local.get $len|20 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp + local.get $lastp + i32.load16_u + local.set $digit + loop $while-continue|3 + local.get $rest + local.get $wp_w + i64.lt_u + if (result i32) + local.get $delta|21 + local.get $rest + i64.sub + local.get $ten_kappa + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w + local.get $rest + i64.sub + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit + i32.const 1 + i32.sub + local.set $digit + local.get $rest + local.get $ten_kappa + i64.add + local.set $rest + br $while-continue|3 + end + end + local.get $lastp + local.get $digit + i32.store16 + local.get $len + return + end + br $while-continue|0 + end + end + loop $while-continue|4 + i32.const 1 + if + local.get $p2 + i64.const 10 + i64.mul + local.set $p2 + local.get $delta + i64.const 10 + i64.mul + local.set $delta + local.get $p2 + local.get $one_exp + i64.extend_i32_s + i64.shr_u + local.set $d|27 + local.get $d|27 + local.get $len + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $buffer + local.get $len + local.tee $28 + i32.const 1 + i32.add + local.set $len + local.get $28 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d|27 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $p2 + local.get $mask + i64.and + local.set $p2 + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p2 + local.get $delta + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $wp_w_frc + i32.const 23248 + i32.const 0 + local.get $kappa + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $wp_w_frc + local.get $buffer + local.set $buffer|29 + local.get $len + local.set $len|30 + local.get $delta + local.set $delta|31 + local.get $p2 + local.set $rest|32 + local.get $one_frc + local.set $ten_kappa|33 + local.get $wp_w_frc + local.set $wp_w|34 + local.get $buffer|29 + local.get $len|30 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp|35 + local.get $lastp|35 + i32.load16_u + local.set $digit|36 + loop $while-continue|6 + local.get $rest|32 + local.get $wp_w|34 + i64.lt_u + if (result i32) + local.get $delta|31 + local.get $rest|32 + i64.sub + local.get $ten_kappa|33 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w|34 + local.get $rest|32 + i64.sub + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit|36 + i32.const 1 + i32.sub + local.set $digit|36 + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.set $rest|32 + br $while-continue|6 + end + end + local.get $lastp|35 + local.get $digit|36 + i32.store16 + local.get $len + return + end + br $while-continue|4 + end + end + unreachable + ) + (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) + (local $kk i32) + (local $i i32) + (local $ptr i32) + (local $offset i32) + (local $i|7 i32) + (local $buffer|8 i32) + (local $k|9 i32) + (local $sign i32) + (local $decimals i32) + (local $buffer|12 i32) + (local $num i32) + (local $offset|14 i32) + (local $len i32) + (local $buffer|16 i32) + (local $k|17 i32) + (local $sign|18 i32) + (local $decimals|19 i32) + (local $buffer|20 i32) + (local $num|21 i32) + (local $offset|22 i32) + local.get $k + i32.eqz + if + local.get $buffer + local.get $length + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $length + i32.const 2 + i32.add + return + end + local.get $length + local.get $k + i32.add + local.set $kk + local.get $length + local.get $kk + i32.le_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $length + local.set $i + loop $for-loop|0 + local.get $i + local.get $kk + i32.lt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $kk + i32.const 2 + i32.add + return + else + local.get $kk + i32.const 0 + i32.gt_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $ptr + i32.const 2 + i32.add + local.get $ptr + i32.const 0 + local.get $k + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + local.get $length + i32.const 1 + i32.add + return + else + i32.const -6 + local.get $kk + i32.lt_s + if (result i32) + local.get $kk + i32.const 0 + i32.le_s + else + i32.const 0 + end + if + i32.const 2 + local.get $kk + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $buffer + local.get $length + i32.const 1 + i32.shl + memory.copy + local.get $buffer + i32.const 48 + i32.const 46 + i32.const 16 + i32.shl + i32.or + i32.store + i32.const 2 + local.set $i|7 + loop $for-loop|1 + local.get $i|7 + local.get $offset + i32.lt_s + if + local.get $buffer + local.get $i|7 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i|7 + i32.const 1 + i32.add + local.set $i|7 + br $for-loop|1 + end + end + local.get $length + local.get $offset + i32.add + return + else + local.get $length + i32.const 1 + i32.eq + if + local.get $buffer + i32.const 101 + i32.store16 offset=2 + block $~lib/util/number/genExponent|inlined.0 (result i32) + local.get $buffer + i32.const 4 + i32.add + local.set $buffer|8 + local.get $kk + i32.const 1 + i32.sub + local.set $k|9 + local.get $k|9 + i32.const 0 + i32.lt_s + local.set $sign + local.get $sign + if + i32.const 0 + local.get $k|9 + i32.sub + local.set $k|9 + end + local.get $k|9 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals + local.get $buffer|8 + local.set $buffer|12 + local.get $k|9 + local.set $num + local.get $decimals + local.set $offset|14 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|12 + local.get $num + local.get $offset|14 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|8 + i32.const 45 + i32.const 43 + local.get $sign + select + i32.store16 + local.get $decimals + br $~lib/util/number/genExponent|inlined.0 + end + local.set $length + local.get $length + i32.const 2 + i32.add + return + else + local.get $length + i32.const 1 + i32.shl + local.set $len + local.get $buffer + i32.const 4 + i32.add + local.get $buffer + i32.const 2 + i32.add + local.get $len + i32.const 2 + i32.sub + memory.copy + local.get $buffer + i32.const 46 + i32.store16 offset=2 + local.get $buffer + local.get $len + i32.add + i32.const 101 + i32.store16 offset=2 + local.get $length + block $~lib/util/number/genExponent|inlined.1 (result i32) + local.get $buffer + local.get $len + i32.add + i32.const 4 + i32.add + local.set $buffer|16 + local.get $kk + i32.const 1 + i32.sub + local.set $k|17 + local.get $k|17 + i32.const 0 + i32.lt_s + local.set $sign|18 + local.get $sign|18 + if + i32.const 0 + local.get $k|17 + i32.sub + local.set $k|17 + end + local.get $k|17 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals|19 + local.get $buffer|16 + local.set $buffer|20 + local.get $k|17 + local.set $num|21 + local.get $decimals|19 + local.set $offset|22 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|20 + local.get $num|21 + local.get $offset|22 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|16 + i32.const 45 + i32.const 43 + local.get $sign|18 + select + i32.store16 + local.get $decimals|19 + br $~lib/util/number/genExponent|inlined.1 + end + i32.add + local.set $length + local.get $length + i32.const 2 + i32.add + return + end + unreachable + end + unreachable + end + unreachable + end + unreachable + ) + (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) + (local $sign i32) + (local $value|4 f64) + (local $buffer|5 i32) + (local $sign|6 i32) + (local $isSingle|7 i32) + (local $frc i64) + (local $exp i32) + (local $uv i32) + (local $sid i32) + (local $uv|12 i64) + (local $sid|13 i64) + (local $f i64) + (local $e i32) + (local $isSingle|16 i32) + (local $frc|17 i64) + (local $exp|18 i32) + (local $off i32) + (local $m i32) + (local $minExp i32) + (local $dk f64) + (local $k i32) + (local $index i32) + (local $off|25 i32) + (local $frc_pow i64) + (local $exp_pow i32) + (local $u i64) + (local $v i64) + (local $u0 i64) + (local $v0 i64) + (local $u1 i64) + (local $v1 i64) + (local $l i64) + (local $t i64) + (local $w i64) + (local $w_frc i64) + (local $e1 i32) + (local $e2 i32) + (local $w_exp i32) + (local $u|41 i64) + (local $v|42 i64) + (local $u0|43 i64) + (local $v0|44 i64) + (local $u1|45 i64) + (local $v1|46 i64) + (local $l|47 i64) + (local $t|48 i64) + (local $w|49 i64) + (local $wp_frc i64) + (local $e1|51 i32) + (local $e2|52 i32) + (local $wp_exp i32) + (local $u|54 i64) + (local $v|55 i64) + (local $u0|56 i64) + (local $v0|57 i64) + (local $u1|58 i64) + (local $v1|59 i64) + (local $l|60 i64) + (local $t|61 i64) + (local $w|62 i64) + (local $wm_frc i64) + (local $delta i64) + (local $len i32) + local.get $value + f64.const 0 + f64.lt + local.set $sign + local.get $sign + if + local.get $value + f64.neg + local.set $value + local.get $buffer + i32.const 45 + i32.store16 + end + block $~lib/util/number/grisu2|inlined.0 (result i32) + local.get $value + local.set $value|4 + local.get $buffer + local.set $buffer|5 + local.get $sign + local.set $sign|6 + local.get $isSingle + local.set $isSingle|7 + local.get $isSingle|7 + if + local.get $value|4 + f32.demote_f64 + i32.reinterpret_f32 + local.set $uv + local.get $uv + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.set $exp + local.get $uv + i32.const 8388607 + i32.and + local.set $sid + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + local.get $sid + i64.extend_i32_u + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 127 + i32.const 23 + i32.add + i32.sub + local.set $exp + else + local.get $value|4 + i64.reinterpret_f64 + local.set $uv|12 + local.get $uv|12 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $exp + local.get $uv|12 + i64.const 4503599627370495 + i64.and + local.set $sid|13 + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $sid|13 + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 1023 + i32.const 52 + i32.add + i32.sub + local.set $exp + end + local.get $frc + local.set $f + local.get $exp + local.set $e + local.get $isSingle|7 + local.set $isSingle|16 + local.get $f + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.set $frc|17 + local.get $e + i32.const 1 + i32.sub + local.set $exp|18 + local.get $frc|17 + i64.clz + i32.wrap_i64 + local.set $off + local.get $frc|17 + local.get $off + i64.extend_i32_s + i64.shl + local.set $frc|17 + local.get $exp|18 + local.get $off + i32.sub + local.set $exp|18 + i32.const 1 + local.get $f + local.get $isSingle|16 + if (result i64) + i64.const 8388608 + else + i64.const 4503599627370496 + end + i64.eq + i32.add + local.set $m + local.get $frc|17 + global.set $~lib/util/number/_frc_plus + local.get $f + local.get $m + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $e + local.get $m + i32.sub + local.get $exp|18 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $exp|18 + global.set $~lib/util/number/_exp + global.get $~lib/util/number/_exp + local.set $minExp + i32.const -61 + local.get $minExp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.set $dk + local.get $dk + i32.trunc_sat_f64_s + local.set $k + local.get $k + local.get $k + f64.convert_i32_s + local.get $dk + f64.ne + i32.add + local.set $k + local.get $k + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.set $index + i32.const 348 + local.get $index + i32.const 3 + i32.shl + i32.sub + global.set $~lib/util/number/_K + i32.const 22376 + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 23072 + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $frc + i64.clz + i32.wrap_i64 + local.set $off|25 + local.get $frc + local.get $off|25 + i64.extend_i32_s + i64.shl + local.set $frc + local.get $exp + local.get $off|25 + i32.sub + local.set $exp + global.get $~lib/util/number/_frc_pow + local.set $frc_pow + global.get $~lib/util/number/_exp_pow + local.set $exp_pow + block $~lib/util/number/umul64f|inlined.0 (result i64) + local.get $frc + local.set $u + local.get $frc_pow + local.set $v + local.get $u + i64.const 4294967295 + i64.and + local.set $u0 + local.get $v + i64.const 4294967295 + i64.and + local.set $v0 + local.get $u + i64.const 32 + i64.shr_u + local.set $u1 + local.get $v + i64.const 32 + i64.shr_u + local.set $v1 + local.get $u0 + local.get $v0 + i64.mul + local.set $l + local.get $u1 + local.get $v0 + i64.mul + local.get $l + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $u0 + local.get $v1 + i64.mul + local.get $t + i64.const 4294967295 + i64.and + i64.add + local.set $w + local.get $w + i64.const 2147483647 + i64.add + local.set $w + local.get $t + i64.const 32 + i64.shr_u + local.set $t + local.get $w + i64.const 32 + i64.shr_u + local.set $w + local.get $u1 + local.get $v1 + i64.mul + local.get $t + i64.add + local.get $w + i64.add + br $~lib/util/number/umul64f|inlined.0 + end + local.set $w_frc + block $~lib/util/number/umul64e|inlined.0 (result i32) + local.get $exp + local.set $e1 + local.get $exp_pow + local.set $e2 + local.get $e1 + local.get $e2 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.0 + end + local.set $w_exp + block $~lib/util/number/umul64f|inlined.1 (result i64) + global.get $~lib/util/number/_frc_plus + local.set $u|41 + local.get $frc_pow + local.set $v|42 + local.get $u|41 + i64.const 4294967295 + i64.and + local.set $u0|43 + local.get $v|42 + i64.const 4294967295 + i64.and + local.set $v0|44 + local.get $u|41 + i64.const 32 + i64.shr_u + local.set $u1|45 + local.get $v|42 + i64.const 32 + i64.shr_u + local.set $v1|46 + local.get $u0|43 + local.get $v0|44 + i64.mul + local.set $l|47 + local.get $u1|45 + local.get $v0|44 + i64.mul + local.get $l|47 + i64.const 32 + i64.shr_u + i64.add + local.set $t|48 + local.get $u0|43 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.const 4294967295 + i64.and + i64.add + local.set $w|49 + local.get $w|49 + i64.const 2147483647 + i64.add + local.set $w|49 + local.get $t|48 + i64.const 32 + i64.shr_u + local.set $t|48 + local.get $w|49 + i64.const 32 + i64.shr_u + local.set $w|49 + local.get $u1|45 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.add + local.get $w|49 + i64.add + br $~lib/util/number/umul64f|inlined.1 + end + i64.const 1 + i64.sub + local.set $wp_frc + block $~lib/util/number/umul64e|inlined.1 (result i32) + global.get $~lib/util/number/_exp + local.set $e1|51 + local.get $exp_pow + local.set $e2|52 + local.get $e1|51 + local.get $e2|52 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.1 + end + local.set $wp_exp + block $~lib/util/number/umul64f|inlined.2 (result i64) + global.get $~lib/util/number/_frc_minus + local.set $u|54 + local.get $frc_pow + local.set $v|55 + local.get $u|54 + i64.const 4294967295 + i64.and + local.set $u0|56 + local.get $v|55 + i64.const 4294967295 + i64.and + local.set $v0|57 + local.get $u|54 + i64.const 32 + i64.shr_u + local.set $u1|58 + local.get $v|55 + i64.const 32 + i64.shr_u + local.set $v1|59 + local.get $u0|56 + local.get $v0|57 + i64.mul + local.set $l|60 + local.get $u1|58 + local.get $v0|57 + i64.mul + local.get $l|60 + i64.const 32 + i64.shr_u + i64.add + local.set $t|61 + local.get $u0|56 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.const 4294967295 + i64.and + i64.add + local.set $w|62 + local.get $w|62 + i64.const 2147483647 + i64.add + local.set $w|62 + local.get $t|61 + i64.const 32 + i64.shr_u + local.set $t|61 + local.get $w|62 + i64.const 32 + i64.shr_u + local.set $w|62 + local.get $u1|58 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.add + local.get $w|62 + i64.add + br $~lib/util/number/umul64f|inlined.2 + end + i64.const 1 + i64.add + local.set $wm_frc + local.get $wp_frc + local.get $wm_frc + i64.sub + local.set $delta + local.get $buffer|5 + local.get $w_frc + local.get $w_exp + local.get $wp_frc + local.get $wp_exp + local.get $delta + local.get $sign|6 + call $~lib/util/number/genDigits + br $~lib/util/number/grisu2|inlined.0 + end + local.set $len + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.get $len + local.get $sign + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.set $len + local.get $len + local.get $sign + i32.add + return + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $std/string/getString (result i32) + global.get $std/string/str + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/string/str + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/string/nullStr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 240 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 13040 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 14688 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 15616 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 16672 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array<~lib/string/String>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + unreachable + ) + (func $~start + call $start:std/string + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 58400 + i32.const 58448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String#charCodeAt (param $this i32) (param $pos i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $pos + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/string/String#get:length + i32.ge_u + if + i32.const -1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $this + local.get $pos + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/string/String#codePointAt (param $this i32) (param $pos i32) (result i32) + (local $len i32) + (local $first i32) + (local $second i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/string/String#get:length + local.set $len + local.get $pos + local.get $len + i32.ge_u + if + i32.const -1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $this + local.get $pos + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $first + local.get $first + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + if (result i32) + i32.const 1 + else + local.get $pos + i32.const 1 + i32.add + local.get $len + i32.eq + end + if + local.get $first + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $this + local.get $pos + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.set $second + local.get $second + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + if + local.get $first + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $first + i32.const 55296 + i32.sub + i32.const 10 + i32.shl + local.get $second + i32.const 56320 + i32.sub + i32.add + i32.const 65536 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/string/String#at (param $this i32) (param $pos i32) (result i32) + (local $len i32) + (local $out i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/String#get:length + local.set $len + local.get $pos + i32.const 0 + local.get $len + local.get $pos + i32.const 0 + i32.ge_s + select + i32.add + local.set $pos + local.get $pos + local.get $len + i32.ge_u + if + i32.const 240 + i32.const 304 + i32.const 57 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.set $out + local.get $out + local.get $this + local.get $pos + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $out + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/string/String#charAt (param $this i32) (param $pos i32) (result i32) + (local $out i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $pos + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ge_u + if + i32.const 688 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $pos + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $out + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String.__not (param $str i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String#get:length + i32.eqz + end + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/string/String.fromCharCodes (param $units i32) (result i32) + (local $length i32) + (local $out i32) + (local $ptr i32) + (local $i i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $units + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $units + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $out + local.get $i + i32.const 1 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/string/String#startsWith (param $this i32) (param $search i32) (param $start i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $searchStart i32) + (local $searchLength i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $len + local.get $start + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $searchStart + local.get $search + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $searchLength + local.get $searchLength + local.get $searchStart + i32.add + local.get $len + i32.gt_s + if + i32.const 0 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + local.get $searchStart + local.get $search + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + i32.const 0 + local.get $searchLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/string/String#endsWith (param $this i32) (param $search i32) (param $end i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $searchLength i32) + (local $searchStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $end + local.tee $3 + i32.const 0 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_s + select + local.tee $5 + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.tee $6 + local.get $5 + local.get $6 + i32.lt_s + select + local.set $end + local.get $search + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.set $searchLength + local.get $end + local.get $searchLength + i32.sub + local.set $searchStart + local.get $searchStart + i32.const 0 + i32.lt_s + if + i32.const 0 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + end + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + local.get $searchStart + local.get $search + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + local.get $searchLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/string/String#endsWith@varargs (param $this i32) (param $search i32) (param $end i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/string/String.MAX_LENGTH + local.set $end + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $search + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $end + call $~lib/string/String#endsWith + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#indexOf (param $this i32) (param $search i32) (param $start i32) (result i32) + (local $searchLen i32) + (local $len i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $searchStart i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $search + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $searchLen + local.get $searchLen + i32.eqz + if + i32.const 0 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $len + local.get $len + i32.eqz + if + i32.const -1 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $start + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.tee $7 + local.get $len + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $searchStart + local.get $len + local.get $searchLen + i32.sub + local.set $len + loop $for-loop|0 + local.get $searchStart + local.get $len + i32.le_s + if + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + local.get $searchStart + local.get $search + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + i32.const 0 + local.get $searchLen + call $~lib/util/string/compareImpl + i32.eqz + if + local.get $searchStart + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $searchStart + i32.const 1 + i32.add + local.set $searchStart + br $for-loop|0 + end + end + i32.const -1 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/string/String#includes (param $this i32) (param $search i32) (param $start i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $search + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $start + call $~lib/string/String#indexOf + i32.const -1 + i32.ne + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String#padStart (param $this i32) (param $length i32) (param $pad i32) (result i32) + (local $thisSize i32) + (local $targetSize i32) + (local $padSize i32) + (local $prependSize i32) + (local $out i32) + (local $repeatCount i32) + (local $restBase i32) + (local $restSize i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $length + i32.const 1 + i32.shl + local.set $targetSize + local.get $pad + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $padSize + local.get $targetSize + local.get $thisSize + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $padSize + i32.eqz + end + if + local.get $this + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $targetSize + local.get $thisSize + i32.sub + local.set $prependSize + global.get $~lib/memory/__stack_pointer + local.get $targetSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $prependSize + local.get $padSize + i32.gt_u + if + local.get $prependSize + i32.const 2 + i32.sub + local.get $padSize + i32.div_u + local.set $repeatCount + local.get $repeatCount + local.get $padSize + i32.mul + local.set $restBase + local.get $prependSize + local.get $restBase + i32.sub + local.set $restSize + local.get $out + local.get $pad + local.get $padSize + local.get $repeatCount + call $~lib/memory/memory.repeat + local.get $out + local.get $restBase + i32.add + local.get $pad + local.get $restSize + memory.copy + else + local.get $out + local.get $pad + local.get $prependSize + memory.copy + end + local.get $out + local.get $prependSize + i32.add + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/string/String#padEnd (param $this i32) (param $length i32) (param $pad i32) (result i32) + (local $thisSize i32) + (local $targetSize i32) + (local $padSize i32) + (local $appendSize i32) + (local $out i32) + (local $repeatCount i32) + (local $restBase i32) + (local $restSize i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $length + i32.const 1 + i32.shl + local.set $targetSize + local.get $pad + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $padSize + local.get $targetSize + local.get $thisSize + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $padSize + i32.eqz + end + if + local.get $this + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $targetSize + local.get $thisSize + i32.sub + local.set $appendSize + global.get $~lib/memory/__stack_pointer + local.get $targetSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $appendSize + local.get $padSize + i32.gt_u + if + local.get $appendSize + i32.const 2 + i32.sub + local.get $padSize + i32.div_u + local.set $repeatCount + local.get $repeatCount + local.get $padSize + i32.mul + local.set $restBase + local.get $appendSize + local.get $restBase + i32.sub + local.set $restSize + local.get $out + local.get $thisSize + i32.add + local.get $pad + local.get $padSize + local.get $repeatCount + call $~lib/memory/memory.repeat + local.get $out + local.get $thisSize + i32.add + local.get $restBase + i32.add + local.get $pad + local.get $restSize + memory.copy + else + local.get $out + local.get $thisSize + i32.add + local.get $pad + local.get $appendSize + memory.copy + end + local.get $out + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/string/String#lastIndexOf (param $this i32) (param $search i32) (param $start i32) (result i32) + (local $searchLen i32) + (local $len i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $searchStart i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $search + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $searchLen + local.get $searchLen + i32.eqz + if + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $len + local.get $len + i32.eqz + if + i32.const -1 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $start + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.tee $7 + local.get $len + local.get $searchLen + i32.sub + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $searchStart + loop $for-loop|0 + local.get $searchStart + i32.const 0 + i32.ge_s + if + local.get $this + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + local.get $searchStart + local.get $search + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + i32.const 0 + local.get $searchLen + call $~lib/util/string/compareImpl + i32.eqz + if + local.get $searchStart + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $searchStart + i32.const 1 + i32.sub + local.set $searchStart + br $for-loop|0 + end + end + i32.const -1 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/string/String#lastIndexOf@varargs (param $this i32) (param $search i32) (param $start i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $start + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $search + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $start + call $~lib/string/String#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#localeCompare (param $this i32) (param $other i32) (result i32) + (local $alen i32) + (local $blen i32) + (local $4 i32) + (local $5 i32) + (local $res i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $other + local.get $this + i32.eq + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $alen + local.get $other + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $blen + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 0 + local.get $other + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + local.get $alen + local.tee $4 + local.get $blen + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $res + local.get $res + if (result i32) + local.get $res + else + local.get $alen + local.get $blen + i32.sub + end + local.set $res + local.get $res + i32.const 0 + i32.gt_s + local.get $res + i32.const 0 + i32.lt_s + i32.sub + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/string/String#trimStart (param $this i32) (result i32) + (local $size i32) + (local $offset i32) + (local $out i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $size + i32.const 0 + local.set $offset + loop $while-continue|0 + local.get $offset + local.get $size + i32.lt_u + if (result i32) + local.get $this + local.get $offset + i32.add + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + if + local.get $offset + i32.const 2 + i32.add + local.set $offset + br $while-continue|0 + end + end + local.get $offset + i32.eqz + if + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $size + local.get $offset + i32.sub + local.set $size + local.get $size + i32.eqz + if + i32.const 688 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $offset + i32.add + local.get $size + memory.copy + local.get $out + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/string/String#trimEnd (param $this i32) (result i32) + (local $originalSize i32) + (local $size i32) + (local $out i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $originalSize + local.get $originalSize + local.set $size + loop $while-continue|0 + local.get $size + if (result i32) + local.get $this + local.get $size + i32.add + i32.const 2 + i32.sub + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + if + local.get $size + i32.const 2 + i32.sub + local.set $size + br $while-continue|0 + end + end + local.get $size + i32.eqz + if + i32.const 688 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $size + local.get $originalSize + i32.eq + if + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $size + memory.copy + local.get $out + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/string/String#trim (param $this i32) (result i32) + (local $len i32) + (local $size i32) + (local $offset i32) + (local $out i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/string/String#get:length + local.set $len + local.get $len + i32.const 1 + i32.shl + local.set $size + loop $while-continue|0 + local.get $size + if (result i32) + local.get $this + local.get $size + i32.add + i32.const 2 + i32.sub + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + if + local.get $size + i32.const 2 + i32.sub + local.set $size + br $while-continue|0 + end + end + i32.const 0 + local.set $offset + loop $while-continue|1 + local.get $offset + local.get $size + i32.lt_u + if (result i32) + local.get $this + local.get $offset + i32.add + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + if + local.get $offset + i32.const 2 + i32.add + local.set $offset + local.get $size + i32.const 2 + i32.sub + local.set $size + br $while-continue|1 + end + end + local.get $size + i32.eqz + if + i32.const 688 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $offset + i32.eqz + if (result i32) + local.get $size + local.get $len + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 + end + if + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $offset + i32.add + local.get $size + memory.copy + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/util/string/strtob (param $str i32) (result i32) + (local $size i32) + (local $offset i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $size + i32.const 0 + local.set $offset + local.get $size + i32.const 8 + i32.gt_u + if + loop $while-continue|0 + local.get $size + if (result i32) + local.get $str + local.get $size + i32.add + i32.const 2 + i32.sub + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + if + local.get $size + i32.const 2 + i32.sub + local.set $size + br $while-continue|0 + end + end + local.get $size + i32.const 8 + i32.gt_u + if + loop $while-continue|1 + local.get $offset + local.get $size + i32.lt_u + if (result i32) + local.get $str + local.get $offset + i32.add + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + if + local.get $offset + i32.const 2 + i32.add + local.set $offset + br $while-continue|1 + end + end + local.get $size + local.get $offset + i32.sub + local.set $size + end + end + local.get $size + i32.const 8 + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $str + local.get $offset + i32.add + i64.load + i64.const 28429475166421108 + i64.eq + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/util/string/strtol (param $str i32) (param $radix i32) (result f64) + (local $len i32) + (local $ptr i32) + (local $code i32) + (local $sign f64) + (local $6 i32) + (local $num f64) + (local $initial i32) + (local $9 i32) + (local $10 i32) + (local $11 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $len + local.get $len + i32.eqz + if + i32.const 1 + drop + f64.const nan:0x8000000000000 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $str + local.set $ptr + local.get $ptr + i32.load16_u + local.set $code + loop $while-continue|0 + local.get $code + call $~lib/util/string/isSpace + if + local.get $ptr + i32.const 2 + i32.add + local.tee $ptr + i32.load16_u + local.set $code + local.get $len + i32.const 1 + i32.sub + local.set $len + br $while-continue|0 + end + end + f64.const 1 + local.set $sign + local.get $code + i32.const 45 + i32.eq + if (result i32) + i32.const 1 + else + local.get $code + i32.const 43 + i32.eq + end + if + local.get $len + i32.const 1 + i32.sub + local.tee $len + i32.eqz + if + i32.const 1 + drop + f64.const nan:0x8000000000000 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $code + i32.const 45 + i32.eq + if + f64.const -1 + local.set $sign + end + local.get $ptr + i32.const 2 + i32.add + local.tee $ptr + i32.load16_u + local.set $code + end + local.get $radix + if + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 1 + drop + f64.const nan:0x8000000000000 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $radix + i32.const 16 + i32.eq + if + local.get $len + i32.const 2 + i32.gt_s + if (result i32) + local.get $code + i32.const 48 + i32.eq + else + i32.const 0 + end + if (result i32) + local.get $ptr + i32.load16_u offset=2 + i32.const 32 + i32.or + i32.const 120 + i32.eq + else + i32.const 0 + end + if + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + end + end + else + local.get $code + i32.const 48 + i32.eq + if (result i32) + local.get $len + i32.const 2 + i32.gt_s + else + i32.const 0 + end + if + block $break|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $ptr + i32.load16_u offset=2 + i32.const 32 + i32.or + local.set $6 + local.get $6 + i32.const 98 + i32.eq + br_if $case0|1 + local.get $6 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $6 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + i32.const 2 + local.set $radix + br $break|1 + end + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + i32.const 8 + local.set $radix + br $break|1 + end + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + i32.const 16 + local.set $radix + br $break|1 + end + end + local.get $radix + i32.eqz + if + i32.const 10 + local.set $radix + end + end + f64.const 0 + local.set $num + local.get $len + i32.const 1 + i32.sub + local.set $initial + block $while-break|2 + loop $while-continue|2 + local.get $len + local.tee $9 + i32.const 1 + i32.sub + local.set $len + local.get $9 + if + local.get $ptr + i32.load16_u + local.set $code + local.get $code + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if + local.get $code + i32.const 48 + i32.sub + local.set $code + else + local.get $code + i32.const 65 + i32.sub + i32.const 90 + i32.const 65 + i32.sub + i32.le_u + if + local.get $code + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $code + else + local.get $code + i32.const 97 + i32.sub + i32.const 122 + i32.const 97 + i32.sub + i32.le_u + if + local.get $code + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $code + end + end + end + local.get $code + local.get $radix + i32.ge_u + if + local.get $initial + local.get $len + i32.eq + if + i32.const 1 + drop + f64.const nan:0x8000000000000 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + br $while-break|2 + end + local.get $num + local.get $radix + f64.convert_i32_s + f64.mul + local.get $code + f64.convert_i32_u + f64.add + local.set $num + local.get $ptr + i32.const 2 + i32.add + local.set $ptr + br $while-continue|2 + end + end + end + local.get $sign + local.get $num + f64.mul + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/string/parseInt (param $str i32) (param $radix i32) (result f64) + (local $2 i32) + (local $3 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $radix + call $~lib/util/string/strtol + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/util/string/strtod (param $str i32) (result f64) + (local $len i32) + (local $ptr i32) + (local $code i32) + (local $sign f64) + (local $savedPtr i32) + (local $pointed i32) + (local $consumed i32) + (local $position i32) + (local $x i64) + (local $noDigits i32) + (local $digit i32) + (local $12 i32) + (local $13 i32) + (local $ptr|14 i32) + (local $len|15 i32) + (local $sign|16 i32) + (local $magnitude i32) + (local $code|18 i32) + (local $digit|19 i32) + (local $significand i64) + (local $exp i32) + (local $significandf f64) + (local $n i32) + (local $24 i32) + (local $25 i32) + (local $n|26 i32) + (local $n|27 i32) + (local $significand|28 i64) + (local $exp|29 i32) + (local $shift i64) + (local $q i64) + (local $r i64) + (local $s i64) + (local $b i64) + (local $q|35 i64) + (local $r|36 i64) + (local $s|37 i64) + (local $significand|38 i64) + (local $exp|39 i32) + (local $shift|40 i64) + (local $a i64) + (local $b|42 i32) + (local $low i64) + (local $high i64) + (local $overflow i32) + (local $space i32) + (local $revspace i64) + (local $a|48 i64) + (local $b|49 i32) + (local $low|50 i64) + (local $high|51 i64) + (local $overflow|52 i32) + (local $space|53 i32) + (local $revspace|54 i64) + (local $55 i32) + (local $56 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + local.set $55 + global.get $~lib/memory/__stack_pointer + local.get $55 + i32.store + local.get $55 + call $~lib/string/String#get:length + local.set $len + local.get $len + i32.eqz + if + f64.const nan:0x8000000000000 + local.set $56 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $56 + return + end + local.get $str + local.set $ptr + local.get $ptr + i32.load16_u + local.set $code + f64.const 1 + local.set $sign + loop $while-continue|0 + local.get $len + if (result i32) + local.get $code + call $~lib/util/string/isSpace + else + i32.const 0 + end + if + local.get $ptr + i32.const 2 + i32.add + local.tee $ptr + i32.load16_u + local.set $code + local.get $len + i32.const 1 + i32.sub + local.set $len + br $while-continue|0 + end + end + local.get $len + i32.eqz + if + f64.const nan:0x8000000000000 + local.set $56 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $56 + return + end + local.get $code + i32.const 45 + i32.eq + if + local.get $len + i32.const 1 + i32.sub + local.tee $len + i32.eqz + if + f64.const nan:0x8000000000000 + local.set $56 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $56 + return + end + local.get $ptr + i32.const 2 + i32.add + local.tee $ptr + i32.load16_u + local.set $code + f64.const -1 + local.set $sign + else + local.get $code + i32.const 43 + i32.eq + if + local.get $len + i32.const 1 + i32.sub + local.tee $len + i32.eqz + if + f64.const nan:0x8000000000000 + local.set $56 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $56 + return + end + local.get $ptr + i32.const 2 + i32.add + local.tee $ptr + i32.load16_u + local.set $code + end + end + local.get $len + i32.const 8 + i32.ge_s + if (result i32) + local.get $code + i32.const 73 + i32.eq + else + i32.const 0 + end + if + local.get $ptr + i64.load + i64.const 29555310648492105 + i64.eq + if (result i32) + local.get $ptr + i64.load offset=8 + i64.const 34058970405077102 + i64.eq + else + i32.const 0 + end + if + f64.const inf + local.get $sign + f64.mul + local.set $56 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $56 + return + end + f64.const nan:0x8000000000000 + local.set $56 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $56 + return + end + local.get $code + i32.const 46 + i32.ne + if (result i32) + local.get $code + i32.const 48 + i32.sub + i32.const 10 + i32.ge_u + else + i32.const 0 + end + if + f64.const nan:0x8000000000000 + local.set $56 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $56 + return + end + local.get $ptr + local.set $savedPtr + loop $while-continue|1 + local.get $code + i32.const 48 + i32.eq + if + local.get $ptr + i32.const 2 + i32.add + local.tee $ptr + i32.load16_u + local.set $code + local.get $len + i32.const 1 + i32.sub + local.set $len + br $while-continue|1 + end + end + local.get $len + i32.const 0 + i32.le_s + if + f64.const 0 + local.get $sign + f64.mul + local.set $56 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $56 + return + end + i32.const 0 + local.set $pointed + i32.const 0 + local.set $consumed + i32.const 0 + local.set $position + i64.const 0 + local.set $x + local.get $code + i32.const 46 + i32.eq + if + local.get $savedPtr + local.get $ptr + i32.sub + i32.eqz + local.set $noDigits + local.get $ptr + i32.const 2 + i32.add + local.set $ptr + local.get $len + i32.const 1 + i32.sub + local.set $len + local.get $len + i32.eqz + if (result i32) + local.get $noDigits + else + i32.const 0 + end + if + f64.const nan:0x8000000000000 + local.set $56 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $56 + return + end + i32.const 1 + local.set $pointed + loop $for-loop|2 + local.get $ptr + i32.load16_u + local.tee $code + i32.const 48 + i32.eq + if + local.get $len + i32.const 1 + i32.sub + local.set $len + local.get $position + i32.const 1 + i32.sub + local.set $position + local.get $ptr + i32.const 2 + i32.add + local.set $ptr + br $for-loop|2 + end + end + local.get $len + i32.const 0 + i32.le_s + if + f64.const 0 + local.get $sign + f64.mul + local.set $56 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $56 + return + end + local.get $position + i32.eqz + if (result i32) + local.get $noDigits + else + i32.const 0 + end + if (result i32) + local.get $code + i32.const 48 + i32.sub + i32.const 10 + i32.ge_u + else + i32.const 0 + end + if + f64.const nan:0x8000000000000 + local.set $56 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $56 + return + end + end + local.get $code + i32.const 48 + i32.sub + local.set $digit + block $for-break3 + loop $for-loop|3 + local.get $digit + i32.const 10 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $code + i32.const 46 + i32.eq + if (result i32) + local.get $pointed + i32.eqz + else + i32.const 0 + end + end + if + local.get $digit + i32.const 10 + i32.lt_u + if + local.get $consumed + i32.const 19 + i32.lt_s + if (result i64) + i64.const 10 + local.get $x + i64.mul + local.get $digit + i64.extend_i32_u + i64.add + else + local.get $x + local.get $digit + i32.eqz + i32.eqz + i64.extend_i32_u + i64.or + end + local.set $x + local.get $consumed + i32.const 1 + i32.add + local.set $consumed + else + local.get $consumed + local.set $position + i32.const 1 + local.set $pointed + end + local.get $len + i32.const 1 + i32.sub + local.tee $len + i32.eqz + if + br $for-break3 + end + local.get $ptr + i32.const 2 + i32.add + local.tee $ptr + i32.load16_u + local.set $code + local.get $code + i32.const 48 + i32.sub + local.set $digit + br $for-loop|3 + end + end + end + local.get $pointed + i32.eqz + if + local.get $consumed + local.set $position + end + block $~lib/util/string/scientific|inlined.0 (result f64) + local.get $x + local.set $significand + local.get $position + i32.const 19 + local.tee $12 + local.get $consumed + local.tee $13 + local.get $12 + local.get $13 + i32.lt_s + select + i32.sub + block $~lib/util/string/parseExp|inlined.0 (result i32) + local.get $ptr + local.set $ptr|14 + local.get $len + local.set $len|15 + i32.const 1 + local.set $sign|16 + i32.const 0 + local.set $magnitude + local.get $ptr|14 + i32.load16_u + local.set $code|18 + local.get $code|18 + i32.const 32 + i32.or + i32.const 101 + i32.ne + if + i32.const 0 + br $~lib/util/string/parseExp|inlined.0 + end + local.get $len|15 + i32.const 1 + i32.sub + local.tee $len|15 + i32.eqz + if + i32.const 0 + br $~lib/util/string/parseExp|inlined.0 + end + local.get $ptr|14 + i32.const 2 + i32.add + local.tee $ptr|14 + i32.load16_u + local.set $code|18 + local.get $code|18 + i32.const 45 + i32.eq + if + local.get $len|15 + i32.const 1 + i32.sub + local.tee $len|15 + i32.eqz + if + i32.const 0 + br $~lib/util/string/parseExp|inlined.0 + end + local.get $ptr|14 + i32.const 2 + i32.add + local.tee $ptr|14 + i32.load16_u + local.set $code|18 + i32.const -1 + local.set $sign|16 + else + local.get $code|18 + i32.const 43 + i32.eq + if + local.get $len|15 + i32.const 1 + i32.sub + local.tee $len|15 + i32.eqz + if + i32.const 0 + br $~lib/util/string/parseExp|inlined.0 + end + local.get $ptr|14 + i32.const 2 + i32.add + local.tee $ptr|14 + i32.load16_u + local.set $code|18 + end + end + loop $while-continue|4 + local.get $code|18 + i32.const 48 + i32.eq + if + local.get $len|15 + i32.const 1 + i32.sub + local.tee $len|15 + i32.eqz + if + i32.const 0 + br $~lib/util/string/parseExp|inlined.0 + end + local.get $ptr|14 + i32.const 2 + i32.add + local.tee $ptr|14 + i32.load16_u + local.set $code|18 + br $while-continue|4 + end + end + local.get $code|18 + i32.const 48 + i32.sub + local.set $digit|19 + loop $for-loop|5 + local.get $len|15 + if (result i32) + local.get $digit|19 + i32.const 10 + i32.lt_u + else + i32.const 0 + end + if + local.get $magnitude + i32.const 3200 + i32.ge_s + if + local.get $sign|16 + i32.const 3200 + i32.mul + br $~lib/util/string/parseExp|inlined.0 + end + i32.const 10 + local.get $magnitude + i32.mul + local.get $digit|19 + i32.add + local.set $magnitude + local.get $ptr|14 + i32.const 2 + i32.add + local.tee $ptr|14 + i32.load16_u + local.set $code|18 + local.get $len|15 + i32.const 1 + i32.sub + local.set $len|15 + local.get $code|18 + i32.const 48 + i32.sub + local.set $digit|19 + br $for-loop|5 + end + end + local.get $sign|16 + local.get $magnitude + i32.mul + br $~lib/util/string/parseExp|inlined.0 + end + i32.add + local.set $exp + local.get $significand + i64.const 0 + i64.ne + i32.eqz + if (result i32) + i32.const 1 + else + local.get $exp + i32.const -342 + i32.lt_s + end + if + f64.const 0 + br $~lib/util/string/scientific|inlined.0 + end + local.get $exp + i32.const 308 + i32.gt_s + if + f64.const inf + br $~lib/util/string/scientific|inlined.0 + end + local.get $significand + f64.convert_i64_u + local.set $significandf + local.get $exp + i32.eqz + if + local.get $significandf + br $~lib/util/string/scientific|inlined.0 + end + local.get $exp + i32.const 22 + i32.gt_s + if (result i32) + local.get $exp + i32.const 22 + i32.const 15 + i32.add + i32.le_s + else + i32.const 0 + end + if + local.get $significandf + block $~lib/util/string/pow10|inlined.0 (result f64) + local.get $exp + i32.const 22 + i32.sub + local.set $n + i32.const 3648 + local.get $n + i32.const 3 + i32.shl + i32.add + f64.load + br $~lib/util/string/pow10|inlined.0 + end + f64.mul + local.set $significandf + i32.const 22 + local.set $exp + end + local.get $significand + i64.const 9007199254740991 + i64.le_u + if (result i32) + local.get $exp + local.tee $24 + i32.const 31 + i32.shr_s + local.tee $25 + local.get $24 + i32.add + local.get $25 + i32.xor + i32.const 22 + i32.le_s + else + i32.const 0 + end + if + local.get $exp + i32.const 0 + i32.gt_s + if + local.get $significandf + block $~lib/util/string/pow10|inlined.1 (result f64) + local.get $exp + local.set $n|26 + i32.const 3648 + local.get $n|26 + i32.const 3 + i32.shl + i32.add + f64.load + br $~lib/util/string/pow10|inlined.1 + end + f64.mul + br $~lib/util/string/scientific|inlined.0 + end + local.get $significandf + block $~lib/util/string/pow10|inlined.2 (result f64) + i32.const 0 + local.get $exp + i32.sub + local.set $n|27 + i32.const 3648 + local.get $n|27 + i32.const 3 + i32.shl + i32.add + f64.load + br $~lib/util/string/pow10|inlined.2 + end + f64.div + br $~lib/util/string/scientific|inlined.0 + else + local.get $exp + i32.const 0 + i32.lt_s + if + block $~lib/util/string/scaledown|inlined.0 (result f64) + local.get $significand + local.set $significand|28 + local.get $exp + local.set $exp|29 + local.get $significand|28 + i64.clz + local.set $shift + local.get $significand|28 + local.get $shift + i64.shl + local.set $significand|28 + local.get $exp|29 + i64.extend_i32_s + local.get $shift + i64.sub + local.set $shift + loop $for-loop|6 + local.get $exp|29 + i32.const -14 + i32.le_s + if + local.get $significand|28 + i64.const 6103515625 + i64.div_u + local.set $q + local.get $significand|28 + i64.const 6103515625 + i64.rem_u + local.set $r + local.get $q + i64.clz + local.set $s + local.get $q + local.get $s + i64.shl + f64.const 0.00004294967296 + local.get $r + local.get $s + i64.const 18 + i64.sub + i64.shl + f64.convert_i64_u + f64.mul + f64.nearest + i64.trunc_sat_f64_u + i64.add + local.set $significand|28 + local.get $shift + local.get $s + i64.sub + local.set $shift + local.get $exp|29 + i32.const 14 + i32.add + local.set $exp|29 + br $for-loop|6 + end + end + i32.const 5 + i32.const 0 + local.get $exp|29 + i32.sub + call $~lib/math/ipow32 + i64.extend_i32_s + local.set $b + local.get $significand|28 + local.get $b + i64.div_u + local.set $q|35 + local.get $significand|28 + local.get $b + i64.rem_u + local.set $r|36 + local.get $q|35 + i64.clz + local.set $s|37 + local.get $q|35 + local.get $s|37 + i64.shl + local.get $r|36 + f64.convert_i64_u + i64.reinterpret_f64 + local.get $s|37 + i64.const 52 + i64.shl + i64.add + f64.reinterpret_i64 + local.get $b + f64.convert_i64_u + f64.div + i64.trunc_sat_f64_u + i64.add + local.set $significand|28 + local.get $shift + local.get $s|37 + i64.sub + local.set $shift + local.get $significand|28 + f64.convert_i64_u + local.get $shift + i32.wrap_i64 + call $~lib/math/NativeMath.scalbn + br $~lib/util/string/scaledown|inlined.0 + end + br $~lib/util/string/scientific|inlined.0 + else + block $~lib/util/string/scaleup|inlined.0 (result f64) + local.get $significand + local.set $significand|38 + local.get $exp + local.set $exp|39 + local.get $significand|38 + i64.ctz + local.set $shift|40 + local.get $significand|38 + local.get $shift|40 + i64.shr_u + local.set $significand|38 + local.get $shift|40 + local.get $exp|39 + i64.extend_i32_s + i64.add + local.set $shift|40 + local.get $shift|40 + global.set $~lib/util/string/__fixmulShift + loop $for-loop|7 + local.get $exp|39 + i32.const 13 + i32.ge_s + if + block $~lib/util/string/fixmul|inlined.0 (result i64) + local.get $significand|38 + local.set $a + i32.const 1220703125 + local.set $b|42 + local.get $a + i64.const 4294967295 + i64.and + local.get $b|42 + i64.extend_i32_u + i64.mul + local.set $low + local.get $a + i64.const 32 + i64.shr_u + local.get $b|42 + i64.extend_i32_u + i64.mul + local.get $low + i64.const 32 + i64.shr_u + i64.add + local.set $high + local.get $high + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $overflow + local.get $overflow + i32.clz + local.set $space + i64.const 32 + local.get $space + i64.extend_i32_u + i64.sub + local.set $revspace + global.get $~lib/util/string/__fixmulShift + local.get $revspace + i64.add + global.set $~lib/util/string/__fixmulShift + local.get $high + local.get $space + i64.extend_i32_u + i64.shl + local.get $low + i64.const 4294967295 + i64.and + local.get $revspace + i64.shr_u + i64.or + local.get $low + local.get $space + i64.extend_i32_u + i64.shl + i64.const 31 + i64.shr_u + i64.const 1 + i64.and + i64.add + br $~lib/util/string/fixmul|inlined.0 + end + local.set $significand|38 + local.get $exp|39 + i32.const 13 + i32.sub + local.set $exp|39 + br $for-loop|7 + end + end + block $~lib/util/string/fixmul|inlined.1 (result i64) + local.get $significand|38 + local.set $a|48 + i32.const 5 + local.get $exp|39 + call $~lib/math/ipow32 + local.set $b|49 + local.get $a|48 + i64.const 4294967295 + i64.and + local.get $b|49 + i64.extend_i32_u + i64.mul + local.set $low|50 + local.get $a|48 + i64.const 32 + i64.shr_u + local.get $b|49 + i64.extend_i32_u + i64.mul + local.get $low|50 + i64.const 32 + i64.shr_u + i64.add + local.set $high|51 + local.get $high|51 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $overflow|52 + local.get $overflow|52 + i32.clz + local.set $space|53 + i64.const 32 + local.get $space|53 + i64.extend_i32_u + i64.sub + local.set $revspace|54 + global.get $~lib/util/string/__fixmulShift + local.get $revspace|54 + i64.add + global.set $~lib/util/string/__fixmulShift + local.get $high|51 + local.get $space|53 + i64.extend_i32_u + i64.shl + local.get $low|50 + i64.const 4294967295 + i64.and + local.get $revspace|54 + i64.shr_u + i64.or + local.get $low|50 + local.get $space|53 + i64.extend_i32_u + i64.shl + i64.const 31 + i64.shr_u + i64.const 1 + i64.and + i64.add + br $~lib/util/string/fixmul|inlined.1 + end + local.set $significand|38 + global.get $~lib/util/string/__fixmulShift + local.set $shift|40 + local.get $significand|38 + f64.convert_i64_u + local.get $shift|40 + i32.wrap_i64 + call $~lib/math/NativeMath.scalbn + br $~lib/util/string/scaleup|inlined.0 + end + br $~lib/util/string/scientific|inlined.0 + end + unreachable + end + unreachable + end + local.get $sign + f64.copysign + local.set $56 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $56 + return + ) + (func $~lib/number/F32.parseFloat (param $value i32) (result f32) + (local $1 i32) + (local $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $value + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/strtod + f32.demote_f64 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/number/F64.parseFloat (param $value i32) (result f64) + (local $1 i32) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $value + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/strtod + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/util/string/strtol (param $str i32) (param $radix i32) (result i32) + (local $len i32) + (local $ptr i32) + (local $code i32) + (local $sign i32) + (local $6 i32) + (local $num i32) + (local $initial i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $len + local.get $len + i32.eqz + if + i32.const 0 + drop + i32.const 0 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $str + local.set $ptr + local.get $ptr + i32.load16_u + local.set $code + loop $while-continue|0 + local.get $code + call $~lib/util/string/isSpace + if + local.get $ptr + i32.const 2 + i32.add + local.tee $ptr + i32.load16_u + local.set $code + local.get $len + i32.const 1 + i32.sub + local.set $len + br $while-continue|0 + end + end + i32.const 1 + local.set $sign + local.get $code + i32.const 45 + i32.eq + if (result i32) + i32.const 1 + else + local.get $code + i32.const 43 + i32.eq + end + if + local.get $len + i32.const 1 + i32.sub + local.tee $len + i32.eqz + if + i32.const 0 + drop + i32.const 0 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $code + i32.const 45 + i32.eq + if + i32.const -1 + local.set $sign + end + local.get $ptr + i32.const 2 + i32.add + local.tee $ptr + i32.load16_u + local.set $code + end + local.get $radix + if + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 0 + drop + i32.const 0 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $radix + i32.const 16 + i32.eq + if + local.get $len + i32.const 2 + i32.gt_s + if (result i32) + local.get $code + i32.const 48 + i32.eq + else + i32.const 0 + end + if (result i32) + local.get $ptr + i32.load16_u offset=2 + i32.const 32 + i32.or + i32.const 120 + i32.eq + else + i32.const 0 + end + if + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + end + end + else + local.get $code + i32.const 48 + i32.eq + if (result i32) + local.get $len + i32.const 2 + i32.gt_s + else + i32.const 0 + end + if + block $break|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $ptr + i32.load16_u offset=2 + i32.const 32 + i32.or + local.set $6 + local.get $6 + i32.const 98 + i32.eq + br_if $case0|1 + local.get $6 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $6 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + i32.const 2 + local.set $radix + br $break|1 + end + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + i32.const 8 + local.set $radix + br $break|1 + end + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + i32.const 16 + local.set $radix + br $break|1 + end + end + local.get $radix + i32.eqz + if + i32.const 10 + local.set $radix + end + end + i32.const 0 + local.set $num + local.get $len + i32.const 1 + i32.sub + local.set $initial + block $while-break|2 + loop $while-continue|2 + local.get $len + local.tee $9 + i32.const 1 + i32.sub + local.set $len + local.get $9 + if + local.get $ptr + i32.load16_u + local.set $code + local.get $code + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if + local.get $code + i32.const 48 + i32.sub + local.set $code + else + local.get $code + i32.const 65 + i32.sub + i32.const 90 + i32.const 65 + i32.sub + i32.le_u + if + local.get $code + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $code + else + local.get $code + i32.const 97 + i32.sub + i32.const 122 + i32.const 97 + i32.sub + i32.le_u + if + local.get $code + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $code + end + end + end + local.get $code + local.get $radix + i32.ge_u + if + local.get $initial + local.get $len + i32.eq + if + i32.const 0 + drop + i32.const 0 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + br $while-break|2 + end + local.get $num + local.get $radix + i32.mul + local.get $code + i32.add + local.set $num + local.get $ptr + i32.const 2 + i32.add + local.set $ptr + br $while-continue|2 + end + end + end + local.get $sign + local.get $num + i32.mul + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/number/I32.parseInt (param $value i32) (param $radix i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $value + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $radix + call $~lib/util/string/strtol + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/util/string/strtol (param $str i32) (param $radix i32) (result i64) + (local $len i32) + (local $ptr i32) + (local $code i32) + (local $sign i64) + (local $6 i32) + (local $num i64) + (local $initial i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $len + local.get $len + i32.eqz + if + i32.const 0 + drop + i64.const 0 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $str + local.set $ptr + local.get $ptr + i32.load16_u + local.set $code + loop $while-continue|0 + local.get $code + call $~lib/util/string/isSpace + if + local.get $ptr + i32.const 2 + i32.add + local.tee $ptr + i32.load16_u + local.set $code + local.get $len + i32.const 1 + i32.sub + local.set $len + br $while-continue|0 + end + end + i64.const 1 + local.set $sign + local.get $code + i32.const 45 + i32.eq + if (result i32) + i32.const 1 + else + local.get $code + i32.const 43 + i32.eq + end + if + local.get $len + i32.const 1 + i32.sub + local.tee $len + i32.eqz + if + i32.const 0 + drop + i64.const 0 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $code + i32.const 45 + i32.eq + if + i64.const -1 + local.set $sign + end + local.get $ptr + i32.const 2 + i32.add + local.tee $ptr + i32.load16_u + local.set $code + end + local.get $radix + if + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 0 + drop + i64.const 0 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $radix + i32.const 16 + i32.eq + if + local.get $len + i32.const 2 + i32.gt_s + if (result i32) + local.get $code + i32.const 48 + i32.eq + else + i32.const 0 + end + if (result i32) + local.get $ptr + i32.load16_u offset=2 + i32.const 32 + i32.or + i32.const 120 + i32.eq + else + i32.const 0 + end + if + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + end + end + else + local.get $code + i32.const 48 + i32.eq + if (result i32) + local.get $len + i32.const 2 + i32.gt_s + else + i32.const 0 + end + if + block $break|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $ptr + i32.load16_u offset=2 + i32.const 32 + i32.or + local.set $6 + local.get $6 + i32.const 98 + i32.eq + br_if $case0|1 + local.get $6 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $6 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + i32.const 2 + local.set $radix + br $break|1 + end + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + i32.const 8 + local.set $radix + br $break|1 + end + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + local.get $len + i32.const 2 + i32.sub + local.set $len + i32.const 16 + local.set $radix + br $break|1 + end + end + local.get $radix + i32.eqz + if + i32.const 10 + local.set $radix + end + end + i64.const 0 + local.set $num + local.get $len + i32.const 1 + i32.sub + local.set $initial + block $while-break|2 + loop $while-continue|2 + local.get $len + local.tee $9 + i32.const 1 + i32.sub + local.set $len + local.get $9 + if + local.get $ptr + i32.load16_u + local.set $code + local.get $code + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if + local.get $code + i32.const 48 + i32.sub + local.set $code + else + local.get $code + i32.const 65 + i32.sub + i32.const 90 + i32.const 65 + i32.sub + i32.le_u + if + local.get $code + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $code + else + local.get $code + i32.const 97 + i32.sub + i32.const 122 + i32.const 97 + i32.sub + i32.le_u + if + local.get $code + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $code + end + end + end + local.get $code + local.get $radix + i32.ge_u + if + local.get $initial + local.get $len + i32.eq + if + i32.const 0 + drop + i64.const 0 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + br $while-break|2 + end + local.get $num + local.get $radix + i64.extend_i32_s + i64.mul + local.get $code + i64.extend_i32_u + i64.add + local.set $num + local.get $ptr + i32.const 2 + i32.add + local.set $ptr + br $while-continue|2 + end + end + end + local.get $sign + local.get $num + i64.mul + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/number/I64.parseInt (param $value i32) (param $radix i32) (result i64) + (local $2 i32) + (local $3 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $value + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $radix + call $~lib/util/string/strtol + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/parseFloat (param $str i32) (result f64) + (local $1 i32) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/strtod + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 688 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/string/String.__ne (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/string/String.__gt (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $rightLength i32) + (local $4 i32) + (local $5 i32) + (local $res i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $left + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + i32.eqz + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $right + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $rightLength + local.get $rightLength + i32.eqz + if + i32.const 1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $left + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 0 + local.get $right + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + local.get $leftLength + local.tee $4 + local.get $rightLength + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $res + local.get $res + if (result i32) + local.get $res + i32.const 0 + i32.gt_s + else + local.get $leftLength + local.get $rightLength + i32.gt_s + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/string/String.__lt (param $left i32) (param $right i32) (result i32) + (local $rightLength i32) + (local $leftLength i32) + (local $4 i32) + (local $5 i32) + (local $res i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $right + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $rightLength + local.get $rightLength + i32.eqz + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $left + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + i32.eqz + if + i32.const 1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $left + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 0 + local.get $right + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + local.get $leftLength + local.tee $4 + local.get $rightLength + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $res + local.get $res + if (result i32) + local.get $res + i32.const 0 + i32.lt_s + else + local.get $leftLength + local.get $rightLength + i32.lt_s + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/string/String.__gte (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__lt + i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/string/String.__lte (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__gt + i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/string/String#repeat (param $this i32) (param $count i32) (result i32) + (local $length i32) + (local $out i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/String#get:length + local.set $length + local.get $count + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $length + i64.extend_i32_s + local.get $count + i64.extend_i32_s + i64.mul + i64.const 1 + i64.const 28 + i64.shl + i64.gt_u + end + if + i32.const 13040 + i32.const 304 + i32.const 334 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $count + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $length + i32.eqz + end + if + i32.const 688 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $count + i32.const 1 + i32.eq + if + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + global.get $~lib/memory/__stack_pointer + local.get $length + local.get $count + i32.mul + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $length + i32.const 1 + i32.shl + local.get $count + call $~lib/memory/memory.repeat + local.get $out + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/string/String#replace (param $this i32) (param $search i32) (param $replacement i32) (result i32) + (local $len i32) + (local $slen i32) + (local $index i32) + (local $rlen i32) + (local $olen i32) + (local $out i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.set $len + local.get $search + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.set $slen + local.get $len + local.get $slen + i32.le_u + if + local.get $len + local.get $slen + i32.lt_u + if (result i32) + local.get $this + else + local.get $replacement + local.get $this + local.get $search + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/string/String.__eq + select + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + end + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + local.get $search + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + call $~lib/string/String#indexOf + local.set $index + local.get $index + i32.const -1 + i32.xor + if + local.get $replacement + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.set $rlen + local.get $len + local.get $slen + i32.sub + local.set $len + local.get $len + local.get $rlen + i32.add + local.set $olen + local.get $olen + if + global.get $~lib/memory/__stack_pointer + local.get $olen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $out + local.get $this + local.get $index + i32.const 1 + i32.shl + memory.copy + local.get $out + local.get $index + i32.const 1 + i32.shl + i32.add + local.get $replacement + local.get $rlen + i32.const 1 + i32.shl + memory.copy + local.get $out + local.get $index + local.get $rlen + i32.add + i32.const 1 + i32.shl + i32.add + local.get $this + local.get $index + local.get $slen + i32.add + i32.const 1 + i32.shl + i32.add + local.get $len + local.get $index + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $out + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + end + end + local.get $this + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/string/String#replaceAll (param $this i32) (param $search i32) (param $replacement i32) (result i32) + (local $thisLen i32) + (local $searchLen i32) + (local $replaceLen i32) + (local $out i32) + (local $offset i32) + (local $i i32) + (local $9 i32) + (local $prev i32) + (local $next i32) + (local $outSize i32) + (local $out|13 i32) + (local $out|14 i32) + (local $offset|15 i32) + (local $outSize|16 i32) + (local $chunk i32) + (local $rest i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + local.get $this + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + call $~lib/string/String#get:length + local.set $thisLen + local.get $search + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + call $~lib/string/String#get:length + local.set $searchLen + local.get $thisLen + local.get $searchLen + i32.le_u + if + local.get $thisLen + local.get $searchLen + i32.lt_u + if (result i32) + local.get $this + else + local.get $replacement + local.get $this + local.get $search + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + local.get $this + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/string/String.__eq + select + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + end + local.get $replacement + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + call $~lib/string/String#get:length + local.set $replaceLen + local.get $searchLen + i32.eqz + if + local.get $replaceLen + i32.eqz + if + local.get $this + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + end + global.get $~lib/memory/__stack_pointer + local.get $thisLen + local.get $thisLen + i32.const 1 + i32.add + local.get $replaceLen + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $out + local.get $replacement + local.get $replaceLen + i32.const 1 + i32.shl + memory.copy + local.get $replaceLen + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $thisLen + i32.lt_u + if + local.get $out + local.get $offset + local.tee $9 + i32.const 1 + i32.add + local.set $offset + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $this + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $out + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $replacement + local.get $replaceLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $replaceLen + i32.add + local.set $offset + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + end + i32.const 0 + local.set $prev + i32.const 0 + local.set $next + local.get $searchLen + local.get $replaceLen + i32.eq + if + local.get $thisLen + i32.const 1 + i32.shl + local.set $outSize + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out|13 + i32.store offset=12 + local.get $out|13 + local.get $this + local.get $outSize + memory.copy + loop $while-continue|1 + local.get $this + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + local.get $search + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + local.get $prev + call $~lib/string/String#indexOf + local.tee $next + i32.const -1 + i32.xor + if + local.get $out|13 + local.get $next + i32.const 1 + i32.shl + i32.add + local.get $replacement + local.get $replaceLen + i32.const 1 + i32.shl + memory.copy + local.get $next + local.get $searchLen + i32.add + local.set $prev + br $while-continue|1 + end + end + local.get $out|13 + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + end + i32.const 0 + local.set $out|14 + i32.const 0 + local.set $offset|15 + local.get $thisLen + local.set $outSize|16 + loop $while-continue|2 + local.get $this + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + local.get $search + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + local.get $prev + call $~lib/string/String#indexOf + local.tee $next + i32.const -1 + i32.xor + if + local.get $out|14 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + call $~lib/string/String.__not + if + global.get $~lib/memory/__stack_pointer + local.get $thisLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out|14 + i32.store offset=16 + end + local.get $next + local.get $prev + i32.sub + local.set $chunk + local.get $offset|15 + local.get $chunk + i32.add + local.get $replaceLen + i32.add + local.get $outSize|16 + i32.gt_u + if + local.get $outSize|16 + i32.const 1 + i32.shl + local.set $outSize|16 + global.get $~lib/memory/__stack_pointer + local.get $out|14 + local.get $outSize|16 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $out|14 + i32.store offset=16 + end + local.get $out|14 + local.get $offset|15 + i32.const 1 + i32.shl + i32.add + local.get $this + local.get $prev + i32.const 1 + i32.shl + i32.add + local.get $chunk + i32.const 1 + i32.shl + memory.copy + local.get $offset|15 + local.get $chunk + i32.add + local.set $offset|15 + local.get $out|14 + local.get $offset|15 + i32.const 1 + i32.shl + i32.add + local.get $replacement + local.get $replaceLen + i32.const 1 + i32.shl + memory.copy + local.get $offset|15 + local.get $replaceLen + i32.add + local.set $offset|15 + local.get $next + local.get $searchLen + i32.add + local.set $prev + br $while-continue|2 + end + end + local.get $out|14 + if + local.get $thisLen + local.get $prev + i32.sub + local.set $rest + local.get $offset|15 + local.get $rest + i32.add + local.get $outSize|16 + i32.gt_u + if + local.get $outSize|16 + i32.const 1 + i32.shl + local.set $outSize|16 + global.get $~lib/memory/__stack_pointer + local.get $out|14 + local.get $outSize|16 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $out|14 + i32.store offset=16 + end + local.get $rest + if + local.get $out|14 + local.get $offset|15 + i32.const 1 + i32.shl + i32.add + local.get $this + local.get $prev + i32.const 1 + i32.shl + i32.add + local.get $rest + i32.const 1 + i32.shl + memory.copy + end + local.get $rest + local.get $offset|15 + i32.add + local.set $rest + local.get $outSize|16 + local.get $rest + i32.gt_u + if + global.get $~lib/memory/__stack_pointer + local.get $out|14 + local.get $rest + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $out|14 + i32.store offset=16 + end + local.get $out|14 + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + end + local.get $this + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $~lib/string/String#slice (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $len 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 $out i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store + local.get $13 + call $~lib/string/String#get:length + local.set $len + local.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $start + local.get $len + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $start + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $start + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $end + local.get $len + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + else + local.get $end + local.tee $10 + local.get $len + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $end + local.get $end + local.get $start + i32.sub + local.set $len + local.get $len + i32.const 0 + i32.le_s + if + i32.const 688 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + end + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $start + i32.const 1 + i32.shl + i32.add + local.get $len + i32.const 1 + i32.shl + memory.copy + local.get $out + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + ) + (func $~lib/string/String#slice@varargs (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $start + local.get $end + call $~lib/string/String#slice + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#substr (param $this i32) (param $start i32) (param $length i32) (result i32) + (local $intStart i32) + (local $end i32) + (local $len i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $size i32) + (local $out i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $start + local.set $intStart + local.get $length + local.set $end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/string/String#get:length + local.set $len + local.get $intStart + i32.const 0 + i32.lt_s + if + local.get $len + local.get $intStart + i32.add + local.tee $6 + i32.const 0 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + local.set $intStart + end + local.get $end + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.tee $10 + local.get $len + local.get $intStart + i32.sub + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $size + local.get $size + i32.const 0 + i32.le_s + if + i32.const 688 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $intStart + i32.const 1 + i32.shl + i32.add + local.get $size + memory.copy + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/string/String#substr@varargs (param $this i32) (param $start i32) (param $length i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $length + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $start + local.get $length + call $~lib/string/String#substr + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#substring (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $finalStart i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $finalEnd i32) + (local $14 i32) + (local $15 i32) + (local $fromPos i32) + (local $17 i32) + (local $18 i32) + (local $toPos i32) + (local $size i32) + (local $out i32) + (local $22 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $22 + global.get $~lib/memory/__stack_pointer + local.get $22 + i32.store + local.get $22 + call $~lib/string/String#get:length + local.set $len + local.get $start + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $finalStart + local.get $end + local.tee $9 + i32.const 0 + local.tee $10 + local.get $9 + local.get $10 + i32.gt_s + select + local.tee $11 + local.get $len + local.tee $12 + local.get $11 + local.get $12 + i32.lt_s + select + local.set $finalEnd + local.get $finalStart + local.tee $14 + local.get $finalEnd + local.tee $15 + local.get $14 + local.get $15 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $fromPos + local.get $finalStart + local.tee $17 + local.get $finalEnd + local.tee $18 + local.get $17 + local.get $18 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $toPos + local.get $toPos + local.get $fromPos + i32.sub + local.set $size + local.get $size + i32.eqz + if + i32.const 688 + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + end + local.get $fromPos + i32.eqz + if (result i32) + local.get $toPos + local.get $len + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 + end + if + local.get $this + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + end + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $fromPos + i32.add + local.get $size + memory.copy + local.get $out + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + ) + (func $~lib/string/String#substring@varargs (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $start + local.get $end + call $~lib/string/String#substring + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 13040 + i32.const 14640 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 240 + i32.const 14640 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<~lib/string/String>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 1 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/string/String#split (param $this i32) (param $separator i32) (param $limit i32) (result i32) + (local $3 i32) + (local $length i32) + (local $sepLen i32) + (local $6 i32) + (local $7 i32) + (local $result i32) + (local $resultStart i32) + (local $i i32) + (local $charStr i32) + (local $result|12 i32) + (local $result|13 i32) + (local $end i32) + (local $start i32) + (local $i|16 i32) + (local $len i32) + (local $out i32) + (local $len|19 i32) + (local $out|20 i32) + (local $21 i32) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + local.get $limit + i32.eqz + if + i32.const 0 + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + end + local.get $separator + i32.const 0 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $3 + i32.const 0 + local.get $this + call $~lib/array/Array<~lib/string/String>#__set + local.get $3 + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + end + local.get $this + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + call $~lib/string/String#get:length + local.set $length + local.get $separator + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + call $~lib/string/String#get:length + local.set $sepLen + local.get $limit + i32.const 0 + i32.lt_s + if + global.get $~lib/builtins/i32.MAX_VALUE + local.set $limit + end + local.get $sepLen + i32.eqz + if + local.get $length + i32.eqz + if + i32.const 0 + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + end + local.get $length + local.tee $6 + local.get $limit + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $length + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result + i32.store offset=8 + local.get $result + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $resultStart + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $charStr + i32.store offset=12 + local.get $charStr + local.get $this + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $resultStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $charStr + i32.store + local.get $result + local.get $charStr + i32.const 1 + call $~lib/rt/itcms/__link + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $result + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + else + local.get $length + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result|12 + i32.store offset=16 + local.get $result|12 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + call $~lib/array/Array<~lib/string/String>#get:dataStart + i32.const 688 + i32.store + local.get $result|12 + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + end + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $result|13 + i32.store offset=20 + i32.const 0 + local.set $end + i32.const 0 + local.set $start + i32.const 0 + local.set $i|16 + loop $while-continue|1 + local.get $this + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + local.get $separator + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=24 + local.get $21 + local.get $start + call $~lib/string/String#indexOf + local.tee $end + i32.const -1 + i32.xor + if + local.get $end + local.get $start + i32.sub + local.set $len + local.get $len + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=28 + local.get $out + local.get $this + local.get $start + i32.const 1 + i32.shl + i32.add + local.get $len + i32.const 1 + i32.shl + memory.copy + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + local.get $out + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=24 + local.get $21 + call $~lib/array/Array<~lib/string/String>#push + drop + else + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + i32.const 688 + call $~lib/array/Array<~lib/string/String>#push + drop + end + local.get $i|16 + i32.const 1 + i32.add + local.tee $i|16 + local.get $limit + i32.eq + if + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + end + local.get $end + local.get $sepLen + i32.add + local.set $start + br $while-continue|1 + end + end + local.get $start + i32.eqz + if + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + local.get $this + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=24 + local.get $21 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + end + local.get $length + local.get $start + i32.sub + local.set $len|19 + local.get $len|19 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $len|19 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out|20 + i32.store offset=32 + local.get $out|20 + local.get $this + local.get $start + i32.const 1 + i32.shl + i32.add + local.get $len|19 + i32.const 1 + i32.shl + memory.copy + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + local.get $out|20 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=24 + local.get $21 + call $~lib/array/Array<~lib/string/String>#push + drop + else + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + local.get $21 + i32.store offset=4 + local.get $21 + i32.const 688 + call $~lib/array/Array<~lib/string/String>#push + drop + end + local.get $result|13 + local.set $21 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $21 + return + ) + (func $~lib/string/String#split@varargs (param $this i32) (param $separator i32) (param $limit i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $separator + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $limit + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $separator + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $limit + call $~lib/string/String#split + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/array/Array<~lib/string/String>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<~lib/string/String>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.ge_u + if + i32.const 240 + i32.const 14640 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 14688 + i32.const 14640 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $start:std/string + (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 f64) + (local $11 f64) + (local $12 f64) + (local $13 f64) + (local $14 f64) + (local $15 f64) + (local $16 f64) + (local $17 f32) + (local $18 f64) + (local $19 i32) + (local $20 f32) + (local $21 i32) + (local $22 f64) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 f64) + (local $28 f64) + (local $29 f64) + (local $30 f64) + (local $31 f64) + (local $32 f64) + (local $33 f64) + (local $34 f64) + (local $35 f64) + (local $36 f64) + (local $37 f64) + (local $38 f64) + (local $39 f64) + (local $40 f64) + (local $41 f64) + (local $42 f64) + (local $43 f64) + (local $44 f64) + (local $45 f64) + (local $46 f64) + (local $47 f64) + (local $48 i32) + (local $49 i32) + (local $50 i32) + (local $51 i32) + (local $52 i32) + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 76 + memory.fill + global.get $std/string/str + i32.const 32 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 144 + i32.const 144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 176 + i32.const 176 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 208 + i32.const 208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/string/String#get:length + i32.const 16 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.const 104 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1 + call $~lib/string/String#codePointAt + i32.const 105 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 464 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 496 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 576 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=8 + local.get $52 + i32.const 15 + call $~lib/string/String#at + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=8 + local.get $52 + i32.const 15 + call $~lib/string/String#charAt + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=8 + local.get $52 + i32.const -1 + call $~lib/string/String#at + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=8 + local.get $52 + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=12 + local.get $52 + call $~lib/string/String#get:length + i32.const 1 + i32.sub + call $~lib/string/String#charAt + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=8 + local.get $52 + call $~lib/string/String#get:length + i32.sub + call $~lib/string/String#at + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 720 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + call $~lib/string/String.__not + i32.eqz + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 752 + call $~lib/string/String.__not + i32.eqz + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + call $~lib/string/String.__not + i32.eqz + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.fromCharCode@varargs + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 65600 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.fromCharCode@varargs + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 54 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.fromCharCode@varargs + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 848 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 65536 + i32.const 54 + i32.add + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.fromCharCode@varargs + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 848 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 55296 + i32.const 57088 + call $~lib/string/String.fromCharCode + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + i32.const 4 + i32.const 912 + call $~lib/rt/__newArray + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + call $~lib/string/String.fromCharCodes + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 976 + call $~lib/rt/__newArray + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + call $~lib/string/String.fromCharCodes + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1008 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 4 + i32.const 1040 + call $~lib/rt/__newArray + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + call $~lib/string/String.fromCharCodes + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/string/String.fromCodePoint + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 54 + call $~lib/string/String.fromCodePoint + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 848 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 119558 + call $~lib/string/String.fromCodePoint + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1152 + i32.const 0 + call $~lib/string/String#startsWith + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1184 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#endsWith@varargs + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1216 + i32.const 0 + call $~lib/string/String#includes + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=8 + local.get $52 + i32.const 0 + i32.const 1248 + call $~lib/string/String#padStart + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=8 + local.get $52 + i32.const 15 + i32.const 1248 + call $~lib/string/String#padStart + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 3 + i32.const 1248 + call $~lib/string/String#padStart + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1280 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 10 + i32.const 688 + call $~lib/string/String#padStart + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 45 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 100 + i32.const 688 + call $~lib/string/String#padStart + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 5 + i32.const 1248 + call $~lib/string/String#padStart + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 6 + i32.const 1376 + call $~lib/string/String#padStart + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 8 + i32.const 1376 + call $~lib/string/String#padStart + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 49 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=8 + local.get $52 + i32.const 0 + i32.const 1248 + call $~lib/string/String#padEnd + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=8 + local.get $52 + i32.const 15 + i32.const 1248 + call $~lib/string/String#padEnd + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 52 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 3 + i32.const 1248 + call $~lib/string/String#padEnd + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1280 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 10 + i32.const 688 + call $~lib/string/String#padEnd + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 100 + i32.const 688 + call $~lib/string/String#padEnd + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 55 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 5 + i32.const 1248 + call $~lib/string/String#padEnd + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 6 + i32.const 1312 + call $~lib/string/String#padEnd + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 57 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 8 + i32.const 1312 + call $~lib/string/String#padEnd + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 58 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + i32.const 0 + call $~lib/string/String#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 1152 + i32.const 0 + call $~lib/string/String#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 784 + i32.const 0 + call $~lib/string/String#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/string/String#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + i32.const 0 + call $~lib/string/String#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1600 + i32.const 0 + call $~lib/string/String#indexOf + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 65 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1632 + i32.const 0 + call $~lib/string/String#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1600 + i32.const 2 + call $~lib/string/String#indexOf + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1600 + i32.const 3 + call $~lib/string/String#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1664 + i32.const -1 + call $~lib/string/String#indexOf + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 71 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 1152 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#lastIndexOf@varargs + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/string/String#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1600 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#lastIndexOf@varargs + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1632 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 75 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1696 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#lastIndexOf@varargs + i32.const 15 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 76 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1600 + i32.const 2 + call $~lib/string/String#lastIndexOf + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1600 + i32.const 3 + call $~lib/string/String#lastIndexOf + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1664 + i32.const -1 + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1728 + i32.const 0 + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 80 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1152 + i32.const 0 + call $~lib/string/String#lastIndexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 81 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + call $~lib/string/String#localeCompare + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 688 + call $~lib/string/String#localeCompare + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 784 + call $~lib/string/String#localeCompare + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 85 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1760 + i32.const 1760 + call $~lib/string/String#localeCompare + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 86 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 1792 + call $~lib/string/String#localeCompare + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 1824 + call $~lib/string/String#localeCompare + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 88 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1792 + i32.const 1312 + call $~lib/string/String#localeCompare + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1856 + i32.const 1312 + call $~lib/string/String#localeCompare + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1888 + i32.const 1312 + call $~lib/string/String#localeCompare + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 91 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1856 + i32.const 1920 + call $~lib/string/String#localeCompare + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 1888 + call $~lib/string/String#localeCompare + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1920 + i32.const 1856 + call $~lib/string/String#localeCompare + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 1280 + call $~lib/string/String#localeCompare + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 752 + i32.const 688 + call $~lib/string/String#localeCompare + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + call $~lib/string/String#trimStart + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 98 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1952 + call $~lib/string/String#trimStart + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1952 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 99 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1984 + call $~lib/string/String#trimStart + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + call $~lib/string/String#trimEnd + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1952 + call $~lib/string/String#trimEnd + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1952 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 103 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1984 + call $~lib/string/String#trimEnd + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2080 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 104 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + call $~lib/string/String#trim + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1952 + call $~lib/string/String#trim + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1952 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1984 + call $~lib/string/String#trim + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $~lib/builtins/bool.parse|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 2128 + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/util/string/strtob + br $~lib/builtins/bool.parse|inlined.0 + end + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $~lib/builtins/bool.parse|inlined.1 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 2176 + local.tee $4 + i32.store offset=20 + local.get $4 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/util/string/strtob + br $~lib/builtins/bool.parse|inlined.1 + end + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $~lib/builtins/bool.parse|inlined.2 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 2224 + local.tee $5 + i32.store offset=24 + local.get $5 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/util/string/strtob + br $~lib/builtins/bool.parse|inlined.2 + end + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $~lib/builtins/bool.parse|inlined.3 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 688 + local.tee $6 + i32.store offset=28 + local.get $6 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/util/string/strtob + br $~lib/builtins/bool.parse|inlined.3 + end + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $~lib/builtins/bool.parse|inlined.4 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 2272 + local.tee $7 + i32.store offset=32 + local.get $7 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/util/string/strtob + br $~lib/builtins/bool.parse|inlined.4 + end + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $~lib/builtins/bool.parse|inlined.5 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 2304 + local.tee $8 + i32.store offset=36 + local.get $8 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/util/string/strtob + br $~lib/builtins/bool.parse|inlined.5 + end + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $~lib/builtins/bool.parse|inlined.6 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 2336 + local.tee $9 + i32.store offset=40 + local.get $9 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/util/string/strtob + br $~lib/builtins/bool.parse|inlined.6 + end + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2368 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2400 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2432 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2464 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 122 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2496 + i32.const 0 + call $~lib/string/parseInt + f64.const 5 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2528 + i32.const 0 + call $~lib/string/parseInt + f64.const 455 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2560 + i32.const 0 + call $~lib/string/parseInt + f64.const 3855 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2592 + i32.const 0 + call $~lib/string/parseInt + f64.const 3855 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2624 + i32.const 0 + call $~lib/string/parseInt + f64.const 11 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2656 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2688 + i32.const 0 + call $~lib/string/parseInt + f64.const -123 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2720 + i32.const 0 + call $~lib/string/parseInt + f64.const 123 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 130 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2752 + i32.const 0 + call $~lib/string/parseInt + f64.const -12 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2368 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2784 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 133 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2816 + i32.const 16 + call $~lib/string/parseInt + f64.const 2833 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 134 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2848 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 135 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2880 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 136 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2912 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $~lib/math/NativeMath.signbit|inlined.0 (result i32) + i32.const 2944 + i32.const 0 + call $~lib/string/parseInt + local.set $10 + local.get $10 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + br $~lib/math/NativeMath.signbit|inlined.0 + end + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 138 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2976 + i32.const 0 + call $~lib/string/parseInt + i32.const 3024 + i32.const 16 + call $~lib/string/parseInt + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 139 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3056 + i32.const 0 + call $~lib/string/parseInt + f64.const 36893488147419103232 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3056 + i32.const 13 + call $~lib/string/parseInt + f64.const 5135857308667095285760 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 141 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3120 + i32.const 10 + call $~lib/string/parseInt + f64.const -1.e+24 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3200 + i32.const 16 + call $~lib/string/parseInt + f64.const 75557863725914323419136 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3264 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3296 + i32.const 0 + call $~lib/string/parseInt + f64.const 2 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 145 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3344 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 147 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3376 + i32.const 0 + call $~lib/string/parseInt + f64.const 2 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3424 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 149 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3456 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 150 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3488 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 0 + call $~lib/string/parseInt + local.tee $11 + local.get $11 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3536 + i32.const 0 + call $~lib/string/parseInt + local.tee $12 + local.get $12 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3568 + i32.const 0 + call $~lib/string/parseInt + local.tee $13 + local.get $13 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1376 + i32.const 37 + call $~lib/string/parseInt + local.tee $14 + local.get $14 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3600 + i32.const 0 + call $~lib/string/parseInt + local.tee $15 + local.get $15 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3632 + i32.const 0 + call $~lib/string/parseInt + local.tee $16 + local.get $16 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3632 + call $~lib/number/F32.parseFloat + local.tee $17 + local.get $17 + f32.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3632 + call $~lib/number/F64.parseFloat + local.tee $18 + local.get $18 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 159 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $~lib/builtins/f32.parse|inlined.0 (result f32) + global.get $~lib/memory/__stack_pointer + i32.const 3632 + local.tee $19 + i32.store offset=44 + local.get $19 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/util/string/strtod + f32.demote_f64 + br $~lib/builtins/f32.parse|inlined.0 + end + local.tee $20 + local.get $20 + f32.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $~lib/builtins/f64.parse|inlined.0 (result f64) + global.get $~lib/memory/__stack_pointer + i32.const 3632 + local.tee $21 + i32.store offset=48 + local.get $21 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/util/string/strtod + br $~lib/builtins/f64.parse|inlined.0 + end + local.tee $22 + local.get $22 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3856 + i32.const 0 + call $~lib/number/I32.parseInt + global.get $~lib/number/I32.MAX_VALUE + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $~lib/builtins/i32.parse|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 3856 + local.tee $23 + i32.store offset=52 + i32.const 0 + local.set $24 + local.get $23 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + local.get $24 + call $~lib/util/string/strtol + br $~lib/builtins/i32.parse|inlined.0 + end + global.get $~lib/number/I32.MAX_VALUE + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 164 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3904 + i32.const 0 + call $~lib/number/I64.parseInt + global.get $~lib/number/I64.MAX_VALUE + i64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 165 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $~lib/builtins/i64.parse|inlined.0 (result i64) + global.get $~lib/memory/__stack_pointer + i32.const 3904 + local.tee $25 + i32.store offset=56 + i32.const 0 + local.set $26 + local.get $25 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + local.get $26 + call $~lib/util/string/strtol + br $~lib/builtins/i64.parse|inlined.0 + end + global.get $~lib/number/I64.MAX_VALUE + i64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2368 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 169 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2432 + call $~lib/string/parseFloat + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 170 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3968 + call $~lib/string/parseFloat + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 171 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4000 + call $~lib/string/parseFloat + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 172 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4032 + call $~lib/string/parseFloat + f64.const 1e-05 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 173 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4064 + call $~lib/string/parseFloat + f64.const -1e-05 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 174 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4096 + call $~lib/string/parseFloat + f64.const -3e-23 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4144 + call $~lib/string/parseFloat + f64.const 3e21 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 176 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4192 + call $~lib/string/parseFloat + f64.const 0.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4224 + call $~lib/string/parseFloat + f64.const 0.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 178 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4256 + call $~lib/string/parseFloat + f64.const 0.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 179 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4288 + call $~lib/string/parseFloat + f64.const 0.25 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 180 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4320 + call $~lib/string/parseFloat + f64.const 1e3 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4352 + call $~lib/string/parseFloat + f64.const 1e-10 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 182 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4400 + call $~lib/string/parseFloat + f64.const 1e-30 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4448 + call $~lib/string/parseFloat + f64.const 1e-323 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 184 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4496 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 185 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4544 + call $~lib/string/parseFloat + f64.const 1.e+308 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 186 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4576 + call $~lib/string/parseFloat + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + call $~lib/string/parseFloat + local.tee $27 + local.get $27 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 188 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4608 + call $~lib/string/parseFloat + f64.const 0.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 191 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4656 + call $~lib/string/parseFloat + f64.const 1e-10 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 192 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4704 + call $~lib/string/parseFloat + f64.const 10 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4752 + call $~lib/string/parseFloat + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 194 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4784 + call $~lib/string/parseFloat + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 195 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4816 + call $~lib/string/parseFloat + f64.const 10 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 196 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4864 + call $~lib/string/parseFloat + f64.const 123456789 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 197 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4912 + call $~lib/string/parseFloat + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 198 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4960 + call $~lib/string/parseFloat + f64.const 1e-60 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4992 + call $~lib/string/parseFloat + f64.const 1.e+60 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 201 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5024 + call $~lib/string/parseFloat + f64.const 123.4 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 204 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5056 + call $~lib/string/parseFloat + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 205 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5088 + call $~lib/string/parseFloat + f64.const -1.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 206 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5136 + call $~lib/string/parseFloat + f64.const 10 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 207 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5184 + call $~lib/string/parseFloat + f64.const 10 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 208 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5232 + call $~lib/string/parseFloat + f64.const 0.022 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5280 + call $~lib/string/parseFloat + f64.const 11 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 210 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2784 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 211 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5312 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 212 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5344 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 213 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5376 + call $~lib/string/parseFloat + f64.const 1.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 214 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5408 + call $~lib/string/parseFloat + f64.const -1.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 215 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5440 + call $~lib/string/parseFloat + f64.const -1.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5472 + call $~lib/string/parseFloat + f64.const -1.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 217 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5504 + call $~lib/string/parseFloat + f64.const -1.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 218 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5536 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5568 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 220 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5600 + call $~lib/string/parseFloat + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 221 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5632 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 222 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5664 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 223 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5696 + call $~lib/string/parseFloat + f64.const 10 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 224 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5728 + call $~lib/string/parseFloat + f64.const 10 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 225 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5776 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 226 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5808 + call $~lib/string/parseFloat + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 227 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5840 + call $~lib/string/parseFloat + f64.const 0.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 228 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5872 + call $~lib/string/parseFloat + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5904 + call $~lib/string/parseFloat + f64.const 10 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 230 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5936 + call $~lib/string/parseFloat + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 231 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5968 + call $~lib/string/parseFloat + f64.const 0.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 232 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6000 + call $~lib/string/parseFloat + f64.const 0.01 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 233 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6048 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 234 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6080 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 235 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6112 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 236 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6144 + call $~lib/string/parseFloat + f64.const 0.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6176 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 238 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6208 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 239 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6240 + call $~lib/string/parseFloat + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 240 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6272 + call $~lib/string/parseFloat + f64.const 0.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 241 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6304 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 242 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6336 + call $~lib/string/parseFloat + f64.const 0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 243 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6368 + call $~lib/string/parseFloat + f64.const -0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 244 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6400 + call $~lib/string/parseFloat + f64.const 0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 245 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2944 + call $~lib/string/parseFloat + f64.const -0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 246 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6432 + call $~lib/string/parseFloat + f64.const -0 + call $~lib/object/Object.is + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 247 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3568 + call $~lib/string/parseFloat + local.tee $28 + local.get $28 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 248 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3536 + call $~lib/string/parseFloat + local.tee $29 + local.get $29 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 249 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6480 + call $~lib/string/parseFloat + local.tee $30 + local.get $30 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 250 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6512 + call $~lib/string/parseFloat + local.tee $31 + local.get $31 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 251 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6544 + call $~lib/string/parseFloat + local.tee $32 + local.get $32 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 252 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6576 + call $~lib/string/parseFloat + local.tee $33 + local.get $33 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 253 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6608 + call $~lib/string/parseFloat + local.tee $34 + local.get $34 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 254 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6640 + call $~lib/string/parseFloat + local.tee $35 + local.get $35 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 255 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6672 + call $~lib/string/parseFloat + local.tee $36 + local.get $36 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 256 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6704 + call $~lib/string/parseFloat + local.tee $37 + local.get $37 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6736 + call $~lib/string/parseFloat + local.tee $38 + local.get $38 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 258 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6768 + call $~lib/string/parseFloat + local.tee $39 + local.get $39 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 259 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6800 + call $~lib/string/parseFloat + local.tee $40 + local.get $40 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 260 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6832 + call $~lib/string/parseFloat + local.tee $41 + local.get $41 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 261 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6864 + call $~lib/string/parseFloat + local.tee $42 + local.get $42 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 262 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + call $~lib/string/parseFloat + local.tee $43 + local.get $43 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 263 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6896 + call $~lib/string/parseFloat + f64.const 1e22 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 264 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6928 + call $~lib/string/parseFloat + f64.const 1e-22 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 265 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6960 + call $~lib/string/parseFloat + f64.const 1.e+23 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 266 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6992 + call $~lib/string/parseFloat + f64.const 1e-23 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 267 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7024 + call $~lib/string/parseFloat + f64.const 1.e+37 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 268 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7056 + call $~lib/string/parseFloat + f64.const 1e-37 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 269 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7088 + call $~lib/string/parseFloat + f64.const 1.e+38 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 270 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7120 + call $~lib/string/parseFloat + f64.const 1e-38 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 271 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7152 + call $~lib/string/parseFloat + global.get $~lib/builtins/f64.EPSILON + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 272 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7216 + call $~lib/string/parseFloat + global.get $~lib/builtins/f64.MAX_VALUE + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 273 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7296 + call $~lib/string/parseFloat + global.get $~lib/builtins/f64.MIN_VALUE + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 274 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7328 + call $~lib/string/parseFloat + f64.const 1.e+308 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 275 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7376 + call $~lib/string/parseFloat + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 276 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7520 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 277 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7568 + call $~lib/string/parseFloat + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 278 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7616 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 279 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7664 + call $~lib/string/parseFloat + f64.const inf + f64.neg + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 280 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7712 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 281 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7760 + call $~lib/string/parseFloat + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 282 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7808 + call $~lib/string/parseFloat + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 283 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7840 + call $~lib/string/parseFloat + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 284 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7888 + call $~lib/string/parseFloat + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 285 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7936 + call $~lib/string/parseFloat + f64.const inf + f64.neg + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 286 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7984 + call $~lib/string/parseFloat + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 287 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8032 + call $~lib/string/parseFloat + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8080 + call $~lib/string/parseFloat + local.tee $44 + local.get $44 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 289 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8112 + call $~lib/string/parseFloat + local.tee $45 + local.get $45 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 290 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8160 + call $~lib/string/parseFloat + local.tee $46 + local.get $46 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 291 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8208 + call $~lib/string/parseFloat + f64.const 0 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 295 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8400 + call $~lib/string/parseFloat + global.get $std/string/Ox1p_1073 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 308 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8592 + call $~lib/string/parseFloat + global.get $std/string/Ox1_0000000000001p_1022 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 312 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8784 + i32.const 8944 + call $~lib/string/String.__concat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=12 + local.get $52 + i32.const 9104 + call $~lib/string/String.__concat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=8 + local.get $52 + i32.const 9264 + call $~lib/string/String.__concat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 9424 + call $~lib/string/String.__concat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/string/parseFloat + global.get $~lib/builtins/f64.MAX_VALUE + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 315 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 9584 + call $~lib/string/parseFloat + f64.const 9.753531888799502e-104 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 333 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 9696 + call $~lib/string/parseFloat + f64.const 0.5961860348131807 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 334 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 9808 + call $~lib/string/parseFloat + f64.const 0.18150131692180388 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 335 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 9920 + call $~lib/string/parseFloat + f64.const 0.42070823575344535 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 336 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10032 + call $~lib/string/parseFloat + f64.const 0.6654686306516261 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 337 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10144 + call $~lib/string/parseFloat + f64.const 0.6101852922970868 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 338 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10256 + call $~lib/string/parseFloat + f64.const 0.7696695208236968 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 339 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10368 + call $~lib/string/parseFloat + f64.const 0.25050653222286823 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 340 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10480 + call $~lib/string/parseFloat + f64.const 0.2740037230228005 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 341 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10592 + call $~lib/string/parseFloat + f64.const 0.20723093500497428 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 342 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10704 + call $~lib/string/parseFloat + f64.const 7.900280238081605 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 343 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10816 + call $~lib/string/parseFloat + f64.const 98.22860653737297 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 344 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10928 + call $~lib/string/parseFloat + f64.const 746.894972319037 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 345 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11040 + call $~lib/string/parseFloat + f64.const 1630.2683202827284 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 346 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11152 + call $~lib/string/parseFloat + f64.const 46371.68629719171 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 347 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11264 + call $~lib/string/parseFloat + f64.const 653780.5944497711 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 348 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11376 + call $~lib/string/parseFloat + f64.const 234632.43565024371 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 349 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11488 + call $~lib/string/parseFloat + f64.const 97094817.16420048 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 350 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11600 + call $~lib/string/parseFloat + f64.const 499690852.20518744 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 351 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11712 + call $~lib/string/parseFloat + f64.const 7925201200557245595648 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 352 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11824 + call $~lib/string/parseFloat + f64.const 6096564585983177528398588e5 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 353 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11936 + call $~lib/string/parseFloat + f64.const 4800416117477028695992383e42 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 354 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12048 + call $~lib/string/parseFloat + f64.const 8524829079817968137287277e80 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 355 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12160 + call $~lib/string/parseFloat + f64.const 3271239291709782092398754e243 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 356 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12272 + call $~lib/string/parseFloat + local.tee $47 + local.get $47 + f64.ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 359 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12304 + call $~lib/string/parseFloat + f64.const 0.1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 360 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 784 + i32.const 12336 + call $~lib/string/String.__concat + local.tee $48 + i32.store offset=60 + local.get $48 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 364 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $48 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 365 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 367 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/nullStr + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + global.get $std/string/nullStr + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 371 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/nullStr + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 373 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 12336 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 375 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 376 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12400 + i32.const 12432 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 378 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12400 + i32.const 12400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 379 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12464 + i32.const 12496 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 381 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12528 + i32.const 12560 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 383 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12592 + i32.const 12592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 384 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12592 + i32.const 12640 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 386 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12688 + i32.const 12736 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 388 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12336 + i32.const 784 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 390 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12784 + i32.const 784 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 391 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12784 + i32.const 12816 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 392 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12784 + i32.const 12368 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 393 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12784 + i32.const 12368 + call $~lib/string/String.__lt + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 394 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 688 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 396 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 1312 + call $~lib/string/String.__lt + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 397 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 688 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 398 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 1312 + call $~lib/string/String.__lte + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 399 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 688 + call $~lib/string/String.__lt + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 400 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 1312 + call $~lib/string/String.__gt + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 401 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + call $~lib/string/String.__lt + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 402 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + call $~lib/string/String.__gt + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 403 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 404 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + call $~lib/string/String.__lte + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 405 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2432 + i32.const 12848 + call $~lib/string/String.__lt + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 407 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12848 + i32.const 2432 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 408 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12880 + i32.const 12848 + call $~lib/string/String.__lt + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 409 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12848 + i32.const 12880 + call $~lib/string/String.__gt + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 410 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12880 + i32.const 12848 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 411 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12848 + i32.const 12880 + call $~lib/string/String.__lt + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 412 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12880 + i32.const 12880 + call $~lib/string/String.__lt + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 413 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12880 + i32.const 12880 + call $~lib/string/String.__gt + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 414 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12880 + i32.const 12880 + call $~lib/string/String.__lte + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 415 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12880 + i32.const 12880 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 416 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12848 + i32.const 12912 + call $~lib/string/String.__gte + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 417 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12912 + i32.const 12848 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 418 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12848 + i32.const 12912 + call $~lib/string/String.__lte + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 419 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2432 + i32.const 2432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 420 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12880 + i32.const 12880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 421 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1376 + i32.const 1376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 422 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1376 + i32.const 12944 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 424 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12976 + i32.const 12976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 425 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13008 + i32.const 12976 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 427 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 65377 + call $~lib/string/String.fromCodePoint + local.tee $49 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 55296 + call $~lib/string/String.fromCodePoint + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 56322 + call $~lib/string/String.fromCodePoint + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + call $~lib/string/String.__concat + local.tee $50 + i32.store offset=68 + local.get $49 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + local.get $50 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 432 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1376 + call $~lib/string/String#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 435 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 100 + call $~lib/string/String#repeat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 437 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 0 + call $~lib/string/String#repeat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 438 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 1 + call $~lib/string/String#repeat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 439 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 2 + call $~lib/string/String#repeat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 440 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 3 + call $~lib/string/String#repeat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 441 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12368 + i32.const 4 + call $~lib/string/String#repeat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 442 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 5 + call $~lib/string/String#repeat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 443 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 6 + call $~lib/string/String#repeat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13200 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 444 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 784 + i32.const 7 + call $~lib/string/String#repeat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 445 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + i32.const 688 + call $~lib/string/String#replace + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 447 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + i32.const 3568 + call $~lib/string/String#replace + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 3568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 448 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3568 + i32.const 3568 + i32.const 688 + call $~lib/string/String#replace + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 449 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3568 + i32.const 688 + i32.const 688 + call $~lib/string/String#replace + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 3568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 450 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 3536 + i32.const 3568 + call $~lib/string/String#replace + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 451 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 1312 + i32.const 3568 + call $~lib/string/String#replace + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 3568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 452 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 1888 + i32.const 3568 + call $~lib/string/String#replace + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 453 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 12368 + i32.const 12368 + call $~lib/string/String#replace + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 454 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13280 + i32.const 3536 + i32.const 3568 + call $~lib/string/String#replace + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 455 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 688 + i32.const 3568 + call $~lib/string/String#replace + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 456 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13376 + i32.const 13408 + i32.const 3568 + call $~lib/string/String#replace + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 457 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 13440 + i32.const 13472 + call $~lib/string/String#replace + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 458 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 13440 + i32.const 688 + call $~lib/string/String#replace + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 459 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + i32.const 1312 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 461 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 3536 + i32.const 3568 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 462 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1520 + i32.const 1312 + i32.const 3568 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 464 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13536 + i32.const 1312 + i32.const 3568 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 465 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1520 + i32.const 12368 + i32.const 12368 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 466 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13616 + i32.const 784 + i32.const 13584 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1520 + i32.const 12368 + i32.const 13472 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 468 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13744 + i32.const 13776 + i32.const 13472 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 469 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 1888 + i32.const 3568 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 470 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1888 + i32.const 13840 + i32.const 13472 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 471 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 13872 + i32.const 3568 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 472 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12368 + i32.const 12368 + i32.const 3568 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 3568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 473 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13280 + i32.const 3536 + i32.const 3568 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 474 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + i32.const 688 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 476 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + i32.const 3568 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 3568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 477 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3568 + i32.const 3568 + i32.const 688 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 478 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3568 + i32.const 688 + i32.const 688 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 3568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 479 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 1312 + i32.const 3536 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 3536 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 480 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 1792 + i32.const 3536 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 481 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 688 + i32.const 3568 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 482 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1312 + i32.const 688 + i32.const 688 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 483 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14016 + i32.const 784 + i32.const 14048 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14080 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 486 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12368 + i32.const 12368 + i32.const 14128 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 487 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13088 + i32.const 784 + i32.const 14160 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 488 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13088 + i32.const 12816 + i32.const 14048 + call $~lib/string/String#replaceAll + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 489 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14272 + global.set $std/string/str + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#slice@varargs + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 493 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#slice@varargs + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 494 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const -5 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#slice@varargs + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 495 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 2 + i32.const 7 + call $~lib/string/String#slice + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14384 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 496 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const -11 + i32.const -6 + call $~lib/string/String#slice + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 497 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 4 + i32.const 3 + call $~lib/string/String#slice + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 498 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + i32.const -1 + call $~lib/string/String#slice + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14448 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 499 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#substr@varargs + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 501 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#substr@varargs + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 502 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const -5 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#substr@varargs + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 503 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 2 + i32.const 7 + call $~lib/string/String#substr + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 504 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const -11 + i32.const -6 + call $~lib/string/String#substr + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 505 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 4 + i32.const 3 + call $~lib/string/String#substr + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 506 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + i32.const -1 + call $~lib/string/String#substr + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 507 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + i32.const 100 + call $~lib/string/String#substr + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 508 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 4 + i32.const 4 + call $~lib/string/String#substr + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14576 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 509 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 4 + i32.const -3 + call $~lib/string/String#substr + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 510 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#substring@varargs + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 512 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#substring@varargs + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 513 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const -5 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#substring@varargs + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 514 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 2 + i32.const 7 + call $~lib/string/String#substring + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14384 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 515 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const -11 + i32.const -6 + call $~lib/string/String#substring + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 516 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 4 + i32.const 3 + call $~lib/string/String#substring + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 517 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + i32.const -1 + call $~lib/string/String#substring + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 518 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + i32.const 100 + call $~lib/string/String#substring + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 519 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 4 + i32.const 4 + call $~lib/string/String#substring + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 520 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 4 + i32.const -3 + call $~lib/string/String#substring + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 521 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 688 + i32.const 0 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 527 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 688 + i32.const 688 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 529 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 688 + i32.const 1600 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 531 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14816 + i32.const 6608 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 14816 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 533 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14816 + i32.const 1600 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 3 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12336 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13440 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 535 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14848 + i32.const 14896 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 3 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12336 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13440 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 537 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14928 + i32.const 1600 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 4 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12336 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13440 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 539 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14960 + i32.const 1600 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 4 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12336 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13440 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14992 + i32.const 1600 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 4 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12336 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13440 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 543 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1312 + i32.const 688 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 3 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12336 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13440 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 545 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1312 + i32.const 688 + i32.const 0 + call $~lib/string/String#split + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 547 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1312 + i32.const 688 + i32.const 1 + call $~lib/string/String#split + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 549 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14816 + i32.const 1600 + i32.const 1 + call $~lib/string/String#split + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 551 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1312 + i32.const 688 + i32.const 4 + call $~lib/string/String#split + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 3 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12336 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13440 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 553 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1312 + i32.const 688 + i32.const -1 + call $~lib/string/String#split + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 3 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12336 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13440 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 555 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14816 + i32.const 1600 + i32.const -1 + call $~lib/string/String#split + local.tee $51 + i32.store offset=72 + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 3 + i32.eq + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 784 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12336 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $51 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store offset=4 + local.get $52 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13440 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 562 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 563 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 16768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 564 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 16800 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 565 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 123 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 566 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1000 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 16832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 567 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1234 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 568 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12345 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 16864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 569 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 123456 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 16896 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 570 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1111111 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 16928 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 571 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1234567 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 16976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 572 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12345678 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17024 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 573 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 123456789 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 574 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2147483646 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 575 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2147483647 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 576 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483648 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 577 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 578 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/i8.MIN_VALUE + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 580 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/i16.MIN_VALUE + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17328 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 581 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/i32.MIN_VALUE + i32.const 10 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 582 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 584 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1000 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2147483647 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 586 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483648 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 587 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/u32.MAX_VALUE + i32.const 10 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 588 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 592 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 593 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 16768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 594 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 595 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 123 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 596 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1234 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12345 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 598 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 123456 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 599 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1111111 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 600 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1234567 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 601 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12345678 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 602 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 123456789 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 603 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2147483646 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 604 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2147483647 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 605 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483648 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 606 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 607 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 609 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -4096 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 16832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 610 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2147483647 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 611 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483647 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17952 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 612 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -268435455 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18000 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 613 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483648 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 614 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483648 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 615 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 619 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 620 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 621 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 622 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 623 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 29 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18160 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 624 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 59 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 625 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4095 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18224 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 626 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 33554431 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 627 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -12 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 628 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -4 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18448 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 629 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 630 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 631 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2047 + i32.const 2 + call $~lib/util/number/itoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 633 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 3 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 637 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 4 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18848 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 638 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 5 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 639 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 8 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 640 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 11 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19008 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 641 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 15 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 642 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 17 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 643 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 21 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 644 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 27 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19200 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 645 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 32 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 646 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 36 + call $~lib/util/number/utoa32 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 647 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 651 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 12 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 16800 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 652 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 123 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 1376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 653 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1234 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 12976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 654 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 12345 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 16864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 655 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 123456 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 16896 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 656 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1234567 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 16976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 657 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 99999999 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 658 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 100000000 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 659 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967295 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 660 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967297 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 661 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 68719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 662 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19536 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 663 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 8687194767350 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 664 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 86871947673501 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 665 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 666 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 667 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 19999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 668 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 129999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19872 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 669 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1239999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 670 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/u64.MAX_VALUE + i32.const 10 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20000 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 671 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 673 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1234 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20064 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 674 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967295 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 675 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967297 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 676 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4294967295 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 677 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 68719476735 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 19488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 678 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -68719476735 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 679 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -868719476735 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 680 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -999868719476735 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 681 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -19999868719476735 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20304 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 682 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/i64.MAX_VALUE + i32.const 10 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 683 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/i64.MIN_VALUE + i32.const 10 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 684 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 688 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 689 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 12 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 13440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 690 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1234 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 691 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1111111 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 17616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 692 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 8589934591 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 693 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 5942249508321 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 694 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 76310993685985 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 695 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 920735923817967 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 696 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9927935178558959 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 697 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 81985529216486895 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 698 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1311768467463790320 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20800 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 699 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9223372036854775807 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 700 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20928 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 701 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9223372036854775807 + i32.const 16 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 20992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 703 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9223372036854775808 + i32.const 16 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 21056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 704 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9223372036854775808 + i32.const 16 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 21056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 705 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 709 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 2432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 710 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 7 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 711 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 14 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 712 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 59 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 713 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4095 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18224 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 714 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967295 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 18640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 715 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 562949953421311 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 21120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 716 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 21248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 717 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -8589934591 + i32.const 2 + call $~lib/util/number/itoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 21408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 719 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 3 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 21504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 723 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 4 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 21616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 724 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 5 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 21712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 725 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 8 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 21792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 726 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 11 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 21856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 727 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 15 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 21920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 728 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 17 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 21984 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 729 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 21 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 22048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 730 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 27 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 22112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 731 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 32 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 22160 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 732 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 36 + call $~lib/util/number/utoa64 + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 22208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 733 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 22256 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 736 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 22256 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 737 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 6672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 738 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 22288 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 739 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + f64.neg + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 7936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 740 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.EPSILON + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 7152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 741 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.EPSILON + f64.neg + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 23312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 742 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_VALUE + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 7216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 743 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f64.MAX_VALUE + f64.neg + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 23376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 744 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.EPSILON + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 23456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 745 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.EPSILON + f32.neg + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 23504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 746 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MAX_VALUE + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 23552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 747 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/builtins/f32.MAX_VALUE + f32.neg + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 23600 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 748 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4185580496821356722454785e274 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 23648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 749 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 23712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 750 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.940656e-318 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 23792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 751 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9060801153433600 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 23840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 752 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4708356024711512064 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 23904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 753 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9409340012568248320 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 23968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 754 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 7296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 755 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 757 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.1 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 4256 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 758 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24064 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 759 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.1 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 760 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e6 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 762 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-06 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24176 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 763 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e6 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24224 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 764 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-06 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 765 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e7 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 766 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-07 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 767 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.e+308 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 4544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 769 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.e+308 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 770 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 22288 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 771 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 7936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 772 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-308 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24448 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 773 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-308 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24480 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 774 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-323 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 775 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-323 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 776 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 22256 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 777 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -24 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 779 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.2312145673456234e-08 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 780 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 555555555.5555556 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24720 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 781 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999999999999999 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 782 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 783 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 12.34 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24848 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 784 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + f64.const 3 + f64.div + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 785 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1234e17 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 24944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 786 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1234e18 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25024 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 787 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.71828 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 788 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.0271828 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 789 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 271.828 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 790 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1e+128 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 791 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1e-64 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 792 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.000035689 + call $~lib/util/number/dtoa + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 793 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 25360 + i32.const 25392 + call $~lib/string/String#concat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 820 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 25472 + call $~lib/string/String#concat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 821 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 25472 + i32.const 688 + call $~lib/string/String#concat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 25472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 822 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 688 + i32.const 688 + call $~lib/string/String#concat + local.set $52 + global.get $~lib/memory/__stack_pointer + local.get $52 + i32.store + local.get $52 + i32.const 688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 823 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 25504 + i32.const 25504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 831 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 25504 + i32.const 25504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 832 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 25536 + i32.const 25536 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 833 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 25568 + i32.const 25568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 834 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/string/str + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.fromCharCode (param $unit i32) (param $surr i32) (result i32) + (local $hasSur i32) + (local $out i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $surr + i32.const 0 + i32.gt_s + local.set $hasSur + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $hasSur + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $unit + i32.store16 + local.get $hasSur + if + local.get $out + local.get $surr + i32.store16 offset=2 + end + local.get $out + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/string/String.fromCodePoint (param $code i32) (result i32) + (local $hasSur i32) + (local $out i32) + (local $hi i32) + (local $lo i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $code + i32.const 65535 + i32.gt_u + local.set $hasSur + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $hasSur + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $hasSur + i32.eqz + if + local.get $out + local.get $code + i32.store16 + else + local.get $code + i32.const 1114111 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 304 + i32.const 39 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $code + i32.const 65536 + i32.sub + local.set $code + local.get $code + i32.const 1023 + i32.and + i32.const 56320 + i32.or + local.set $hi + local.get $code + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.set $lo + local.get $out + local.get $lo + local.get $hi + i32.const 16 + i32.shl + i32.or + i32.store + end + local.get $out + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i32) + (local $offset|11 i32) + (local $val32 i32) + (local $decimals|13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 15024 + i32.const 15152 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 2368 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + local.get $value + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + i64.extend_i32_u + local.get $offset|11 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.set $val32 + local.get $val32 + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $val32 + i64.extend_i32_u + local.get $decimals|13 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 15024 + i32.const 15152 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 2368 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/util/number/utoa64 (param $value i64) (param $radix i32) (result i32) + (local $out i32) + (local $val32 i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i64) + (local $offset|11 i32) + (local $decimals|12 i32) + (local $buffer|13 i32) + (local $num|14 i64) + (local $offset|15 i32) + (local $decimals|16 i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 15024 + i32.const 15152 + i32.const 401 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i64.const 0 + i64.ne + i32.eqz + if + i32.const 2368 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + call $~lib/util/number/decimalCount64High + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + local.get $offset|11 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 63 + local.get $value + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|12 + global.get $~lib/memory/__stack_pointer + local.get $decimals|12 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|13 + local.get $value + local.set $num|14 + local.get $decimals|12 + local.set $offset|15 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|13 + local.get $num|14 + local.get $offset|15 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|16 + global.get $~lib/memory/__stack_pointer + local.get $decimals|16 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + local.get $decimals|16 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + ) + (func $~lib/util/number/itoa64 (param $value i64) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $val32 i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|9 i32) + (local $buffer|10 i32) + (local $num|11 i64) + (local $offset|12 i32) + (local $decimals|13 i32) + (local $buffer|14 i32) + (local $num|15 i64) + (local $offset|16 i32) + (local $decimals|17 i32) + (local $18 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 15024 + i32.const 15152 + i32.const 431 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i64.const 0 + i64.ne + i32.eqz + if + i32.const 2368 + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return + end + local.get $value + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i64.const 0 + local.get $value + i64.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + call $~lib/util/number/decimalCount64High + local.set $decimals|9 + global.get $~lib/memory/__stack_pointer + local.get $decimals|9 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|10 + local.get $value + local.set $num|11 + local.get $decimals|9 + local.set $offset|12 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|10 + local.get $num|11 + local.get $offset|12 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 63 + local.get $value + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|14 + local.get $value + local.set $num|15 + local.get $decimals|13 + local.set $offset|16 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|14 + local.get $num|15 + local.get $offset|16 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|17 + global.get $~lib/memory/__stack_pointer + local.get $decimals|17 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $value + local.get $decimals|17 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return + ) + (func $~lib/util/number/dtoa (param $value f64) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + local.get $value + local.set $value|1 + i32.const 0 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 22256 + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 6672 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 7936 + i32.const 22288 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 22320 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 22320 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/util/number/dtoa (param $value f32) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.1 (result i32) + local.get $value + f64.promote_f32 + local.set $value|1 + i32.const 1 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 22256 + br $~lib/util/number/dtoa_impl|inlined.1 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 6672 + br $~lib/util/number/dtoa_impl|inlined.1 + end + i32.const 7936 + i32.const 22288 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.1 + end + i32.const 22320 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 22320 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.1 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/util/number/dtoa (param $value i32) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.2 (result i32) + local.get $value + f64.convert_i32_u + local.set $value|1 + i32.const 0 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 22256 + br $~lib/util/number/dtoa_impl|inlined.2 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 6672 + br $~lib/util/number/dtoa_impl|inlined.2 + end + i32.const 7936 + i32.const 22288 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.2 + end + i32.const 22320 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 22320 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.2 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) +) diff --git a/tests/compiler/std/string.json b/tests/compiler/std/string.json index 59c251c705..b83788465e 100644 --- a/tests/compiler/std/string.json +++ b/tests/compiler/std/string.json @@ -1,7 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--explicitStart", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + ], + "asc_rtrace": true +} diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat deleted file mode 100644 index c156b0630c..0000000000 --- a/tests/compiler/std/string.optimized.wat +++ /dev/null @@ -1,17253 +0,0 @@ -(module - (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_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_f64 (func (param i32) (result f64))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_=>_i64 (func (param i32) (result i64))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 1024) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 1120) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\df") - (data (i32.const 1152) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1200) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\df\00\df") - (data (i32.const 1232) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\df\00a\00b") - (data (i32.const 1268) "\01\00\00\00\01") - (data (i32.const 1280) "\02\00\00\00\01\00\00\00\01\00\00\00\02") - (data (i32.const 1312) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1344) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1392) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1456) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\006") - (data (i32.const 1488) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\df") - (data (i32.const 1520) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 1568) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\d8\06\df") - (data (i32.const 1600) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i") - (data (i32.const 1632) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 1664) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") - (data (i32.const 1696) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m") - (data (i32.const 1728) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00 ") - (data (i32.const 1760) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00 \00 ") - (data (i32.const 1792) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 1824) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c") - (data (i32.const 1856) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 1888) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c") - (data (i32.const 1920) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") - (data (i32.const 1952) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 ") - (data (i32.const 1984) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") - (data (i32.const 2016) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") - (data (i32.const 2048) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") - (data (i32.const 2080) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x") - (data (i32.const 2112) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00,\00 \00I") - (data (i32.const 2144) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00g") - (data (i32.const 2176) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00i") - (data (i32.const 2208) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00d") - (data (i32.const 2240) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00c\00d") - (data (i32.const 2272) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00 \00c") - (data (i32.const 2304) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00 \00\n\00\t\00\0d\00a\00b\00c\00 \00\t\00\0d\00 ") - (data (i32.const 2352) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00b\00c\00 \00\t\00\0d\00 ") - (data (i32.const 2384) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00 \00\n\00\t\00\0d\00a\00b\00c") - (data (i32.const 2416) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 2448) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\000\000") - (data (i32.const 2480) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 2512) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\000\000\001") - (data (i32.const 2544) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00b\001\000\001") - (data (i32.const 2576) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00o\007\000\007") - (data (i32.const 2608) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00x\00f\000\00f") - (data (i32.const 2640) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00X\00F\000\00F") - (data (i32.const 2672) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\001\001") - (data (i32.const 2704) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\00x\001\00g") - (data (i32.const 2736) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00-\001\002\003") - (data (i32.const 2768) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\001\002\003") - (data (i32.const 2800) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\002\00.\003") - (data (i32.const 2832) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00x\000") - (data (i32.const 2864) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\00b\001\001") - (data (i32.const 2896) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\n\001") - (data (i32.const 2928) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00( 1") - (data (i32.const 2960) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00) 1") - (data (i32.const 2992) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\000") - (data (i32.const 3024) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\000\00X\00A\00B\00C\00D\00E\00F") - (data (i32.const 3056) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00A\00B\00C\00D\00E\00F") - (data (i32.const 3088) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\003\006\008\009\003\004\008\008\001\004\007\004\001\009\001\000\003\002\003\002") - (data (i32.const 3152) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00-\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") - (data (i32.const 3232) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\000\00x\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") - (data (i32.const 3296) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00=\d8%\dd") - (data (i32.const 3328) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\002\00b\00a\00d\00n\00u\00m") - (data (i32.const 3360) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00 \00\t\00\n\001") - (data (i32.const 3392) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00 \00\t\00\n\000\00x\000\002") - (data (i32.const 3424) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-") - (data (i32.const 3456) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00+") - (data (i32.const 3488) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00=\d8%\dd") - (data (i32.const 3520) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00b\00a\00d\00n\00u\00m") - (data (i32.const 3552) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F") - (data (i32.const 3600) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F") - (data (i32.const 3662) "\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") - (data (i32.const 3840) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\00.") - (data (i32.const 3872) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00.\000\000") - (data (i32.const 3904) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\005") - (data (i32.const 3936) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\00e\00-\005") - (data (i32.const 3968) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00-\000\00.\003\00e\00-\002\002") - (data (i32.const 4000) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00.\003\00e\00+\002\002") - (data (i32.const 4032) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\001") - (data (i32.const 4064) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\000\00.\001\00e\00-\000") - (data (i32.const 4096) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\001") - (data (i32.const 4128) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\002\005") - (data (i32.const 4160) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\00+\003\00a") - (data (i32.const 4192) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\001\000") - (data (i32.const 4224) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\003\000") - (data (i32.const 4256) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\003") - (data (i32.const 4288) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\004") - (data (i32.const 4320) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\008") - (data (i32.const 4352) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\009") - (data (i32.const 4384) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\001\00_\000") - (data (i32.const 4416) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00.\000\00e\00-\001\000\00_\000") - (data (i32.const 4464) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00+\001\00_\000") - (data (i32.const 4496) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00_\000") - (data (i32.const 4528) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00_\001") - (data (i32.const 4560) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\000\00.\000\000\00_\000\001\00e\002") - (data (i32.const 4608) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\001\002\003\004\005\006\007\008\009\00_\004") - (data (i32.const 4656) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\001\00_\000\001\002\003\004\005\006\007\008\009") - (data (i32.const 4704) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\006\000") - (data (i32.const 4736) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\006\000") - (data (i32.const 4768) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00-\00.\000\000\000\000\000") - (data (i32.const 4800) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\00x") - (data (i32.const 4832) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\001\001\00e\00-\001\00s\00t\00r\00i\00n\00g") - (data (i32.const 4880) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\000\001\00e\001\00s\00t\00r\00i\00n\00g") - (data (i32.const 4928) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\000\001\000\00s\00t\00r\00i\00n\00g") - (data (i32.const 4976) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\00.\002\002\00e\00-\001") - (data (i32.const 5008) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\001\00.\00s\001") - (data (i32.const 5040) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00x\005") - (data (i32.const 5072) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00x\00D") - (data (i32.const 5104) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00\0b\001\00.\001") - (data (i32.const 5136) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\0b\00\0b\00-\001\00.\001") - (data (i32.const 5168) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\0c\00\0c\00-\001\00.\001") - (data (i32.const 5200) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00( ( -\001\00.\001") - (data (i32.const 5232) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00) ) -\001\00.\001") - (data (i32.const 5264) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\000\000\000") - (data (i32.const 5296) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\000\000\00a") - (data (i32.const 5328) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\000\000\001") - (data (i32.const 5360) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\000") - (data (i32.const 5392) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\00a") - (data (i32.const 5424) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\001\00e") - (data (i32.const 5456) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00e\00+\000\000\000\001") - (data (i32.const 5488) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\000\00e\00+\001\000\000") - (data (i32.const 5520) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00.\00-\001\00.") - (data (i32.const 5552) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00e\00-\001\00.\002") - (data (i32.const 5584) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00e\00x") - (data (i32.const 5616) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\001\00x") - (data (i32.const 5648) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\00x") - (data (i32.const 5680) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\001\00x") - (data (i32.const 5712) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00.\001\00e\00-\001\00x") - (data (i32.const 5744) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\000\00.") - (data (i32.const 5776) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\000\000") - (data (i32.const 5808) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\000\00.") - (data (i32.const 5840) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\001\00.") - (data (i32.const 5872) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\00.") - (data (i32.const 5904) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\00a") - (data (i32.const 5936) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00.\00.\001") - (data (i32.const 5968) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00.\001\00.\001") - (data (i32.const 6000) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\00.\00 \001") - (data (i32.const 6032) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\000\00.\000") - (data (i32.const 6064) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00-\000\00.\000") - (data (i32.const 6096) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00+\000") - (data (i32.const 6128) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00-\00-\000") - (data (i32.const 6160) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00+\00+\000") - (data (i32.const 6192) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00.\00a") - (data (i32.const 6224) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\00.\000") - (data (i32.const 6256) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00.") - (data (i32.const 6288) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00.\00.") - (data (i32.const 6320) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 6352) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0b") - (data (i32.const 6384) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0e\18") - (data (i32.const 6416) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00\0e\181\00.\001") - (data (i32.const 6448) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\0e\18\0e\181\00.\001") - (data (i32.const 6480) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0c") - (data (i32.const 6512) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 6544) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 6576) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\002\002") - (data (i32.const 6608) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\002") - (data (i32.const 6640) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\002\003") - (data (i32.const 6672) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\003") - (data (i32.const 6704) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\003\007") - (data (i32.const 6736) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\007") - (data (i32.const 6768) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\003\008") - (data (i32.const 6800) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\008") - (data (i32.const 6832) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006") - (data (i32.const 6896) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\001\00.\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\007\00e\00+\003\000\008") - (data (i32.const 6960) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\005\00e\00-\003\002\004") - (data (i32.const 6992) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\000\00.\000\000\000\000\000\001\00e\00+\003\001\004") - (data (i32.const 7040) "|\00\00\00\01\00\00\00\01\00\00\00|\00\00\000\00.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\00e\00+\005\006") - (data (i32.const 7184) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00-\003\002\005") - (data (i32.const 7216) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00+\003\000\009") - (data (i32.const 7248) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00-\003\002\005") - (data (i32.const 7280) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00+\003\000\009") - (data (i32.const 7312) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\00e\00-\001\000\000\000\000\000\000") - (data (i32.const 7360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\00e\00+\001\000\000\000\000\000\000") - (data (i32.const 7408) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\003\006\000") - (data (i32.const 7440) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00 \00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7488) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7536) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7584) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00x") - (data (i32.const 7632) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00+\001") - (data (i32.const 7680) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00I\00n\00f\00i") - (data (i32.const 7712) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00+\00I\00n\00f\00i\00n\00i\00t") - (data (i32.const 7744) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00i\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7776) "\aa\00\00\00\01\00\00\00\01\00\00\00\aa\00\00\00.\002\004\007\000\003\002\008\002\002\009\002\000\006\002\003\002\007\002\000\008\008\002\008\004\003\009\006\004\003\004\001\001\000\006\008\006\001\008\002\005\002\009\009\000\001\003\000\007\001\006\002\003\008\002\002\001\002\007\009\002\008\004\001\002\005\000\003\003\007\007\005\003\006\003\005\001\000\004\003\00e\00-\003\002\003") - (data (i32.const 7968) "\aa\00\00\00\01\00\00\00\01\00\00\00\aa\00\00\00.\007\004\001\000\009\008\004\006\008\007\006\001\008\006\009\008\001\006\002\006\004\008\005\003\001\008\009\003\000\002\003\003\002\000\005\008\005\004\007\005\008\009\007\000\003\009\002\001\004\008\007\001\004\006\006\003\008\003\007\008\005\002\003\007\005\001\000\001\003\002\006\000\009\000\005\003\001\003\002\00e\00-\003\002\003") - (data (i32.const 8160) "\aa\00\00\00\01\00\00\00\01\00\00\00\aa\00\00\00.\002\002\002\005\000\007\003\008\005\008\005\000\007\002\000\001\006\003\000\001\002\003\000\005\005\006\003\007\009\005\005\006\007\006\001\005\002\005\000\003\006\001\002\004\001\004\005\007\003\000\001\008\000\001\003\000\008\003\002\002\008\007\002\004\000\004\009\005\008\006\006\004\007\006\000\006\007\006\000\00e\00-\003\000\007") - (data (i32.const 8352) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\001\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\008\000\007\009\003\007\002\008\009\007\001\004\000\005\003\000\003\004\001\005\000\007\009\009\003\004\001\003\002\007\001\000\000\003\007\008\002\006\009\003\006\001\007\003\007\007\008\009\008\000\004\004") - (data (i32.const 8512) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\004\009\006\008\002\009\002\007\006\004\007\005\000\009\004\006\006\004\009\000\001\007\009\007\007\005\008\007\002\000\007\000\009\006\003\003\000\002\008\006\004\001\006\006\009\002\008\008\007\009\001\000\009\004\006\005\005\005\005\004\007\008\005\001\009\004\000\004") - (data (i32.const 8672) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\000\002\006\003\000\006\005\007\004\008\008\006\007\001\005\000\005\008\002\000\006\008\001\009\000\008\009\000\002\000\000\000\007\000\008\003\008\003\006\007\006\002\007\003\008\005\004\008\004\005\008\001\007\007\001\001\005\003\001\007\006\004\004\007\005\007\003\000") - (data (i32.const 8832) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\002\007\000\000\006\009\008\005\005\005\007\001\003\006\006\009\005\009\006\002\002\008\004\002\009\001\004\008\001\009\008\006\000\008\003\004\009\003\006\004\007\005\002\009\002\007\001\009\000\007\004\001\006\008\004\004\004\003\006\005\005\001\000\007\000\004\003\004") - (data (i32.const 8992) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\002\007\001\001\005\005\009\006\009\009\005\000\008\000\009\003\000\004\002\008\008\000\001\007\007\009\000\004\001\007\004\004\009\007\007\009\001\00.\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009") - (data (i32.const 9152) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\000\00.\009\007\005\003\005\003\001\008\008\008\007\009\009\005\000\002\006\001\003\008\000\007\001\003\005\002\007\006\001\004\007\001\006\004\004\000\004\003\009\00e\00-\001\000\003") - (data (i32.const 9264) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\00.\005\009\006\001\008\006\000\003\004\008\001\003\001\008\000\007\000\009\001\008\006\001\000\000\002\002\006\006\004\005\003\009\004\001\009\005\000\004\002\008\00e\000\000") - (data (i32.const 9376) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\001\00.\008\001\005\000\001\003\001\006\009\002\001\008\000\003\008\007\002\009\008\008\007\004\006\000\008\009\008\007\003\003\005\002\006\009\005\007\004\004\002\00e\00-\001") - (data (i32.const 9488) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\004\002\00.\000\007\000\008\002\003\005\007\005\003\004\004\005\003\006\000\000\006\008\001\006\001\008\006\008\005\006\008\002\002\005\007\005\009\000\007\007\002\00e\00-\002") - (data (i32.const 9600) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\006\006\005\00.\004\006\008\006\003\000\006\005\001\006\002\006\001\004\005\006\003\002\008\009\007\003\002\002\005\005\007\009\008\003\003\004\007\000\008\001\006\00e\00-\003") - (data (i32.const 9712) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\006\001\000\001\00.\008\005\002\009\002\002\009\007\000\008\006\008\006\002\001\007\008\006\006\009\000\004\009\005\004\008\005\004\004\009\008\003\001\007\005\003\00e\00-\004") - (data (i32.const 9824) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\007\006\009\006\006\00.\009\005\002\000\008\002\003\006\009\006\008\000\007\007\008\004\009\004\006\004\003\004\008\008\007\005\004\007\001\001\005\008\005\004\009\00e\00-\005") - (data (i32.const 9936) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\002\005\000\005\000\006\00.\005\003\002\002\002\002\008\006\008\002\004\009\006\001\003\002\006\000\004\008\000\007\002\002\002\009\002\003\007\000\002\003\000\004\00e\00-\006") - (data (i32.const 10048) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\002\007\004\000\000\003\007\00.\002\003\000\002\002\008\000\000\005\003\002\005\008\005\002\004\002\004\006\009\007\006\009\008\003\003\001\001\007\007\003\007\007\00e\00-\007") - (data (i32.const 10160) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\002\000\007\002\003\000\009\003\00.\005\000\000\004\009\007\004\002\006\004\005\009\004\001\005\002\009\002\006\008\007\001\005\004\002\008\003\002\004\004\009\000\00e\00-\008") - (data (i32.const 10272) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\007\009\000\000\002\008\000\002\003\008\000\008\001\006\000\004\009\005\006\002\002\006\000\001\001\000\004\007\004\006\000\002\003\008\007\004\008\009\001\002\00e\001") - (data (i32.const 10384) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\009\008\002\002\008\006\000\006\005\003\007\003\007\002\009\006\008\004\008\001\009\000\005\005\008\004\004\008\007\006\000\004\006\005\008\006\003\005\009\007\00e\002") - (data (i32.const 10496) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\007\004\006\008\009\004\009\007\002\003\001\009\000\003\007\000\008\000\009\004\000\005\005\007\000\005\006\000\001\006\000\004\000\005\003\002\004\008\006\009\00e\003") - (data (i32.const 10608) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\001\006\003\000\002\006\008\003\002\000\002\008\002\007\002\008\004\007\005\009\008\000\004\005\009\008\004\004\002\007\001\000\003\001\007\005\001\006\006\005\00e\004") - (data (i32.const 10720) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\004\006\003\007\001\006\008\006\002\009\007\001\009\001\007\000\006\009\005\001\000\009\009\001\008\007\006\009\006\004\005\004\009\002\000\002\002\000\008\008\00e\005") - (data (i32.const 10832) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\006\005\003\007\008\000\005\009\004\004\004\009\007\007\001\001\005\005\004\002\000\009\004\006\001\006\008\006\004\001\005\008\007\002\000\006\007\005\002\003\00e\006") - (data (i32.const 10944) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\002\003\004\006\003\002\004\003\005\006\005\000\002\004\003\007\000\004\005\002\001\002\002\003\000\007\001\003\009\006\000\004\005\007\006\007\006\005\003\001\00e\006") - (data (i32.const 11056) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\009\007\000\009\004\008\001\007\001\006\004\002\000\000\004\008\003\004\001\008\009\007\002\005\008\009\008\000\004\005\004\002\009\008\002\000\005\002\007\008\00e\008") - (data (i32.const 11168) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\004\009\009\006\009\000\008\005\002\002\000\005\001\008\007\004\001\001\000\007\007\009\009\008\002\003\005\004\009\003\002\004\009\009\004\009\009\006\000\002\00e\009") - (data (i32.const 11280) "Z\00\00\00\01\00\00\00\01\00\00\00Z\00\00\000\00.\007\009\002\005\002\000\001\002\000\000\005\005\007\002\004\005\008\006\001\009\004\004\000\001\001\002\006\007\000\004\001\007\008\007\005\000\005\001\004\009\00e\002\002") - (data (i32.const 11392) "Z\00\00\00\01\00\00\00\01\00\00\00Z\00\00\000\00.\006\000\009\006\005\006\004\005\008\005\009\008\003\001\007\007\004\000\008\009\003\004\003\005\002\005\007\000\002\001\003\003\007\007\004\007\005\007\003\009\00e\003\000") - (data (i32.const 11504) "Z\00\00\00\01\00\00\00\01\00\00\00Z\00\00\000\00.\004\008\000\000\004\001\006\001\001\007\004\007\007\000\002\008\007\008\007\008\007\004\003\006\000\002\000\005\000\002\003\005\004\009\004\009\007\001\002\008\00e\006\007") - (data (i32.const 11616) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\000\00.\008\005\002\004\008\002\009\000\007\009\008\001\007\009\006\008\002\002\004\008\003\000\003\003\007\009\003\001\000\005\002\007\008\001\006\004\001\004\008\003\00e\001\000\005") - (data (i32.const 11728) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\000\00.\000\003\002\007\001\002\003\009\002\009\001\007\000\009\007\008\002\001\001\005\004\004\007\000\006\009\003\007\002\007\004\008\009\005\006\000\008\004\002\005\00e\002\006\009") - (data (i32.const 11840) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00\t\00\n") - (data (i32.const 11872) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00 \00\t\00\n\00\0d\00.\001") - (data (i32.const 11904) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 11936) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 11968) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\001") - (data (i32.const 12000) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\002") - (data (i32.const 12032) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00k\00e\001") - (data (i32.const 12064) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00k\00e\002") - (data (i32.const 12096) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\002") - (data (i32.const 12128) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\001") - (data (i32.const 12160) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") - (data (i32.const 12192) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") - (data (i32.const 12224) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l") - (data (i32.const 12272) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l") - (data (i32.const 12320) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00a") - (data (i32.const 12352) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00a") - (data (i32.const 12384) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 12432) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00a\00a") - (data (i32.const 12464) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b") - (data (i32.const 12496) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00a\00a\00a\00a") - (data (i32.const 12528) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a") - (data (i32.const 12560) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a") - (data (i32.const 12592) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00-\00b\00-\00c") - (data (i32.const 12624) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00-\00c") - (data (i32.const 12656) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\00a\00b\00c") - (data (i32.const 12688) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00\n\00a\00b\00c") - (data (i32.const 12720) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\n") - (data (i32.const 12752) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00c") - (data (i32.const 12784) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00+\00+") - (data (i32.const 12816) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00+\00+") - (data (i32.const 12848) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00c") - (data (i32.const 12896) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00+\00+\00+") - (data (i32.const 12928) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00b\00c\00a\00b\00c\00a") - (data (i32.const 12960) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00+\00+\00+\00b\00c\00+\00+\00+\00b\00c\00+\00+\00+") - (data (i32.const 13008) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00+\00+\00c\00+\00+\00c") - (data (i32.const 13040) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00c\00c\00c\00c") - (data (i32.const 13072) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00c\00c") - (data (i32.const 13104) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\00+\00+\00+") - (data (i32.const 13136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00e") - (data (i32.const 13168) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00c") - (data (i32.const 13200) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00+") - (data (i32.const 13232) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00+\00c") - (data (i32.const 13264) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\00a\00+\00b\00+\00c\00+") - (data (i32.const 13296) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n") - (data (i32.const 13344) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00n") - (data (i32.const 13376) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00j\00k\00l\00m\00n") - (data (i32.const 13408) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00c\00d\00e\00f\00g") - (data (i32.const 13440) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00e\00f\00g\00h") - (data (i32.const 13472) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m") - (data (i32.const 13520) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00c\00d\00e\00f\00g\00h\00i") - (data (i32.const 13552) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00e\00f\00g") - (data (i32.const 13584) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00e\00f\00g\00h") - (data (i32.const 13616) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d") - (data (i32.const 13648) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 13696) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 13760) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") - (data (i32.const 13872) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00,\00b\00,\00c") - (data (i32.const 13904) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c") - (data (i32.const 13936) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 13968) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c") - (data (i32.const 14000) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c") - (data (i32.const 14032) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,") - (data (i32.const 14064) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 14192) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 14256) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 14352) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\008") - (data (i32.const 14384) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\002") - (data (i32.const 14416) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\000\000\000") - (data (i32.const 14448) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\002\003\004") - (data (i32.const 14480) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\002\003\004\005") - (data (i32.const 14512) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\004\005\006") - (data (i32.const 14544) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\001\001\001\001\001\001") - (data (i32.const 14576) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\002\003\004\005\006\007") - (data (i32.const 14608) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\004\005\006\007\008") - (data (i32.const 14640) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009") - (data (i32.const 14688) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") - (data (i32.const 14736) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") - (data (i32.const 14784) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 14832) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\001") - (data (i32.const 14864) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\000\000\000") - (data (i32.const 14896) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 14944) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 14992) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\007\00b") - (data (i32.const 15024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\004\00d\002") - (data (i32.const 15056) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\003\000\003\009") - (data (i32.const 15088) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\002\004\000") - (data (i32.const 15120) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\000\00f\004\004\007") - (data (i32.const 15152) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\00d\006\008\007") - (data (i32.const 15184) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00b\00c\006\001\004\00e") - (data (i32.const 15216) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005") - (data (i32.const 15248) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00e") - (data (i32.const 15280) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 15312) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\008\000\000\000\000\000\000\000") - (data (i32.const 15344) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 15376) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 15424) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00-\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 15456) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\008\000\000\000\000\000\000\000") - (data (i32.const 15504) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\001") - (data (i32.const 15536) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\001\001") - (data (i32.const 15568) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\001\001\000") - (data (i32.const 15600) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\001\001\000\001") - (data (i32.const 15632) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\001\001\000\001\001") - (data (i32.const 15664) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 15712) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 15792) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\001\000\000") - (data (i32.const 15872) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000") - (data (i32.const 15952) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000") - (data (i32.const 16032) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 16112) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 16160) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\001\000\002\000\000\002\000\002\002\002\000\001\002\002\001\001\001\001\002\001\000") - (data (i32.const 16224) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") - (data (i32.const 16272) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\003\002\002\004\004\000\000\002\004\002\003\001\004\000") - (data (i32.const 16320) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\003\007\007\007\007\007\007\007\007\007\007") - (data (i32.const 16368) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\009\000\004\004\004\000\005\005\003") - (data (i32.const 16416) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00a\002\000\00d\00c\00d\008\000") - (data (i32.const 16464) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\007\00f\00f\00d\00a\009\000") - (data (i32.const 16496) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\002\008\001\00d\005\005\00i\003") - (data (i32.const 16528) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\002\008\00j\00p\00d\00l") - (data (i32.const 16560) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\003\00v\00v\00v\00v\00v\00v") - (data (i32.const 16592) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00z\001\004\001\00z\003") - (data (i32.const 16624) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009") - (data (i32.const 16656) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000") - (data (i32.const 16704) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\007") - (data (i32.const 16752) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 16800) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 16848) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000") - (data (i32.const 16896) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\001") - (data (i32.const 16944) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 16992) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17040) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17104) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\001\002\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17168) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\001\002\003\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17232) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") - (data (i32.const 17296) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\002\003\004") - (data (i32.const 17328) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 17376) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17424) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17472) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17520) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 17584) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 17648) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") - (data (i32.const 17712) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 17760) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\005\006\007\008\009\00a\00b\00c\00d\00e\001") - (data (i32.const 17808) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\004\005\006\007\008\009\00a\00b\00c\00d\00e\001") - (data (i32.const 17856) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data (i32.const 17904) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data (i32.const 17952) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") - (data (i32.const 18000) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\000") - (data (i32.const 18048) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 18096) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 18144) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") - (data (i32.const 18208) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00-\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") - (data (i32.const 18272) "b\00\00\00\01\00\00\00\01\00\00\00b\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 18400) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 18544) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") - (data (i32.const 18640) "R\00\00\00\01\00\00\00\01\00\00\00R\00\00\001\001\001\001\002\002\002\000\000\002\002\001\002\002\001\002\000\001\000\001\002\001\001\000\002\000\001\002\000\002\001\000\002\001\000\002\001\001\002\002\000") - (data (i32.const 18752) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") - (data (i32.const 18832) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\002\002\001\004\002\002\000\003\000\003\001\001\004\004\000\000\004\002\004\001\002\001\001\002\002\004\003\000") - (data (i32.const 18912) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\001\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007") - (data (i32.const 18976) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\003\003\005\005\000\000\005\001\006\00a\004\002\009\000\007\001\002\008\004") - (data (i32.const 19040) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\002\00c\001\00d\005\006\00b\006\004\008\00c\006\00c\00d\001\001\000") - (data (i32.const 19104) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\006\007\009\007\009\00g\006\000\00f\005\004\002\008\000\001\000") - (data (i32.const 19152) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\005\00e\008\00g\004\00g\00g\00g\007\00g\005\006\00d\00i\00f") - (data (i32.const 19200) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\004\00e\00o\008\00h\00f\00a\00m\006\00f\00l\00l\00m\00o") - (data (i32.const 19248) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00f\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v") - (data (i32.const 19296) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\003\00w\005\00e\001\001\002\006\004\00s\00g\00s\00f") - (data (i32.const 19344) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 19376) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 19408) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 i32) (result f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - block $folding-inner0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - call $~lib/string/String#get:length - local.tee $0 - i32.eqz - br_if $folding-inner0 - local.get $3 - local.tee $4 - i32.load16_u - local.set $2 - loop $while-continue|0 - local.get $2 - call $~lib/util/string/isSpace - if - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 - end - end - f64.const 1 - local.set $6 - i32.const 1 - local.get $2 - i32.const 43 - i32.eq - local.get $2 - i32.const 45 - i32.eq - select - if - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - i32.eqz - br_if $folding-inner0 - f64.const -1 - f64.const 1 - local.get $2 - i32.const 45 - i32.eq - select - local.set $6 - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $2 - end - local.get $1 - if - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s - local.get $1 - i32.const 2 - i32.lt_s - select - br_if $folding-inner0 - local.get $1 - i32.const 16 - i32.eq - if - local.get $2 - i32.const 48 - i32.eq - i32.const 0 - local.get $0 - i32.const 2 - i32.gt_s - select - if (result i32) - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - i32.const 120 - i32.eq - else - i32.const 0 - end - if - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - end - end - else - local.get $0 - i32.const 2 - i32.gt_s - i32.const 0 - local.get $2 - i32.const 48 - i32.eq - select - if - block $break|1 - block $case2|1 - block $case1|1 - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $2 - i32.const 98 - i32.ne - if - local.get $2 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $2 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 2 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 8 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 16 - local.set $1 - end - end - local.get $1 - i32.const 10 - local.get $1 - select - local.set $1 - end - loop $while-continue|2 - block $while-break|2 - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - if - local.get $4 - i32.load16_u - local.tee $2 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if (result i32) - local.get $2 - i32.const 48 - i32.sub - else - local.get $2 - i32.const 55 - i32.sub - local.get $2 - i32.const 87 - i32.sub - local.get $2 - local.get $2 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select - local.get $2 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u - select - end - local.tee $2 - local.get $1 - i32.ge_u - if - local.get $5 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.gt_u - br_if $folding-inner0 - br $while-break|2 - end - local.get $5 - local.get $1 - f64.convert_i32_s - f64.mul - local.get $2 - f64.convert_i32_u - f64.add - local.set $5 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - local.get $5 - f64.mul - return - end - local.get $3 - call $~lib/rt/pure/__release - f64.const nan:0x8000000000000 - ) - (func $~lib/string/parseInt (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/util/string/strtol - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/strtol (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $folding-inner0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - call $~lib/string/String#get:length - local.tee $0 - i32.eqz - br_if $folding-inner0 - local.get $2 - local.tee $3 - i32.load16_u - local.set $1 - loop $while-continue|0 - local.get $1 - call $~lib/util/string/isSpace - if - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 - end - end - i32.const 1 - local.set $4 - i32.const 1 - local.get $1 - i32.const 43 - i32.eq - local.get $1 - i32.const 45 - i32.eq - select - if - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - i32.eqz - br_if $folding-inner0 - i32.const -1 - i32.const 1 - local.get $1 - i32.const 45 - i32.eq - select - local.set $4 - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $1 - end - local.get $0 - i32.const 2 - i32.gt_s - i32.const 0 - local.get $1 - i32.const 48 - i32.eq - select - if - block $break|1 - block $case2|1 - block $case1|1 - local.get $3 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $1 - i32.const 98 - i32.ne - if - local.get $1 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $1 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 2 - local.set $6 - br $break|1 - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 8 - local.set $6 - br $break|1 - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 16 - local.set $6 - end - end - local.get $6 - i32.const 10 - local.get $6 - select - local.set $6 - loop $while-continue|2 - block $while-break|2 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - if - local.get $3 - i32.load16_u - local.tee $1 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if (result i32) - local.get $1 - i32.const 48 - i32.sub - else - local.get $1 - i32.const 55 - i32.sub - local.get $1 - i32.const 87 - i32.sub - local.get $1 - local.get $1 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select - local.get $1 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u - select - end - local.tee $1 - local.get $6 - i32.ge_u - if - local.get $5 - i32.eqz - br_if $folding-inner0 - br $while-break|2 - end - local.get $1 - local.get $5 - local.get $6 - i32.mul - i32.add - local.set $5 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $while-continue|2 - end - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - local.get $5 - i32.mul - return - end - local.get $2 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/util/string/strtol (param $0 i32) (result i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i32) - block $folding-inner0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - call $~lib/string/String#get:length - local.tee $0 - i32.eqz - br_if $folding-inner0 - local.get $2 - local.tee $3 - i32.load16_u - local.set $1 - loop $while-continue|0 - local.get $1 - call $~lib/util/string/isSpace - if - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 - end - end - i64.const 1 - local.set $4 - i32.const 1 - local.get $1 - i32.const 43 - i32.eq - local.get $1 - i32.const 45 - i32.eq - select - if - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - i32.eqz - br_if $folding-inner0 - i64.const -1 - i64.const 1 - local.get $1 - i32.const 45 - i32.eq - select - local.set $4 - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $1 - end - local.get $0 - i32.const 2 - i32.gt_s - i32.const 0 - local.get $1 - i32.const 48 - i32.eq - select - if - block $break|1 - block $case2|1 - block $case1|1 - local.get $3 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $1 - i32.const 98 - i32.ne - if - local.get $1 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $1 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 2 - local.set $6 - br $break|1 - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 8 - local.set $6 - br $break|1 - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 16 - local.set $6 - end - end - local.get $6 - i32.const 10 - local.get $6 - select - local.set $6 - loop $while-continue|2 - block $while-break|2 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - if - local.get $3 - i32.load16_u - local.tee $1 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if (result i32) - local.get $1 - i32.const 48 - i32.sub - else - local.get $1 - i32.const 55 - i32.sub - local.get $1 - i32.const 87 - i32.sub - local.get $1 - local.get $1 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select - local.get $1 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u - select - end - local.tee $1 - local.get $6 - i32.ge_u - if - local.get $5 - i64.eqz - br_if $folding-inner0 - br $while-break|2 - end - local.get $1 - i64.extend_i32_u - local.get $5 - local.get $6 - i64.extend_i32_s - i64.mul - i64.add - local.set $5 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $while-continue|2 - end - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - local.get $5 - i64.mul - return - end - local.get $2 - call $~lib/rt/pure/__release - i64.const 0 - ) - (func $~lib/math/ipow32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - i32.const 5 - local.set $1 - i32.const 1 - local.set $2 - loop $while-continue|0 - local.get $0 - if - local.get $1 - local.get $2 - i32.mul - local.get $2 - local.get $0 - i32.const 1 - i32.and - select - local.set $2 - local.get $0 - i32.const 1 - i32.shr_u - local.set $0 - local.get $1 - local.get $1 - i32.mul - local.set $1 - br $while-continue|0 - end - end - local.get $2 - ) - (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) - local.get $1 - i32.const 1023 - i32.gt_s - if (result f64) - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - local.set $0 - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - i32.const 1023 - i32.gt_s - if (result f64) - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - i32.const 1023 - local.get $1 - i32.const 1023 - i32.lt_s - select - local.set $1 - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - else - local.get $0 - end - else - local.get $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - local.set $0 - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - local.get $1 - i32.const -1022 - i32.gt_s - select - local.set $1 - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - else - local.get $0 - end - else - local.get $0 - end - end - local.get $1 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - f64.mul - ) - (func $~lib/util/string/strtod (param $0 i32) (result f64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 f64) - (local $8 i64) - (local $9 i32) - (local $10 f64) - (local $11 i64) - (local $12 i64) - (local $13 i32) - (local $14 i64) - (local $15 i32) - block $folding-inner0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - call $~lib/string/String#get:length - local.tee $15 - i32.eqz - br_if $folding-inner0 - local.get $3 - local.tee $0 - i32.load16_u - local.set $13 - f64.const 1 - local.set $7 - loop $while-continue|0 - local.get $15 - if (result i32) - local.get $13 - call $~lib/util/string/isSpace - else - i32.const 0 - end - if - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.set $13 - local.get $15 - i32.const 1 - i32.sub - local.set $15 - br $while-continue|0 - end - end - local.get $15 - i32.eqz - br_if $folding-inner0 - local.get $13 - i32.const 45 - i32.eq - if (result i32) - local.get $15 - i32.const 1 - i32.sub - local.tee $15 - i32.eqz - br_if $folding-inner0 - f64.const -1 - local.set $7 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - else - local.get $13 - i32.const 43 - i32.eq - if (result i32) - local.get $15 - i32.const 1 - i32.sub - local.tee $15 - i32.eqz - br_if $folding-inner0 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - else - local.get $13 - end - end - local.tee $13 - i32.const 73 - i32.eq - i32.const 0 - local.get $15 - i32.const 8 - i32.ge_s - select - if - local.get $0 - i64.load - i64.const 29555310648492105 - i64.eq - if (result i32) - local.get $0 - i64.load offset=8 - i64.const 34058970405077102 - i64.eq - else - i32.const 0 - end - if - local.get $3 - call $~lib/rt/pure/__release - f64.const inf - local.get $7 - f64.mul - return - end - br $folding-inner0 - end - local.get $13 - i32.const 48 - i32.sub - i32.const 10 - i32.ge_u - i32.const 0 - local.get $13 - i32.const 46 - i32.ne - select - br_if $folding-inner0 - local.get $0 - local.set $5 - loop $while-continue|1 - local.get $13 - i32.const 48 - i32.eq - if - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.set $13 - local.get $15 - i32.const 1 - i32.sub - local.set $15 - br $while-continue|1 - end - end - local.get $15 - i32.const 0 - i32.le_s - if - local.get $3 - call $~lib/rt/pure/__release - f64.const 0 - return - end - local.get $13 - i32.const 46 - i32.eq - if - local.get $5 - local.get $0 - i32.sub - i32.eqz - local.set $5 - local.get $0 - i32.const 2 - i32.add - local.set $0 - i32.const 0 - local.get $5 - local.get $15 - i32.const 1 - i32.sub - local.tee $15 - select - br_if $folding-inner0 - i32.const 1 - local.set $9 - loop $for-loop|2 - local.get $0 - i32.load16_u - local.tee $13 - i32.const 48 - i32.eq - if - local.get $15 - i32.const 1 - i32.sub - local.set $15 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $for-loop|2 - end - end - local.get $15 - i32.const 0 - i32.le_s - if - local.get $3 - call $~lib/rt/pure/__release - f64.const 0 - return - end - local.get $13 - i32.const 48 - i32.sub - i32.const 10 - i32.ge_u - i32.const 0 - i32.const 0 - local.get $5 - local.get $1 - select - select - br_if $folding-inner0 - end - local.get $13 - i32.const 48 - i32.sub - local.set $5 - loop $for-loop|3 - i32.const 1 - local.get $9 - i32.eqz - i32.const 0 - local.get $13 - i32.const 46 - i32.eq - select - local.get $5 - i32.const 10 - i32.lt_u - select - if - block $for-break3 - local.get $5 - i32.const 10 - i32.lt_u - if - local.get $5 - i64.extend_i32_u - local.get $14 - i64.const 10 - i64.mul - i64.add - local.get $14 - local.get $5 - i32.eqz - i32.eqz - i64.extend_i32_u - i64.or - local.get $2 - i32.const 19 - i32.lt_s - select - local.set $14 - local.get $2 - i32.const 1 - i32.add - local.set $2 - else - local.get $2 - local.set $1 - i32.const 1 - local.set $9 - end - local.get $15 - i32.const 1 - i32.sub - local.tee $15 - i32.eqz - br_if $for-break3 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.tee $13 - i32.const 48 - i32.sub - local.set $5 - br $for-loop|3 - end - end - end - block $~lib/util/string/scientific|inlined.0 (result f64) - local.get $1 - local.get $2 - local.get $9 - select - i32.const 19 - local.get $2 - i32.const 19 - local.get $2 - i32.lt_s - select - i32.sub - local.set $9 - f64.const 0 - i32.const 1 - block $~lib/util/string/parseExp|inlined.0 (result i32) - i32.const 1 - local.set $2 - i32.const 0 - local.get $0 - local.tee $1 - i32.load16_u - i32.const 32 - i32.or - i32.const 101 - i32.ne - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $1 - i32.const 2 - i32.add - local.tee $5 - i32.load16_u - local.tee $0 - i32.const 45 - i32.eq - if (result i32) - i32.const 0 - local.get $15 - i32.const 1 - i32.sub - local.tee $15 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - i32.const -1 - local.set $2 - local.get $5 - i32.const 2 - i32.add - local.tee $5 - i32.load16_u - else - local.get $0 - i32.const 43 - i32.eq - if (result i32) - i32.const 0 - local.get $15 - i32.const 1 - i32.sub - local.tee $15 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $5 - i32.const 2 - i32.add - local.tee $5 - i32.load16_u - else - local.get $0 - end - end - local.set $0 - loop $while-continue|4 - local.get $0 - i32.const 48 - i32.eq - if - i32.const 0 - local.get $15 - i32.const 1 - i32.sub - local.tee $15 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $5 - i32.const 2 - i32.add - local.tee $5 - i32.load16_u - local.set $0 - br $while-continue|4 - end - end - local.get $0 - i32.const 48 - i32.sub - local.set $0 - loop $for-loop|5 - local.get $0 - i32.const 10 - i32.lt_u - i32.const 0 - local.get $15 - select - if - local.get $2 - i32.const 3200 - i32.mul - local.get $4 - i32.const 3200 - i32.ge_s - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $0 - local.get $4 - i32.const 10 - i32.mul - i32.add - local.set $4 - local.get $15 - i32.const 1 - i32.sub - local.set $15 - local.get $5 - i32.const 2 - i32.add - local.tee $5 - i32.load16_u - i32.const 48 - i32.sub - local.set $0 - br $for-loop|5 - end - end - local.get $2 - local.get $4 - i32.mul - end - local.get $9 - i32.add - local.tee $0 - i32.const -342 - i32.lt_s - local.get $14 - i64.eqz - select - br_if $~lib/util/string/scientific|inlined.0 - drop - f64.const inf - local.get $0 - i32.const 308 - i32.gt_s - br_if $~lib/util/string/scientific|inlined.0 - drop - local.get $14 - f64.convert_i64_u - local.tee $10 - local.get $0 - i32.eqz - br_if $~lib/util/string/scientific|inlined.0 - drop - local.get $0 - i32.const 37 - i32.le_s - i32.const 0 - local.get $0 - i32.const 22 - i32.gt_s - select - if - local.get $10 - local.get $0 - i32.const 3 - i32.shl - i32.const 3480 - i32.add - f64.load - f64.mul - local.set $10 - i32.const 22 - local.set $0 - end - local.get $14 - i64.const 9007199254740991 - i64.le_u - if (result i32) - local.get $0 - i32.const 31 - i32.shr_s - local.tee $2 - local.get $0 - local.get $2 - i32.add - i32.xor - i32.const 22 - i32.le_s - else - i32.const 0 - end - if (result f64) - local.get $0 - i32.const 0 - i32.gt_s - if - local.get $10 - local.get $0 - i32.const 3 - i32.shl - i32.const 3656 - i32.add - f64.load - f64.mul - br $~lib/util/string/scientific|inlined.0 - end - local.get $10 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.shl - i32.const 3656 - i32.add - f64.load - f64.div - else - local.get $0 - i32.const 0 - i32.lt_s - if (result f64) - local.get $14 - local.get $14 - i64.clz - local.tee $12 - i64.shl - local.set $14 - local.get $0 - local.tee $2 - i64.extend_i32_s - local.get $12 - i64.sub - local.set $12 - loop $for-loop|6 - local.get $2 - i32.const -14 - i32.le_s - if - f64.const 0.00004294967296 - local.get $14 - i64.const 6103515625 - i64.rem_u - local.get $14 - i64.const 6103515625 - i64.div_u - local.tee $8 - i64.clz - local.tee $11 - i64.const 18 - i64.sub - i64.shl - f64.convert_i64_u - f64.mul - f64.nearest - i64.trunc_f64_u - local.get $8 - local.get $11 - i64.shl - i64.add - local.set $14 - local.get $12 - local.get $11 - i64.sub - local.set $12 - local.get $2 - i32.const 14 - i32.add - local.set $2 - br $for-loop|6 - end - end - local.get $14 - i32.const 0 - local.get $2 - i32.sub - call $~lib/math/ipow32 - i64.extend_i32_s - local.tee $8 - i64.div_u - local.tee $6 - i64.clz - local.set $11 - local.get $14 - local.get $8 - i64.rem_u - f64.convert_i64_u - i64.reinterpret_f64 - local.get $11 - i64.const 52 - i64.shl - i64.add - f64.reinterpret_i64 - local.get $8 - f64.convert_i64_u - f64.div - i64.trunc_f64_u - local.get $6 - local.get $11 - i64.shl - i64.add - f64.convert_i64_u - local.get $12 - local.get $11 - i64.sub - i32.wrap_i64 - call $~lib/math/NativeMath.scalbn - else - local.get $14 - local.get $14 - i64.ctz - local.tee $12 - i64.shr_u - local.set $14 - local.get $12 - local.get $0 - local.tee $4 - i64.extend_i32_s - i64.add - global.set $~lib/util/string/__fixmulShift - loop $for-loop|7 - local.get $4 - i32.const 13 - i32.ge_s - if - i64.const 32 - local.get $14 - i64.const 32 - i64.shr_u - i64.const 1220703125 - i64.mul - local.get $14 - i64.const 4294967295 - i64.and - i64.const 1220703125 - i64.mul - local.tee $14 - i64.const 32 - i64.shr_u - i64.add - local.tee $12 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.clz - local.tee $0 - i64.extend_i32_u - i64.sub - local.tee $11 - global.get $~lib/util/string/__fixmulShift - i64.add - global.set $~lib/util/string/__fixmulShift - local.get $14 - local.get $0 - i64.extend_i32_u - i64.shl - i64.const 31 - i64.shr_u - i64.const 1 - i64.and - local.get $12 - local.get $0 - i64.extend_i32_u - i64.shl - local.get $14 - i64.const 4294967295 - i64.and - local.get $11 - i64.shr_u - i64.or - i64.add - local.set $14 - local.get $4 - i32.const 13 - i32.sub - local.set $4 - br $for-loop|7 - end - end - local.get $4 - call $~lib/math/ipow32 - local.tee $0 - i64.extend_i32_u - local.get $14 - i64.const 4294967295 - i64.and - i64.mul - local.set $12 - i64.const 32 - local.get $0 - i64.extend_i32_u - local.get $14 - i64.const 32 - i64.shr_u - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add - local.tee $14 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.clz - local.tee $0 - i64.extend_i32_u - i64.sub - local.tee $11 - global.get $~lib/util/string/__fixmulShift - i64.add - global.set $~lib/util/string/__fixmulShift - local.get $12 - local.get $0 - i64.extend_i32_u - i64.shl - i64.const 31 - i64.shr_u - i64.const 1 - i64.and - local.get $14 - local.get $0 - i64.extend_i32_u - i64.shl - local.get $12 - i64.const 4294967295 - i64.and - local.get $11 - i64.shr_u - i64.or - i64.add - f64.convert_i64_u - global.get $~lib/util/string/__fixmulShift - i32.wrap_i64 - call $~lib/math/NativeMath.scalbn - end - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $7 - f64.copysign - return - end - local.get $3 - call $~lib/rt/pure/__release - f64.const nan:0x8000000000000 - ) - (func $~lib/string/parseFloat (param $0 i32) (result f64) - (local $1 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/util/string/strtod - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $__inlined_func$~lib/string/String#concat (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 1648 - local.get $2 - select - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - i32.eqz - if - local.get $0 - i32.const 1648 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 1648 - local.set $0 - end - local.get $3 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.tee $4 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.tee $6 - i32.add - local.tee $1 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - i32.const 1280 - br $__inlined_func$~lib/string/String#concat - end - local.get $1 - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $1 - local.get $3 - local.get $4 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.add - local.get $0 - local.get $6 - call $~lib/memory/memory.copy - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - end - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/string/String.__eq - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.__gt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - block $folding-inner0 - i32.const 1 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eqz - i32.const 1 - local.get $0 - i32.eqz - local.get $0 - local.get $1 - i32.eq - select - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - i32.eqz - br_if $folding-inner0 - local.get $1 - call $~lib/string/String#get:length - local.tee $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - local.get $0 - i32.const 0 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - call $~lib/util/string/compareImpl - i32.const 0 - i32.gt_s - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/string/String.__lt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - block $folding-inner0 - i32.const 1 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eqz - i32.const 1 - local.get $0 - i32.eqz - local.get $0 - local.get $1 - i32.eq - select - select - br_if $folding-inner0 - local.get $1 - call $~lib/string/String#get:length - local.tee $2 - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - local.get $0 - i32.const 0 - local.get $1 - local.get $3 - local.get $2 - local.get $3 - local.get $2 - i32.lt_s - select - call $~lib/util/string/compareImpl - i32.const 0 - i32.lt_s - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/string/String.__gte (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/string/String.__lt - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.__lte (param $0 i32) (result i32) - (local $1 i32) - i32.const 1280 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/string/String.__gt - i32.eqz - i32.const 1280 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String#repeat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 1 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - i64.extend_i32_s - local.get $1 - i64.extend_i32_s - i64.mul - i64.const 268435456 - i64.gt_u - local.get $1 - i32.const 0 - i32.lt_s - select - if - i32.const 12400 - i32.const 1536 - i32.const 322 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.eqz - i32.const 1 - local.get $1 - select - if - i32.const 1280 - return - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $1 - local.get $2 - i32.mul - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - local.get $1 - call $~lib/memory/memory.repeat - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#replace (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - block $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $3 - local.get $1 - call $~lib/string/String#get:length - local.tee $5 - i32.le_u - if - local.get $3 - local.get $5 - i32.lt_u - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - select - call $~lib/rt/pure/__retain - end - local.set $0 - br $folding-inner0 - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/string/String#indexOf - local.tee $4 - i32.const -1 - i32.xor - if - local.get $2 - call $~lib/string/String#get:length - local.tee $6 - local.get $3 - local.get $5 - i32.sub - local.tee $7 - i32.add - local.tee $3 - if - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - local.tee $8 - call $~lib/memory/memory.copy - local.get $3 - local.get $8 - i32.add - local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $4 - local.get $6 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - local.get $5 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $4 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - br $folding-inner0 - end - end - local.get $0 - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - return - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - local.get $1 - i32.load - local.tee $5 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $4 - i32.const 1 - i32.and - if - local.get $5 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 21992 - i32.ge_u - if - local.get $1 - local.get $3 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/string/String#replaceAll (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.get $1 - call $~lib/rt/pure/__retain - local.set $7 - local.get $2 - call $~lib/rt/pure/__retain - local.set $5 - block $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $4 - local.get $7 - call $~lib/string/String#get:length - local.tee $10 - i32.le_u - if - local.get $4 - local.get $10 - i32.lt_u - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - local.get $5 - local.get $0 - local.get $7 - local.get $0 - call $~lib/string/String.__eq - select - call $~lib/rt/pure/__retain - end - local.set $0 - br $folding-inner0 - end - local.get $5 - call $~lib/string/String#get:length - local.set $2 - local.get $10 - i32.eqz - if - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - br $folding-inner0 - end - local.get $4 - local.get $2 - local.get $4 - i32.const 1 - i32.add - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $5 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.set $1 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_u - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $3 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $2 - i32.add - local.set $1 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - br $folding-inner0 - end - local.get $2 - local.get $10 - i32.eq - if - local.get $4 - i32.const 1 - i32.shl - local.tee $4 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $0 - local.get $4 - call $~lib/memory/memory.copy - loop $while-continue|1 - local.get $0 - local.get $7 - local.get $6 - call $~lib/string/String#indexOf - local.tee $4 - i32.const -1 - i32.xor - if - local.get $1 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $4 - local.get $10 - i32.add - local.set $6 - br $while-continue|1 - end - end - local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - br $folding-inner0 - end - local.get $4 - local.set $1 - loop $while-continue|2 - local.get $0 - local.get $7 - local.get $6 - call $~lib/string/String#indexOf - local.tee $9 - i32.const -1 - i32.xor - if - local.get $3 - i32.eqz - if - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - end - local.get $8 - local.get $1 - i32.gt_u - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__realloc - local.set $3 - end - local.get $3 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $9 - local.get $6 - i32.sub - local.tee $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $6 - local.get $8 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $6 - i32.add - local.set $8 - local.get $9 - local.get $10 - i32.add - local.set $6 - br $while-continue|2 - end - end - local.get $8 - if - local.get $8 - local.get $1 - i32.gt_u - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__realloc - local.set $3 - end - local.get $4 - local.get $6 - i32.sub - local.tee $2 - if - local.get $3 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - local.get $1 - local.get $2 - local.get $8 - i32.add - local.tee $0 - i32.gt_u - if (result i32) - local.get $3 - local.get $0 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__realloc - else - local.get $3 - end - call $~lib/rt/pure/__retain - local.set $0 - br $folding-inner0 - end - local.get $0 - call $~lib/rt/pure/__retain - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - return - end - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $~lib/string/String#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - i32.le_s - if - i32.const 1280 - return - end - local.get $2 - i32.const 1 - i32.shl - local.tee $2 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#substr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $0 - call $~lib/string/String#get:length - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.set $1 - end - local.get $1 - i32.sub - local.tee $3 - local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $2 - i32.const 0 - i32.le_s - if - i32.const 1280 - return - end - local.get $2 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $3 - local.get $0 - call $~lib/string/String#get:length - local.tee $1 - local.get $3 - local.get $1 - i32.lt_s - select - local.tee $3 - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $1 - local.get $2 - local.get $1 - i32.lt_s - select - local.tee $2 - local.get $3 - local.get $2 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - local.get $2 - local.get $3 - local.get $2 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $2 - i32.sub - local.tee $3 - i32.eqz - if - i32.const 1280 - return - end - i32.const 0 - local.get $4 - local.get $1 - i32.const 1 - i32.shl - i32.eq - local.get $2 - select - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $3 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $0 - local.get $2 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/__allocArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $0 - i32.const 2 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - call $~lib/rt/pure/__retain - i32.store - local.get $1 - local.get $3 - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 28 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) - (func $~lib/array/Array<~lib/string/String>#push (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.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $6 - i32.const 1 - i32.add - local.tee $3 - local.set $1 - local.get $3 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 268435452 - i32.gt_u - if - i32.const 12400 - i32.const 13664 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - i32.load - local.tee $7 - local.get $1 - i32.const 2 - i32.shl - local.tee $5 - call $~lib/rt/tlsf/__realloc - local.tee $1 - i32.add - local.get $5 - local.get $4 - i32.sub - call $~lib/memory/memory.fill - local.get $1 - local.get $7 - i32.ne - if - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.store offset=8 - end - local.get $0 - i32.load offset=4 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $2 - call $~lib/rt/pure/__retain - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String#split (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner0 - local.get $2 - i32.eqz - br_if $folding-inner0 - local.get $1 - i32.eqz - if - i32.const 1 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=4 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $4 - i32.const 2147483647 - local.get $2 - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $1 - call $~lib/string/String#get:length - local.tee $6 - if - local.get $4 - i32.eqz - if - i32.const 1 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=4 - i32.const 1280 - i32.store - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - return - end - else - local.get $4 - i32.eqz - br_if $folding-inner0 - local.get $4 - local.get $2 - local.get $4 - local.get $2 - i32.lt_s - select - local.tee $5 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=4 - local.set $6 - loop $for-loop|0 - local.get $3 - local.get $5 - i32.lt_s - if - i32.const 2 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $6 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $2 - call $~lib/rt/pure/__retain - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $3 - loop $while-continue|1 - local.get $0 - local.get $1 - local.get $5 - call $~lib/string/String#indexOf - local.tee $8 - i32.const -1 - i32.xor - if - local.get $8 - local.get $5 - i32.sub - local.tee $7 - i32.const 0 - i32.gt_s - if - local.get $7 - i32.const 1 - i32.shl - local.tee $7 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $9 - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $7 - call $~lib/memory/memory.copy - local.get $3 - local.get $9 - call $~lib/array/Array<~lib/string/String>#push - else - local.get $3 - i32.const 1280 - call $~lib/array/Array<~lib/string/String>#push - end - local.get $2 - local.get $10 - i32.const 1 - i32.add - local.tee $10 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $6 - local.get $8 - i32.add - local.set $5 - br $while-continue|1 - end - end - local.get $5 - i32.eqz - if - local.get $3 - local.get $0 - call $~lib/array/Array<~lib/string/String>#push - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $4 - local.get $5 - i32.sub - local.tee $2 - i32.const 0 - i32.gt_s - if - local.get $2 - i32.const 1 - i32.shl - local.tee $2 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $4 - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $3 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - else - local.get $3 - i32.const 1280 - call $~lib/array/Array<~lib/string/String>#push - end - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 13712 - i32.const 13664 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.tee $0 - i32.eqz - if - i32.const 13776 - i32.const 13664 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $0 - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $do-continue|0 - local.get $1 - i32.const 10 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 - local.get $1 - br_if $do-continue|0 - end - ) - (func $~lib/util/number/utoa_hex_simple (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 15 - i32.and - i32.const 48 - i32.or - local.tee $3 - i32.const 39 - i32.const 0 - local.get $3 - i32.const 57 - i32.gt_u - select - i32.add - i32.store16 - local.get $1 - i32.const 4 - i32.shr_u - local.tee $1 - br_if $do-continue|0 - end - ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) - (local $2 i64) - (local $3 i64) - local.get $1 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $1 - i64.extend_i32_s - local.tee $3 - local.set $2 - i32.const 1 - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $2 - i64.ge_u - if - local.get $0 - local.get $2 - i64.div_u - local.set $0 - local.get $2 - local.get $2 - i64.mul - local.set $2 - local.get $1 - i32.const 1 - i32.shl - local.set $1 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $0 - i64.const 1 - i64.ge_u - if - local.get $0 - local.get $3 - i64.div_u - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|1 - end - end - local.get $1 - i32.const 1 - i32.sub - ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and - if - loop $do-continue|1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i64.div_u - local.tee $1 - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.const 14272 - i32.add - i32.load16_u - i32.store16 - local.get $1 - i64.const 0 - i64.ne - br_if $do-continue|1 - end - else - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $5 - local.get $4 - i64.const 1 - i64.sub - local.set $4 - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $4 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.const 14272 - i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $5 - i64.shr_u - local.tee $1 - i64.const 0 - i64.ne - br_if $do-continue|0 - end - end - ) - (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s - local.get $1 - i32.const 2 - i32.lt_s - select - if - i32.const 14080 - i32.const 14208 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 2432 - return - end - local.get $0 - i32.const 31 - i32.shr_u - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple - else - local.get $1 - i32.const 16 - i32.eq - if - local.get $2 - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_hex_simple - else - local.get $0 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $0 - i64.extend_i32_u - local.get $4 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s - local.get $1 - i32.const 2 - i32.lt_s - select - if - i32.const 14080 - i32.const 14208 - i32.const 350 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 2432 - return - end - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_hex_simple - else - local.get $0 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - i64.extend_i32_u - local.get $3 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 - i64.const 1000000000000000 - i64.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - loop $do-continue|0 - local.get $1 - i64.const 10 - i64.rem_u - i32.wrap_i64 - local.set $3 - local.get $1 - i64.const 10 - i64.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 - local.get $1 - i64.const 0 - i64.ne - br_if $do-continue|0 - end - ) - (func $~lib/util/number/utoa_hex_simple (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i64) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 15 - i64.and - i64.const 48 - i64.or - local.tee $3 - i64.const 39 - i64.const 0 - local.get $3 - i64.const 57 - i64.gt_u - select - i64.add - i64.store16 - local.get $1 - i64.const 4 - i64.shr_u - local.tee $1 - i64.const 0 - i64.ne - br_if $do-continue|0 - end - ) - (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s - local.get $1 - i32.const 2 - i32.lt_s - select - if - i32.const 14080 - i32.const 14208 - i32.const 401 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.eqz - if - i32.const 2432 - return - end - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - i64.const 4294967295 - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.tee $1 - call $~lib/util/number/decimalCount32 - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $1 - local.get $3 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple - end - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_hex_simple - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $3 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s - local.get $1 - i32.const 2 - i32.lt_s - select - if - i32.const 14080 - i32.const 14208 - i32.const 431 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.eqz - if - i32.const 2432 - return - end - local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $2 - if - i64.const 0 - local.get $0 - i64.sub - local.set $0 - end - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - i64.const 4294967295 - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.tee $1 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $1 - local.get $4 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.get $2 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple - end - else - local.get $1 - i32.const 16 - i32.eq - if - local.get $2 - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_hex_simple - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $0 - local.get $4 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i64) - (local $11 i32) - (local $12 i64) - (local $13 i64) - local.get $3 - local.get $1 - i64.sub - local.set $8 - local.get $3 - i64.const 1 - i32.const 0 - local.get $4 - i32.sub - local.tee $11 - i64.extend_i32_s - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $12 - i64.and - local.set $7 - local.get $3 - local.get $11 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $9 - loop $while-continue|0 - local.get $9 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $9 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $2 - i32.const 1000000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100 - i32.div_u - local.set $4 - local.get $2 - i32.const 100 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10 - i32.div_u - local.set $4 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - local.set $4 - i32.const 0 - local.set $2 - br $break|1 - end - i32.const 0 - local.set $4 - end - local.get $4 - local.get $6 - i32.or - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $7 - local.get $2 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - i64.shl - i64.add - local.tee $1 - local.get $5 - i64.le_u - if - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 2 - i32.shl - i32.const 20280 - i32.add - i64.load32_u - local.get $11 - i64.extend_i32_s - i64.shl - local.set $10 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|3 - i32.const 1 - local.get $8 - local.get $1 - i64.sub - local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $10 - i64.ge_u - i32.const 0 - local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - return - end - br $while-continue|0 - end - end - local.get $11 - i64.extend_i32_s - local.set $13 - loop $while-continue|4 (result i32) - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $7 - i64.const 10 - i64.mul - local.tee $3 - local.get $13 - i64.shr_u - local.tee $1 - local.get $6 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $3 - local.get $12 - i64.and - local.tee $7 - local.get $5 - i64.ge_u - br_if $while-continue|4 - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - local.get $8 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 20280 - i32.add - i64.load32_u - i64.mul - local.set $8 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|6 - i32.const 1 - local.get $8 - local.get $1 - i64.sub - local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $10 - i64.ge_u - i32.const 0 - local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|6 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 - i32.const -6 - local.get $3 - i32.lt_s - select - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.add - end - end - end - end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - f64.const 0 - f64.lt - local.tee $9 - if (result f64) - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - else - local.get $1 - end - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $2 - i64.const 4503599627370495 - i64.and - i64.add - local.tee $3 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $4 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.tee $8 - i32.const 1 - i32.sub - local.get $4 - i32.sub - local.set $4 - local.get $3 - local.get $3 - i64.const 4503599627370496 - i64.eq - i32.const 1 - i32.add - local.tee $10 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $8 - local.get $10 - i32.sub - local.get $4 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $4 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_f64_s - local.tee $4 - local.get $4 - f64.convert_i32_s - local.get $1 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - local.tee $10 - i32.sub - global.set $~lib/util/number/_K - local.get $10 - i32.const 19408 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $4 - i32.const 1 - i32.shl - i32.const 20104 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $6 - i64.const 4294967295 - i64.and - local.set $2 - local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_plus - local.tee $5 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $5 - i64.const 4294967295 - i64.and - local.tee $5 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $5 - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - local.get $3 - local.get $3 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $8 - local.get $0 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $4 - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $6 - global.get $~lib/util/number/_frc_minus - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $5 - i64.mul - local.get $2 - local.get $5 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $2 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $3 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul - local.get $3 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $9 - call $~lib/util/number/genDigits - local.get $9 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $9 - i32.add - ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - f64.const 0 - f64.eq - if - i32.const 19360 - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne - if - local.get $0 - local.get $0 - f64.ne - if - i32.const 6336 - return - end - i32.const 7552 - i32.const 19392 - local.get $0 - f64.const 0 - f64.lt - select - call $~lib/rt/pure/__retain - return - end - i32.const 56 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $0 - call $~lib/util/number/dtoa_core - local.tee $2 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - return - end - local.get $1 - i32.const 0 - local.get $2 - call $~lib/string/String#substring - call $~lib/rt/tlsf/maybeInitialize - local.get $1 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $start:std/string - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 f32) - (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 i64) - (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) - (local $245 i32) - (local $246 i32) - (local $247 i32) - (local $248 i32) - (local $249 i32) - (local $250 i32) - (local $251 i32) - (local $252 i32) - (local $253 i32) - (local $254 i32) - (local $255 i32) - (local $256 i32) - (local $257 i32) - (local $258 i32) - (local $259 i32) - (local $260 i32) - (local $261 i32) - (local $262 i32) - (local $263 i32) - (local $264 i32) - (local $265 i32) - (local $266 i32) - (local $267 i32) - (local $268 i32) - (local $269 i32) - (local $270 i32) - (local $271 i32) - (local $272 i32) - (local $273 i32) - (local $274 i32) - (local $275 i32) - (local $276 i32) - (local $277 i32) - (local $278 i32) - (local $279 i32) - (local $280 i32) - (local $281 i32) - (local $282 i32) - (local $283 i32) - (local $284 i32) - (local $285 i32) - (local $286 i32) - (local $287 i32) - (local $288 i32) - (local $289 i32) - (local $290 i32) - (local $291 i32) - (local $292 i32) - (local $293 i32) - (local $294 i32) - (local $295 i32) - (local $296 i32) - (local $297 i32) - (local $298 i32) - (local $299 i32) - global.get $std/string/str - i32.const 1040 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1136 - i32.const 1136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1216 - i32.const 1216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1248 - i32.const 1248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - call $~lib/string/String#get:length - i32.const 16 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - block $__inlined_func$~lib/string/String#charCodeAt (result i32) - i32.const -1 - i32.const 0 - global.get $std/string/str - local.tee $0 - call $~lib/string/String#get:length - i32.ge_u - br_if $__inlined_func$~lib/string/String#charCodeAt - drop - local.get $0 - i32.load16_u - end - i32.const 104 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - call $~lib/string/String.__not - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1296 - call $~lib/string/String.__not - i32.eqz - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - call $~lib/string/String.__not - i32.eqz - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/string/String.fromCharCode@varargs - local.tee $7 - i32.const 1296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - i32.const 54 - call $~lib/string/String.fromCharCode@varargs - local.tee $8 - i32.const 1472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - i32.const 65590 - call $~lib/string/String.fromCharCode@varargs - local.tee $9 - i32.const 1472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 55296 - i32.const 57088 - call $~lib/string/String.fromCharCode - local.tee $10 - i32.const 1504 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/string/String.fromCodePoint - local.tee $11 - i32.const 1296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 54 - call $~lib/string/String.fromCodePoint - local.tee $12 - i32.const 1472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 119558 - call $~lib/string/String.fromCodePoint - local.tee $13 - i32.const 1584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - local.set $5 - i32.const 1616 - if (result i32) - i32.const 1616 - else - i32.const 1616 - call $~lib/rt/pure/__release - i32.const 0 - end - drop - block $__inlined_func$~lib/string/String#startsWith - i32.const 0 - local.get $5 - call $~lib/string/String#get:length - local.tee $2 - i32.const 0 - local.get $2 - i32.lt_s - select - local.tee $4 - i32.const 1616 - call $~lib/string/String#get:length - local.tee $0 - i32.add - local.get $2 - i32.gt_s - if - i32.const 1616 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - br $__inlined_func$~lib/string/String#startsWith - end - local.get $5 - local.get $4 - i32.const 1616 - local.get $0 - call $~lib/util/string/compareImpl - i32.eqz - local.set $0 - i32.const 1616 - call $~lib/rt/pure/__release - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - local.set $4 - block $__inlined_func$~lib/string/String#endsWith - i32.const 536870904 - local.get $4 - call $~lib/string/String#get:length - local.tee $0 - i32.const 536870904 - local.get $0 - i32.lt_s - select - i32.const 1680 - call $~lib/string/String#get:length - local.tee $1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - if - i32.const 1680 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - br $__inlined_func$~lib/string/String#endsWith - end - local.get $4 - local.get $0 - i32.const 1680 - local.get $1 - call $~lib/util/string/compareImpl - i32.eqz - local.set $0 - i32.const 1680 - call $~lib/rt/pure/__release - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1712 - i32.const 0 - call $~lib/string/String#indexOf - i32.const -1 - i32.ne - i32.const 1712 - call $~lib/rt/pure/__release - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const 1744 - call $~lib/string/String#padStart - local.tee $14 - global.get $std/string/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 15 - i32.const 1744 - call $~lib/string/String#padStart - local.tee $15 - global.get $std/string/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 3 - i32.const 1744 - call $~lib/string/String#padStart - local.tee $16 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 10 - i32.const 1280 - call $~lib/string/String#padStart - local.tee $17 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 100 - i32.const 1280 - call $~lib/string/String#padStart - local.tee $18 - i32.const 1328 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 5 - i32.const 1744 - call $~lib/string/String#padStart - local.tee $19 - i32.const 1840 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 6 - i32.const 1872 - call $~lib/string/String#padStart - local.tee $20 - i32.const 1904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 8 - i32.const 1872 - call $~lib/string/String#padStart - local.tee $21 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const 1744 - call $~lib/string/String#padEnd - local.tee $22 - global.get $std/string/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 15 - i32.const 1744 - call $~lib/string/String#padEnd - local.tee $23 - global.get $std/string/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 3 - i32.const 1744 - call $~lib/string/String#padEnd - local.tee $24 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 45 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 10 - i32.const 1280 - call $~lib/string/String#padEnd - local.tee $25 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 100 - i32.const 1280 - call $~lib/string/String#padEnd - local.tee $26 - i32.const 1328 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 5 - i32.const 1744 - call $~lib/string/String#padEnd - local.tee $27 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 6 - i32.const 1808 - call $~lib/string/String#padEnd - local.tee $28 - i32.const 2000 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 49 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 8 - i32.const 1808 - call $~lib/string/String#padEnd - local.tee $29 - i32.const 2032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1280 - i32.const 0 - call $~lib/string/String#indexOf - if - i32.const 0 - i32.const 1088 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1616 - i32.const 0 - call $~lib/string/String#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 53 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 1328 - i32.const 0 - call $~lib/string/String#indexOf - if - i32.const 0 - i32.const 1088 - i32.const 54 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - global.get $std/string/str - i32.const 0 - call $~lib/string/String#indexOf - if - i32.const 0 - i32.const 1088 - i32.const 55 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1280 - i32.const 0 - call $~lib/string/String#indexOf - if - i32.const 0 - i32.const 1088 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2064 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 57 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2096 - i32.const 0 - call $~lib/string/String#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2064 - i32.const 2 - call $~lib/string/String#indexOf - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2064 - i32.const 3 - call $~lib/string/String#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 60 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2128 - i32.const -1 - call $~lib/string/String#indexOf - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1280 - i32.const 2147483647 - call $~lib/string/String#lastIndexOf - if - i32.const 0 - i32.const 1088 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1616 - i32.const 2147483647 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1280 - i32.const 2147483647 - call $~lib/string/String#lastIndexOf - global.get $std/string/str - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 65 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2064 - i32.const 2147483647 - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2096 - i32.const 2147483647 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 67 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2160 - i32.const 2147483647 - call $~lib/string/String#lastIndexOf - i32.const 15 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 68 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2064 - i32.const 2 - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2064 - i32.const 3 - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2128 - i32.const -1 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 71 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2192 - i32.const 0 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1616 - i32.const 0 - call $~lib/string/String#lastIndexOf - if - i32.const 0 - i32.const 1088 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1280 - call $~lib/string/String#localeCompare - if - i32.const 0 - i32.const 1088 - i32.const 75 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 1280 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 76 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1328 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1648 - i32.const 1648 - call $~lib/string/String#localeCompare - if - i32.const 0 - i32.const 1088 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 2224 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2224 - i32.const 1808 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 80 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2256 - i32.const 1808 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 81 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 2256 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 82 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1776 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 83 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1296 - i32.const 1280 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - call $~lib/string/String#trimStart - local.tee $30 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 86 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2288 - call $~lib/string/String#trimStart - local.tee $31 - i32.const 2288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2320 - call $~lib/string/String#trimStart - local.tee $32 - i32.const 2368 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 88 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - call $~lib/string/String#trimEnd - local.tee $33 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 90 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2288 - call $~lib/string/String#trimEnd - local.tee $34 - i32.const 2288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 91 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2320 - call $~lib/string/String#trimEnd - local.tee $35 - i32.const 2400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - call $~lib/string/String#trim - local.tee $36 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 94 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2288 - call $~lib/string/String#trim - local.tee $37 - i32.const 2288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2320 - call $~lib/string/String#trim - local.tee $38 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 96 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2432 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 98 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2464 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 99 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2496 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2528 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2560 - i32.const 0 - call $~lib/string/parseInt - f64.const 5 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2592 - i32.const 0 - call $~lib/string/parseInt - f64.const 455 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2624 - i32.const 0 - call $~lib/string/parseInt - f64.const 3855 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2656 - i32.const 0 - call $~lib/string/parseInt - f64.const 3855 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2688 - i32.const 0 - call $~lib/string/parseInt - f64.const 11 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2720 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2752 - i32.const 0 - call $~lib/string/parseInt - f64.const -123 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2784 - i32.const 0 - call $~lib/string/parseInt - f64.const 123 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 109 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2816 - i32.const 0 - call $~lib/string/parseInt - f64.const -12 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2432 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2848 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 112 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2880 - i32.const 16 - call $~lib/string/parseInt - f64.const 2833 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2912 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2944 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2976 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3008 - i32.const 0 - call $~lib/string/parseInt - local.tee $3 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $3 - local.get $3 - f64.eq - i32.and - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3040 - i32.const 0 - call $~lib/string/parseInt - i32.const 3072 - i32.const 16 - call $~lib/string/parseInt - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 118 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3104 - i32.const 0 - call $~lib/string/parseInt - f64.const 36893488147419103232 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3104 - i32.const 13 - call $~lib/string/parseInt - f64.const 5135857308667095285760 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3168 - i32.const 10 - call $~lib/string/parseInt - f64.const -1.e+24 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3248 - i32.const 16 - call $~lib/string/parseInt - f64.const 75557863725914323419136 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 122 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3312 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3344 - i32.const 0 - call $~lib/string/parseInt - f64.const 2 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 124 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3376 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 126 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3408 - i32.const 0 - call $~lib/string/parseInt - f64.const 2 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 127 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 0 - call $~lib/string/parseInt - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 128 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3440 - i32.const 0 - call $~lib/string/parseInt - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 129 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3472 - i32.const 0 - call $~lib/string/parseInt - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 130 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1872 - i32.const 37 - call $~lib/string/parseInt - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 131 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3504 - i32.const 0 - call $~lib/string/parseInt - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 132 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3536 - i32.const 0 - call $~lib/string/parseInt - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 133 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3536 - i32.const 0 - call $~lib/util/string/strtol - f32.demote_f64 - local.set $6 - i32.const 3536 - call $~lib/rt/pure/__release - local.get $6 - local.get $6 - f32.eq - if - i32.const 0 - i32.const 1088 - i32.const 134 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3536 - i32.const 0 - call $~lib/string/parseInt - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 135 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3568 - call $~lib/util/string/strtol - i32.const 3568 - call $~lib/rt/pure/__release - i32.const 2147483647 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3616 - call $~lib/util/string/strtol - i32.const 3616 - call $~lib/rt/pure/__release - i64.const 9223372036854775807 - i64.ne - if - i32.const 0 - i32.const 1088 - i32.const 138 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2432 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 141 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2496 - call $~lib/string/parseFloat - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 142 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3856 - call $~lib/string/parseFloat - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3888 - call $~lib/string/parseFloat - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 144 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3920 - call $~lib/string/parseFloat - f64.const 1e-05 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 145 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3952 - call $~lib/string/parseFloat - f64.const -1e-05 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 146 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3984 - call $~lib/string/parseFloat - f64.const -3e-23 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 147 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4016 - call $~lib/string/parseFloat - f64.const 3e21 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 148 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4048 - call $~lib/string/parseFloat - f64.const 0.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 149 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4080 - call $~lib/string/parseFloat - f64.const 0.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 150 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4112 - call $~lib/string/parseFloat - f64.const 0.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4144 - call $~lib/string/parseFloat - f64.const 0.25 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 152 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4176 - call $~lib/string/parseFloat - f64.const 1e3 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 153 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4208 - call $~lib/string/parseFloat - f64.const 1e-10 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 154 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4240 - call $~lib/string/parseFloat - f64.const 1e-30 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 155 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4272 - call $~lib/string/parseFloat - f64.const 1e-323 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4304 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4336 - call $~lib/string/parseFloat - f64.const 1.e+308 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 158 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4368 - call $~lib/string/parseFloat - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 159 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 160 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4400 - call $~lib/string/parseFloat - f64.const 0.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4432 - call $~lib/string/parseFloat - f64.const 1e-10 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 164 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4480 - call $~lib/string/parseFloat - f64.const 10 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 165 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4512 - call $~lib/string/parseFloat - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 166 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4544 - call $~lib/string/parseFloat - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 167 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4576 - call $~lib/string/parseFloat - f64.const 10 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 168 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4624 - call $~lib/string/parseFloat - f64.const 123456789 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 169 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4672 - call $~lib/string/parseFloat - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 170 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4720 - call $~lib/string/parseFloat - f64.const 1e-60 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 172 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4752 - call $~lib/string/parseFloat - f64.const 1.e+60 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 173 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4784 - call $~lib/string/parseFloat - f64.const -0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 176 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4816 - call $~lib/string/parseFloat - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4848 - call $~lib/string/parseFloat - f64.const -1.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 178 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4896 - call $~lib/string/parseFloat - f64.const 10 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 179 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4944 - call $~lib/string/parseFloat - f64.const 10 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 180 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4992 - call $~lib/string/parseFloat - f64.const 0.022 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 181 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5024 - call $~lib/string/parseFloat - f64.const 11 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 182 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2848 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 183 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5056 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 184 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5088 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 185 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5120 - call $~lib/string/parseFloat - f64.const 1.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 186 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5152 - call $~lib/string/parseFloat - f64.const -1.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 187 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5184 - call $~lib/string/parseFloat - f64.const -1.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 188 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5216 - call $~lib/string/parseFloat - f64.const -1.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 189 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5248 - call $~lib/string/parseFloat - f64.const -1.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 190 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5280 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 191 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5312 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 192 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5344 - call $~lib/string/parseFloat - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5376 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 194 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5408 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 195 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5440 - call $~lib/string/parseFloat - f64.const 10 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 196 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5472 - call $~lib/string/parseFloat - f64.const 10 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 197 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5504 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 198 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5536 - call $~lib/string/parseFloat - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5568 - call $~lib/string/parseFloat - f64.const 0.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 200 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5600 - call $~lib/string/parseFloat - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 201 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5632 - call $~lib/string/parseFloat - f64.const 10 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 202 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5664 - call $~lib/string/parseFloat - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 203 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5696 - call $~lib/string/parseFloat - f64.const 0.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 204 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5728 - call $~lib/string/parseFloat - f64.const 0.01 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 205 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5760 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 206 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5792 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 207 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5824 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 208 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5856 - call $~lib/string/parseFloat - f64.const 0.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5888 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 210 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5920 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 211 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5952 - call $~lib/string/parseFloat - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 212 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5984 - call $~lib/string/parseFloat - f64.const 0.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 213 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6016 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 214 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6048 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 215 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6080 - call $~lib/string/parseFloat - f64.const -0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 216 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6112 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 217 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3008 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 218 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3472 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 219 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3440 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 220 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6144 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 221 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6176 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 222 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6208 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 223 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6240 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 224 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6272 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 225 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6304 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 226 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6336 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 227 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6368 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 228 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6400 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 229 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6432 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 230 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6464 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 231 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6496 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 232 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6528 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 233 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6560 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 234 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6592 - call $~lib/string/parseFloat - f64.const 1e22 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 235 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6624 - call $~lib/string/parseFloat - f64.const 1e-22 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 236 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6656 - call $~lib/string/parseFloat - f64.const 1.e+23 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 237 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6688 - call $~lib/string/parseFloat - f64.const 1e-23 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 238 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6720 - call $~lib/string/parseFloat - f64.const 1.e+37 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 239 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6752 - call $~lib/string/parseFloat - f64.const 1e-37 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 240 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6784 - call $~lib/string/parseFloat - f64.const 1.e+38 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 241 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6816 - call $~lib/string/parseFloat - f64.const 1e-38 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 242 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6848 - call $~lib/string/parseFloat - f64.const 2.220446049250313e-16 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 243 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6912 - call $~lib/string/parseFloat - f64.const 1797693134862315708145274e284 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 244 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6976 - call $~lib/string/parseFloat - f64.const 5e-324 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 245 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7008 - call $~lib/string/parseFloat - f64.const 1.e+308 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 246 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7056 - call $~lib/string/parseFloat - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 247 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7200 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 248 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7232 - call $~lib/string/parseFloat - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 249 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7264 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 250 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7296 - call $~lib/string/parseFloat - f64.const -inf - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 251 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7328 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 252 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7376 - call $~lib/string/parseFloat - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 253 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7424 - call $~lib/string/parseFloat - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 254 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7456 - call $~lib/string/parseFloat - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 255 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7504 - call $~lib/string/parseFloat - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 256 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7552 - call $~lib/string/parseFloat - f64.const -inf - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 257 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7600 - call $~lib/string/parseFloat - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 258 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7648 - call $~lib/string/parseFloat - f64.const inf - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 259 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7696 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 260 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7728 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 261 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7760 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 262 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7792 - call $~lib/string/parseFloat - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 266 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7984 - call $~lib/string/parseFloat - f64.const 1e-323 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 279 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8176 - call $~lib/string/parseFloat - f64.const 2.225073858507202e-308 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 283 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8368 - i32.const 8528 - call $~lib/string/String.__concat - local.tee $40 - i32.const 8688 - call $~lib/string/String.__concat - local.tee $41 - i32.const 8848 - call $~lib/string/String.__concat - local.tee $42 - i32.const 9008 - call $~lib/string/String.__concat - local.tee $43 - call $~lib/string/parseFloat - f64.const 1797693134862315708145274e284 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 286 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9168 - call $~lib/string/parseFloat - f64.const 9.753531888799502e-104 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 304 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9280 - call $~lib/string/parseFloat - f64.const 0.5961860348131807 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 305 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9392 - call $~lib/string/parseFloat - f64.const 0.18150131692180388 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 306 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9504 - call $~lib/string/parseFloat - f64.const 0.42070823575344535 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 307 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9616 - call $~lib/string/parseFloat - f64.const 0.6654686306516261 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 308 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9728 - call $~lib/string/parseFloat - f64.const 0.6101852922970868 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 309 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9840 - call $~lib/string/parseFloat - f64.const 0.7696695208236968 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 310 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9952 - call $~lib/string/parseFloat - f64.const 0.25050653222286823 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 311 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10064 - call $~lib/string/parseFloat - f64.const 0.2740037230228005 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 312 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10176 - call $~lib/string/parseFloat - f64.const 0.20723093500497428 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 313 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10288 - call $~lib/string/parseFloat - f64.const 7.900280238081605 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 314 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10400 - call $~lib/string/parseFloat - f64.const 98.22860653737297 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 315 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10512 - call $~lib/string/parseFloat - f64.const 746.894972319037 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 316 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10624 - call $~lib/string/parseFloat - f64.const 1630.2683202827284 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 317 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10736 - call $~lib/string/parseFloat - f64.const 46371.68629719171 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 318 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10848 - call $~lib/string/parseFloat - f64.const 653780.5944497711 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 319 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10960 - call $~lib/string/parseFloat - f64.const 234632.43565024371 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 320 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11072 - call $~lib/string/parseFloat - f64.const 97094817.16420048 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 321 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11184 - call $~lib/string/parseFloat - f64.const 499690852.20518744 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 322 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11296 - call $~lib/string/parseFloat - f64.const 7925201200557245595648 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 323 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11408 - call $~lib/string/parseFloat - f64.const 6096564585983177528398588e5 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 324 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11520 - call $~lib/string/parseFloat - f64.const 4800416117477028695992383e42 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 325 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11632 - call $~lib/string/parseFloat - f64.const 8524829079817968137287277e80 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 326 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11744 - call $~lib/string/parseFloat - f64.const 3271239291709782092398754e243 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 327 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11856 - call $~lib/string/parseFloat - local.tee $3 - local.get $3 - f64.eq - if - i32.const 0 - i32.const 1088 - i32.const 330 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11888 - call $~lib/string/parseFloat - f64.const 0.1 - f64.ne - if - i32.const 0 - i32.const 1088 - i32.const 331 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 11920 - call $~lib/string/String.__concat - local.tee $0 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 11952 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 335 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1328 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 336 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1280 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 338 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 0 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 339 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1280 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 340 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 11920 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 341 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 1328 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 342 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11984 - i32.const 12016 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 343 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11984 - i32.const 11984 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 344 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12048 - i32.const 12080 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 345 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12112 - i32.const 12144 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 346 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12176 - i32.const 12176 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 347 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12176 - i32.const 12208 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 348 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12240 - i32.const 12288 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 349 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11920 - i32.const 1328 - call $~lib/string/String.__gt - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 351 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12336 - i32.const 1328 - call $~lib/string/String.__gt - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 352 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12336 - i32.const 12368 - call $~lib/string/String.__gte - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 353 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12336 - i32.const 11952 - call $~lib/string/String.__gt - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 354 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12336 - i32.const 11952 - call $~lib/string/String.__lt - if - i32.const 0 - i32.const 1088 - i32.const 355 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11920 - i32.const 0 - call $~lib/string/String.__lt - if - i32.const 0 - i32.const 1088 - i32.const 357 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 11920 - call $~lib/string/String.__lt - if - i32.const 0 - i32.const 1088 - i32.const 358 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1280 - call $~lib/string/String.__gt - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 360 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1808 - call $~lib/string/String.__lt - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 361 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1280 - call $~lib/string/String.__gte - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 362 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - call $~lib/string/String.__lte - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 363 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1280 - call $~lib/string/String.__lt - if - i32.const 0 - i32.const 1088 - i32.const 364 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1808 - call $~lib/string/String.__gt - if - i32.const 0 - i32.const 1088 - i32.const 365 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1280 - call $~lib/string/String.__lt - if - i32.const 0 - i32.const 1088 - i32.const 366 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1280 - call $~lib/string/String.__gt - if - i32.const 0 - i32.const 1088 - i32.const 367 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1280 - call $~lib/string/String.__gte - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 368 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - call $~lib/string/String.__lte - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 369 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 65377 - call $~lib/string/String.fromCodePoint - local.tee $5 - i32.const 55296 - call $~lib/string/String.fromCodePoint - local.tee $2 - i32.const 56322 - call $~lib/string/String.fromCodePoint - local.tee $4 - call $~lib/string/String.__concat - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/string/String.__gt - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 374 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1872 - call $~lib/string/String#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 377 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 100 - call $~lib/string/String#repeat - local.tee $44 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 379 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 0 - call $~lib/string/String#repeat - local.tee $45 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 380 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 1 - call $~lib/string/String#repeat - local.tee $46 - i32.const 1328 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 381 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 2 - call $~lib/string/String#repeat - local.tee $47 - i32.const 12368 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 382 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 3 - call $~lib/string/String#repeat - local.tee $48 - i32.const 12448 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 383 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11952 - i32.const 4 - call $~lib/string/String#repeat - local.tee $49 - i32.const 12480 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 384 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 5 - call $~lib/string/String#repeat - local.tee $50 - i32.const 12512 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 385 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 6 - call $~lib/string/String#repeat - local.tee $51 - i32.const 12544 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 386 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1328 - i32.const 7 - call $~lib/string/String#repeat - local.tee $52 - i32.const 12576 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 387 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1280 - i32.const 1280 - call $~lib/string/String#replace - local.tee $53 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 389 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1280 - i32.const 3472 - call $~lib/string/String#replace - local.tee $54 - i32.const 3472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 390 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3472 - i32.const 3472 - i32.const 1280 - call $~lib/string/String#replace - local.tee $55 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 391 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3472 - i32.const 1280 - i32.const 1280 - call $~lib/string/String#replace - local.tee $56 - i32.const 3472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 392 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 3440 - i32.const 3472 - call $~lib/string/String#replace - local.tee $57 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 393 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1808 - i32.const 3472 - call $~lib/string/String#replace - local.tee $58 - i32.const 3472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 394 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 2256 - i32.const 3472 - call $~lib/string/String#replace - local.tee $59 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 395 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 11952 - i32.const 11952 - call $~lib/string/String#replace - local.tee $60 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 396 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12608 - i32.const 3440 - i32.const 3472 - call $~lib/string/String#replace - local.tee $61 - i32.const 12640 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 397 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1280 - i32.const 3472 - call $~lib/string/String#replace - local.tee $62 - i32.const 12672 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 398 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12704 - i32.const 12736 - i32.const 3472 - call $~lib/string/String#replace - local.tee $63 - i32.const 12672 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 399 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 12768 - i32.const 12800 - call $~lib/string/String#replace - local.tee $64 - i32.const 12832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 400 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 12768 - i32.const 1280 - call $~lib/string/String#replace - local.tee $65 - i32.const 11952 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 401 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1280 - i32.const 1808 - call $~lib/string/String#replaceAll - local.tee $66 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 403 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 3440 - i32.const 3472 - call $~lib/string/String#replaceAll - local.tee $67 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 404 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2000 - i32.const 1808 - i32.const 3472 - call $~lib/string/String#replaceAll - local.tee $68 - i32.const 12800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 406 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12864 - i32.const 1808 - i32.const 3472 - call $~lib/string/String#replaceAll - local.tee $69 - i32.const 12912 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 407 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2000 - i32.const 11952 - i32.const 11952 - call $~lib/string/String#replaceAll - local.tee $70 - i32.const 2000 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 408 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12944 - i32.const 1328 - i32.const 12912 - call $~lib/string/String#replaceAll - local.tee $71 - i32.const 12976 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 409 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2000 - i32.const 11952 - i32.const 12800 - call $~lib/string/String#replaceAll - local.tee $72 - i32.const 13024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 410 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13056 - i32.const 13088 - i32.const 12800 - call $~lib/string/String#replaceAll - local.tee $73 - i32.const 13120 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 411 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 2256 - i32.const 3472 - call $~lib/string/String#replaceAll - local.tee $74 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 412 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2256 - i32.const 13152 - i32.const 12800 - call $~lib/string/String#replaceAll - local.tee $75 - i32.const 2256 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 413 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 13184 - i32.const 3472 - call $~lib/string/String#replaceAll - local.tee $76 - i32.const 13216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 414 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11952 - i32.const 11952 - i32.const 3472 - call $~lib/string/String#replaceAll - local.tee $77 - i32.const 3472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 415 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12608 - i32.const 3440 - i32.const 3472 - call $~lib/string/String#replaceAll - local.tee $78 - i32.const 13248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 416 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1280 - i32.const 1280 - call $~lib/string/String#replaceAll - local.tee $79 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 418 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1280 - i32.const 3472 - call $~lib/string/String#replaceAll - local.tee $80 - i32.const 3472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 419 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3472 - i32.const 3472 - i32.const 1280 - call $~lib/string/String#replaceAll - local.tee $81 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 420 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3472 - i32.const 1280 - i32.const 1280 - call $~lib/string/String#replaceAll - local.tee $82 - i32.const 3472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 421 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1808 - i32.const 3440 - call $~lib/string/String#replaceAll - local.tee $83 - i32.const 3440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 422 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 2224 - i32.const 3440 - call $~lib/string/String#replaceAll - local.tee $84 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 423 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1280 - i32.const 3472 - call $~lib/string/String#replaceAll - local.tee $85 - i32.const 13280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 424 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1280 - i32.const 1280 - call $~lib/string/String#replaceAll - local.tee $86 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 425 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - call $~lib/rt/pure/__release - i32.const 13312 - global.set $std/string/str - i32.const 13312 - i32.const 0 - i32.const 2147483647 - call $~lib/string/String#slice - local.tee $87 - i32.const 13312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 429 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -1 - i32.const 2147483647 - call $~lib/string/String#slice - local.tee $88 - i32.const 13360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 430 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -5 - i32.const 2147483647 - call $~lib/string/String#slice - local.tee $89 - i32.const 13392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 431 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2 - i32.const 7 - call $~lib/string/String#slice - local.tee $90 - i32.const 13424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 432 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -11 - i32.const -6 - call $~lib/string/String#slice - local.tee $91 - i32.const 13456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 433 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const 3 - call $~lib/string/String#slice - local.tee $92 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 434 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const -1 - call $~lib/string/String#slice - local.tee $93 - i32.const 13488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 435 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const 2147483647 - call $~lib/string/String#substr - local.tee $94 - i32.const 13312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 437 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -1 - i32.const 2147483647 - call $~lib/string/String#substr - local.tee $95 - i32.const 13360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 438 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -5 - i32.const 2147483647 - call $~lib/string/String#substr - local.tee $96 - i32.const 13392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 439 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2 - i32.const 7 - call $~lib/string/String#substr - local.tee $97 - i32.const 13536 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 440 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -11 - i32.const -6 - call $~lib/string/String#substr - local.tee $98 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 441 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const 3 - call $~lib/string/String#substr - local.tee $99 - i32.const 13568 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 442 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const -1 - call $~lib/string/String#substr - local.tee $100 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 443 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const 100 - call $~lib/string/String#substr - local.tee $101 - i32.const 13312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 444 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const 4 - call $~lib/string/String#substr - local.tee $102 - i32.const 13600 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 445 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const -3 - call $~lib/string/String#substr - local.tee $103 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 446 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const 2147483647 - call $~lib/string/String#substring - local.tee $104 - i32.const 13312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 448 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -1 - i32.const 2147483647 - call $~lib/string/String#substring - local.tee $105 - i32.const 13312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 449 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -5 - i32.const 2147483647 - call $~lib/string/String#substring - local.tee $106 - i32.const 13312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 450 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2 - i32.const 7 - call $~lib/string/String#substring - local.tee $107 - i32.const 13424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 451 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -11 - i32.const -6 - call $~lib/string/String#substring - local.tee $108 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 452 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const 3 - call $~lib/string/String#substring - local.tee $109 - i32.const 13632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 453 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const -1 - call $~lib/string/String#substring - local.tee $110 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 454 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const 100 - call $~lib/string/String#substring - local.tee $111 - i32.const 13312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 455 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const 4 - call $~lib/string/String#substring - local.tee $112 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 456 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const -3 - call $~lib/string/String#substring - local.tee $113 - i32.const 2256 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 457 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 0 - i32.const 2147483647 - call $~lib/string/String#split - local.tee $4 - i32.load offset=12 - i32.const 1 - i32.eq - if - local.get $4 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1280 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 1280 - i32.const 2147483647 - call $~lib/string/String#split - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=12 - if - i32.const 0 - i32.const 1088 - i32.const 465 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - i32.const 2064 - i32.const 2147483647 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 1 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1280 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 467 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 13888 - i32.const 6272 - i32.const 2147483647 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 1 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 13888 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 469 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 13888 - i32.const 2064 - i32.const 2147483647 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 3 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 11920 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 12768 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 471 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 13920 - i32.const 13952 - i32.const 2147483647 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 3 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 11920 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 12768 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 473 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 13984 - i32.const 2064 - i32.const 2147483647 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 4 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 11920 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1280 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 12768 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 475 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 14016 - i32.const 2064 - i32.const 2147483647 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 4 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1280 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 11920 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 12768 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 477 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 14048 - i32.const 2064 - i32.const 2147483647 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 4 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 11920 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 12768 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1280 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 479 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1280 - i32.const 2147483647 - call $~lib/string/String#split - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.load offset=12 - i32.const 3 - i32.eq - if - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 1328 - call $~lib/string/String.__eq - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 11920 - call $~lib/string/String.__eq - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 12768 - call $~lib/string/String.__eq - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 481 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1280 - i32.const 0 - call $~lib/string/String#split - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=12 - if - i32.const 0 - i32.const 1088 - i32.const 483 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1280 - i32.const 1 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 1 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 485 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 13888 - i32.const 2064 - i32.const 1 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 1 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 487 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1280 - i32.const 4 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 3 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 11920 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 12768 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 489 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 1280 - i32.const -1 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 3 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 1328 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 11920 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $1 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.const 12768 - call $~lib/string/String.__eq - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 491 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 13888 - i32.const 2064 - i32.const -1 - call $~lib/string/String#split - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.load offset=12 - i32.const 3 - i32.eq - if - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 1328 - call $~lib/string/String.__eq - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 11920 - call $~lib/string/String.__eq - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - if - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 12768 - call $~lib/string/String.__eq - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $2 - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 493 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $114 - i32.const 2432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 498 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $115 - i32.const 2496 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 499 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $116 - i32.const 14368 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 500 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $117 - i32.const 14400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 501 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 123 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $118 - i32.const 1872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 502 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1000 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $119 - i32.const 14432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 503 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1234 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $120 - i32.const 14464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 504 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12345 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $121 - i32.const 14496 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 505 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 123456 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $122 - i32.const 14528 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 506 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1111111 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $123 - i32.const 14560 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 507 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1234567 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $124 - i32.const 14592 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 508 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12345678 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $125 - i32.const 14624 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 509 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 123456789 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $126 - i32.const 14656 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 510 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483646 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $127 - i32.const 14704 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 511 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483647 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $128 - i32.const 14752 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 512 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $129 - i32.const 14800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 513 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $130 - i32.const 14848 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 514 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $131 - i32.const 2432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 516 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1000 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $132 - i32.const 14880 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 517 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483647 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $133 - i32.const 14752 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 518 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $134 - i32.const 14912 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 519 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $135 - i32.const 14960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 520 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $136 - i32.const 2432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 524 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $137 - i32.const 2496 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 525 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $138 - i32.const 14368 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 526 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $139 - i32.const 12768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 527 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 123 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $140 - i32.const 15008 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 528 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1234 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $141 - i32.const 15040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 529 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12345 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $142 - i32.const 15072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 530 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 123456 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $143 - i32.const 15104 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 531 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1111111 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $144 - i32.const 15136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 532 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1234567 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $145 - i32.const 15168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 533 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12345678 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $146 - i32.const 15200 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 534 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 123456789 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $147 - i32.const 15232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 535 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483646 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $148 - i32.const 15264 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 536 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483647 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $149 - i32.const 15296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 537 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $150 - i32.const 15328 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 538 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $151 - i32.const 15360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 539 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $152 - i32.const 2432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 541 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -4096 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $153 - i32.const 14432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 542 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483647 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $154 - i32.const 15296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 543 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483647 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $155 - i32.const 15392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 544 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -268435455 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $156 - i32.const 15440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 545 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $157 - i32.const 15472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 546 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $158 - i32.const 15472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 547 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $159 - i32.const 2432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 551 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $160 - i32.const 2496 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 552 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $161 - i32.const 15520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 553 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $162 - i32.const 15552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 554 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $163 - i32.const 15584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 555 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 29 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $164 - i32.const 15616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 556 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 59 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $165 - i32.const 15648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 557 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4095 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $166 - i32.const 15680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 558 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 33554431 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $167 - i32.const 15728 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 559 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -12 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $168 - i32.const 15808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 560 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -4 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $169 - i32.const 15888 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 561 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $170 - i32.const 15968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 562 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $171 - i32.const 16048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 563 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2047 - i32.const 2 - call $~lib/util/number/itoa32 - local.tee $172 - i32.const 16128 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 565 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 3 - call $~lib/util/number/utoa32 - local.tee $173 - i32.const 16176 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 569 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 4 - call $~lib/util/number/utoa32 - local.tee $174 - i32.const 16240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 570 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 5 - call $~lib/util/number/utoa32 - local.tee $175 - i32.const 16288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 571 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 8 - call $~lib/util/number/utoa32 - local.tee $176 - i32.const 16336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 572 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 11 - call $~lib/util/number/utoa32 - local.tee $177 - i32.const 16384 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 573 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 15 - call $~lib/util/number/utoa32 - local.tee $178 - i32.const 16432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 574 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 17 - call $~lib/util/number/utoa32 - local.tee $179 - i32.const 16480 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 575 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 21 - call $~lib/util/number/utoa32 - local.tee $180 - i32.const 16512 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 576 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 27 - call $~lib/util/number/utoa32 - local.tee $181 - i32.const 16544 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 577 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 32 - call $~lib/util/number/utoa32 - local.tee $182 - i32.const 16576 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 578 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 36 - call $~lib/util/number/utoa32 - local.tee $183 - i32.const 16608 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 579 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $184 - i32.const 2432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 583 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 12 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $185 - i32.const 14400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 584 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 123 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $186 - i32.const 1872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 585 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1234 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $187 - i32.const 14464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 586 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 12345 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $188 - i32.const 14496 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 587 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 123456 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $189 - i32.const 14528 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 588 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1234567 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $190 - i32.const 14592 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 589 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 99999999 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $191 - i32.const 16640 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 590 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 100000000 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $192 - i32.const 16672 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 591 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967295 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $193 - i32.const 14960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 592 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967297 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $194 - i32.const 16720 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 593 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 68719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $195 - i32.const 16768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 594 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 868719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $196 - i32.const 16816 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 595 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 8687194767350 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $197 - i32.const 16864 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 596 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 86871947673501 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $198 - i32.const 16912 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 597 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $199 - i32.const 16960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 598 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $200 - i32.const 17008 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 599 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 19999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $201 - i32.const 17056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 600 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 129999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $202 - i32.const 17120 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 601 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1239999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $203 - i32.const 17184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 602 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $204 - i32.const 17248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 603 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $205 - i32.const 2432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 605 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1234 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $206 - i32.const 17312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 606 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967295 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $207 - i32.const 14960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 607 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967297 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $208 - i32.const 16720 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 608 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4294967295 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $209 - i32.const 17344 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 609 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 68719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $210 - i32.const 16768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 610 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -68719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $211 - i32.const 17392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 611 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -868719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $212 - i32.const 17440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 612 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -999868719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $213 - i32.const 17488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 613 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -19999868719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $214 - i32.const 17536 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 614 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9223372036854775807 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $215 - i32.const 17600 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 615 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9223372036854775808 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $216 - i32.const 17664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 616 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $217 - i32.const 2432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 620 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $218 - i32.const 2496 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 621 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 12 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $219 - i32.const 12768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 622 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1234 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $220 - i32.const 15040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 623 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1111111 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $221 - i32.const 15136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 624 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 8589934591 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $222 - i32.const 17728 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 625 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 5942249508321 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $223 - i32.const 17776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 626 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 76310993685985 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $224 - i32.const 17824 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 627 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 920735923817967 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $225 - i32.const 17872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 628 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9927935178558959 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $226 - i32.const 17920 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 629 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 81985529216486895 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $227 - i32.const 17968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 630 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1311768467463790320 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $228 - i32.const 18016 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 631 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9223372036854775807 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $229 - i32.const 18064 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 632 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $230 - i32.const 18112 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 633 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9223372036854775807 - i32.const 16 - call $~lib/util/number/itoa64 - local.tee $231 - i32.const 18160 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 635 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9223372036854775808 - i32.const 16 - call $~lib/util/number/itoa64 - local.tee $232 - i32.const 18224 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 636 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9223372036854775808 - i32.const 16 - call $~lib/util/number/itoa64 - local.tee $233 - i32.const 18224 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 637 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $234 - i32.const 2432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 641 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $235 - i32.const 2496 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 642 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 7 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $236 - i32.const 15552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 643 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 14 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $237 - i32.const 15584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 644 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 59 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $238 - i32.const 15648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 645 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4095 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $239 - i32.const 15680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 646 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967295 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $240 - i32.const 16048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 647 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 562949953421311 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $241 - i32.const 18288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 648 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $242 - i32.const 18416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 649 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -8589934591 - i32.const 2 - call $~lib/util/number/itoa64 - local.tee $243 - i32.const 18560 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 651 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 3 - call $~lib/util/number/utoa64 - local.tee $244 - i32.const 18656 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 655 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 4 - call $~lib/util/number/utoa64 - local.tee $245 - i32.const 18768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 656 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 5 - call $~lib/util/number/utoa64 - local.tee $246 - i32.const 18848 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 657 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 8 - call $~lib/util/number/utoa64 - local.tee $247 - i32.const 18928 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 658 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 11 - call $~lib/util/number/utoa64 - local.tee $248 - i32.const 18992 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 659 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 15 - call $~lib/util/number/utoa64 - local.tee $249 - i32.const 19056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 660 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 17 - call $~lib/util/number/utoa64 - local.tee $250 - i32.const 19120 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 661 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 21 - call $~lib/util/number/utoa64 - local.tee $251 - i32.const 19168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 662 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 27 - call $~lib/util/number/utoa64 - local.tee $252 - i32.const 19216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 663 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 32 - call $~lib/util/number/utoa64 - local.tee $253 - i32.const 19264 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 664 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 36 - call $~lib/util/number/utoa64 - local.tee $254 - i32.const 19312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 665 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - call $~lib/util/number/dtoa - local.tee $255 - i32.const 19360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 668 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - call $~lib/util/number/dtoa - local.tee $256 - i32.const 19360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 669 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - call $~lib/util/number/dtoa - local.tee $257 - i32.const 6336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 670 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - call $~lib/util/number/dtoa - local.tee $258 - i32.const 19392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 671 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - call $~lib/util/number/dtoa - local.tee $259 - i32.const 7552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 672 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.220446049250313e-16 - call $~lib/util/number/dtoa - local.tee $260 - i32.const 6848 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 673 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -2.220446049250313e-16 - call $~lib/util/number/dtoa - local.tee $261 - i32.const 20336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 674 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1797693134862315708145274e284 - call $~lib/util/number/dtoa - local.tee $262 - i32.const 6912 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 675 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1797693134862315708145274e284 - call $~lib/util/number/dtoa - local.tee $263 - i32.const 20400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 676 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4185580496821356722454785e274 - call $~lib/util/number/dtoa - local.tee $264 - i32.const 20464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 677 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - call $~lib/util/number/dtoa - local.tee $265 - i32.const 20528 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 678 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.940656e-318 - call $~lib/util/number/dtoa - local.tee $266 - i32.const 20592 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 681 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9060801153433600 - call $~lib/util/number/dtoa - local.tee $267 - i32.const 20640 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 682 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4708356024711512064 - call $~lib/util/number/dtoa - local.tee $268 - i32.const 20704 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 683 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9409340012568248320 - call $~lib/util/number/dtoa - local.tee $269 - i32.const 20768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 684 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - call $~lib/util/number/dtoa - local.tee $270 - i32.const 6976 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 685 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - call $~lib/util/number/dtoa - local.tee $271 - i32.const 20832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 691 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.1 - call $~lib/util/number/dtoa - local.tee $272 - i32.const 4112 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 692 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - call $~lib/util/number/dtoa - local.tee $273 - i32.const 20864 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 693 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.1 - call $~lib/util/number/dtoa - local.tee $274 - i32.const 20896 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 694 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e6 - call $~lib/util/number/dtoa - local.tee $275 - i32.const 20928 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 696 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-06 - call $~lib/util/number/dtoa - local.tee $276 - i32.const 20976 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 697 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e6 - call $~lib/util/number/dtoa - local.tee $277 - i32.const 21008 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 698 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e-06 - call $~lib/util/number/dtoa - local.tee $278 - i32.const 21056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 699 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e7 - call $~lib/util/number/dtoa - local.tee $279 - i32.const 21104 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 700 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-07 - call $~lib/util/number/dtoa - local.tee $280 - i32.const 21152 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 701 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.e+308 - call $~lib/util/number/dtoa - local.tee $281 - i32.const 4336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 703 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.e+308 - call $~lib/util/number/dtoa - local.tee $282 - i32.const 21184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 704 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - call $~lib/util/number/dtoa - local.tee $283 - i32.const 19392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 705 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - call $~lib/util/number/dtoa - local.tee $284 - i32.const 7552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 706 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-308 - call $~lib/util/number/dtoa - local.tee $285 - i32.const 21216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 707 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e-308 - call $~lib/util/number/dtoa - local.tee $286 - i32.const 21248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 708 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-323 - call $~lib/util/number/dtoa - local.tee $287 - i32.const 21280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 709 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e-323 - call $~lib/util/number/dtoa - local.tee $288 - i32.const 21312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 710 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - call $~lib/util/number/dtoa - local.tee $289 - i32.const 19360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 711 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967272 - call $~lib/util/number/dtoa - local.tee $290 - i32.const 21344 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 713 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.2312145673456234e-08 - call $~lib/util/number/dtoa - local.tee $291 - i32.const 21392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 714 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 555555555.5555556 - call $~lib/util/number/dtoa - local.tee $292 - i32.const 21456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 716 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999999999999999 - call $~lib/util/number/dtoa - local.tee $293 - i32.const 21520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 717 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - call $~lib/util/number/dtoa - local.tee $294 - i32.const 20832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 718 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 12.34 - call $~lib/util/number/dtoa - local.tee $295 - i32.const 21584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 719 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.3333333333333333 - call $~lib/util/number/dtoa - local.tee $296 - i32.const 21616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 721 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1234e17 - call $~lib/util/number/dtoa - local.tee $297 - i32.const 21680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 722 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1234e18 - call $~lib/util/number/dtoa - local.tee $298 - i32.const 21744 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 723 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.71828 - call $~lib/util/number/dtoa - local.tee $299 - i32.const 21792 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 724 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.0271828 - call $~lib/util/number/dtoa - local.tee $5 - i32.const 21824 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 725 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 271.828 - call $~lib/util/number/dtoa - local.tee $2 - i32.const 21872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 726 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1e+128 - call $~lib/util/number/dtoa - local.tee $4 - i32.const 21904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 727 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1e-64 - call $~lib/util/number/dtoa - local.tee $1 - i32.const 21936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 728 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.000035689 - call $~lib/util/number/dtoa - local.tee $0 - i32.const 21968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 729 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $55 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $59 - call $~lib/rt/pure/__release - local.get $60 - call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - local.get $64 - call $~lib/rt/pure/__release - local.get $65 - call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $67 - call $~lib/rt/pure/__release - local.get $68 - call $~lib/rt/pure/__release - local.get $69 - call $~lib/rt/pure/__release - local.get $70 - call $~lib/rt/pure/__release - local.get $71 - call $~lib/rt/pure/__release - local.get $72 - call $~lib/rt/pure/__release - local.get $73 - call $~lib/rt/pure/__release - local.get $74 - call $~lib/rt/pure/__release - local.get $75 - call $~lib/rt/pure/__release - local.get $76 - call $~lib/rt/pure/__release - local.get $77 - call $~lib/rt/pure/__release - local.get $78 - call $~lib/rt/pure/__release - local.get $79 - call $~lib/rt/pure/__release - local.get $80 - call $~lib/rt/pure/__release - local.get $81 - call $~lib/rt/pure/__release - local.get $82 - call $~lib/rt/pure/__release - local.get $83 - call $~lib/rt/pure/__release - local.get $84 - call $~lib/rt/pure/__release - local.get $85 - call $~lib/rt/pure/__release - local.get $86 - call $~lib/rt/pure/__release - local.get $87 - call $~lib/rt/pure/__release - local.get $88 - call $~lib/rt/pure/__release - local.get $89 - call $~lib/rt/pure/__release - local.get $90 - call $~lib/rt/pure/__release - local.get $91 - call $~lib/rt/pure/__release - local.get $92 - call $~lib/rt/pure/__release - local.get $93 - call $~lib/rt/pure/__release - local.get $94 - call $~lib/rt/pure/__release - local.get $95 - call $~lib/rt/pure/__release - local.get $96 - call $~lib/rt/pure/__release - local.get $97 - call $~lib/rt/pure/__release - local.get $98 - call $~lib/rt/pure/__release - local.get $99 - call $~lib/rt/pure/__release - local.get $100 - call $~lib/rt/pure/__release - local.get $101 - call $~lib/rt/pure/__release - local.get $102 - call $~lib/rt/pure/__release - local.get $103 - call $~lib/rt/pure/__release - local.get $104 - call $~lib/rt/pure/__release - local.get $105 - call $~lib/rt/pure/__release - local.get $106 - call $~lib/rt/pure/__release - local.get $107 - call $~lib/rt/pure/__release - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release - local.get $112 - call $~lib/rt/pure/__release - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - call $~lib/rt/pure/__release - local.get $116 - call $~lib/rt/pure/__release - local.get $115 - call $~lib/rt/pure/__release - local.get $117 - call $~lib/rt/pure/__release - local.get $118 - call $~lib/rt/pure/__release - local.get $119 - call $~lib/rt/pure/__release - local.get $120 - call $~lib/rt/pure/__release - local.get $121 - call $~lib/rt/pure/__release - local.get $122 - call $~lib/rt/pure/__release - local.get $123 - call $~lib/rt/pure/__release - local.get $124 - call $~lib/rt/pure/__release - local.get $125 - call $~lib/rt/pure/__release - local.get $126 - call $~lib/rt/pure/__release - local.get $127 - call $~lib/rt/pure/__release - local.get $128 - call $~lib/rt/pure/__release - local.get $129 - call $~lib/rt/pure/__release - local.get $130 - call $~lib/rt/pure/__release - local.get $131 - call $~lib/rt/pure/__release - local.get $132 - call $~lib/rt/pure/__release - local.get $133 - call $~lib/rt/pure/__release - local.get $134 - call $~lib/rt/pure/__release - local.get $135 - call $~lib/rt/pure/__release - local.get $136 - call $~lib/rt/pure/__release - local.get $137 - call $~lib/rt/pure/__release - local.get $138 - call $~lib/rt/pure/__release - local.get $139 - call $~lib/rt/pure/__release - local.get $140 - call $~lib/rt/pure/__release - local.get $141 - call $~lib/rt/pure/__release - local.get $142 - call $~lib/rt/pure/__release - local.get $143 - call $~lib/rt/pure/__release - local.get $144 - call $~lib/rt/pure/__release - local.get $145 - call $~lib/rt/pure/__release - local.get $146 - call $~lib/rt/pure/__release - local.get $147 - call $~lib/rt/pure/__release - local.get $148 - call $~lib/rt/pure/__release - local.get $149 - call $~lib/rt/pure/__release - local.get $150 - call $~lib/rt/pure/__release - local.get $151 - call $~lib/rt/pure/__release - local.get $152 - call $~lib/rt/pure/__release - local.get $153 - call $~lib/rt/pure/__release - local.get $154 - call $~lib/rt/pure/__release - local.get $155 - call $~lib/rt/pure/__release - local.get $156 - call $~lib/rt/pure/__release - local.get $157 - call $~lib/rt/pure/__release - local.get $158 - call $~lib/rt/pure/__release - local.get $159 - call $~lib/rt/pure/__release - local.get $160 - call $~lib/rt/pure/__release - local.get $161 - call $~lib/rt/pure/__release - local.get $162 - call $~lib/rt/pure/__release - local.get $163 - call $~lib/rt/pure/__release - local.get $164 - call $~lib/rt/pure/__release - local.get $165 - call $~lib/rt/pure/__release - local.get $166 - call $~lib/rt/pure/__release - local.get $167 - call $~lib/rt/pure/__release - local.get $168 - call $~lib/rt/pure/__release - local.get $169 - call $~lib/rt/pure/__release - local.get $170 - call $~lib/rt/pure/__release - local.get $171 - call $~lib/rt/pure/__release - local.get $172 - call $~lib/rt/pure/__release - local.get $173 - call $~lib/rt/pure/__release - local.get $174 - call $~lib/rt/pure/__release - local.get $175 - call $~lib/rt/pure/__release - local.get $176 - call $~lib/rt/pure/__release - local.get $177 - call $~lib/rt/pure/__release - local.get $178 - call $~lib/rt/pure/__release - local.get $179 - call $~lib/rt/pure/__release - local.get $180 - call $~lib/rt/pure/__release - local.get $181 - call $~lib/rt/pure/__release - local.get $182 - call $~lib/rt/pure/__release - local.get $183 - call $~lib/rt/pure/__release - local.get $184 - call $~lib/rt/pure/__release - local.get $185 - call $~lib/rt/pure/__release - local.get $186 - call $~lib/rt/pure/__release - local.get $187 - call $~lib/rt/pure/__release - local.get $188 - call $~lib/rt/pure/__release - local.get $189 - call $~lib/rt/pure/__release - local.get $190 - call $~lib/rt/pure/__release - local.get $191 - call $~lib/rt/pure/__release - local.get $192 - call $~lib/rt/pure/__release - local.get $193 - call $~lib/rt/pure/__release - local.get $194 - call $~lib/rt/pure/__release - local.get $195 - call $~lib/rt/pure/__release - local.get $196 - call $~lib/rt/pure/__release - local.get $197 - call $~lib/rt/pure/__release - local.get $198 - call $~lib/rt/pure/__release - local.get $199 - call $~lib/rt/pure/__release - local.get $200 - call $~lib/rt/pure/__release - local.get $201 - call $~lib/rt/pure/__release - local.get $202 - call $~lib/rt/pure/__release - local.get $203 - call $~lib/rt/pure/__release - local.get $204 - call $~lib/rt/pure/__release - local.get $205 - call $~lib/rt/pure/__release - local.get $206 - call $~lib/rt/pure/__release - local.get $207 - call $~lib/rt/pure/__release - local.get $208 - call $~lib/rt/pure/__release - local.get $209 - call $~lib/rt/pure/__release - local.get $210 - call $~lib/rt/pure/__release - local.get $211 - call $~lib/rt/pure/__release - local.get $212 - call $~lib/rt/pure/__release - local.get $213 - call $~lib/rt/pure/__release - local.get $214 - call $~lib/rt/pure/__release - local.get $215 - call $~lib/rt/pure/__release - local.get $216 - call $~lib/rt/pure/__release - local.get $217 - call $~lib/rt/pure/__release - local.get $218 - call $~lib/rt/pure/__release - local.get $219 - call $~lib/rt/pure/__release - local.get $220 - call $~lib/rt/pure/__release - local.get $221 - call $~lib/rt/pure/__release - local.get $222 - call $~lib/rt/pure/__release - local.get $223 - call $~lib/rt/pure/__release - local.get $224 - call $~lib/rt/pure/__release - local.get $225 - call $~lib/rt/pure/__release - local.get $226 - call $~lib/rt/pure/__release - local.get $227 - call $~lib/rt/pure/__release - local.get $228 - call $~lib/rt/pure/__release - local.get $229 - call $~lib/rt/pure/__release - local.get $230 - call $~lib/rt/pure/__release - local.get $231 - call $~lib/rt/pure/__release - local.get $232 - call $~lib/rt/pure/__release - local.get $233 - call $~lib/rt/pure/__release - local.get $234 - call $~lib/rt/pure/__release - local.get $235 - call $~lib/rt/pure/__release - local.get $236 - call $~lib/rt/pure/__release - local.get $237 - call $~lib/rt/pure/__release - local.get $238 - call $~lib/rt/pure/__release - local.get $239 - call $~lib/rt/pure/__release - local.get $240 - call $~lib/rt/pure/__release - local.get $241 - call $~lib/rt/pure/__release - local.get $242 - call $~lib/rt/pure/__release - local.get $243 - call $~lib/rt/pure/__release - local.get $244 - call $~lib/rt/pure/__release - local.get $245 - call $~lib/rt/pure/__release - local.get $246 - call $~lib/rt/pure/__release - local.get $247 - call $~lib/rt/pure/__release - local.get $248 - call $~lib/rt/pure/__release - local.get $249 - call $~lib/rt/pure/__release - local.get $250 - call $~lib/rt/pure/__release - local.get $251 - call $~lib/rt/pure/__release - local.get $252 - call $~lib/rt/pure/__release - local.get $253 - call $~lib/rt/pure/__release - local.get $254 - call $~lib/rt/pure/__release - local.get $255 - call $~lib/rt/pure/__release - local.get $256 - call $~lib/rt/pure/__release - local.get $257 - call $~lib/rt/pure/__release - local.get $258 - call $~lib/rt/pure/__release - local.get $259 - call $~lib/rt/pure/__release - local.get $260 - call $~lib/rt/pure/__release - local.get $261 - call $~lib/rt/pure/__release - local.get $262 - call $~lib/rt/pure/__release - local.get $263 - call $~lib/rt/pure/__release - local.get $264 - call $~lib/rt/pure/__release - local.get $265 - call $~lib/rt/pure/__release - local.get $266 - call $~lib/rt/pure/__release - local.get $267 - call $~lib/rt/pure/__release - local.get $268 - call $~lib/rt/pure/__release - local.get $269 - call $~lib/rt/pure/__release - local.get $270 - call $~lib/rt/pure/__release - local.get $271 - call $~lib/rt/pure/__release - local.get $272 - call $~lib/rt/pure/__release - local.get $273 - call $~lib/rt/pure/__release - local.get $274 - call $~lib/rt/pure/__release - local.get $275 - call $~lib/rt/pure/__release - local.get $276 - call $~lib/rt/pure/__release - local.get $277 - call $~lib/rt/pure/__release - local.get $278 - call $~lib/rt/pure/__release - local.get $279 - call $~lib/rt/pure/__release - local.get $280 - call $~lib/rt/pure/__release - local.get $281 - call $~lib/rt/pure/__release - local.get $282 - call $~lib/rt/pure/__release - local.get $283 - call $~lib/rt/pure/__release - local.get $284 - call $~lib/rt/pure/__release - local.get $285 - call $~lib/rt/pure/__release - local.get $286 - call $~lib/rt/pure/__release - local.get $287 - call $~lib/rt/pure/__release - local.get $288 - call $~lib/rt/pure/__release - local.get $289 - call $~lib/rt/pure/__release - local.get $290 - call $~lib/rt/pure/__release - local.get $291 - call $~lib/rt/pure/__release - local.get $292 - call $~lib/rt/pure/__release - local.get $293 - call $~lib/rt/pure/__release - local.get $294 - call $~lib/rt/pure/__release - local.get $295 - call $~lib/rt/pure/__release - local.get $296 - call $~lib/rt/pure/__release - local.get $297 - call $~lib/rt/pure/__release - local.get $298 - call $~lib/rt/pure/__release - local.get $299 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/string/getString (result i32) - global.get $std/string/str - call $~lib/rt/pure/__retain - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:std/string - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1168 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=20 - local.tee $1 - local.get $0 - i32.load offset=28 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $1 - i32.load - local.tee $4 - if - local.get $4 - call $~lib/rt/pure/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - i32.load offset=16 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=16 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1168 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1168 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 21992 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) -) diff --git a/tests/compiler/std/string.release.wat b/tests/compiler/std/string.release.wat new file mode 100644 index 0000000000..57e9b4af89 --- /dev/null +++ b/tests/compiler/std/string.release.wat @@ -0,0 +1,23412 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func)) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (param i32 i32) (result f64))) + (type $9 (func (param i32) (result f64))) + (type $10 (func (param i64 i32) (result i32))) + (type $11 (func (param i32 i32 i32 i32))) + (type $12 (func (param i32 i32 i32 i32) (result i32))) + (type $13 (func (param i32 i32 i64))) + (type $14 (func (param f64 i32) (result f64))) + (type $15 (func (param i32 i64 i32 i32))) + (type $16 (func (param i32 i64 i32))) + (type $17 (func (param i64 i64 i32 i64 i32) (result i32))) + (type $18 (func (param f64 i32) (result i32))) + (type $19 (func (result i64))) + (type $20 (func (param f64) (result i32))) + (type $21 (func (param f32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $std/string/str (mut i32) (i32.const 1056)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/util/string/__fixmulShift (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 59404)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") + (data $1 (i32.const 1100) ",") + (data $1.1 (i32.const 1112) "\02\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data $2 (i32.const 1148) "\1c") + (data $2.1 (i32.const 1160) "\02\00\00\00\02\00\00\00\df") + (data $3 (i32.const 1180) "\1c") + (data $3.1 (i32.const 1192) "\02\00\00\00\04\00\00\00\df\00\df") + (data $4 (i32.const 1212) "\1c") + (data $4.1 (i32.const 1224) "\02\00\00\00\06\00\00\00\df\00a\00b") + (data $5 (i32.const 1244) "<") + (data $5.1 (i32.const 1256) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1308) ",") + (data $6.1 (i32.const 1320) "\02\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data $7 (i32.const 1356) "<") + (data $7.1 (i32.const 1368) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $8 (i32.const 1420) "<") + (data $8.1 (i32.const 1432) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $11 (i32.const 1548) ",") + (data $11.1 (i32.const 1560) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $13 (i32.const 1628) "<") + (data $13.1 (i32.const 1640) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $14 (i32.const 1692) "\1c") + (data $14.1 (i32.const 1704) "\02") + (data $15 (i32.const 1724) "\1c") + (data $15.1 (i32.const 1736) "\02\00\00\00\02\00\00\00h") + (data $16 (i32.const 1756) "\1c") + (data $16.1 (i32.const 1768) "\02\00\00\00\02") + (data $17 (i32.const 1788) "\1c") + (data $17.1 (i32.const 1800) "\02\00\00\00\02\00\00\00a") + (data $18 (i32.const 1820) "\1c") + (data $18.1 (i32.const 1832) "\02\00\00\00\02\00\00\00@") + (data $19 (i32.const 1852) "\1c") + (data $19.1 (i32.const 1864) "\02\00\00\00\02\00\00\006") + (data $20 (i32.const 1884) "\1c") + (data $20.1 (i32.const 1896) "\02\00\00\00\04\00\00\00\00\d8\00\df") + (data $21 (i32.const 1916) "\1c") + (data $21.1 (i32.const 1928) "\01\00\00\00\08\00\00\00\00\00\00\006") + (data $22 (i32.const 1948) "\1c") + (data $22.1 (i32.const 1960) "\02\00\00\00\04\00\00\00\00\006") + (data $23 (i32.const 1980) "\1c") + (data $23.1 (i32.const 1992) "\01\00\00\00\0c\00\00\00A\00\00\00B\00\00\00C") + (data $24 (i32.const 2012) "\1c") + (data $24.1 (i32.const 2024) "\02\00\00\00\06\00\00\00A\00B\00C") + (data $25 (i32.const 2044) ",") + (data $25.1 (i32.const 2056) "\01\00\00\00\14\00\00\004\d8\00\00\06\df\00\00a\00\00\004\d8\00\00\07\df") + (data $26 (i32.const 2092) "\1c") + (data $26.1 (i32.const 2104) "\02\00\00\00\n\00\00\004\d8\06\dfa\004\d8\07\df") + (data $27 (i32.const 2124) "\1c") + (data $27.1 (i32.const 2136) "\02\00\00\00\04\00\00\004\d8\06\df") + (data $28 (i32.const 2156) "\1c") + (data $28.1 (i32.const 2168) "\02\00\00\00\04\00\00\00h\00i") + (data $29 (i32.const 2188) "\1c") + (data $29.1 (i32.const 2200) "\02\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") + (data $30 (i32.const 2220) "\1c") + (data $30.1 (i32.const 2232) "\02\00\00\00\06\00\00\00I\00\'\00m") + (data $31 (i32.const 2252) "\1c") + (data $31.1 (i32.const 2264) "\02\00\00\00\02\00\00\00 ") + (data $32 (i32.const 2284) "\1c") + (data $32.1 (i32.const 2296) "\02\00\00\00\06\00\00\00 \00 \00 ") + (data $33 (i32.const 2316) "\1c") + (data $33.1 (i32.const 2328) "\02\00\00\00\06\00\00\00a\00b\00c") + (data $34 (i32.const 2348) "\1c") + (data $34.1 (i32.const 2360) "\02\00\00\00\n\00\00\00 \00 \00a\00b\00c") + (data $35 (i32.const 2380) "\1c") + (data $35.1 (i32.const 2392) "\02\00\00\00\06\00\00\001\002\003") + (data $36 (i32.const 2412) "\1c") + (data $36.1 (i32.const 2424) "\02\00\00\00\0c\00\00\001\002\003\00a\00b\00c") + (data $37 (i32.const 2444) ",") + (data $37.1 (i32.const 2456) "\02\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") + (data $38 (i32.const 2492) "\1c") + (data $38.1 (i32.const 2504) "\02\00\00\00\n\00\00\00a\00b\00c\00 \00 ") + (data $39 (i32.const 2524) "\1c") + (data $39.1 (i32.const 2536) "\02\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") + (data $40 (i32.const 2556) ",") + (data $40.1 (i32.const 2568) "\02\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") + (data $41 (i32.const 2604) "\1c") + (data $41.1 (i32.const 2616) "\02\00\00\00\02\00\00\00,") + (data $42 (i32.const 2636) "\1c") + (data $42.1 (i32.const 2648) "\02\00\00\00\02\00\00\00x") + (data $43 (i32.const 2668) "\1c") + (data $43.1 (i32.const 2680) "\02\00\00\00\06\00\00\00,\00 \00I") + (data $44 (i32.const 2700) "\1c") + (data $44.1 (i32.const 2712) "\02\00\00\00\02\00\00\00g") + (data $45 (i32.const 2732) "\1c") + (data $45.1 (i32.const 2744) "\02\00\00\00\02\00\00\00i") + (data $46 (i32.const 2764) "\1c") + (data $46.1 (i32.const 2776) "\02\00\00\00\08\00\00\00n\00u\00l\00l") + (data $47 (i32.const 2796) "\1c") + (data $47.1 (i32.const 2808) "\02\00\00\00\06\00\00\00a\00b\00d") + (data $48 (i32.const 2828) "\1c") + (data $48.1 (i32.const 2840) "\02\00\00\00\06\00\00\00a\00b\00f") + (data $49 (i32.const 2860) "\1c") + (data $49.1 (i32.const 2872) "\02\00\00\00\06\00\00\00a\00b\00z") + (data $50 (i32.const 2892) "\1c") + (data $50.1 (i32.const 2904) "\02\00\00\00\08\00\00\00a\00b\00c\00d") + (data $51 (i32.const 2924) "\1c") + (data $51.1 (i32.const 2936) "\02\00\00\00\08\00\00\00a\00b\00d\00d") + (data $52 (i32.const 2956) "\1c") + (data $52.1 (i32.const 2968) "\02\00\00\00\08\00\00\00a\00b\00 \00c") + (data $53 (i32.const 2988) ",") + (data $53.1 (i32.const 3000) "\02\00\00\00\16\00\00\00 \00\n\00\t\00\r\00a\00b\00c\00 \00\t\00\r\00 ") + (data $54 (i32.const 3036) ",") + (data $54.1 (i32.const 3048) "\02\00\00\00\0e\00\00\00a\00b\00c\00 \00\t\00\r\00 ") + (data $55 (i32.const 3084) ",") + (data $55.1 (i32.const 3096) "\02\00\00\00\0e\00\00\00 \00\n\00\t\00\r\00a\00b\00c") + (data $56 (i32.const 3132) ",") + (data $56.1 (i32.const 3144) "\02\00\00\00\0e\00\00\00\t\00\n\00 \00t\00r\00u\00e") + (data $57 (i32.const 3180) ",") + (data $57.1 (i32.const 3192) "\02\00\00\00\14\00\00\00\t\00\n\00 \00t\00r\00u\00e\00\n\00\r\00 ") + (data $58 (i32.const 3228) ",") + (data $58.1 (i32.const 3240) "\02\00\00\00\12\00\00\00 \00 \00t\00r\00u\00e\00a\00b\00c") + (data $59 (i32.const 3276) "\1c") + (data $59.1 (i32.const 3288) "\02\00\00\00\06\00\00\00t\00r\00u") + (data $60 (i32.const 3308) "\1c") + (data $60.1 (i32.const 3320) "\02\00\00\00\08\00\00\00T\00r\00u\00e") + (data $61 (i32.const 3340) "\1c") + (data $61.1 (i32.const 3352) "\02\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data $62 (i32.const 3372) "\1c") + (data $62.1 (i32.const 3384) "\02\00\00\00\02\00\00\000") + (data $63 (i32.const 3404) "\1c") + (data $63.1 (i32.const 3416) "\02\00\00\00\06\00\00\000\000\000") + (data $64 (i32.const 3436) "\1c") + (data $64.1 (i32.const 3448) "\02\00\00\00\02\00\00\001") + (data $65 (i32.const 3468) "\1c") + (data $65.1 (i32.const 3480) "\02\00\00\00\08\00\00\000\000\000\001") + (data $66 (i32.const 3500) "\1c") + (data $66.1 (i32.const 3512) "\02\00\00\00\n\00\00\000\00b\001\000\001") + (data $67 (i32.const 3532) "\1c") + (data $67.1 (i32.const 3544) "\02\00\00\00\n\00\00\000\00o\007\000\007") + (data $68 (i32.const 3564) "\1c") + (data $68.1 (i32.const 3576) "\02\00\00\00\n\00\00\000\00x\00f\000\00f") + (data $69 (i32.const 3596) "\1c") + (data $69.1 (i32.const 3608) "\02\00\00\00\n\00\00\000\00X\00F\000\00F") + (data $70 (i32.const 3628) "\1c") + (data $70.1 (i32.const 3640) "\02\00\00\00\06\00\00\000\001\001") + (data $71 (i32.const 3660) "\1c") + (data $71.1 (i32.const 3672) "\02\00\00\00\08\00\00\000\00x\001\00g") + (data $72 (i32.const 3692) "\1c") + (data $72.1 (i32.const 3704) "\02\00\00\00\08\00\00\00-\001\002\003") + (data $73 (i32.const 3724) "\1c") + (data $73.1 (i32.const 3736) "\02\00\00\00\08\00\00\00+\001\002\003") + (data $74 (i32.const 3756) "\1c") + (data $74.1 (i32.const 3768) "\02\00\00\00\n\00\00\00-\001\002\00.\003") + (data $75 (i32.const 3788) "\1c") + (data $75.1 (i32.const 3800) "\02\00\00\00\06\00\00\000\00x\000") + (data $76 (i32.const 3820) "\1c") + (data $76.1 (i32.const 3832) "\02\00\00\00\08\00\00\000\00b\001\001") + (data $77 (i32.const 3852) "\1c") + (data $77.1 (i32.const 3864) "\02\00\00\00\04\00\00\00\n\001") + (data $78 (i32.const 3884) "\1c") + (data $78.1 (i32.const 3896) "\02\00\00\00\04\00\00\00( 1") + (data $79 (i32.const 3916) "\1c") + (data $79.1 (i32.const 3928) "\02\00\00\00\04\00\00\00) 1") + (data $80 (i32.const 3948) "\1c") + (data $80.1 (i32.const 3960) "\02\00\00\00\04\00\00\00-\000") + (data $81 (i32.const 3980) ",") + (data $81.1 (i32.const 3992) "\02\00\00\00\10\00\00\000\00X\00A\00B\00C\00D\00E\00F") + (data $82 (i32.const 4028) "\1c") + (data $82.1 (i32.const 4040) "\02\00\00\00\0c\00\00\00A\00B\00C\00D\00E\00F") + (data $83 (i32.const 4060) "<") + (data $83.1 (i32.const 4072) "\02\00\00\00(\00\00\003\006\008\009\003\004\008\008\001\004\007\004\001\009\001\000\003\002\003\002") + (data $84 (i32.const 4124) "L") + (data $84.1 (i32.const 4136) "\02\00\00\004\00\00\00-\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") + (data $85 (i32.const 4204) "<") + (data $85.1 (i32.const 4216) "\02\00\00\00,\00\00\000\00x\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") + (data $86 (i32.const 4268) "\1c") + (data $86.1 (i32.const 4280) "\02\00\00\00\06\00\00\001\00=\d8%\dd") + (data $87 (i32.const 4300) ",") + (data $87.1 (i32.const 4312) "\02\00\00\00\0e\00\00\002\00b\00a\00d\00n\00u\00m") + (data $88 (i32.const 4348) "\1c") + (data $88.1 (i32.const 4360) "\02\00\00\00\08\00\00\00 \00\t\00\n\001") + (data $89 (i32.const 4380) ",") + (data $89.1 (i32.const 4392) "\02\00\00\00\0e\00\00\00 \00\t\00\n\000\00x\000\002") + (data $90 (i32.const 4428) "\1c") + (data $90.1 (i32.const 4440) "\02\00\00\00\n\00\00\000\00 \00a\00b\00c") + (data $91 (i32.const 4460) "\1c") + (data $91.1 (i32.const 4472) "\02\00\00\00\n\00\00\001\00 \00a\00b\00c") + (data $92 (i32.const 4492) ",") + (data $92.1 (i32.const 4504) "\02\00\00\00\10\00\00\00 \00\t\00\n\000\00 \00a\00b\00c") + (data $93 (i32.const 4540) "\1c") + (data $93.1 (i32.const 4552) "\02\00\00\00\02\00\00\00-") + (data $94 (i32.const 4572) "\1c") + (data $94.1 (i32.const 4584) "\02\00\00\00\02\00\00\00+") + (data $95 (i32.const 4604) "\1c") + (data $95.1 (i32.const 4616) "\02\00\00\00\04\00\00\00=\d8%\dd") + (data $96 (i32.const 4636) "\1c") + (data $96.1 (i32.const 4648) "\02\00\00\00\0c\00\00\00b\00a\00d\00n\00u\00m") + (data $97 (i32.const 4678) "\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") + (data $98 (i32.const 4860) ",") + (data $98.1 (i32.const 4872) "\02\00\00\00\14\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F") + (data $99 (i32.const 4908) "<") + (data $99.1 (i32.const 4920) "\02\00\00\00$\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F") + (data $100 (i32.const 4972) "\1c") + (data $100.1 (i32.const 4984) "\02\00\00\00\04\00\00\001\00.") + (data $101 (i32.const 5004) "\1c") + (data $101.1 (i32.const 5016) "\02\00\00\00\08\00\00\001\00.\000\000") + (data $102 (i32.const 5036) "\1c") + (data $102.1 (i32.const 5048) "\02\00\00\00\08\00\00\001\00e\00-\005") + (data $103 (i32.const 5068) "\1c") + (data $103.1 (i32.const 5080) "\02\00\00\00\n\00\00\00-\001\00e\00-\005") + (data $104 (i32.const 5100) ",") + (data $104.1 (i32.const 5112) "\02\00\00\00\10\00\00\00-\000\00.\003\00e\00-\002\002") + (data $105 (i32.const 5148) ",") + (data $105.1 (i32.const 5160) "\02\00\00\00\0e\00\00\000\00.\003\00e\00+\002\002") + (data $106 (i32.const 5196) "\1c") + (data $106.1 (i32.const 5208) "\02\00\00\00\08\00\00\001\00e\00-\001") + (data $107 (i32.const 5228) "\1c") + (data $107.1 (i32.const 5240) "\02\00\00\00\0c\00\00\000\00.\001\00e\00-\000") + (data $108 (i32.const 5260) "\1c") + (data $108.1 (i32.const 5272) "\02\00\00\00\06\00\00\000\00.\001") + (data $109 (i32.const 5292) "\1c") + (data $109.1 (i32.const 5304) "\02\00\00\00\06\00\00\00.\002\005") + (data $110 (i32.const 5324) "\1c") + (data $110.1 (i32.const 5336) "\02\00\00\00\0c\00\00\001\00.\00e\00+\003\00a") + (data $111 (i32.const 5356) ",") + (data $111.1 (i32.const 5368) "\02\00\00\00\0e\00\00\001\00.\000\00e\00-\001\000") + (data $112 (i32.const 5404) ",") + (data $112.1 (i32.const 5416) "\02\00\00\00\0e\00\00\001\00.\000\00e\00-\003\000") + (data $113 (i32.const 5452) ",") + (data $113.1 (i32.const 5464) "\02\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\003") + (data $114 (i32.const 5500) ",") + (data $114.1 (i32.const 5512) "\02\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\004") + (data $115 (i32.const 5548) "\1c") + (data $115.1 (i32.const 5560) "\02\00\00\00\0c\00\00\001\00e\00+\003\000\008") + (data $116 (i32.const 5580) "\1c") + (data $116.1 (i32.const 5592) "\02\00\00\00\0c\00\00\001\00e\00+\003\000\009") + (data $117 (i32.const 5612) ",") + (data $117.1 (i32.const 5624) "\02\00\00\00\10\00\00\001\00.\000\00e\00-\001\00_\000") + (data $118 (i32.const 5660) ",") + (data $118.1 (i32.const 5672) "\02\00\00\00\12\00\00\001\00.\000\00e\00-\001\000\00_\000") + (data $119 (i32.const 5708) ",") + (data $119.1 (i32.const 5720) "\02\00\00\00\10\00\00\001\00.\000\00e\00+\001\00_\000") + (data $120 (i32.const 5756) "\1c") + (data $120.1 (i32.const 5768) "\02\00\00\00\06\00\00\001\00_\000") + (data $121 (i32.const 5788) "\1c") + (data $121.1 (i32.const 5800) "\02\00\00\00\06\00\00\001\00_\001") + (data $122 (i32.const 5820) ",") + (data $122.1 (i32.const 5832) "\02\00\00\00\14\00\00\001\000\00.\000\000\00_\000\001\00e\002") + (data $123 (i32.const 5868) ",") + (data $123.1 (i32.const 5880) "\02\00\00\00\16\00\00\001\002\003\004\005\006\007\008\009\00_\004") + (data $124 (i32.const 5916) ",") + (data $124.1 (i32.const 5928) "\02\00\00\00\18\00\00\001\00_\000\001\002\003\004\005\006\007\008\009") + (data $125 (i32.const 5964) "\1c") + (data $125.1 (i32.const 5976) "\02\00\00\00\n\00\00\001\00e\00-\006\000") + (data $126 (i32.const 5996) "\1c") + (data $126.1 (i32.const 6008) "\02\00\00\00\08\00\00\001\00e\006\000") + (data $127 (i32.const 6028) "\1c") + (data $127.1 (i32.const 6040) "\02\00\00\00\0c\00\00\001\002\003\00.\004\00e") + (data $128 (i32.const 6060) "\1c") + (data $128.1 (i32.const 6072) "\02\00\00\00\04\00\00\001\00x") + (data $129 (i32.const 6092) ",") + (data $129.1 (i32.const 6104) "\02\00\00\00\18\00\00\00-\001\001\00e\00-\001\00s\00t\00r\00i\00n\00g") + (data $130 (i32.const 6140) ",") + (data $130.1 (i32.const 6152) "\02\00\00\00\14\00\00\000\001\00e\001\00s\00t\00r\00i\00n\00g") + (data $131 (i32.const 6188) ",") + (data $131.1 (i32.const 6200) "\02\00\00\00\12\00\00\000\001\000\00s\00t\00r\00i\00n\00g") + (data $132 (i32.const 6236) ",") + (data $132.1 (i32.const 6248) "\02\00\00\00\0e\00\00\00+\00.\002\002\00e\00-\001") + (data $133 (i32.const 6284) "\1c") + (data $133.1 (i32.const 6296) "\02\00\00\00\n\00\00\001\001\00.\00s\001") + (data $134 (i32.const 6316) "\1c") + (data $134.1 (i32.const 6328) "\02\00\00\00\06\00\00\000\00x\005") + (data $135 (i32.const 6348) "\1c") + (data $135.1 (i32.const 6360) "\02\00\00\00\06\00\00\000\00x\00D") + (data $136 (i32.const 6380) "\1c") + (data $136.1 (i32.const 6392) "\02\00\00\00\08\00\00\00\0b\001\00.\001") + (data $137 (i32.const 6412) "\1c") + (data $137.1 (i32.const 6424) "\02\00\00\00\0c\00\00\00\0b\00\0b\00-\001\00.\001") + (data $138 (i32.const 6444) "\1c") + (data $138.1 (i32.const 6456) "\02\00\00\00\0c\00\00\00\0c\00\0c\00-\001\00.\001") + (data $139 (i32.const 6476) "\1c") + (data $139.1 (i32.const 6488) "\02\00\00\00\0c\00\00\00( ( -\001\00.\001") + (data $140 (i32.const 6508) "\1c") + (data $140.1 (i32.const 6520) "\02\00\00\00\0c\00\00\00) ) -\001\00.\001") + (data $141 (i32.const 6540) "\1c") + (data $141.1 (i32.const 6552) "\02\00\00\00\n\00\00\000\000\000\000\000") + (data $142 (i32.const 6572) "\1c") + (data $142.1 (i32.const 6584) "\02\00\00\00\n\00\00\000\000\000\000\00a") + (data $143 (i32.const 6604) "\1c") + (data $143.1 (i32.const 6616) "\02\00\00\00\n\00\00\000\000\000\000\001") + (data $144 (i32.const 6636) "\1c") + (data $144.1 (i32.const 6648) "\02\00\00\00\n\00\00\000\000\00.\000\000") + (data $145 (i32.const 6668) "\1c") + (data $145.1 (i32.const 6680) "\02\00\00\00\n\00\00\000\000\00.\000\00a") + (data $146 (i32.const 6700) "\1c") + (data $146.1 (i32.const 6712) "\02\00\00\00\08\00\00\001\00e\001\00e") + (data $147 (i32.const 6732) ",") + (data $147.1 (i32.const 6744) "\02\00\00\00\0e\00\00\001\00e\00+\000\000\000\001") + (data $148 (i32.const 6780) "\1c") + (data $148.1 (i32.const 6792) "\02\00\00\00\0c\00\00\000\00e\00+\001\000\000") + (data $149 (i32.const 6812) "\1c") + (data $149.1 (i32.const 6824) "\02\00\00\00\n\00\00\001\00.\00-\001\00.") + (data $150 (i32.const 6844) "\1c") + (data $150.1 (i32.const 6856) "\02\00\00\00\0c\00\00\001\00e\00-\001\00.\002") + (data $151 (i32.const 6876) "\1c") + (data $151.1 (i32.const 6888) "\02\00\00\00\06\00\00\001\00e\00x") + (data $152 (i32.const 6908) "\1c") + (data $152.1 (i32.const 6920) "\02\00\00\00\08\00\00\001\00e\001\00x") + (data $153 (i32.const 6940) "\1c") + (data $153.1 (i32.const 6952) "\02\00\00\00\08\00\00\001\00e\00-\00x") + (data $154 (i32.const 6972) "\1c") + (data $154.1 (i32.const 6984) "\02\00\00\00\n\00\00\001\00e\00-\001\00x") + (data $155 (i32.const 7004) ",") + (data $155.1 (i32.const 7016) "\02\00\00\00\0e\00\00\000\00.\001\00e\00-\001\00x") + (data $156 (i32.const 7052) "\1c") + (data $156.1 (i32.const 7064) "\02\00\00\00\06\00\00\000\000\00.") + (data $157 (i32.const 7084) "\1c") + (data $157.1 (i32.const 7096) "\02\00\00\00\06\00\00\00.\000\000") + (data $158 (i32.const 7116) "\1c") + (data $158.1 (i32.const 7128) "\02\00\00\00\06\00\00\00.\000\00.") + (data $159 (i32.const 7148) "\1c") + (data $159.1 (i32.const 7160) "\02\00\00\00\06\00\00\00.\001\00.") + (data $160 (i32.const 7180) "\1c") + (data $160.1 (i32.const 7192) "\02\00\00\00\06\00\00\000\00.\00.") + (data $161 (i32.const 7212) "\1c") + (data $161.1 (i32.const 7224) "\02\00\00\00\06\00\00\000\00.\00a") + (data $162 (i32.const 7244) "\1c") + (data $162.1 (i32.const 7256) "\02\00\00\00\08\00\00\001\00.\00.\001") + (data $163 (i32.const 7276) "\1c") + (data $163.1 (i32.const 7288) "\02\00\00\00\n\00\00\000\00.\001\00.\001") + (data $164 (i32.const 7308) "\1c") + (data $164.1 (i32.const 7320) "\02\00\00\00\08\00\00\000\00.\00 \001") + (data $165 (i32.const 7340) "\1c") + (data $165.1 (i32.const 7352) "\02\00\00\00\08\00\00\00+\000\00.\000") + (data $166 (i32.const 7372) "\1c") + (data $166.1 (i32.const 7384) "\02\00\00\00\08\00\00\00-\000\00.\000") + (data $167 (i32.const 7404) "\1c") + (data $167.1 (i32.const 7416) "\02\00\00\00\04\00\00\00+\000") + (data $168 (i32.const 7436) ",") + (data $168.1 (i32.const 7448) "\02\00\00\00\0e\00\00\00-\00.\000\000\000\000\000") + (data $169 (i32.const 7484) "\1c") + (data $169.1 (i32.const 7496) "\02\00\00\00\06\00\00\00-\00-\000") + (data $170 (i32.const 7516) "\1c") + (data $170.1 (i32.const 7528) "\02\00\00\00\06\00\00\00+\00+\000") + (data $171 (i32.const 7548) "\1c") + (data $171.1 (i32.const 7560) "\02\00\00\00\04\00\00\00.\00a") + (data $172 (i32.const 7580) "\1c") + (data $172.1 (i32.const 7592) "\02\00\00\00\06\00\00\00.\00.\000") + (data $173 (i32.const 7612) "\1c") + (data $173.1 (i32.const 7624) "\02\00\00\00\02\00\00\00.") + (data $174 (i32.const 7644) "\1c") + (data $174.1 (i32.const 7656) "\02\00\00\00\04\00\00\00.\00.") + (data $175 (i32.const 7676) "\1c") + (data $175.1 (i32.const 7688) "\02\00\00\00\06\00\00\00N\00a\00N") + (data $176 (i32.const 7708) "\1c") + (data $176.1 (i32.const 7720) "\02\00\00\00\02\00\00\00\0b") + (data $177 (i32.const 7740) "\1c") + (data $177.1 (i32.const 7752) "\02\00\00\00\02\00\00\00\0e\18") + (data $178 (i32.const 7772) "\1c") + (data $178.1 (i32.const 7784) "\02\00\00\00\08\00\00\00\0e\181\00.\001") + (data $179 (i32.const 7804) "\1c") + (data $179.1 (i32.const 7816) "\02\00\00\00\n\00\00\00\0e\18\0e\181\00.\001") + (data $180 (i32.const 7836) "\1c") + (data $180.1 (i32.const 7848) "\02\00\00\00\02\00\00\00\0c") + (data $181 (i32.const 7868) "\1c") + (data $181.1 (i32.const 7880) "\02\00\00\00\08\00\00\00t\00r\00u\00e") + (data $182 (i32.const 7900) "\1c") + (data $182.1 (i32.const 7912) "\02\00\00\00\08\00\00\001\00e\002\002") + (data $183 (i32.const 7932) "\1c") + (data $183.1 (i32.const 7944) "\02\00\00\00\n\00\00\001\00e\00-\002\002") + (data $184 (i32.const 7964) "\1c") + (data $184.1 (i32.const 7976) "\02\00\00\00\08\00\00\001\00e\002\003") + (data $185 (i32.const 7996) "\1c") + (data $185.1 (i32.const 8008) "\02\00\00\00\n\00\00\001\00e\00-\002\003") + (data $186 (i32.const 8028) "\1c") + (data $186.1 (i32.const 8040) "\02\00\00\00\08\00\00\001\00e\003\007") + (data $187 (i32.const 8060) "\1c") + (data $187.1 (i32.const 8072) "\02\00\00\00\n\00\00\001\00e\00-\003\007") + (data $188 (i32.const 8092) "\1c") + (data $188.1 (i32.const 8104) "\02\00\00\00\08\00\00\001\00e\003\008") + (data $189 (i32.const 8124) "\1c") + (data $189.1 (i32.const 8136) "\02\00\00\00\n\00\00\001\00e\00-\003\008") + (data $190 (i32.const 8156) "<") + (data $190.1 (i32.const 8168) "\02\00\00\00*\00\00\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006") + (data $191 (i32.const 8220) "L") + (data $191.1 (i32.const 8232) "\02\00\00\00.\00\00\001\00.\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\007\00e\00+\003\000\008") + (data $192 (i32.const 8300) "\1c") + (data $192.1 (i32.const 8312) "\02\00\00\00\0c\00\00\005\00e\00-\003\002\004") + (data $193 (i32.const 8332) ",") + (data $193.1 (i32.const 8344) "\02\00\00\00\1a\00\00\000\00.\000\000\000\000\000\001\00e\00+\003\001\004") + (data $194 (i32.const 8380) "\8c") + (data $194.1 (i32.const 8392) "\02\00\00\00|\00\00\000\00.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\00e\00+\005\006") + (data $195 (i32.const 8524) ",") + (data $195.1 (i32.const 8536) "\02\00\00\00\0e\00\00\00+\001\00E\00-\003\002\005") + (data $196 (i32.const 8572) ",") + (data $196.1 (i32.const 8584) "\02\00\00\00\0e\00\00\00+\001\00E\00+\003\000\009") + (data $197 (i32.const 8620) ",") + (data $197.1 (i32.const 8632) "\02\00\00\00\0e\00\00\00-\001\00E\00-\003\002\005") + (data $198 (i32.const 8668) ",") + (data $198.1 (i32.const 8680) "\02\00\00\00\0e\00\00\00-\001\00E\00+\003\000\009") + (data $199 (i32.const 8716) ",") + (data $199.1 (i32.const 8728) "\02\00\00\00\14\00\00\001\00e\00-\001\000\000\000\000\000\000") + (data $200 (i32.const 8764) ",") + (data $200.1 (i32.const 8776) "\02\00\00\00\14\00\00\001\00e\00+\001\000\000\000\000\000\000") + (data $201 (i32.const 8812) "\1c") + (data $201.1 (i32.const 8824) "\02\00\00\00\0c\00\00\001\00.\00e\003\006\000") + (data $202 (i32.const 8844) ",") + (data $202.1 (i32.const 8856) "\02\00\00\00\12\00\00\00 \00I\00n\00f\00i\00n\00i\00t\00y") + (data $203 (i32.const 8892) ",") + (data $203.1 (i32.const 8904) "\02\00\00\00\12\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00y") + (data $204 (i32.const 8940) ",") + (data $204.1 (i32.const 8952) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $205 (i32.const 8988) ",") + (data $205.1 (i32.const 9000) "\02\00\00\00\12\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00x") + (data $206 (i32.const 9036) ",") + (data $206.1 (i32.const 9048) "\02\00\00\00\14\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00+\001") + (data $207 (i32.const 9084) "\1c") + (data $207.1 (i32.const 9096) "\02\00\00\00\08\00\00\00I\00n\00f\00i") + (data $208 (i32.const 9116) ",") + (data $208.1 (i32.const 9128) "\02\00\00\00\10\00\00\00+\00I\00n\00f\00i\00n\00i\00t") + (data $209 (i32.const 9164) ",") + (data $209.1 (i32.const 9176) "\02\00\00\00\10\00\00\00i\00n\00f\00i\00n\00i\00t\00y") + (data $210 (i32.const 9212) "\bc") + (data $210.1 (i32.const 9224) "\02\00\00\00\aa\00\00\00.\002\004\007\000\003\002\008\002\002\009\002\000\006\002\003\002\007\002\000\008\008\002\008\004\003\009\006\004\003\004\001\001\000\006\008\006\001\008\002\005\002\009\009\000\001\003\000\007\001\006\002\003\008\002\002\001\002\007\009\002\008\004\001\002\005\000\003\003\007\007\005\003\006\003\005\001\000\004\003\00e\00-\003\002\003") + (data $211 (i32.const 9404) "\bc") + (data $211.1 (i32.const 9416) "\02\00\00\00\aa\00\00\00.\007\004\001\000\009\008\004\006\008\007\006\001\008\006\009\008\001\006\002\006\004\008\005\003\001\008\009\003\000\002\003\003\002\000\005\008\005\004\007\005\008\009\007\000\003\009\002\001\004\008\007\001\004\006\006\003\008\003\007\008\005\002\003\007\005\001\000\001\003\002\006\000\009\000\005\003\001\003\002\00e\00-\003\002\003") + (data $212 (i32.const 9596) "\bc") + (data $212.1 (i32.const 9608) "\02\00\00\00\aa\00\00\00.\002\002\002\005\000\007\003\008\005\008\005\000\007\002\000\001\006\003\000\001\002\003\000\005\005\006\003\007\009\005\005\006\007\006\001\005\002\005\000\003\006\001\002\004\001\004\005\007\003\000\001\008\000\001\003\000\008\003\002\002\008\007\002\004\000\004\009\005\008\006\006\004\007\006\000\006\007\006\000\00e\00-\003\000\007") + (data $213 (i32.const 9788) "\9c") + (data $213.1 (i32.const 9800) "\02\00\00\00\88\00\00\001\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\008\000\007\009\003\007\002\008\009\007\001\004\000\005\003\000\003\004\001\005\000\007\009\009\003\004\001\003\002\007\001\000\000\003\007\008\002\006\009\003\006\001\007\003\007\007\008\009\008\000\004\004") + (data $214 (i32.const 9948) "\9c") + (data $214.1 (i32.const 9960) "\02\00\00\00\88\00\00\004\009\006\008\002\009\002\007\006\004\007\005\000\009\004\006\006\004\009\000\001\007\009\007\007\005\008\007\002\000\007\000\009\006\003\003\000\002\008\006\004\001\006\006\009\002\008\008\007\009\001\000\009\004\006\005\005\005\005\004\007\008\005\001\009\004\000\004") + (data $215 (i32.const 10108) "\9c") + (data $215.1 (i32.const 10120) "\02\00\00\00\88\00\00\000\002\006\003\000\006\005\007\004\008\008\006\007\001\005\000\005\008\002\000\006\008\001\009\000\008\009\000\002\000\000\000\007\000\008\003\008\003\006\007\006\002\007\003\008\005\004\008\004\005\008\001\007\007\001\001\005\003\001\007\006\004\004\007\005\007\003\000") + (data $216 (i32.const 10268) "\9c") + (data $216.1 (i32.const 10280) "\02\00\00\00\88\00\00\002\007\000\000\006\009\008\005\005\005\007\001\003\006\006\009\005\009\006\002\002\008\004\002\009\001\004\008\001\009\008\006\000\008\003\004\009\003\006\004\007\005\002\009\002\007\001\009\000\007\004\001\006\008\004\004\004\003\006\005\005\001\000\007\000\004\003\004") + (data $217 (i32.const 10428) "\9c") + (data $217.1 (i32.const 10440) "\02\00\00\00\88\00\00\002\007\001\001\005\005\009\006\009\009\005\000\008\000\009\003\000\004\002\008\008\000\001\007\007\009\000\004\001\007\004\004\009\007\007\009\001\00.\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009") + (data $218 (i32.const 10588) "l") + (data $218.1 (i32.const 10600) "\02\00\00\00\\\00\00\000\00.\009\007\005\003\005\003\001\008\008\008\007\009\009\005\000\002\006\001\003\008\000\007\001\003\005\002\007\006\001\004\007\001\006\004\004\000\004\003\009\00e\00-\001\000\003") + (data $219 (i32.const 10700) "l") + (data $219.1 (i32.const 10712) "\02\00\00\00X\00\00\00.\005\009\006\001\008\006\000\003\004\008\001\003\001\008\000\007\000\009\001\008\006\001\000\000\002\002\006\006\004\005\003\009\004\001\009\005\000\004\002\008\00e\000\000") + (data $220 (i32.const 10812) "l") + (data $220.1 (i32.const 10824) "\02\00\00\00X\00\00\001\00.\008\001\005\000\001\003\001\006\009\002\001\008\000\003\008\007\002\009\008\008\007\004\006\000\008\009\008\007\003\003\005\002\006\009\005\007\004\004\002\00e\00-\001") + (data $221 (i32.const 10924) "l") + (data $221.1 (i32.const 10936) "\02\00\00\00X\00\00\004\002\00.\000\007\000\008\002\003\005\007\005\003\004\004\005\003\006\000\000\006\008\001\006\001\008\006\008\005\006\008\002\002\005\007\005\009\000\007\007\002\00e\00-\002") + (data $222 (i32.const 11036) "l") + (data $222.1 (i32.const 11048) "\02\00\00\00X\00\00\006\006\005\00.\004\006\008\006\003\000\006\005\001\006\002\006\001\004\005\006\003\002\008\009\007\003\002\002\005\005\007\009\008\003\003\004\007\000\008\001\006\00e\00-\003") + (data $223 (i32.const 11148) "l") + (data $223.1 (i32.const 11160) "\02\00\00\00X\00\00\006\001\000\001\00.\008\005\002\009\002\002\009\007\000\008\006\008\006\002\001\007\008\006\006\009\000\004\009\005\004\008\005\004\004\009\008\003\001\007\005\003\00e\00-\004") + (data $224 (i32.const 11260) "l") + (data $224.1 (i32.const 11272) "\02\00\00\00X\00\00\007\006\009\006\006\00.\009\005\002\000\008\002\003\006\009\006\008\000\007\007\008\004\009\004\006\004\003\004\008\008\007\005\004\007\001\001\005\008\005\004\009\00e\00-\005") + (data $225 (i32.const 11372) "l") + (data $225.1 (i32.const 11384) "\02\00\00\00X\00\00\002\005\000\005\000\006\00.\005\003\002\002\002\002\008\006\008\002\004\009\006\001\003\002\006\000\004\008\000\007\002\002\002\009\002\003\007\000\002\003\000\004\00e\00-\006") + (data $226 (i32.const 11484) "l") + (data $226.1 (i32.const 11496) "\02\00\00\00X\00\00\002\007\004\000\000\003\007\00.\002\003\000\002\002\008\000\000\005\003\002\005\008\005\002\004\002\004\006\009\007\006\009\008\003\003\001\001\007\007\003\007\007\00e\00-\007") + (data $227 (i32.const 11596) "l") + (data $227.1 (i32.const 11608) "\02\00\00\00X\00\00\002\000\007\002\003\000\009\003\00.\005\000\000\004\009\007\004\002\006\004\005\009\004\001\005\002\009\002\006\008\007\001\005\004\002\008\003\002\004\004\009\000\00e\00-\008") + (data $228 (i32.const 11708) "l") + (data $228.1 (i32.const 11720) "\02\00\00\00X\00\00\000\00.\007\009\000\000\002\008\000\002\003\008\000\008\001\006\000\004\009\005\006\002\002\006\000\001\001\000\004\007\004\006\000\002\003\008\007\004\008\009\001\002\00e\001") + (data $229 (i32.const 11820) "l") + (data $229.1 (i32.const 11832) "\02\00\00\00X\00\00\000\00.\009\008\002\002\008\006\000\006\005\003\007\003\007\002\009\006\008\004\008\001\009\000\005\005\008\004\004\008\007\006\000\004\006\005\008\006\003\005\009\007\00e\002") + (data $230 (i32.const 11932) "l") + (data $230.1 (i32.const 11944) "\02\00\00\00X\00\00\000\00.\007\004\006\008\009\004\009\007\002\003\001\009\000\003\007\000\008\000\009\004\000\005\005\007\000\005\006\000\001\006\000\004\000\005\003\002\004\008\006\009\00e\003") + (data $231 (i32.const 12044) "l") + (data $231.1 (i32.const 12056) "\02\00\00\00X\00\00\000\00.\001\006\003\000\002\006\008\003\002\000\002\008\002\007\002\008\004\007\005\009\008\000\004\005\009\008\004\004\002\007\001\000\003\001\007\005\001\006\006\005\00e\004") + (data $232 (i32.const 12156) "l") + (data $232.1 (i32.const 12168) "\02\00\00\00X\00\00\000\00.\004\006\003\007\001\006\008\006\002\009\007\001\009\001\007\000\006\009\005\001\000\009\009\001\008\007\006\009\006\004\005\004\009\002\000\002\002\000\008\008\00e\005") + (data $233 (i32.const 12268) "l") + (data $233.1 (i32.const 12280) "\02\00\00\00X\00\00\000\00.\006\005\003\007\008\000\005\009\004\004\004\009\007\007\001\001\005\005\004\002\000\009\004\006\001\006\008\006\004\001\005\008\007\002\000\006\007\005\002\003\00e\006") + (data $234 (i32.const 12380) "l") + (data $234.1 (i32.const 12392) "\02\00\00\00X\00\00\000\00.\002\003\004\006\003\002\004\003\005\006\005\000\002\004\003\007\000\004\005\002\001\002\002\003\000\007\001\003\009\006\000\004\005\007\006\007\006\005\003\001\00e\006") + (data $235 (i32.const 12492) "l") + (data $235.1 (i32.const 12504) "\02\00\00\00X\00\00\000\00.\009\007\000\009\004\008\001\007\001\006\004\002\000\000\004\008\003\004\001\008\009\007\002\005\008\009\008\000\004\005\004\002\009\008\002\000\005\002\007\008\00e\008") + (data $236 (i32.const 12604) "l") + (data $236.1 (i32.const 12616) "\02\00\00\00X\00\00\000\00.\004\009\009\006\009\000\008\005\002\002\000\005\001\008\007\004\001\001\000\007\007\009\009\008\002\003\005\004\009\003\002\004\009\009\004\009\009\006\000\002\00e\009") + (data $237 (i32.const 12716) "l") + (data $237.1 (i32.const 12728) "\02\00\00\00Z\00\00\000\00.\007\009\002\005\002\000\001\002\000\000\005\005\007\002\004\005\008\006\001\009\004\004\000\001\001\002\006\007\000\004\001\007\008\007\005\000\005\001\004\009\00e\002\002") + (data $238 (i32.const 12828) "l") + (data $238.1 (i32.const 12840) "\02\00\00\00Z\00\00\000\00.\006\000\009\006\005\006\004\005\008\005\009\008\003\001\007\007\004\000\008\009\003\004\003\005\002\005\007\000\002\001\003\003\007\007\004\007\005\007\003\009\00e\003\000") + (data $239 (i32.const 12940) "l") + (data $239.1 (i32.const 12952) "\02\00\00\00Z\00\00\000\00.\004\008\000\000\004\001\006\001\001\007\004\007\007\000\002\008\007\008\007\008\007\004\003\006\000\002\000\005\000\002\003\005\004\009\004\009\007\001\002\008\00e\006\007") + (data $240 (i32.const 13052) "l") + (data $240.1 (i32.const 13064) "\02\00\00\00\\\00\00\000\00.\008\005\002\004\008\002\009\000\007\009\008\001\007\009\006\008\002\002\004\008\003\000\003\003\007\009\003\001\000\005\002\007\008\001\006\004\001\004\008\003\00e\001\000\005") + (data $241 (i32.const 13164) "l") + (data $241.1 (i32.const 13176) "\02\00\00\00\\\00\00\000\00.\000\003\002\007\001\002\003\009\002\009\001\007\000\009\007\008\002\001\001\005\004\004\007\000\006\009\003\007\002\007\004\008\009\005\006\000\008\004\002\005\00e\002\006\009") + (data $242 (i32.const 13276) "\1c") + (data $242.1 (i32.const 13288) "\02\00\00\00\06\00\00\00 \00\t\00\n") + (data $243 (i32.const 13308) "\1c") + (data $243.1 (i32.const 13320) "\02\00\00\00\0c\00\00\00 \00\t\00\n\00\r\00.\001") + (data $244 (i32.const 13340) "\1c") + (data $244.1 (i32.const 13352) "\02\00\00\00\02\00\00\00b") + (data $245 (i32.const 13372) "\1c") + (data $245.1 (i32.const 13384) "\02\00\00\00\04\00\00\00a\00b") + (data $246 (i32.const 13404) "\1c") + (data $246.1 (i32.const 13416) "\02\00\00\00\08\00\00\00k\00e\00y\001") + (data $247 (i32.const 13436) "\1c") + (data $247.1 (i32.const 13448) "\02\00\00\00\08\00\00\00k\00e\00y\002") + (data $248 (i32.const 13468) "\1c") + (data $248.1 (i32.const 13480) "\02\00\00\00\06\00\00\00k\00e\001") + (data $249 (i32.const 13500) "\1c") + (data $249.1 (i32.const 13512) "\02\00\00\00\06\00\00\00k\00e\002") + (data $250 (i32.const 13532) "\1c") + (data $250.1 (i32.const 13544) "\02\00\00\00\n\00\00\00k\00e\00y\001\002") + (data $251 (i32.const 13564) "\1c") + (data $251.1 (i32.const 13576) "\02\00\00\00\n\00\00\00k\00e\00y\001\001") + (data $252 (i32.const 13596) ",") + (data $252.1 (i32.const 13608) "\02\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") + (data $253 (i32.const 13644) ",") + (data $253.1 (i32.const 13656) "\02\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") + (data $254 (i32.const 13692) ",") + (data $254.1 (i32.const 13704) "\02\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l") + (data $255 (i32.const 13740) ",") + (data $255.1 (i32.const 13752) "\02\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l") + (data $256 (i32.const 13788) "\1c") + (data $256.1 (i32.const 13800) "\02\00\00\00\04\00\00\00b\00a") + (data $257 (i32.const 13820) "\1c") + (data $257.1 (i32.const 13832) "\02\00\00\00\04\00\00\00a\00a") + (data $258 (i32.const 13852) "\1c") + (data $258.1 (i32.const 13864) "\02\00\00\00\04\00\00\001\000") + (data $259 (i32.const 13884) "\1c") + (data $259.1 (i32.const 13896) "\02\00\00\00\04\00\00\001\001") + (data $260 (i32.const 13916) "\1c") + (data $260.1 (i32.const 13928) "\02\00\00\00\06\00\00\001\000\001") + (data $261 (i32.const 13948) "\1c") + (data $261.1 (i32.const 13960) "\02\00\00\00\06\00\00\001\002\002") + (data $262 (i32.const 13980) "\1c") + (data $262.1 (i32.const 13992) "\02\00\00\00\08\00\00\001\002\003\004") + (data $263 (i32.const 14012) "\1c") + (data $263.1 (i32.const 14024) "\02\00\00\00\08\00\00\001\002\003\003") + (data $264 (i32.const 14044) ",") + (data $264.1 (i32.const 14056) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $265 (i32.const 14092) "\1c") + (data $265.1 (i32.const 14104) "\02\00\00\00\06\00\00\00a\00a\00a") + (data $266 (i32.const 14124) ",") + (data $266.1 (i32.const 14136) "\02\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b") + (data $267 (i32.const 14172) "\1c") + (data $267.1 (i32.const 14184) "\02\00\00\00\n\00\00\00a\00a\00a\00a\00a") + (data $268 (i32.const 14204) "\1c") + (data $268.1 (i32.const 14216) "\02\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a") + (data $269 (i32.const 14236) ",") + (data $269.1 (i32.const 14248) "\02\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a") + (data $270 (i32.const 14284) "\1c") + (data $270.1 (i32.const 14296) "\02\00\00\00\n\00\00\00a\00-\00b\00-\00c") + (data $271 (i32.const 14316) "\1c") + (data $271.1 (i32.const 14328) "\02\00\00\00\n\00\00\00a\00+\00b\00-\00c") + (data $272 (i32.const 14348) "\1c") + (data $272.1 (i32.const 14360) "\02\00\00\00\08\00\00\00+\00a\00b\00c") + (data $273 (i32.const 14380) "\1c") + (data $273.1 (i32.const 14392) "\02\00\00\00\08\00\00\00\n\00a\00b\00c") + (data $274 (i32.const 14412) "\1c") + (data $274.1 (i32.const 14424) "\02\00\00\00\02\00\00\00\n") + (data $275 (i32.const 14444) "\1c") + (data $275.1 (i32.const 14456) "\02\00\00\00\02\00\00\00c") + (data $276 (i32.const 14476) "\1c") + (data $276.1 (i32.const 14488) "\02\00\00\00\04\00\00\00+\00+") + (data $277 (i32.const 14508) "\1c") + (data $277.1 (i32.const 14520) "\02\00\00\00\08\00\00\00a\00b\00+\00+") + (data $278 (i32.const 14540) ",") + (data $278.1 (i32.const 14552) "\02\00\00\00\12\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00c") + (data $279 (i32.const 14588) "\1c") + (data $279.1 (i32.const 14600) "\02\00\00\00\06\00\00\00+\00+\00+") + (data $280 (i32.const 14620) ",") + (data $280.1 (i32.const 14632) "\02\00\00\00\0e\00\00\00a\00b\00c\00a\00b\00c\00a") + (data $281 (i32.const 14668) ",") + (data $281.1 (i32.const 14680) "\02\00\00\00\1a\00\00\00+\00+\00+\00b\00c\00+\00+\00+\00b\00c\00+\00+\00+") + (data $282 (i32.const 14716) "\1c") + (data $282.1 (i32.const 14728) "\02\00\00\00\0c\00\00\00+\00+\00c\00+\00+\00c") + (data $283 (i32.const 14748) "\1c") + (data $283.1 (i32.const 14760) "\02\00\00\00\08\00\00\00c\00c\00c\00c") + (data $284 (i32.const 14780) "\1c") + (data $284.1 (i32.const 14792) "\02\00\00\00\04\00\00\00c\00c") + (data $285 (i32.const 14812) "\1c") + (data $285.1 (i32.const 14824) "\02\00\00\00\08\00\00\00+\00+\00+\00+") + (data $286 (i32.const 14844) "\1c") + (data $286.1 (i32.const 14856) "\02\00\00\00\02\00\00\00e") + (data $287 (i32.const 14876) "\1c") + (data $287.1 (i32.const 14888) "\02\00\00\00\04\00\00\00b\00c") + (data $288 (i32.const 14908) "\1c") + (data $288.1 (i32.const 14920) "\02\00\00\00\04\00\00\00a\00+") + (data $289 (i32.const 14940) "\1c") + (data $289.1 (i32.const 14952) "\02\00\00\00\n\00\00\00a\00+\00b\00+\00c") + (data $290 (i32.const 14972) ",") + (data $290.1 (i32.const 14984) "\02\00\00\00\0e\00\00\00+\00a\00+\00b\00+\00c\00+") + (data $291 (i32.const 15020) "\1c") + (data $291.1 (i32.const 15032) "\02\00\00\00\n\00\00\00a\00b\00c\00d\00e") + (data $292 (i32.const 15052) "\1c") + (data $292.1 (i32.const 15064) "\02\00\00\00\06\00\00\00-\00-\00-") + (data $293 (i32.const 15084) ",") + (data $293.1 (i32.const 15096) "\02\00\00\00\0e\00\00\00-\00-\00-\00b\00c\00d\00e") + (data $294 (i32.const 15132) "\1c") + (data $294.1 (i32.const 15144) "\02\00\00\00\n\00\00\00-\00-\00-\00-\00-") + (data $295 (i32.const 15164) "\1c") + (data $295.1 (i32.const 15176) "\02\00\00\00\08\00\00\00-\00-\00-\00-") + (data $296 (i32.const 15196) ",") + (data $296.1 (i32.const 15208) "\02\00\00\00\18\00\00\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-") + (data $297 (i32.const 15244) "\1c") + (data $297.1 (i32.const 15256) "\02\00\00\00\08\00\00\00-\00-\00-\00a") + (data $298 (i32.const 15276) ",") + (data $298.1 (i32.const 15288) "\02\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n") + (data $299 (i32.const 15324) "\1c") + (data $299.1 (i32.const 15336) "\02\00\00\00\02\00\00\00n") + (data $300 (i32.const 15356) "\1c") + (data $300.1 (i32.const 15368) "\02\00\00\00\n\00\00\00j\00k\00l\00m\00n") + (data $301 (i32.const 15388) "\1c") + (data $301.1 (i32.const 15400) "\02\00\00\00\n\00\00\00c\00d\00e\00f\00g") + (data $302 (i32.const 15420) "\1c") + (data $302.1 (i32.const 15432) "\02\00\00\00\n\00\00\00d\00e\00f\00g\00h") + (data $303 (i32.const 15452) ",") + (data $303.1 (i32.const 15464) "\02\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m") + (data $304 (i32.const 15500) ",") + (data $304.1 (i32.const 15512) "\02\00\00\00\0e\00\00\00c\00d\00e\00f\00g\00h\00i") + (data $305 (i32.const 15548) "\1c") + (data $305.1 (i32.const 15560) "\02\00\00\00\06\00\00\00e\00f\00g") + (data $306 (i32.const 15580) "\1c") + (data $306.1 (i32.const 15592) "\02\00\00\00\08\00\00\00e\00f\00g\00h") + (data $307 (i32.const 15612) "\1c") + (data $307.1 (i32.const 15624) "\02\00\00\00\02\00\00\00d") + (data $308 (i32.const 15644) ",") + (data $308.1 (i32.const 15656) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $309 (i32.const 15692) "|") + (data $309.1 (i32.const 15704) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $310 (i32.const 15820) "\1c") + (data $310.1 (i32.const 15832) "\02\00\00\00\n\00\00\00a\00,\00b\00,\00c") + (data $311 (i32.const 15852) ",") + (data $311.1 (i32.const 15864) "\02\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c") + (data $312 (i32.const 15900) "\1c") + (data $312.1 (i32.const 15912) "\02\00\00\00\04\00\00\00,\00 ") + (data $313 (i32.const 15932) "\1c") + (data $313.1 (i32.const 15944) "\02\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c") + (data $314 (i32.const 15964) "\1c") + (data $314.1 (i32.const 15976) "\02\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c") + (data $315 (i32.const 15996) "\1c") + (data $315.1 (i32.const 16008) "\02\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,") + (data $316 (i32.const 16028) "|") + (data $316.1 (i32.const 16040) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $317 (i32.const 16156) "<") + (data $317.1 (i32.const 16168) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $318 (i32.const 16220) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $319 (i32.const 16620) "\1c\04") + (data $319.1 (i32.const 16632) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $320 (i32.const 17676) "\\") + (data $320.1 (i32.const 17688) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $321 (i32.const 17772) "\1c") + (data $321.1 (i32.const 17784) "\02\00\00\00\02\00\00\008") + (data $322 (i32.const 17804) "\1c") + (data $322.1 (i32.const 17816) "\02\00\00\00\04\00\00\001\002") + (data $323 (i32.const 17836) "\1c") + (data $323.1 (i32.const 17848) "\02\00\00\00\n\00\00\00-\001\000\000\000") + (data $324 (i32.const 17868) "\1c") + (data $324.1 (i32.const 17880) "\02\00\00\00\n\00\00\001\002\003\004\005") + (data $325 (i32.const 17900) "\1c") + (data $325.1 (i32.const 17912) "\02\00\00\00\0c\00\00\001\002\003\004\005\006") + (data $326 (i32.const 17932) ",") + (data $326.1 (i32.const 17944) "\02\00\00\00\0e\00\00\001\001\001\001\001\001\001") + (data $327 (i32.const 17980) ",") + (data $327.1 (i32.const 17992) "\02\00\00\00\0e\00\00\001\002\003\004\005\006\007") + (data $328 (i32.const 18028) ",") + (data $328.1 (i32.const 18040) "\02\00\00\00\10\00\00\001\002\003\004\005\006\007\008") + (data $329 (i32.const 18076) ",") + (data $329.1 (i32.const 18088) "\02\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009") + (data $330 (i32.const 18124) ",") + (data $330.1 (i32.const 18136) "\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") + (data $331 (i32.const 18172) ",") + (data $331.1 (i32.const 18184) "\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") + (data $332 (i32.const 18220) ",") + (data $332.1 (i32.const 18232) "\02\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") + (data $333 (i32.const 18268) "\1c") + (data $333.1 (i32.const 18280) "\02\00\00\00\04\00\00\00-\001") + (data $334 (i32.const 18300) "\1c") + (data $334.1 (i32.const 18312) "\02\00\00\00\08\00\00\00-\001\002\008") + (data $335 (i32.const 18332) "\1c") + (data $335.1 (i32.const 18344) "\02\00\00\00\0c\00\00\00-\003\002\007\006\008") + (data $336 (i32.const 18364) "\1c") + (data $336.1 (i32.const 18376) "\02\00\00\00\08\00\00\001\000\000\000") + (data $337 (i32.const 18396) ",") + (data $337.1 (i32.const 18408) "\02\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") + (data $338 (i32.const 18444) ",") + (data $338.1 (i32.const 18456) "\02\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") + (data $339 (i32.const 18492) "\1c") + (data $339.1 (i32.const 18504) "\02\00\00\00\04\00\00\007\00b") + (data $340 (i32.const 18524) "\1c") + (data $340.1 (i32.const 18536) "\02\00\00\00\06\00\00\004\00d\002") + (data $341 (i32.const 18556) "\1c") + (data $341.1 (i32.const 18568) "\02\00\00\00\08\00\00\003\000\003\009") + (data $342 (i32.const 18588) "\1c") + (data $342.1 (i32.const 18600) "\02\00\00\00\n\00\00\001\00e\002\004\000") + (data $343 (i32.const 18620) "\1c") + (data $343.1 (i32.const 18632) "\02\00\00\00\0c\00\00\001\000\00f\004\004\007") + (data $344 (i32.const 18652) "\1c") + (data $344.1 (i32.const 18664) "\02\00\00\00\0c\00\00\001\002\00d\006\008\007") + (data $345 (i32.const 18684) "\1c") + (data $345.1 (i32.const 18696) "\02\00\00\00\0c\00\00\00b\00c\006\001\004\00e") + (data $346 (i32.const 18716) ",") + (data $346.1 (i32.const 18728) "\02\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005") + (data $347 (i32.const 18764) ",") + (data $347.1 (i32.const 18776) "\02\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00e") + (data $348 (i32.const 18812) ",") + (data $348.1 (i32.const 18824) "\02\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00f") + (data $349 (i32.const 18860) ",") + (data $349.1 (i32.const 18872) "\02\00\00\00\10\00\00\008\000\000\000\000\000\000\000") + (data $350 (i32.const 18908) ",") + (data $350.1 (i32.const 18920) "\02\00\00\00\10\00\00\00f\00f\00f\00f\00f\00f\00f\00f") + (data $351 (i32.const 18956) ",") + (data $351.1 (i32.const 18968) "\02\00\00\00\12\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f") + (data $352 (i32.const 19004) ",") + (data $352.1 (i32.const 19016) "\02\00\00\00\10\00\00\00-\00f\00f\00f\00f\00f\00f\00f") + (data $353 (i32.const 19052) ",") + (data $353.1 (i32.const 19064) "\02\00\00\00\12\00\00\00-\008\000\000\000\000\000\000\000") + (data $354 (i32.const 19100) "\1c") + (data $354.1 (i32.const 19112) "\02\00\00\00\06\00\00\001\001\001") + (data $355 (i32.const 19132) "\1c") + (data $355.1 (i32.const 19144) "\02\00\00\00\08\00\00\001\001\001\000") + (data $356 (i32.const 19164) "\1c") + (data $356.1 (i32.const 19176) "\02\00\00\00\n\00\00\001\001\001\000\001") + (data $357 (i32.const 19196) "\1c") + (data $357.1 (i32.const 19208) "\02\00\00\00\0c\00\00\001\001\001\000\001\001") + (data $358 (i32.const 19228) ",") + (data $358.1 (i32.const 19240) "\02\00\00\00\18\00\00\001\001\001\001\001\001\001\001\001\001\001\001") + (data $359 (i32.const 19276) "L") + (data $359.1 (i32.const 19288) "\02\00\00\002\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") + (data $360 (i32.const 19356) "\\") + (data $360.1 (i32.const 19368) "\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\001\000\000") + (data $361 (i32.const 19452) "\\") + (data $361.1 (i32.const 19464) "\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000") + (data $362 (i32.const 19548) "\\") + (data $362.1 (i32.const 19560) "\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000") + (data $363 (i32.const 19644) "\\") + (data $363.1 (i32.const 19656) "\02\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") + (data $364 (i32.const 19740) ",") + (data $364.1 (i32.const 19752) "\02\00\00\00\18\00\00\00-\001\001\001\001\001\001\001\001\001\001\001") + (data $365 (i32.const 19788) "<") + (data $365.1 (i32.const 19800) "\02\00\00\00*\00\00\001\000\002\000\000\002\000\002\002\002\000\001\002\002\001\001\001\001\002\001\000") + (data $366 (i32.const 19852) "<") + (data $366.1 (i32.const 19864) "\02\00\00\00 \00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") + (data $367 (i32.const 19916) ",") + (data $367.1 (i32.const 19928) "\02\00\00\00\1c\00\00\003\002\002\004\004\000\000\002\004\002\003\001\004\000") + (data $368 (i32.const 19964) ",") + (data $368.1 (i32.const 19976) "\02\00\00\00\16\00\00\003\007\007\007\007\007\007\007\007\007\007") + (data $369 (i32.const 20012) ",") + (data $369.1 (i32.const 20024) "\02\00\00\00\14\00\00\001\009\000\004\004\004\000\005\005\003") + (data $370 (i32.const 20060) ",") + (data $370.1 (i32.const 20072) "\02\00\00\00\12\00\00\001\00a\002\000\00d\00c\00d\008\000") + (data $371 (i32.const 20108) ",") + (data $371.1 (i32.const 20120) "\02\00\00\00\10\00\00\00a\007\00f\00f\00d\00a\009\000") + (data $372 (i32.const 20156) ",") + (data $372.1 (i32.const 20168) "\02\00\00\00\10\00\00\002\008\001\00d\005\005\00i\003") + (data $373 (i32.const 20204) ",") + (data $373.1 (i32.const 20216) "\02\00\00\00\0e\00\00\00b\002\008\00j\00p\00d\00l") + (data $374 (i32.const 20252) ",") + (data $374.1 (i32.const 20264) "\02\00\00\00\0e\00\00\003\00v\00v\00v\00v\00v\00v") + (data $375 (i32.const 20300) ",") + (data $375.1 (i32.const 20312) "\02\00\00\00\0e\00\00\001\00z\001\004\001\00z\003") + (data $376 (i32.const 20348) ",") + (data $376.1 (i32.const 20360) "\02\00\00\00\10\00\00\009\009\009\009\009\009\009\009") + (data $377 (i32.const 20396) ",") + (data $377.1 (i32.const 20408) "\02\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000") + (data $378 (i32.const 20444) ",") + (data $378.1 (i32.const 20456) "\02\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\007") + (data $379 (i32.const 20492) ",") + (data $379.1 (i32.const 20504) "\02\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005") + (data $380 (i32.const 20540) ",") + (data $380.1 (i32.const 20552) "\02\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005") + (data $381 (i32.const 20588) ",") + (data $381.1 (i32.const 20600) "\02\00\00\00\1a\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000") + (data $382 (i32.const 20636) ",") + (data $382.1 (i32.const 20648) "\02\00\00\00\1c\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\001") + (data $383 (i32.const 20684) "<") + (data $383.1 (i32.const 20696) "\02\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data $384 (i32.const 20748) "<") + (data $384.1 (i32.const 20760) "\02\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data $385 (i32.const 20812) "<") + (data $385.1 (i32.const 20824) "\02\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data $386 (i32.const 20876) "<") + (data $386.1 (i32.const 20888) "\02\00\00\00$\00\00\001\002\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data $387 (i32.const 20940) "<") + (data $387.1 (i32.const 20952) "\02\00\00\00&\00\00\001\002\003\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data $388 (i32.const 21004) "<") + (data $388.1 (i32.const 21016) "\02\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") + (data $389 (i32.const 21068) "\1c") + (data $389.1 (i32.const 21080) "\02\00\00\00\n\00\00\00-\001\002\003\004") + (data $390 (i32.const 21100) ",") + (data $390.1 (i32.const 21112) "\02\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005") + (data $391 (i32.const 21148) ",") + (data $391.1 (i32.const 21160) "\02\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") + (data $392 (i32.const 21196) ",") + (data $392.1 (i32.const 21208) "\02\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") + (data $393 (i32.const 21244) "<") + (data $393.1 (i32.const 21256) "\02\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data $394 (i32.const 21308) "<") + (data $394.1 (i32.const 21320) "\02\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data $395 (i32.const 21372) "<") + (data $395.1 (i32.const 21384) "\02\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") + (data $396 (i32.const 21436) "<") + (data $396.1 (i32.const 21448) "\02\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") + (data $397 (i32.const 21500) ",") + (data $397.1 (i32.const 21512) "\02\00\00\00\12\00\00\001\00f\00f\00f\00f\00f\00f\00f\00f") + (data $398 (i32.const 21548) ",") + (data $398.1 (i32.const 21560) "\02\00\00\00\16\00\00\005\006\007\008\009\00a\00b\00c\00d\00e\001") + (data $399 (i32.const 21596) ",") + (data $399.1 (i32.const 21608) "\02\00\00\00\18\00\00\004\005\006\007\008\009\00a\00b\00c\00d\00e\001") + (data $400 (i32.const 21644) ",") + (data $400.1 (i32.const 21656) "\02\00\00\00\1a\00\00\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") + (data $401 (i32.const 21692) ",") + (data $401.1 (i32.const 21704) "\02\00\00\00\1c\00\00\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") + (data $402 (i32.const 21740) "<") + (data $402.1 (i32.const 21752) "\02\00\00\00\1e\00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f") + (data $403 (i32.const 21804) "<") + (data $403.1 (i32.const 21816) "\02\00\00\00 \00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\000") + (data $404 (i32.const 21868) "<") + (data $404.1 (i32.const 21880) "\02\00\00\00 \00\00\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") + (data $405 (i32.const 21932) "<") + (data $405.1 (i32.const 21944) "\02\00\00\00 \00\00\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") + (data $406 (i32.const 21996) "<") + (data $406.1 (i32.const 22008) "\02\00\00\00\"\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f") + (data $407 (i32.const 22060) "<") + (data $407.1 (i32.const 22072) "\02\00\00\00\"\00\00\00-\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") + (data $408 (i32.const 22124) "|") + (data $408.1 (i32.const 22136) "\02\00\00\00b\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") + (data $409 (i32.const 22252) "\9c") + (data $409.1 (i32.const 22264) "\02\00\00\00\80\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") + (data $410 (i32.const 22412) "\\") + (data $410.1 (i32.const 22424) "\02\00\00\00D\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001") + (data $411 (i32.const 22508) "l") + (data $411.1 (i32.const 22520) "\02\00\00\00R\00\00\001\001\001\001\002\002\002\000\000\002\002\001\002\002\001\002\000\001\000\001\002\001\001\000\002\000\001\002\000\002\001\000\002\001\000\002\001\001\002\002\000") + (data $412 (i32.const 22620) "\\") + (data $412.1 (i32.const 22632) "\02\00\00\00@\00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003") + (data $413 (i32.const 22716) "L") + (data $413.1 (i32.const 22728) "\02\00\00\008\00\00\002\002\001\004\002\002\000\003\000\003\001\001\004\004\000\000\004\002\004\001\002\001\001\002\002\004\003\000") + (data $414 (i32.const 22796) "<") + (data $414.1 (i32.const 22808) "\02\00\00\00,\00\00\001\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007") + (data $415 (i32.const 22860) "<") + (data $415.1 (i32.const 22872) "\02\00\00\00&\00\00\003\003\005\005\000\000\005\001\006\00a\004\002\009\000\007\001\002\008\004") + (data $416 (i32.const 22924) "<") + (data $416.1 (i32.const 22936) "\02\00\00\00\"\00\00\002\00c\001\00d\005\006\00b\006\004\008\00c\006\00c\00d\001\001\000") + (data $417 (i32.const 22988) "<") + (data $417.1 (i32.const 23000) "\02\00\00\00 \00\00\006\007\009\007\009\00g\006\000\00f\005\004\002\008\000\001\000") + (data $418 (i32.const 23052) "<") + (data $418.1 (i32.const 23064) "\02\00\00\00\1e\00\00\005\00e\008\00g\004\00g\00g\00g\007\00g\005\006\00d\00i\00f") + (data $419 (i32.const 23116) ",") + (data $419.1 (i32.const 23128) "\02\00\00\00\1c\00\00\004\00e\00o\008\00h\00f\00a\00m\006\00f\00l\00l\00m\00o") + (data $420 (i32.const 23164) ",") + (data $420.1 (i32.const 23176) "\02\00\00\00\1a\00\00\00f\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v") + (data $421 (i32.const 23212) ",") + (data $421.1 (i32.const 23224) "\02\00\00\00\1a\00\00\003\00w\005\00e\001\001\002\006\004\00s\00g\00s\00f") + (data $422 (i32.const 23260) "\1c") + (data $422.1 (i32.const 23272) "\02\00\00\00\06\00\00\000\00.\000") + (data $423 (i32.const 23292) ",") + (data $423.1 (i32.const 23304) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data $425 (i32.const 23400) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 + end + unreachable + end + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:std/string + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1264 + i32.const 1328 + i32.const 57 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String#charAt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ge_u + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String.__not (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + else + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.fromCharCodes (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select + local.set $2 + local.get $4 + local.get $3 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $1 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/string/String#padStart (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + i32.eqz + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + local.get $4 + i32.lt_u + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 + local.get $1 + local.get $4 + i32.sub + local.tee $8 + local.get $3 + i32.gt_u + if + local.get $8 + local.get $8 + i32.const 2 + i32.sub + local.get $3 + i32.div_u + local.get $3 + i32.mul + local.tee $6 + i32.sub + local.set $1 + loop $while-continue|0 + local.get $5 + local.get $6 + i32.lt_u + if + local.get $5 + local.get $7 + i32.add + local.get $2 + local.get $3 + memory.copy + local.get $3 + local.get $5 + i32.add + local.set $5 + br $while-continue|0 + end + end + local.get $6 + local.get $7 + i32.add + local.get $2 + local.get $1 + memory.copy + else + local.get $7 + local.get $2 + local.get $8 + memory.copy + end + local.get $7 + local.get $8 + i32.add + local.get $0 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (func $~lib/string/String#padEnd (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + i32.eqz + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + local.get $3 + i32.lt_u + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.get $3 + memory.copy + local.get $1 + local.get $3 + i32.sub + local.tee $0 + local.get $4 + i32.gt_u + if + local.get $0 + local.get $0 + i32.const 2 + i32.sub + local.get $4 + i32.div_u + local.get $4 + i32.mul + local.tee $5 + i32.sub + local.set $7 + local.get $3 + local.get $6 + i32.add + local.set $1 + i32.const 0 + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $5 + i32.lt_u + if + local.get $0 + local.get $1 + i32.add + local.get $2 + local.get $4 + memory.copy + local.get $0 + local.get $4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $3 + local.get $6 + i32.add + local.get $5 + i32.add + local.get $2 + local.get $7 + memory.copy + else + local.get $3 + local.get $6 + i32.add + local.get $2 + local.get $0 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/string/String#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $4 + local.get $3 + i32.sub + local.tee $4 + local.get $2 + local.get $4 + i32.lt_s + select + local.set $2 + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $1 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/string/String#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#localeCompare (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.tee $0 + local.get $2 + local.get $3 + i32.sub + local.get $0 + select + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.gt_s + local.get $0 + i32.const 0 + i32.lt_s + i32.sub + ) + (func $~lib/string/String#trimStart (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if (result i32) + block $__inlined_func$~lib/util/string/isSpace (result i32) + local.get $0 + local.get $1 + i32.add + i32.load16_u + local.tee $3 + i32.const 5760 + i32.lt_u + if + local.get $3 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $3 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 1 + local.get $3 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace + drop + block $break|0 + block $case6|0 + local.get $3 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 0 + end + else + i32.const 0 + end + if + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#trimEnd (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + local.set $1 + loop $while-continue|0 + local.get $1 + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$1 (result i32) + local.get $0 + local.get $1 + i32.add + i32.const 2 + i32.sub + i32.load16_u + local.tee $2 + i32.const 5760 + i32.lt_u + if + local.get $2 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $2 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$1 + end + i32.const 1 + local.get $2 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$1 + drop + block $break|0 + block $case6|0 + local.get $2 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$1 + end + i32.const 0 + end + else + i32.const 0 + end + if + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|0 + end + end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + local.get $1 + local.get $3 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String#trim (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.shl + local.set $1 + loop $while-continue|0 + local.get $1 + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$2 (result i32) + local.get $0 + local.get $1 + i32.add + i32.const 2 + i32.sub + i32.load16_u + local.tee $4 + i32.const 5760 + i32.lt_u + if + local.get $4 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $4 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$2 + end + i32.const 1 + local.get $4 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$2 + drop + block $break|0 + block $case6|0 + local.get $4 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$2 + end + i32.const 0 + end + else + i32.const 0 + end + if + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $1 + local.get $2 + i32.gt_u + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$3 (result i32) + local.get $0 + local.get $2 + i32.add + i32.load16_u + local.tee $4 + i32.const 5760 + i32.lt_u + if + local.get $4 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $4 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$3 + end + i32.const 1 + local.get $4 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$3 + drop + block $break|00 + block $case6|01 + local.get $4 + i32.const 5760 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 8232 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 8233 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 8239 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 8287 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 12288 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 65279 + i32.eq + br_if $case6|01 + br $break|00 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$3 + end + i32.const 0 + end + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|1 + end + end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + local.get $2 + i32.eqz + local.get $1 + local.get $3 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/util/string/strtob (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $1 + i32.const 8 + i32.gt_u + if (result i32) + loop $while-continue|0 + local.get $1 + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$4 (result i32) + local.get $0 + local.get $1 + i32.add + i32.const 2 + i32.sub + i32.load16_u + local.tee $3 + i32.const 5760 + i32.lt_u + if + local.get $3 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $3 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$4 + end + i32.const 1 + local.get $3 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$4 + drop + block $break|0 + block $case6|0 + local.get $3 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$4 + end + i32.const 0 + end + else + i32.const 0 + end + if + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|0 + end + end + local.get $1 + i32.const 8 + i32.gt_u + if (result i32) + loop $while-continue|1 + local.get $1 + local.get $2 + i32.gt_u + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$5 (result i32) + local.get $0 + local.get $2 + i32.add + i32.load16_u + local.tee $3 + i32.const 5760 + i32.lt_u + if + local.get $3 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $3 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$5 + end + i32.const 1 + local.get $3 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$5 + drop + block $break|00 + block $case6|01 + local.get $3 + i32.const 5760 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 8232 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 8233 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 8239 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 8287 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 12288 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 65279 + i32.eq + br_if $case6|01 + br $break|00 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$5 + end + i32.const 0 + end + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 + end + end + local.get $1 + local.get $2 + i32.sub + else + local.get $1 + end + else + local.get $1 + end + i32.const 8 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + local.get $0 + local.get $2 + i32.add + i64.load + i64.const 28429475166421108 + i64.eq + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/strtol (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $folding-inner0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $folding-inner0 + local.get $0 + i32.load16_u + local.set $3 + loop $while-continue|0 + block $__inlined_func$~lib/util/string/isSpace$6 (result i32) + local.get $3 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $3 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $3 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$6 + drop + i32.const 1 + local.get $3 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$6 + drop + block $break|0 + block $case6|0 + local.get $3 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$6 + end + i32.const 0 + end + if + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $3 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + f64.const 1 + local.set $4 + local.get $3 + i32.const 45 + i32.eq + local.tee $6 + local.get $3 + i32.const 43 + i32.eq + i32.or + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + br_if $folding-inner0 + f64.const -1 + f64.const 1 + local.get $6 + select + local.set $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $3 + end + local.get $1 + if + local.get $1 + i32.const 2 + i32.lt_s + local.get $1 + i32.const 36 + i32.gt_s + i32.or + br_if $folding-inner0 + local.get $1 + i32.const 16 + i32.eq + if + local.get $3 + i32.const 48 + i32.eq + local.get $2 + i32.const 2 + i32.gt_s + i32.and + if (result i32) + local.get $0 + i32.load16_u offset=2 + i32.const 32 + i32.or + i32.const 120 + i32.eq + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + end + else + local.get $3 + i32.const 48 + i32.eq + local.get $2 + i32.const 2 + i32.gt_s + i32.and + if + block $break|1 + block $case2|1 + block $case1|1 + local.get $0 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $3 + i32.const 98 + i32.ne + if + local.get $3 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $3 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + end + end + local.get $1 + i32.const 10 + local.get $1 + select + local.set $1 + end + local.get $2 + i32.const 1 + i32.sub + local.set $7 + loop $while-continue|2 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if + block $while-break|2 + local.get $0 + i32.load16_u + local.tee $6 + i32.const 48 + i32.sub + local.tee $3 + i32.const 10 + i32.ge_u + if + local.get $6 + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + if (result i32) + local.get $6 + i32.const 55 + i32.sub + else + local.get $6 + i32.const 87 + i32.sub + local.get $6 + local.get $6 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + end + local.set $3 + end + local.get $1 + local.get $3 + i32.le_u + if + local.get $2 + local.get $7 + i32.eq + br_if $folding-inner0 + br $while-break|2 + end + local.get $5 + local.get $1 + f64.convert_i32_s + f64.mul + local.get $3 + f64.convert_i32_u + f64.add + local.set $5 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + f64.mul + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + f64.const nan:0x8000000000000 + ) + (func $~lib/string/parseInt (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/util/string/strtol + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/strtod (param $0 i32) (result f64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 f64) + (local $9 i32) + (local $10 f64) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + i32.eqz + br_if $folding-inner0 + local.get $0 + i32.load16_u + local.set $4 + f64.const 1 + local.set $10 + loop $while-continue|0 + local.get $5 + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$7 (result i32) + local.get $4 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $4 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $4 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$7 + drop + i32.const 1 + local.get $4 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$7 + drop + block $break|0 + block $case6|0 + local.get $4 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$7 + end + i32.const 0 + end + else + i32.const 0 + end + if + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $4 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|0 + end + end + local.get $5 + i32.eqz + br_if $folding-inner0 + local.get $4 + i32.const 45 + i32.eq + if (result i32) + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $folding-inner0 + f64.const -1 + local.set $10 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $4 + i32.const 43 + i32.eq + if (result i32) + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $folding-inner0 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $4 + end + end + local.tee $4 + i32.const 73 + i32.eq + local.get $5 + i32.const 8 + i32.ge_s + i32.and + if + local.get $0 + i64.load + i64.const 29555310648492105 + i64.eq + if (result i32) + local.get $0 + i64.load offset=8 + i64.const 34058970405077102 + i64.eq + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + f64.const inf + f64.mul + return + end + br $folding-inner0 + end + local.get $4 + i32.const 46 + i32.ne + local.get $4 + i32.const 48 + i32.sub + i32.const 10 + i32.ge_u + i32.and + br_if $folding-inner0 + local.get $0 + local.set $3 + loop $while-continue|1 + local.get $4 + i32.const 48 + i32.eq + if + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $4 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + local.get $5 + i32.const 0 + i32.le_s + br_if $folding-inner1 + local.get $4 + i32.const 46 + i32.eq + if + local.get $0 + local.get $3 + i32.eq + local.set $3 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $3 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + i32.and + br_if $folding-inner0 + i32.const 1 + local.set $9 + loop $for-loop|2 + local.get $0 + i32.load16_u + local.tee $4 + i32.const 48 + i32.eq + if + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $for-loop|2 + end + end + local.get $5 + i32.const 0 + i32.le_s + br_if $folding-inner1 + local.get $3 + local.get $2 + i32.eqz + i32.and + local.get $4 + i32.const 48 + i32.sub + i32.const 10 + i32.ge_u + i32.and + br_if $folding-inner0 + end + local.get $4 + i32.const 48 + i32.sub + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 10 + i32.lt_u + local.tee $11 + local.get $9 + i32.eqz + local.get $4 + i32.const 46 + i32.eq + i32.and + i32.or + if + block $for-break3 + local.get $11 + if + local.get $1 + i32.const 19 + i32.lt_s + if (result i64) + local.get $3 + i64.extend_i32_u + local.get $6 + i64.const 10 + i64.mul + i64.add + else + local.get $6 + local.get $3 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.or + end + local.set $6 + local.get $1 + i32.const 1 + i32.add + local.set $1 + else + local.get $1 + local.set $2 + i32.const 1 + local.set $9 + end + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $for-break3 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.tee $4 + i32.const 48 + i32.sub + local.set $3 + br $for-loop|3 + end + end + end + block $~lib/util/string/scientific|inlined.0 + local.get $6 + i64.eqz + local.get $2 + local.get $1 + local.get $9 + select + i32.const 19 + local.get $1 + local.get $1 + i32.const 19 + i32.gt_s + select + i32.sub + block $~lib/util/string/parseExp|inlined.0 (result i32) + i32.const 1 + local.set $9 + i32.const 0 + local.set $4 + i32.const 0 + local.get $0 + i32.load16_u + i32.const 32 + i32.or + i32.const 101 + i32.ne + br_if $~lib/util/string/parseExp|inlined.0 + drop + i32.const 0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.tee $1 + i32.const 45 + i32.eq + if (result i32) + i32.const 0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + i32.const -1 + local.set $9 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $1 + i32.const 43 + i32.eq + if (result i32) + i32.const 0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $1 + end + end + local.set $3 + loop $while-continue|4 + local.get $3 + i32.const 48 + i32.eq + if + i32.const 0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $3 + br $while-continue|4 + end + end + local.get $3 + i32.const 48 + i32.sub + local.set $3 + loop $for-loop|5 + local.get $3 + i32.const 10 + i32.lt_u + i32.const 0 + local.get $5 + select + if + local.get $9 + i32.const 3200 + i32.mul + local.get $4 + i32.const 3200 + i32.ge_s + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $4 + i32.const 10 + i32.mul + local.get $3 + i32.add + local.set $4 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + i32.const 48 + i32.sub + local.set $3 + br $for-loop|5 + end + end + local.get $4 + local.get $9 + i32.mul + end + i32.add + local.tee $0 + i32.const -342 + i32.lt_s + i32.or + br_if $~lib/util/string/scientific|inlined.0 + f64.const inf + local.set $8 + local.get $0 + i32.const 308 + i32.gt_s + br_if $~lib/util/string/scientific|inlined.0 + local.get $6 + f64.convert_i64_u + local.set $8 + local.get $0 + i32.eqz + br_if $~lib/util/string/scientific|inlined.0 + local.get $0 + i32.const 37 + i32.le_s + local.get $0 + i32.const 22 + i32.gt_s + i32.and + if + local.get $8 + local.get $0 + i32.const 3 + i32.shl + i32.const 4496 + i32.add + f64.load + f64.mul + local.set $8 + i32.const 22 + local.set $0 + end + local.get $6 + i64.const 9007199254740991 + i64.le_u + if (result i32) + local.get $0 + i32.const 31 + i32.shr_s + local.tee $1 + local.get $0 + local.get $1 + i32.add + i32.xor + i32.const 22 + i32.le_s + else + i32.const 0 + end + if (result f64) + local.get $0 + i32.const 0 + i32.gt_s + if + local.get $8 + local.get $0 + i32.const 3 + i32.shl + i32.const 4672 + i32.add + f64.load + f64.mul + local.set $8 + br $~lib/util/string/scientific|inlined.0 + end + local.get $8 + i32.const 0 + local.get $0 + i32.sub + i32.const 3 + i32.shl + i32.const 4672 + i32.add + f64.load + f64.div + else + local.get $0 + i32.const 0 + i32.lt_s + if (result f64) + local.get $6 + local.get $6 + i64.clz + local.tee $7 + i64.shl + local.set $6 + local.get $0 + i64.extend_i32_s + local.get $7 + i64.sub + local.set $7 + loop $for-loop|6 + local.get $0 + i32.const -14 + i32.le_s + if + local.get $6 + i64.const 6103515625 + i64.rem_u + local.get $6 + i64.const 6103515625 + i64.div_u + local.tee $6 + i64.clz + local.tee $12 + i64.const 18 + i64.sub + i64.shl + f64.convert_i64_u + f64.const 0.00004294967296 + f64.mul + f64.nearest + i64.trunc_sat_f64_u + local.get $6 + local.get $12 + i64.shl + i64.add + local.set $6 + local.get $7 + local.get $12 + i64.sub + local.set $7 + local.get $0 + i32.const 14 + i32.add + local.set $0 + br $for-loop|6 + end + end + local.get $6 + i32.const 0 + local.get $0 + i32.sub + call $~lib/math/ipow32 + i64.extend_i32_s + local.tee $13 + i64.div_u + local.tee $14 + i64.clz + local.set $12 + local.get $6 + local.get $13 + i64.rem_u + f64.convert_i64_u + i64.reinterpret_f64 + local.get $12 + i64.const 52 + i64.shl + i64.add + f64.reinterpret_i64 + local.get $13 + f64.convert_i64_u + f64.div + i64.trunc_sat_f64_u + local.get $14 + local.get $12 + i64.shl + i64.add + f64.convert_i64_u + local.get $7 + local.get $12 + i64.sub + i32.wrap_i64 + call $~lib/math/NativeMath.scalbn + else + local.get $6 + local.get $6 + i64.ctz + local.tee $7 + i64.shr_u + local.set $6 + local.get $7 + local.get $0 + i64.extend_i32_s + i64.add + global.set $~lib/util/string/__fixmulShift + loop $for-loop|7 + local.get $0 + i32.const 13 + i32.ge_s + if + i64.const 32 + local.get $6 + i64.const 32 + i64.shr_u + i64.const 1220703125 + i64.mul + local.get $6 + i64.const 4294967295 + i64.and + i64.const 1220703125 + i64.mul + local.tee $6 + i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.clz + i64.extend_i32_u + local.tee $12 + i64.sub + local.tee $13 + global.get $~lib/util/string/__fixmulShift + i64.add + global.set $~lib/util/string/__fixmulShift + local.get $6 + local.get $12 + i64.shl + i64.const 31 + i64.shr_u + i64.const 1 + i64.and + local.get $7 + local.get $12 + i64.shl + local.get $6 + i64.const 4294967295 + i64.and + local.get $13 + i64.shr_u + i64.or + i64.add + local.set $6 + local.get $0 + i32.const 13 + i32.sub + local.set $0 + br $for-loop|7 + end + end + local.get $0 + call $~lib/math/ipow32 + i64.extend_i32_u + local.tee $7 + local.get $6 + i64.const 4294967295 + i64.and + i64.mul + local.set $12 + i64.const 32 + local.get $6 + i64.const 32 + i64.shr_u + local.get $7 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.tee $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.clz + i64.extend_i32_u + local.tee $7 + i64.sub + local.tee $13 + global.get $~lib/util/string/__fixmulShift + i64.add + global.set $~lib/util/string/__fixmulShift + local.get $12 + local.get $7 + i64.shl + i64.const 31 + i64.shr_u + i64.const 1 + i64.and + local.get $6 + local.get $7 + i64.shl + local.get $12 + i64.const 4294967295 + i64.and + local.get $13 + i64.shr_u + i64.or + i64.add + f64.convert_i64_u + global.get $~lib/util/string/__fixmulShift + i32.wrap_i64 + call $~lib/math/NativeMath.scalbn + end + end + local.set $8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + local.get $10 + f64.copysign + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + f64.const nan:0x8000000000000 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + f64.const 0 + f64.mul + ) + (func $~lib/number/F64.parseFloat (param $0 i32) (result f64) + (local $1 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/util/string/strtod + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/strtol (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) + i32.const 4880 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store + block $folding-inner0 + i32.const 4876 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + i32.eqz + br_if $folding-inner0 + i32.const 4880 + i32.load16_u + local.set $1 + loop $while-continue|0 + block $__inlined_func$~lib/util/string/isSpace$8 (result i32) + local.get $1 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $1 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $1 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$8 + drop + i32.const 1 + local.get $1 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$8 + drop + block $break|0 + block $case6|0 + local.get $1 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$8 + end + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|0 + end + end + i32.const 1 + local.set $4 + local.get $1 + i32.const 45 + i32.eq + local.tee $6 + local.get $1 + i32.const 43 + i32.eq + i32.or + if (result i32) + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + i32.eqz + br_if $folding-inner0 + i32.const -1 + i32.const 1 + local.get $6 + select + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + else + local.get $1 + end + i32.const 48 + i32.eq + local.get $0 + i32.const 2 + i32.gt_s + i32.and + if + block $break|1 + block $case2|1 + block $case1|1 + local.get $2 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $1 + i32.const 98 + i32.ne + if + local.get $1 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $1 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 2 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 8 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 16 + local.set $3 + end + end + local.get $3 + i32.const 10 + local.get $3 + select + local.set $6 + local.get $0 + i32.const 1 + i32.sub + local.set $7 + loop $while-continue|2 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + if + block $while-break|2 + local.get $2 + i32.load16_u + local.tee $3 + i32.const 48 + i32.sub + local.tee $1 + i32.const 10 + i32.ge_u + if + local.get $3 + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + if (result i32) + local.get $3 + i32.const 55 + i32.sub + else + local.get $3 + i32.const 87 + i32.sub + local.get $3 + local.get $3 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + end + local.set $1 + end + local.get $1 + local.get $6 + i32.ge_u + if + local.get $0 + local.get $7 + i32.eq + br_if $folding-inner0 + br $while-break|2 + end + local.get $5 + local.get $6 + i32.mul + local.get $1 + i32.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + i32.mul + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/util/string/strtol (result i64) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + i32.const 4928 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4928 + i32.store + block $folding-inner0 + i32.const 4924 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + i32.eqz + br_if $folding-inner0 + i32.const 4928 + i32.load16_u + local.set $1 + loop $while-continue|0 + block $__inlined_func$~lib/util/string/isSpace$9 (result i32) + local.get $1 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $1 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $1 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$9 + drop + i32.const 1 + local.get $1 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$9 + drop + block $break|0 + block $case6|0 + local.get $1 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$9 + end + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|0 + end + end + i64.const 1 + local.set $4 + local.get $1 + i32.const 45 + i32.eq + local.tee $6 + local.get $1 + i32.const 43 + i32.eq + i32.or + if (result i32) + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + i32.eqz + br_if $folding-inner0 + i64.const -1 + i64.const 1 + local.get $6 + select + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + else + local.get $1 + end + i32.const 48 + i32.eq + local.get $0 + i32.const 2 + i32.gt_s + i32.and + if + block $break|1 + block $case2|1 + block $case1|1 + local.get $2 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $1 + i32.const 98 + i32.ne + if + local.get $1 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $1 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 2 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 8 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 16 + local.set $3 + end + end + local.get $3 + i32.const 10 + local.get $3 + select + local.set $6 + local.get $0 + i32.const 1 + i32.sub + local.set $7 + loop $while-continue|2 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + if + block $while-break|2 + local.get $2 + i32.load16_u + local.tee $3 + i32.const 48 + i32.sub + local.tee $1 + i32.const 10 + i32.ge_u + if + local.get $3 + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + if (result i32) + local.get $3 + i32.const 55 + i32.sub + else + local.get $3 + i32.const 87 + i32.sub + local.get $3 + local.get $3 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + end + local.set $1 + end + local.get $1 + local.get $6 + i32.ge_u + if + local.get $0 + local.get $7 + i32.eq + br_if $folding-inner0 + br $while-break|2 + end + local.get $1 + i64.extend_i32_u + local.get $5 + local.get $6 + i64.extend_i32_s + i64.mul + i64.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + i64.mul + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i64.const 0 + ) + (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + local.get $2 + i32.add + local.tee $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $0 + local.get $2 + memory.copy + local.get $2 + local.get $4 + i32.add + local.get $1 + local.get $3 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String#concat + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__gt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.gt_s + local.get $2 + local.get $3 + i32.gt_s + local.get $0 + select + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String.__lt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + local.get $3 + local.get $2 + local.get $2 + local.get $3 + i32.gt_s + local.tee $0 + select + call $~lib/util/string/compareImpl + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + i32.lt_s + local.get $0 + local.get $1 + select + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String.__gte (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String.__lt + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__lte (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String.__gt + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#repeat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $4 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $4 + i64.extend_i32_s + local.get $1 + i64.extend_i32_s + i64.mul + i64.const 268435456 + i64.gt_u + end + if + i32.const 14064 + i32.const 1328 + i32.const 334 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.eqz + local.get $1 + i32.eqz + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + local.get $1 + i32.const 1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $4 + i32.mul + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.shl + local.tee $4 + local.get $1 + i32.mul + local.set $1 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.gt_u + if + local.get $2 + local.get $3 + i32.add + local.get $0 + local.get $4 + memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#replace (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) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.le_u + if + local.get $3 + local.get $4 + i32.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + local.get $0 + call $~lib/string/String.__eq + select + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/string/String#indexOf + local.tee $1 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + local.get $4 + local.get $3 + i32.sub + local.tee $6 + i32.add + local.tee $4 + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + local.get $4 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + local.tee $7 + memory.copy + local.get $4 + local.get $7 + i32.add + local.get $2 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.get $1 + local.get $5 + i32.add + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + local.get $3 + i32.add + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $1 + i32.sub + i32.const 1 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/string/String#replaceAll (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) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $8 + local.get $3 + i32.ge_u + if + local.get $3 + local.get $8 + i32.ge_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + local.get $0 + call $~lib/string/String.__eq + select + local.set $0 + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $4 + block $folding-inner0 + local.get $8 + i32.eqz + if + local.get $4 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $3 + i32.const 1 + i32.add + local.get $4 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=8 + local.get $11 + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.set $1 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_u + if + local.get $11 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $11 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + br $folding-inner0 + end + local.get $4 + local.get $8 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=12 + local.get $11 + local.get $0 + local.get $3 + memory.copy + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $10 + call $~lib/string/String#indexOf + local.tee $3 + i32.const -1 + i32.xor + if + local.get $11 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $3 + local.get $8 + i32.add + local.set $10 + br $while-continue|1 + end + end + br $folding-inner0 + end + local.get $3 + local.set $5 + loop $while-continue|2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $10 + call $~lib/string/String#indexOf + local.tee $7 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String.__not + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=16 + end + local.get $7 + local.get $10 + i32.sub + local.tee $6 + local.get $9 + i32.add + local.get $4 + i32.add + local.get $5 + i32.gt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $5 + i32.const 1 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=16 + end + local.get $11 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $10 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.const 1 + i32.shl + memory.copy + local.get $11 + local.get $6 + local.get $9 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.get $6 + i32.add + local.set $9 + local.get $7 + local.get $8 + i32.add + local.set $10 + br $while-continue|2 + end + end + local.get $11 + if + local.get $3 + local.get $10 + i32.sub + local.tee $1 + local.get $9 + i32.add + local.get $5 + i32.gt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $5 + i32.const 1 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=16 + end + local.get $1 + if + local.get $11 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $10 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 1 + i32.shl + memory.copy + end + local.get $1 + local.get $9 + i32.add + local.tee $0 + local.get $5 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $0 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=16 + end + br $folding-inner0 + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/string/String#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#slice@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#slice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#substr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + local.get $1 + i32.const 0 + i32.lt_s + if + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $1 + end + local.get $1 + i32.sub + local.tee $3 + local.get $2 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $2 + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#substr@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#substr + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $3 + i32.gt_s + select + local.tee $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + local.get $2 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $4 + local.get $3 + local.get $2 + local.get $2 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $2 + local.get $4 + i32.sub + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + local.get $4 + i32.eqz + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $4 + i32.add + local.get $3 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String#substring@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#substring + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 14064 + i32.const 15664 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.tee $2 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $3 + i32.lt_u + select + local.tee $1 + call $~lib/rt/itcms/__renew + local.tee $3 + local.get $2 + i32.ne + if + local.get $0 + local.get $3 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $1 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#split (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) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner4 + block $folding-inner3 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + local.get $2 + i32.eqz + br_if $folding-inner1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=12 + i32.eqz + if + local.get $2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 2147483647 + local.get $2 + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $8 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + if + local.get $6 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + i32.const 1712 + i32.store + br $folding-inner4 + end + else + local.get $6 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $6 + local.get $8 + local.get $6 + local.get $8 + i32.lt_s + select + local.tee $3 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + local.get $5 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + local.get $2 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=20 + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $0 + local.get $1 + local.get $3 + call $~lib/string/String#indexOf + local.tee $9 + i32.const -1 + i32.xor + if + local.get $9 + local.get $3 + i32.sub + local.tee $7 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.shl + local.tee $10 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=28 + local.get $7 + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $10 + memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=24 + local.get $2 + local.get $7 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1712 + call $~lib/array/Array<~lib/string/String>#push + end + local.get $5 + i32.const 1 + i32.add + local.tee $5 + local.get $8 + i32.eq + br_if $folding-inner3 + local.get $4 + local.get $9 + i32.add + local.set $3 + br $while-continue|1 + end + end + local.get $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $2 + local.get $0 + call $~lib/array/Array<~lib/string/String>#push + br $folding-inner3 + end + local.get $6 + local.get $3 + i32.sub + local.tee $1 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=32 + local.get $4 + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=24 + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1712 + call $~lib/array/Array<~lib/string/String>#push + end + br $folding-inner4 + end + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.set $2 + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String#split@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#split + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1264 + i32.const 15664 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 15712 + i32.const 15664 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $start:std/string + (local $0 i32) + (local $1 f64) + (local $2 f32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 76 + memory.fill + global.get $std/string/str + i32.const 1056 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1168 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1200 + i32.const 1200 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1232 + i32.const 1232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 16 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/string/String#charCodeAt$294 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $0 + br $__inlined_func$~lib/string/String#charCodeAt$294 + end + local.get $0 + i32.load16_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + i32.const 104 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + block $__inlined_func$~lib/string/String#codePointAt$295 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $0 + i32.const 1 + i32.le_u + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $0 + br $__inlined_func$~lib/string/String#codePointAt$295 + end + local.get $0 + i32.const 2 + i32.eq + local.get $4 + i32.load16_u offset=2 + local.tee $0 + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#codePointAt$295 + end + local.get $4 + i32.load16_u offset=4 + local.tee $4 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#codePointAt$295 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 10 + i32.shl + local.get $4 + i32.add + i32.const 56613888 + i32.sub + local.set $0 + end + local.get $0 + i32.const 105 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 59404 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1492 + i32.const 1488 + i32.store + i32.const 1496 + i32.const 1488 + i32.store + i32.const 1488 + global.set $~lib/rt/itcms/pinSpace + i32.const 1524 + i32.const 1520 + i32.store + i32.const 1528 + i32.const 1520 + i32.store + i32.const 1520 + global.set $~lib/rt/itcms/toSpace + i32.const 1604 + i32.const 1600 + i32.store + i32.const 1608 + i32.const 1600 + i32.store + i32.const 1600 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 15 + call $~lib/string/String#at + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=8 + local.get $4 + i32.const 15 + call $~lib/string/String#charAt + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $0 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const -1 + call $~lib/string/String#at + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $5 + i32.store offset=12 + local.get $4 + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + call $~lib/string/String#charAt + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $0 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=8 + local.get $0 + i32.const 0 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.sub + call $~lib/string/String#at + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + call $~lib/string/String.__not + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1776 + call $~lib/string/String.__not + if + i32.const 0 + i32.const 1120 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + call $~lib/string/String.__not + if + i32.const 0 + i32.const 1120 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.fromCharCode@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + i32.const 65600 + call $~lib/string/String.fromCharCode@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + i32.const 54 + call $~lib/string/String.fromCharCode@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1872 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + i32.const 65590 + call $~lib/string/String.fromCharCode@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1872 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 55296 + i32.const 57088 + call $~lib/string/String.fromCharCode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 4 + i32.const 1936 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String.fromCharCodes + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 4 + i32.const 2000 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String.fromCharCodes + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 4 + i32.const 2064 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String.fromCharCodes + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/string/String.fromCodePoint + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 54 + call $~lib/string/String.fromCodePoint + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1872 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 119558 + call $~lib/string/String.fromCodePoint + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 2176 + i32.store + block $__inlined_func$~lib/string/String#startsWith$296 + local.get $4 + i32.const 2172 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + br $__inlined_func$~lib/string/String#startsWith$296 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2176 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2176 + local.get $4 + call $~lib/util/string/compareImpl + i32.eqz + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2208 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 2208 + i32.store + block $__inlined_func$~lib/string/String#endsWith$297 + i32.const 536870910 + local.get $4 + local.get $4 + i32.const 536870910 + i32.gt_s + select + i32.const 2204 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.sub + local.tee $5 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + br $__inlined_func$~lib/string/String#endsWith$297 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2208 + i32.store offset=4 + local.get $0 + local.get $5 + i32.const 2208 + local.get $4 + call $~lib/util/string/compareImpl + i32.eqz + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2240 + i32.store offset=4 + local.get $0 + i32.const 2240 + i32.const 0 + call $~lib/string/String#indexOf + i32.const -1 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 2272 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=4 + local.get $0 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 15 + i32.const 2272 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=4 + local.get $0 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 3 + i32.const 2272 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2304 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 10 + i32.const 1712 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 45 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 100 + i32.const 1712 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 5 + i32.const 2272 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 6 + i32.const 2400 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 8 + i32.const 2400 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 49 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 2272 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=4 + local.get $0 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 15 + i32.const 2272 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=4 + local.get $0 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 52 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 3 + i32.const 2272 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2304 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 10 + i32.const 1712 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 100 + i32.const 1712 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 55 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 5 + i32.const 2272 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2512 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 6 + i32.const 2336 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 57 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 8 + i32.const 2336 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2576 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 58 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + i32.const 0 + call $~lib/string/String#indexOf + if + i32.const 0 + i32.const 1120 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 2176 + i32.const 0 + call $~lib/string/String#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 1808 + i32.const 0 + call $~lib/string/String#indexOf + if + i32.const 0 + i32.const 1120 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=4 + local.get $0 + local.get $4 + i32.const 0 + call $~lib/string/String#indexOf + if + i32.const 0 + i32.const 1120 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 1712 + i32.const 0 + call $~lib/string/String#indexOf + if + i32.const 0 + i32.const 1120 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2624 + i32.const 0 + call $~lib/string/String#indexOf + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 65 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2656 + i32.const 0 + call $~lib/string/String#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2624 + i32.const 2 + call $~lib/string/String#indexOf + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2624 + i32.const 3 + call $~lib/string/String#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2688 + i32.const -1 + call $~lib/string/String#indexOf + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + i32.const 1712 + i32.const 1712 + call $~lib/string/String#lastIndexOf@varargs + if + i32.const 0 + i32.const 1120 + i32.const 71 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + i32.const 1712 + i32.const 2176 + call $~lib/string/String#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 1712 + call $~lib/string/String#lastIndexOf@varargs + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 2624 + call $~lib/string/String#lastIndexOf@varargs + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 2656 + call $~lib/string/String#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 75 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 2720 + call $~lib/string/String#lastIndexOf@varargs + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 76 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2624 + i32.const 2 + call $~lib/string/String#lastIndexOf + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2624 + i32.const 3 + call $~lib/string/String#lastIndexOf + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2688 + i32.const -1 + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2752 + i32.const 0 + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 80 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2176 + i32.const 0 + call $~lib/string/String#lastIndexOf + if + i32.const 0 + i32.const 1120 + i32.const 81 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + call $~lib/string/String#localeCompare + if + i32.const 0 + i32.const 1120 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 1712 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1808 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 85 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2784 + i32.const 2784 + call $~lib/string/String#localeCompare + if + i32.const 0 + i32.const 1120 + i32.const 86 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 2816 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 2848 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 88 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2816 + i32.const 2336 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2880 + i32.const 2336 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2912 + i32.const 2336 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 91 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2880 + i32.const 2944 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 2912 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2944 + i32.const 2880 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 2304 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1776 + i32.const 1712 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + call $~lib/string/String#trimStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 98 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2976 + call $~lib/string/String#trimStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 99 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3008 + call $~lib/string/String#trimStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 100 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + call $~lib/string/String#trimEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2976 + call $~lib/string/String#trimEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 103 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3008 + call $~lib/string/String#trimEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 104 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + call $~lib/string/String#trim + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2976 + call $~lib/string/String#trim + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3008 + call $~lib/string/String#trim + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store + i32.const 3152 + call $~lib/util/string/strtob + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 111 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store + i32.const 3200 + call $~lib/util/string/strtob + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store + i32.const 3248 + call $~lib/util/string/strtob + if + i32.const 0 + i32.const 1120 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store + i32.const 1712 + call $~lib/util/string/strtob + if + i32.const 0 + i32.const 1120 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3296 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + i32.const 3296 + i32.store + i32.const 3296 + call $~lib/util/string/strtob + if + i32.const 0 + i32.const 1120 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.store + i32.const 3328 + call $~lib/util/string/strtob + if + i32.const 0 + i32.const 1120 + i32.const 116 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3360 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + i32.const 3360 + i32.store + i32.const 3360 + call $~lib/util/string/strtob + if + i32.const 0 + i32.const 1120 + i32.const 117 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3392 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 119 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3424 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3456 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 121 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3488 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 122 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3520 + i32.const 0 + call $~lib/string/parseInt + f64.const 5 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 123 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3552 + i32.const 0 + call $~lib/string/parseInt + f64.const 455 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 124 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3584 + i32.const 0 + call $~lib/string/parseInt + f64.const 3855 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 125 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3616 + i32.const 0 + call $~lib/string/parseInt + f64.const 3855 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 126 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3648 + i32.const 0 + call $~lib/string/parseInt + f64.const 11 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3680 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3712 + i32.const 0 + call $~lib/string/parseInt + f64.const -123 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3744 + i32.const 0 + call $~lib/string/parseInt + f64.const 123 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 130 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3776 + i32.const 0 + call $~lib/string/parseInt + f64.const -12 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3392 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3808 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 133 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3840 + i32.const 16 + call $~lib/string/parseInt + f64.const 2833 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 134 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3872 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 135 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3904 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 136 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3936 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3968 + i32.const 0 + call $~lib/string/parseInt + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.eqz + if + i32.const 0 + i32.const 1120 + i32.const 138 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4000 + i32.const 0 + call $~lib/string/parseInt + i32.const 4048 + i32.const 16 + call $~lib/string/parseInt + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 139 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4080 + i32.const 0 + call $~lib/string/parseInt + f64.const 36893488147419103232 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4080 + i32.const 13 + call $~lib/string/parseInt + f64.const 5135857308667095285760 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 141 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4144 + i32.const 10 + call $~lib/string/parseInt + f64.const -1.e+24 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4224 + i32.const 16 + call $~lib/string/parseInt + f64.const 75557863725914323419136 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4288 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 144 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4320 + i32.const 0 + call $~lib/string/parseInt + f64.const 2 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 145 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4368 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4400 + i32.const 0 + call $~lib/string/parseInt + f64.const 2 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4448 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 149 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4480 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 150 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4512 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 151 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 152 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4560 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4592 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2400 + i32.const 37 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 155 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4624 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 156 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4656 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 157 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store + i32.const 4656 + call $~lib/util/string/strtod + f32.demote_f64 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $2 + f32.eq + if + i32.const 0 + i32.const 1120 + i32.const 158 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4656 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 159 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store + i32.const 4656 + call $~lib/util/string/strtod + f32.demote_f64 + local.tee $2 + local.get $2 + f32.eq + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store + i32.const 4656 + call $~lib/util/string/strtod + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store + call $~lib/util/string/strtol + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2147483647 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store + call $~lib/util/string/strtol + i32.const 2147483647 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 164 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4928 + i32.store + call $~lib/util/string/strtol + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i64.const 9223372036854775807 + i64.ne + if + i32.const 0 + i32.const 1120 + i32.const 165 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4928 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + i32.const 4928 + i32.store + call $~lib/util/string/strtol + i64.const 9223372036854775807 + i64.ne + if + i32.const 0 + i32.const 1120 + i32.const 166 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3392 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 169 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3456 + call $~lib/number/F64.parseFloat + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 170 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4992 + call $~lib/number/F64.parseFloat + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 171 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5024 + call $~lib/number/F64.parseFloat + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 172 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5056 + call $~lib/number/F64.parseFloat + f64.const 1e-05 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 173 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5088 + call $~lib/number/F64.parseFloat + f64.const -1e-05 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 174 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5120 + call $~lib/number/F64.parseFloat + f64.const -3e-23 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5168 + call $~lib/number/F64.parseFloat + f64.const 3e21 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 176 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5216 + call $~lib/number/F64.parseFloat + f64.const 0.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5248 + call $~lib/number/F64.parseFloat + f64.const 0.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 178 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5280 + call $~lib/number/F64.parseFloat + f64.const 0.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 179 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5312 + call $~lib/number/F64.parseFloat + f64.const 0.25 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 180 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5344 + call $~lib/number/F64.parseFloat + f64.const 1e3 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5376 + call $~lib/number/F64.parseFloat + f64.const 1e-10 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 182 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5424 + call $~lib/number/F64.parseFloat + f64.const 1e-30 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5472 + call $~lib/number/F64.parseFloat + f64.const 1e-323 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 184 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5520 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 185 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5568 + call $~lib/number/F64.parseFloat + f64.const 1.e+308 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 186 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5600 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 187 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 188 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5632 + call $~lib/number/F64.parseFloat + f64.const 0.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 191 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5680 + call $~lib/number/F64.parseFloat + f64.const 1e-10 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 192 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5728 + call $~lib/number/F64.parseFloat + f64.const 10 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5776 + call $~lib/number/F64.parseFloat + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 194 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5808 + call $~lib/number/F64.parseFloat + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 195 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5840 + call $~lib/number/F64.parseFloat + f64.const 10 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 196 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5888 + call $~lib/number/F64.parseFloat + f64.const 123456789 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 197 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5936 + call $~lib/number/F64.parseFloat + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 198 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5984 + call $~lib/number/F64.parseFloat + f64.const 1e-60 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6016 + call $~lib/number/F64.parseFloat + f64.const 1.e+60 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 201 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6048 + call $~lib/number/F64.parseFloat + f64.const 123.4 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 204 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6080 + call $~lib/number/F64.parseFloat + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 205 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6112 + call $~lib/number/F64.parseFloat + f64.const -1.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 206 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6160 + call $~lib/number/F64.parseFloat + f64.const 10 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 207 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6208 + call $~lib/number/F64.parseFloat + f64.const 10 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 208 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6256 + call $~lib/number/F64.parseFloat + f64.const 0.022 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6304 + call $~lib/number/F64.parseFloat + f64.const 11 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 210 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3808 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 211 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6336 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 212 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6368 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 213 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6400 + call $~lib/number/F64.parseFloat + f64.const 1.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 214 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6432 + call $~lib/number/F64.parseFloat + f64.const -1.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 215 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6464 + call $~lib/number/F64.parseFloat + f64.const -1.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6496 + call $~lib/number/F64.parseFloat + f64.const -1.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 217 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6528 + call $~lib/number/F64.parseFloat + f64.const -1.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 218 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6560 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6592 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 220 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6624 + call $~lib/number/F64.parseFloat + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 221 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6656 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 222 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6688 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 223 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6720 + call $~lib/number/F64.parseFloat + f64.const 10 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6752 + call $~lib/number/F64.parseFloat + f64.const 10 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 225 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6800 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 226 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6832 + call $~lib/number/F64.parseFloat + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 227 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6864 + call $~lib/number/F64.parseFloat + f64.const 0.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 228 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6896 + call $~lib/number/F64.parseFloat + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6928 + call $~lib/number/F64.parseFloat + f64.const 10 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 230 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6960 + call $~lib/number/F64.parseFloat + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 231 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6992 + call $~lib/number/F64.parseFloat + f64.const 0.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 232 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7024 + call $~lib/number/F64.parseFloat + f64.const 0.01 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 233 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7072 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 234 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7104 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 235 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7136 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 236 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7168 + call $~lib/number/F64.parseFloat + f64.const 0.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7200 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 238 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7232 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 239 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7264 + call $~lib/number/F64.parseFloat + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 240 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7296 + call $~lib/number/F64.parseFloat + f64.const 0.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 241 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7328 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 242 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7360 + call $~lib/number/F64.parseFloat + i64.reinterpret_f64 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1120 + i32.const 243 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7392 + call $~lib/number/F64.parseFloat + i64.reinterpret_f64 + i64.const -9223372036854775808 + i64.ne + if + i32.const 0 + i32.const 1120 + i32.const 244 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7424 + call $~lib/number/F64.parseFloat + i64.reinterpret_f64 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1120 + i32.const 245 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3968 + call $~lib/number/F64.parseFloat + i64.reinterpret_f64 + i64.const -9223372036854775808 + i64.ne + if + i32.const 0 + i32.const 1120 + i32.const 246 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7456 + call $~lib/number/F64.parseFloat + i64.reinterpret_f64 + i64.const -9223372036854775808 + i64.ne + if + i32.const 0 + i32.const 1120 + i32.const 247 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4592 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 248 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4560 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 249 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7504 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 250 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7536 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 251 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7568 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 252 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7600 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 253 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7632 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 254 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7664 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 255 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7696 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 256 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7728 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7760 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 258 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7792 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 259 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7824 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 260 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7856 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 261 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7888 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 262 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3360 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 263 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7920 + call $~lib/number/F64.parseFloat + f64.const 1e22 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 264 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7952 + call $~lib/number/F64.parseFloat + f64.const 1e-22 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 265 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7984 + call $~lib/number/F64.parseFloat + f64.const 1.e+23 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 266 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8016 + call $~lib/number/F64.parseFloat + f64.const 1e-23 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 267 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8048 + call $~lib/number/F64.parseFloat + f64.const 1.e+37 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 268 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8080 + call $~lib/number/F64.parseFloat + f64.const 1e-37 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 269 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8112 + call $~lib/number/F64.parseFloat + f64.const 1.e+38 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 270 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8144 + call $~lib/number/F64.parseFloat + f64.const 1e-38 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 271 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8176 + call $~lib/number/F64.parseFloat + f64.const 2.220446049250313e-16 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 272 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8240 + call $~lib/number/F64.parseFloat + f64.const 1797693134862315708145274e284 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 273 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8320 + call $~lib/number/F64.parseFloat + f64.const 5e-324 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 274 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8352 + call $~lib/number/F64.parseFloat + f64.const 1.e+308 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 275 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8400 + call $~lib/number/F64.parseFloat + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 276 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8544 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 277 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8592 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 278 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8640 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 279 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8688 + call $~lib/number/F64.parseFloat + f64.const -inf + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 280 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8736 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 281 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8784 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 282 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8832 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 283 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8864 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 284 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8912 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 285 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8960 + call $~lib/number/F64.parseFloat + f64.const -inf + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 286 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 9008 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 287 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 9056 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 288 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 9104 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 289 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 9136 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 290 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 9184 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 291 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 9232 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 9424 + call $~lib/number/F64.parseFloat + f64.const 1e-323 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 308 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 9616 + call $~lib/number/F64.parseFloat + f64.const 2.225073858507202e-308 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 312 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 9808 + i32.const 9968 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 10128 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 10288 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10448 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/number/F64.parseFloat + f64.const 1797693134862315708145274e284 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 315 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10608 + call $~lib/number/F64.parseFloat + f64.const 9.753531888799502e-104 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 333 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10720 + call $~lib/number/F64.parseFloat + f64.const 0.5961860348131807 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 334 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10832 + call $~lib/number/F64.parseFloat + f64.const 0.18150131692180388 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 335 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10944 + call $~lib/number/F64.parseFloat + f64.const 0.42070823575344535 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 336 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11056 + call $~lib/number/F64.parseFloat + f64.const 0.6654686306516261 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 337 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11168 + call $~lib/number/F64.parseFloat + f64.const 0.6101852922970868 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 338 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11280 + call $~lib/number/F64.parseFloat + f64.const 0.7696695208236968 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 339 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11392 + call $~lib/number/F64.parseFloat + f64.const 0.25050653222286823 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 340 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11504 + call $~lib/number/F64.parseFloat + f64.const 0.2740037230228005 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 341 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11616 + call $~lib/number/F64.parseFloat + f64.const 0.20723093500497428 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 342 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11728 + call $~lib/number/F64.parseFloat + f64.const 7.900280238081605 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 343 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11840 + call $~lib/number/F64.parseFloat + f64.const 98.22860653737297 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 344 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11952 + call $~lib/number/F64.parseFloat + f64.const 746.894972319037 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 345 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12064 + call $~lib/number/F64.parseFloat + f64.const 1630.2683202827284 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 346 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12176 + call $~lib/number/F64.parseFloat + f64.const 46371.68629719171 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 347 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12288 + call $~lib/number/F64.parseFloat + f64.const 653780.5944497711 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 348 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12400 + call $~lib/number/F64.parseFloat + f64.const 234632.43565024371 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 349 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12512 + call $~lib/number/F64.parseFloat + f64.const 97094817.16420048 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 350 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12624 + call $~lib/number/F64.parseFloat + f64.const 499690852.20518744 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 351 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12736 + call $~lib/number/F64.parseFloat + f64.const 7925201200557245595648 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 352 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12848 + call $~lib/number/F64.parseFloat + f64.const 6096564585983177528398588e5 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 353 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12960 + call $~lib/number/F64.parseFloat + f64.const 4800416117477028695992383e42 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 354 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13072 + call $~lib/number/F64.parseFloat + f64.const 8524829079817968137287277e80 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 355 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13184 + call $~lib/number/F64.parseFloat + f64.const 3271239291709782092398754e243 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 356 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13296 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq + if + i32.const 0 + i32.const 1120 + i32.const 359 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13328 + call $~lib/number/F64.parseFloat + f64.const 0.1 + f64.ne + if + i32.const 0 + i32.const 1120 + i32.const 360 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1808 + i32.const 13360 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 13392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 364 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1808 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 365 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 367 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1712 + i32.const 0 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 371 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 1712 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 373 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 13360 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 375 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 1808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 376 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13424 + i32.const 13456 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 378 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13424 + i32.const 13424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 379 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13488 + i32.const 13520 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 381 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13552 + i32.const 13584 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 383 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13616 + i32.const 13616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 384 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13616 + i32.const 13664 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 386 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13712 + i32.const 13760 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 388 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13360 + i32.const 1808 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 390 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13808 + i32.const 1808 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 391 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13808 + i32.const 13840 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 392 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13808 + i32.const 13392 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 393 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13808 + i32.const 13392 + call $~lib/string/String.__lt + if + i32.const 0 + i32.const 1120 + i32.const 394 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 1712 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 396 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 2336 + call $~lib/string/String.__lt + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 397 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 1712 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 398 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 2336 + call $~lib/string/String.__lte + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 399 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 1712 + call $~lib/string/String.__lt + if + i32.const 0 + i32.const 1120 + i32.const 400 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 2336 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 1120 + i32.const 401 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + call $~lib/string/String.__lt + if + i32.const 0 + i32.const 1120 + i32.const 402 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 1120 + i32.const 403 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 404 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + call $~lib/string/String.__lte + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 405 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3456 + i32.const 13872 + call $~lib/string/String.__lt + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 407 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13872 + i32.const 3456 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 408 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13904 + i32.const 13872 + call $~lib/string/String.__lt + if + i32.const 0 + i32.const 1120 + i32.const 409 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13872 + i32.const 13904 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 1120 + i32.const 410 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13904 + i32.const 13872 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 411 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13872 + i32.const 13904 + call $~lib/string/String.__lt + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 412 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13904 + i32.const 13904 + call $~lib/string/String.__lt + if + i32.const 0 + i32.const 1120 + i32.const 413 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13904 + i32.const 13904 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 1120 + i32.const 414 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13904 + i32.const 13904 + call $~lib/string/String.__lte + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 415 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13904 + i32.const 13904 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 416 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13872 + i32.const 13936 + call $~lib/string/String.__gte + if + i32.const 0 + i32.const 1120 + i32.const 417 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13936 + i32.const 13872 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 418 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13872 + i32.const 13936 + call $~lib/string/String.__lte + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 419 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3456 + i32.const 3456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 420 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13904 + i32.const 13904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 421 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2400 + i32.const 2400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 422 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2400 + i32.const 13968 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 424 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14000 + i32.const 14000 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 425 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14032 + i32.const 14000 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 427 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 65377 + call $~lib/string/String.fromCodePoint + local.tee $4 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 55296 + call $~lib/string/String.fromCodePoint + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + i32.const 56322 + call $~lib/string/String.fromCodePoint + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $6 + local.get $0 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 432 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2396 + i32.load + i32.const 1 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 435 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 100 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 437 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 0 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 438 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 1 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 439 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 2 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 13840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 440 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 3 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 441 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13392 + i32.const 4 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 442 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 5 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 443 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 6 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14224 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 444 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1808 + i32.const 7 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14256 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 445 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + i32.const 1712 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 447 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + i32.const 4592 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 448 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4592 + i32.const 4592 + i32.const 1712 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 449 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4592 + i32.const 1712 + i32.const 1712 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 450 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 4560 + i32.const 4592 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 451 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 2336 + i32.const 4592 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 452 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 2912 + i32.const 4592 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 453 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 13392 + i32.const 13392 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 454 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14304 + i32.const 4560 + i32.const 4592 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 455 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 1712 + i32.const 4592 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 456 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14400 + i32.const 14432 + i32.const 4592 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 457 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 14464 + i32.const 14496 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 458 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 14464 + i32.const 1712 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 13392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 459 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + i32.const 2336 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 461 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 4560 + i32.const 4592 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 462 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2544 + i32.const 2336 + i32.const 4592 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 464 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14560 + i32.const 2336 + i32.const 4592 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 465 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2544 + i32.const 13392 + i32.const 13392 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 466 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14640 + i32.const 1808 + i32.const 14608 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2544 + i32.const 13392 + i32.const 14496 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 468 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14768 + i32.const 14800 + i32.const 14496 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 469 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 2912 + i32.const 4592 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 470 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2912 + i32.const 14864 + i32.const 14496 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 471 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 14896 + i32.const 4592 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14928 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 472 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13392 + i32.const 13392 + i32.const 4592 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 473 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14304 + i32.const 4560 + i32.const 4592 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 474 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + i32.const 1712 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 476 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + i32.const 4592 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 477 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4592 + i32.const 4592 + i32.const 1712 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 478 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4592 + i32.const 1712 + i32.const 1712 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 479 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 2336 + i32.const 4560 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 480 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 2816 + i32.const 4560 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 481 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 1712 + i32.const 4592 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 482 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 1712 + i32.const 1712 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 483 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15040 + i32.const 1808 + i32.const 15072 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 486 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13392 + i32.const 13392 + i32.const 15152 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 487 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14112 + i32.const 1808 + i32.const 15184 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 488 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14112 + i32.const 13840 + i32.const 15072 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 489 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15296 + global.set $std/string/str + global.get $~lib/memory/__stack_pointer + i32.const 15296 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + i32.const 15296 + i32.const 0 + call $~lib/string/String#slice@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 493 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/string/String#slice@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 494 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -5 + call $~lib/string/String#slice@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 495 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 7 + call $~lib/string/String#slice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 496 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const -11 + i32.const -6 + call $~lib/string/String#slice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 497 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 3 + call $~lib/string/String#slice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 498 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const -1 + call $~lib/string/String#slice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 499 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 0 + call $~lib/string/String#substr@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 501 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/string/String#substr@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 502 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -5 + call $~lib/string/String#substr@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 503 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 7 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 504 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const -11 + i32.const -6 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 505 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 3 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 506 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const -1 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 507 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 100 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 508 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 4 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15600 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 509 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const -3 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 510 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 0 + call $~lib/string/String#substring@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 512 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/string/String#substring@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 513 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -5 + call $~lib/string/String#substring@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 514 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 7 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 515 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const -11 + i32.const -6 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 516 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 3 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 517 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const -1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 518 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 100 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 519 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 4 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 520 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const -3 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 521 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 527 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.const 1712 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1120 + i32.const 529 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 531 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15840 + i32.const 7632 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15840 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 533 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15840 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 535 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15872 + i32.const 15920 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 537 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15952 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1712 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 539 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15984 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1712 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 16016 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 543 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 545 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + i32.const 0 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + if + i32.const 0 + i32.const 1120 + i32.const 547 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + i32.const 1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 549 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 15840 + i32.const 2624 + i32.const 1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 551 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + i32.const 4 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 553 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + i32.const -1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 555 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 15840 + i32.const 2624 + i32.const -1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 562 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 563 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 17792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 564 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 17824 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 565 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 123 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 566 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1000 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 17856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 567 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1234 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14000 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 568 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12345 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 17888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 569 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 123456 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 17920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 570 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1111111 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 17952 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 571 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1234567 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18000 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 572 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12345678 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 573 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 123456789 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 574 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2147483646 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 575 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2147483647 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 576 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483648 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 577 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18288 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 578 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -128 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 580 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -32768 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 581 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483648 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 582 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 584 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1000 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18384 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2147483647 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 586 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483648 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 587 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 588 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 592 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 593 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 17792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 594 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 595 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 123 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18512 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 596 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1234 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12345 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18576 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 598 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 123456 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 599 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1111111 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 600 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1234567 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 601 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12345678 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18704 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 602 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 123456789 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 603 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2147483646 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 604 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2147483647 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 605 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483648 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 606 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18928 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 607 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 609 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -4096 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 17856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 610 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2147483647 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 611 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483647 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18976 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 612 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -268435455 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19024 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 613 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483648 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 614 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2147483648 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 615 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 619 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 620 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 13904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 621 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 7 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 622 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 623 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 29 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 624 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 59 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 625 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4095 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 626 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 33554431 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 627 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -12 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 628 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -4 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 629 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 630 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 631 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -2047 + i32.const 2 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 633 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 3 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 637 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 4 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19872 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 638 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 5 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 639 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 8 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19984 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 640 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 11 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 641 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 15 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20080 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 642 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 17 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 643 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 21 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20176 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 644 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 27 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20224 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 645 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 32 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 646 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + i32.const 36 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 647 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 651 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 12 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 17824 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 652 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 123 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 653 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1234 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14000 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 654 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 12345 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 17888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 655 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 123456 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 17920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 656 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1234567 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18000 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 657 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 99999999 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 658 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 100000000 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 659 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967295 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 660 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967297 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 661 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 68719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20512 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 662 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 663 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 8687194767350 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 664 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 86871947673501 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 665 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20704 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 666 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 667 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 19999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 668 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 129999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20896 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 669 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1239999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 670 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21024 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 671 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 673 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1234 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 674 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967295 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 675 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967297 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 676 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -4294967295 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 677 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 68719476735 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20512 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 678 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -68719476735 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 679 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -868719476735 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 680 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -999868719476735 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 681 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -19999868719476735 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21328 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 682 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9223372036854775807 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 683 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9223372036854775808 + i32.const 10 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 684 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 688 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 689 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 12 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 690 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1234 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 691 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1111111 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 18640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 692 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 8589934591 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 693 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 5942249508321 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 694 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 76310993685985 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 695 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 920735923817967 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 696 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9927935178558959 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 697 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 81985529216486895 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 698 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1311768467463790320 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21824 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 699 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 9223372036854775807 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 700 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 21952 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 701 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9223372036854775807 + i32.const 16 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 22016 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 703 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9223372036854775808 + i32.const 16 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 22080 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 704 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -9223372036854775808 + i32.const 16 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 22080 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 705 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 709 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 710 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 7 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 711 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 14 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 712 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 59 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 713 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4095 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 714 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 4294967295 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 19664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 715 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 562949953421311 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 22144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 716 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 22272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 717 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -8589934591 + i32.const 2 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 22432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 719 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 3 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 22528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 723 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 4 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 22640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 724 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 5 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 22736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 725 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 8 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 22816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 726 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 11 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 22880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 727 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 15 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 22944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 728 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 17 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 23008 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 729 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 21 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 23072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 730 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 27 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 23136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 731 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 32 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 23184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 732 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const -1 + i32.const 36 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 23232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 733 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 23280 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 736 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 23280 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 737 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const nan:0x8000000000000 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 7696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 738 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 23312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 739 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 8960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 740 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.220446049250313e-16 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 8176 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 741 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -2.220446049250313e-16 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 24336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 742 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1797693134862315708145274e284 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 8240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 743 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1797693134862315708145274e284 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 24400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 744 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1.1920928955078125e-07 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 24480 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 745 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -1.1920928955078125e-07 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 24528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 746 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 3402823466385288598117041e14 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 24576 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 747 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const -3402823466385288598117041e14 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 24624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 748 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4185580496821356722454785e274 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 24672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 749 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.2250738585072014e-308 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 24736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 750 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4.940656e-318 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 24816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 751 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9060801153433600 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 24864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 752 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 4708356024711512064 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 24928 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 753 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 9409340012568248320 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 24992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 754 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 5e-324 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 8320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 755 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 757 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.1 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 5280 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 758 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 759 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -0.1 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 760 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e6 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 762 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-06 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25200 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 763 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e6 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 764 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-06 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 765 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e7 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 766 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-07 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 767 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.e+308 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 5568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 769 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.e+308 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 770 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 23312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 771 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -inf + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 8960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 772 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-308 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 773 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-308 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 774 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-323 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 775 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-323 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 776 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 23280 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 777 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + f64.const 4294967272 + i32.const 0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + local.get $4 + i32.const 23344 + local.get $0 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 25632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 779 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.2312145673456234e-08 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 780 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 555555555.5555556 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 781 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.9999999999999999 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 782 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 783 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 12.34 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25872 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 784 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.3333333333333333 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 785 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1234e17 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 786 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1234e18 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 787 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 2.71828 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 788 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.0271828 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 789 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 271.828 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 790 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1e+128 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 791 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1e-64 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26288 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 792 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.000035689 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 793 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26384 + i32.const 26416 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26448 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 820 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 26496 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 821 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26496 + i32.const 1712 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 822 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 1712 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 823 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26528 + i32.const 26528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 831 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26528 + i32.const 26528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 832 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26560 + i32.const 26560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 833 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26592 + i32.const 26592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 834 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/string/str + i32.const 59404 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.fromCharCode (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $1 + i32.const 0 + i32.gt_s + local.tee $3 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.store16 + local.get $3 + if + local.get $2 + local.get $1 + i32.store16 offset=2 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $3 + local.get $2 + if + local.get $3 + local.get $2 + local.get $4 + memory.copy + end + local.get $3 + i32.store + i32.const 16 + local.get $1 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $0 + i32.const 65535 + i32.gt_u + local.tee $2 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $2 + if + local.get $0 + i32.const 1114111 + i32.gt_u + if + i32.const 0 + i32.const 1328 + i32.const 39 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.const 65536 + i32.sub + local.tee $0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $0 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + else + local.get $1 + local.get $0 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 2 + i32.lt_s + local.get $1 + i32.const 36 + i32.gt_s + i32.or + if + i32.const 16048 + i32.const 16176 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3392 + return + end + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 + select + local.set $2 + local.get $1 + i32.const 10 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $4 + i32.add + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + else + local.get $1 + i32.const 16 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 31 + local.get $2 + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $4 + i32.add + local.set $7 + local.get $2 + i64.extend_i32_u + local.set $3 + loop $while-continue|0 + local.get $1 + i32.const 2 + i32.ge_u + if + local.get $7 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.const 16640 + i32.add + i32.load + i32.store + local.get $3 + i64.const 8 + i64.shr_u + local.set $3 + br $while-continue|0 + end + end + local.get $1 + i32.const 1 + i32.and + if + local.get $7 + local.get $3 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16640 + i32.add + i32.load16_u + i32.store16 + end + else + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/number/ulog_base$171 (result i32) + local.get $2 + i64.extend_i32_u + local.set $5 + local.get $1 + i32.popcnt + i32.const 1 + i32.eq + if + i32.const 63 + local.get $5 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $1 + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + br $__inlined_func$~lib/util/number/ulog_base$171 + end + local.get $1 + i64.extend_i32_s + local.tee $6 + local.set $3 + i32.const 1 + local.set $0 + loop $while-continue|01 + local.get $3 + local.get $5 + i64.le_u + if + local.get $5 + local.get $3 + i64.div_u + local.set $5 + local.get $3 + local.get $3 + i64.mul + local.set $3 + local.get $0 + i32.const 1 + i32.shl + local.set $0 + br $while-continue|01 + end + end + loop $while-continue|1 + local.get $5 + i64.const 0 + i64.ne + if + local.get $5 + local.get $6 + i64.div_u + local.set $5 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|1 + end + end + local.get $0 + i32.const 1 + i32.sub + end + local.tee $7 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $4 + i32.add + local.get $2 + i64.extend_i32_u + local.get $7 + local.get $1 + call $~lib/util/number/utoa64_any_core + end + end + local.get $4 + if + local.get $0 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 2 + i32.lt_s + local.get $1 + i32.const 36 + i32.gt_s + i32.or + if + i32.const 16048 + i32.const 16176 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3392 + return + end + local.get $1 + i32.const 10 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + else + local.get $1 + i32.const 16 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 31 + local.get $0 + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $0 + i64.extend_i32_u + local.set $3 + loop $while-continue|0 + local.get $1 + i32.const 2 + i32.ge_u + if + local.get $2 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.const 16640 + i32.add + i32.load + i32.store + local.get $3 + i64.const 8 + i64.shr_u + local.set $3 + br $while-continue|0 + end + end + local.get $1 + i32.const 1 + i32.and + if + local.get $2 + local.get $3 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16640 + i32.add + i32.load16_u + i32.store16 + end + else + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/number/ulog_base$175 (result i32) + local.get $0 + i64.extend_i32_u + local.set $4 + local.get $1 + i32.popcnt + i32.const 1 + i32.eq + if + i32.const 63 + local.get $4 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $1 + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + br $__inlined_func$~lib/util/number/ulog_base$175 + end + local.get $1 + i64.extend_i32_s + local.tee $5 + local.set $3 + i32.const 1 + local.set $2 + loop $while-continue|01 + local.get $3 + local.get $4 + i64.le_u + if + local.get $4 + local.get $3 + i64.div_u + local.set $4 + local.get $3 + local.get $3 + i64.mul + local.set $3 + local.get $2 + i32.const 1 + i32.shl + local.set $2 + br $while-continue|01 + end + end + loop $while-continue|1 + local.get $4 + i64.const 0 + i64.ne + if + local.get $4 + local.get $5 + i64.div_u + local.set $4 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 1 + i32.sub + end + local.tee $6 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i64.extend_i32_u + local.get $6 + local.get $1 + call $~lib/util/number/utoa64_any_core + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i64) + (local $5 i64) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 2 + i32.lt_s + local.get $1 + i32.const 36 + i32.gt_s + i32.or + if + i32.const 16048 + i32.const 16176 + i32.const 401 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3392 + return + end + local.get $1 + i32.const 10 + i32.eq + if + local.get $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.wrap_i64 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $6 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $1 + local.get $6 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $0 + local.get $1 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $1 + i32.const 16 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 2 + i32.ge_u + if + local.get $3 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.const 16640 + i32.add + i32.load + i32.store + local.get $0 + i64.const 8 + i64.shr_u + local.set $0 + br $while-continue|0 + end + end + local.get $1 + i32.const 1 + i32.and + if + local.get $3 + local.get $0 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16640 + i32.add + i32.load16_u + i32.store16 + end + else + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/number/ulog_base$180 (result i32) + local.get $0 + local.set $2 + local.get $1 + i32.popcnt + i32.const 1 + i32.eq + if + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $1 + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + br $__inlined_func$~lib/util/number/ulog_base$180 + end + local.get $1 + i64.extend_i32_s + local.tee $5 + local.set $4 + i32.const 1 + local.set $3 + loop $while-continue|01 + local.get $2 + local.get $4 + i64.ge_u + if + local.get $2 + local.get $4 + i64.div_u + local.set $2 + local.get $4 + local.get $4 + i64.mul + local.set $4 + local.get $3 + i32.const 1 + i32.shl + local.set $3 + br $while-continue|01 + end + end + loop $while-continue|1 + local.get $2 + i64.const 0 + i64.ne + if + local.get $2 + local.get $5 + i64.div_u + local.set $2 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|1 + end + end + local.get $3 + i32.const 1 + i32.sub + end + local.tee $6 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $0 + local.get $6 + local.get $1 + call $~lib/util/number/utoa64_any_core + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 2 + i32.lt_s + local.get $1 + i32.const 36 + i32.gt_s + i32.or + if + i32.const 16048 + i32.const 16176 + i32.const 431 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3392 + return + end + i64.const 0 + local.get $0 + i64.sub + local.get $0 + local.get $0 + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.const 1 + i32.shl + local.tee $4 + select + local.set $0 + local.get $1 + i32.const 10 + i32.eq + if + local.get $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.wrap_i64 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $7 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 + i32.add + local.get $1 + local.get $7 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 + i32.add + local.get $0 + local.get $1 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $1 + i32.const 16 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 + i32.add + local.set $7 + loop $while-continue|0 + local.get $1 + i32.const 2 + i32.ge_u + if + local.get $7 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.const 16640 + i32.add + i32.load + i32.store + local.get $0 + i64.const 8 + i64.shr_u + local.set $0 + br $while-continue|0 + end + end + local.get $1 + i32.const 1 + i32.and + if + local.get $7 + local.get $0 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16640 + i32.add + i32.load16_u + i32.store16 + end + else + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/number/ulog_base$185 (result i32) + local.get $0 + local.set $2 + local.get $1 + i32.popcnt + i32.const 1 + i32.eq + if + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $1 + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + br $__inlined_func$~lib/util/number/ulog_base$185 + end + local.get $1 + i64.extend_i32_s + local.tee $6 + local.set $5 + i32.const 1 + local.set $3 + loop $while-continue|01 + local.get $2 + local.get $5 + i64.ge_u + if + local.get $2 + local.get $5 + i64.div_u + local.set $2 + local.get $5 + local.get $5 + i64.mul + local.set $5 + local.get $3 + i32.const 1 + i32.shl + local.set $3 + br $while-continue|01 + end + end + loop $while-continue|1 + local.get $2 + i64.const 0 + i64.ne + if + local.get $2 + local.get $6 + i64.div_u + local.set $2 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|1 + end + end + local.get $3 + i32.const 1 + i32.sub + end + local.tee $7 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 + i32.add + local.get $0 + local.get $7 + local.get $1 + call $~lib/util/number/utoa64_any_core + end + end + local.get $4 + if + local.get $3 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/util/number/dtoa (param $0 f64) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 23280 + local.set $1 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if + i32.const 7696 + local.set $1 + local.get $0 + local.get $0 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 8960 + i32.const 23312 + local.get $0 + f64.const 0 + f64.lt + select + local.set $1 + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.get $0 + i32.const 0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 23344 + local.get $2 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/dtoa (param $0 f32) (result i32) + (local $1 f64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 23280 + local.set $2 + block $~lib/util/number/dtoa_impl|inlined.1 + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.1 + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne + if + i32.const 7696 + local.set $2 + local.get $1 + local.get $1 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.1 + i32.const 8960 + i32.const 23312 + local.get $1 + f64.const 0 + f64.lt + select + local.set $2 + br $~lib/util/number/dtoa_impl|inlined.1 + end + local.get $1 + i32.const 1 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 23344 + local.get $3 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) +) diff --git a/tests/compiler/std/string.ts b/tests/compiler/std/string.ts index 8aae0919de..df5b2d5443 100644 --- a/tests/compiler/std/string.ts +++ b/tests/compiler/std/string.ts @@ -2,7 +2,7 @@ import { utoa32, itoa32, utoa64, itoa64, dtoa } from "util/number"; // preliminary var str: string = "hi, I'm a string"; -var nullStr: string; +var nullStr: string | null = null; // exactly once in static memory assert(changetype(str) == changetype("hi, I'm a string")); @@ -13,15 +13,23 @@ assert("\xDFab" == "ßab"); assert(str.length == 16); assert(str.charCodeAt(0) == 0x68); +assert(str.codePointAt(1) == 105); +assert(str.at(15) == str.charAt(15)); +assert(str.at(-1) == str.charAt(str.length - 1)); +assert(str.at(-str.length) == "h"); assert(!!"" == false); assert(!!"\0" == true); assert(!!"a" == true); assert(String.fromCharCode(0) == "\0"); +assert(String.fromCharCode(65600) == "@"); assert(String.fromCharCode(54) == "6"); assert(String.fromCharCode(0x10000 + 54) == "6"); assert(String.fromCharCode(0xD800, 0xDF00) == "𐌀"); +assert(String.fromCharCodes([0, 54]) == "\x006"); +assert(String.fromCharCodes([65, 66, 67]) == "ABC"); +assert(String.fromCharCodes([0xD834, 0xDF06, 0x61, 0xD834, 0xDF07]) == "\uD834\uDF06a\uD834\uDF07"); assert(String.fromCodePoint(0) == "\0"); assert(String.fromCodePoint(54) == "6"); @@ -77,9 +85,13 @@ assert("a".localeCompare("") == 1); assert("".localeCompare("a") == -1); assert("null".localeCompare("null") == 0); assert("abc".localeCompare("abd") == -1); +assert("abc".localeCompare("abf") == -1); assert("abd".localeCompare("abc") == 1); +assert("abz".localeCompare("abc") == 1); assert("abcd".localeCompare("abc") == 1); +assert("abz".localeCompare("abdd") == 1); assert("abc".localeCompare("abcd") == -1); +assert("abdd".localeCompare("abz") == -1); assert("".localeCompare(" ") == -1); assert("\0".localeCompare("") == 1); @@ -95,6 +107,15 @@ assert("".trim() == ""); assert("ab c".trim() == "ab c"); assert(" \n\t\rabc \t\r ".trim() == "abc"); +// assert(bool.parse("true") == true); +assert(bool.parse("\t\n true") == true); +assert(bool.parse("\t\n true\n\r ") == true); +assert(bool.parse(" trueabc") == false); +assert(bool.parse("") == false); +assert(bool.parse("tru") == false); +assert(bool.parse("True") == false); +assert(bool.parse("false") == false); + assert(parseInt("0") == 0); assert(parseInt("000") == 0); assert(parseInt("1") == 1); @@ -125,17 +146,24 @@ assert(parseInt("2badnum") == 2); assert(parseInt(" \t\n1") == 1); assert(parseInt(" \t\n0x02") == 2); +assert(parseInt("0 abc") == 0); +assert(parseInt("1 abc") == 1); +assert(parseInt(" \t\n0 abc") == 0); assert(isNaN(parseInt(""))); assert(isNaN(parseInt("-"))); assert(isNaN(parseInt("+"))); assert(isNaN(parseInt("123", 37))); assert(isNaN(parseInt("🔥"))); assert(isNaN(parseInt("badnum"))); -assert(isNaN(F32.parseInt("badnum"))); -assert(isNaN(F64.parseInt("badnum"))); +assert(isNaN(F32.parseFloat("badnum"))); +assert(isNaN(F64.parseFloat("badnum"))); +assert(isNaN(f32.parse("badnum"))); +assert(isNaN(f64.parse("badnum"))); assert(I32.parseInt("0x7FFFFFFF") == I32.MAX_VALUE); +assert(i32.parse("0x7FFFFFFF") == I32.MAX_VALUE); assert(I64.parseInt("0x7FFFFFFFFFFFFFFF") == I64.MAX_VALUE); +assert(i64.parse("0x7FFFFFFFFFFFFFFF") == I64.MAX_VALUE); // quick draft tests assert(parseFloat("0") == 0); @@ -173,7 +201,7 @@ assert(parseFloat("1e-60") == 1e-60); assert(parseFloat("1e60") == 1e+60); // special cases -assert(parseFloat("-.00000") == -0.0); +assert(parseFloat("123.4e") == 123.4); assert(parseFloat("1x") == 1.0); assert(parseFloat("-11e-1string") == -1.1); assert(parseFloat("01e1string") == 10); @@ -212,10 +240,11 @@ assert(parseFloat("0.a") == 0.0); assert(parseFloat("1..1") == 1.0); assert(parseFloat("0.1.1") == 0.1); assert(parseFloat("0. 1") == +0.0); -assert(parseFloat("+0.0") == +0.0); -assert(parseFloat("-0.0") == -0.0); -assert(parseFloat("+0") == +0); -assert(parseFloat("-0") == -0); +assert(Object.is(parseFloat("+0.0"), +0.0)); +assert(Object.is(parseFloat("-0.0"), -0.0)); +assert(Object.is(parseFloat("+0"), +0.0)); +assert(Object.is(parseFloat("-0"), -0.0)); +assert(Object.is(parseFloat("-.00000"), -0.0)); assert(isNaN(parseFloat("+"))); assert(isNaN(parseFloat("-"))); assert(isNaN(parseFloat("--0"))); @@ -336,16 +365,26 @@ assert(parseFloat(" \t\n\r.1") == 0.1); assert(c != "a"); } assert("" == ""); +// @ts-ignore +assert(nullStr == null); +// @ts-ignore assert("" != nullStr); +// @ts-ignore assert(nullStr != ""); +// @ts-ignore assert("a" != "b"); assert("a" == "a"); +// @ts-ignore assert("key1" != "key2"); assert("key1" == "key1"); +// @ts-ignore assert("ke1" != "ke2"); +// @ts-ignore assert("key12" != "key11"); assert("イロハニホヘト" == "イロハニホヘト"); +// @ts-ignore assert("イロハニホヘト" != "ウヰノオクヤマ"); +// @ts-ignore assert("D’fhuascail" != "D’ḟuascail"); assert("b" > "a"); @@ -354,9 +393,6 @@ assert("ba" >= "aa"); assert("ba" > "ab"); assert(!("ba" < "ab")); -assert(!("b" < nullStr)); -assert(!(nullStr < "b")); - assert("abc" > ""); assert("" < "abc"); assert("abc" >= ""); @@ -368,6 +404,28 @@ assert(!("" > "")); assert("" >= ""); assert("" <= ""); +assert("1" < "10"); +assert("10" > "1"); +assert(!("11" < "10")); +assert(!("10" > "11")); +assert("11" > "10"); +assert("10" < "11"); +assert(!("11" < "11")); +assert(!("11" > "11")); +assert("11" <= "11"); +assert("11" >= "11"); +assert(!("10" >= "101")); +assert("101" >= "10"); +assert("10" <= "101"); +assert("1" == "1"); +assert("11" == "11"); +assert("123" == "123"); +// @ts-ignore +assert("123" != "122"); +assert("1234" == "1234"); +// @ts-ignore +assert("1233" != "1234"); + { let a = String.fromCodePoint(0xFF61); let b = String.fromCodePoint(0xD800) + String.fromCodePoint(0xDC02); @@ -424,6 +482,12 @@ assert("abc".replaceAll("abd", "-") == "abc"); assert("abc".replaceAll("", "+") == "+a+b+c+"); assert("abc".replaceAll("", "") == "abc"); +// regressions +assert("abcde".replaceAll("a", "---") == "---bcde"); +assert("ab".replaceAll("ab", "-----") == "-----"); +assert("aaa".replaceAll("a", "----") == "------------"); +assert("aaa".replaceAll("aa", "---") == "---a"); + // test cases for slice method str = "abcdefghijklmn"; assert(str.slice(0) == "abcdefghijklmn"); @@ -513,6 +577,10 @@ assert(itoa32(0x7fffffff, 10) == "2147483647"); assert(itoa32(0x80000000, 10) == "-2147483648"); assert(itoa32(0xffffffff, 10) == "-1"); +assert(itoa32(i8.MIN_VALUE, 10) == "-128"); +assert(itoa32(i16.MIN_VALUE, 10) == "-32768"); +assert(itoa32(i32.MIN_VALUE, 10) == "-2147483648"); + assert(utoa32(0, 10) == "0"); assert(utoa32(1000, 10) == "1000"); assert(utoa32(0x7fffffff, 10) == "2147483647"); @@ -674,19 +742,17 @@ assert(dtoa(+f64.EPSILON) == "2.220446049250313e-16"); assert(dtoa(-f64.EPSILON) == "-2.220446049250313e-16"); assert(dtoa(+f64.MAX_VALUE) == "1.7976931348623157e+308"); assert(dtoa(-f64.MAX_VALUE) == "-1.7976931348623157e+308"); +assert(dtoa(+f32.EPSILON) == "1.1920929e-7"); +assert(dtoa(-f32.EPSILON) == "-1.1920929e-7"); +assert(dtoa(+f32.MAX_VALUE) == "3.4028235e+38"); +assert(dtoa(-f32.MAX_VALUE) == "-3.4028235e+38"); assert(dtoa(4.185580496821357e+298) == "4.185580496821357e+298"); assert(dtoa(2.2250738585072014e-308) == "2.2250738585072014e-308"); -// assert(dtoa(2.98023223876953125e-8) == "2.9802322387695312e-8"); // FIXME -// assert(dtoa(-2.109808898695963e+16) == "-21098088986959630.0"); // FIXME assert(dtoa(4.940656E-318) == "4.940656e-318"); assert(dtoa(9.0608011534336e+15) == "9060801153433600.0"); assert(dtoa(4.708356024711512e+18) == "4708356024711512000.0"); assert(dtoa(9.409340012568248e+18) == "9409340012568248000.0"); assert(dtoa(5e-324) == "5e-324"); -// Known imprecise issue for Grisu alghoritm. Need workaround -// Expeced: 1.2345e+21 -// Actual: 1.2344999999999999e+21 -// assert(dtoa(1.2345e+21) == "1.2345e+21"); assert(dtoa(1.0) == "1.0"); assert(dtoa(0.1) == "0.1"); @@ -712,12 +778,10 @@ assert(dtoa(1e-324) == "0.0"); assert(dtoa(4294967272) == "4294967272.0"); assert(dtoa(1.23121456734562345678e-8) == "1.2312145673456234e-8"); -// assert(dtoa(-0.0000010471975511965976) == "-0.0000010471975511965976"); // FIXME assert(dtoa(555555555.55555555) == "555555555.5555556"); assert(dtoa(0.9999999999999999) == "0.9999999999999999"); assert(dtoa(0.99999999999999995) == "1.0"); assert(dtoa(1234e-2) == "12.34"); -// assert(dtoa(0.1 + 0.2) == "0.30000000000000004"); // FIXME assert(dtoa(1.0 / 3.0) == "0.3333333333333333"); assert(dtoa(1.234e+20) == "123400000000000000000.0"); assert(dtoa(1.234e+21) == "1.234e+21"); @@ -728,13 +792,50 @@ assert(dtoa(1.1e+128) == "1.1e+128"); assert(dtoa(1.1e-64) == "1.1e-64"); assert(dtoa(0.000035689) == "0.000035689"); -// assert(dtoa(f32.MAX_VALUE) == "3.4028234663852886e+38"); // FIXME -// assert(dtoa(f32.EPSILON) == "1.1920928955078125e-7"); // FIXME +// FIXME: The following are imprecise rounding issues for Grisu algorithm. Need workaround. + +// Expected: 1.2345e+21 +// Actual: 1.2344999999999999e+21 +// assert(dtoa(1.2345e+21) == "1.2345e+21"); + +// Expected: 2.98023223876953125e-8 +// Actual: 2.9802322387695315e-8 +// assert(dtoa(2.98023223876953125e-8) == "2.9802322387695312e-8"); + +// Expected: -2.109808898695963e+16 +// Actual: -21098088986959633.0 +// assert(dtoa(-2.109808898695963e+16) == "-21098088986959630.0"); + +// Expected: -0.0000010471975511965976 +// Actual: -0.0000010471975511965977 +// assert(dtoa(-0.0000010471975511965976) == "-0.0000010471975511965976"); + +// Expected: 0.30000000000000004 +// Actual: 0.30000000000000007 +// assert(dtoa(0.1 + 0.2) == "0.30000000000000004"); + + +// concat + +assert("Hello ".concat("World") == "Hello World"); +assert("".concat("bar") == "bar"); +assert("bar".concat("") == "bar"); +assert("".concat("") == ""); export function getString(): string { return str; } +// Unicode escapes + +assert("\u{c0}\u{c8}" == "ÀÈ"); +assert("\u{00c0}\u{00c8}" == "ÀÈ"); +assert("\u{53D8}\u{91CF}" == "变量"); +assert("\u{2070E}\u{20731}" == "𠜎𠜱"); + // Unleak globals -__release(changetype(str)); +str = changetype(0); + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat deleted file mode 100644 index 2859ec44de..0000000000 --- a/tests/compiler/std/string.untouched.wat +++ /dev/null @@ -1,21507 +0,0 @@ -(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_=>_i32 (func (param i32) (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_=>_none (func)) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $i32_=>_f64 (func (param i32) (result f64))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 112) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\df\00") - (data (i32.const 144) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 192) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\df\00\df\00") - (data (i32.const 224) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00\df\00a\00b\00") - (data (i32.const 256) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 272) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\00\00") - (data (i32.const 304) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 336) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 384) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 448) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\006\00") - (data (i32.const 480) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\df") - (data (i32.const 512) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 560) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\d8\06\df") - (data (i32.const 592) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i\00") - (data (i32.const 624) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 656) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 688) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m\00") - (data (i32.const 720) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00 \00") - (data (i32.const 752) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00 \00 \00") - (data (i32.const 784) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") - (data (i32.const 816) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c\00") - (data (i32.const 848) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 880) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c\00") - (data (i32.const 912) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c\00") - (data (i32.const 944) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 \00") - (data (i32.const 976) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c\00") - (data (i32.const 1008) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00") - (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") - (data (i32.const 1072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x\00") - (data (i32.const 1104) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00,\00 \00I\00") - (data (i32.const 1136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00g\00") - (data (i32.const 1168) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00i\00") - (data (i32.const 1200) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00d\00") - (data (i32.const 1232) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00c\00d\00") - (data (i32.const 1264) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00 \00c\00") - (data (i32.const 1296) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00 \00\n\00\t\00\0d\00a\00b\00c\00 \00\t\00\0d\00 \00") - (data (i32.const 1344) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00b\00c\00 \00\t\00\0d\00 \00") - (data (i32.const 1376) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00 \00\n\00\t\00\0d\00a\00b\00c\00") - (data (i32.const 1408) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 1440) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\000\000\00") - (data (i32.const 1472) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 1504) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\000\000\001\00") - (data (i32.const 1536) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00b\001\000\001\00") - (data (i32.const 1568) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00o\007\000\007\00") - (data (i32.const 1600) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00x\00f\000\00f\00") - (data (i32.const 1632) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00X\00F\000\00F\00") - (data (i32.const 1664) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\001\001\00") - (data (i32.const 1696) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\00x\001\00g\00") - (data (i32.const 1728) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00-\001\002\003\00") - (data (i32.const 1760) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\001\002\003\00") - (data (i32.const 1792) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\002\00.\003\00") - (data (i32.const 1824) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00x\000\00") - (data (i32.const 1856) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\00b\001\001\00") - (data (i32.const 1888) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\n\001\00") - (data (i32.const 1920) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00( 1\00") - (data (i32.const 1952) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00) 1\00") - (data (i32.const 1984) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\000\00") - (data (i32.const 2016) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\000\00X\00A\00B\00C\00D\00E\00F\00") - (data (i32.const 2048) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00A\00B\00C\00D\00E\00F\00") - (data (i32.const 2080) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\003\006\008\009\003\004\008\008\001\004\007\004\001\009\001\000\003\002\003\002\00") - (data (i32.const 2144) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00-\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00") - (data (i32.const 2224) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\000\00x\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00") - (data (i32.const 2288) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00=\d8%\dd") - (data (i32.const 2320) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\002\00b\00a\00d\00n\00u\00m\00") - (data (i32.const 2352) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00 \00\t\00\n\001\00") - (data (i32.const 2384) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00 \00\t\00\n\000\00x\000\002\00") - (data (i32.const 2416) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") - (data (i32.const 2448) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00+\00") - (data (i32.const 2480) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00=\d8%\dd") - (data (i32.const 2512) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00b\00a\00d\00n\00u\00m\00") - (data (i32.const 2544) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00") - (data (i32.const 2592) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00F\00") - (data (i32.const 2648) "\00\00\00\00\00\00\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") - (data (i32.const 2832) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\00.\00") - (data (i32.const 2864) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00.\000\000\00") - (data (i32.const 2896) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\005\00") - (data (i32.const 2928) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\00e\00-\005\00") - (data (i32.const 2960) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00-\000\00.\003\00e\00-\002\002\00") - (data (i32.const 2992) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00.\003\00e\00+\002\002\00") - (data (i32.const 3024) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\001\00") - (data (i32.const 3056) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\000\00.\001\00e\00-\000\00") - (data (i32.const 3088) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\001\00") - (data (i32.const 3120) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\002\005\00") - (data (i32.const 3152) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\00+\003\00a\00") - (data (i32.const 3184) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\001\000\00") - (data (i32.const 3216) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\003\000\00") - (data (i32.const 3248) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\003\00") - (data (i32.const 3280) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\004\00") - (data (i32.const 3312) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\008\00") - (data (i32.const 3344) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\009\00") - (data (i32.const 3376) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\001\00_\000\00") - (data (i32.const 3408) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00.\000\00e\00-\001\000\00_\000\00") - (data (i32.const 3456) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00+\001\00_\000\00") - (data (i32.const 3488) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00_\000\00") - (data (i32.const 3520) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00_\001\00") - (data (i32.const 3552) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\000\00.\000\000\00_\000\001\00e\002\00") - (data (i32.const 3600) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\001\002\003\004\005\006\007\008\009\00_\004\00") - (data (i32.const 3648) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\001\00_\000\001\002\003\004\005\006\007\008\009\00") - (data (i32.const 3696) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\006\000\00") - (data (i32.const 3728) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\006\000\00") - (data (i32.const 3760) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00-\00.\000\000\000\000\000\00") - (data (i32.const 3792) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\00x\00") - (data (i32.const 3824) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\001\001\00e\00-\001\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 3872) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\000\001\00e\001\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 3920) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\000\001\000\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 3968) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\00.\002\002\00e\00-\001\00") - (data (i32.const 4000) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\001\00.\00s\001\00") - (data (i32.const 4032) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00x\005\00") - (data (i32.const 4064) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00x\00D\00") - (data (i32.const 4096) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00\0b\001\00.\001\00") - (data (i32.const 4128) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\0b\00\0b\00-\001\00.\001\00") - (data (i32.const 4160) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\0c\00\0c\00-\001\00.\001\00") - (data (i32.const 4192) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00( ( -\001\00.\001\00") - (data (i32.const 4224) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00) ) -\001\00.\001\00") - (data (i32.const 4256) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\000\000\000\00") - (data (i32.const 4288) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\000\000\00a\00") - (data (i32.const 4320) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\000\000\001\00") - (data (i32.const 4352) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\000\00") - (data (i32.const 4384) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\00a\00") - (data (i32.const 4416) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\001\00e\00") - (data (i32.const 4448) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00e\00+\000\000\000\001\00") - (data (i32.const 4480) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\000\00e\00+\001\000\000\00") - (data (i32.const 4512) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00.\00-\001\00.\00") - (data (i32.const 4544) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00e\00-\001\00.\002\00") - (data (i32.const 4576) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00e\00x\00") - (data (i32.const 4608) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\001\00x\00") - (data (i32.const 4640) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\00-\00x\00") - (data (i32.const 4672) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\001\00x\00") - (data (i32.const 4704) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\000\00.\001\00e\00-\001\00x\00") - (data (i32.const 4736) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\000\00.\00") - (data (i32.const 4768) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\000\000\00") - (data (i32.const 4800) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\000\00.\00") - (data (i32.const 4832) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\001\00.\00") - (data (i32.const 4864) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\00.\00") - (data (i32.const 4896) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\00a\00") - (data (i32.const 4928) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00.\00.\001\00") - (data (i32.const 4960) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\000\00.\001\00.\001\00") - (data (i32.const 4992) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\000\00.\00 \001\00") - (data (i32.const 5024) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\000\00.\000\00") - (data (i32.const 5056) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00-\000\00.\000\00") - (data (i32.const 5088) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00+\000\00") - (data (i32.const 5120) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00-\00-\000\00") - (data (i32.const 5152) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00+\00+\000\00") - (data (i32.const 5184) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00.\00a\00") - (data (i32.const 5216) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00.\00.\000\00") - (data (i32.const 5248) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00.\00") - (data (i32.const 5280) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00.\00.\00") - (data (i32.const 5312) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 5344) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0b\00") - (data (i32.const 5376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0e\18") - (data (i32.const 5408) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00\0e\181\00.\001\00") - (data (i32.const 5440) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00\0e\18\0e\181\00.\001\00") - (data (i32.const 5472) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\0c\00") - (data (i32.const 5504) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") - (data (i32.const 5536) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") - (data (i32.const 5568) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\002\002\00") - (data (i32.const 5600) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\002\00") - (data (i32.const 5632) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\002\003\00") - (data (i32.const 5664) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\003\00") - (data (i32.const 5696) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\003\007\00") - (data (i32.const 5728) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\007\00") - (data (i32.const 5760) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\00e\003\008\00") - (data (i32.const 5792) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\008\00") - (data (i32.const 5824) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\002\00.\002\002\000\004\004\006\000\004\009\002\005\000\003\001\003\00e\00-\001\006\00") - (data (i32.const 5888) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\001\00.\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\007\00e\00+\003\000\008\00") - (data (i32.const 5952) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\005\00e\00-\003\002\004\00") - (data (i32.const 5984) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\000\00.\000\000\000\000\000\001\00e\00+\003\001\004\00") - (data (i32.const 6032) "|\00\00\00\01\00\00\00\01\00\00\00|\00\00\000\00.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\00e\00+\005\006\00") - (data (i32.const 6176) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00-\003\002\005\00") - (data (i32.const 6208) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00+\003\000\009\00") - (data (i32.const 6240) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00-\003\002\005\00") - (data (i32.const 6272) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00+\003\000\009\00") - (data (i32.const 6304) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\00e\00-\001\000\000\000\000\000\000\00") - (data (i32.const 6352) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\00e\00+\001\000\000\000\000\000\000\00") - (data (i32.const 6400) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\003\006\000\00") - (data (i32.const 6432) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00 \00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 6480) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 6528) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 6576) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00x\00") - (data (i32.const 6624) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00+\001\00") - (data (i32.const 6672) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00I\00n\00f\00i\00") - (data (i32.const 6704) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00") - (data (i32.const 6736) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00i\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 6768) "\aa\00\00\00\01\00\00\00\01\00\00\00\aa\00\00\00.\002\004\007\000\003\002\008\002\002\009\002\000\006\002\003\002\007\002\000\008\008\002\008\004\003\009\006\004\003\004\001\001\000\006\008\006\001\008\002\005\002\009\009\000\001\003\000\007\001\006\002\003\008\002\002\001\002\007\009\002\008\004\001\002\005\000\003\003\007\007\005\003\006\003\005\001\000\004\003\00e\00-\003\002\003\00") - (data (i32.const 6960) "\aa\00\00\00\01\00\00\00\01\00\00\00\aa\00\00\00.\007\004\001\000\009\008\004\006\008\007\006\001\008\006\009\008\001\006\002\006\004\008\005\003\001\008\009\003\000\002\003\003\002\000\005\008\005\004\007\005\008\009\007\000\003\009\002\001\004\008\007\001\004\006\006\003\008\003\007\008\005\002\003\007\005\001\000\001\003\002\006\000\009\000\005\003\001\003\002\00e\00-\003\002\003\00") - (data (i32.const 7152) "\aa\00\00\00\01\00\00\00\01\00\00\00\aa\00\00\00.\002\002\002\005\000\007\003\008\005\008\005\000\007\002\000\001\006\003\000\001\002\003\000\005\005\006\003\007\009\005\005\006\007\006\001\005\002\005\000\003\006\001\002\004\001\004\005\007\003\000\001\008\000\001\003\000\008\003\002\002\008\007\002\004\000\004\009\005\008\006\006\004\007\006\000\006\007\006\000\00e\00-\003\000\007\00") - (data (i32.const 7344) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\001\007\009\007\006\009\003\001\003\004\008\006\002\003\001\005\008\000\007\009\003\007\002\008\009\007\001\004\000\005\003\000\003\004\001\005\000\007\009\009\003\004\001\003\002\007\001\000\000\003\007\008\002\006\009\003\006\001\007\003\007\007\008\009\008\000\004\004\00") - (data (i32.const 7504) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\004\009\006\008\002\009\002\007\006\004\007\005\000\009\004\006\006\004\009\000\001\007\009\007\007\005\008\007\002\000\007\000\009\006\003\003\000\002\008\006\004\001\006\006\009\002\008\008\007\009\001\000\009\004\006\005\005\005\005\004\007\008\005\001\009\004\000\004\00") - (data (i32.const 7664) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\000\002\006\003\000\006\005\007\004\008\008\006\007\001\005\000\005\008\002\000\006\008\001\009\000\008\009\000\002\000\000\000\007\000\008\003\008\003\006\007\006\002\007\003\008\005\004\008\004\005\008\001\007\007\001\001\005\003\001\007\006\004\004\007\005\007\003\000\00") - (data (i32.const 7824) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\002\007\000\000\006\009\008\005\005\005\007\001\003\006\006\009\005\009\006\002\002\008\004\002\009\001\004\008\001\009\008\006\000\008\003\004\009\003\006\004\007\005\002\009\002\007\001\009\000\007\004\001\006\008\004\004\004\003\006\005\005\001\000\007\000\004\003\004\00") - (data (i32.const 7984) "\88\00\00\00\01\00\00\00\01\00\00\00\88\00\00\002\007\001\001\005\005\009\006\009\009\005\000\008\000\009\003\000\004\002\008\008\000\001\007\007\009\000\004\001\007\004\004\009\007\007\009\001\00.\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\00") - (data (i32.const 8144) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\000\00.\009\007\005\003\005\003\001\008\008\008\007\009\009\005\000\002\006\001\003\008\000\007\001\003\005\002\007\006\001\004\007\001\006\004\004\000\004\003\009\00e\00-\001\000\003\00") - (data (i32.const 8256) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\00.\005\009\006\001\008\006\000\003\004\008\001\003\001\008\000\007\000\009\001\008\006\001\000\000\002\002\006\006\004\005\003\009\004\001\009\005\000\004\002\008\00e\000\000\00") - (data (i32.const 8368) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\001\00.\008\001\005\000\001\003\001\006\009\002\001\008\000\003\008\007\002\009\008\008\007\004\006\000\008\009\008\007\003\003\005\002\006\009\005\007\004\004\002\00e\00-\001\00") - (data (i32.const 8480) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\004\002\00.\000\007\000\008\002\003\005\007\005\003\004\004\005\003\006\000\000\006\008\001\006\001\008\006\008\005\006\008\002\002\005\007\005\009\000\007\007\002\00e\00-\002\00") - (data (i32.const 8592) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\006\006\005\00.\004\006\008\006\003\000\006\005\001\006\002\006\001\004\005\006\003\002\008\009\007\003\002\002\005\005\007\009\008\003\003\004\007\000\008\001\006\00e\00-\003\00") - (data (i32.const 8704) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\006\001\000\001\00.\008\005\002\009\002\002\009\007\000\008\006\008\006\002\001\007\008\006\006\009\000\004\009\005\004\008\005\004\004\009\008\003\001\007\005\003\00e\00-\004\00") - (data (i32.const 8816) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\007\006\009\006\006\00.\009\005\002\000\008\002\003\006\009\006\008\000\007\007\008\004\009\004\006\004\003\004\008\008\007\005\004\007\001\001\005\008\005\004\009\00e\00-\005\00") - (data (i32.const 8928) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\002\005\000\005\000\006\00.\005\003\002\002\002\002\008\006\008\002\004\009\006\001\003\002\006\000\004\008\000\007\002\002\002\009\002\003\007\000\002\003\000\004\00e\00-\006\00") - (data (i32.const 9040) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\002\007\004\000\000\003\007\00.\002\003\000\002\002\008\000\000\005\003\002\005\008\005\002\004\002\004\006\009\007\006\009\008\003\003\001\001\007\007\003\007\007\00e\00-\007\00") - (data (i32.const 9152) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\002\000\007\002\003\000\009\003\00.\005\000\000\004\009\007\004\002\006\004\005\009\004\001\005\002\009\002\006\008\007\001\005\004\002\008\003\002\004\004\009\000\00e\00-\008\00") - (data (i32.const 9264) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\007\009\000\000\002\008\000\002\003\008\000\008\001\006\000\004\009\005\006\002\002\006\000\001\001\000\004\007\004\006\000\002\003\008\007\004\008\009\001\002\00e\001\00") - (data (i32.const 9376) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\009\008\002\002\008\006\000\006\005\003\007\003\007\002\009\006\008\004\008\001\009\000\005\005\008\004\004\008\007\006\000\004\006\005\008\006\003\005\009\007\00e\002\00") - (data (i32.const 9488) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\007\004\006\008\009\004\009\007\002\003\001\009\000\003\007\000\008\000\009\004\000\005\005\007\000\005\006\000\001\006\000\004\000\005\003\002\004\008\006\009\00e\003\00") - (data (i32.const 9600) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\001\006\003\000\002\006\008\003\002\000\002\008\002\007\002\008\004\007\005\009\008\000\004\005\009\008\004\004\002\007\001\000\003\001\007\005\001\006\006\005\00e\004\00") - (data (i32.const 9712) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\004\006\003\007\001\006\008\006\002\009\007\001\009\001\007\000\006\009\005\001\000\009\009\001\008\007\006\009\006\004\005\004\009\002\000\002\002\000\008\008\00e\005\00") - (data (i32.const 9824) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\006\005\003\007\008\000\005\009\004\004\004\009\007\007\001\001\005\005\004\002\000\009\004\006\001\006\008\006\004\001\005\008\007\002\000\006\007\005\002\003\00e\006\00") - (data (i32.const 9936) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\002\003\004\006\003\002\004\003\005\006\005\000\002\004\003\007\000\004\005\002\001\002\002\003\000\007\001\003\009\006\000\004\005\007\006\007\006\005\003\001\00e\006\00") - (data (i32.const 10048) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\009\007\000\009\004\008\001\007\001\006\004\002\000\000\004\008\003\004\001\008\009\007\002\005\008\009\008\000\004\005\004\002\009\008\002\000\005\002\007\008\00e\008\00") - (data (i32.const 10160) "X\00\00\00\01\00\00\00\01\00\00\00X\00\00\000\00.\004\009\009\006\009\000\008\005\002\002\000\005\001\008\007\004\001\001\000\007\007\009\009\008\002\003\005\004\009\003\002\004\009\009\004\009\009\006\000\002\00e\009\00") - (data (i32.const 10272) "Z\00\00\00\01\00\00\00\01\00\00\00Z\00\00\000\00.\007\009\002\005\002\000\001\002\000\000\005\005\007\002\004\005\008\006\001\009\004\004\000\001\001\002\006\007\000\004\001\007\008\007\005\000\005\001\004\009\00e\002\002\00") - (data (i32.const 10384) "Z\00\00\00\01\00\00\00\01\00\00\00Z\00\00\000\00.\006\000\009\006\005\006\004\005\008\005\009\008\003\001\007\007\004\000\008\009\003\004\003\005\002\005\007\000\002\001\003\003\007\007\004\007\005\007\003\009\00e\003\000\00") - (data (i32.const 10496) "Z\00\00\00\01\00\00\00\01\00\00\00Z\00\00\000\00.\004\008\000\000\004\001\006\001\001\007\004\007\007\000\002\008\007\008\007\008\007\004\003\006\000\002\000\005\000\002\003\005\004\009\004\009\007\001\002\008\00e\006\007\00") - (data (i32.const 10608) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\000\00.\008\005\002\004\008\002\009\000\007\009\008\001\007\009\006\008\002\002\004\008\003\000\003\003\007\009\003\001\000\005\002\007\008\001\006\004\001\004\008\003\00e\001\000\005\00") - (data (i32.const 10720) "\\\00\00\00\01\00\00\00\01\00\00\00\\\00\00\000\00.\000\003\002\007\001\002\003\009\002\009\001\007\000\009\007\008\002\001\001\005\004\004\007\000\006\009\003\007\002\007\004\008\009\005\006\000\008\004\002\005\00e\002\006\009\00") - (data (i32.const 10832) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00\t\00\n\00") - (data (i32.const 10864) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00 \00\t\00\n\00\0d\00.\001\00") - (data (i32.const 10896) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 10928) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b\00") - (data (i32.const 10960) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\001\00") - (data (i32.const 10992) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\002\00") - (data (i32.const 11024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00k\00e\001\00") - (data (i32.const 11056) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00k\00e\002\00") - (data (i32.const 11088) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\002\00") - (data (i32.const 11120) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\001\00") - (data (i32.const 11152) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") - (data (i32.const 11184) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") - (data (i32.const 11216) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l\00") - (data (i32.const 11264) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l\00") - (data (i32.const 11312) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00a\00") - (data (i32.const 11344) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00a\00") - (data (i32.const 11376) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 11424) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00a\00a\00") - (data (i32.const 11456) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b\00") - (data (i32.const 11488) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00a\00a\00a\00a\00") - (data (i32.const 11520) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 11552) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 11584) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00-\00b\00-\00c\00") - (data (i32.const 11616) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00-\00c\00") - (data (i32.const 11648) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\00a\00b\00c\00") - (data (i32.const 11680) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00\n\00a\00b\00c\00") - (data (i32.const 11712) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\n\00") - (data (i32.const 11744) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00c\00") - (data (i32.const 11776) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00+\00+\00") - (data (i32.const 11808) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00+\00+\00") - (data (i32.const 11840) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00c\00") - (data (i32.const 11888) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00+\00+\00+\00") - (data (i32.const 11920) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00b\00c\00a\00b\00c\00a\00") - (data (i32.const 11952) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00+\00+\00+\00b\00c\00+\00+\00+\00b\00c\00+\00+\00+\00") - (data (i32.const 12000) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00+\00+\00c\00+\00+\00c\00") - (data (i32.const 12032) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00c\00c\00c\00c\00") - (data (i32.const 12064) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00c\00c\00") - (data (i32.const 12096) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00+\00+\00+\00+\00") - (data (i32.const 12128) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00e\00") - (data (i32.const 12160) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00c\00") - (data (i32.const 12192) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00+\00") - (data (i32.const 12224) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00+\00c\00") - (data (i32.const 12256) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00+\00a\00+\00b\00+\00c\00+\00") - (data (i32.const 12288) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00") - (data (i32.const 12336) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00n\00") - (data (i32.const 12368) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00j\00k\00l\00m\00n\00") - (data (i32.const 12400) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00c\00d\00e\00f\00g\00") - (data (i32.const 12432) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00e\00f\00g\00h\00") - (data (i32.const 12464) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00") - (data (i32.const 12512) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00c\00d\00e\00f\00g\00h\00i\00") - (data (i32.const 12544) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00e\00f\00g\00") - (data (i32.const 12576) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00e\00f\00g\00h\00") - (data (i32.const 12608) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d\00") - (data (i32.const 12640) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 12688) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 12752) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (data (i32.const 12864) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00,\00b\00,\00c\00") - (data (i32.const 12896) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c\00") - (data (i32.const 12928) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 \00") - (data (i32.const 12960) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c\00") - (data (i32.const 12992) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c\00") - (data (i32.const 13024) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,\00") - (data (i32.const 13056) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 13184) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 13240) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 13648) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 14688) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00") - (data (i32.const 14784) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\008\00") - (data (i32.const 14816) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\002\00") - (data (i32.const 14848) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\000\000\000\00") - (data (i32.const 14880) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\002\003\004\00") - (data (i32.const 14912) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\002\003\004\005\00") - (data (i32.const 14944) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\004\005\006\00") - (data (i32.const 14976) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\001\001\001\001\001\001\00") - (data (i32.const 15008) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\002\003\004\005\006\007\00") - (data (i32.const 15040) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\004\005\006\007\008\00") - (data (i32.const 15072) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009\00") - (data (i32.const 15120) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006\00") - (data (i32.const 15168) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007\00") - (data (i32.const 15216) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 15264) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00-\001\00") - (data (i32.const 15296) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\000\000\000\00") - (data (i32.const 15328) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 15376) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 15424) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\007\00b\00") - (data (i32.const 15456) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\004\00d\002\00") - (data (i32.const 15488) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\003\000\003\009\00") - (data (i32.const 15520) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00e\002\004\000\00") - (data (i32.const 15552) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\000\00f\004\004\007\00") - (data (i32.const 15584) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\00d\006\008\007\00") - (data (i32.const 15616) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00b\00c\006\001\004\00e\00") - (data (i32.const 15648) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005\00") - (data (i32.const 15680) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00e\00") - (data (i32.const 15712) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 15744) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\008\000\000\000\000\000\000\000\00") - (data (i32.const 15776) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 15808) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 15856) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00-\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 15888) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\008\000\000\000\000\000\000\000\00") - (data (i32.const 15936) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\001\001\00") - (data (i32.const 15968) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\001\001\00") - (data (i32.const 16000) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\001\001\001\000\00") - (data (i32.const 16032) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\001\001\000\001\00") - (data (i32.const 16064) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\001\001\000\001\001\00") - (data (i32.const 16096) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\001\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 16144) "2\00\00\00\01\00\00\00\01\00\00\002\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 16224) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\001\000\000\00") - (data (i32.const 16304) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000\00") - (data (i32.const 16384) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\00") - (data (i32.const 16464) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 16544) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 16592) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\001\000\002\000\000\002\000\002\002\002\000\001\002\002\001\001\001\001\002\001\000\00") - (data (i32.const 16656) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\00") - (data (i32.const 16704) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\003\002\002\004\004\000\000\002\004\002\003\001\004\000\00") - (data (i32.const 16752) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\003\007\007\007\007\007\007\007\007\007\007\00") - (data (i32.const 16800) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\001\009\000\004\004\004\000\005\005\003\00") - (data (i32.const 16848) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00a\002\000\00d\00c\00d\008\000\00") - (data (i32.const 16896) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\007\00f\00f\00d\00a\009\000\00") - (data (i32.const 16928) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\002\008\001\00d\005\005\00i\003\00") - (data (i32.const 16960) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\002\008\00j\00p\00d\00l\00") - (data (i32.const 16992) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\003\00v\00v\00v\00v\00v\00v\00") - (data (i32.const 17024) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\001\00z\001\004\001\00z\003\00") - (data (i32.const 17056) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009\00") - (data (i32.const 17088) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000\00") - (data (i32.const 17136) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\007\00") - (data (i32.const 17184) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17232) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17280) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\00") - (data (i32.const 17328) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\008\006\008\007\001\009\004\007\006\007\003\005\000\001\00") - (data (i32.const 17376) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17424) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17472) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17536) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\001\002\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17600) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\001\002\003\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17664) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00") - (data (i32.const 17728) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00-\001\002\003\004\00") - (data (i32.const 17760) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 17808) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17856) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17904) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 17952) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 18016) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") - (data (i32.const 18080) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00") - (data (i32.const 18144) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00f\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 18192) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\005\006\007\008\009\00a\00b\00c\00d\00e\001\00") - (data (i32.const 18240) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\004\005\006\007\008\009\00a\00b\00c\00d\00e\001\00") - (data (i32.const 18288) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00") - (data (i32.const 18336) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00") - (data (i32.const 18384) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00") - (data (i32.const 18432) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\000\00") - (data (i32.const 18480) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 18528) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 18576) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00f\00") - (data (i32.const 18640) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00-\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00") - (data (i32.const 18704) "b\00\00\00\01\00\00\00\01\00\00\00b\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 18832) "\80\00\00\00\01\00\00\00\01\00\00\00\80\00\00\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 18976) "D\00\00\00\01\00\00\00\01\00\00\00D\00\00\00-\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\00") - (data (i32.const 19072) "R\00\00\00\01\00\00\00\01\00\00\00R\00\00\001\001\001\001\002\002\002\000\000\002\002\001\002\002\001\002\000\001\000\001\002\001\001\000\002\000\001\002\000\002\001\000\002\001\000\002\001\001\002\002\000\00") - (data (i32.const 19184) "@\00\00\00\01\00\00\00\01\00\00\00@\00\00\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\00") - (data (i32.const 19264) "8\00\00\00\01\00\00\00\01\00\00\008\00\00\002\002\001\004\002\002\000\003\000\003\001\001\004\004\000\000\004\002\004\001\002\001\001\002\002\004\003\000\00") - (data (i32.const 19344) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\001\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\00") - (data (i32.const 19408) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\003\003\005\005\000\000\005\001\006\00a\004\002\009\000\007\001\002\008\004\00") - (data (i32.const 19472) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\002\00c\001\00d\005\006\00b\006\004\008\00c\006\00c\00d\001\001\000\00") - (data (i32.const 19536) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\006\007\009\007\009\00g\006\000\00f\005\004\002\008\000\001\000\00") - (data (i32.const 19584) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\005\00e\008\00g\004\00g\00g\00g\007\00g\005\006\00d\00i\00f\00") - (data (i32.const 19632) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\004\00e\00o\008\00h\00f\00a\00m\006\00f\00l\00l\00m\00o\00") - (data (i32.const 19680) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00f\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00v\00") - (data (i32.const 19728) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\003\00w\005\00e\001\001\002\006\004\00s\00g\00s\00f\00") - (data (i32.const 19776) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 19808) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 19840) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 i32) (result f64) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - i32.eqz - if - i32.const 1 - drop - f64.const nan:0x8000000000000 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - local.set $4 - local.get $4 - i32.load16_u - local.set $5 - loop $while-continue|0 - local.get $5 - call $~lib/util/string/isSpace - local.set $6 - local.get $6 - if - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - f64.const 1 - local.set $7 - local.get $5 - i32.const 45 - i32.eq - if (result i32) - i32.const 1 - else - local.get $5 - i32.const 43 - i32.eq - end - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - if - i32.const 1 - drop - f64.const nan:0x8000000000000 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $5 - i32.const 45 - i32.eq - if - f64.const -1 - local.set $7 - end - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - end - local.get $1 - if - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 1 - drop - f64.const nan:0x8000000000000 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $1 - i32.const 16 - i32.eq - if - local.get $2 - i32.const 2 - i32.gt_s - if (result i32) - local.get $5 - i32.const 48 - i32.eq - else - i32.const 0 - end - if (result i32) - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - i32.const 120 - i32.eq - else - i32.const 0 - end - if - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - end - end - else - local.get $5 - i32.const 48 - i32.eq - if (result i32) - local.get $2 - i32.const 2 - i32.gt_s - else - i32.const 0 - end - if - block $break|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.set $6 - local.get $6 - i32.const 98 - i32.eq - br_if $case0|1 - local.get $6 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $6 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 2 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 16 - local.set $1 - br $break|1 - end - end - local.get $1 - i32.eqz - if - i32.const 10 - local.set $1 - end - end - f64.const 0 - local.set $8 - block $while-break|2 - loop $while-continue|2 - local.get $2 - local.tee $6 - i32.const 1 - i32.sub - local.set $2 - local.get $6 - local.set $6 - local.get $6 - if - local.get $4 - i32.load16_u - local.set $5 - local.get $5 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if - local.get $5 - i32.const 48 - i32.sub - local.set $5 - else - local.get $5 - i32.const 65 - i32.sub - i32.const 90 - i32.const 65 - i32.sub - i32.le_u - if - local.get $5 - i32.const 65 - i32.const 10 - i32.sub - i32.sub - local.set $5 - else - local.get $5 - i32.const 97 - i32.sub - i32.const 122 - i32.const 97 - i32.sub - i32.le_u - if - local.get $5 - i32.const 97 - i32.const 10 - i32.sub - i32.sub - local.set $5 - end - end - end - local.get $5 - local.get $1 - i32.ge_u - if - local.get $8 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.eqz - if - i32.const 1 - drop - f64.const nan:0x8000000000000 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - br $while-break|2 - end - local.get $8 - local.get $1 - f64.convert_i32_s - f64.mul - local.get $5 - f64.convert_i32_u - f64.add - local.set $8 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $7 - local.get $8 - f64.mul - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/string/parseInt (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $1 - call $~lib/util/string/strtol - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/number/F32.parseInt (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $1 - call $~lib/util/string/strtol - f32.demote_f64 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/number/F64.parseInt (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $1 - call $~lib/util/string/strtol - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/util/string/strtol (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - i32.eqz - if - i32.const 0 - drop - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - local.set $4 - local.get $4 - i32.load16_u - local.set $5 - loop $while-continue|0 - local.get $5 - call $~lib/util/string/isSpace - local.set $3 - local.get $3 - if - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - i32.const 1 - local.set $6 - local.get $5 - i32.const 45 - i32.eq - if (result i32) - i32.const 1 - else - local.get $5 - i32.const 43 - i32.eq - end - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - if - i32.const 0 - drop - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $5 - i32.const 45 - i32.eq - if - i32.const -1 - local.set $6 - end - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - end - local.get $1 - if - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 0 - drop - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $1 - i32.const 16 - i32.eq - if - local.get $2 - i32.const 2 - i32.gt_s - if (result i32) - local.get $5 - i32.const 48 - i32.eq - else - i32.const 0 - end - if (result i32) - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - i32.const 120 - i32.eq - else - i32.const 0 - end - if - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - end - end - else - local.get $5 - i32.const 48 - i32.eq - if (result i32) - local.get $2 - i32.const 2 - i32.gt_s - else - i32.const 0 - end - if - block $break|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.set $3 - local.get $3 - i32.const 98 - i32.eq - br_if $case0|1 - local.get $3 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $3 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 2 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 16 - local.set $1 - br $break|1 - end - end - local.get $1 - i32.eqz - if - i32.const 10 - local.set $1 - end - end - i32.const 0 - local.set $7 - block $while-break|2 - loop $while-continue|2 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - local.set $3 - local.get $3 - if - local.get $4 - i32.load16_u - local.set $5 - local.get $5 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if - local.get $5 - i32.const 48 - i32.sub - local.set $5 - else - local.get $5 - i32.const 65 - i32.sub - i32.const 90 - i32.const 65 - i32.sub - i32.le_u - if - local.get $5 - i32.const 65 - i32.const 10 - i32.sub - i32.sub - local.set $5 - else - local.get $5 - i32.const 97 - i32.sub - i32.const 122 - i32.const 97 - i32.sub - i32.le_u - if - local.get $5 - i32.const 97 - i32.const 10 - i32.sub - i32.sub - local.set $5 - end - end - end - local.get $5 - local.get $1 - i32.ge_u - if - local.get $7 - i32.eqz - if - i32.const 0 - drop - i32.const 0 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - return - end - br $while-break|2 - end - local.get $7 - local.get $1 - i32.mul - local.get $5 - i32.add - local.set $7 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $6 - local.get $7 - i32.mul - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/number/I32.parseInt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $1 - call $~lib/util/string/strtol - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/util/string/strtol (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - i32.eqz - if - i32.const 0 - drop - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - local.set $4 - local.get $4 - i32.load16_u - local.set $5 - loop $while-continue|0 - local.get $5 - call $~lib/util/string/isSpace - local.set $6 - local.get $6 - if - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - i64.const 1 - local.set $7 - local.get $5 - i32.const 45 - i32.eq - if (result i32) - i32.const 1 - else - local.get $5 - i32.const 43 - i32.eq - end - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - if - i32.const 0 - drop - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $5 - i32.const 45 - i32.eq - if - i64.const -1 - local.set $7 - end - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - end - local.get $1 - if - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 0 - drop - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $1 - i32.const 16 - i32.eq - if - local.get $2 - i32.const 2 - i32.gt_s - if (result i32) - local.get $5 - i32.const 48 - i32.eq - else - i32.const 0 - end - if (result i32) - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - i32.const 120 - i32.eq - else - i32.const 0 - end - if - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - end - end - else - local.get $5 - i32.const 48 - i32.eq - if (result i32) - local.get $2 - i32.const 2 - i32.gt_s - else - i32.const 0 - end - if - block $break|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.set $6 - local.get $6 - i32.const 98 - i32.eq - br_if $case0|1 - local.get $6 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $6 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 2 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 16 - local.set $1 - br $break|1 - end - end - local.get $1 - i32.eqz - if - i32.const 10 - local.set $1 - end - end - i64.const 0 - local.set $8 - block $while-break|2 - loop $while-continue|2 - local.get $2 - local.tee $6 - i32.const 1 - i32.sub - local.set $2 - local.get $6 - local.set $6 - local.get $6 - if - local.get $4 - i32.load16_u - local.set $5 - local.get $5 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if - local.get $5 - i32.const 48 - i32.sub - local.set $5 - else - local.get $5 - i32.const 65 - i32.sub - i32.const 90 - i32.const 65 - i32.sub - i32.le_u - if - local.get $5 - i32.const 65 - i32.const 10 - i32.sub - i32.sub - local.set $5 - else - local.get $5 - i32.const 97 - i32.sub - i32.const 122 - i32.const 97 - i32.sub - i32.le_u - if - local.get $5 - i32.const 97 - i32.const 10 - i32.sub - i32.sub - local.set $5 - end - end - end - local.get $5 - local.get $1 - i32.ge_u - if - local.get $8 - i64.const 0 - i64.ne - i32.eqz - if - i32.const 0 - drop - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - br $while-break|2 - end - local.get $8 - local.get $1 - i64.extend_i32_s - i64.mul - local.get $5 - i64.extend_i32_u - i64.add - local.set $8 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $7 - local.get $8 - i64.mul - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/number/I64.parseInt (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $1 - call $~lib/util/string/strtol - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - local.set $2 - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $1 - i32.const 0 - i32.le_s - if - local.get $0 - i32.const -1 - i32.eq - if - i32.const -1 - i32.const 1 - local.get $1 - i32.const 1 - i32.and - select - return - end - local.get $1 - i32.const 0 - i32.eq - local.get $0 - i32.const 1 - i32.eq - i32.or - return - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - return - else - local.get $1 - i32.const 2 - i32.eq - if - local.get $0 - local.get $0 - i32.mul - return - else - local.get $1 - i32.const 32 - i32.lt_s - if - i32.const 32 - local.get $1 - i32.clz - i32.sub - local.set $3 - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $3 - local.set $4 - local.get $4 - i32.const 5 - i32.eq - br_if $case0|0 - local.get $4 - i32.const 4 - i32.eq - br_if $case1|0 - local.get $4 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $4 - i32.const 2 - i32.eq - br_if $case3|0 - local.get $4 - i32.const 1 - i32.eq - br_if $case4|0 - br $break|0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - end - local.get $2 - return - end - end - end - end - loop $while-continue|1 - local.get $1 - local.set $3 - local.get $3 - if - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - br $while-continue|1 - end - end - local.get $2 - ) - (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) - (local $2 f64) - (local $3 i32) - (local $4 i32) - local.get $0 - local.set $2 - local.get $1 - i32.const 1023 - i32.gt_s - if - local.get $2 - f64.const 8988465674311579538646525e283 - f64.mul - local.set $2 - local.get $1 - i32.const 1023 - i32.sub - local.set $1 - local.get $1 - i32.const 1023 - i32.gt_s - if - local.get $2 - f64.const 8988465674311579538646525e283 - f64.mul - local.set $2 - local.get $1 - i32.const 1023 - i32.sub - local.tee $3 - i32.const 1023 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $1 - end - else - local.get $1 - i32.const -1022 - i32.lt_s - if - local.get $2 - f64.const 2.2250738585072014e-308 - f64.const 9007199254740992 - f64.mul - f64.mul - local.set $2 - local.get $1 - i32.const 1022 - i32.const 53 - i32.sub - i32.add - local.set $1 - local.get $1 - i32.const -1022 - i32.lt_s - if - local.get $2 - f64.const 2.2250738585072014e-308 - f64.const 9007199254740992 - f64.mul - f64.mul - local.set $2 - local.get $1 - i32.const 1022 - i32.add - i32.const 53 - i32.sub - local.tee $3 - i32.const -1022 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_s - select - local.set $1 - end - end - end - local.get $2 - i64.const 1023 - local.get $1 - i64.extend_i32_s - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - f64.mul - ) - (func $~lib/util/string/strtod (param $0 i32) (result f64) - (local $1 i32) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i64) - (local $24 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/string/String#get:length - local.set $1 - local.get $1 - i32.eqz - if - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - local.set $3 - local.get $3 - i32.load16_u - local.set $4 - f64.const 1 - local.set $5 - loop $while-continue|0 - local.get $1 - if (result i32) - local.get $4 - call $~lib/util/string/isSpace - else - i32.const 0 - end - local.set $6 - local.get $6 - if - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $4 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $while-continue|0 - end - end - local.get $1 - i32.eqz - if - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $4 - i32.const 45 - i32.eq - if - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.eqz - if - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $4 - f64.const -1 - local.set $5 - else - local.get $4 - i32.const 43 - i32.eq - if - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.eqz - if - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $4 - end - end - local.get $1 - i32.const 8 - i32.ge_s - if (result i32) - local.get $4 - i32.const 73 - i32.eq - else - i32.const 0 - end - if - local.get $3 - i64.load - i64.const 29555310648492105 - i64.eq - if (result i32) - local.get $3 - i64.load offset=8 - i64.const 34058970405077102 - i64.eq - else - i32.const 0 - end - if - f64.const inf - local.get $5 - f64.mul - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $4 - i32.const 46 - i32.ne - if (result i32) - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.ge_u - else - i32.const 0 - end - if - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $3 - local.set $7 - loop $while-continue|1 - local.get $4 - i32.const 48 - i32.eq - local.set $6 - local.get $6 - if - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $4 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $while-continue|1 - end - end - local.get $1 - i32.const 0 - i32.le_s - if - f64.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - i32.const 0 - local.set $10 - i64.const 0 - local.set $11 - local.get $4 - i32.const 46 - i32.eq - if - local.get $7 - local.get $3 - i32.sub - i32.eqz - local.set $6 - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $1 - i32.eqz - if (result i32) - local.get $6 - else - i32.const 0 - end - if - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - i32.const 1 - local.set $8 - loop $for-loop|2 - local.get $3 - i32.load16_u - local.tee $4 - i32.const 48 - i32.eq - local.set $12 - local.get $12 - if - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $10 - i32.const 1 - i32.sub - local.set $10 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $1 - i32.const 0 - i32.le_s - if - f64.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $10 - i32.eqz - if (result i32) - local.get $6 - else - i32.const 0 - end - if (result i32) - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.ge_u - else - i32.const 0 - end - if - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - end - local.get $4 - i32.const 48 - i32.sub - local.set $6 - block $for-break3 - loop $for-loop|3 - local.get $6 - i32.const 10 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $4 - i32.const 46 - i32.eq - if (result i32) - local.get $8 - i32.eqz - else - i32.const 0 - end - end - local.set $12 - local.get $12 - if - local.get $6 - i32.const 10 - i32.lt_u - if - local.get $9 - i32.const 19 - i32.lt_s - if (result i64) - i64.const 10 - local.get $11 - i64.mul - local.get $6 - i64.extend_i32_u - i64.add - else - local.get $11 - local.get $6 - i32.eqz - i32.eqz - i64.extend_i32_u - i64.or - end - local.set $11 - local.get $9 - i32.const 1 - i32.add - local.set $9 - else - local.get $9 - local.set $10 - i32.const 1 - local.set $8 - end - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.eqz - if - br $for-break3 - end - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $4 - local.get $4 - i32.const 48 - i32.sub - local.set $6 - br $for-loop|3 - end - end - end - local.get $8 - i32.eqz - if - local.get $9 - local.set $10 - end - block $~lib/util/string/scientific|inlined.0 (result f64) - local.get $11 - local.set $18 - local.get $10 - i32.const 19 - local.tee $6 - local.get $9 - local.tee $12 - local.get $6 - local.get $12 - i32.lt_s - select - i32.sub - block $~lib/util/string/parseExp|inlined.0 (result i32) - local.get $3 - local.set $6 - local.get $1 - local.set $12 - i32.const 1 - local.set $13 - i32.const 0 - local.set $14 - local.get $6 - i32.load16_u - local.set $15 - local.get $15 - i32.const 32 - i32.or - i32.const 101 - i32.ne - if - i32.const 0 - br $~lib/util/string/parseExp|inlined.0 - end - local.get $6 - i32.const 2 - i32.add - local.tee $6 - i32.load16_u - local.set $15 - local.get $15 - i32.const 45 - i32.eq - if - local.get $12 - i32.const 1 - i32.sub - local.tee $12 - i32.eqz - if - i32.const 0 - br $~lib/util/string/parseExp|inlined.0 - end - local.get $6 - i32.const 2 - i32.add - local.tee $6 - i32.load16_u - local.set $15 - i32.const -1 - local.set $13 - else - local.get $15 - i32.const 43 - i32.eq - if - local.get $12 - i32.const 1 - i32.sub - local.tee $12 - i32.eqz - if - i32.const 0 - br $~lib/util/string/parseExp|inlined.0 - end - local.get $6 - i32.const 2 - i32.add - local.tee $6 - i32.load16_u - local.set $15 - end - end - loop $while-continue|4 - local.get $15 - i32.const 48 - i32.eq - local.set $16 - local.get $16 - if - local.get $12 - i32.const 1 - i32.sub - local.tee $12 - i32.eqz - if - i32.const 0 - br $~lib/util/string/parseExp|inlined.0 - end - local.get $6 - i32.const 2 - i32.add - local.tee $6 - i32.load16_u - local.set $15 - br $while-continue|4 - end - end - local.get $15 - i32.const 48 - i32.sub - local.set $16 - loop $for-loop|5 - local.get $12 - if (result i32) - local.get $16 - i32.const 10 - i32.lt_u - else - i32.const 0 - end - local.set $17 - local.get $17 - if - local.get $14 - i32.const 3200 - i32.ge_s - if - local.get $13 - i32.const 3200 - i32.mul - br $~lib/util/string/parseExp|inlined.0 - end - i32.const 10 - local.get $14 - i32.mul - local.get $16 - i32.add - local.set $14 - local.get $6 - i32.const 2 - i32.add - local.tee $6 - i32.load16_u - local.set $15 - local.get $12 - i32.const 1 - i32.sub - local.set $12 - local.get $15 - i32.const 48 - i32.sub - local.set $16 - br $for-loop|5 - end - end - local.get $13 - local.get $14 - i32.mul - end - i32.add - local.set $17 - local.get $18 - i64.const 0 - i64.ne - i32.eqz - if (result i32) - i32.const 1 - else - local.get $17 - i32.const -342 - i32.lt_s - end - if - f64.const 0 - br $~lib/util/string/scientific|inlined.0 - end - local.get $17 - i32.const 308 - i32.gt_s - if - f64.const inf - br $~lib/util/string/scientific|inlined.0 - end - local.get $18 - f64.convert_i64_u - local.set $2 - local.get $17 - i32.eqz - if - local.get $2 - br $~lib/util/string/scientific|inlined.0 - end - local.get $17 - i32.const 22 - i32.gt_s - if (result i32) - local.get $17 - i32.const 22 - i32.const 15 - i32.add - i32.le_s - else - i32.const 0 - end - if - local.get $2 - local.get $17 - i32.const 22 - i32.sub - local.set $16 - i32.const 2648 - local.get $16 - i32.const 3 - i32.shl - i32.add - f64.load - f64.mul - local.set $2 - i32.const 22 - local.set $17 - end - local.get $18 - i64.const 9007199254740991 - i64.le_u - if (result i32) - local.get $17 - local.tee $16 - i32.const 31 - i32.shr_s - local.tee $15 - local.get $16 - i32.add - local.get $15 - i32.xor - i32.const 22 - i32.le_s - else - i32.const 0 - end - if - local.get $17 - i32.const 0 - i32.gt_s - if - local.get $2 - local.get $17 - local.set $12 - i32.const 2648 - local.get $12 - i32.const 3 - i32.shl - i32.add - f64.load - f64.mul - br $~lib/util/string/scientific|inlined.0 - end - local.get $2 - i32.const 0 - local.get $17 - i32.sub - local.set $6 - i32.const 2648 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - f64.div - br $~lib/util/string/scientific|inlined.0 - else - local.get $17 - i32.const 0 - i32.lt_s - if - local.get $18 - local.set $19 - local.get $17 - local.set $13 - local.get $19 - i64.clz - local.set $20 - local.get $19 - local.get $20 - i64.shl - local.set $19 - local.get $13 - i64.extend_i32_s - local.get $20 - i64.sub - local.set $20 - loop $for-loop|6 - local.get $13 - i32.const -14 - i32.le_s - local.set $6 - local.get $6 - if - local.get $19 - i64.const 6103515625 - i64.div_u - local.set $21 - local.get $19 - i64.const 6103515625 - i64.rem_u - local.set $22 - local.get $21 - i64.clz - local.set $23 - local.get $21 - local.get $23 - i64.shl - f64.const 0.00004294967296 - local.get $22 - local.get $23 - i64.const 18 - i64.sub - i64.shl - f64.convert_i64_u - f64.mul - f64.nearest - i64.trunc_f64_u - i64.add - local.set $19 - local.get $20 - local.get $23 - i64.sub - local.set $20 - local.get $13 - i32.const 14 - i32.add - local.set $13 - br $for-loop|6 - end - end - i32.const 5 - i32.const 0 - local.get $13 - i32.sub - call $~lib/math/ipow32 - i64.extend_i32_s - local.set $23 - local.get $19 - local.get $23 - i64.div_u - local.set $22 - local.get $19 - local.get $23 - i64.rem_u - local.set $21 - local.get $22 - i64.clz - local.set $24 - local.get $22 - local.get $24 - i64.shl - local.get $21 - f64.convert_i64_u - i64.reinterpret_f64 - local.get $24 - i64.const 52 - i64.shl - i64.add - f64.reinterpret_i64 - local.get $23 - f64.convert_i64_u - f64.div - i64.trunc_f64_u - i64.add - local.set $19 - local.get $20 - local.get $24 - i64.sub - local.set $20 - local.get $19 - f64.convert_i64_u - local.get $20 - i32.wrap_i64 - call $~lib/math/NativeMath.scalbn - br $~lib/util/string/scientific|inlined.0 - else - local.get $18 - local.set $19 - local.get $17 - local.set $14 - local.get $19 - i64.ctz - local.set $24 - local.get $19 - local.get $24 - i64.shr_u - local.set $19 - local.get $24 - local.get $14 - i64.extend_i32_s - i64.add - local.set $24 - local.get $24 - global.set $~lib/util/string/__fixmulShift - loop $for-loop|7 - local.get $14 - i32.const 13 - i32.ge_s - local.set $13 - local.get $13 - if - local.get $19 - local.set $20 - i32.const 1220703125 - local.set $15 - local.get $20 - i64.const 4294967295 - i64.and - local.get $15 - i64.extend_i32_u - i64.mul - local.set $21 - local.get $20 - i64.const 32 - i64.shr_u - local.get $15 - i64.extend_i32_u - i64.mul - local.get $21 - i64.const 32 - i64.shr_u - i64.add - local.set $22 - local.get $22 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $6 - local.get $6 - i32.clz - local.set $12 - i64.const 32 - local.get $12 - i64.extend_i32_u - i64.sub - local.set $23 - global.get $~lib/util/string/__fixmulShift - local.get $23 - i64.add - global.set $~lib/util/string/__fixmulShift - local.get $22 - local.get $12 - i64.extend_i32_u - i64.shl - local.get $21 - i64.const 4294967295 - i64.and - local.get $23 - i64.shr_u - i64.or - local.get $21 - local.get $12 - i64.extend_i32_u - i64.shl - i64.const 31 - i64.shr_u - i64.const 1 - i64.and - i64.add - local.set $19 - local.get $14 - i32.const 13 - i32.sub - local.set $14 - br $for-loop|7 - end - end - local.get $19 - local.set $20 - i32.const 5 - local.get $14 - call $~lib/math/ipow32 - local.set $16 - local.get $20 - i64.const 4294967295 - i64.and - local.get $16 - i64.extend_i32_u - i64.mul - local.set $23 - local.get $20 - i64.const 32 - i64.shr_u - local.get $16 - i64.extend_i32_u - i64.mul - local.get $23 - i64.const 32 - i64.shr_u - i64.add - local.set $22 - local.get $22 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $13 - local.get $13 - i32.clz - local.set $12 - i64.const 32 - local.get $12 - i64.extend_i32_u - i64.sub - local.set $21 - global.get $~lib/util/string/__fixmulShift - local.get $21 - i64.add - global.set $~lib/util/string/__fixmulShift - local.get $22 - local.get $12 - i64.extend_i32_u - i64.shl - local.get $23 - i64.const 4294967295 - i64.and - local.get $21 - i64.shr_u - i64.or - local.get $23 - local.get $12 - i64.extend_i32_u - i64.shl - i64.const 31 - i64.shr_u - i64.const 1 - i64.and - i64.add - local.set $19 - global.get $~lib/util/string/__fixmulShift - local.set $24 - local.get $19 - f64.convert_i64_u - local.get $24 - i32.wrap_i64 - call $~lib/math/NativeMath.scalbn - br $~lib/util/string/scientific|inlined.0 - end - unreachable - end - unreachable - end - local.get $5 - f64.copysign - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/parseFloat (param $0 i32) (result f64) - (local $1 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/util/string/strtod - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/string/String#concat (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 640 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - end - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $4 - local.get $1 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $5 - local.get $4 - local.get $5 - i32.add - local.set $6 - local.get $6 - i32.const 0 - i32.eq - if - i32.const 272 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $6 - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 - local.get $0 - local.get $4 - call $~lib/memory/memory.copy - local.get $7 - local.get $4 - i32.add - local.get $1 - local.get $5 - call $~lib/memory/memory.copy - local.get $7 - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.const 640 - local.get $0 - i32.const 0 - i32.ne - select - local.get $1 - call $~lib/string/String#concat - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__gt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $1 - call $~lib/string/String#get:length - local.set $4 - local.get $4 - i32.eqz - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - local.tee $2 - local.get $4 - local.tee $5 - local.get $2 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - i32.const 0 - i32.gt_s - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__lt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $1 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $4 - local.get $4 - i32.eqz - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $4 - local.tee $2 - local.get $3 - local.tee $5 - local.get $2 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - i32.const 0 - i32.lt_s - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__gte (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/string/String.__lt - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__lte (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - call $~lib/string/String.__gt - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String#repeat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i64.extend_i32_s - local.get $1 - i64.extend_i32_s - i64.mul - i64.const 1 - i64.const 28 - i64.shl - i64.gt_u - end - if - i32.const 11392 - i32.const 528 - i32.const 322 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - i32.eqz - end - if - i32.const 272 - call $~lib/rt/pure/__retain - return - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $2 - local.get $1 - i32.mul - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - local.get $1 - call $~lib/memory/memory.repeat - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#replace (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - call $~lib/string/String#get:length - local.set $4 - local.get $3 - local.get $4 - i32.le_u - if - local.get $3 - local.get $4 - i32.lt_u - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - select - call $~lib/rt/pure/__retain - end - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/string/String#indexOf - local.set $6 - local.get $6 - i32.const -1 - i32.xor - if - local.get $2 - call $~lib/string/String#get:length - local.set $5 - local.get $3 - local.get $4 - i32.sub - local.set $3 - local.get $3 - local.get $5 - i32.add - local.set $7 - local.get $7 - if - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $6 - local.get $5 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - local.get $4 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $6 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - return - end - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $7 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $7 - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 352 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/reallocateBlock (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.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $3 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $6 - local.get $6 - i32.load - local.set $7 - local.get $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $5 - local.get $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $8 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u - if - i32.const 1 - drop - local.get $1 - local.get $8 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $8 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/string/String#replaceAll (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 $14 i32) - (local $15 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - call $~lib/string/String#get:length - local.set $4 - local.get $3 - local.get $4 - i32.le_u - if - local.get $3 - local.get $4 - i32.lt_u - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - select - call $~lib/rt/pure/__retain - end - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $6 - local.get $4 - i32.eqz - if - local.get $6 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $3 - local.get $3 - i32.const 1 - i32.add - local.get $6 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $6 - local.set $7 - i32.const 0 - local.set $8 - loop $for-loop|0 - local.get $8 - local.get $3 - i32.lt_u - local.set $9 - local.get $9 - if - local.get $5 - local.get $7 - local.tee $10 - i32.const 1 - i32.add - local.set $7 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $8 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $5 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $7 - local.get $6 - i32.add - local.set $7 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|0 - end - end - local.get $5 - call $~lib/rt/pure/__retain - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - return - end - i32.const 0 - local.set $11 - i32.const 0 - local.set $12 - local.get $4 - local.get $6 - i32.eq - if - local.get $3 - i32.const 1 - i32.shl - local.set $7 - local.get $7 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 - local.get $7 - call $~lib/memory/memory.copy - loop $while-continue|1 - local.get $0 - local.get $1 - local.get $11 - call $~lib/string/String#indexOf - local.tee $12 - i32.const -1 - i32.xor - local.set $8 - local.get $8 - if - local.get $5 - local.get $12 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $12 - local.get $4 - i32.add - local.set $11 - br $while-continue|1 - end - end - local.get $5 - call $~lib/rt/pure/__retain - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - return - end - i32.const 0 - local.set $13 - i32.const 0 - local.set $14 - local.get $3 - local.set $15 - loop $while-continue|2 - local.get $0 - local.get $1 - local.get $11 - call $~lib/string/String#indexOf - local.tee $12 - i32.const -1 - i32.xor - local.set $5 - local.get $5 - if - local.get $13 - i32.eqz - if - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $13 - end - local.get $14 - local.get $15 - i32.gt_u - if - local.get $15 - i32.const 1 - i32.shl - local.set $7 - local.get $13 - local.get $7 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__realloc - local.set $13 - local.get $7 - local.set $15 - end - local.get $12 - local.get $11 - i32.sub - local.set $7 - local.get $13 - local.get $14 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $14 - local.get $7 - i32.add - local.set $14 - local.get $13 - local.get $14 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $14 - local.get $6 - i32.add - local.set $14 - local.get $12 - local.get $4 - i32.add - local.set $11 - br $while-continue|2 - end - end - local.get $14 - if - local.get $14 - local.get $15 - i32.gt_u - if - local.get $15 - i32.const 1 - i32.shl - local.set $5 - local.get $13 - local.get $5 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__realloc - local.set $13 - local.get $5 - local.set $15 - end - local.get $3 - local.get $11 - i32.sub - local.set $5 - local.get $5 - if - local.get $13 - local.get $14 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - local.get $5 - local.get $14 - i32.add - local.set $5 - local.get $15 - local.get $5 - i32.gt_u - if - local.get $13 - local.get $5 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/__realloc - local.set $13 - end - local.get $13 - call $~lib/rt/pure/__retain - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - return - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/string/String#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $2 - local.get $2 - local.get $1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.le_s - if - i32.const 272 - call $~lib/rt/pure/__retain - return - end - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $6 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $6 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#substr (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.get $1 - local.set $3 - local.get $2 - local.set $4 - local.get $0 - call $~lib/string/String#get:length - local.set $5 - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $3 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - local.set $3 - end - local.get $4 - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - local.tee $6 - local.get $5 - local.get $3 - i32.sub - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $8 - local.get $8 - i32.const 0 - i32.le_s - if - i32.const 272 - call $~lib/rt/pure/__retain - return - end - local.get $8 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $9 - local.get $9 - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $8 - call $~lib/memory/memory.copy - local.get $9 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#substring (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.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $6 - local.get $2 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $7 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $8 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $8 - i32.sub - local.set $10 - local.get $10 - i32.eqz - if - i32.const 272 - call $~lib/rt/pure/__retain - return - end - local.get $8 - i32.eqz - if (result i32) - local.get $9 - local.get $3 - i32.const 1 - i32.shl - i32.eq - else - i32.const 0 - end - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $10 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $11 - local.get $11 - local.get $0 - local.get $8 - i32.add - local.get $10 - call $~lib/memory/memory.copy - local.get $11 - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end - local.get $3 - ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 16 - local.get $2 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.set $5 - local.get $5 - i32.const 0 - local.get $3 - call $~lib/rt/__allocBuffer - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=8 - local.set $3 - local.get $1 - local.get $3 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 11392 - i32.const 12656 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $4 - local.get $1 - local.get $2 - i32.shl - local.set $5 - local.get $4 - local.get $5 - call $~lib/rt/tlsf/__realloc - local.set $6 - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $5 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $6 - local.get $4 - i32.ne - if - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.store offset=8 - end - ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - call $~lib/rt/pure/__retain - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/string/String#split (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 $14 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $1 - i32.const 0 - i32.eq - if - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $5 - local.get $1 - call $~lib/string/String#get:length - local.set $6 - local.get $2 - i32.const 0 - i32.lt_s - if - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.eqz - if - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $5 - local.tee $4 - local.get $2 - local.tee $3 - local.get $4 - local.get $3 - i32.lt_s - select - local.set $5 - local.get $5 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $7 - loop $for-loop|0 - local.get $7 - local.get $5 - i32.lt_s - local.set $8 - local.get $8 - if - i32.const 2 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $9 - local.get $9 - local.get $0 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $3 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store - i32.const 1 - drop - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $4 - local.set $7 - local.get $1 - call $~lib/rt/pure/__release - local.get $7 - return - else - local.get $5 - i32.eqz - if - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - i32.load offset=4 - i32.const 272 - i32.store - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - end - end - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.set $10 - i32.const 0 - local.set $11 - i32.const 0 - local.set $12 - i32.const 0 - local.set $13 - loop $while-continue|1 - local.get $0 - local.get $1 - local.get $12 - call $~lib/string/String#indexOf - local.tee $11 - i32.const -1 - i32.xor - local.set $3 - local.get $3 - if - local.get $11 - local.get $12 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.gt_s - if - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $0 - local.get $12 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - call $~lib/array/Array<~lib/string/String>#push - drop - else - local.get $10 - i32.const 272 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $13 - i32.const 1 - i32.add - local.tee $13 - local.get $2 - i32.eq - if - local.get $10 - local.set $7 - local.get $1 - call $~lib/rt/pure/__release - local.get $7 - return - end - local.get $11 - local.get $6 - i32.add - local.set $12 - br $while-continue|1 - end - end - local.get $12 - i32.eqz - if - local.get $10 - local.get $0 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $10 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $5 - local.get $12 - i32.sub - local.set $14 - local.get $14 - i32.const 0 - i32.gt_s - if - local.get $14 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.get $0 - local.get $12 - i32.const 1 - i32.shl - i32.add - local.get $14 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $3 - call $~lib/array/Array<~lib/string/String>#push - drop - else - local.get $10 - i32.const 272 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $10 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 12704 - i32.const 12656 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 12768 - i32.const 12656 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 100000 - i32.lt_u - if - local.get $0 - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $0 - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $0 - i32.const 10000 - i32.ge_u - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $0 - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - i32.const 13240 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - i32.const 13240 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $1 - i32.const 100 - i32.div_u - local.set $3 - local.get $1 - i32.const 100 - i32.rem_u - local.set $10 - local.get $3 - local.set $1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 13240 - local.get $10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 13240 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - else - local.get $2 - i32.const 1 - i32.sub - local.set $2 - i32.const 48 - local.get $1 - i32.add - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - ) - (func $~lib/util/number/utoa_hex_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $2 - i32.const 2 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 13664 - local.get $1 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i64.const 8 - i64.shr_u - local.set $1 - br $while-continue|0 - end - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - i32.const 13664 - local.get $1 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - local.get $1 - local.set $2 - local.get $2 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $1 - i64.extend_i32_s - local.set $3 - local.get $3 - local.set $4 - i32.const 1 - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $4 - i64.div_u - local.set $0 - local.get $4 - local.get $4 - i64.mul - local.set $4 - local.get $5 - i32.const 1 - i32.shl - local.set $5 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $0 - i64.const 1 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $3 - i64.div_u - local.set $0 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $while-continue|1 - end - end - local.get $5 - i32.const 1 - i32.sub - ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i32) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $5 - local.get $4 - i64.const 1 - i64.sub - local.set $6 - loop $do-continue|0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 14704 - local.get $1 - local.get $6 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $5 - i64.shr_u - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|0 - end - else - loop $do-continue|1 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $4 - i64.div_u - local.set $6 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 14704 - local.get $1 - local.get $6 - local.get $4 - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $6 - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|1 - end - end - ) - (func $~lib/util/number/itoa32 (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.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 13072 - i32.const 13200 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 1424 - return - end - local.get $0 - i32.const 31 - i32.shr_u - local.set $2 - local.get $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - i64.extend_i32_u - local.get $5 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.set $4 - local.get $4 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.get $4 - i64.extend_i32_u - local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 13072 - i32.const 13200 - i32.const 350 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 1424 - return - end - i32.const 0 - local.set $2 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - i64.extend_i32_u - local.get $4 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.get $0 - i64.extend_i32_u - local.get $3 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if - local.get $0 - i64.const 1000000000000 - i64.lt_u - if - i32.const 10 - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - return - else - i32.const 13 - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if - i32.const 16 - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.add - return - else - i32.const 18 - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - loop $while-continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i64.const 100000000 - i64.div_u - local.set $4 - local.get $1 - local.get $4 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 - local.get $6 - i32.const 100 - i32.div_u - local.set $8 - local.get $6 - i32.const 100 - i32.rem_u - local.set $9 - local.get $7 - i32.const 100 - i32.div_u - local.set $10 - local.get $7 - i32.const 100 - i32.rem_u - local.set $11 - i32.const 13240 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 13240 - local.get $11 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - i32.const 13240 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 13240 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $0 - local.get $1 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - ) - (func $~lib/util/number/utoa64 (param $0 i64) (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 i64) - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 13072 - i32.const 13200 - i32.const 401 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 0 - i64.ne - i32.eqz - if - i32.const 1424 - return - end - i32.const 0 - local.set $2 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.set $3 - local.get $3 - call $~lib/util/number/decimalCount32 - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $7 - local.get $3 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $8 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $3 - local.get $0 - local.set $8 - local.get $4 - local.set $7 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $3 - local.get $8 - local.get $7 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.get $0 - local.get $4 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa64 (param $0 i64) (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 i64) - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 13072 - i32.const 13200 - i32.const 431 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 0 - i64.ne - i32.eqz - if - i32.const 1424 - return - end - local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $2 - local.get $2 - if - i64.const 0 - local.get $0 - i64.sub - local.set $0 - end - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.set $4 - local.get $4 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $8 - local.get $4 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/number/utoa32_dec_lut - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $9 - local.get $5 - local.set $6 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $9 - local.get $6 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $4 - local.get $0 - local.set $9 - local.get $5 - local.set $8 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $4 - local.get $9 - local.get $8 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.get $0 - local.get $5 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i64) - i32.const 0 - local.get $4 - i32.sub - local.set $7 - i64.const 1 - local.get $7 - i64.extend_i32_s - i64.shl - local.set $8 - local.get $8 - i64.const 1 - i64.sub - local.set $9 - local.get $3 - local.get $1 - i64.sub - local.set $10 - local.get $3 - local.get $7 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.set $11 - local.get $3 - local.get $9 - i64.and - local.set $12 - local.get $11 - call $~lib/util/number/decimalCount32 - local.set $13 - local.get $6 - local.set $14 - loop $while-continue|0 - local.get $13 - i32.const 0 - i32.gt_s - local.set $15 - local.get $15 - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $13 - local.set $17 - local.get $17 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $17 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $17 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $17 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $17 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $17 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $17 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $17 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $17 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $17 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - local.get $11 - i32.const 1000000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 1000000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 100000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 100000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 10000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 10000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 1000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 1000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 100000 - i32.div_u - local.set $16 - local.get $11 - i32.const 100000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 10000 - i32.div_u - local.set $16 - local.get $11 - i32.const 10000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 1000 - i32.div_u - local.set $16 - local.get $11 - i32.const 1000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 100 - i32.div_u - local.set $16 - local.get $11 - i32.const 100 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 10 - i32.div_u - local.set $16 - local.get $11 - i32.const 10 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - local.set $16 - i32.const 0 - local.set $11 - br $break|1 - end - i32.const 0 - local.set $16 - br $break|1 - end - local.get $16 - local.get $14 - i32.or - if - local.get $0 - local.get $14 - local.tee $17 - i32.const 1 - i32.add - local.set $14 - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $16 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - i32.const 1 - i32.sub - local.set $13 - local.get $11 - i64.extend_i32_u - local.get $7 - i64.extend_i32_s - i64.shl - local.get $12 - i64.add - local.set $18 - local.get $18 - local.get $5 - i64.le_u - if - global.get $~lib/util/number/_K - local.get $13 - i32.add - global.set $~lib/util/number/_K - local.get $0 - local.set $23 - local.get $14 - local.set $17 - local.get $5 - local.set $22 - local.get $18 - local.set $21 - i32.const 20712 - local.get $13 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $7 - i64.extend_i32_s - i64.shl - local.set $20 - local.get $10 - local.set $19 - local.get $23 - local.get $17 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $24 - local.get $24 - i32.load16_u - local.set $25 - loop $while-continue|3 - local.get $21 - local.get $19 - i64.lt_u - if (result i32) - local.get $22 - local.get $21 - i64.sub - local.get $20 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $19 - local.get $21 - i64.sub - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - local.set $26 - local.get $26 - if - local.get $25 - i32.const 1 - i32.sub - local.set $25 - local.get $21 - local.get $20 - i64.add - local.set $21 - br $while-continue|3 - end - end - local.get $24 - local.get $25 - i32.store16 - local.get $14 - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - i32.const 1 - local.set $15 - local.get $15 - if - local.get $12 - i64.const 10 - i64.mul - local.set $12 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $12 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $22 - local.get $22 - local.get $14 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $14 - local.tee $25 - i32.const 1 - i32.add - local.set $14 - local.get $25 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $22 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $12 - local.get $9 - i64.and - local.set $12 - local.get $13 - i32.const 1 - i32.sub - local.set $13 - local.get $12 - local.get $5 - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $13 - i32.add - global.set $~lib/util/number/_K - local.get $10 - i32.const 20712 - i32.const 0 - local.get $13 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $10 - local.get $0 - local.set $17 - local.get $14 - local.set $26 - local.get $5 - local.set $27 - local.get $12 - local.set $21 - local.get $8 - local.set $20 - local.get $10 - local.set $19 - local.get $17 - local.get $26 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $25 - local.get $25 - i32.load16_u - local.set $24 - loop $while-continue|6 - local.get $21 - local.get $19 - i64.lt_u - if (result i32) - local.get $27 - local.get $21 - i64.sub - local.get $20 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $19 - local.get $21 - i64.sub - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - local.set $23 - local.get $23 - if - local.get $24 - i32.const 1 - i32.sub - local.set $24 - local.get $21 - local.get $20 - i64.add - local.set $21 - br $while-continue|6 - end - end - local.get $25 - local.get $24 - i32.store16 - local.get $14 - return - end - br $while-continue|4 - end - end - unreachable - ) - (func $~lib/util/number/prettify (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.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.set $3 - local.get $1 - local.get $3 - i32.le_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $1 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 2 - i32.add - return - else - local.get $3 - i32.const 0 - i32.gt_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $4 - local.get $4 - i32.const 2 - i32.add - local.get $4 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - return - else - i32.const -6 - local.get $3 - i32.lt_s - if (result i32) - local.get $3 - i32.const 0 - i32.le_s - else - i32.const 0 - end - if - i32.const 2 - local.get $3 - i32.sub - local.set $4 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or - i32.store - i32.const 2 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $4 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $1 - local.get $4 - i32.add - return - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - local.get $6 - i32.const 0 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 - local.get $6 - i32.sub - local.set $6 - end - local.get $6 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $7 - local.get $5 - local.set $10 - local.get $6 - local.set $9 - local.get $7 - local.set $8 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/number/utoa32_dec_lut - local.get $5 - i32.const 45 - i32.const 43 - local.get $4 - select - i32.store16 - local.get $7 - local.set $1 - local.get $1 - i32.const 2 - i32.add - return - else - local.get $1 - i32.const 1 - i32.shl - local.set $7 - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $7 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $7 - i32.add - i32.const 101 - i32.store16 offset=2 - local.get $1 - local.get $0 - local.get $7 - i32.add - i32.const 4 - i32.add - local.set $9 - local.get $3 - i32.const 1 - i32.sub - local.set $8 - local.get $8 - i32.const 0 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 - local.get $8 - i32.sub - local.set $8 - end - local.get $8 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $5 - local.get $9 - local.set $11 - local.get $8 - local.set $6 - local.get $5 - local.set $10 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $11 - local.get $6 - local.get $10 - call $~lib/util/number/utoa32_dec_lut - local.get $9 - i32.const 45 - i32.const 43 - local.get $4 - select - i32.store16 - local.get $5 - i32.add - local.set $1 - local.get $1 - i32.const 2 - i32.add - return - end - unreachable - end - unreachable - end - unreachable - end - unreachable - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i64) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 f64) - (local $17 i64) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i64) - (local $24 i64) - (local $25 i64) - (local $26 i32) - (local $27 i64) - (local $28 i32) - local.get $1 - f64.const 0 - f64.lt - local.set $2 - local.get $2 - if - local.get $1 - f64.neg - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - local.get $1 - local.set $5 - local.get $0 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i64.reinterpret_f64 - local.set $6 - local.get $6 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $7 - local.get $6 - i64.const 4503599627370495 - i64.and - local.set $8 - local.get $7 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $8 - i64.add - local.set $9 - local.get $7 - i32.const 1 - local.get $7 - select - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $7 - local.get $9 - local.set $11 - local.get $7 - local.set $10 - local.get $11 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $12 - local.get $10 - i32.const 1 - i32.sub - local.set $13 - local.get $12 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $12 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $12 - local.get $13 - local.get $14 - i32.sub - local.set $13 - i32.const 1 - local.get $11 - i64.const 4503599627370496 - i64.eq - i32.add - local.set $15 - local.get $12 - global.set $~lib/util/number/_frc_plus - local.get $11 - local.get $15 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $10 - local.get $15 - i32.sub - local.get $13 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $13 - global.set $~lib/util/number/_exp - global.get $~lib/util/number/_exp - local.set $10 - i32.const -61 - local.get $10 - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $16 - local.get $16 - i32.trunc_f64_s - local.set $15 - local.get $15 - local.get $15 - f64.convert_i32_s - local.get $16 - f64.ne - i32.add - local.set $15 - local.get $15 - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $14 - i32.const 348 - local.get $14 - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 19840 - local.get $14 - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 20536 - local.get $14 - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $9 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $9 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $9 - local.get $7 - local.get $14 - i32.sub - local.set $7 - global.get $~lib/util/number/_frc_pow - local.set $12 - global.get $~lib/util/number/_exp_pow - local.set $15 - local.get $9 - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $24 - local.get $24 - i64.const 2147483647 - i64.add - local.set $24 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $24 - i64.const 32 - i64.shr_u - local.set $24 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $24 - i64.add - local.set $24 - local.get $7 - local.set $10 - local.get $15 - local.set $13 - local.get $10 - local.get $13 - i32.add - i32.const 64 - i32.add - local.set $10 - global.get $~lib/util/number/_frc_plus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $23 - local.get $11 - i64.const 4294967295 - i64.and - local.set $22 - local.get $17 - i64.const 32 - i64.shr_u - local.set $21 - local.get $11 - i64.const 32 - i64.shr_u - local.set $20 - local.get $23 - local.get $22 - i64.mul - local.set $19 - local.get $21 - local.get $22 - i64.mul - local.get $19 - i64.const 32 - i64.shr_u - i64.add - local.set $18 - local.get $23 - local.get $20 - i64.mul - local.get $18 - i64.const 4294967295 - i64.and - i64.add - local.set $25 - local.get $25 - i64.const 2147483647 - i64.add - local.set $25 - local.get $18 - i64.const 32 - i64.shr_u - local.set $18 - local.get $25 - i64.const 32 - i64.shr_u - local.set $25 - local.get $21 - local.get $20 - i64.mul - local.get $18 - i64.add - local.get $25 - i64.add - i64.const 1 - i64.sub - local.set $25 - global.get $~lib/util/number/_exp - local.set $26 - local.get $15 - local.set $13 - local.get $26 - local.get $13 - i32.add - i32.const 64 - i32.add - local.set $26 - global.get $~lib/util/number/_frc_minus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $27 - local.get $27 - i64.const 2147483647 - i64.add - local.set $27 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $27 - i64.const 32 - i64.shr_u - local.set $27 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $27 - i64.add - i64.const 1 - i64.add - local.set $27 - local.get $25 - local.get $27 - i64.sub - local.set $23 - local.get $4 - local.get $24 - local.get $10 - local.get $25 - local.get $26 - local.get $23 - local.get $3 - call $~lib/util/number/genDigits - local.set $28 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $28 - local.get $2 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $28 - local.get $28 - local.get $2 - i32.add - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - f64.const 0 - f64.eq - if - i32.const 19792 - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $0 - local.get $0 - f64.ne - if - i32.const 5328 - return - end - i32.const 6544 - i32.const 19824 - local.get $0 - f64.const 0 - f64.lt - select - call $~lib/rt/pure/__retain - return - end - i32.const 28 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $1 - local.get $1 - local.get $0 - call $~lib/util/number/dtoa_core - local.set $2 - local.get $2 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - return - end - local.get $1 - i32.const 0 - local.get $2 - call $~lib/string/String#substring - local.set $3 - local.get $1 - call $~lib/rt/tlsf/__free - local.get $3 - ) - (func $start:std/string - (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) - (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 f64) - (local $33 f32) - (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) - (local $245 i32) - (local $246 i32) - (local $247 i32) - (local $248 i32) - (local $249 i32) - (local $250 i32) - (local $251 i32) - (local $252 i32) - (local $253 i32) - (local $254 i32) - (local $255 i32) - (local $256 i32) - (local $257 i32) - (local $258 i32) - (local $259 i32) - (local $260 i32) - (local $261 i32) - (local $262 i32) - (local $263 i32) - (local $264 i32) - (local $265 i32) - (local $266 i32) - (local $267 i32) - (local $268 i32) - (local $269 i32) - (local $270 i32) - (local $271 i32) - (local $272 i32) - (local $273 i32) - (local $274 i32) - (local $275 i32) - (local $276 i32) - (local $277 i32) - (local $278 i32) - (local $279 i32) - (local $280 i32) - (local $281 i32) - (local $282 i32) - (local $283 i32) - (local $284 i32) - (local $285 i32) - (local $286 i32) - (local $287 i32) - (local $288 i32) - (local $289 i32) - (local $290 i32) - (local $291 i32) - (local $292 i32) - (local $293 i32) - (local $294 i32) - (local $295 i32) - (local $296 i32) - (local $297 i32) - (local $298 i32) - global.get $std/string/str - i32.const 32 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 128 - i32.const 128 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 208 - i32.const 208 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 240 - i32.const 240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - call $~lib/string/String#get:length - i32.const 16 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - call $~lib/string/String#charCodeAt - i32.const 104 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - call $~lib/string/String.__not - i32.eqz - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 288 - call $~lib/string/String.__not - i32.eqz - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - call $~lib/string/String.__not - i32.eqz - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/string/String.fromCharCode@varargs - local.tee $0 - i32.const 288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 54 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/string/String.fromCharCode@varargs - local.tee $1 - i32.const 464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 65536 - i32.const 54 - i32.add - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/string/String.fromCharCode@varargs - local.tee $2 - i32.const 464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 55296 - i32.const 57088 - call $~lib/string/String.fromCharCode - local.tee $3 - i32.const 496 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/string/String.fromCodePoint - local.tee $4 - i32.const 288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 54 - call $~lib/string/String.fromCodePoint - local.tee $5 - i32.const 464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 119558 - call $~lib/string/String.fromCodePoint - local.tee $6 - i32.const 576 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 608 - i32.const 0 - call $~lib/string/String#startsWith - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 672 - global.get $~lib/string/String.MAX_LENGTH - call $~lib/string/String#endsWith - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 704 - i32.const 0 - call $~lib/string/String#includes - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const 736 - call $~lib/string/String#padStart - local.tee $7 - global.get $std/string/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 15 - i32.const 736 - call $~lib/string/String#padStart - local.tee $8 - global.get $std/string/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 3 - i32.const 736 - call $~lib/string/String#padStart - local.tee $9 - i32.const 768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 10 - i32.const 272 - call $~lib/string/String#padStart - local.tee $10 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 100 - i32.const 272 - call $~lib/string/String#padStart - local.tee $11 - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 5 - i32.const 736 - call $~lib/string/String#padStart - local.tee $12 - i32.const 832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 6 - i32.const 864 - call $~lib/string/String#padStart - local.tee $13 - i32.const 896 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 8 - i32.const 864 - call $~lib/string/String#padStart - local.tee $14 - i32.const 928 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const 736 - call $~lib/string/String#padEnd - local.tee $15 - global.get $std/string/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 15 - i32.const 736 - call $~lib/string/String#padEnd - local.tee $16 - global.get $std/string/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 3 - i32.const 736 - call $~lib/string/String#padEnd - local.tee $17 - i32.const 768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 45 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 10 - i32.const 272 - call $~lib/string/String#padEnd - local.tee $18 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 100 - i32.const 272 - call $~lib/string/String#padEnd - local.tee $19 - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 5 - i32.const 736 - call $~lib/string/String#padEnd - local.tee $20 - i32.const 960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 6 - i32.const 800 - call $~lib/string/String#padEnd - local.tee $21 - i32.const 992 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 49 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 8 - i32.const 800 - call $~lib/string/String#padEnd - local.tee $22 - i32.const 1024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 272 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 608 - i32.const 0 - call $~lib/string/String#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 53 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 320 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 54 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - global.get $std/string/str - i32.const 0 - call $~lib/string/String#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 55 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 272 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1056 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 57 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1088 - i32.const 0 - call $~lib/string/String#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1056 - i32.const 2 - call $~lib/string/String#indexOf - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1056 - i32.const 3 - call $~lib/string/String#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 60 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1120 - i32.const -1 - call $~lib/string/String#indexOf - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 272 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#lastIndexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 608 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 272 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#lastIndexOf - global.get $std/string/str - call $~lib/string/String#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 65 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1056 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1088 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 67 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1152 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#lastIndexOf - i32.const 15 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 68 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1056 - i32.const 2 - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1056 - i32.const 3 - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1120 - i32.const -1 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 71 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 1184 - i32.const 0 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 608 - i32.const 0 - call $~lib/string/String#lastIndexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 272 - call $~lib/string/String#localeCompare - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 75 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 272 - call $~lib/string/String#localeCompare - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 76 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 320 - call $~lib/string/String#localeCompare - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 640 - i32.const 640 - call $~lib/string/String#localeCompare - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 1216 - call $~lib/string/String#localeCompare - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1216 - i32.const 800 - call $~lib/string/String#localeCompare - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 80 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1248 - i32.const 800 - call $~lib/string/String#localeCompare - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 81 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 1248 - call $~lib/string/String#localeCompare - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 82 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 768 - call $~lib/string/String#localeCompare - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 83 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 288 - i32.const 272 - call $~lib/string/String#localeCompare - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - call $~lib/string/String#trimStart - local.tee $23 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 86 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - call $~lib/string/String#trimStart - local.tee $24 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1312 - call $~lib/string/String#trimStart - local.tee $25 - i32.const 1360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 88 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - call $~lib/string/String#trimEnd - local.tee $26 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 90 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - call $~lib/string/String#trimEnd - local.tee $27 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 91 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1312 - call $~lib/string/String#trimEnd - local.tee $28 - i32.const 1392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - call $~lib/string/String#trim - local.tee $29 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 94 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1280 - call $~lib/string/String#trim - local.tee $30 - i32.const 1280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1312 - call $~lib/string/String#trim - local.tee $31 - i32.const 800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 96 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1424 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 98 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1456 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 99 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1488 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 100 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1520 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 101 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1552 - i32.const 0 - call $~lib/string/parseInt - f64.const 5 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 102 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1584 - i32.const 0 - call $~lib/string/parseInt - f64.const 455 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 103 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1616 - i32.const 0 - call $~lib/string/parseInt - f64.const 3855 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 104 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1648 - i32.const 0 - call $~lib/string/parseInt - f64.const 3855 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 105 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1680 - i32.const 0 - call $~lib/string/parseInt - f64.const 11 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 106 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1712 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1744 - i32.const 0 - call $~lib/string/parseInt - f64.const -123 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 108 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1776 - i32.const 0 - call $~lib/string/parseInt - f64.const 123 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 109 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1808 - i32.const 0 - call $~lib/string/parseInt - f64.const -12 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1424 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 111 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1840 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 112 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1872 - i32.const 16 - call $~lib/string/parseInt - f64.const 2833 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1904 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 114 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1936 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1968 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 116 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2000 - i32.const 0 - call $~lib/string/parseInt - local.set $32 - local.get $32 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $32 - local.get $32 - f64.eq - i32.and - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 117 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2032 - i32.const 0 - call $~lib/string/parseInt - i32.const 2064 - i32.const 16 - call $~lib/string/parseInt - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 118 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2096 - i32.const 0 - call $~lib/string/parseInt - f64.const 36893488147419103232 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 119 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2096 - i32.const 13 - call $~lib/string/parseInt - f64.const 5135857308667095285760 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 120 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2160 - i32.const 10 - call $~lib/string/parseInt - f64.const -1.e+24 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 121 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2240 - i32.const 16 - call $~lib/string/parseInt - f64.const 75557863725914323419136 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 122 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2304 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 123 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2336 - i32.const 0 - call $~lib/string/parseInt - f64.const 2 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 124 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2368 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 126 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2400 - i32.const 0 - call $~lib/string/parseInt - f64.const 2 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 127 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 0 - call $~lib/string/parseInt - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 128 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2432 - i32.const 0 - call $~lib/string/parseInt - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 129 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2464 - i32.const 0 - call $~lib/string/parseInt - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 130 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 864 - i32.const 37 - call $~lib/string/parseInt - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 131 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2496 - i32.const 0 - call $~lib/string/parseInt - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 132 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2528 - i32.const 0 - call $~lib/string/parseInt - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 133 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2528 - i32.const 0 - call $~lib/number/F32.parseInt - local.tee $33 - local.get $33 - f32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 134 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2528 - i32.const 0 - call $~lib/number/F64.parseInt - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 135 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2560 - i32.const 0 - call $~lib/number/I32.parseInt - global.get $~lib/number/I32.MAX_VALUE - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2608 - i32.const 0 - call $~lib/number/I64.parseInt - global.get $~lib/number/I64.MAX_VALUE - i64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 138 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1424 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 141 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1488 - call $~lib/string/parseFloat - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 142 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2848 - call $~lib/string/parseFloat - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2880 - call $~lib/string/parseFloat - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 144 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2912 - call $~lib/string/parseFloat - f64.const 1e-05 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 145 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2944 - call $~lib/string/parseFloat - f64.const -1e-05 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 146 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2976 - call $~lib/string/parseFloat - f64.const -3e-23 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 147 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3008 - call $~lib/string/parseFloat - f64.const 3e21 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 148 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3040 - call $~lib/string/parseFloat - f64.const 0.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 149 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3072 - call $~lib/string/parseFloat - f64.const 0.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 150 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3104 - call $~lib/string/parseFloat - f64.const 0.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 151 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3136 - call $~lib/string/parseFloat - f64.const 0.25 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 152 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3168 - call $~lib/string/parseFloat - f64.const 1e3 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 153 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3200 - call $~lib/string/parseFloat - f64.const 1e-10 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 154 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3232 - call $~lib/string/parseFloat - f64.const 1e-30 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 155 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3264 - call $~lib/string/parseFloat - f64.const 1e-323 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3296 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3328 - call $~lib/string/parseFloat - f64.const 1.e+308 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 158 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3360 - call $~lib/string/parseFloat - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 159 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 160 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3392 - call $~lib/string/parseFloat - f64.const 0.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 163 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3424 - call $~lib/string/parseFloat - f64.const 1e-10 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 164 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3472 - call $~lib/string/parseFloat - f64.const 10 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 165 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3504 - call $~lib/string/parseFloat - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 166 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3536 - call $~lib/string/parseFloat - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 167 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3568 - call $~lib/string/parseFloat - f64.const 10 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 168 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3616 - call $~lib/string/parseFloat - f64.const 123456789 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 169 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3664 - call $~lib/string/parseFloat - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 170 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3712 - call $~lib/string/parseFloat - f64.const 1e-60 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 172 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3744 - call $~lib/string/parseFloat - f64.const 1.e+60 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 173 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3776 - call $~lib/string/parseFloat - f64.const -0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 176 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3808 - call $~lib/string/parseFloat - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3840 - call $~lib/string/parseFloat - f64.const -1.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 178 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3888 - call $~lib/string/parseFloat - f64.const 10 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 179 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3936 - call $~lib/string/parseFloat - f64.const 10 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 180 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3984 - call $~lib/string/parseFloat - f64.const 0.022 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 181 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4016 - call $~lib/string/parseFloat - f64.const 11 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 182 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1840 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 183 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4048 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 184 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4080 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 185 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4112 - call $~lib/string/parseFloat - f64.const 1.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 186 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4144 - call $~lib/string/parseFloat - f64.const -1.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 187 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4176 - call $~lib/string/parseFloat - f64.const -1.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 188 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4208 - call $~lib/string/parseFloat - f64.const -1.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 189 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4240 - call $~lib/string/parseFloat - f64.const -1.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 190 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4272 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 191 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4304 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 192 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4336 - call $~lib/string/parseFloat - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4368 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 194 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4400 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 195 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4432 - call $~lib/string/parseFloat - f64.const 10 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 196 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4464 - call $~lib/string/parseFloat - f64.const 10 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 197 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4496 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 198 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4528 - call $~lib/string/parseFloat - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 199 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4560 - call $~lib/string/parseFloat - f64.const 0.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 200 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4592 - call $~lib/string/parseFloat - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 201 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4624 - call $~lib/string/parseFloat - f64.const 10 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 202 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4656 - call $~lib/string/parseFloat - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 203 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4688 - call $~lib/string/parseFloat - f64.const 0.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 204 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4720 - call $~lib/string/parseFloat - f64.const 0.01 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 205 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4752 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 206 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4784 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 207 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4816 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 208 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4848 - call $~lib/string/parseFloat - f64.const 0.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4880 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 210 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4912 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 211 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4944 - call $~lib/string/parseFloat - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 212 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4976 - call $~lib/string/parseFloat - f64.const 0.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 213 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5008 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 214 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5040 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 215 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5072 - call $~lib/string/parseFloat - f64.const -0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 216 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5104 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 217 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2000 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 218 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2464 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 219 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2432 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 220 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5136 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 221 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5168 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 222 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5200 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 223 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5232 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 224 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5264 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 225 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5296 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 226 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5328 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 227 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5360 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 228 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5392 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 229 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5424 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 230 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5456 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 231 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5488 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 232 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5520 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 233 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5552 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 234 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5584 - call $~lib/string/parseFloat - f64.const 1e22 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 235 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5616 - call $~lib/string/parseFloat - f64.const 1e-22 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 236 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5648 - call $~lib/string/parseFloat - f64.const 1.e+23 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 237 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5680 - call $~lib/string/parseFloat - f64.const 1e-23 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 238 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5712 - call $~lib/string/parseFloat - f64.const 1.e+37 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 239 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5744 - call $~lib/string/parseFloat - f64.const 1e-37 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 240 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5776 - call $~lib/string/parseFloat - f64.const 1.e+38 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 241 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5808 - call $~lib/string/parseFloat - f64.const 1e-38 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 242 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5840 - call $~lib/string/parseFloat - global.get $~lib/builtins/f64.EPSILON - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 243 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5904 - call $~lib/string/parseFloat - global.get $~lib/builtins/f64.MAX_VALUE - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 244 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 5968 - call $~lib/string/parseFloat - global.get $~lib/builtins/f64.MIN_VALUE - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 245 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6000 - call $~lib/string/parseFloat - f64.const 1.e+308 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 246 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6048 - call $~lib/string/parseFloat - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 247 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6192 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 248 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6224 - call $~lib/string/parseFloat - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 249 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6256 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 250 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6288 - call $~lib/string/parseFloat - f64.const inf - f64.neg - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 251 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6320 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 252 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6368 - call $~lib/string/parseFloat - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 253 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6416 - call $~lib/string/parseFloat - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 254 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6448 - call $~lib/string/parseFloat - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 255 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6496 - call $~lib/string/parseFloat - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 256 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6544 - call $~lib/string/parseFloat - f64.const inf - f64.neg - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 257 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6592 - call $~lib/string/parseFloat - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 258 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6640 - call $~lib/string/parseFloat - f64.const inf - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 259 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6688 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 260 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6720 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 261 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6752 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 262 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6784 - call $~lib/string/parseFloat - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 266 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 6976 - call $~lib/string/parseFloat - global.get $std/string/Ox1p_1073 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 279 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7168 - call $~lib/string/parseFloat - global.get $std/string/Ox1_0000000000001p_1022 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 283 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7360 - i32.const 7520 - call $~lib/string/String.__concat - local.tee $34 - i32.const 7680 - call $~lib/string/String.__concat - local.tee $35 - i32.const 7840 - call $~lib/string/String.__concat - local.tee $36 - i32.const 8000 - call $~lib/string/String.__concat - local.tee $37 - call $~lib/string/parseFloat - global.get $~lib/builtins/f64.MAX_VALUE - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 286 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8160 - call $~lib/string/parseFloat - f64.const 9.753531888799502e-104 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 304 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8272 - call $~lib/string/parseFloat - f64.const 0.5961860348131807 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 305 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8384 - call $~lib/string/parseFloat - f64.const 0.18150131692180388 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 306 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8496 - call $~lib/string/parseFloat - f64.const 0.42070823575344535 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 307 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8608 - call $~lib/string/parseFloat - f64.const 0.6654686306516261 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 308 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8720 - call $~lib/string/parseFloat - f64.const 0.6101852922970868 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 309 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8832 - call $~lib/string/parseFloat - f64.const 0.7696695208236968 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 310 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8944 - call $~lib/string/parseFloat - f64.const 0.25050653222286823 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 311 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9056 - call $~lib/string/parseFloat - f64.const 0.2740037230228005 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 312 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9168 - call $~lib/string/parseFloat - f64.const 0.20723093500497428 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 313 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9280 - call $~lib/string/parseFloat - f64.const 7.900280238081605 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 314 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9392 - call $~lib/string/parseFloat - f64.const 98.22860653737297 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 315 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9504 - call $~lib/string/parseFloat - f64.const 746.894972319037 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 316 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9616 - call $~lib/string/parseFloat - f64.const 1630.2683202827284 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 317 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9728 - call $~lib/string/parseFloat - f64.const 46371.68629719171 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 318 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9840 - call $~lib/string/parseFloat - f64.const 653780.5944497711 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 319 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 9952 - call $~lib/string/parseFloat - f64.const 234632.43565024371 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 320 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10064 - call $~lib/string/parseFloat - f64.const 97094817.16420048 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 321 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10176 - call $~lib/string/parseFloat - f64.const 499690852.20518744 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 322 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10288 - call $~lib/string/parseFloat - f64.const 7925201200557245595648 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 323 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10400 - call $~lib/string/parseFloat - f64.const 6096564585983177528398588e5 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 324 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10512 - call $~lib/string/parseFloat - f64.const 4800416117477028695992383e42 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 325 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10624 - call $~lib/string/parseFloat - f64.const 8524829079817968137287277e80 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 326 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10736 - call $~lib/string/parseFloat - f64.const 3271239291709782092398754e243 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 327 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10848 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 330 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10880 - call $~lib/string/parseFloat - f64.const 0.1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 331 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 10912 - call $~lib/string/String.__concat - local.tee $38 - call $~lib/rt/pure/__retain - local.set $39 - local.get $39 - i32.const 10944 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 335 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $39 - i32.const 320 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 336 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - i32.const 272 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 338 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - global.get $std/string/nullStr - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 339 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/nullStr - i32.const 272 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 340 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 10912 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 341 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 342 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10976 - i32.const 11008 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 343 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10976 - i32.const 10976 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 344 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11040 - i32.const 11072 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 345 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11104 - i32.const 11136 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 346 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11168 - i32.const 11168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 347 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11168 - i32.const 11200 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 348 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11232 - i32.const 11280 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 349 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10912 - i32.const 320 - call $~lib/string/String.__gt - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 351 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11328 - i32.const 320 - call $~lib/string/String.__gt - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 352 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11328 - i32.const 11360 - call $~lib/string/String.__gte - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 353 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11328 - i32.const 10944 - call $~lib/string/String.__gt - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 354 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11328 - i32.const 10944 - call $~lib/string/String.__lt - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 355 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10912 - global.get $std/string/nullStr - call $~lib/string/String.__lt - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 357 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/nullStr - i32.const 10912 - call $~lib/string/String.__lt - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 358 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 272 - call $~lib/string/String.__gt - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 360 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 800 - call $~lib/string/String.__lt - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 361 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 272 - call $~lib/string/String.__gte - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 362 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 800 - call $~lib/string/String.__lte - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 363 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 272 - call $~lib/string/String.__lt - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 364 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 800 - call $~lib/string/String.__gt - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 365 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 272 - call $~lib/string/String.__lt - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 366 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 272 - call $~lib/string/String.__gt - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 367 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 272 - call $~lib/string/String.__gte - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 368 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 272 - call $~lib/string/String.__lte - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 369 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 65377 - call $~lib/string/String.fromCodePoint - local.set $39 - i32.const 55296 - call $~lib/string/String.fromCodePoint - local.tee $38 - i32.const 56322 - call $~lib/string/String.fromCodePoint - local.tee $40 - call $~lib/string/String.__concat - local.tee $41 - call $~lib/rt/pure/__retain - local.set $42 - local.get $39 - local.get $42 - call $~lib/string/String.__gt - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 374 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $39 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - i32.const 864 - call $~lib/string/String#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 377 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 100 - call $~lib/string/String#repeat - local.tee $42 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 379 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 0 - call $~lib/string/String#repeat - local.tee $41 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 380 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 1 - call $~lib/string/String#repeat - local.tee $40 - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 381 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 2 - call $~lib/string/String#repeat - local.tee $38 - i32.const 11360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 382 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 3 - call $~lib/string/String#repeat - local.tee $39 - i32.const 11440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 383 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10944 - i32.const 4 - call $~lib/string/String#repeat - local.tee $43 - i32.const 11472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 384 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 5 - call $~lib/string/String#repeat - local.tee $44 - i32.const 11504 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 385 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 6 - call $~lib/string/String#repeat - local.tee $45 - i32.const 11536 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 386 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 320 - i32.const 7 - call $~lib/string/String#repeat - local.tee $46 - i32.const 11568 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 387 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 272 - i32.const 272 - call $~lib/string/String#replace - local.tee $47 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 389 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 272 - i32.const 2464 - call $~lib/string/String#replace - local.tee $48 - i32.const 2464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 390 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2464 - i32.const 2464 - i32.const 272 - call $~lib/string/String#replace - local.tee $49 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 391 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2464 - i32.const 272 - i32.const 272 - call $~lib/string/String#replace - local.tee $50 - i32.const 2464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 392 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 2432 - i32.const 2464 - call $~lib/string/String#replace - local.tee $51 - i32.const 800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 393 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 800 - i32.const 2464 - call $~lib/string/String#replace - local.tee $52 - i32.const 2464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 394 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 1248 - i32.const 2464 - call $~lib/string/String#replace - local.tee $53 - i32.const 800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 395 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 10944 - i32.const 10944 - call $~lib/string/String#replace - local.tee $54 - i32.const 800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 396 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11600 - i32.const 2432 - i32.const 2464 - call $~lib/string/String#replace - local.tee $55 - i32.const 11632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 397 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 272 - i32.const 2464 - call $~lib/string/String#replace - local.tee $56 - i32.const 11664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 398 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11696 - i32.const 11728 - i32.const 2464 - call $~lib/string/String#replace - local.tee $57 - i32.const 11664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 399 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 11760 - i32.const 11792 - call $~lib/string/String#replace - local.tee $58 - i32.const 11824 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 400 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 11760 - i32.const 272 - call $~lib/string/String#replace - local.tee $59 - i32.const 10944 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 401 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 272 - i32.const 800 - call $~lib/string/String#replaceAll - local.tee $60 - i32.const 800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 403 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 2432 - i32.const 2464 - call $~lib/string/String#replaceAll - local.tee $61 - i32.const 800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 404 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 992 - i32.const 800 - i32.const 2464 - call $~lib/string/String#replaceAll - local.tee $62 - i32.const 11792 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 406 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11856 - i32.const 800 - i32.const 2464 - call $~lib/string/String#replaceAll - local.tee $63 - i32.const 11904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 407 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 992 - i32.const 10944 - i32.const 10944 - call $~lib/string/String#replaceAll - local.tee $64 - i32.const 992 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 408 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11936 - i32.const 320 - i32.const 11904 - call $~lib/string/String#replaceAll - local.tee $65 - i32.const 11968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 409 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 992 - i32.const 10944 - i32.const 11792 - call $~lib/string/String#replaceAll - local.tee $66 - i32.const 12016 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 410 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12048 - i32.const 12080 - i32.const 11792 - call $~lib/string/String#replaceAll - local.tee $67 - i32.const 12112 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 411 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 1248 - i32.const 2464 - call $~lib/string/String#replaceAll - local.tee $68 - i32.const 800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 412 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1248 - i32.const 12144 - i32.const 11792 - call $~lib/string/String#replaceAll - local.tee $69 - i32.const 1248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 413 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 12176 - i32.const 2464 - call $~lib/string/String#replaceAll - local.tee $70 - i32.const 12208 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 414 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10944 - i32.const 10944 - i32.const 2464 - call $~lib/string/String#replaceAll - local.tee $71 - i32.const 2464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 415 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11600 - i32.const 2432 - i32.const 2464 - call $~lib/string/String#replaceAll - local.tee $72 - i32.const 12240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 416 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 272 - i32.const 272 - call $~lib/string/String#replaceAll - local.tee $73 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 418 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 272 - i32.const 2464 - call $~lib/string/String#replaceAll - local.tee $74 - i32.const 2464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 419 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2464 - i32.const 2464 - i32.const 272 - call $~lib/string/String#replaceAll - local.tee $75 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 420 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2464 - i32.const 272 - i32.const 272 - call $~lib/string/String#replaceAll - local.tee $76 - i32.const 2464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 421 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 800 - i32.const 2432 - call $~lib/string/String#replaceAll - local.tee $77 - i32.const 2432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 422 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 1216 - i32.const 2432 - call $~lib/string/String#replaceAll - local.tee $78 - i32.const 800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 423 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 272 - i32.const 2464 - call $~lib/string/String#replaceAll - local.tee $79 - i32.const 12272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 424 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 272 - i32.const 272 - call $~lib/string/String#replaceAll - local.tee $80 - i32.const 800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 425 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12304 - local.set $81 - global.get $std/string/str - call $~lib/rt/pure/__release - local.get $81 - global.set $std/string/str - global.get $std/string/str - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#slice - local.tee $81 - i32.const 12304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 429 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -1 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#slice - local.tee $82 - i32.const 12352 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 430 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -5 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#slice - local.tee $83 - i32.const 12384 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 431 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2 - i32.const 7 - call $~lib/string/String#slice - local.tee $84 - i32.const 12416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 432 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -11 - i32.const -6 - call $~lib/string/String#slice - local.tee $85 - i32.const 12448 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 433 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const 3 - call $~lib/string/String#slice - local.tee $86 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 434 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const -1 - call $~lib/string/String#slice - local.tee $87 - i32.const 12480 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 435 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substr - local.tee $88 - i32.const 12304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 437 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -1 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substr - local.tee $89 - i32.const 12352 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 438 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -5 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substr - local.tee $90 - i32.const 12384 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 439 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2 - i32.const 7 - call $~lib/string/String#substr - local.tee $91 - i32.const 12528 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 440 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -11 - i32.const -6 - call $~lib/string/String#substr - local.tee $92 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 441 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const 3 - call $~lib/string/String#substr - local.tee $93 - i32.const 12560 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 442 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const -1 - call $~lib/string/String#substr - local.tee $94 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 443 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const 100 - call $~lib/string/String#substr - local.tee $95 - i32.const 12304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 444 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const 4 - call $~lib/string/String#substr - local.tee $96 - i32.const 12592 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 445 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const -3 - call $~lib/string/String#substr - local.tee $97 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 446 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substring - local.tee $98 - i32.const 12304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 448 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -1 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substring - local.tee $99 - i32.const 12304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 449 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -5 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substring - local.tee $100 - i32.const 12304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 450 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 2 - i32.const 7 - call $~lib/string/String#substring - local.tee $101 - i32.const 12416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 451 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -11 - i32.const -6 - call $~lib/string/String#substring - local.tee $102 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 452 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const 3 - call $~lib/string/String#substring - local.tee $103 - i32.const 12624 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 453 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const -1 - call $~lib/string/String#substring - local.tee $104 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 454 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const 100 - call $~lib/string/String#substring - local.tee $105 - i32.const 12304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 455 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const 4 - call $~lib/string/String#substring - local.tee $106 - i32.const 272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 456 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 4 - i32.const -3 - call $~lib/string/String#substring - local.tee $107 - i32.const 1248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 457 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $108 - i32.const 272 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $109 - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 272 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 272 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $110 - local.get $108 - call $~lib/rt/pure/__release - local.get $110 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 465 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 1056 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $109 - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 272 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 467 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 12880 - i32.const 5264 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $110 - local.get $108 - call $~lib/rt/pure/__release - local.get $110 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 12880 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 469 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 12880 - i32.const 1056 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $109 - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 320 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 10912 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 11760 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 471 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 12912 - i32.const 12944 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $110 - local.get $108 - call $~lib/rt/pure/__release - local.get $110 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 320 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 10912 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 11760 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 473 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 12976 - i32.const 1056 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $109 - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 4 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 320 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 10912 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 272 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 11760 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 475 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 13008 - i32.const 1056 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $110 - local.get $108 - call $~lib/rt/pure/__release - local.get $110 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 4 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 272 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 320 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 10912 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 11760 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 477 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 13040 - i32.const 1056 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $109 - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 4 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 320 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 10912 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 11760 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 272 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 479 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 272 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $110 - local.get $108 - call $~lib/rt/pure/__release - local.get $110 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 320 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 10912 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 11760 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 481 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 272 - i32.const 0 - call $~lib/string/String#split - local.set $109 - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 483 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 272 - i32.const 1 - call $~lib/string/String#split - local.set $110 - local.get $108 - call $~lib/rt/pure/__release - local.get $110 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 320 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 485 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 12880 - i32.const 1056 - i32.const 1 - call $~lib/string/String#split - local.set $109 - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 320 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 487 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 272 - i32.const 4 - call $~lib/string/String#split - local.set $110 - local.get $108 - call $~lib/rt/pure/__release - local.get $110 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 320 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 10912 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 11760 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 489 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 800 - i32.const 272 - i32.const -1 - call $~lib/string/String#split - local.set $109 - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 320 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 10912 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $109 - i32.const 11760 - call $~lib/string/String.__eq - local.set $110 - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 491 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 12880 - i32.const 1056 - i32.const -1 - call $~lib/string/String#split - local.set $110 - local.get $108 - call $~lib/rt/pure/__release - local.get $110 - local.set $108 - local.get $108 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $108 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 320 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 10912 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $108 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $110 - i32.const 11760 - call $~lib/string/String.__eq - local.set $109 - local.get $110 - call $~lib/rt/pure/__release - local.get $109 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 493 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $108 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $108 - i32.const 1424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 498 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $110 - i32.const 1488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 499 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $109 - i32.const 14800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 500 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $111 - i32.const 14832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 501 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 123 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $112 - i32.const 864 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 502 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1000 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $113 - i32.const 14864 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 503 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1234 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $114 - i32.const 14896 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 504 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12345 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $115 - i32.const 14928 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 505 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 123456 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $116 - i32.const 14960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 506 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1111111 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $117 - i32.const 14992 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 507 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1234567 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $118 - i32.const 15024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 508 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12345678 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $119 - i32.const 15056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 509 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 123456789 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $120 - i32.const 15088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 510 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483646 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $121 - i32.const 15136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 511 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483647 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $122 - i32.const 15184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 512 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $123 - i32.const 15232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 513 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $124 - i32.const 15280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 514 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $125 - i32.const 1424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 516 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1000 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $126 - i32.const 15312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 517 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483647 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $127 - i32.const 15184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 518 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $128 - i32.const 15344 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 519 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/u32.MAX_VALUE - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $129 - i32.const 15392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 520 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $130 - i32.const 1424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 524 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $131 - i32.const 1488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 525 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $132 - i32.const 14800 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 526 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $133 - i32.const 11760 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 527 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 123 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $134 - i32.const 15440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 528 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1234 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $135 - i32.const 15472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 529 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12345 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $136 - i32.const 15504 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 530 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 123456 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $137 - i32.const 15536 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 531 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1111111 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $138 - i32.const 15568 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 532 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1234567 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $139 - i32.const 15600 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 533 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12345678 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $140 - i32.const 15632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 534 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 123456789 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $141 - i32.const 15664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 535 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483646 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $142 - i32.const 15696 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 536 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483647 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $143 - i32.const 15728 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 537 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $144 - i32.const 15760 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 538 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 16 - call $~lib/util/number/utoa32 - local.tee $145 - i32.const 15792 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 539 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $146 - i32.const 1424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 541 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -4096 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $147 - i32.const 14864 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 542 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2147483647 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $148 - i32.const 15728 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 543 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483647 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $149 - i32.const 15824 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 544 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -268435455 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $150 - i32.const 15872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 545 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $151 - i32.const 15904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 546 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $152 - i32.const 15904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 547 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $153 - i32.const 1424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 551 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $154 - i32.const 1488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 552 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $155 - i32.const 15952 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 553 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 7 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $156 - i32.const 15984 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 554 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $157 - i32.const 16016 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 555 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 29 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $158 - i32.const 16048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 556 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 59 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $159 - i32.const 16080 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 557 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4095 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $160 - i32.const 16112 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 558 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 33554431 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $161 - i32.const 16160 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 559 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -12 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $162 - i32.const 16240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 560 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -4 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $163 - i32.const 16320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 561 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $164 - i32.const 16400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 562 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $165 - i32.const 16480 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 563 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2047 - i32.const 2 - call $~lib/util/number/itoa32 - local.tee $166 - i32.const 16560 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 565 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 3 - call $~lib/util/number/utoa32 - local.tee $167 - i32.const 16608 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 569 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 4 - call $~lib/util/number/utoa32 - local.tee $168 - i32.const 16672 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 570 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 5 - call $~lib/util/number/utoa32 - local.tee $169 - i32.const 16720 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 571 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 8 - call $~lib/util/number/utoa32 - local.tee $170 - i32.const 16768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 572 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 11 - call $~lib/util/number/utoa32 - local.tee $171 - i32.const 16816 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 573 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 15 - call $~lib/util/number/utoa32 - local.tee $172 - i32.const 16864 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 574 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 17 - call $~lib/util/number/utoa32 - local.tee $173 - i32.const 16912 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 575 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 21 - call $~lib/util/number/utoa32 - local.tee $174 - i32.const 16944 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 576 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 27 - call $~lib/util/number/utoa32 - local.tee $175 - i32.const 16976 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 577 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 32 - call $~lib/util/number/utoa32 - local.tee $176 - i32.const 17008 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 578 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - i32.const 36 - call $~lib/util/number/utoa32 - local.tee $177 - i32.const 17040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 579 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $178 - i32.const 1424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 583 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 12 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $179 - i32.const 14832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 584 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 123 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $180 - i32.const 864 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 585 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1234 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $181 - i32.const 14896 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 586 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 12345 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $182 - i32.const 14928 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 587 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 123456 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $183 - i32.const 14960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 588 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1234567 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $184 - i32.const 15024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 589 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 99999999 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $185 - i32.const 17072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 590 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 100000000 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $186 - i32.const 17104 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 591 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967295 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $187 - i32.const 15392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 592 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967297 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $188 - i32.const 17152 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 593 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 68719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $189 - i32.const 17200 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 594 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 868719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $190 - i32.const 17248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 595 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 8687194767350 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $191 - i32.const 17296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 596 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 86871947673501 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $192 - i32.const 17344 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 597 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $193 - i32.const 17392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 598 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $194 - i32.const 17440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 599 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 19999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $195 - i32.const 17488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 600 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 129999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $196 - i32.const 17552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 601 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1239999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $197 - i32.const 17616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 602 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/u64.MAX_VALUE - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $198 - i32.const 17680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 603 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $199 - i32.const 1424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 605 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1234 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $200 - i32.const 17744 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 606 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967295 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $201 - i32.const 15392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 607 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967297 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $202 - i32.const 17152 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 608 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -4294967295 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $203 - i32.const 17776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 609 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 68719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $204 - i32.const 17200 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 610 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -68719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $205 - i32.const 17824 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 611 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -868719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $206 - i32.const 17872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 612 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -999868719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $207 - i32.const 17920 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 613 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -19999868719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $208 - i32.const 17968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 614 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/i64.MAX_VALUE - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $209 - i32.const 18032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 615 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/i64.MIN_VALUE - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $210 - i32.const 18096 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 616 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $211 - i32.const 1424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 620 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $212 - i32.const 1488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 621 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 12 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $213 - i32.const 11760 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 622 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1234 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $214 - i32.const 15472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 623 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1111111 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $215 - i32.const 15568 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 624 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 8589934591 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $216 - i32.const 18160 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 625 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 5942249508321 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $217 - i32.const 18208 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 626 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 76310993685985 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $218 - i32.const 18256 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 627 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 920735923817967 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $219 - i32.const 18304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 628 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9927935178558959 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $220 - i32.const 18352 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 629 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 81985529216486895 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $221 - i32.const 18400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 630 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1311768467463790320 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $222 - i32.const 18448 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 631 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 9223372036854775807 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $223 - i32.const 18496 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 632 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $224 - i32.const 18544 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 633 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9223372036854775807 - i32.const 16 - call $~lib/util/number/itoa64 - local.tee $225 - i32.const 18592 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 635 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9223372036854775808 - i32.const 16 - call $~lib/util/number/itoa64 - local.tee $226 - i32.const 18656 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 636 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -9223372036854775808 - i32.const 16 - call $~lib/util/number/itoa64 - local.tee $227 - i32.const 18656 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 637 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $228 - i32.const 1424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 641 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $229 - i32.const 1488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 642 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 7 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $230 - i32.const 15984 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 643 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 14 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $231 - i32.const 16016 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 644 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 59 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $232 - i32.const 16080 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 645 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4095 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $233 - i32.const 16112 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 646 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 4294967295 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $234 - i32.const 16480 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 647 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 562949953421311 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $235 - i32.const 18720 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 648 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $236 - i32.const 18848 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 649 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -8589934591 - i32.const 2 - call $~lib/util/number/itoa64 - local.tee $237 - i32.const 18992 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 651 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 3 - call $~lib/util/number/utoa64 - local.tee $238 - i32.const 19088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 655 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 4 - call $~lib/util/number/utoa64 - local.tee $239 - i32.const 19200 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 656 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 5 - call $~lib/util/number/utoa64 - local.tee $240 - i32.const 19280 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 657 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 8 - call $~lib/util/number/utoa64 - local.tee $241 - i32.const 19360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 658 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 11 - call $~lib/util/number/utoa64 - local.tee $242 - i32.const 19424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 659 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 15 - call $~lib/util/number/utoa64 - local.tee $243 - i32.const 19488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 660 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 17 - call $~lib/util/number/utoa64 - local.tee $244 - i32.const 19552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 661 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 21 - call $~lib/util/number/utoa64 - local.tee $245 - i32.const 19600 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 662 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 27 - call $~lib/util/number/utoa64 - local.tee $246 - i32.const 19648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 663 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 32 - call $~lib/util/number/utoa64 - local.tee $247 - i32.const 19696 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 664 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const -1 - i32.const 36 - call $~lib/util/number/utoa64 - local.tee $248 - i32.const 19744 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 665 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - call $~lib/util/number/dtoa - local.tee $249 - i32.const 19792 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 668 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - call $~lib/util/number/dtoa - local.tee $250 - i32.const 19792 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 669 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const nan:0x8000000000000 - call $~lib/util/number/dtoa - local.tee $251 - i32.const 5328 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 670 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - call $~lib/util/number/dtoa - local.tee $252 - i32.const 19824 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 671 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - f64.neg - call $~lib/util/number/dtoa - local.tee $253 - i32.const 6544 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 672 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.EPSILON - call $~lib/util/number/dtoa - local.tee $254 - i32.const 5840 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 673 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.EPSILON - f64.neg - call $~lib/util/number/dtoa - local.tee $255 - i32.const 20768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 674 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MAX_VALUE - call $~lib/util/number/dtoa - local.tee $256 - i32.const 5904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 675 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/builtins/f64.MAX_VALUE - f64.neg - call $~lib/util/number/dtoa - local.tee $257 - i32.const 20832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 676 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4185580496821356722454785e274 - call $~lib/util/number/dtoa - local.tee $258 - i32.const 20896 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 677 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.2250738585072014e-308 - call $~lib/util/number/dtoa - local.tee $259 - i32.const 20960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 678 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4.940656e-318 - call $~lib/util/number/dtoa - local.tee $260 - i32.const 21024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 681 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9060801153433600 - call $~lib/util/number/dtoa - local.tee $261 - i32.const 21072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 682 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4708356024711512064 - call $~lib/util/number/dtoa - local.tee $262 - i32.const 21136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 683 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 9409340012568248320 - call $~lib/util/number/dtoa - local.tee $263 - i32.const 21200 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 684 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 5e-324 - call $~lib/util/number/dtoa - local.tee $264 - i32.const 5968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 685 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - call $~lib/util/number/dtoa - local.tee $265 - i32.const 21264 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 691 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.1 - call $~lib/util/number/dtoa - local.tee $266 - i32.const 3104 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 692 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1 - call $~lib/util/number/dtoa - local.tee $267 - i32.const 21296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 693 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -0.1 - call $~lib/util/number/dtoa - local.tee $268 - i32.const 21328 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 694 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e6 - call $~lib/util/number/dtoa - local.tee $269 - i32.const 21360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 696 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-06 - call $~lib/util/number/dtoa - local.tee $270 - i32.const 21408 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 697 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e6 - call $~lib/util/number/dtoa - local.tee $271 - i32.const 21440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 698 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e-06 - call $~lib/util/number/dtoa - local.tee $272 - i32.const 21488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 699 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e7 - call $~lib/util/number/dtoa - local.tee $273 - i32.const 21536 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 700 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-07 - call $~lib/util/number/dtoa - local.tee $274 - i32.const 21584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 701 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.e+308 - call $~lib/util/number/dtoa - local.tee $275 - i32.const 3328 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 703 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1.e+308 - call $~lib/util/number/dtoa - local.tee $276 - i32.const 21616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 704 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const inf - call $~lib/util/number/dtoa - local.tee $277 - i32.const 19824 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 705 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -inf - call $~lib/util/number/dtoa - local.tee $278 - i32.const 6544 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 706 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-308 - call $~lib/util/number/dtoa - local.tee $279 - i32.const 21648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 707 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e-308 - call $~lib/util/number/dtoa - local.tee $280 - i32.const 21680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 708 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1e-323 - call $~lib/util/number/dtoa - local.tee $281 - i32.const 21712 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 709 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const -1e-323 - call $~lib/util/number/dtoa - local.tee $282 - i32.const 21744 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 710 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - call $~lib/util/number/dtoa - local.tee $283 - i32.const 19792 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 711 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 4294967272 - call $~lib/util/number/dtoa - local.tee $284 - i32.const 21776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 713 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.2312145673456234e-08 - call $~lib/util/number/dtoa - local.tee $285 - i32.const 21824 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 714 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 555555555.5555556 - call $~lib/util/number/dtoa - local.tee $286 - i32.const 21888 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 716 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.9999999999999999 - call $~lib/util/number/dtoa - local.tee $287 - i32.const 21952 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 717 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - call $~lib/util/number/dtoa - local.tee $288 - i32.const 21264 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 718 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 12.34 - call $~lib/util/number/dtoa - local.tee $289 - i32.const 22016 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 719 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - f64.const 3 - f64.div - call $~lib/util/number/dtoa - local.tee $290 - i32.const 22048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 721 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1234e17 - call $~lib/util/number/dtoa - local.tee $291 - i32.const 22112 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 722 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1234e18 - call $~lib/util/number/dtoa - local.tee $292 - i32.const 22176 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 723 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 2.71828 - call $~lib/util/number/dtoa - local.tee $293 - i32.const 22224 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 724 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.0271828 - call $~lib/util/number/dtoa - local.tee $294 - i32.const 22256 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 725 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 271.828 - call $~lib/util/number/dtoa - local.tee $295 - i32.const 22304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 726 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1e+128 - call $~lib/util/number/dtoa - local.tee $296 - i32.const 22336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 727 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1.1e-64 - call $~lib/util/number/dtoa - local.tee $297 - i32.const 22368 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 728 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 0.000035689 - call $~lib/util/number/dtoa - local.tee $298 - i32.const 22400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 729 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $55 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $59 - call $~lib/rt/pure/__release - local.get $60 - call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - local.get $64 - call $~lib/rt/pure/__release - local.get $65 - call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $67 - call $~lib/rt/pure/__release - local.get $68 - call $~lib/rt/pure/__release - local.get $69 - call $~lib/rt/pure/__release - local.get $70 - call $~lib/rt/pure/__release - local.get $71 - call $~lib/rt/pure/__release - local.get $72 - call $~lib/rt/pure/__release - local.get $73 - call $~lib/rt/pure/__release - local.get $74 - call $~lib/rt/pure/__release - local.get $75 - call $~lib/rt/pure/__release - local.get $76 - call $~lib/rt/pure/__release - local.get $77 - call $~lib/rt/pure/__release - local.get $78 - call $~lib/rt/pure/__release - local.get $79 - call $~lib/rt/pure/__release - local.get $80 - call $~lib/rt/pure/__release - local.get $81 - call $~lib/rt/pure/__release - local.get $82 - call $~lib/rt/pure/__release - local.get $83 - call $~lib/rt/pure/__release - local.get $84 - call $~lib/rt/pure/__release - local.get $85 - call $~lib/rt/pure/__release - local.get $86 - call $~lib/rt/pure/__release - local.get $87 - call $~lib/rt/pure/__release - local.get $88 - call $~lib/rt/pure/__release - local.get $89 - call $~lib/rt/pure/__release - local.get $90 - call $~lib/rt/pure/__release - local.get $91 - call $~lib/rt/pure/__release - local.get $92 - call $~lib/rt/pure/__release - local.get $93 - call $~lib/rt/pure/__release - local.get $94 - call $~lib/rt/pure/__release - local.get $95 - call $~lib/rt/pure/__release - local.get $96 - call $~lib/rt/pure/__release - local.get $97 - call $~lib/rt/pure/__release - local.get $98 - call $~lib/rt/pure/__release - local.get $99 - call $~lib/rt/pure/__release - local.get $100 - call $~lib/rt/pure/__release - local.get $101 - call $~lib/rt/pure/__release - local.get $102 - call $~lib/rt/pure/__release - local.get $103 - call $~lib/rt/pure/__release - local.get $104 - call $~lib/rt/pure/__release - local.get $105 - call $~lib/rt/pure/__release - local.get $106 - call $~lib/rt/pure/__release - local.get $107 - call $~lib/rt/pure/__release - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release - local.get $112 - call $~lib/rt/pure/__release - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - call $~lib/rt/pure/__release - local.get $115 - call $~lib/rt/pure/__release - local.get $116 - call $~lib/rt/pure/__release - local.get $117 - call $~lib/rt/pure/__release - local.get $118 - call $~lib/rt/pure/__release - local.get $119 - call $~lib/rt/pure/__release - local.get $120 - call $~lib/rt/pure/__release - local.get $121 - call $~lib/rt/pure/__release - local.get $122 - call $~lib/rt/pure/__release - local.get $123 - call $~lib/rt/pure/__release - local.get $124 - call $~lib/rt/pure/__release - local.get $125 - call $~lib/rt/pure/__release - local.get $126 - call $~lib/rt/pure/__release - local.get $127 - call $~lib/rt/pure/__release - local.get $128 - call $~lib/rt/pure/__release - local.get $129 - call $~lib/rt/pure/__release - local.get $130 - call $~lib/rt/pure/__release - local.get $131 - call $~lib/rt/pure/__release - local.get $132 - call $~lib/rt/pure/__release - local.get $133 - call $~lib/rt/pure/__release - local.get $134 - call $~lib/rt/pure/__release - local.get $135 - call $~lib/rt/pure/__release - local.get $136 - call $~lib/rt/pure/__release - local.get $137 - call $~lib/rt/pure/__release - local.get $138 - call $~lib/rt/pure/__release - local.get $139 - call $~lib/rt/pure/__release - local.get $140 - call $~lib/rt/pure/__release - local.get $141 - call $~lib/rt/pure/__release - local.get $142 - call $~lib/rt/pure/__release - local.get $143 - call $~lib/rt/pure/__release - local.get $144 - call $~lib/rt/pure/__release - local.get $145 - call $~lib/rt/pure/__release - local.get $146 - call $~lib/rt/pure/__release - local.get $147 - call $~lib/rt/pure/__release - local.get $148 - call $~lib/rt/pure/__release - local.get $149 - call $~lib/rt/pure/__release - local.get $150 - call $~lib/rt/pure/__release - local.get $151 - call $~lib/rt/pure/__release - local.get $152 - call $~lib/rt/pure/__release - local.get $153 - call $~lib/rt/pure/__release - local.get $154 - call $~lib/rt/pure/__release - local.get $155 - call $~lib/rt/pure/__release - local.get $156 - call $~lib/rt/pure/__release - local.get $157 - call $~lib/rt/pure/__release - local.get $158 - call $~lib/rt/pure/__release - local.get $159 - call $~lib/rt/pure/__release - local.get $160 - call $~lib/rt/pure/__release - local.get $161 - call $~lib/rt/pure/__release - local.get $162 - call $~lib/rt/pure/__release - local.get $163 - call $~lib/rt/pure/__release - local.get $164 - call $~lib/rt/pure/__release - local.get $165 - call $~lib/rt/pure/__release - local.get $166 - call $~lib/rt/pure/__release - local.get $167 - call $~lib/rt/pure/__release - local.get $168 - call $~lib/rt/pure/__release - local.get $169 - call $~lib/rt/pure/__release - local.get $170 - call $~lib/rt/pure/__release - local.get $171 - call $~lib/rt/pure/__release - local.get $172 - call $~lib/rt/pure/__release - local.get $173 - call $~lib/rt/pure/__release - local.get $174 - call $~lib/rt/pure/__release - local.get $175 - call $~lib/rt/pure/__release - local.get $176 - call $~lib/rt/pure/__release - local.get $177 - call $~lib/rt/pure/__release - local.get $178 - call $~lib/rt/pure/__release - local.get $179 - call $~lib/rt/pure/__release - local.get $180 - call $~lib/rt/pure/__release - local.get $181 - call $~lib/rt/pure/__release - local.get $182 - call $~lib/rt/pure/__release - local.get $183 - call $~lib/rt/pure/__release - local.get $184 - call $~lib/rt/pure/__release - local.get $185 - call $~lib/rt/pure/__release - local.get $186 - call $~lib/rt/pure/__release - local.get $187 - call $~lib/rt/pure/__release - local.get $188 - call $~lib/rt/pure/__release - local.get $189 - call $~lib/rt/pure/__release - local.get $190 - call $~lib/rt/pure/__release - local.get $191 - call $~lib/rt/pure/__release - local.get $192 - call $~lib/rt/pure/__release - local.get $193 - call $~lib/rt/pure/__release - local.get $194 - call $~lib/rt/pure/__release - local.get $195 - call $~lib/rt/pure/__release - local.get $196 - call $~lib/rt/pure/__release - local.get $197 - call $~lib/rt/pure/__release - local.get $198 - call $~lib/rt/pure/__release - local.get $199 - call $~lib/rt/pure/__release - local.get $200 - call $~lib/rt/pure/__release - local.get $201 - call $~lib/rt/pure/__release - local.get $202 - call $~lib/rt/pure/__release - local.get $203 - call $~lib/rt/pure/__release - local.get $204 - call $~lib/rt/pure/__release - local.get $205 - call $~lib/rt/pure/__release - local.get $206 - call $~lib/rt/pure/__release - local.get $207 - call $~lib/rt/pure/__release - local.get $208 - call $~lib/rt/pure/__release - local.get $209 - call $~lib/rt/pure/__release - local.get $210 - call $~lib/rt/pure/__release - local.get $211 - call $~lib/rt/pure/__release - local.get $212 - call $~lib/rt/pure/__release - local.get $213 - call $~lib/rt/pure/__release - local.get $214 - call $~lib/rt/pure/__release - local.get $215 - call $~lib/rt/pure/__release - local.get $216 - call $~lib/rt/pure/__release - local.get $217 - call $~lib/rt/pure/__release - local.get $218 - call $~lib/rt/pure/__release - local.get $219 - call $~lib/rt/pure/__release - local.get $220 - call $~lib/rt/pure/__release - local.get $221 - call $~lib/rt/pure/__release - local.get $222 - call $~lib/rt/pure/__release - local.get $223 - call $~lib/rt/pure/__release - local.get $224 - call $~lib/rt/pure/__release - local.get $225 - call $~lib/rt/pure/__release - local.get $226 - call $~lib/rt/pure/__release - local.get $227 - call $~lib/rt/pure/__release - local.get $228 - call $~lib/rt/pure/__release - local.get $229 - call $~lib/rt/pure/__release - local.get $230 - call $~lib/rt/pure/__release - local.get $231 - call $~lib/rt/pure/__release - local.get $232 - call $~lib/rt/pure/__release - local.get $233 - call $~lib/rt/pure/__release - local.get $234 - call $~lib/rt/pure/__release - local.get $235 - call $~lib/rt/pure/__release - local.get $236 - call $~lib/rt/pure/__release - local.get $237 - call $~lib/rt/pure/__release - local.get $238 - call $~lib/rt/pure/__release - local.get $239 - call $~lib/rt/pure/__release - local.get $240 - call $~lib/rt/pure/__release - local.get $241 - call $~lib/rt/pure/__release - local.get $242 - call $~lib/rt/pure/__release - local.get $243 - call $~lib/rt/pure/__release - local.get $244 - call $~lib/rt/pure/__release - local.get $245 - call $~lib/rt/pure/__release - local.get $246 - call $~lib/rt/pure/__release - local.get $247 - call $~lib/rt/pure/__release - local.get $248 - call $~lib/rt/pure/__release - local.get $249 - call $~lib/rt/pure/__release - local.get $250 - call $~lib/rt/pure/__release - local.get $251 - call $~lib/rt/pure/__release - local.get $252 - call $~lib/rt/pure/__release - local.get $253 - call $~lib/rt/pure/__release - local.get $254 - call $~lib/rt/pure/__release - local.get $255 - call $~lib/rt/pure/__release - local.get $256 - call $~lib/rt/pure/__release - local.get $257 - call $~lib/rt/pure/__release - local.get $258 - call $~lib/rt/pure/__release - local.get $259 - call $~lib/rt/pure/__release - local.get $260 - call $~lib/rt/pure/__release - local.get $261 - call $~lib/rt/pure/__release - local.get $262 - call $~lib/rt/pure/__release - local.get $263 - call $~lib/rt/pure/__release - local.get $264 - call $~lib/rt/pure/__release - local.get $265 - call $~lib/rt/pure/__release - local.get $266 - call $~lib/rt/pure/__release - local.get $267 - call $~lib/rt/pure/__release - local.get $268 - call $~lib/rt/pure/__release - local.get $269 - call $~lib/rt/pure/__release - local.get $270 - call $~lib/rt/pure/__release - local.get $271 - call $~lib/rt/pure/__release - local.get $272 - call $~lib/rt/pure/__release - local.get $273 - call $~lib/rt/pure/__release - local.get $274 - call $~lib/rt/pure/__release - local.get $275 - call $~lib/rt/pure/__release - local.get $276 - call $~lib/rt/pure/__release - local.get $277 - call $~lib/rt/pure/__release - local.get $278 - call $~lib/rt/pure/__release - local.get $279 - call $~lib/rt/pure/__release - local.get $280 - call $~lib/rt/pure/__release - local.get $281 - call $~lib/rt/pure/__release - local.get $282 - call $~lib/rt/pure/__release - local.get $283 - call $~lib/rt/pure/__release - local.get $284 - call $~lib/rt/pure/__release - local.get $285 - call $~lib/rt/pure/__release - local.get $286 - call $~lib/rt/pure/__release - local.get $287 - call $~lib/rt/pure/__release - local.get $288 - call $~lib/rt/pure/__release - local.get $289 - call $~lib/rt/pure/__release - local.get $290 - call $~lib/rt/pure/__release - local.get $291 - call $~lib/rt/pure/__release - local.get $292 - call $~lib/rt/pure/__release - local.get $293 - call $~lib/rt/pure/__release - local.get $294 - call $~lib/rt/pure/__release - local.get $295 - call $~lib/rt/pure/__release - local.get $296 - call $~lib/rt/pure/__release - local.get $297 - call $~lib/rt/pure/__release - local.get $298 - call $~lib/rt/pure/__release - ) - (func $std/string/getString (result i32) - global.get $std/string/str - call $~lib/rt/pure/__retain - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:std/string - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/std/symbol.debug.wat b/tests/compiler/std/symbol.debug.wat new file mode 100644 index 0000000000..561a3a4b9a --- /dev/null +++ b/tests/compiler/std/symbol.debug.wat @@ -0,0 +1,5619 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/symbol/nextId (mut i32) (i32.const 12)) + (global $std/symbol/sym1 (mut i32) (i32.const 0)) + (global $std/symbol/sym2 (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/symbol/stringToId (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/symbol/idToString (mut i32) (i32.const 0)) + (global $std/symbol/sym3 (mut i32) (i32.const 0)) + (global $std/symbol/sym4 (mut i32) (i32.const 0)) + (global $std/symbol/key1 (mut i32) (i32.const 0)) + (global $std/symbol/key2 (mut i32) (i32.const 0)) + (global $std/symbol/key3 (mut i32) (i32.const 0)) + (global $std/symbol/key4 (mut i32) (i32.const 0)) + (global $~lib/symbol/_Symbol.hasInstance i32 (i32.const 1)) + (global $std/symbol/hasInstance (mut i32) (i32.const 0)) + (global $~lib/symbol/_Symbol.isConcatSpreadable i32 (i32.const 2)) + (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1696)) + (global $~lib/memory/__data_end i32 (i32.const 1724)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34492)) + (global $~lib/memory/__heap_base i32 (i32.const 34492)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\002\003\00\00\00\00\00\00\00") + (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s\00\00\00") + (data $2 (i32.const 92) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $3 (i32.const 156) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 428) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 492) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $11 (i32.const 540) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $12 (i32.const 604) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 668) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00") + (data $14 (i32.const 716) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 876) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00\00\00\00\00\00\00") + (data $17 (i32.const 924) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 988) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00m\00a\00t\00c\00h\00\00\00") + (data $20 (i32.const 1068) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 1116) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h\00") + (data $22 (i32.const 1148) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 1196) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00s\00p\00l\00i\00t\00\00\00") + (data $24 (i32.const 1228) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e\00\00\00\00\00\00\00") + (data $25 (i32.const 1276) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g\00\00\00\00\00\00\00") + (data $26 (i32.const 1324) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s\00\00\00\00\00\00\00") + (data $27 (i32.const 1372) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 1420) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 1452) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 1500) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)\00\00\00\00\00\00\00") + (data $31 (i32.const 1548) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)\00\00\00\00\00\00\00") + (data $32 (i32.const 1612) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 1696) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\01\82\00\10A\02\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/symbol/Symbol (param $description i32) (result i32) + (local $1 i32) + (local $id i32) + global.get $~lib/symbol/nextId + local.tee $1 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId + local.get $1 + local.set $id + local.get $id + i32.eqz + if + unreachable + end + local.get $id + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 304 + i32.const 368 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 176 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 112 + i32.const 448 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 112 + i32.const 176 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $"~lib/map/Map<~lib/string/String,usize>#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map<~lib/string/String,usize>#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map<~lib/string/String,usize>#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map<~lib/string/String,usize>#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map<~lib/string/String,usize>#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map<~lib/string/String,usize>#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $"~lib/map/Map<~lib/string/String,usize>#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map<~lib/string/String,usize>#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry<~lib/string/String,usize>#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry<~lib/string/String,usize>#get:key" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $"~lib/map/MapEntry<~lib/string/String,usize>#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry<~lib/string/String,usize>#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=4 + ) + (func $"~lib/map/Map<~lib/string/String,usize>#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map<~lib/string/String,usize>#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map<~lib/string/String,usize>#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map<~lib/string/String,usize>#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry<~lib/string/String,usize>#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store + ) + (func $"~lib/map/MapEntry<~lib/string/String,usize>#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.0 (result i32) + local.get $key + local.set $key|1 + i32.const 4 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.0 + end + return + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=4 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $~lib/symbol/stringToId + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/symbol/idToString + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key4 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 304 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 512 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 624 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 112 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $"~lib/map/Map<~lib/string/String,usize>~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map<~lib/string/String,usize>#__visit" + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $"~lib/map/Map" + block $"~lib/map/Map<~lib/string/String,usize>" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"~lib/map/Map<~lib/string/String,usize>" $"~lib/map/Map" $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map<~lib/string/String,usize>~visit" + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/symbol + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 34512 + i32.const 34560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $"~lib/map/Map<~lib/string/String,usize>#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map<~lib/string/String,usize>#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map<~lib/string/String,usize>#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map<~lib/string/String,usize>#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map<~lib/string/String,usize>#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map<~lib/string/String,usize>#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map<~lib/string/String,usize>#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/hash/HASH<~lib/string/String> (param $key i32) (result i32) + (local $key|1 i32) + (local $h i32) + (local $len i32) + (local $pos i32) + (local $s1 i32) + (local $s2 i32) + (local $s3 i32) + (local $s4 i32) + (local $end i32) + (local $h|10 i32) + (local $key|11 i32) + (local $h|12 i32) + (local $key|13 i32) + (local $h|14 i32) + (local $key|15 i32) + (local $h|16 i32) + (local $key|17 i32) + (local $end|18 i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1 + drop + block $~lib/util/hash/hashStr|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $key + local.tee $key|1 + i32.store + local.get $key|1 + i32.const 0 + i32.eq + if + i32.const 0 + br $~lib/util/hash/hashStr|inlined.0 + end + local.get $key|1 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $h + local.get $h + local.set $len + local.get $key|1 + local.set $pos + local.get $len + i32.const 16 + i32.ge_u + if + i32.const 0 + i32.const -1640531535 + i32.add + i32.const -2048144777 + i32.add + local.set $s1 + i32.const 0 + i32.const -2048144777 + i32.add + local.set $s2 + i32.const 0 + local.set $s3 + i32.const 0 + i32.const -1640531535 + i32.sub + local.set $s4 + local.get $len + local.get $pos + i32.add + i32.const 16 + i32.sub + local.set $end + loop $while-continue|0 + local.get $pos + local.get $end + i32.le_u + if + block $~lib/util/hash/mix|inlined.0 (result i32) + local.get $s1 + local.set $h|10 + local.get $pos + i32.load + local.set $key|11 + local.get $h|10 + local.get $key|11 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + br $~lib/util/hash/mix|inlined.0 + end + local.set $s1 + block $~lib/util/hash/mix|inlined.1 (result i32) + local.get $s2 + local.set $h|12 + local.get $pos + i32.load offset=4 + local.set $key|13 + local.get $h|12 + local.get $key|13 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + br $~lib/util/hash/mix|inlined.1 + end + local.set $s2 + block $~lib/util/hash/mix|inlined.2 (result i32) + local.get $s3 + local.set $h|14 + local.get $pos + i32.load offset=8 + local.set $key|15 + local.get $h|14 + local.get $key|15 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + br $~lib/util/hash/mix|inlined.2 + end + local.set $s3 + block $~lib/util/hash/mix|inlined.3 (result i32) + local.get $s4 + local.set $h|16 + local.get $pos + i32.load offset=12 + local.set $key|17 + local.get $h|16 + local.get $key|17 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + br $~lib/util/hash/mix|inlined.3 + end + local.set $s4 + local.get $pos + i32.const 16 + i32.add + local.set $pos + br $while-continue|0 + end + end + local.get $h + local.get $s1 + i32.const 1 + i32.rotl + local.get $s2 + i32.const 7 + i32.rotl + i32.add + local.get $s3 + i32.const 12 + i32.rotl + i32.add + local.get $s4 + i32.const 18 + i32.rotl + i32.add + i32.add + local.set $h + else + local.get $h + i32.const 0 + i32.const 374761393 + i32.add + i32.add + local.set $h + end + local.get $key|1 + local.get $len + i32.add + i32.const 4 + i32.sub + local.set $end|18 + loop $while-continue|1 + local.get $pos + local.get $end|18 + i32.le_u + if + local.get $h + local.get $pos + i32.load + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $pos + i32.const 4 + i32.add + local.set $pos + br $while-continue|1 + end + end + local.get $key|1 + local.get $len + i32.add + local.set $end|18 + loop $while-continue|2 + local.get $pos + local.get $end|18 + i32.lt_u + if + local.get $h + local.get $pos + i32.load8_u + i32.const 374761393 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 11 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $h + local.get $pos + i32.const 1 + i32.add + local.set $pos + br $while-continue|2 + end + end + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hashStr|inlined.0 + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map<~lib/string/String,usize>#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map<~lib/string/String,usize>#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map<~lib/string/String,usize>#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry<~lib/string/String,usize>#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry<~lib/string/String,usize>#get:key" + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $key + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String.__eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map<~lib/string/String,usize>#has" (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $key + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/util/hash/HASH<~lib/string/String> + call $"~lib/map/Map<~lib/string/String,usize>#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map<~lib/string/String,usize>#get" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $key + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/util/hash/HASH<~lib/string/String> + call $"~lib/map/Map<~lib/string/String,usize>#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 624 + i32.const 688 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry<~lib/string/String,usize>#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map<~lib/string/String,usize>#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map<~lib/string/String,usize>#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map<~lib/string/String,usize>#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.2" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry<~lib/string/String,usize>#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + global.get $~lib/memory/__stack_pointer + local.get $oldEntry + call $"~lib/map/MapEntry<~lib/string/String,usize>#get:key" + local.tee $oldEntryKey + i32.store offset=12 + local.get $newEntry + local.get $oldEntryKey + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/MapEntry<~lib/string/String,usize>#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry<~lib/string/String,usize>#get:value" + call $"~lib/map/MapEntry<~lib/string/String,usize>#set:value" + local.get $oldEntryKey + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/util/hash/HASH<~lib/string/String> + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry<~lib/string/String,usize>#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.3" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.4" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=16 + local.get $14 + call $"~lib/map/Map<~lib/string/String,usize>#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map<~lib/string/String,usize>#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=16 + local.get $14 + call $"~lib/map/Map<~lib/string/String,usize>#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map<~lib/string/String,usize>#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=16 + local.get $14 + call $"~lib/map/Map<~lib/string/String,usize>#get:entriesCount" + call $"~lib/map/Map<~lib/string/String,usize>#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map<~lib/string/String,usize>#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/util/hash/HASH<~lib/string/String> + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $hashCode + call $"~lib/map/Map<~lib/string/String,usize>#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry<~lib/string/String,usize>#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map<~lib/string/String,usize>#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map<~lib/string/String,usize>#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map<~lib/string/String,usize>#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map<~lib/string/String,usize>#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map<~lib/string/String,usize>#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map<~lib/string/String,usize>#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map<~lib/string/String,usize>#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map<~lib/string/String,usize>#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map<~lib/string/String,usize>#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map<~lib/string/String,usize>#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.5" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/MapEntry<~lib/string/String,usize>#set:key" + i32.const 1 + drop + local.get $this + local.get $key + i32.const 1 + call $~lib/rt/itcms/__link + local.get $entry + local.get $value + call $"~lib/map/MapEntry<~lib/string/String,usize>#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map<~lib/string/String,usize>#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map<~lib/string/String,usize>#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map<~lib/string/String,usize>#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map<~lib/string/String,usize>#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry<~lib/string/String,usize>#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/MapEntry#set:value" + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/MapEntry#set:value" + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $~lib/symbol/_Symbol.for (param $key i32) (result i32) + (local $1 i32) + (local $id i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/symbol/stringToId + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map<~lib/string/String,usize>#has" + if + global.get $~lib/symbol/stringToId + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map<~lib/string/String,usize>#get" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + global.get $~lib/symbol/nextId + local.tee $1 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId + local.get $1 + local.set $id + local.get $id + i32.eqz + if + unreachable + end + global.get $~lib/symbol/stringToId + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $id + call $"~lib/map/Map<~lib/string/String,usize>#set" + drop + global.get $~lib/symbol/idToString + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $id + local.get $key + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map#set" + drop + local.get $id + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#has" (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map#get" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 624 + i32.const 688 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/symbol/_Symbol.keyFor (param $sym i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/symbol/idToString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $sym + call $"~lib/map/Map#has" + if (result i32) + global.get $~lib/symbol/idToString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $sym + call $"~lib/map/Map#get" + else + i32.const 0 + end + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 864 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/symbol/_Symbol#toString (param $this i32) (result i32) + (local $id i32) + (local $str i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + local.set $id + global.get $~lib/memory/__stack_pointer + i32.const 864 + local.tee $str + i32.store + block $break|0 + block $case11|0 + block $case10|0 + block $case9|0 + block $case8|0 + block $case7|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $id + local.set $3 + local.get $3 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $3 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $3 + i32.const 4 + i32.eq + br_if $case3|0 + local.get $3 + i32.const 5 + i32.eq + br_if $case4|0 + local.get $3 + i32.const 6 + i32.eq + br_if $case5|0 + local.get $3 + i32.const 7 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8 + i32.eq + br_if $case7|0 + local.get $3 + i32.const 9 + i32.eq + br_if $case8|0 + local.get $3 + i32.const 10 + i32.eq + br_if $case9|0 + local.get $3 + i32.const 11 + i32.eq + br_if $case10|0 + br $case11|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 896 + local.tee $str + i32.store + br $break|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 944 + local.tee $str + i32.store + br $break|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 1008 + local.tee $str + i32.store + br $break|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + local.tee $str + i32.store + br $break|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + local.tee $str + i32.store + br $break|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 1136 + local.tee $str + i32.store + br $break|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + local.tee $str + i32.store + br $break|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 1216 + local.tee $str + i32.store + br $break|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 1248 + local.tee $str + i32.store + br $break|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 1296 + local.tee $str + i32.store + br $break|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 1344 + local.tee $str + i32.store + br $break|0 + end + global.get $~lib/symbol/idToString + i32.const 0 + i32.ne + if (result i32) + global.get $~lib/symbol/idToString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $id + call $"~lib/map/Map#has" + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $id + call $"~lib/map/Map#get" + local.tee $str + i32.store + end + br $break|0 + end + i32.const 1392 + local.get $str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String.__concat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1440 + call $~lib/string/String.__concat + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $start:std/symbol + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 32 + call $~lib/symbol/Symbol + global.set $std/symbol/sym1 + i32.const 32 + call $~lib/symbol/Symbol + global.set $std/symbol/sym2 + global.get $std/symbol/sym1 + global.get $std/symbol/sym2 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $"~lib/map/Map<~lib/string/String,usize>#constructor" + global.set $~lib/symbol/stringToId + i32.const 0 + call $"~lib/map/Map#constructor" + global.set $~lib/symbol/idToString + i32.const 32 + call $~lib/symbol/_Symbol.for + global.set $std/symbol/sym3 + i32.const 32 + call $~lib/symbol/_Symbol.for + global.set $std/symbol/sym4 + global.get $std/symbol/sym3 + global.get $std/symbol/sym4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/symbol/sym1 + call $~lib/symbol/_Symbol.keyFor + global.set $std/symbol/key1 + global.get $std/symbol/sym2 + call $~lib/symbol/_Symbol.keyFor + global.set $std/symbol/key2 + global.get $std/symbol/key1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/symbol/key2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/symbol/sym3 + call $~lib/symbol/_Symbol.keyFor + local.tee $0 + i32.store offset=4 + local.get $0 + if (result i32) + local.get $0 + else + i32.const 736 + i32.const 64 + i32.const 17 + i32.const 12 + call $~lib/builtins/abort + unreachable + end + global.set $std/symbol/key3 + global.get $~lib/memory/__stack_pointer + global.get $std/symbol/sym4 + call $~lib/symbol/_Symbol.keyFor + local.tee $1 + i32.store offset=8 + local.get $1 + if (result i32) + local.get $1 + else + i32.const 736 + i32.const 64 + i32.const 18 + i32.const 12 + call $~lib/builtins/abort + unreachable + end + global.set $std/symbol/key4 + global.get $std/symbol/key3 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/symbol/key3 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + global.get $std/symbol/key4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/symbol/Symbol + call $~lib/symbol/_Symbol#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/symbol/sym3 + call $~lib/symbol/_Symbol#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/symbol/_Symbol.hasInstance + global.set $std/symbol/hasInstance + global.get $~lib/symbol/_Symbol.isConcatSpreadable + global.set $std/symbol/isConcatSpreadable + global.get $std/symbol/hasInstance + call $~lib/symbol/_Symbol#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/symbol/isConcatSpreadable + call $~lib/symbol/_Symbol#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/symbol/_Symbol.hasInstance + drop + global.get $~lib/symbol/_Symbol.isConcatSpreadable + drop + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map<~lib/string/String,usize>#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $cur i32) + (local $end i32) + (local $entry i32) + (local $val i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map<~lib/string/String,usize>#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map<~lib/string/String,usize>#get:entries" + local.set $entries + i32.const 1 + drop + local.get $entries + local.set $cur + local.get $cur + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map<~lib/string/String,usize>#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.6" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.6" + end + i32.mul + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + local.set $entry + local.get $entry + call $"~lib/map/MapEntry<~lib/string/String,usize>#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + i32.const 1 + drop + local.get $entry + call $"~lib/map/MapEntry<~lib/string/String,usize>#get:key" + local.set $val + i32.const 0 + drop + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + i32.const 0 + drop + end + local.get $cur + block $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.7" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.7" + end + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $cur i32) + (local $end i32) + (local $entry i32) + (local $val i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 1 + drop + local.get $entries + local.set $cur + local.get $cur + local.get $this + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.6" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.6" + end + i32.mul + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + local.set $entry + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + drop + i32.const 1 + drop + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $val + i32.const 0 + drop + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + block $"~lib/map/ENTRY_SIZE|inlined.7" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.7" + end + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 512 + i32.const 560 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) +) diff --git a/tests/compiler/std/symbol.json b/tests/compiler/std/symbol.json index b1da366ff4..d89aa6d3b8 100644 --- a/tests/compiler/std/symbol.json +++ b/tests/compiler/std/symbol.json @@ -1,5 +1,5 @@ { "asc_flags": [ - "--runtime none" + "--exportStart", "_start" ] -} \ No newline at end of file +} diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat deleted file mode 100644 index 35c2d5f686..0000000000 --- a/tests/compiler/std/symbol.optimized.wat +++ /dev/null @@ -1,1595 +0,0 @@ -(module - (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_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 1056) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s") - (data (i32.const 1104) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1152) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1216) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") - (data (i32.const 1280) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") - (data (i32.const 1328) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") - (data (i32.const 1380) "\01\00\00\00\01") - (data (i32.const 1392) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e") - (data (i32.const 1440) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e") - (data (i32.const 1504) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p") - (data (i32.const 1536) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00m\00a\00t\00c\00h") - (data (i32.const 1568) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e") - (data (i32.const 1600) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h") - (data (i32.const 1632) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s") - (data (i32.const 1664) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00s\00p\00l\00i\00t") - (data (i32.const 1696) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e") - (data (i32.const 1744) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g") - (data (i32.const 1792) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s") - (data (i32.const 1840) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(") - (data (i32.const 1872) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 1904) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00)") - (data (i32.const 1936) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)") - (data (i32.const 1968) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)") - (data (i32.const 2016) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)") - (data (i32.const 2080) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)") - (global $~lib/symbol/nextId (mut i32) (i32.const 12)) - (global $std/symbol/sym1 (mut i32) (i32.const 0)) - (global $std/symbol/sym2 (mut i32) (i32.const 0)) - (global $~lib/symbol/stringToId (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/symbol/idToString (mut i32) (i32.const 0)) - (global $std/symbol/sym3 (mut i32) (i32.const 0)) - (global $std/symbol/sym4 (mut i32) (i32.const 0)) - (global $std/symbol/key1 (mut i32) (i32.const 0)) - (global $std/symbol/key2 (mut i32) (i32.const 0)) - (global $std/symbol/key3 (mut i32) (i32.const 0)) - (global $std/symbol/key4 (mut i32) (i32.const 0)) - (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/symbol/Symbol (result i32) - (local $0 i32) - global.get $~lib/symbol/nextId - local.tee $0 - i32.const 1 - i32.add - global.set $~lib/symbol/nextId - local.get $0 - i32.eqz - if - unreachable - end - local.get $0 - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $4 - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.const 16 - local.get $2 - i32.const 16 - i32.gt_u - select - local.tee $6 - i32.add - local.tee $2 - memory.size - local.tee $5 - i32.const 16 - i32.shl - local.tee $3 - i32.gt_u - if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $5 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $2 - global.set $~lib/rt/stub/offset - local.get $4 - i32.const 16 - i32.sub - local.tee $2 - local.get $6 - i32.store - local.get $2 - i32.const 1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store8 offset=3 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 28 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $1 - i32.add - local.set $0 - local.get $2 - local.get $1 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - i32.const 1120 - i32.const 1168 - i32.const 49 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/rt/stub/__alloc - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/hash/hashStr (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const -2128831035 - local.set $1 - local.get $0 - if - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $0 - local.get $2 - i32.add - i32.load8_u - local.get $1 - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - end - local.get $1 - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - local.get $0 - i32.load16_u - local.tee $3 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $3 - local.get $4 - i32.sub - return - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - return - end - i32.const 0 - ) - (func $~lib/map/Map<~lib/string/String,usize>#find (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load - local.get $1 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load - i32.const 1040 - call $~lib/string/String.__eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map<~lib/string/String,usize>#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne - if - local.get $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load - i32.store - local.get $2 - local.get $4 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $4 - i32.load - call $~lib/util/hash/hashStr - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $4 - i32.const 12 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $0 - i32.load - drop - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - i32.load offset=8 - drop - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - ) - (func $~lib/map/Map<~lib/string/String,usize>#set (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 1040 - call $~lib/util/hash/hashStr - local.tee $3 - call $~lib/map/Map<~lib/string/String,usize>#find - local.tee $2 - if - local.get $2 - local.get $1 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map<~lib/string/String,usize>#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $2 - i32.const 1040 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $2 - i32.store - end - ) - (func $~lib/util/hash/hash32 (param $0 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (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.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne - if - local.get $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load - i32.store - local.get $2 - local.get $4 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $4 - i32.load - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $4 - i32.const 12 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $0 - i32.load - drop - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - i32.load offset=8 - drop - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - local.tee $3 - call $~lib/map/Map#find - local.tee $2 - if - local.get $2 - i32.load offset=4 - i32.const 1040 - i32.ne - if - local.get $2 - i32.const 1040 - i32.store offset=4 - end - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1040 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $2 - i32.store - end - ) - (func $~lib/symbol/_Symbol.for (result i32) - (local $0 i32) - global.get $~lib/symbol/stringToId - if - global.get $~lib/symbol/stringToId - i32.const 1040 - call $~lib/util/hash/hashStr - call $~lib/map/Map<~lib/string/String,usize>#find - if - global.get $~lib/symbol/stringToId - i32.const 1040 - call $~lib/util/hash/hashStr - call $~lib/map/Map<~lib/string/String,usize>#find - local.tee $0 - i32.eqz - if - i32.const 1232 - i32.const 1296 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - return - end - else - i32.const 24 - i32.const 3 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - global.set $~lib/symbol/stringToId - i32.const 24 - i32.const 4 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - global.set $~lib/symbol/idToString - end - global.get $~lib/symbol/nextId - local.tee $0 - i32.const 1 - i32.add - global.set $~lib/symbol/nextId - local.get $0 - i32.eqz - if - unreachable - end - global.get $~lib/symbol/stringToId - local.get $0 - call $~lib/map/Map<~lib/string/String,usize>#set - global.get $~lib/symbol/idToString - local.get $0 - call $~lib/map/Map#set - local.get $0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1232 - i32.const 1296 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - ) - (func $~lib/symbol/_Symbol.keyFor (param $0 i32) (result i32) - global.get $~lib/symbol/idToString - if (result i32) - global.get $~lib/symbol/idToString - local.get $0 - call $~lib/map/Map#has - else - i32.const 0 - end - if (result i32) - global.get $~lib/symbol/idToString - local.get $0 - call $~lib/map/Map#get - else - i32.const 0 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $__inlined_func$~lib/string/String#concat - local.get $0 - i32.const 1888 - local.get $0 - select - local.tee $3 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.tee $2 - local.get $1 - i32.const 1888 - local.get $1 - select - local.tee $1 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.tee $4 - i32.add - local.tee $0 - i32.eqz - if - i32.const 1392 - local.set $0 - br $__inlined_func$~lib/string/String#concat - end - local.get $0 - i32.const 1 - call $~lib/rt/stub/__alloc - local.tee $0 - local.get $3 - local.get $2 - call $~lib/memory/memory.copy - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $4 - call $~lib/memory/memory.copy - end - local.get $0 - ) - (func $~lib/symbol/_Symbol#toString (param $0 i32) (result i32) - i32.const 1856 - block $break|0 (result i32) - block $case11|0 - block $case10|0 - block $case9|0 - block $case8|0 - block $case7|0 - block $case6|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $0 - i32.const 1 - i32.sub - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 - end - i32.const 1408 - br $break|0 - end - i32.const 1456 - br $break|0 - end - i32.const 1520 - br $break|0 - end - i32.const 1552 - br $break|0 - end - i32.const 1584 - br $break|0 - end - i32.const 1616 - br $break|0 - end - i32.const 1648 - br $break|0 - end - i32.const 1680 - br $break|0 - end - i32.const 1712 - br $break|0 - end - i32.const 1760 - br $break|0 - end - i32.const 1808 - br $break|0 - end - global.get $~lib/symbol/idToString - if (result i32) - global.get $~lib/symbol/idToString - local.get $0 - call $~lib/map/Map#has - else - i32.const 0 - end - if (result i32) - global.get $~lib/symbol/idToString - local.get $0 - call $~lib/map/Map#get - else - i32.const 1392 - end - end - call $~lib/string/String.__concat - i32.const 1920 - call $~lib/string/String.__concat - ) - (func $start:std/symbol - (local $0 i32) - (local $1 i32) - call $~lib/symbol/Symbol - global.set $std/symbol/sym1 - call $~lib/symbol/Symbol - global.set $std/symbol/sym2 - global.get $std/symbol/sym1 - global.get $std/symbol/sym2 - i32.eq - if - i32.const 0 - i32.const 1072 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2160 - global.set $~lib/rt/stub/offset - call $~lib/symbol/_Symbol.for - global.set $std/symbol/sym3 - call $~lib/symbol/_Symbol.for - global.set $std/symbol/sym4 - global.get $std/symbol/sym3 - global.get $std/symbol/sym4 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/symbol/sym1 - call $~lib/symbol/_Symbol.keyFor - global.set $std/symbol/key1 - global.get $std/symbol/sym2 - call $~lib/symbol/_Symbol.keyFor - global.set $std/symbol/key2 - global.get $std/symbol/key1 - if - i32.const 0 - i32.const 1072 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/symbol/key2 - if - i32.const 0 - i32.const 1072 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/symbol/sym3 - call $~lib/symbol/_Symbol.keyFor - local.tee $0 - local.get $0 - i32.eqz - if - i32.const 1344 - i32.const 1072 - i32.const 17 - i32.const 12 - call $~lib/builtins/abort - unreachable - end - global.set $std/symbol/key3 - global.get $std/symbol/sym4 - call $~lib/symbol/_Symbol.keyFor - local.tee $0 - local.get $0 - i32.eqz - if - i32.const 1344 - i32.const 1072 - i32.const 18 - i32.const 12 - call $~lib/builtins/abort - unreachable - end - global.set $std/symbol/key4 - global.get $std/symbol/key3 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/symbol/key3 - global.get $std/symbol/key4 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/symbol/Symbol - call $~lib/symbol/_Symbol#toString - i32.const 1952 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/symbol/sym3 - call $~lib/symbol/_Symbol#toString - i32.const 1984 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - global.set $std/symbol/isConcatSpreadable - i32.const 1 - call $~lib/symbol/_Symbol#toString - i32.const 2032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/symbol/isConcatSpreadable - call $~lib/symbol/_Symbol#toString - i32.const 2096 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:std/symbol - ) -) diff --git a/tests/compiler/std/symbol.release.wat b/tests/compiler/std/symbol.release.wat new file mode 100644 index 0000000000..e2a9fd8b6d --- /dev/null +++ b/tests/compiler/std/symbol.release.wat @@ -0,0 +1,4244 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func)) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (param i32 i32 i32))) + (type $9 (func (param i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/symbol/nextId (mut i32) (i32.const 12)) + (global $std/symbol/sym1 (mut i32) (i32.const 0)) + (global $std/symbol/sym2 (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/symbol/stringToId (mut i32) (i32.const 0)) + (global $~lib/symbol/idToString (mut i32) (i32.const 0)) + (global $std/symbol/sym3 (mut i32) (i32.const 0)) + (global $std/symbol/sym4 (mut i32) (i32.const 0)) + (global $std/symbol/key1 (mut i32) (i32.const 0)) + (global $std/symbol/key2 (mut i32) (i32.const 0)) + (global $std/symbol/key3 (mut i32) (i32.const 0)) + (global $std/symbol/key4 (mut i32) (i32.const 0)) + (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35516)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\06\00\00\001\002\003") + (data $1 (i32.const 1068) ",") + (data $1.1 (i32.const 1080) "\02\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s") + (data $2 (i32.const 1116) "<") + (data $2.1 (i32.const 1128) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $3 (i32.const 1180) "<") + (data $3.1 (i32.const 1192) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $6 (i32.const 1308) "<") + (data $6.1 (i32.const 1320) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $7 (i32.const 1372) ",") + (data $7.1 (i32.const 1384) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $9 (i32.const 1452) "<") + (data $9.1 (i32.const 1464) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 1516) ",") + (data $10.1 (i32.const 1528) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $11 (i32.const 1564) "<") + (data $11.1 (i32.const 1576) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $12 (i32.const 1628) "<") + (data $12.1 (i32.const 1640) "\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") + (data $13 (i32.const 1692) ",") + (data $13.1 (i32.const 1704) "\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data $14 (i32.const 1740) "|") + (data $14.1 (i32.const 1752) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") + (data $15 (i32.const 1868) "\1c") + (data $15.1 (i32.const 1880) "\02") + (data $16 (i32.const 1900) ",") + (data $16.1 (i32.const 1912) "\02\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e") + (data $17 (i32.const 1948) "<") + (data $17.1 (i32.const 1960) "\02\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e") + (data $18 (i32.const 2012) ",") + (data $18.1 (i32.const 2024) "\02\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p") + (data $19 (i32.const 2060) "\1c") + (data $19.1 (i32.const 2072) "\02\00\00\00\n\00\00\00m\00a\00t\00c\00h") + (data $20 (i32.const 2092) ",") + (data $20.1 (i32.const 2104) "\02\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e") + (data $21 (i32.const 2140) "\1c") + (data $21.1 (i32.const 2152) "\02\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h") + (data $22 (i32.const 2172) ",") + (data $22.1 (i32.const 2184) "\02\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s") + (data $23 (i32.const 2220) "\1c") + (data $23.1 (i32.const 2232) "\02\00\00\00\n\00\00\00s\00p\00l\00i\00t") + (data $24 (i32.const 2252) ",") + (data $24.1 (i32.const 2264) "\02\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e") + (data $25 (i32.const 2300) ",") + (data $25.1 (i32.const 2312) "\02\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g") + (data $26 (i32.const 2348) ",") + (data $26.1 (i32.const 2360) "\02\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s") + (data $27 (i32.const 2396) ",") + (data $27.1 (i32.const 2408) "\02\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(") + (data $28 (i32.const 2444) "\1c") + (data $28.1 (i32.const 2456) "\02\00\00\00\02\00\00\00)") + (data $29 (i32.const 2476) ",") + (data $29.1 (i32.const 2488) "\02\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)") + (data $30 (i32.const 2524) ",") + (data $30.1 (i32.const 2536) "\02\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)") + (data $31 (i32.const 2572) "<") + (data $31.1 (i32.const 2584) "\02\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)") + (data $32 (i32.const 2636) "L") + (data $32.1 (i32.const 2648) "\02\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)") + (data $33 (i32.const 2720) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\01\82\00\10A\02") + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $~lib/symbol/stringToId + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/symbol/idToString + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key4 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1328 + call $~lib/rt/itcms/__visit + i32.const 1536 + call $~lib/rt/itcms/__visit + i32.const 1648 + call $~lib/rt/itcms/__visit + i32.const 1136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1200 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$246 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 35516 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$246 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2720 + i32.load + i32.gt_u + if + i32.const 1328 + i32.const 1392 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 2724 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1472 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 35520 + i32.const 0 + i32.store + i32.const 37088 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 35520 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 35520 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 35520 + i32.const 37092 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 35520 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 35516 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1200 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 35516 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 35516 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1472 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1136 + i32.const 1200 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1136 + i32.const 1472 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1472 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $"~lib/map/Map" + block $"~lib/map/Map<~lib/string/String,usize>" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"~lib/map/Map<~lib/string/String,usize>" $"~lib/map/Map" $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 12 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $0 + loop $while-continue|01 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load offset=4 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 12 + i32.add + local.set $1 + br $while-continue|01 + end + end + br $folding-inner1 + end + unreachable + end + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/symbol + ) + (func $~lib/util/hash/HASH<~lib/string/String> (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/hashStr|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + local.get $0 + i32.eqz + br_if $~lib/util/hash/hashStr|inlined.0 + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + i32.const 16 + i32.ge_u + if (result i32) + i32.const 606290984 + local.set $2 + i32.const -2048144777 + local.set $4 + i32.const 1640531535 + local.set $5 + local.get $1 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.set $7 + loop $while-continue|0 + local.get $1 + local.get $7 + i32.le_u + if + local.get $2 + local.get $1 + i32.load + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $2 + local.get $4 + local.get $1 + i32.load offset=4 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $4 + local.get $6 + local.get $1 + i32.load offset=8 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $6 + local.get $5 + local.get $1 + i32.load offset=12 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $5 + local.get $1 + i32.const 16 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $3 + local.get $2 + i32.const 1 + i32.rotl + local.get $4 + i32.const 7 + i32.rotl + i32.add + local.get $6 + i32.const 12 + i32.rotl + i32.add + local.get $5 + i32.const 18 + i32.rotl + i32.add + i32.add + else + local.get $3 + i32.const 374761393 + i32.add + end + local.set $2 + local.get $0 + local.get $3 + i32.add + i32.const 4 + i32.sub + local.set $4 + loop $while-continue|1 + local.get $1 + local.get $4 + i32.le_u + if + local.get $2 + local.get $1 + i32.load + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $2 + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|1 + end + end + local.get $0 + local.get $3 + i32.add + local.set $0 + loop $while-continue|2 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $2 + local.get $1 + i32.load8_u + i32.const 374761393 + i32.mul + i32.add + i32.const 11 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|2 + end + end + local.get $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$88 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$88 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map<~lib/string/String,usize>#find" (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + loop $while-continue|0 + local.get $1 + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $2 + i32.const 1056 + call $~lib/string/String.__eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map<~lib/string/String,usize>#set" (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 $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + call $~lib/util/hash/HASH<~lib/string/String> + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $0 + local.get $6 + call $"~lib/map/Map<~lib/string/String,usize>#find" + local.tee $2 + if + local.get $2 + local.get $1 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $9 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $9 + i32.ne + if + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.load + local.tee $10 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $2 + local.get $10 + i32.store + local.get $2 + local.get $9 + i32.load offset=4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $2 + local.get $8 + local.get $10 + call $~lib/util/hash/HASH<~lib/string/String> + local.get $7 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $10 + i32.load + i32.store offset=8 + local.get $10 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $9 + i32.const 12 + i32.add + local.set $9 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + local.get $2 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $2 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $6 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#set" (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 $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $7 + call $"~lib/map/Map#find" + local.tee $2 + if + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + local.get $2 + i32.const 1056 + i32.store offset=4 + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/rt/itcms/__link + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $10 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $5 + local.get $10 + i32.ne + if + local.get $10 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $10 + i32.load + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.load offset=4 + local.tee $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=4 + local.get $2 + local.get $9 + local.get $8 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + i32.const 15 + i32.shr_u + local.get $4 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + i32.const 13 + i32.shr_u + local.get $4 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + i32.const 16 + i32.shr_u + local.get $4 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=8 + local.get $4 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $10 + i32.const 12 + i32.add + local.set $10 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $0 + local.get $9 + i32.store + local.get $0 + local.get $9 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $2 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + local.get $2 + i32.const 1056 + i32.store offset=4 + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $7 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/symbol/_Symbol.for (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/stringToId + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/util/hash/HASH<~lib/string/String> + call $"~lib/map/Map<~lib/string/String,usize>#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/stringToId + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/util/hash/HASH<~lib/string/String> + call $"~lib/map/Map<~lib/string/String,usize>#find" + local.tee $0 + i32.eqz + if + i32.const 1648 + i32.const 1712 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + br $folding-inner1 + end + global.get $~lib/symbol/nextId + local.tee $0 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId + local.get $0 + i32.eqz + if + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/stringToId + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map<~lib/string/String,usize>#set" + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#set" + br $folding-inner1 + end + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1648 + i32.const 1712 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/symbol/_Symbol.keyFor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $1 + i32.store + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $1 + i32.store + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + else + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$253 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1888 + local.set $0 + br $__inlined_func$~lib/string/String#concat$253 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/symbol/_Symbol#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1888 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1888 + i32.store + block $break|0 + block $case11|0 + block $case10|0 + block $case9|0 + block $case8|0 + block $case7|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + i32.const 1 + i32.sub + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 + end + i32.const 1920 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1920 + i32.store + br $break|0 + end + i32.const 1968 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store + br $break|0 + end + i32.const 2032 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store + br $break|0 + end + i32.const 2080 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2080 + i32.store + br $break|0 + end + i32.const 2112 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2112 + i32.store + br $break|0 + end + i32.const 2160 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store + br $break|0 + end + i32.const 2192 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2192 + i32.store + br $break|0 + end + i32.const 2240 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2240 + i32.store + br $break|0 + end + i32.const 2272 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2272 + i32.store + br $break|0 + end + i32.const 2320 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2320 + i32.store + br $break|0 + end + i32.const 2368 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2368 + i32.store + br $break|0 + end + global.get $~lib/symbol/idToString + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $"~lib/map/Map#has" + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.tee $1 + i32.store + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2464 + call $~lib/string/String.__concat + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/symbol + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/symbol/nextId + local.tee $0 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId + local.get $0 + i32.eqz + if + unreachable + end + local.get $0 + global.set $std/symbol/sym1 + global.get $~lib/symbol/nextId + local.tee $0 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId + local.get $0 + i32.eqz + if + unreachable + end + local.get $0 + global.set $std/symbol/sym2 + global.get $std/symbol/sym1 + global.get $std/symbol/sym2 + i32.eq + if + i32.const 0 + i32.const 1088 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 35516 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/pinSpace + i32.const 1284 + i32.const 1280 + i32.store + i32.const 1288 + i32.const 1280 + i32.store + i32.const 1280 + global.set $~lib/rt/itcms/toSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $~lib/symbol/stringToId + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $~lib/symbol/idToString + call $~lib/symbol/_Symbol.for + global.set $std/symbol/sym3 + call $~lib/symbol/_Symbol.for + global.set $std/symbol/sym4 + global.get $std/symbol/sym3 + global.get $std/symbol/sym4 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/symbol/sym1 + call $~lib/symbol/_Symbol.keyFor + global.set $std/symbol/key1 + global.get $std/symbol/sym2 + call $~lib/symbol/_Symbol.keyFor + global.set $std/symbol/key2 + global.get $~lib/memory/__stack_pointer + global.get $std/symbol/key1 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/symbol/key2 + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/symbol/sym3 + call $~lib/symbol/_Symbol.keyFor + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1760 + i32.const 1088 + i32.const 17 + i32.const 12 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $std/symbol/key3 + global.get $~lib/memory/__stack_pointer + global.get $std/symbol/sym4 + call $~lib/symbol/_Symbol.keyFor + local.tee $0 + i32.store offset=8 + local.get $0 + i32.eqz + if + i32.const 1760 + i32.const 1088 + i32.const 18 + i32.const 12 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $std/symbol/key4 + global.get $~lib/memory/__stack_pointer + global.get $std/symbol/key3 + local.tee $0 + i32.store + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/symbol/key3 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/symbol/key4 + local.tee $1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/symbol/nextId + local.tee $0 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId + local.get $0 + i32.eqz + if + unreachable + end + local.get $0 + call $~lib/symbol/_Symbol#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2496 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/symbol/sym3 + call $~lib/symbol/_Symbol#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + global.set $std/symbol/isConcatSpreadable + i32.const 1 + call $~lib/symbol/_Symbol#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/symbol/isConcatSpreadable + call $~lib/symbol/_Symbol#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 1536 + i32.const 1584 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/std/symbol.ts b/tests/compiler/std/symbol.ts index 9fb8c76a71..35b24e3c23 100644 --- a/tests/compiler/std/symbol.ts +++ b/tests/compiler/std/symbol.ts @@ -1,18 +1,18 @@ var sym1 = Symbol("123"); var sym2 = Symbol("123"); -assert(sym1 !== sym2); +assert(sym1 != sym2); var sym3 = Symbol.for("123"); var sym4 = Symbol.for("123"); -assert(sym3 === sym4); +assert(sym3 == sym4); var key1 = Symbol.keyFor(sym1); var key2 = Symbol.keyFor(sym2); -assert(key1 === null); -assert(key2 === null); +assert(key1 == null); +assert(key2 == null); var key3 = Symbol.keyFor(sym3)!; var key4 = Symbol.keyFor(sym4)!; diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat deleted file mode 100644 index a5bff270c4..0000000000 --- a/tests/compiler/std/symbol.untouched.wat +++ /dev/null @@ -1,3531 +0,0 @@ -(module - (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_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (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 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 48) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s\00") - (data (i32.const 96) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 144) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 208) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00") - (data (i32.const 272) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00") - (data (i32.const 320) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00") - (data (i32.const 368) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 384) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00") - (data (i32.const 432) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00") - (data (i32.const 496) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p\00") - (data (i32.const 528) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00m\00a\00t\00c\00h\00") - (data (i32.const 560) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e\00") - (data (i32.const 592) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h\00") - (data (i32.const 624) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s\00") - (data (i32.const 656) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00s\00p\00l\00i\00t\00") - (data (i32.const 688) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e\00") - (data (i32.const 736) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g\00") - (data (i32.const 784) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s\00") - (data (i32.const 832) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(\00") - (data (i32.const 864) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 896) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00)\00") - (data (i32.const 928) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)\00") - (data (i32.const 960) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)\00") - (data (i32.const 1008) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)\00") - (data (i32.const 1072) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00") - (table $0 1 funcref) - (global $~lib/symbol/nextId (mut i32) (i32.const 12)) - (global $std/symbol/sym1 (mut i32) (i32.const 0)) - (global $std/symbol/sym2 (mut i32) (i32.const 0)) - (global $~lib/symbol/stringToId (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/symbol/idToString (mut i32) (i32.const 0)) - (global $std/symbol/sym3 (mut i32) (i32.const 0)) - (global $std/symbol/sym4 (mut i32) (i32.const 0)) - (global $std/symbol/key1 (mut i32) (i32.const 0)) - (global $std/symbol/key2 (mut i32) (i32.const 0)) - (global $std/symbol/key3 (mut i32) (i32.const 0)) - (global $std/symbol/key4 (mut i32) (i32.const 0)) - (global $~lib/symbol/_Symbol.hasInstance i32 (i32.const 1)) - (global $std/symbol/hasInstance (mut i32) (i32.const 0)) - (global $~lib/symbol/_Symbol.isConcatSpreadable i32 (i32.const 2)) - (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 1140)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/symbol/Symbol (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - global.get $~lib/symbol/nextId - local.tee $1 - i32.const 1 - i32.add - global.set $~lib/symbol/nextId - local.get $1 - local.set $2 - local.get $2 - i32.eqz - if - unreachable - end - local.get $2 - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.const 1073741808 - i32.gt_u - if - i32.const 112 - i32.const 160 - i32.const 49 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $2 - call $~lib/rt/stub/__retain - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/map/Map<~lib/string/String,usize>#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/hash/hashStr (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const -2128831035 - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $1 - local.get $0 - local.get $2 - i32.add - i32.load8_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - end - local.get $1 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/map/Map<~lib/string/String,usize>#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - call $~lib/string/String.__eq - else - i32.const 0 - end - if - local.get $3 - local.set $5 - local.get $1 - call $~lib/rt/stub/__release - local.get $5 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/map/Map<~lib/string/String,usize>#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) - local.get $1 - call $~lib/rt/stub/__retain - local.set $2 - i32.const 1 - drop - local.get $2 - call $~lib/util/hash/hashStr - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.0 - end - call $~lib/map/Map<~lib/string/String,usize>#find - i32.const 0 - i32.ne - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/map/Map<~lib/string/String,usize>#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) - local.get $1 - call $~lib/rt/stub/__retain - local.set $2 - i32.const 1 - drop - local.get $2 - call $~lib/util/hash/hashStr - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.1 - end - call $~lib/map/Map<~lib/string/String,usize>#find - local.set $4 - local.get $4 - i32.eqz - if - i32.const 224 - i32.const 288 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/map/Map<~lib/string/String,usize>#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load - i32.store - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) - local.get $10 - i32.load - call $~lib/rt/stub/__retain - local.set $12 - i32.const 1 - drop - local.get $12 - call $~lib/util/hash/hashStr - local.set $13 - local.get $12 - call $~lib/rt/stub/__release - local.get $13 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 12 - i32.add - local.set $8 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/stub/__retain - local.set $12 - local.get $9 - call $~lib/rt/stub/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/stub/__retain - local.set $9 - local.get $11 - call $~lib/rt/stub/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - ) - (func $~lib/map/Map<~lib/string/String,usize>#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) - local.get $1 - call $~lib/rt/stub/__retain - local.set $3 - i32.const 1 - drop - local.get $3 - call $~lib/util/hash/hashStr - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.2 - end - local.set $5 - local.get $0 - local.get $1 - local.get $5 - call $~lib/map/Map<~lib/string/String,usize>#find - local.set $6 - local.get $6 - if - i32.const 0 - drop - local.get $6 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map<~lib/string/String,usize>#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.set $6 - local.get $6 - local.get $1 - call $~lib/rt/stub/__retain - i32.store - local.get $6 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $4 - local.get $6 - local.get $4 - i32.load - i32.store offset=8 - local.get $4 - local.get $6 - i32.store - local.get $3 - call $~lib/rt/stub/__release - end - local.get $0 - call $~lib/rt/stub/__retain - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/util/hash/hash32 (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 - if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $11 - local.get $10 - i32.load - i32.store - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $10 - i32.load - local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $12 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $11 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - i32.const 12 - i32.add - local.set $8 - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/stub/__retain - local.set $12 - local.get $9 - call $~lib/rt/stub/__release - end - local.get $12 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $9 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/stub/__retain - local.set $9 - local.get $11 - call $~lib/rt/stub/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 1 - drop - local.get $5 - i32.load offset=4 - local.set $3 - local.get $2 - local.get $3 - i32.ne - if - local.get $5 - local.get $2 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__release - end - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/stub/__release - end - local.get $0 - call $~lib/rt/stub/__retain - local.set $6 - local.get $2 - call $~lib/rt/stub/__release - local.get $6 - ) - (func $~lib/symbol/_Symbol.for (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - global.get $~lib/symbol/stringToId - i32.eqz - if - i32.const 0 - call $~lib/map/Map<~lib/string/String,usize>#constructor - local.set $1 - global.get $~lib/symbol/stringToId - call $~lib/rt/stub/__release - local.get $1 - global.set $~lib/symbol/stringToId - i32.const 0 - call $~lib/map/Map#constructor - local.set $1 - global.get $~lib/symbol/idToString - call $~lib/rt/stub/__release - local.get $1 - global.set $~lib/symbol/idToString - else - global.get $~lib/symbol/stringToId - local.get $0 - call $~lib/map/Map<~lib/string/String,usize>#has - if - global.get $~lib/symbol/stringToId - local.get $0 - call $~lib/map/Map<~lib/string/String,usize>#get - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - return - end - end - global.get $~lib/symbol/nextId - local.tee $1 - i32.const 1 - i32.add - global.set $~lib/symbol/nextId - local.get $1 - local.set $2 - local.get $2 - i32.eqz - if - unreachable - end - global.get $~lib/symbol/stringToId - local.get $0 - local.get $2 - call $~lib/map/Map<~lib/string/String,usize>#set - call $~lib/rt/stub/__release - global.get $~lib/symbol/idToString - local.get $2 - local.get $0 - call $~lib/map/Map#set - call $~lib/rt/stub/__release - local.get $2 - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 224 - i32.const 288 - i32.const 104 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - call $~lib/rt/stub/__retain - ) - (func $~lib/symbol/_Symbol.keyFor (param $0 i32) (result i32) - global.get $~lib/symbol/idToString - i32.const 0 - i32.ne - if (result i32) - global.get $~lib/symbol/idToString - local.get $0 - call $~lib/map/Map#has - else - i32.const 0 - end - if (result i32) - global.get $~lib/symbol/idToString - local.get $0 - call $~lib/map/Map#get - else - i32.const 0 - call $~lib/rt/stub/__retain - end - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/string/String#concat (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.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 880 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $1 - end - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $4 - local.get $1 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $5 - local.get $4 - local.get $5 - i32.add - local.set $6 - local.get $6 - i32.const 0 - i32.eq - if - i32.const 384 - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $6 - i32.const 1 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $7 - local.get $7 - local.get $0 - local.get $4 - call $~lib/memory/memory.copy - local.get $7 - local.get $4 - i32.add - local.get $1 - local.get $5 - call $~lib/memory/memory.copy - local.get $7 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.const 880 - local.get $0 - i32.const 0 - i32.ne - select - local.get $1 - call $~lib/string/String#concat - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/symbol/_Symbol#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.set $1 - i32.const 384 - local.set $2 - block $break|0 - block $case11|0 - block $case10|0 - block $case9|0 - block $case8|0 - block $case7|0 - block $case6|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 - local.get $3 - i32.const 6 - i32.eq - br_if $case5|0 - local.get $3 - i32.const 7 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8 - i32.eq - br_if $case7|0 - local.get $3 - i32.const 9 - i32.eq - br_if $case8|0 - local.get $3 - i32.const 10 - i32.eq - br_if $case9|0 - local.get $3 - i32.const 11 - i32.eq - br_if $case10|0 - br $case11|0 - end - i32.const 400 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 - br $break|0 - end - i32.const 448 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 - br $break|0 - end - i32.const 512 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 - br $break|0 - end - i32.const 544 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 - br $break|0 - end - i32.const 576 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 - br $break|0 - end - i32.const 608 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 - br $break|0 - end - i32.const 640 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 - br $break|0 - end - i32.const 672 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 - br $break|0 - end - i32.const 704 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 - br $break|0 - end - i32.const 752 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 - br $break|0 - end - i32.const 800 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 - br $break|0 - end - global.get $~lib/symbol/idToString - i32.const 0 - i32.ne - if (result i32) - global.get $~lib/symbol/idToString - local.get $1 - call $~lib/map/Map#has - else - i32.const 0 - end - if - global.get $~lib/symbol/idToString - local.get $1 - call $~lib/map/Map#get - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 - end - br $break|0 - end - i32.const 848 - local.get $2 - call $~lib/string/String.__concat - local.tee $3 - i32.const 912 - call $~lib/string/String.__concat - local.tee $4 - local.set $5 - local.get $3 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 - ) - (func $start:std/symbol - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 32 - call $~lib/symbol/Symbol - global.set $std/symbol/sym1 - i32.const 32 - call $~lib/symbol/Symbol - global.set $std/symbol/sym2 - global.get $std/symbol/sym1 - global.get $std/symbol/sym2 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 32 - call $~lib/symbol/_Symbol.for - global.set $std/symbol/sym3 - i32.const 32 - call $~lib/symbol/_Symbol.for - global.set $std/symbol/sym4 - global.get $std/symbol/sym3 - global.get $std/symbol/sym4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/symbol/sym1 - call $~lib/symbol/_Symbol.keyFor - global.set $std/symbol/key1 - global.get $std/symbol/sym2 - call $~lib/symbol/_Symbol.keyFor - global.set $std/symbol/key2 - global.get $std/symbol/key1 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/symbol/key2 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/symbol/sym3 - call $~lib/symbol/_Symbol.keyFor - local.tee $0 - if (result i32) - local.get $0 - else - i32.const 336 - i32.const 64 - i32.const 17 - i32.const 12 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/stub/__retain - global.set $std/symbol/key3 - global.get $std/symbol/sym4 - call $~lib/symbol/_Symbol.keyFor - local.tee $0 - if (result i32) - local.get $0 - else - i32.const 336 - i32.const 64 - i32.const 18 - i32.const 12 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/stub/__retain - global.set $std/symbol/key4 - global.get $std/symbol/key3 - i32.const 32 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/symbol/key3 - global.get $std/symbol/key4 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/symbol/Symbol - call $~lib/symbol/_Symbol#toString - local.tee $0 - i32.const 944 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/symbol/sym3 - call $~lib/symbol/_Symbol#toString - local.tee $1 - i32.const 976 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/symbol/_Symbol.hasInstance - global.set $std/symbol/hasInstance - global.get $~lib/symbol/_Symbol.isConcatSpreadable - global.set $std/symbol/isConcatSpreadable - global.get $std/symbol/hasInstance - call $~lib/symbol/_Symbol#toString - local.tee $2 - i32.const 1024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/symbol/isConcatSpreadable - call $~lib/symbol/_Symbol#toString - local.tee $3 - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/symbol/_Symbol.hasInstance - drop - global.get $~lib/symbol/_Symbol.isConcatSpreadable - drop - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:std/symbol - ) -) diff --git a/tests/compiler/std/trace.debug.wat b/tests/compiler/std/trace.debug.wat new file mode 100644 index 0000000000..61282af2bd --- /dev/null +++ b/tests/compiler/std/trace.debug.wat @@ -0,0 +1,97 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (global $~lib/memory/__data_end i32 (i32.const 396)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33164)) + (global $~lib/memory/__heap_base i32 (i32.const 33164)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00\00\00") + (data $1 (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00\00\00") + (data $2 (i32.const 108) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 156) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 252) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $start:std/trace + i32.const 32 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 80 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 128 + i32.const 1 + f64.const 1 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 176 + i32.const 2 + f64.const 1 + f64.const 2 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 224 + i32.const 3 + f64.const 1 + f64.const 2 + f64.const 3 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 272 + i32.const 4 + f64.const 1 + f64.const 2 + f64.const 3 + f64.const 4 + f64.const 0 + call $~lib/builtins/trace + i32.const 320 + i32.const 5 + f64.const 1 + f64.const 2 + f64.const 3 + f64.const 4 + f64.const 5 + call $~lib/builtins/trace + i32.const 368 + i32.const 5 + f64.const 1.1 + f64.const 2.2 + f64.const 3.3 + f64.const 4.4 + f64.const 5.5 + call $~lib/builtins/trace + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/trace + ) +) diff --git a/tests/compiler/std/trace.json b/tests/compiler/std/trace.json index bf222c4d2d..d89aa6d3b8 100644 --- a/tests/compiler/std/trace.json +++ b/tests/compiler/std/trace.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", - "--explicitStart" + "--exportStart", "_start" ] -} \ No newline at end of file +} diff --git a/tests/compiler/std/trace.optimized.wat b/tests/compiler/std/trace.optimized.wat deleted file mode 100644 index 7d48814cd2..0000000000 --- a/tests/compiler/std/trace.optimized.wat +++ /dev/null @@ -1,90 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) - (memory $0 1) - (data (i32.const 1024) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t") - (data (i32.const 1120) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t") - (data (i32.const 1152) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t") - (data (i32.const 1184) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t") - (data (i32.const 1232) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t") - (data (i32.const 1264) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t") - (data (i32.const 1296) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l") - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - i32.const 1040 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 1088 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 1136 - i32.const 1 - f64.const 1 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 1168 - i32.const 2 - f64.const 1 - f64.const 2 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 1200 - i32.const 3 - f64.const 1 - f64.const 2 - f64.const 3 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 1248 - i32.const 4 - f64.const 1 - f64.const 2 - f64.const 3 - f64.const 4 - f64.const 0 - call $~lib/builtins/trace - i32.const 1280 - i32.const 5 - f64.const 1 - f64.const 2 - f64.const 3 - f64.const 4 - f64.const 5 - call $~lib/builtins/trace - i32.const 1312 - i32.const 5 - f64.const 1.1 - f64.const 2.2 - f64.const 3.3 - f64.const 4.4 - f64.const 5.5 - call $~lib/builtins/trace - ) -) diff --git a/tests/compiler/std/trace.release.wat b/tests/compiler/std/trace.release.wat new file mode 100644 index 0000000000..bf6eec49ce --- /dev/null +++ b/tests/compiler/std/trace.release.wat @@ -0,0 +1,97 @@ +(module + (type $0 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $1 (func)) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t") + (data $1 (i32.const 1084) ",") + (data $1.1 (i32.const 1096) "\02\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t") + (data $2 (i32.const 1132) ",") + (data $2.1 (i32.const 1144) "\02\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t") + (data $3 (i32.const 1180) ",") + (data $3.1 (i32.const 1192) "\02\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t") + (data $4 (i32.const 1228) ",") + (data $4.1 (i32.const 1240) "\02\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t") + (data $5 (i32.const 1276) ",") + (data $5.1 (i32.const 1288) "\02\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t") + (data $6 (i32.const 1324) ",") + (data $6.1 (i32.const 1336) "\02\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t") + (data $7 (i32.const 1372) ",") + (data $7.1 (i32.const 1384) "\02\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l") + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + i32.const 1056 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1104 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1152 + i32.const 1 + f64.const 1 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1200 + i32.const 2 + f64.const 1 + f64.const 2 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1248 + i32.const 3 + f64.const 1 + f64.const 2 + f64.const 3 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1296 + i32.const 4 + f64.const 1 + f64.const 2 + f64.const 3 + f64.const 4 + f64.const 0 + call $~lib/builtins/trace + i32.const 1344 + i32.const 5 + f64.const 1 + f64.const 2 + f64.const 3 + f64.const 4 + f64.const 5 + call $~lib/builtins/trace + i32.const 1392 + i32.const 5 + f64.const 1.1 + f64.const 2.2 + f64.const 3.3 + f64.const 4.4 + f64.const 5.5 + call $~lib/builtins/trace + ) +) diff --git a/tests/compiler/std/trace.untouched.wat b/tests/compiler/std/trace.untouched.wat deleted file mode 100644 index e838b0c982..0000000000 --- a/tests/compiler/std/trace.untouched.wat +++ /dev/null @@ -1,94 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) - (memory $0 1) - (data (i32.const 16) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00") - (data (i32.const 112) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t\00") - (data (i32.const 144) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t\00") - (data (i32.const 176) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\00") - (data (i32.const 224) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t\00") - (data (i32.const 256) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00") - (data (i32.const 288) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00") - (table $0 1 funcref) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $start:std/trace - i32.const 32 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 80 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 128 - i32.const 1 - f64.const 1 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 160 - i32.const 2 - f64.const 1 - f64.const 2 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 192 - i32.const 3 - f64.const 1 - f64.const 2 - f64.const 3 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 240 - i32.const 4 - f64.const 1 - f64.const 2 - f64.const 3 - f64.const 4 - f64.const 0 - call $~lib/builtins/trace - i32.const 272 - i32.const 5 - f64.const 1 - f64.const 2 - f64.const 3 - f64.const 4 - f64.const 5 - call $~lib/builtins/trace - i32.const 304 - i32.const 5 - f64.const 1.1 - f64.const 2.2 - f64.const 3.3 - f64.const 4.4 - f64.const 5.5 - call $~lib/builtins/trace - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:std/trace - ) -) diff --git a/tests/compiler/std/typedarray.debug.wat b/tests/compiler/std/typedarray.debug.wat new file mode 100644 index 0000000000..1498ca5bde --- /dev/null +++ b/tests/compiler/std/typedarray.debug.wat @@ -0,0 +1,93822 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32) (result i32))) + (type $2 (func (param i32 i32))) + (type $3 (func)) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32) (result i32))) + (type $7 (func (param i64 i32 i32) (result i32))) + (type $8 (func (param i64 i64) (result i32))) + (type $9 (func (param f32 i32 i32) (result i32))) + (type $10 (func (param f64 i32 i32) (result i32))) + (type $11 (func (param i32 i32 i32 i32 i32))) + (type $12 (func (param f64 f64) (result i32))) + (type $13 (func (param f32 f32) (result i32))) + (type $14 (func (param i32 i32 i32 i32 i32 i32))) + (type $15 (func (param i32))) + (type $16 (func (param i64 i64 i32 i32) (result i64))) + (type $17 (func (param i32 i32) (result i64))) + (type $18 (func (param i32 i64 i32) (result i32))) + (type $19 (func (param i32 f64 i32) (result i32))) + (type $20 (func (param f32 f32 i32 i32) (result f32))) + (type $21 (func (param f64 f64 i32 i32) (result f64))) + (type $22 (func (param i64 i32 i32) (result i64))) + (type $23 (func (param i32 i32) (result f64))) + (type $24 (func (param i32 i32 i64) (result i64))) + (type $25 (func (param i32 i32) (result f32))) + (type $26 (func (param i64 i32 i32))) + (type $27 (func (param i32 f32 i32) (result i32))) + (type $28 (func (param i64 i32) (result i32))) + (type $29 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $30 (func (param f32 i32 i32) (result f32))) + (type $31 (func (param f64 i32 i32) (result f64))) + (type $32 (func (param i32 i64 i32))) + (type $33 (func (param i32 i64) (result i32))) + (type $34 (func (param i32 i32 i64))) + (type $35 (func (param i32 i32 f32) (result f32))) + (type $36 (func (param i32 i32 f64) (result f64))) + (type $37 (func (param f32 i32 i32))) + (type $38 (func (param f64 i32 i32))) + (type $39 (func (param i32 i32 i32 i32))) + (type $40 (func (param i32 i32 i64) (result i32))) + (type $41 (func (result i32))) + (type $42 (func (param f32 f32) (result f32))) + (type $43 (func (param f64 f64) (result f64))) + (type $44 (func (param i64) (result i64))) + (type $45 (func (param i32 i64 i32 i32))) + (type $46 (func (param i64) (result i32))) + (type $47 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $48 (func (param i32 f32) (result i32))) + (type $49 (func (param i32 f64) (result i32))) + (type $50 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $51 (func (param i32 i32 f64))) + (type $52 (func (param i32 i32 f32))) + (type $53 (func (param f32) (result i32))) + (type $54 (func (param f64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (global $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) + (global $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) + (global $~lib/typedarray/Uint8ClampedArray.BYTES_PER_ELEMENT i32 (i32.const 1)) + (global $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT i32 (i32.const 2)) + (global $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT i32 (i32.const 2)) + (global $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) + (global $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) + (global $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) + (global $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) + (global $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) + (global $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) + (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) + (global $std/typedarray/forEachValues i32 (i32.const 6128)) + (global $std/typedarray/testArrayReverseValues i32 (i32.const 6592)) + (global $std/typedarray/testArrayIndexOfAndLastIndexOfValues i32 (i32.const 6704)) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $std/typedarray/testArrayWrapValues i32 (i32.const 9904)) + (global $std/typedarray/setSource1 (mut i32) (i32.const 9984)) + (global $std/typedarray/setSource2 (mut i32) (i32.const 10064)) + (global $std/typedarray/setSource3 (mut i32) (i32.const 10160)) + (global $std/typedarray/setSource7 (mut i32) (i32.const 10240)) + (global $~lib/rt/__rtti_base i32 (i32.const 14976)) + (global $~lib/memory/__data_end i32 (i32.const 15296)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 48064)) + (global $~lib/memory/__heap_base i32 (i32.const 48064)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $1 (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $2 (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $3 (i32.const 188) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 380) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 460) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 524) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 588) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 652) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\01\04\05\00\00\00\00\00\00\00") + (data $14 (i32.const 716) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $15 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 796) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") + (data $18 (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") + (data $19 (i32.const 892) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 924) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data $21 (i32.const 956) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 1004) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 1052) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\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") + (data $24 (i32.const 1100) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 1148) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 1196) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 1228) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 1276) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 1324) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 1372) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 1420) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 1468) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 1516) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 1564) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 1612) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 1660) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 1708) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $38 (i32.const 1756) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $39 (i32.const 1804) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 1852) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 1884) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 1916) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 1948) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $44 (i32.const 1980) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $45 (i32.const 2012) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $46 (i32.const 2044) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $47 (i32.const 2076) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $48 (i32.const 2108) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $49 (i32.const 2140) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $50 (i32.const 2172) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $51 (i32.const 2204) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $52 (i32.const 2236) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $53 (i32.const 2268) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data $54 (i32.const 2300) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data $55 (i32.const 2332) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") + (data $57 (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") + (data $58 (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") + (data $61 (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") + (data $62 (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\1d\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") + (data $66 (i32.const 2684) "\1c\00\00\00\00\00\00\00\00\00\00\00!\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") + (data $67 (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") + (data $68 (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00#\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") + (data $69 (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00$\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") + (data $70 (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00%\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $71 (i32.const 2844) "\1c\00\00\00\00\00\00\00\00\00\00\00&\00\00\00\08\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") + (data $72 (i32.const 2876) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00") + (data $73 (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00#\00\00\00\00\00\00\00\00\00\00\00") + (data $74 (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00$\00\00\00\00\00\00\00\00\00\00\00") + (data $75 (i32.const 2972) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00%\00\00\00\00\00\00\00\00\00\00\00") + (data $76 (i32.const 3004) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") + (data $77 (i32.const 3036) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00\00\00\00\00") + (data $78 (i32.const 3068) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00(\00\00\00\00\00\00\00\00\00\00\00") + (data $79 (i32.const 3100) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") + (data $80 (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") + (data $81 (i32.const 3164) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $82 (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $83 (i32.const 3228) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $84 (i32.const 3260) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data $85 (i32.const 3292) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") + (data $86 (i32.const 3324) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $87 (i32.const 3356) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $88 (i32.const 3388) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $89 (i32.const 3420) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $90 (i32.const 3452) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $91 (i32.const 3484) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data $92 (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") + (data $93 (i32.const 3548) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") + (data $94 (i32.const 3580) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data $95 (i32.const 3612) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") + (data $96 (i32.const 3644) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $97 (i32.const 3676) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00;\00\00\00\00\00\00\00\00\00\00\00") + (data $98 (i32.const 3708) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00<\00\00\00\00\00\00\00\00\00\00\00") + (data $99 (i32.const 3740) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00=\00\00\00\00\00\00\00\00\00\00\00") + (data $100 (i32.const 3772) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00>\00\00\00\00\00\00\00\00\00\00\00") + (data $101 (i32.const 3804) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00?\00\00\00\00\00\00\00\00\00\00\00") + (data $102 (i32.const 3836) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00@\00\00\00\00\00\00\00\00\00\00\00") + (data $103 (i32.const 3868) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") + (data $104 (i32.const 3900) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") + (data $105 (i32.const 3932) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") + (data $106 (i32.const 3964) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00D\00\00\00\00\00\00\00\00\00\00\00") + (data $107 (i32.const 3996) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00E\00\00\00\00\00\00\00\00\00\00\00") + (data $108 (i32.const 4028) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00F\00\00\00\00\00\00\00\00\00\00\00") + (data $109 (i32.const 4060) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00G\00\00\00\00\00\00\00\00\00\00\00") + (data $110 (i32.const 4092) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00H\00\00\00\00\00\00\00\00\00\00\00") + (data $111 (i32.const 4124) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00I\00\00\00\00\00\00\00\00\00\00\00") + (data $112 (i32.const 4156) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00J\00\00\00\00\00\00\00\00\00\00\00") + (data $113 (i32.const 4188) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00K\00\00\00\00\00\00\00\00\00\00\00") + (data $114 (i32.const 4220) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00L\00\00\00\00\00\00\00\00\00\00\00") + (data $115 (i32.const 4252) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00M\00\00\00\00\00\00\00\00\00\00\00") + (data $116 (i32.const 4284) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00N\00\00\00\00\00\00\00\00\00\00\00") + (data $117 (i32.const 4316) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00O\00\00\00\00\00\00\00\00\00\00\00") + (data $118 (i32.const 4348) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00P\00\00\00\00\00\00\00\00\00\00\00") + (data $119 (i32.const 4380) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00Q\00\00\00\00\00\00\00\00\00\00\00") + (data $120 (i32.const 4412) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00R\00\00\00\00\00\00\00\00\00\00\00") + (data $121 (i32.const 4444) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00S\00\00\00\00\00\00\00\00\00\00\00") + (data $122 (i32.const 4476) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00T\00\00\00\00\00\00\00\00\00\00\00") + (data $123 (i32.const 4508) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00U\00\00\00\00\00\00\00\00\00\00\00") + (data $124 (i32.const 4540) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00V\00\00\00\00\00\00\00\00\00\00\00") + (data $125 (i32.const 4572) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00W\00\00\00\00\00\00\00\00\00\00\00") + (data $126 (i32.const 4604) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00X\00\00\00\00\00\00\00\00\00\00\00") + (data $127 (i32.const 4636) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00Y\00\00\00\00\00\00\00\00\00\00\00") + (data $128 (i32.const 4668) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00Z\00\00\00\00\00\00\00\00\00\00\00") + (data $129 (i32.const 4700) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00[\00\00\00\00\00\00\00\00\00\00\00") + (data $130 (i32.const 4732) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00\\\00\00\00\00\00\00\00\00\00\00\00") + (data $131 (i32.const 4764) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00]\00\00\00\00\00\00\00\00\00\00\00") + (data $132 (i32.const 4796) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00^\00\00\00\00\00\00\00\00\00\00\00") + (data $133 (i32.const 4828) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00_\00\00\00\00\00\00\00\00\00\00\00") + (data $134 (i32.const 4860) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00`\00\00\00\00\00\00\00\00\00\00\00") + (data $135 (i32.const 4892) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $136 (i32.const 4924) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $137 (i32.const 4956) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") + (data $138 (i32.const 4988) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00d\00\00\00\00\00\00\00\00\00\00\00") + (data $139 (i32.const 5020) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00e\00\00\00\00\00\00\00\00\00\00\00") + (data $140 (i32.const 5052) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00f\00\00\00\00\00\00\00\00\00\00\00") + (data $141 (i32.const 5084) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00g\00\00\00\00\00\00\00\00\00\00\00") + (data $142 (i32.const 5116) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") + (data $143 (i32.const 5148) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00i\00\00\00\00\00\00\00\00\00\00\00") + (data $144 (i32.const 5180) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00j\00\00\00\00\00\00\00\00\00\00\00") + (data $145 (i32.const 5212) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00k\00\00\00\00\00\00\00\00\00\00\00") + (data $146 (i32.const 5244) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00l\00\00\00\00\00\00\00\00\00\00\00") + (data $147 (i32.const 5276) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00m\00\00\00\00\00\00\00\00\00\00\00") + (data $148 (i32.const 5308) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00n\00\00\00\00\00\00\00\00\00\00\00") + (data $149 (i32.const 5340) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00o\00\00\00\00\00\00\00\00\00\00\00") + (data $150 (i32.const 5372) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00p\00\00\00\00\00\00\00\00\00\00\00") + (data $151 (i32.const 5404) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00q\00\00\00\00\00\00\00\00\00\00\00") + (data $152 (i32.const 5436) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00r\00\00\00\00\00\00\00\00\00\00\00") + (data $153 (i32.const 5468) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $154 (i32.const 5500) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00t\00\00\00\00\00\00\00\00\00\00\00") + (data $155 (i32.const 5532) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00u\00\00\00\00\00\00\00\00\00\00\00") + (data $156 (i32.const 5564) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00v\00\00\00\00\00\00\00\00\00\00\00") + (data $157 (i32.const 5596) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00w\00\00\00\00\00\00\00\00\00\00\00") + (data $158 (i32.const 5628) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00x\00\00\00\00\00\00\00\00\00\00\00") + (data $159 (i32.const 5660) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $160 (i32.const 5692) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00z\00\00\00\00\00\00\00\00\00\00\00") + (data $161 (i32.const 5724) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00{\00\00\00\00\00\00\00\00\00\00\00") + (data $162 (i32.const 5756) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00|\00\00\00\00\00\00\00\00\00\00\00") + (data $163 (i32.const 5788) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00}\00\00\00\00\00\00\00\00\00\00\00") + (data $164 (i32.const 5820) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00~\00\00\00\00\00\00\00\00\00\00\00") + (data $165 (i32.const 5852) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00\7f\00\00\00\00\00\00\00\00\00\00\00") + (data $166 (i32.const 5884) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00\80\00\00\00\00\00\00\00\00\00\00\00") + (data $167 (i32.const 5916) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00\81\00\00\00\00\00\00\00\00\00\00\00") + (data $168 (i32.const 5948) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00\82\00\00\00\00\00\00\00\00\00\00\00") + (data $169 (i32.const 5980) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00\83\00\00\00\00\00\00\00\00\00\00\00") + (data $170 (i32.const 6012) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00\84\00\00\00\00\00\00\00\00\00\00\00") + (data $171 (i32.const 6044) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00\85\00\00\00\00\00\00\00\00\00\00\00") + (data $172 (i32.const 6076) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") + (data $173 (i32.const 6108) ",\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\10\00\00\00\d0\17\00\00\d0\17\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $174 (i32.const 6156) "\1c\00\00\00\00\00\00\00\00\00\00\003\00\00\00\08\00\00\00\86\00\00\00\00\00\00\00\00\00\00\00") + (data $175 (i32.const 6188) "\1c\00\00\00\00\00\00\00\00\00\00\004\00\00\00\08\00\00\00\87\00\00\00\00\00\00\00\00\00\00\00") + (data $176 (i32.const 6220) "\1c\00\00\00\00\00\00\00\00\00\00\005\00\00\00\08\00\00\00\88\00\00\00\00\00\00\00\00\00\00\00") + (data $177 (i32.const 6252) "\1c\00\00\00\00\00\00\00\00\00\00\006\00\00\00\08\00\00\00\89\00\00\00\00\00\00\00\00\00\00\00") + (data $178 (i32.const 6284) "\1c\00\00\00\00\00\00\00\00\00\00\007\00\00\00\08\00\00\00\8a\00\00\00\00\00\00\00\00\00\00\00") + (data $179 (i32.const 6316) "\1c\00\00\00\00\00\00\00\00\00\00\008\00\00\00\08\00\00\00\8b\00\00\00\00\00\00\00\00\00\00\00") + (data $180 (i32.const 6348) "\1c\00\00\00\00\00\00\00\00\00\00\009\00\00\00\08\00\00\00\8c\00\00\00\00\00\00\00\00\00\00\00") + (data $181 (i32.const 6380) "\1c\00\00\00\00\00\00\00\00\00\00\00:\00\00\00\08\00\00\00\8d\00\00\00\00\00\00\00\00\00\00\00") + (data $182 (i32.const 6412) "\1c\00\00\00\00\00\00\00\00\00\00\00;\00\00\00\08\00\00\00\8e\00\00\00\00\00\00\00\00\00\00\00") + (data $183 (i32.const 6444) "\1c\00\00\00\00\00\00\00\00\00\00\00<\00\00\00\08\00\00\00\8f\00\00\00\00\00\00\00\00\00\00\00") + (data $184 (i32.const 6476) "\1c\00\00\00\00\00\00\00\00\00\00\00=\00\00\00\08\00\00\00\90\00\00\00\00\00\00\00\00\00\00\00") + (data $185 (i32.const 6508) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $186 (i32.const 6572) ",\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\10\00\00\00\80\19\00\00\80\19\00\00$\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $187 (i32.const 6620) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00") + (data $188 (i32.const 6684) ",\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\10\00\00\00\f0\19\00\00\f0\19\00\00,\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $189 (i32.const 6732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $190 (i32.const 6764) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $191 (i32.const 6892) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $192 (i32.const 6956) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $193 (i32.const 6988) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $194 (i32.const 7388) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $195 (i32.const 8444) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $196 (i32.const 8540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $197 (i32.const 8572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005\00\00\00\00\00\00\00\00\00\00\00") + (data $198 (i32.const 8620) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data $199 (i32.const 8652) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data $200 (i32.const 8684) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $201 (i32.const 8732) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $202 (i32.const 8784) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $203 (i32.const 8840) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\10\00\00\000\'\00\000\'\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $213 (i32.const 10092) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00") + (data $214 (i32.const 10140) ",\00\00\00\00\00\00\00\00\00\00\00?\00\00\00\10\00\00\00\80\'\00\00\80\'\00\00\18\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $215 (i32.const 10188) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\03\00\00\00\92\91\90\00\00\00\00\00\00\00\00\00") + (data $216 (i32.const 10220) ",\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\e0\'\00\00\e0\'\00\00\03\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $217 (i32.const 10268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") + (data $218 (i32.const 10300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $219 (i32.const 10348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") + (data $220 (i32.const 10380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") + (data $221 (i32.const 10412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") + (data $222 (i32.const 10444) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90\00\00") + (data $223 (i32.const 10476) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") + (data $224 (i32.const 10508) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") + (data $225 (i32.const 10556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") + (data $226 (i32.const 10588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") + (data $227 (i32.const 10620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") + (data $228 (i32.const 10652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90\00\00") + (data $229 (i32.const 10684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") + (data $230 (i32.const 10716) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $231 (i32.const 10780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") + (data $232 (i32.const 10812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") + (data $233 (i32.const 10844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") + (data $234 (i32.const 10876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00defg\ff\ff\ff\00\00\00\00\00") + (data $235 (i32.const 10908) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $236 (i32.const 10956) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") + (data $237 (i32.const 11004) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $238 (i32.const 11052) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $239 (i32.const 11100) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $240 (i32.const 11148) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff\00\00\00\00\00\00\00\00") + (data $241 (i32.const 11196) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $242 (i32.const 11244) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") + (data $243 (i32.const 11292) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $244 (i32.const 11340) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $245 (i32.const 11388) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $246 (i32.const 11436) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff\00\00\00\00\00\00\00\00") + (data $247 (i32.const 11484) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $248 (i32.const 11548) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") + (data $249 (i32.const 11596) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $250 (i32.const 11660) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $251 (i32.const 11724) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $252 (i32.const 11788) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff\00\00\00\00") + (data $253 (i32.const 11852) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $254 (i32.const 11916) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") + (data $255 (i32.const 11964) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $256 (i32.const 12028) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $257 (i32.const 12092) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $258 (i32.const 12156) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff\00\00\00\00") + (data $259 (i32.const 12220) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $260 (i32.const 12332) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") + (data $261 (i32.const 12380) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $262 (i32.const 12492) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\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") + (data $263 (i32.const 12604) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\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") + (data $264 (i32.const 12716) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") + (data $265 (i32.const 12828) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $266 (i32.const 12940) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00\00\00") + (data $267 (i32.const 12988) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $268 (i32.const 13100) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\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") + (data $269 (i32.const 13212) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\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") + (data $270 (i32.const 13324) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") + (data $271 (i32.const 13436) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $272 (i32.const 13500) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00") + (data $273 (i32.const 13548) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $274 (i32.const 13612) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A\00\00\00\00\00\00\00\00") + (data $275 (i32.const 13676) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2\00\00\00\00") + (data $276 (i32.const 13740) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $277 (i32.const 13852) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00") + (data $278 (i32.const 13900) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $279 (i32.const 14012) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $280 (i32.const 14124) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00P\00\00\00\00\00\00\00\00\00Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0\00\00\00\00\00\00\00\00\00\00\00\00") + (data $281 (i32.const 14236) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff\00\00\00") + (data $282 (i32.const 14268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff\00\00\00") + (data $283 (i32.const 14300) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\91\00\00\00\00\00\00\00\00\00\00\00") + (data $284 (i32.const 14332) "\1c\00\00\00\00\00\00\00\00\00\00\00F\00\00\00\08\00\00\00\92\00\00\00\00\00\00\00\00\00\00\00") + (data $285 (i32.const 14364) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\93\00\00\00\00\00\00\00\00\00\00\00") + (data $286 (i32.const 14396) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\94\00\00\00\00\00\00\00\00\00\00\00") + (data $287 (i32.const 14428) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\95\00\00\00\00\00\00\00\00\00\00\00") + (data $288 (i32.const 14460) "\1c\00\00\00\00\00\00\00\00\00\00\00G\00\00\00\08\00\00\00\96\00\00\00\00\00\00\00\00\00\00\00") + (data $289 (i32.const 14492) "\1c\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\08\00\00\00\97\00\00\00\00\00\00\00\00\00\00\00") + (data $290 (i32.const 14524) "\1c\00\00\00\00\00\00\00\00\00\00\00H\00\00\00\08\00\00\00\98\00\00\00\00\00\00\00\00\00\00\00") + (data $291 (i32.const 14556) "\1c\00\00\00\00\00\00\00\00\00\00\00I\00\00\00\08\00\00\00\99\00\00\00\00\00\00\00\00\00\00\00") + (data $292 (i32.const 14588) "\1c\00\00\00\00\00\00\00\00\00\00\00I\00\00\00\08\00\00\00\9a\00\00\00\00\00\00\00\00\00\00\00") + (data $293 (i32.const 14620) "\1c\00\00\00\00\00\00\00\00\00\00\00J\00\00\00\08\00\00\00\9b\00\00\00\00\00\00\00\00\00\00\00") + (data $294 (i32.const 14652) "\1c\00\00\00\00\00\00\00\00\00\00\00J\00\00\00\08\00\00\00\9c\00\00\00\00\00\00\00\00\00\00\00") + (data $295 (i32.const 14684) "\1c\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\08\00\00\00\9d\00\00\00\00\00\00\00\00\00\00\00") + (data $296 (i32.const 14716) "\1c\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\08\00\00\00\9e\00\00\00\00\00\00\00\00\00\00\00") + (data $297 (i32.const 14748) "\1c\00\00\00\00\00\00\00\00\00\00\00L\00\00\00\08\00\00\00\9f\00\00\00\00\00\00\00\00\00\00\00") + (data $298 (i32.const 14780) "\1c\00\00\00\00\00\00\00\00\00\00\00L\00\00\00\08\00\00\00\a0\00\00\00\00\00\00\00\00\00\00\00") + (data $299 (i32.const 14812) "\1c\00\00\00\00\00\00\00\00\00\00\00M\00\00\00\08\00\00\00\a1\00\00\00\00\00\00\00\00\00\00\00") + (data $300 (i32.const 14844) "\1c\00\00\00\00\00\00\00\00\00\00\00M\00\00\00\08\00\00\00\a2\00\00\00\00\00\00\00\00\00\00\00") + (data $301 (i32.const 14876) "\1c\00\00\00\00\00\00\00\00\00\00\00N\00\00\00\08\00\00\00\a3\00\00\00\00\00\00\00\00\00\00\00") + (data $302 (i32.const 14908) "\1c\00\00\00\00\00\00\00\00\00\00\00N\00\00\00\08\00\00\00\a4\00\00\00\00\00\00\00\00\00\00\00") + (data $303 (i32.const 14940) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\a5\00\00\00\00\00\00\00\00\00\00\00") + (data $304 (i32.const 14976) "O\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00B\08\00\00\02\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\19\00\00\02\1a\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\01\00\00\02\n\00\00\02\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 166 166 funcref) + (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|1 $"std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 336 + i32.const 400 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 208 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 144 + i32.const 480 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 144 + i32.const 208 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 208 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/arraybuffer/ArrayBufferView#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a f64) + (local $b f64) + (local $min f64) + (local $max f64) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $a + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $12) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $12) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $a + f64.store offset=16 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $max + f64.store offset=16 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $12) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $a + f64.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $min + f64.store offset=8 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp f64) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $12) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $12) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + f64.load + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $tmp + f64.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $12) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/nodePower (param $left i32) (param $right i32) (param $startA i32) (param $startB i32) (param $endB i32) (result i32) + (local $n i64) + (local $s i32) + (local $l i32) + (local $r i32) + (local $a i64) + (local $b i64) + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + i64.extend_i32_u + local.set $n + local.get $startB + local.get $left + i32.const 1 + i32.shl + i32.sub + local.set $s + local.get $startA + local.get $s + i32.add + local.set $l + local.get $endB + local.get $s + i32.add + i32.const 1 + i32.add + local.set $r + local.get $l + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $n + i64.div_u + local.set $a + local.get $r + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $n + i64.div_u + local.set $b + local.get $a + local.get $b + i64.xor + i32.wrap_i64 + i32.clz + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a f64) + (local $b f64) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add + f64.load + f64.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + f64.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + local.set $a + local.get $buffer + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $12) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $a + f64.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $b + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a f64) (param $b f64) (result i32) + (local $ia i64) + (local $ib i64) + local.get $a + i64.reinterpret_f64 + local.set $ia + local.get $b + i64.reinterpret_f64 + local.set $ib + local.get $ia + local.get $ia + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.set $ia + local.get $ib + local.get $ib + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.set $ib + local.get $ia + local.get $ib + i64.gt_s + local.get $ia + local.get $ib + i64.lt_s + i32.sub + return + ) + (func $~lib/util/bytes/FILL (param $ptr i32) (param $len i32) (param $value i32) (param $start i32) (param $end 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.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $start + i32.add + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + else + local.get $start + local.tee $7 + local.get $len + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $start + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end + i32.add + local.tee $9 + i32.const 0 + local.tee $10 + local.get $9 + local.get $10 + i32.gt_u + select + else + local.get $end + local.tee $11 + local.get $len + local.tee $12 + local.get $11 + local.get $12 + i32.lt_s + select + end + local.set $end + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $start + local.get $end + i32.lt_s + if + local.get $ptr + local.get $start + i32.add + local.get $value + local.get $end + local.get $start + i32.sub + memory.fill + end + ) + (func $~lib/rt/__newBuffer (param $size i32) (param $id i32) (param $data i32) (result i32) + (local $buffer i32) + local.get $size + local.get $id + call $~lib/rt/itcms/__new + local.set $buffer + local.get $data + if + local.get $buffer + local.get $data + local.get $size + memory.copy + end + local.get $buffer + return + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/util/bytes/FILL (param $ptr i32) (param $len i32) (param $value i32) (param $start i32) (param $end 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.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $start + i32.add + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + else + local.get $start + local.tee $7 + local.get $len + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $start + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end + i32.add + local.tee $9 + i32.const 0 + local.tee $10 + local.get $9 + local.get $10 + i32.gt_u + select + else + local.get $end + local.tee $11 + local.get $len + local.tee $12 + local.get $11 + local.get $12 + i32.lt_s + select + end + local.set $end + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 1 + drop + local.get $value + i32.const 0 + i32.eq + local.get $value + i32.const -1 + i32.eq + i32.or + if + local.get $start + local.get $end + i32.lt_s + if + local.get $ptr + local.get $start + i32.const 2 + i32.shl + i32.add + local.get $value + local.get $end + local.get $start + i32.sub + i32.const 2 + i32.shl + memory.fill + end + return + end + loop $for-loop|0 + local.get $start + local.get $end + i32.lt_s + if + local.get $ptr + local.get $start + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $start + i32.const 1 + i32.add + local.set $start + br $for-loop|0 + end + end + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $acc i64) (param $val i64) (param $$2 i32) (param $$3 i32) (result i64) + local.get $acc + local.get $val + i64.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $acc i64) (param $val i64) (param $$2 i32) (param $$3 i32) (result i64) + local.get $acc + local.get $val + i64.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $acc f32) (param $val f32) (param $$2 i32) (param $$3 i32) (result f32) + local.get $acc + local.get $val + f32.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $acc f64) (param $val f64) (param $$2 i32) (param $$3 i32) (result f64) + local.get $acc + local.get $val + f64.add + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $acc i32) (param $val i32) (param $$2 i32) (param $$3 i32) (result i32) + local.get $acc + local.get $val + i32.add + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $acc i64) (param $val i64) (param $$2 i32) (param $$3 i32) (result i64) + local.get $acc + local.get $val + i64.add + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $acc i64) (param $val i64) (param $$2 i32) (param $$3 i32) (result i64) + local.get $acc + local.get $val + i64.add + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $acc f32) (param $val f32) (param $$2 i32) (param $$3 i32) (result f32) + local.get $acc + local.get $val + f32.add + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $acc f64) (param $val f64) (param $$2 i32) (param $$3 i32) (result f64) + local.get $acc + local.get $val + f64.add + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + local.get $value + i32.mul + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + local.get $value + i32.mul + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + local.get $value + i32.mul + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + local.get $value + i32.mul + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + local.get $value + i32.mul + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + local.get $value + i32.mul + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + local.get $value + i32.mul + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $value i64) (param $$1 i32) (param $$2 i32) (result i64) + local.get $value + local.get $value + i64.mul + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $value i64) (param $$1 i32) (param $$2 i32) (result i64) + local.get $value + local.get $value + i64.mul + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $value f32) (param $$1 i32) (param $$2 i32) (result f32) + local.get $value + local.get $value + f32.mul + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $value f64) (param $$1 i32) (param $$2 i32) (result f64) + local.get $value + local.get $value + f64.mul + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend8_s + i32.const 2 + i32.gt_s + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 2 + i32.gt_u + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 2 + i32.gt_u + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend16_s + i32.const 2 + i32.gt_s + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 65535 + i32.and + i32.const 2 + i32.gt_u + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 2 + i32.gt_s + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 2 + i32.gt_u + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 2 + i64.gt_s + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 2 + i64.gt_u + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $value f32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f32.const 2 + f32.gt + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $value f64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f64.const 2 + f64.gt + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend8_s + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend8_s + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend16_s + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend16_s + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 65535 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 65535 + i32.and + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 2 + i64.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 0 + i64.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 2 + i64.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 0 + i64.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $value f32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f32.const 2 + f32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1" (param $value f32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f32.const 0 + f32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $value f64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f64.const 2 + f64.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1" (param $value f64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f64.const 0 + f64.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend8_s + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend8_s + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend16_s + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend16_s + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 65535 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 65535 + i32.and + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 2 + i64.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 4 + i64.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 2 + i64.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 4 + i64.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $value f32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f32.const 2 + f32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" (param $value f32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f32.const 4 + f32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $value f64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f64.const 2 + f64.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" (param $value f64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f64.const 4 + f64.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend8_s + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend8_s + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend16_s + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend16_s + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 65535 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 65535 + i32.and + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 2 + i64.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 4 + i64.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 2 + i64.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 4 + i64.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $value f32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f32.const 2 + f32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" (param $value f32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f32.const 4 + f32.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $value f64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f64.const 2 + f64.eq + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" (param $value f64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f64.const 4 + f64.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend8_s + i32.const 2 + i32.rem_s + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend8_s + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 2 + i32.rem_u + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 2 + i32.rem_u + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend16_s + i32.const 2 + i32.rem_s + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.extend16_s + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 65535 + i32.and + i32.const 2 + i32.rem_u + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 65535 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 2 + i32.rem_s + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 2 + i32.rem_u + i32.const 0 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1" (param $value i32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 2 + i64.rem_s + i64.const 0 + i64.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 2 + i64.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 2 + i64.rem_u + i64.const 0 + i64.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1" (param $value i64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + i64.const 2 + i64.eq + ) + (func $~lib/math/NativeMathf.mod (param $x f32) (param $y f32) (result f32) + (local $ux i32) + (local $uy i32) + (local $ex i32) + (local $ey i32) + (local $sm i32) + (local $uy1 i32) + (local $m f32) + (local $ux1 i32) + (local $shift i32) + local.get $y + f32.abs + f32.const 1 + f32.eq + if + local.get $x + local.get $x + f32.trunc + f32.sub + local.get $x + f32.copysign + return + end + local.get $x + i32.reinterpret_f32 + local.set $ux + local.get $y + i32.reinterpret_f32 + local.set $uy + local.get $ux + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $ex + local.get $uy + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $ey + local.get $ux + i32.const -2147483648 + i32.and + local.set $sm + local.get $uy + i32.const 1 + i32.shl + local.set $uy1 + local.get $uy1 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $ex + i32.const 255 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $y + local.get $y + f32.ne + end + if + local.get $x + local.get $y + f32.mul + local.set $m + local.get $m + local.get $m + f32.div + return + end + local.get $ux + i32.const 1 + i32.shl + local.set $ux1 + local.get $ux1 + local.get $uy1 + i32.le_u + if + local.get $x + local.get $ux1 + local.get $uy1 + i32.ne + f32.convert_i32_u + f32.mul + return + end + local.get $ex + i32.eqz + if + local.get $ex + local.get $ux + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $ex + local.get $ux + i32.const 1 + local.get $ex + i32.sub + i32.shl + local.set $ux + else + local.get $ux + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $ux + local.get $ux + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $ux + end + local.get $ey + i32.eqz + if + local.get $ey + local.get $uy + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $ey + local.get $uy + i32.const 1 + local.get $ey + i32.sub + i32.shl + local.set $uy + else + local.get $uy + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $uy + local.get $uy + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $uy + end + loop $while-continue|0 + local.get $ex + local.get $ey + i32.gt_s + if + local.get $ux + local.get $uy + i32.ge_u + if + local.get $ux + local.get $uy + i32.eq + if + f32.const 0 + local.get $x + f32.mul + return + end + local.get $ux + local.get $uy + i32.sub + local.set $ux + end + local.get $ux + i32.const 1 + i32.shl + local.set $ux + local.get $ex + i32.const 1 + i32.sub + local.set $ex + br $while-continue|0 + end + end + local.get $ux + local.get $uy + i32.ge_u + if + local.get $ux + local.get $uy + i32.eq + if + f32.const 0 + local.get $x + f32.mul + return + end + local.get $ux + local.get $uy + i32.sub + local.set $ux + end + local.get $ux + i32.const 8 + i32.shl + i32.clz + local.set $shift + local.get $ex + local.get $shift + i32.sub + local.set $ex + local.get $ux + local.get $shift + i32.shl + local.set $ux + local.get $ex + i32.const 0 + i32.gt_s + if + local.get $ux + i32.const 1 + i32.const 23 + i32.shl + i32.sub + local.set $ux + local.get $ux + local.get $ex + i32.const 23 + i32.shl + i32.or + local.set $ux + else + local.get $ux + i32.const 0 + local.get $ex + i32.sub + i32.const 1 + i32.add + i32.shr_u + local.set $ux + end + local.get $ux + local.get $sm + i32.or + f32.reinterpret_i32 + return + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $value f32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f32.const 2 + call $~lib/math/NativeMathf.mod + f32.const 0 + f32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1" (param $value f32) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f32.const 2 + f32.eq + ) + (func $~lib/math/NativeMath.mod (param $x f64) (param $y f64) (result f64) + (local $ux i64) + (local $uy i64) + (local $ex i64) + (local $ey i64) + (local $sx i64) + (local $uy1 i64) + (local $m f64) + (local $ux1 i64) + (local $shift i64) + local.get $y + f64.abs + f64.const 1 + f64.eq + if + local.get $x + local.get $x + f64.trunc + f64.sub + local.get $x + f64.copysign + return + end + local.get $x + i64.reinterpret_f64 + local.set $ux + local.get $y + i64.reinterpret_f64 + local.set $uy + local.get $ux + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $ex + local.get $uy + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $ey + local.get $ux + i64.const 63 + i64.shr_u + local.set $sx + local.get $uy + i64.const 1 + i64.shl + local.set $uy1 + local.get $uy1 + i64.const 0 + i64.eq + if (result i32) + i32.const 1 + else + local.get $ex + i64.const 2047 + i64.eq + end + if (result i32) + i32.const 1 + else + local.get $y + local.get $y + f64.ne + end + if + local.get $x + local.get $y + f64.mul + local.set $m + local.get $m + local.get $m + f64.div + return + end + local.get $ux + i64.const 1 + i64.shl + local.set $ux1 + local.get $ux1 + local.get $uy1 + i64.le_u + if + local.get $x + local.get $ux1 + local.get $uy1 + i64.ne + f64.convert_i32_u + f64.mul + return + end + local.get $ex + i64.const 0 + i64.ne + i32.eqz + if + local.get $ex + local.get $ux + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $ex + local.get $ux + i64.const 1 + local.get $ex + i64.sub + i64.shl + local.set $ux + else + local.get $ux + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $ux + local.get $ux + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $ux + end + local.get $ey + i64.const 0 + i64.ne + i32.eqz + if + local.get $ey + local.get $uy + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $ey + local.get $uy + i64.const 1 + local.get $ey + i64.sub + i64.shl + local.set $uy + else + local.get $uy + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $uy + local.get $uy + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $uy + end + loop $while-continue|0 + local.get $ex + local.get $ey + i64.gt_s + if + local.get $ux + local.get $uy + i64.ge_u + if + local.get $ux + local.get $uy + i64.eq + if + f64.const 0 + local.get $x + f64.mul + return + end + local.get $ux + local.get $uy + i64.sub + local.set $ux + end + local.get $ux + i64.const 1 + i64.shl + local.set $ux + local.get $ex + i64.const 1 + i64.sub + local.set $ex + br $while-continue|0 + end + end + local.get $ux + local.get $uy + i64.ge_u + if + local.get $ux + local.get $uy + i64.eq + if + f64.const 0 + local.get $x + f64.mul + return + end + local.get $ux + local.get $uy + i64.sub + local.set $ux + end + local.get $ux + i64.const 11 + i64.shl + i64.clz + local.set $shift + local.get $ex + local.get $shift + i64.sub + local.set $ex + local.get $ux + local.get $shift + i64.shl + local.set $ux + local.get $ex + i64.const 0 + i64.gt_s + if + local.get $ux + i64.const 1 + i64.const 52 + i64.shl + i64.sub + local.set $ux + local.get $ux + local.get $ex + i64.const 52 + i64.shl + i64.or + local.set $ux + else + local.get $ux + i64.const 0 + local.get $ex + i64.sub + i64.const 1 + i64.add + i64.shr_u + local.set $ux + end + local.get $ux + local.get $sx + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + return + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $value f64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f64.const 2 + call $~lib/math/NativeMath.mod + f64.const 0 + f64.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1" (param $value f64) (param $$1 i32) (param $$2 i32) (result i32) + local.get $value + f64.const 2 + f64.eq + ) + (func $~lib/polyfills/bswap (param $value i64) (result i64) + (local $a i64) + (local $b i64) + (local $v i64) + i32.const 1 + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $value + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.set $a + local.get $value + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + local.set $v + local.get $v + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.set $a + local.get $v + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + local.set $b + local.get $a + local.get $b + i64.or + i64.const 32 + i64.rotr + return + ) + (func $~lib/util/bytes/REVERSE (param $ptr i32) (param $len i32) + (local $i i32) + (local $tail i32) + (local $hlen i32) + (local $front i32) + (local $back i32) + (local $temp i64) + (local $front|8 i32) + (local $back|9 i32) + (local $temp|10 i32) + local.get $len + i32.const 1 + i32.gt_u + if + i32.const 0 + local.set $i + local.get $len + i32.const 1 + i32.shr_u + local.set $hlen + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $len + i32.const 8 + i32.sub + local.set $tail + loop $while-continue|0 + local.get $i + i32.const 7 + i32.add + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.add + local.set $front + local.get $ptr + local.get $tail + i32.add + local.get $i + i32.sub + local.set $back + local.get $front + i64.load + call $~lib/polyfills/bswap + local.set $temp + local.get $front + local.get $back + i64.load + call $~lib/polyfills/bswap + i64.store + local.get $back + local.get $temp + i64.store + local.get $i + i32.const 8 + i32.add + local.set $i + br $while-continue|0 + end + end + i32.const 1 + i32.const 2 + i32.eq + drop + local.get $len + i32.const 1 + i32.sub + local.set $tail + loop $while-continue|1 + local.get $i + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $front|8 + local.get $ptr + local.get $tail + local.get $i + i32.sub + i32.const 0 + i32.shl + i32.add + local.set $back|9 + local.get $front|8 + i32.load8_u + local.set $temp|10 + local.get $front|8 + local.get $back|9 + i32.load8_u + i32.store8 + local.get $back|9 + local.get $temp|10 + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $while-continue|1 + end + end + end + ) + (func $~lib/util/bytes/REVERSE (param $ptr i32) (param $len i32) + (local $i i32) + (local $tail i32) + (local $hlen i32) + (local $front i32) + (local $back i32) + (local $temp i32) + (local $front|8 i32) + (local $back|9 i32) + (local $temp|10 i32) + local.get $len + i32.const 1 + i32.gt_u + if + i32.const 0 + local.set $i + local.get $len + i32.const 1 + i32.shr_u + local.set $hlen + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $len + i32.const 2 + i32.sub + local.set $tail + loop $while-continue|0 + local.get $i + i32.const 1 + i32.add + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $front + local.get $ptr + local.get $tail + local.get $i + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $back + local.get $back + i32.load + i32.const 16 + i32.rotr + local.set $temp + local.get $back + local.get $front + i32.load + i32.const 16 + i32.rotr + i32.store + local.get $front + local.get $temp + i32.store + local.get $i + i32.const 2 + i32.add + local.set $i + br $while-continue|0 + end + end + local.get $len + i32.const 1 + i32.sub + local.set $tail + loop $while-continue|1 + local.get $i + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $front|8 + local.get $ptr + local.get $tail + local.get $i + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $back|9 + local.get $front|8 + i32.load16_u + local.set $temp|10 + local.get $front|8 + local.get $back|9 + i32.load16_u + i32.store16 + local.get $back|9 + local.get $temp|10 + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $while-continue|1 + end + end + end + ) + (func $~lib/util/bytes/REVERSE (param $ptr i32) (param $len i32) + (local $i i32) + (local $tail i32) + (local $hlen i32) + (local $front i32) + (local $back i32) + (local $temp i32) + local.get $len + i32.const 1 + i32.gt_u + if + i32.const 0 + local.set $i + local.get $len + i32.const 1 + i32.shr_u + local.set $hlen + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + local.get $len + i32.const 1 + i32.sub + local.set $tail + loop $while-continue|0 + local.get $i + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $front + local.get $ptr + local.get $tail + local.get $i + i32.sub + i32.const 2 + i32.shl + i32.add + local.set $back + local.get $front + i32.load + local.set $temp + local.get $front + local.get $back + i32.load + i32.store + local.get $back + local.get $temp + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $while-continue|0 + end + end + end + ) + (func $~lib/util/bytes/REVERSE (param $ptr i32) (param $len i32) + (local $i i32) + (local $tail i32) + (local $hlen i32) + (local $front i32) + (local $back i32) + (local $temp i64) + local.get $len + i32.const 1 + i32.gt_u + if + i32.const 0 + local.set $i + local.get $len + i32.const 1 + i32.shr_u + local.set $hlen + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + local.get $len + i32.const 1 + i32.sub + local.set $tail + loop $while-continue|0 + local.get $i + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $front + local.get $ptr + local.get $tail + local.get $i + i32.sub + i32.const 3 + i32.shl + i32.add + local.set $back + local.get $front + i64.load + local.set $temp + local.get $front + local.get $back + i64.load + i64.store + local.get $back + local.get $temp + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $while-continue|0 + end + end + end + ) + (func $~lib/util/bytes/REVERSE (param $ptr i32) (param $len i32) + (local $i i32) + (local $tail i32) + (local $hlen i32) + (local $front i32) + (local $back i32) + (local $temp f32) + local.get $len + i32.const 1 + i32.gt_u + if + i32.const 0 + local.set $i + local.get $len + i32.const 1 + i32.shr_u + local.set $hlen + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + local.get $len + i32.const 1 + i32.sub + local.set $tail + loop $while-continue|0 + local.get $i + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $front + local.get $ptr + local.get $tail + local.get $i + i32.sub + i32.const 2 + i32.shl + i32.add + local.set $back + local.get $front + f32.load + local.set $temp + local.get $front + local.get $back + f32.load + f32.store + local.get $back + local.get $temp + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $while-continue|0 + end + end + end + ) + (func $~lib/util/bytes/REVERSE (param $ptr i32) (param $len i32) + (local $i i32) + (local $tail i32) + (local $hlen i32) + (local $front i32) + (local $back i32) + (local $temp f64) + local.get $len + i32.const 1 + i32.gt_u + if + i32.const 0 + local.set $i + local.get $len + i32.const 1 + i32.shr_u + local.set $hlen + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + local.get $len + i32.const 1 + i32.sub + local.set $tail + loop $while-continue|0 + local.get $i + local.get $hlen + i32.lt_u + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $front + local.get $ptr + local.get $tail + local.get $i + i32.sub + i32.const 3 + i32.shl + i32.add + local.set $back + local.get $front + f64.load + local.set $temp + local.get $front + local.get $back + f64.load + f64.store + local.get $back + local.get $temp + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $while-continue|0 + end + end + end + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 6988 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 6988 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 6988 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 6988 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 7408 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 7408 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 8464 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 8464 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i32) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + i32.const 0 + local.set $sign + i32.const 1 + drop + local.get $value + i32.extend8_s + i32.const 0 + i32.lt_s + local.set $sign + local.get $sign + if + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $value + i32.extend8_s + i32.const -128 + i32.eq + if + local.get $buffer + i32.const 45 + i64.extend_i32_s + i32.const 48 + i32.const 1 + i32.add + i64.extend_i32_s + i64.const 16 + i64.shl + i64.or + i32.const 48 + i32.const 2 + i32.add + i64.extend_i32_s + i64.const 32 + i64.shl + i64.or + i32.const 48 + i32.const 8 + i32.add + i64.extend_i32_s + i64.const 48 + i64.shl + i64.or + i64.store + i32.const 4 + return + end + i32.const 1 + i32.const 2 + i32.eq + drop + local.get $buffer + i32.const 45 + i32.store16 + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 1 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $value + i32.extend8_s + i32.const 10 + i32.lt_u + if + local.get $dest + local.get $value + i32.extend8_s + i32.const 48 + i32.or + i32.store16 + i32.const 1 + local.get $sign + i32.add + return + end + i32.const 0 + local.set $decimals + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $value + i32.extend8_s + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i32) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + i32.const 0 + local.set $sign + i32.const 0 + drop + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop + local.get $value + i32.const 255 + i32.and + i32.const 10 + i32.lt_u + if + local.get $buffer + local.get $value + i32.const 255 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + i32.const 0 + local.set $decimals + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 255 + i32.and + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i32) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + i32.const 0 + local.set $sign + i32.const 1 + drop + local.get $value + i32.extend16_s + i32.const 0 + i32.lt_s + local.set $sign + local.get $sign + if + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $value + i32.extend16_s + i32.const -32768 + i32.eq + if + local.get $buffer + i32.const 45 + i64.extend_i32_s + i32.const 48 + i32.const 3 + i32.add + i64.extend_i32_s + i64.const 16 + i64.shl + i64.or + i32.const 48 + i32.const 2 + i32.add + i64.extend_i32_s + i64.const 32 + i64.shl + i64.or + i32.const 48 + i32.const 7 + i32.add + i64.extend_i32_s + i64.const 48 + i64.shl + i64.or + i64.store + local.get $buffer + i32.const 8 + i32.add + i32.const 48 + i32.const 6 + i32.add + i32.const 0 + i32.shl + i32.const 48 + i32.const 8 + i32.add + i32.const 16 + i32.shl + i32.or + i32.store + i32.const 6 + return + end + local.get $buffer + i32.const 45 + i32.store16 + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 1 + drop + i32.const 2 + i32.const 4 + i32.le_u + drop + local.get $value + i32.extend16_s + i32.const 10 + i32.lt_u + if + local.get $dest + local.get $value + i32.extend16_s + i32.const 48 + i32.or + i32.store16 + i32.const 1 + local.get $sign + i32.add + return + end + i32.const 0 + local.set $decimals + i32.const 2 + i32.const 4 + i32.le_u + drop + local.get $value + i32.extend16_s + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i32) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + i32.const 0 + local.set $sign + i32.const 0 + drop + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop + local.get $value + i32.const 65535 + i32.and + i32.const 10 + i32.lt_u + if + local.get $buffer + local.get $value + i32.const 65535 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + i32.const 0 + local.set $decimals + i32.const 2 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 65535 + i32.and + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i32) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + i32.const 0 + local.set $sign + i32.const 1 + drop + local.get $value + i32.const 0 + i32.lt_s + local.set $sign + local.get $sign + if + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + local.get $buffer + i32.const 45 + i32.store16 + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + i32.lt_u + if + local.get $dest + local.get $value + i32.const 48 + i32.or + i32.store16 + i32.const 1 + local.get $sign + i32.add + return + end + i32.const 0 + local.set $decimals + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $value + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i32) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + i32.const 0 + local.set $sign + i32.const 0 + drop + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop + local.get $value + i32.const 10 + i32.lt_u + if + local.get $buffer + local.get $value + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + i32.const 0 + local.set $decimals + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $value + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/util/number/decimalCount64High (param $value i64) (result i32) + local.get $value + i64.const 1000000000000000 + i64.lt_u + if + local.get $value + i64.const 1000000000000 + i64.lt_u + if + i32.const 10 + local.get $value + i64.const 100000000000 + i64.ge_u + i32.add + local.get $value + i64.const 10000000000 + i64.ge_u + i32.add + return + else + i32.const 13 + local.get $value + i64.const 100000000000000 + i64.ge_u + i32.add + local.get $value + i64.const 10000000000000 + i64.ge_u + i32.add + return + end + unreachable + else + local.get $value + i64.const 100000000000000000 + i64.lt_u + if + i32.const 16 + local.get $value + i64.const 10000000000000000 + i64.ge_u + i32.add + return + else + i32.const 18 + local.get $value + i64.const -8446744073709551616 + i64.ge_u + i32.add + local.get $value + i64.const 1000000000000000000 + i64.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa64_dec_lut (param $buffer i32) (param $num i64) (param $offset i32) + (local $t i64) + (local $r i32) + (local $b i32) + (local $c i32) + (local $b1 i32) + (local $b2 i32) + (local $c1 i32) + (local $c2 i32) + (local $digits1 i64) + (local $digits2 i64) + loop $while-continue|0 + local.get $num + i64.const 100000000 + i64.ge_u + if + local.get $num + i64.const 100000000 + i64.div_u + local.set $t + local.get $num + local.get $t + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 10000 + i32.div_u + local.set $b + local.get $r + i32.const 10000 + i32.rem_u + local.set $c + local.get $b + i32.const 100 + i32.div_u + local.set $b1 + local.get $b + i32.const 100 + i32.rem_u + local.set $b2 + local.get $c + i32.const 100 + i32.div_u + local.set $c1 + local.get $c + i32.const 100 + i32.rem_u + local.set $c2 + i32.const 6988 + local.get $c1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 6988 + local.get $c2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + i32.const 6988 + local.get $b1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 6988 + local.get $b2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $buffer + local.get $num + i32.wrap_i64 + local.get $offset + call $~lib/util/number/utoa32_dec_lut + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i64) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + (local $val64 i64) + (local $buffer|10 i32) + (local $num|11 i64) + (local $offset|12 i32) + i32.const 0 + local.set $sign + i32.const 1 + drop + local.get $value + i64.const 0 + i64.lt_s + local.set $sign + local.get $sign + if + i32.const 8 + i32.const 1 + i32.eq + drop + i32.const 8 + i32.const 2 + i32.eq + drop + local.get $buffer + i32.const 45 + i32.store16 + i64.const 0 + local.get $value + i64.sub + local.set $value + end + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $value + i64.const 10 + i64.lt_u + if + local.get $dest + local.get $value + i32.const 48 + i64.extend_i32_s + i64.or + i64.store16 + i32.const 1 + local.get $sign + i32.add + return + end + i32.const 0 + local.set $decimals + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + local.set $val64 + local.get $val64 + call $~lib/util/number/decimalCount64High + local.set $decimals + local.get $dest + local.set $buffer|10 + local.get $val64 + local.set $num|11 + local.get $decimals + local.set $offset|12 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|10 + local.get $num|11 + local.get $offset|12 + call $~lib/util/number/utoa64_dec_lut + end + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/util/number/itoa_buffered (param $buffer i32) (param $value i64) (result i32) + (local $sign i32) + (local $dest i32) + (local $decimals i32) + (local $val32 i32) + (local $buffer|6 i32) + (local $num i32) + (local $offset i32) + (local $val64 i64) + (local $buffer|10 i32) + (local $num|11 i64) + (local $offset|12 i32) + i32.const 0 + local.set $sign + i32.const 0 + drop + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.set $dest + i32.const 0 + i32.const 1 + i32.le_s + drop + i32.const 0 + drop + local.get $value + i64.const 10 + i64.lt_u + if + local.get $buffer + local.get $value + i32.const 48 + i64.extend_i32_s + i64.or + i64.store16 + i32.const 1 + return + end + i32.const 0 + local.set $decimals + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + local.get $dest + local.set $buffer|6 + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|6 + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + local.set $val64 + local.get $val64 + call $~lib/util/number/decimalCount64High + local.set $decimals + local.get $dest + local.set $buffer|10 + local.get $val64 + local.set $num|11 + local.get $decimals + local.set $offset|12 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|10 + local.get $num|11 + local.get $offset|12 + call $~lib/util/number/utoa64_dec_lut + end + local.get $sign + local.get $decimals + i32.add + return + ) + (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) + (local $one_exp i32) + (local $one_frc i64) + (local $mask i64) + (local $wp_w_frc i64) + (local $p1 i32) + (local $p2 i64) + (local $kappa i32) + (local $len i32) + (local $d i32) + (local $16 i32) + (local $17 i32) + (local $tmp i64) + (local $buffer|19 i32) + (local $len|20 i32) + (local $delta|21 i64) + (local $rest i64) + (local $ten_kappa i64) + (local $wp_w i64) + (local $lastp i32) + (local $digit i32) + (local $d|27 i64) + (local $28 i32) + (local $buffer|29 i32) + (local $len|30 i32) + (local $delta|31 i64) + (local $rest|32 i64) + (local $ten_kappa|33 i64) + (local $wp_w|34 i64) + (local $lastp|35 i32) + (local $digit|36 i32) + i32.const 0 + local.get $mp_exp + i32.sub + local.set $one_exp + i64.const 1 + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $one_frc + local.get $one_frc + i64.const 1 + i64.sub + local.set $mask + local.get $mp_frc + local.get $w_frc + i64.sub + local.set $wp_w_frc + local.get $mp_frc + local.get $one_exp + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $p1 + local.get $mp_frc + local.get $mask + i64.and + local.set $p2 + local.get $p1 + call $~lib/util/number/decimalCount32 + local.set $kappa + local.get $sign + local.set $len + loop $while-continue|0 + local.get $kappa + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $kappa + local.set $16 + local.get $16 + i32.const 10 + i32.eq + br_if $case0|1 + local.get $16 + i32.const 9 + i32.eq + br_if $case1|1 + local.get $16 + i32.const 8 + i32.eq + br_if $case2|1 + local.get $16 + i32.const 7 + i32.eq + br_if $case3|1 + local.get $16 + i32.const 6 + i32.eq + br_if $case4|1 + local.get $16 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $16 + i32.const 4 + i32.eq + br_if $case6|1 + local.get $16 + i32.const 3 + i32.eq + br_if $case7|1 + local.get $16 + i32.const 2 + i32.eq + br_if $case8|1 + local.get $16 + i32.const 1 + i32.eq + br_if $case9|1 + br $case10|1 + end + local.get $p1 + i32.const 1000000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100 + i32.div_u + local.set $d + local.get $p1 + i32.const 100 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10 + i32.div_u + local.set $d + local.get $p1 + i32.const 10 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + local.set $d + i32.const 0 + local.set $p1 + br $break|1 + end + i32.const 0 + local.set $d + br $break|1 + end + local.get $d + local.get $len + i32.or + if + local.get $buffer + local.get $len + local.tee $17 + i32.const 1 + i32.add + local.set $len + local.get $17 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p1 + i64.extend_i32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.get $p2 + i64.add + local.set $tmp + local.get $tmp + local.get $delta + i64.le_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $buffer + local.set $buffer|19 + local.get $len + local.set $len|20 + local.get $delta + local.set $delta|21 + local.get $tmp + local.set $rest + i32.const 9712 + local.get $kappa + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $ten_kappa + local.get $wp_w_frc + local.set $wp_w + local.get $buffer|19 + local.get $len|20 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp + local.get $lastp + i32.load16_u + local.set $digit + loop $while-continue|3 + local.get $rest + local.get $wp_w + i64.lt_u + if (result i32) + local.get $delta|21 + local.get $rest + i64.sub + local.get $ten_kappa + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w + local.get $rest + i64.sub + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit + i32.const 1 + i32.sub + local.set $digit + local.get $rest + local.get $ten_kappa + i64.add + local.set $rest + br $while-continue|3 + end + end + local.get $lastp + local.get $digit + i32.store16 + local.get $len + return + end + br $while-continue|0 + end + end + loop $while-continue|4 + i32.const 1 + if + local.get $p2 + i64.const 10 + i64.mul + local.set $p2 + local.get $delta + i64.const 10 + i64.mul + local.set $delta + local.get $p2 + local.get $one_exp + i64.extend_i32_s + i64.shr_u + local.set $d|27 + local.get $d|27 + local.get $len + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $buffer + local.get $len + local.tee $28 + i32.const 1 + i32.add + local.set $len + local.get $28 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d|27 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $p2 + local.get $mask + i64.and + local.set $p2 + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p2 + local.get $delta + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $wp_w_frc + i32.const 9712 + i32.const 0 + local.get $kappa + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $wp_w_frc + local.get $buffer + local.set $buffer|29 + local.get $len + local.set $len|30 + local.get $delta + local.set $delta|31 + local.get $p2 + local.set $rest|32 + local.get $one_frc + local.set $ten_kappa|33 + local.get $wp_w_frc + local.set $wp_w|34 + local.get $buffer|29 + local.get $len|30 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp|35 + local.get $lastp|35 + i32.load16_u + local.set $digit|36 + loop $while-continue|6 + local.get $rest|32 + local.get $wp_w|34 + i64.lt_u + if (result i32) + local.get $delta|31 + local.get $rest|32 + i64.sub + local.get $ten_kappa|33 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w|34 + local.get $rest|32 + i64.sub + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit|36 + i32.const 1 + i32.sub + local.set $digit|36 + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.set $rest|32 + br $while-continue|6 + end + end + local.get $lastp|35 + local.get $digit|36 + i32.store16 + local.get $len + return + end + br $while-continue|4 + end + end + unreachable + ) + (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) + (local $kk i32) + (local $i i32) + (local $ptr i32) + (local $offset i32) + (local $i|7 i32) + (local $buffer|8 i32) + (local $k|9 i32) + (local $sign i32) + (local $decimals i32) + (local $buffer|12 i32) + (local $num i32) + (local $offset|14 i32) + (local $len i32) + (local $buffer|16 i32) + (local $k|17 i32) + (local $sign|18 i32) + (local $decimals|19 i32) + (local $buffer|20 i32) + (local $num|21 i32) + (local $offset|22 i32) + local.get $k + i32.eqz + if + local.get $buffer + local.get $length + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $length + i32.const 2 + i32.add + return + end + local.get $length + local.get $k + i32.add + local.set $kk + local.get $length + local.get $kk + i32.le_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $length + local.set $i + loop $for-loop|0 + local.get $i + local.get $kk + i32.lt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $kk + i32.const 2 + i32.add + return + else + local.get $kk + i32.const 0 + i32.gt_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $ptr + i32.const 2 + i32.add + local.get $ptr + i32.const 0 + local.get $k + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + local.get $length + i32.const 1 + i32.add + return + else + i32.const -6 + local.get $kk + i32.lt_s + if (result i32) + local.get $kk + i32.const 0 + i32.le_s + else + i32.const 0 + end + if + i32.const 2 + local.get $kk + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $buffer + local.get $length + i32.const 1 + i32.shl + memory.copy + local.get $buffer + i32.const 48 + i32.const 46 + i32.const 16 + i32.shl + i32.or + i32.store + i32.const 2 + local.set $i|7 + loop $for-loop|1 + local.get $i|7 + local.get $offset + i32.lt_s + if + local.get $buffer + local.get $i|7 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i|7 + i32.const 1 + i32.add + local.set $i|7 + br $for-loop|1 + end + end + local.get $length + local.get $offset + i32.add + return + else + local.get $length + i32.const 1 + i32.eq + if + local.get $buffer + i32.const 101 + i32.store16 offset=2 + block $~lib/util/number/genExponent|inlined.0 (result i32) + local.get $buffer + i32.const 4 + i32.add + local.set $buffer|8 + local.get $kk + i32.const 1 + i32.sub + local.set $k|9 + local.get $k|9 + i32.const 0 + i32.lt_s + local.set $sign + local.get $sign + if + i32.const 0 + local.get $k|9 + i32.sub + local.set $k|9 + end + local.get $k|9 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals + local.get $buffer|8 + local.set $buffer|12 + local.get $k|9 + local.set $num + local.get $decimals + local.set $offset|14 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|12 + local.get $num + local.get $offset|14 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|8 + i32.const 45 + i32.const 43 + local.get $sign + select + i32.store16 + local.get $decimals + br $~lib/util/number/genExponent|inlined.0 + end + local.set $length + local.get $length + i32.const 2 + i32.add + return + else + local.get $length + i32.const 1 + i32.shl + local.set $len + local.get $buffer + i32.const 4 + i32.add + local.get $buffer + i32.const 2 + i32.add + local.get $len + i32.const 2 + i32.sub + memory.copy + local.get $buffer + i32.const 46 + i32.store16 offset=2 + local.get $buffer + local.get $len + i32.add + i32.const 101 + i32.store16 offset=2 + local.get $length + block $~lib/util/number/genExponent|inlined.1 (result i32) + local.get $buffer + local.get $len + i32.add + i32.const 4 + i32.add + local.set $buffer|16 + local.get $kk + i32.const 1 + i32.sub + local.set $k|17 + local.get $k|17 + i32.const 0 + i32.lt_s + local.set $sign|18 + local.get $sign|18 + if + i32.const 0 + local.get $k|17 + i32.sub + local.set $k|17 + end + local.get $k|17 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals|19 + local.get $buffer|16 + local.set $buffer|20 + local.get $k|17 + local.set $num|21 + local.get $decimals|19 + local.set $offset|22 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|20 + local.get $num|21 + local.get $offset|22 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|16 + i32.const 45 + i32.const 43 + local.get $sign|18 + select + i32.store16 + local.get $decimals|19 + br $~lib/util/number/genExponent|inlined.1 + end + i32.add + local.set $length + local.get $length + i32.const 2 + i32.add + return + end + unreachable + end + unreachable + end + unreachable + end + unreachable + ) + (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) + (local $sign i32) + (local $value|4 f64) + (local $buffer|5 i32) + (local $sign|6 i32) + (local $isSingle|7 i32) + (local $frc i64) + (local $exp i32) + (local $uv i32) + (local $sid i32) + (local $uv|12 i64) + (local $sid|13 i64) + (local $f i64) + (local $e i32) + (local $isSingle|16 i32) + (local $frc|17 i64) + (local $exp|18 i32) + (local $off i32) + (local $m i32) + (local $minExp i32) + (local $dk f64) + (local $k i32) + (local $index i32) + (local $off|25 i32) + (local $frc_pow i64) + (local $exp_pow i32) + (local $u i64) + (local $v i64) + (local $u0 i64) + (local $v0 i64) + (local $u1 i64) + (local $v1 i64) + (local $l i64) + (local $t i64) + (local $w i64) + (local $w_frc i64) + (local $e1 i32) + (local $e2 i32) + (local $w_exp i32) + (local $u|41 i64) + (local $v|42 i64) + (local $u0|43 i64) + (local $v0|44 i64) + (local $u1|45 i64) + (local $v1|46 i64) + (local $l|47 i64) + (local $t|48 i64) + (local $w|49 i64) + (local $wp_frc i64) + (local $e1|51 i32) + (local $e2|52 i32) + (local $wp_exp i32) + (local $u|54 i64) + (local $v|55 i64) + (local $u0|56 i64) + (local $v0|57 i64) + (local $u1|58 i64) + (local $v1|59 i64) + (local $l|60 i64) + (local $t|61 i64) + (local $w|62 i64) + (local $wm_frc i64) + (local $delta i64) + (local $len i32) + local.get $value + f64.const 0 + f64.lt + local.set $sign + local.get $sign + if + local.get $value + f64.neg + local.set $value + local.get $buffer + i32.const 45 + i32.store16 + end + block $~lib/util/number/grisu2|inlined.0 (result i32) + local.get $value + local.set $value|4 + local.get $buffer + local.set $buffer|5 + local.get $sign + local.set $sign|6 + local.get $isSingle + local.set $isSingle|7 + local.get $isSingle|7 + if + local.get $value|4 + f32.demote_f64 + i32.reinterpret_f32 + local.set $uv + local.get $uv + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.set $exp + local.get $uv + i32.const 8388607 + i32.and + local.set $sid + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + local.get $sid + i64.extend_i32_u + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 127 + i32.const 23 + i32.add + i32.sub + local.set $exp + else + local.get $value|4 + i64.reinterpret_f64 + local.set $uv|12 + local.get $uv|12 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $exp + local.get $uv|12 + i64.const 4503599627370495 + i64.and + local.set $sid|13 + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $sid|13 + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 1023 + i32.const 52 + i32.add + i32.sub + local.set $exp + end + local.get $frc + local.set $f + local.get $exp + local.set $e + local.get $isSingle|7 + local.set $isSingle|16 + local.get $f + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.set $frc|17 + local.get $e + i32.const 1 + i32.sub + local.set $exp|18 + local.get $frc|17 + i64.clz + i32.wrap_i64 + local.set $off + local.get $frc|17 + local.get $off + i64.extend_i32_s + i64.shl + local.set $frc|17 + local.get $exp|18 + local.get $off + i32.sub + local.set $exp|18 + i32.const 1 + local.get $f + local.get $isSingle|16 + if (result i64) + i64.const 8388608 + else + i64.const 4503599627370496 + end + i64.eq + i32.add + local.set $m + local.get $frc|17 + global.set $~lib/util/number/_frc_plus + local.get $f + local.get $m + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $e + local.get $m + i32.sub + local.get $exp|18 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $exp|18 + global.set $~lib/util/number/_exp + global.get $~lib/util/number/_exp + local.set $minExp + i32.const -61 + local.get $minExp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.set $dk + local.get $dk + i32.trunc_sat_f64_s + local.set $k + local.get $k + local.get $k + f64.convert_i32_s + local.get $dk + f64.ne + i32.add + local.set $k + local.get $k + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.set $index + i32.const 348 + local.get $index + i32.const 3 + i32.shl + i32.sub + global.set $~lib/util/number/_K + i32.const 8840 + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 9536 + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $frc + i64.clz + i32.wrap_i64 + local.set $off|25 + local.get $frc + local.get $off|25 + i64.extend_i32_s + i64.shl + local.set $frc + local.get $exp + local.get $off|25 + i32.sub + local.set $exp + global.get $~lib/util/number/_frc_pow + local.set $frc_pow + global.get $~lib/util/number/_exp_pow + local.set $exp_pow + block $~lib/util/number/umul64f|inlined.0 (result i64) + local.get $frc + local.set $u + local.get $frc_pow + local.set $v + local.get $u + i64.const 4294967295 + i64.and + local.set $u0 + local.get $v + i64.const 4294967295 + i64.and + local.set $v0 + local.get $u + i64.const 32 + i64.shr_u + local.set $u1 + local.get $v + i64.const 32 + i64.shr_u + local.set $v1 + local.get $u0 + local.get $v0 + i64.mul + local.set $l + local.get $u1 + local.get $v0 + i64.mul + local.get $l + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $u0 + local.get $v1 + i64.mul + local.get $t + i64.const 4294967295 + i64.and + i64.add + local.set $w + local.get $w + i64.const 2147483647 + i64.add + local.set $w + local.get $t + i64.const 32 + i64.shr_u + local.set $t + local.get $w + i64.const 32 + i64.shr_u + local.set $w + local.get $u1 + local.get $v1 + i64.mul + local.get $t + i64.add + local.get $w + i64.add + br $~lib/util/number/umul64f|inlined.0 + end + local.set $w_frc + block $~lib/util/number/umul64e|inlined.0 (result i32) + local.get $exp + local.set $e1 + local.get $exp_pow + local.set $e2 + local.get $e1 + local.get $e2 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.0 + end + local.set $w_exp + block $~lib/util/number/umul64f|inlined.1 (result i64) + global.get $~lib/util/number/_frc_plus + local.set $u|41 + local.get $frc_pow + local.set $v|42 + local.get $u|41 + i64.const 4294967295 + i64.and + local.set $u0|43 + local.get $v|42 + i64.const 4294967295 + i64.and + local.set $v0|44 + local.get $u|41 + i64.const 32 + i64.shr_u + local.set $u1|45 + local.get $v|42 + i64.const 32 + i64.shr_u + local.set $v1|46 + local.get $u0|43 + local.get $v0|44 + i64.mul + local.set $l|47 + local.get $u1|45 + local.get $v0|44 + i64.mul + local.get $l|47 + i64.const 32 + i64.shr_u + i64.add + local.set $t|48 + local.get $u0|43 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.const 4294967295 + i64.and + i64.add + local.set $w|49 + local.get $w|49 + i64.const 2147483647 + i64.add + local.set $w|49 + local.get $t|48 + i64.const 32 + i64.shr_u + local.set $t|48 + local.get $w|49 + i64.const 32 + i64.shr_u + local.set $w|49 + local.get $u1|45 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.add + local.get $w|49 + i64.add + br $~lib/util/number/umul64f|inlined.1 + end + i64.const 1 + i64.sub + local.set $wp_frc + block $~lib/util/number/umul64e|inlined.1 (result i32) + global.get $~lib/util/number/_exp + local.set $e1|51 + local.get $exp_pow + local.set $e2|52 + local.get $e1|51 + local.get $e2|52 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.1 + end + local.set $wp_exp + block $~lib/util/number/umul64f|inlined.2 (result i64) + global.get $~lib/util/number/_frc_minus + local.set $u|54 + local.get $frc_pow + local.set $v|55 + local.get $u|54 + i64.const 4294967295 + i64.and + local.set $u0|56 + local.get $v|55 + i64.const 4294967295 + i64.and + local.set $v0|57 + local.get $u|54 + i64.const 32 + i64.shr_u + local.set $u1|58 + local.get $v|55 + i64.const 32 + i64.shr_u + local.set $v1|59 + local.get $u0|56 + local.get $v0|57 + i64.mul + local.set $l|60 + local.get $u1|58 + local.get $v0|57 + i64.mul + local.get $l|60 + i64.const 32 + i64.shr_u + i64.add + local.set $t|61 + local.get $u0|56 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.const 4294967295 + i64.and + i64.add + local.set $w|62 + local.get $w|62 + i64.const 2147483647 + i64.add + local.set $w|62 + local.get $t|61 + i64.const 32 + i64.shr_u + local.set $t|61 + local.get $w|62 + i64.const 32 + i64.shr_u + local.set $w|62 + local.get $u1|58 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.add + local.get $w|62 + i64.add + br $~lib/util/number/umul64f|inlined.2 + end + i64.const 1 + i64.add + local.set $wm_frc + local.get $wp_frc + local.get $wm_frc + i64.sub + local.set $delta + local.get $buffer|5 + local.get $w_frc + local.get $w_exp + local.get $wp_frc + local.get $wp_exp + local.get $delta + local.get $sign|6 + call $~lib/util/number/genDigits + br $~lib/util/number/grisu2|inlined.0 + end + local.set $len + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.get $len + local.get $sign + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.set $len + local.get $len + local.get $sign + i32.add + return + ) + (func $~lib/util/number/dtoa_buffered (param $buffer i32) (param $value f32) (result i32) + (local $buffer|2 i32) + (local $value|3 f64) + (local $isSingle i32) + (local $sign i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + local.get $buffer + local.set $buffer|2 + local.get $value + f64.promote_f32 + local.set $value|3 + i32.const 1 + local.set $isSingle + local.get $value|3 + f64.const 0 + f64.eq + if + local.get $buffer|2 + i32.const 48 + i32.store16 + local.get $buffer|2 + i32.const 46 + i32.store16 offset=2 + local.get $buffer|2 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + local.get $value|3 + local.get $value|3 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|3 + local.get $value|3 + f64.ne + if + local.get $buffer|2 + i32.const 78 + i32.store16 + local.get $buffer|2 + i32.const 97 + i32.store16 offset=2 + local.get $buffer|2 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + else + local.get $value|3 + f64.const 0 + f64.lt + local.set $sign + local.get $sign + if + local.get $buffer|2 + i32.const 45 + i32.store16 + local.get $buffer|2 + i32.const 2 + i32.add + local.set $buffer|2 + end + local.get $buffer|2 + i64.const 29555310648492105 + i64.store + local.get $buffer|2 + i64.const 34058970405077102 + i64.store offset=8 + i32.const 8 + local.get $sign + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + unreachable + end + local.get $buffer|2 + local.get $value|3 + local.get $isSingle + call $~lib/util/number/dtoa_core + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + return + ) + (func $~lib/util/number/dtoa_buffered (param $buffer i32) (param $value f64) (result i32) + (local $buffer|2 i32) + (local $value|3 f64) + (local $isSingle i32) + (local $sign i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result i32) + local.get $buffer + local.set $buffer|2 + local.get $value + local.set $value|3 + i32.const 0 + local.set $isSingle + local.get $value|3 + f64.const 0 + f64.eq + if + local.get $buffer|2 + i32.const 48 + i32.store16 + local.get $buffer|2 + i32.const 46 + i32.store16 offset=2 + local.get $buffer|2 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + end + local.get $value|3 + local.get $value|3 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|3 + local.get $value|3 + f64.ne + if + local.get $buffer|2 + i32.const 78 + i32.store16 + local.get $buffer|2 + i32.const 97 + i32.store16 offset=2 + local.get $buffer|2 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + else + local.get $value|3 + f64.const 0 + f64.lt + local.set $sign + local.get $sign + if + local.get $buffer|2 + i32.const 45 + i32.store16 + local.get $buffer|2 + i32.const 2 + i32.add + local.set $buffer|2 + end + local.get $buffer|2 + i64.const 29555310648492105 + i64.store + local.get $buffer|2 + i64.const 34058970405077102 + i64.store offset=8 + i32.const 8 + local.get $sign + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + end + unreachable + end + local.get $buffer|2 + local.get $value|3 + local.get $isSingle + call $~lib/util/number/dtoa_core + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + end + return + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + return + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $a + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s offset=1 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + local.get $a + i32.store8 offset=2 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + local.get $max + i32.store8 offset=2 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + local.get $a + i32.store8 offset=1 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + local.get $min + i32.store8 offset=1 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s offset=1 + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $tmp + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + local.get $tmp + i32.store8 + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s offset=1 + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 0 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.store8 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 0 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s offset=1 + i32.store8 + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $a + local.get $buffer + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + local.get $a + i32.store8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + local.get $b + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) + local.get $a + i32.extend8_s + local.get $b + i32.extend8_s + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $a i32) (param $b i32) (result i32) + local.get $b + i32.extend8_s + local.get $a + i32.extend8_s + i32.gt_s + local.get $b + i32.extend8_s + local.get $a + i32.extend8_s + i32.lt_s + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $a + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + local.get $a + i32.store8 offset=2 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + local.get $max + i32.store8 offset=2 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + local.get $a + i32.store8 offset=1 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + local.get $min + i32.store8 offset=1 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $tmp + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + local.get $tmp + i32.store8 + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 0 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.store8 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 0 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + i32.store8 + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $a + local.get $buffer + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + local.get $a + i32.store8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + local.get $b + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) + local.get $a + i32.const 255 + i32.and + local.get $b + i32.const 255 + i32.and + i32.gt_u + local.get $a + i32.const 255 + i32.and + local.get $b + i32.const 255 + i32.and + i32.lt_u + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $a i32) (param $b i32) (result i32) + local.get $b + i32.const 255 + i32.and + local.get $a + i32.const 255 + i32.and + i32.gt_u + local.get $b + i32.const 255 + i32.and + local.get $a + i32.const 255 + i32.and + i32.lt_u + i32.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|1 (param $a i32) (param $b i32) (result i32) + local.get $a + i32.const 255 + i32.and + local.get $b + i32.const 255 + i32.and + i32.gt_u + local.get $a + i32.const 255 + i32.and + local.get $b + i32.const 255 + i32.and + i32.lt_u + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" (param $a i32) (param $b i32) (result i32) + local.get $b + i32.const 255 + i32.and + local.get $a + i32.const 255 + i32.and + i32.gt_u + local.get $b + i32.const 255 + i32.and + local.get $a + i32.const 255 + i32.and + i32.lt_u + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $a + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s offset=2 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $a + i32.store16 offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $max + i32.store16 offset=4 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $a + i32.store16 offset=2 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $min + i32.store16 offset=2 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s offset=2 + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $tmp + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + local.get $tmp + i32.store16 + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s offset=2 + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store16 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s offset=2 + i32.store16 + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $a + local.get $buffer + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + local.get $a + i32.store16 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + local.get $b + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) + local.get $a + i32.extend16_s + local.get $b + i32.extend16_s + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $a i32) (param $b i32) (result i32) + local.get $b + i32.extend16_s + local.get $a + i32.extend16_s + i32.gt_s + local.get $b + i32.extend16_s + local.get $a + i32.extend16_s + i32.lt_s + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $a + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $a + i32.store16 offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $max + i32.store16 offset=4 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $a + i32.store16 offset=2 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + local.get $min + i32.store16 offset=2 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $tmp + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + local.get $tmp + i32.store16 + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + i32.store16 + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $a + local.get $buffer + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + local.get $a + i32.store16 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + local.get $b + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) + local.get $a + i32.const 65535 + i32.and + local.get $b + i32.const 65535 + i32.and + i32.gt_u + local.get $a + i32.const 65535 + i32.and + local.get $b + i32.const 65535 + i32.and + i32.lt_u + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $a i32) (param $b i32) (result i32) + local.get $b + i32.const 65535 + i32.and + local.get $a + i32.const 65535 + i32.and + i32.gt_u + local.get $b + i32.const 65535 + i32.and + local.get $a + i32.const 65535 + i32.and + i32.lt_u + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + i32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $a i32) (param $b i32) (result i32) + local.get $b + local.get $a + i32.gt_s + local.get $b + local.get $a + i32.lt_s + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i32) + (local $b i32) + (local $min i32) + (local $max i32) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + i32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i32) + (local $b i32) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.set $a + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a + i32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.gt_u + local.get $a + local.get $b + i32.lt_u + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $a i32) (param $b i32) (result i32) + local.get $b + local.get $a + i32.gt_u + local.get $b + local.get $a + i32.lt_u + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i64) + (local $b i64) + (local $min i64) + (local $max i64) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $a + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $a + i64.store offset=16 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $max + i64.store offset=16 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $a + i64.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $min + i64.store offset=8 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i64) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + i64.load + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $tmp + i64.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i64) + (local $b i64) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + i64.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + i64.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + local.set $a + local.get $buffer + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $a + i64.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $b + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i64) (param $b i64) (result i32) + local.get $a + local.get $b + i64.gt_s + local.get $a + local.get $b + i64.lt_s + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $a i64) (param $b i64) (result i32) + local.get $b + local.get $a + i64.gt_s + local.get $b + local.get $a + i64.lt_s + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a i64) + (local $b i64) + (local $min i64) + (local $max i64) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $a + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $a + i64.store offset=16 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $max + i64.store offset=16 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $a + i64.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + local.get $min + i64.store offset=8 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i64) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + i64.load + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $tmp + i64.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a i64) + (local $b i64) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + i64.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + i64.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + local.set $a + local.get $buffer + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $a + i64.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $b + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i64) (param $b i64) (result i32) + local.get $a + local.get $b + i64.gt_u + local.get $a + local.get $b + i64.lt_u + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $a i64) (param $b i64) (result i32) + local.get $b + local.get $a + i64.gt_u + local.get $b + local.get $a + i64.lt_u + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $ptr i32) (param $left i32) (param $right i32) (param $presorted i32) (param $comparator i32) + (local $range i32) + (local $i i32) + (local $a f32) + (local $b f32) + (local $min f32) + (local $max f32) + (local $j i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $right + local.get $left + i32.sub + i32.const 1 + i32.add + local.set $range + local.get $left + local.get $range + i32.const 1 + i32.and + local.get $presorted + local.get $range + local.get $presorted + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $presorted + i32.const 0 + i32.eq + select + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $right + i32.le_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $a + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.set $b + local.get $b + local.set $min + local.get $a + local.set $max + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $13) + i32.const 0 + i32.le_s + if + local.get $a + local.set $min + local.get $b + local.set $max + end + local.get $i + i32.const 1 + i32.sub + local.set $j + block $while-break|1 + loop $while-continue|1 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + local.set $a + local.get $a + local.get $max + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $13) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + f32.store offset=8 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $max + f32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $j + local.get $left + i32.ge_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + local.set $a + local.get $a + local.get $min + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $13) + i32.const 0 + i32.gt_s + if + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $a + f32.store offset=4 + local.get $j + i32.const 1 + i32.sub + local.set $j + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + local.get $min + f32.store offset=4 + local.get $i + i32.const 2 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp f32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $13) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $13) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + f32.load + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + f32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $13) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return + ) + (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) + (local $i i32) + (local $j i32) + (local $t i32) + (local $k i32) + (local $a f32) + (local $b f32) + local.get $m + i32.const 1 + i32.sub + local.set $m + local.get $r + local.get $m + i32.add + local.set $t + local.get $m + i32.const 1 + i32.add + local.set $i + loop $for-loop|0 + local.get $i + local.get $l + i32.gt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + f32.load + f32.store + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $m + local.set $j + loop $for-loop|1 + local.get $j + local.get $r + i32.lt_s + if + local.get $buffer + local.get $t + local.get $j + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + f32.store + local.get $j + i32.const 1 + i32.add + local.set $j + br $for-loop|1 + end + end + local.get $l + local.set $k + loop $for-loop|2 + local.get $k + local.get $r + i32.le_s + if + local.get $buffer + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + local.set $a + local.get $buffer + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $13) + i32.const 0 + i32.lt_s + if + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $a + f32.store + local.get $j + i32.const 1 + i32.sub + local.set $j + else + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $b + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + end + local.get $k + i32.const 1 + i32.add + local.set $k + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a f32) (param $b f32) (result i32) + (local $ia i32) + (local $ib i32) + local.get $a + i32.reinterpret_f32 + local.set $ia + local.get $b + i32.reinterpret_f32 + local.set $ib + local.get $ia + local.get $ia + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.set $ia + local.get $ib + local.get $ib + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.set $ib + local.get $ia + local.get $ib + i32.gt_s + local.get $ia + local.get $ib + i32.lt_s + i32.sub + return + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $a f32) (param $b f32) (result i32) + local.get $b + local.get $a + f32.gt + local.get $b + local.get $a + f32.lt + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $a f64) (param $b f64) (result i32) + local.get $b + local.get $a + f64.gt + local.get $b + local.get $a + f64.lt + i32.sub + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/typedarray/forEachValues + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/testArrayReverseValues + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/testArrayWrapValues + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/setSource1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/setSource2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/setSource3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/setSource7 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 336 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 144 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 7408 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 8464 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/typedarray/Int8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8ClampedArray~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint16Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float64Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit + ) + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit + ) + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit + ) + (func $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit + ) + (func $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit + ) + (func $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit + ) + (func $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit + ) + (func $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit + ) + (func $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>#__visit + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28i8%2Ci8%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i8%2Ci8%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci8%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u8%2Cu8%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u8%2Cu8%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i16%2Ci16%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i16%2Ci16%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci16%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u16%2Cu16%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u16%2Cu16%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Cu16%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i64%2Ci64%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i64%2Ci64%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci64%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u64%2Cu64%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28u64%2Cu64%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Cu64%29=>i32>#__visit + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28f32%2Cf32%29=>i32> + block $~lib/function/Function<%28u64%2Cu64%29=>i32> + block $~lib/function/Function<%28i64%2Ci64%29=>i32> + block $~lib/function/Function<%28u32%2Cu32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28u16%2Cu16%29=>i32> + block $~lib/function/Function<%28i16%2Ci16%29=>i32> + block $~lib/function/Function<%28u8%2Cu8%29=>i32> + block $~lib/function/Function<%28i8%2Ci8%29=>i32> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void> + block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void> + block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void> + block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void> + block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void> + block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void> + block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void> + block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void> + block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool> + block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool> + block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool> + block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool> + block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool> + block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool> + block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool> + block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool> + block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> + block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> + block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> + block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> + block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> + block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> + block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> + block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> + block $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> + block $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> + block $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> + block $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> + block $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> + block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> + block $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> + block $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> + block $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> + block $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> + block $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/function/Function<%28f64%2Cf64%29=>i32> + block $~lib/typedarray/Float64Array + block $~lib/typedarray/Float32Array + block $~lib/typedarray/Uint64Array + block $~lib/typedarray/Int64Array + block $~lib/typedarray/Uint32Array + block $~lib/typedarray/Int32Array + block $~lib/typedarray/Uint16Array + block $~lib/typedarray/Int16Array + block $~lib/typedarray/Uint8ClampedArray + block $~lib/typedarray/Uint8Array + block $~lib/typedarray/Int8Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int8Array $~lib/typedarray/Uint8Array $~lib/typedarray/Uint8ClampedArray $~lib/typedarray/Int16Array $~lib/typedarray/Uint16Array $~lib/typedarray/Int32Array $~lib/typedarray/Uint32Array $~lib/typedarray/Int64Array $~lib/typedarray/Uint64Array $~lib/typedarray/Float32Array $~lib/typedarray/Float64Array $~lib/function/Function<%28f64%2Cf64%29=>i32> $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void> $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i8%2Ci8%29=>i32> $~lib/function/Function<%28u8%2Cu8%29=>i32> $~lib/function/Function<%28i16%2Ci16%29=>i32> $~lib/function/Function<%28u16%2Cu16%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28u32%2Cu32%29=>i32> $~lib/function/Function<%28i64%2Ci64%29=>i32> $~lib/function/Function<%28u64%2Cu64%29=>i32> $~lib/function/Function<%28f32%2Cf32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci8%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci16%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Cu16%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci64%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Cu64%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit + return + end + unreachable + ) + (func $~start + call $start:std/typedarray + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 48096 + i32.const 48144 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $this i32) (param $length i32) (param $alignLog2 i32) (result i32) + (local $buffer i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $length + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + local.get $alignLog2 + i32.shl + local.tee $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $buffer + call $~lib/arraybuffer/ArrayBufferView#set:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $length + call $~lib/arraybuffer/ArrayBufferView#set:byteLength + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Int8Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + i32.sub + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Int8Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint8Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint8Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint8ClampedArray#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint8ClampedArray#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Int16Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int16Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint16Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint16Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Int32Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int32Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint32Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint32Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Int64Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int64Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint64Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint64Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Float32Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Float32Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Float64Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $length + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $this + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Float64Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $std/typedarray/testInstantiate (param $len i32) + (local $i8a i32) + (local $u8a i32) + (local $c8a i32) + (local $i16a i32) + (local $u16a i32) + (local $i32a i32) + (local $u32a i32) + (local $i64a i32) + (local $u64a i32) + (local $f32a i32) + (local $f64a i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 48 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $len + call $~lib/typedarray/Int8Array#constructor + local.tee $i8a + i32.store + local.get $i8a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $i8a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $len + global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $i8a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Int8Array#get:length + local.get $len + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $len + call $~lib/typedarray/Uint8Array#constructor + local.tee $u8a + i32.store offset=8 + local.get $u8a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $u8a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $len + global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 38 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $u8a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + local.get $len + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $len + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $c8a + i32.store offset=12 + local.get $c8a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c8a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $len + global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $c8a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.get $len + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $len + call $~lib/typedarray/Int16Array#constructor + local.tee $i16a + i32.store offset=16 + local.get $i16a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $i16a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $len + global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $i16a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + local.get $len + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $len + call $~lib/typedarray/Uint16Array#constructor + local.tee $u16a + i32.store offset=20 + local.get $u16a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $u16a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $len + global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 53 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $u16a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Uint16Array#get:length + local.get $len + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $len + call $~lib/typedarray/Int32Array#constructor + local.tee $i32a + i32.store offset=24 + local.get $i32a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $i32a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $len + global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $i32a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + local.get $len + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $len + call $~lib/typedarray/Uint32Array#constructor + local.tee $u32a + i32.store offset=28 + local.get $u32a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $u32a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $len + global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $u32a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Uint32Array#get:length + local.get $len + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $len + call $~lib/typedarray/Int64Array#constructor + local.tee $i64a + i32.store offset=32 + local.get $i64a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $i64a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $len + global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $i64a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + local.get $len + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $len + call $~lib/typedarray/Uint64Array#constructor + local.tee $u64a + i32.store offset=36 + local.get $u64a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $u64a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $len + global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $u64a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Uint64Array#get:length + local.get $len + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $len + call $~lib/typedarray/Float32Array#constructor + local.tee $f32a + i32.store offset=40 + local.get $f32a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 77 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $f32a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $len + global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 78 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $f32a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Float32Array#get:length + local.get $len + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 79 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $len + call $~lib/typedarray/Float64Array#constructor + local.tee $f64a + i32.store offset=44 + local.get $f64a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $f64a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $len + global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $f64a + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Float64Array#get:length + local.get $len + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 747 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#__get (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 736 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Int32Array#subarray (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $array i32) + (local $begin|4 i32) + (local $end|5 i32) + (local $len 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 $out i32) + (local $buf i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SUBARRAY<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $begin + local.set $begin|4 + local.get $end + local.set $end|5 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/typedarray/Int32Array#get:length + local.set $len + local.get $begin|4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $begin|4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $begin|4 + local.tee $9 + local.get $len + local.tee $10 + local.get $9 + local.get $10 + i32.lt_s + select + end + local.set $begin|4 + local.get $end|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end|5 + i32.add + local.tee $11 + i32.const 0 + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $end|5 + local.tee $13 + local.get $len + local.tee $14 + local.get $13 + local.get $14 + i32.lt_s + select + end + local.set $end|5 + local.get $end|5 + local.tee $15 + local.get $begin|4 + local.tee $16 + local.get $15 + local.get $16 + i32.gt_s + select + local.set $end|5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $buf + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $begin|4 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $out + local.get $end|5 + local.get $begin|4 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $out + br $"~lib/typedarray/SUBARRAY<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $~lib/typedarray/Float64Array#__set (param $this i32) (param $index i32) (param $value f64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 1457 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + local.get $value + f64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#subarray (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $array i32) + (local $begin|4 i32) + (local $end|5 i32) + (local $len 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 $out i32) + (local $buf i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SUBARRAY<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $begin + local.set $begin|4 + local.get $end + local.set $end|5 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/typedarray/Float64Array#get:length + local.set $len + local.get $begin|4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $begin|4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $begin|4 + local.tee $9 + local.get $len + local.tee $10 + local.get $9 + local.get $10 + i32.lt_s + select + end + local.set $begin|4 + local.get $end|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end|5 + i32.add + local.tee $11 + i32.const 0 + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $end|5 + local.tee $13 + local.get $len + local.tee $14 + local.get $13 + local.get $14 + i32.lt_s + select + end + local.set $end|5 + local.get $end|5 + local.tee $15 + local.get $begin|4 + local.tee $16 + local.get $15 + local.get $16 + i32.gt_s + select + local.set $end|5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $buf + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $begin|4 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $out + local.get $end|5 + local.get $begin|4 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $out + br $"~lib/typedarray/SUBARRAY<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a f64) + (local $b f64) + (local $c i32) + (local $a|7 f64) + (local $b|8 f64) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + f64.load + local.set $a + local.get $ptr + f64.load offset=8 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $12) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + f64.store + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + f64.load offset=16 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $12) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + f64.store offset=8 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + f64.store offset=16 + end + local.get $ptr + f64.load + local.set $a|7 + local.get $ptr + f64.load offset=8 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $12) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + f64.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.0 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.0 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 3 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Float64Array#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Float64Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 672 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Float64Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Float64Array#__get (param $this i32) (param $index i32) (result f64) + (local $2 i32) + (local $3 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 1446 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + f64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/typedarray/Uint8ClampedArray#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 320 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + local.get $value + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.const 255 + local.get $value + i32.sub + i32.const 31 + i32.shr_s + local.get $value + i32.or + i32.and + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#__get (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 309 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + i32.load8_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Int8Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 36 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + local.get $value + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#fill (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/typedarray/Int8Array#get:length + local.get $value + local.get $start + local.get $end + call $~lib/util/bytes/FILL + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Int8Array#__get (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 25 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + i32.load8_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 336 + i32.const 736 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/typedarray/isInt8ArrayEqual (param $a i32) (param $b i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/typedarray/Int8Array#get:length + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + i32.const 0 + local.set $i + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/typedarray/Int8Array#get:length + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/typedarray/Int8Array#__get + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/typedarray/Int8Array#fill@varargs (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $start + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $value + local.get $start + local.get $end + call $~lib/typedarray/Int8Array#fill + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Int8Array#subarray (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $array i32) + (local $begin|4 i32) + (local $end|5 i32) + (local $len 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 $out i32) + (local $buf i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SUBARRAY<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $begin + local.set $begin|4 + local.get $end + local.set $end|5 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/typedarray/Int8Array#get:length + local.set $len + local.get $begin|4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $begin|4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $begin|4 + local.tee $9 + local.get $len + local.tee $10 + local.get $9 + local.get $10 + i32.lt_s + select + end + local.set $begin|4 + local.get $end|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end|5 + i32.add + local.tee $11 + i32.const 0 + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $end|5 + local.tee $13 + local.get $len + local.tee $14 + local.get $13 + local.get $14 + i32.lt_s + select + end + local.set $end|5 + local.get $end|5 + local.tee $15 + local.get $begin|4 + local.tee $16 + local.get $15 + local.get $16 + i32.gt_s + select + local.set $end|5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $buf + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $begin|4 + i32.const 0 + i32.shl + i32.add + i32.store offset=4 + local.get $out + local.get $end|5 + local.get $begin|4 + i32.sub + i32.const 0 + i32.shl + i32.store offset=8 + local.get $out + br $"~lib/typedarray/SUBARRAY<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $~lib/typedarray/Int32Array#fill (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/typedarray/Int32Array#get:length + local.get $value + local.get $start + local.get $end + call $~lib/util/bytes/FILL + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 336 + i32.const 736 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/typedarray/isInt32ArrayEqual (param $a i32) (param $b i32) (result i32) + (local $i i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/typedarray/Int32Array#get:length + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + i32.const 0 + local.set $i + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/typedarray/Int32Array#get:length + local.set $len + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/typedarray/Int32Array#__get + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/typedarray/Int32Array#fill@varargs (param $this i32) (param $value i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $start + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $value + local.get $start + local.get $end + call $~lib/typedarray/Int32Array#fill + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Int32Array#slice (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $array i32) + (local $start i32) + (local $end|5 i32) + (local $len 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 $slice i32) + (local $18 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SLICE<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $begin + local.set $start + local.get $end + local.set $end|5 + local.get $array + local.set $18 + global.get $~lib/memory/__stack_pointer + local.get $18 + i32.store offset=4 + local.get $18 + call $~lib/typedarray/Int32Array#get:length + local.set $len + local.get $start + i32.const 0 + i32.lt_s + if (result i32) + local.get $start + local.get $len + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $start + local.tee $9 + local.get $len + local.tee $10 + local.get $9 + local.get $10 + i32.lt_s + select + end + local.set $start + local.get $end|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $end|5 + local.get $len + i32.add + local.tee $11 + i32.const 0 + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $end|5 + local.tee $13 + local.get $len + local.tee $14 + local.get $13 + local.get $14 + i32.lt_s + select + end + local.set $end|5 + local.get $end|5 + local.get $start + i32.sub + local.tee $15 + i32.const 0 + local.tee $16 + local.get $15 + local.get $16 + i32.gt_s + select + local.set $len + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $len + call $~lib/typedarray/Int32Array#constructor + local.tee $slice + i32.store offset=8 + local.get $slice + local.set $18 + global.get $~lib/memory/__stack_pointer + local.get $18 + i32.store offset=4 + local.get $18 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $array + local.set $18 + global.get $~lib/memory/__stack_pointer + local.get $18 + i32.store offset=4 + local.get $18 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $start + i32.const 2 + i32.shl + i32.add + local.get $len + i32.const 2 + i32.shl + memory.copy + local.get $slice + br $"~lib/typedarray/SLICE<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return + ) + (func $~lib/typedarray/Int32Array#slice@varargs (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $begin + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $begin + local.get $end + call $~lib/typedarray/Int32Array#slice + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Int32Array#copyWithin (param $this i32) (param $target i32) (param $start i32) (param $end i32) (result i32) + (local $array i32) + (local $target|5 i32) + (local $start|6 i32) + (local $end|7 i32) + (local $len i32) + (local $ptr i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $to i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $from i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $last i32) + (local $27 i32) + (local $28 i32) + (local $count i32) + (local $30 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/COPY_WITHIN<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $target + local.set $target|5 + local.get $start + local.set $start|6 + local.get $end + local.set $end|7 + local.get $array + local.set $30 + global.get $~lib/memory/__stack_pointer + local.get $30 + i32.store offset=4 + local.get $30 + call $~lib/typedarray/Int32Array#get:length + local.set $len + local.get $array + local.set $30 + global.get $~lib/memory/__stack_pointer + local.get $30 + i32.store offset=4 + local.get $30 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $end|7 + local.tee $10 + local.get $len + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + local.set $end|7 + local.get $target|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $target|5 + i32.add + local.tee $12 + i32.const 0 + local.tee $13 + local.get $12 + local.get $13 + i32.gt_s + select + else + local.get $target|5 + local.tee $14 + local.get $len + local.tee $15 + local.get $14 + local.get $15 + i32.lt_s + select + end + local.set $to + local.get $start|6 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $start|6 + i32.add + local.tee $17 + i32.const 0 + local.tee $18 + local.get $17 + local.get $18 + i32.gt_s + select + else + local.get $start|6 + local.tee $19 + local.get $len + local.tee $20 + local.get $19 + local.get $20 + i32.lt_s + select + end + local.set $from + local.get $end|7 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end|7 + i32.add + local.tee $22 + i32.const 0 + local.tee $23 + local.get $22 + local.get $23 + i32.gt_s + select + else + local.get $end|7 + local.tee $24 + local.get $len + local.tee $25 + local.get $24 + local.get $25 + i32.lt_s + select + end + local.set $last + local.get $last + local.get $from + i32.sub + local.tee $27 + local.get $len + local.get $to + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $count + local.get $ptr + local.get $to + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $from + i32.const 2 + i32.shl + i32.add + local.get $count + i32.const 2 + i32.shl + memory.copy + local.get $array + br $"~lib/typedarray/COPY_WITHIN<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.set $30 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $30 + return + ) + (func $~lib/typedarray/Int32Array#copyWithin@varargs (param $this i32) (param $target i32) (param $start i32) (param $end i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 2 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $end + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $target + local.get $start + local.get $end + call $~lib/typedarray/Int32Array#copyWithin + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Int8Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE<~lib/typedarray/Int8Array,i8,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int8Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE<~lib/typedarray/Int8Array,i8,i8>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1872 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int8Array#reduce + local.set $result + local.get $result + i32.extend8_s + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 178 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + local.get $value + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint8Array,u8,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint8Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint8Array,u8,u8>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1904 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#reduce + local.set $result + local.get $result + i32.const 255 + i32.and + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint8ClampedArray,u8,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint8ClampedArray,u8,u8>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1936 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#reduce + local.set $result + local.get $result + i32.const 255 + i32.and + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 463 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + local.get $value + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE<~lib/typedarray/Int16Array,i16,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int16Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE<~lib/typedarray/Int16Array,i16,i16>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1968 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int16Array#reduce + local.set $result + local.get $result + i32.extend16_s + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 605 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + local.get $value + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint16Array,u16,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint16Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint16Array,u16,u16>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2000 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint16Array#reduce + local.set $result + local.get $result + i32.const 65535 + i32.and + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE<~lib/typedarray/Int32Array,i32,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE<~lib/typedarray/Int32Array,i32,i32>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2032 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int32Array#reduce + local.set $result + local.get $result + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 889 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint32Array,u32,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint32Array,u32,u32>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2064 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint32Array#reduce + local.set $result + local.get $result + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#__set (param $this i32) (param $index i32) (param $value i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 1031 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + local.get $value + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#reduce (param $this i32) (param $fn i32) (param $initialValue i64) (result i64) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i64) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $9 i32) + (local $10 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE<~lib/typedarray/Int64Array,i64,i64>|inlined.0" (result i64) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $16) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE<~lib/typedarray/Int64Array,i64,i64>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>" + (local $array i32) + (local $result i64) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2096 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i64.const 0 + call $~lib/typedarray/Int64Array#reduce + local.set $result + local.get $result + i64.const 6 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#__set (param $this i32) (param $index i32) (param $value i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 1173 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + local.get $value + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#reduce (param $this i32) (param $fn i32) (param $initialValue i64) (result i64) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i64) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $9 i32) + (local $10 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint64Array,u64,u64>|inlined.0" (result i64) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $16) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint64Array,u64,u64>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>" + (local $array i32) + (local $result i64) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2128 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i64.const 0 + call $~lib/typedarray/Uint64Array#reduce + local.set $result + local.get $result + i64.const 6 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#__set (param $this i32) (param $index i32) (param $value f32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 1315 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#reduce (param $this i32) (param $fn i32) (param $initialValue f32) (result f32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 f32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $9 i32) + (local $10 f32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE<~lib/typedarray/Float32Array,f32,f32>|inlined.0" (result f32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Float32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.get $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $20) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE<~lib/typedarray/Float32Array,f32,f32>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>" + (local $array i32) + (local $result f32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2160 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + f32.const 0 + call $~lib/typedarray/Float32Array#reduce + local.set $result + local.get $result + f32.const 6 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#reduce (param $this i32) (param $fn i32) (param $initialValue f64) (result f64) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 f64) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $9 i32) + (local $10 f64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE<~lib/typedarray/Float64Array,f64,f64>|inlined.0" (result f64) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Float64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.get $i + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $21) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE<~lib/typedarray/Float64Array,f64,f64>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>" + (local $array i32) + (local $result f64) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2192 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + f64.const 0 + call $~lib/typedarray/Float64Array#reduce + local.set $result + local.get $result + f64.const 6 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#at (param $this i32) (param $index i32) (result i32) + (local $len i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $len + local.get $index + i32.const 0 + local.get $len + local.get $index + i32.const 0 + i32.ge_s + select + i32.add + local.set $index + local.get $index + local.get $len + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 48 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + i32.load8_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"std/typedarray/testAt<~lib/typedarray/Int8Array,i8>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int8Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -1 + call $~lib/typedarray/Int8Array#at + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -3 + call $~lib/typedarray/Int8Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#at (param $this i32) (param $index i32) (result i32) + (local $len i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $len + local.get $index + i32.const 0 + local.get $len + local.get $index + i32.const 0 + i32.ge_s + select + i32.add + local.set $index + local.get $index + local.get $len + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 190 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + i32.load8_u + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"std/typedarray/testAt<~lib/typedarray/Uint8Array,u8>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -1 + call $~lib/typedarray/Uint8Array#at + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -3 + call $~lib/typedarray/Uint8Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#at (param $this i32) (param $index i32) (result i32) + (local $len i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $len + local.get $index + i32.const 0 + local.get $len + local.get $index + i32.const 0 + i32.ge_s + select + i32.add + local.set $index + local.get $index + local.get $len + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 332 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + i32.load8_u + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"std/typedarray/testAt<~lib/typedarray/Uint8ClampedArray,u8>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -1 + call $~lib/typedarray/Uint8ClampedArray#at + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -3 + call $~lib/typedarray/Uint8ClampedArray#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#at (param $this i32) (param $index i32) (result i32) + (local $len i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + local.set $len + local.get $index + i32.const 0 + local.get $len + local.get $index + i32.const 0 + i32.ge_s + select + i32.add + local.set $index + local.get $index + local.get $len + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 475 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"std/typedarray/testAt<~lib/typedarray/Int16Array,i16>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int16Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -1 + call $~lib/typedarray/Int16Array#at + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -3 + call $~lib/typedarray/Int16Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#at (param $this i32) (param $index i32) (result i32) + (local $len i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + local.set $len + local.get $index + i32.const 0 + local.get $len + local.get $index + i32.const 0 + i32.ge_s + select + i32.add + local.set $index + local.get $index + local.get $len + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 617 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"std/typedarray/testAt<~lib/typedarray/Uint16Array,u16>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint16Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -1 + call $~lib/typedarray/Uint16Array#at + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -3 + call $~lib/typedarray/Uint16Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#at (param $this i32) (param $index i32) (result i32) + (local $len i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + local.set $len + local.get $index + i32.const 0 + local.get $len + local.get $index + i32.const 0 + i32.ge_s + select + i32.add + local.set $index + local.get $index + local.get $len + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 759 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"std/typedarray/testAt<~lib/typedarray/Int32Array,i32>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -1 + call $~lib/typedarray/Int32Array#at + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -3 + call $~lib/typedarray/Int32Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#at (param $this i32) (param $index i32) (result i32) + (local $len i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + local.set $len + local.get $index + i32.const 0 + local.get $len + local.get $index + i32.const 0 + i32.ge_s + select + i32.add + local.set $index + local.get $index + local.get $len + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 901 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"std/typedarray/testAt<~lib/typedarray/Uint32Array,u32>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -1 + call $~lib/typedarray/Uint32Array#at + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -3 + call $~lib/typedarray/Uint32Array#at + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#at (param $this i32) (param $index i32) (result i64) + (local $len i32) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + local.set $len + local.get $index + i32.const 0 + local.get $len + local.get $index + i32.const 0 + i32.ge_s + select + i32.add + local.set $index + local.get $index + local.get $len + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 1043 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $"std/typedarray/testAt<~lib/typedarray/Int64Array,i64>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int64Array#at + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -1 + call $~lib/typedarray/Int64Array#at + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -3 + call $~lib/typedarray/Int64Array#at + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#at (param $this i32) (param $index i32) (result i64) + (local $len i32) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + local.set $len + local.get $index + i32.const 0 + local.get $len + local.get $index + i32.const 0 + i32.ge_s + select + i32.add + local.set $index + local.get $index + local.get $len + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 1185 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $"std/typedarray/testAt<~lib/typedarray/Uint64Array,u64>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint64Array#at + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -1 + call $~lib/typedarray/Uint64Array#at + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -3 + call $~lib/typedarray/Uint64Array#at + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#at (param $this i32) (param $index i32) (result f32) + (local $len i32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + local.set $len + local.get $index + i32.const 0 + local.get $len + local.get $index + i32.const 0 + i32.ge_s + select + i32.add + local.set $index + local.get $index + local.get $len + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 1327 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $"std/typedarray/testAt<~lib/typedarray/Float32Array,f32>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Float32Array#at + f32.const 1 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -1 + call $~lib/typedarray/Float32Array#at + f32.const 3 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -3 + call $~lib/typedarray/Float32Array#at + f32.const 1 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#at (param $this i32) (param $index i32) (result f64) + (local $len i32) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + local.set $len + local.get $index + i32.const 0 + local.get $len + local.get $index + i32.const 0 + i32.ge_s + select + i32.add + local.set $index + local.get $index + local.get $len + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 1469 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + f64.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $"std/typedarray/testAt<~lib/typedarray/Float64Array,f64>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Float64Array#at + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -1 + call $~lib/typedarray/Float64Array#at + f64.const 3 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const -3 + call $~lib/typedarray/Float64Array#at + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int8Array,i8,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $i + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int8Array,i8,i8>|inlined.0" + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2224 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int8Array#reduceRight + local.set $result + local.get $result + i32.extend8_s + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8Array,u8,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint8Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8Array,u8,u8>|inlined.0" + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2256 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#reduceRight + local.set $result + local.get $result + i32.const 255 + i32.and + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8ClampedArray,u8,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8ClampedArray,u8,u8>|inlined.0" + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2288 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#reduceRight + local.set $result + local.get $result + i32.const 255 + i32.and + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int16Array,i16,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $i + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int16Array,i16,i16>|inlined.0" + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2320 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int16Array#reduceRight + local.set $result + local.get $result + i32.extend16_s + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint16Array,u16,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint16Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $i + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint16Array,u16,u16>|inlined.0" + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2352 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint16Array#reduceRight + local.set $result + local.get $result + i32.const 65535 + i32.and + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int32Array,i32,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int32Array,i32,i32>|inlined.0" + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2384 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int32Array#reduceRight + local.set $result + local.get $result + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i32) + (local $ptr i32) + (local $i i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint32Array,u32,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint32Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $6) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint32Array,u32,u32>|inlined.0" + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>" + (local $array i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2416 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint32Array#reduceRight + local.set $result + local.get $result + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i64) (result i64) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i64) + (local $ptr i32) + (local $i i32) + (local $8 i32) + (local $9 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int64Array,i64,i64>|inlined.0" (result i64) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $16) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int64Array,i64,i64>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>" + (local $array i32) + (local $result i64) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2448 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i64.const 0 + call $~lib/typedarray/Int64Array#reduceRight + local.set $result + local.get $result + i64.const 6 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i64) (result i64) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 i64) + (local $ptr i32) + (local $i i32) + (local $8 i32) + (local $9 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint64Array,u64,u64>|inlined.0" (result i64) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint64Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $16) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint64Array,u64,u64>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>" + (local $array i32) + (local $result i64) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2480 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i64.const 0 + call $~lib/typedarray/Uint64Array#reduceRight + local.set $result + local.get $result + i64.const 6 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue f32) (result f32) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 f32) + (local $ptr i32) + (local $i i32) + (local $8 i32) + (local $9 f32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float32Array,f32,f32>|inlined.0" (result f32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Float32Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.get $i + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $20) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float32Array,f32,f32>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>" + (local $array i32) + (local $result f32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2512 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + f32.const 0 + call $~lib/typedarray/Float32Array#reduceRight + local.set $result + local.get $result + f32.const 6 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue f64) (result f64) + (local $array i32) + (local $fn|4 i32) + (local $initialValue|5 f64) + (local $ptr i32) + (local $i i32) + (local $8 i32) + (local $9 f64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float64Array,f64,f64>|inlined.0" (result f64) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|4 + i32.store offset=4 + local.get $initialValue + local.set $initialValue|5 + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Float64Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $initialValue|5 + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.get $i + local.get $array + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $fn|4 + i32.load + call_indirect (type $21) + local.set $initialValue|5 + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + local.get $initialValue|5 + br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float64Array,f64,f64>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $"std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>" + (local $array i32) + (local $result f64) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $array + i32.store + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2544 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + f64.const 0 + call $~lib/typedarray/Float64Array#reduceRight + local.set $result + local.get $result + f64.const 6 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#map (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $ptr i32) + (local $byteLength i32) + (local $out i32) + (local $buf i32) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/MAP<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Int8Array#get:length + local.set $len + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $len + i32.const 0 + i32.shl + local.set $byteLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $buf + local.get $i + i32.const 0 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $i + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $buf + i32.store offset=4 + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + br $"~lib/typedarray/MAP<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2576 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int8Array#map + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#map (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $ptr i32) + (local $byteLength i32) + (local $out i32) + (local $buf i32) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/MAP<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Uint8Array#get:length + local.set $len + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $len + i32.const 0 + i32.shl + local.set $byteLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $buf + local.get $i + i32.const 0 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $buf + i32.store offset=4 + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + br $"~lib/typedarray/MAP<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/typedarray/Uint8Array#__get (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 167 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + i32.load8_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2608 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint8Array#map + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#map (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $ptr i32) + (local $byteLength i32) + (local $out i32) + (local $buf i32) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/MAP<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $len + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $len + i32.const 0 + i32.shl + local.set $byteLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $buf + local.get $i + i32.const 0 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $buf + i32.store offset=4 + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + br $"~lib/typedarray/MAP<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2640 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#map + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#map (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $ptr i32) + (local $byteLength i32) + (local $out i32) + (local $buf i32) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/MAP<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Int16Array#get:length + local.set $len + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $len + i32.const 1 + i32.shl + local.set $byteLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $buf + local.get $i + i32.const 1 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $i + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $buf + i32.store offset=4 + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + br $"~lib/typedarray/MAP<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/typedarray/Int16Array#__get (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 452 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2672 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int16Array#map + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#map (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $ptr i32) + (local $byteLength i32) + (local $out i32) + (local $buf i32) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/MAP<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Uint16Array#get:length + local.set $len + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $len + i32.const 1 + i32.shl + local.set $byteLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $buf + local.get $i + i32.const 1 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $i + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $buf + i32.store offset=4 + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + br $"~lib/typedarray/MAP<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/typedarray/Uint16Array#__get (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 594 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2704 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint16Array#map + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#map (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $ptr i32) + (local $byteLength i32) + (local $out i32) + (local $buf i32) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/MAP<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Int32Array#get:length + local.set $len + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $len + i32.const 2 + i32.shl + local.set $byteLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $buf + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $buf + i32.store offset=4 + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + br $"~lib/typedarray/MAP<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2736 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int32Array#map + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#map (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $ptr i32) + (local $byteLength i32) + (local $out i32) + (local $buf i32) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/MAP<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Uint32Array#get:length + local.set $len + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $len + i32.const 2 + i32.shl + local.set $byteLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $buf + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $buf + i32.store offset=4 + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + br $"~lib/typedarray/MAP<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/typedarray/Uint32Array#__get (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 878 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2768 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint32Array#map + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#map (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $ptr i32) + (local $byteLength i32) + (local $out i32) + (local $buf i32) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/MAP<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Int64Array#get:length + local.set $len + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $len + i32.const 3 + i32.shl + local.set $byteLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $buf + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $22) + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $buf + i32.store offset=4 + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + br $"~lib/typedarray/MAP<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/typedarray/Int64Array#__get (param $this i32) (param $index i32) (result i64) + (local $2 i32) + (local $3 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 1020 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2800 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int64Array#map + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 9 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#map (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $ptr i32) + (local $byteLength i32) + (local $out i32) + (local $buf i32) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/MAP<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Uint64Array#get:length + local.set $len + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $len + i32.const 3 + i32.shl + local.set $byteLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $buf + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $22) + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $buf + i32.store offset=4 + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + br $"~lib/typedarray/MAP<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/typedarray/Uint64Array#__get (param $this i32) (param $index i32) (result i64) + (local $2 i32) + (local $3 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 1162 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2832 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint64Array#map + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 9 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#map (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $ptr i32) + (local $byteLength i32) + (local $out i32) + (local $buf i32) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/MAP<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Float32Array#get:length + local.set $len + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $len + i32.const 2 + i32.shl + local.set $byteLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $buf + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.get $i + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $30) + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $buf + i32.store offset=4 + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + br $"~lib/typedarray/MAP<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/typedarray/Float32Array#__get (param $this i32) (param $index i32) (result f32) + (local $2 i32) + (local $3 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2864 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Float32Array#map + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 9 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#map (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $ptr i32) + (local $byteLength i32) + (local $out i32) + (local $buf i32) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/MAP<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Float64Array#get:length + local.set $len + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $len + i32.const 3 + i32.shl + local.set $byteLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $buf + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.get $i + local.get $array + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $31) + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $buf + i32.store offset=4 + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + br $"~lib/typedarray/MAP<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2896 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Float64Array#map + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 9 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#filter (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $out i32) + (local $buf i32) + (local $dataStart i32) + (local $j i32) + (local $i i32) + (local $value i32) + (local $11 i32) + (local $byteLength i32) + (local $data i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/FILTER<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Int8Array#get:length + local.set $len + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 0 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + i32.const 0 + local.set $j + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + local.get $value + local.get $i + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $buf + local.get $j + local.tee $11 + i32.const 1 + i32.add + local.set $j + local.get $11 + i32.const 0 + i32.shl + i32.add + local.get $value + i32.store8 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $j + i32.const 0 + i32.shl + local.set $byteLength + local.get $buf + local.get $byteLength + call $~lib/rt/itcms/__renew + local.set $data + local.get $out + local.get $data + i32.store + local.get $out + local.get $data + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $data + i32.store offset=4 + local.get $out + br $"~lib/typedarray/FILTER<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/typedarray/Int8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2928 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int8Array#filter + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#filter (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $out i32) + (local $buf i32) + (local $dataStart i32) + (local $j i32) + (local $i i32) + (local $value i32) + (local $11 i32) + (local $byteLength i32) + (local $data i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/FILTER<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Uint8Array#get:length + local.set $len + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 0 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + i32.const 0 + local.set $j + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + local.get $value + local.get $i + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $buf + local.get $j + local.tee $11 + i32.const 1 + i32.add + local.set $j + local.get $11 + i32.const 0 + i32.shl + i32.add + local.get $value + i32.store8 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $j + i32.const 0 + i32.shl + local.set $byteLength + local.get $buf + local.get $byteLength + call $~lib/rt/itcms/__renew + local.set $data + local.get $out + local.get $data + i32.store + local.get $out + local.get $data + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $data + i32.store offset=4 + local.get $out + br $"~lib/typedarray/FILTER<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/typedarray/Uint8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2960 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint8Array#filter + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#filter (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $out i32) + (local $buf i32) + (local $dataStart i32) + (local $j i32) + (local $i i32) + (local $value i32) + (local $11 i32) + (local $byteLength i32) + (local $data i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/FILTER<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $len + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 0 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + i32.const 0 + local.set $j + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + local.get $value + local.get $i + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $buf + local.get $j + local.tee $11 + i32.const 1 + i32.add + local.set $j + local.get $11 + i32.const 0 + i32.shl + i32.add + local.get $value + i32.store8 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $j + i32.const 0 + i32.shl + local.set $byteLength + local.get $buf + local.get $byteLength + call $~lib/rt/itcms/__renew + local.set $data + local.get $out + local.get $data + i32.store + local.get $out + local.get $data + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $data + i32.store offset=4 + local.get $out + br $"~lib/typedarray/FILTER<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2992 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#filter + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#filter (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $out i32) + (local $buf i32) + (local $dataStart i32) + (local $j i32) + (local $i i32) + (local $value i32) + (local $11 i32) + (local $byteLength i32) + (local $data i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/FILTER<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Int16Array#get:length + local.set $len + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + i32.const 0 + local.set $j + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value + local.get $value + local.get $i + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $buf + local.get $j + local.tee $11 + i32.const 1 + i32.add + local.set $j + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $value + i32.store16 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $j + i32.const 1 + i32.shl + local.set $byteLength + local.get $buf + local.get $byteLength + call $~lib/rt/itcms/__renew + local.set $data + local.get $out + local.get $data + i32.store + local.get $out + local.get $data + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $data + i32.store offset=4 + local.get $out + br $"~lib/typedarray/FILTER<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/typedarray/Int16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3024 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int16Array#filter + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int16Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#filter (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $out i32) + (local $buf i32) + (local $dataStart i32) + (local $j i32) + (local $i i32) + (local $value i32) + (local $11 i32) + (local $byteLength i32) + (local $data i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/FILTER<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Uint16Array#get:length + local.set $len + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + i32.const 0 + local.set $j + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $value + local.get $value + local.get $i + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $buf + local.get $j + local.tee $11 + i32.const 1 + i32.add + local.set $j + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $value + i32.store16 + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $j + i32.const 1 + i32.shl + local.set $byteLength + local.get $buf + local.get $byteLength + call $~lib/rt/itcms/__renew + local.set $data + local.get $out + local.get $data + i32.store + local.get $out + local.get $data + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $data + i32.store offset=4 + local.get $out + br $"~lib/typedarray/FILTER<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/typedarray/Uint16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3056 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint16Array#filter + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint16Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#filter (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $out i32) + (local $buf i32) + (local $dataStart i32) + (local $j i32) + (local $i i32) + (local $value i32) + (local $11 i32) + (local $byteLength i32) + (local $data i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/FILTER<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Int32Array#get:length + local.set $len + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + i32.const 0 + local.set $j + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + local.get $value + local.get $i + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $buf + local.get $j + local.tee $11 + i32.const 1 + i32.add + local.set $j + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $j + i32.const 2 + i32.shl + local.set $byteLength + local.get $buf + local.get $byteLength + call $~lib/rt/itcms/__renew + local.set $data + local.get $out + local.get $data + i32.store + local.get $out + local.get $data + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $data + i32.store offset=4 + local.get $out + br $"~lib/typedarray/FILTER<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/typedarray/Int32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3088 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int32Array#filter + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#filter (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $out i32) + (local $buf i32) + (local $dataStart i32) + (local $j i32) + (local $i i32) + (local $value i32) + (local $11 i32) + (local $byteLength i32) + (local $data i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/FILTER<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Uint32Array#get:length + local.set $len + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + i32.const 0 + local.set $j + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + local.get $value + local.get $i + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $buf + local.get $j + local.tee $11 + i32.const 1 + i32.add + local.set $j + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $j + i32.const 2 + i32.shl + local.set $byteLength + local.get $buf + local.get $byteLength + call $~lib/rt/itcms/__renew + local.set $data + local.get $out + local.get $data + i32.store + local.get $out + local.get $data + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $data + i32.store offset=4 + local.get $out + br $"~lib/typedarray/FILTER<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/typedarray/Uint32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3120 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint32Array#filter + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#filter (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $out i32) + (local $buf i32) + (local $dataStart i32) + (local $j i32) + (local $i i32) + (local $value i64) + (local $11 i32) + (local $byteLength i32) + (local $data i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/FILTER<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Int64Array#get:length + local.set $len + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 3 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + i32.const 0 + local.set $j + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + local.get $value + local.get $i + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $7) + if + local.get $buf + local.get $j + local.tee $11 + i32.const 1 + i32.add + local.set $j + local.get $11 + i32.const 3 + i32.shl + i32.add + local.get $value + i64.store + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $j + i32.const 3 + i32.shl + local.set $byteLength + local.get $buf + local.get $byteLength + call $~lib/rt/itcms/__renew + local.set $data + local.get $out + local.get $data + i32.store + local.get $out + local.get $data + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $data + i32.store offset=4 + local.get $out + br $"~lib/typedarray/FILTER<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/typedarray/Int64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3152 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int64Array#filter + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#filter (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $out i32) + (local $buf i32) + (local $dataStart i32) + (local $j i32) + (local $i i32) + (local $value i64) + (local $11 i32) + (local $byteLength i32) + (local $data i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/FILTER<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Uint64Array#get:length + local.set $len + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 3 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + i32.const 0 + local.set $j + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + local.get $value + local.get $i + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $7) + if + local.get $buf + local.get $j + local.tee $11 + i32.const 1 + i32.add + local.set $j + local.get $11 + i32.const 3 + i32.shl + i32.add + local.get $value + i64.store + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $j + i32.const 3 + i32.shl + local.set $byteLength + local.get $buf + local.get $byteLength + call $~lib/rt/itcms/__renew + local.set $data + local.get $out + local.get $data + i32.store + local.get $out + local.get $data + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $data + i32.store offset=4 + local.get $out + br $"~lib/typedarray/FILTER<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/typedarray/Uint64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3184 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint64Array#filter + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint64Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#filter (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $out i32) + (local $buf i32) + (local $dataStart i32) + (local $j i32) + (local $i i32) + (local $value f32) + (local $11 i32) + (local $byteLength i32) + (local $data i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/FILTER<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Float32Array#get:length + local.set $len + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + i32.const 0 + local.set $j + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + local.get $value + local.get $i + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $9) + if + local.get $buf + local.get $j + local.tee $11 + i32.const 1 + i32.add + local.set $j + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $value + f32.store + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $j + i32.const 2 + i32.shl + local.set $byteLength + local.get $buf + local.get $byteLength + call $~lib/rt/itcms/__renew + local.set $data + local.get $out + local.get $data + i32.store + local.get $out + local.get $data + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $data + i32.store offset=4 + local.get $out + br $"~lib/typedarray/FILTER<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/typedarray/Float32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3216 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Float32Array#filter + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Float32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#filter (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $len i32) + (local $out i32) + (local $buf i32) + (local $dataStart i32) + (local $j i32) + (local $i i32) + (local $value f64) + (local $11 i32) + (local $byteLength i32) + (local $data i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + block $"~lib/typedarray/FILTER<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Float64Array#get:length + local.set $len + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $len + i32.const 3 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buf + i32.store offset=16 + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + i32.const 0 + local.set $j + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + local.get $value + local.get $i + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $10) + if + local.get $buf + local.get $j + local.tee $11 + i32.const 1 + i32.add + local.set $j + local.get $11 + i32.const 3 + i32.shl + i32.add + local.get $value + f64.store + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $j + i32.const 3 + i32.shl + local.set $byteLength + local.get $buf + local.get $byteLength + call $~lib/rt/itcms/__renew + local.set $data + local.get $out + local.get $data + i32.store + local.get $out + local.get $data + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $data + i32.store offset=4 + local.get $out + br $"~lib/typedarray/FILTER<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/typedarray/Float64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3248 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Float64Array#filter + local.tee $result + i32.store offset=12 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Float64Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#some (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int8Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + i32.const 1 + br $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + br $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3280 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#some + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3312 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#some + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#some (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint8Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + i32.const 1 + br $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + br $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3344 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8Array#some + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3376 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8Array#some + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#some (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + i32.const 1 + br $"~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + br $"~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3408 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#some + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3440 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#some + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#some (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int16Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + i32.const 1 + br $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + br $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3472 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#some + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3504 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#some + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#some (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint16Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + i32.const 1 + br $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + br $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3536 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#some + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3568 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#some + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#some (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + i32.const 1 + br $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + br $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3600 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#some + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3632 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#some + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#some (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + i32.const 1 + br $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + br $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3664 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint32Array#some + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3696 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint32Array#some + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#some (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $7) + if + i32.const 1 + br $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + br $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3728 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int64Array#some + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3760 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int64Array#some + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#some (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $7) + if + i32.const 1 + br $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + br $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3792 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint64Array#some + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3824 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint64Array#some + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#some (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Float32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $9) + if + i32.const 1 + br $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + br $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3856 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#some + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3888 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#some + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#some (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Float64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $10) + if + i32.const 1 + br $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + br $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3920 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float64Array#some + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3952 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float64Array#some + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#findIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int8Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3984 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#findIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4016 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#findIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#findIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint8Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4048 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8Array#findIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4080 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8Array#findIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#findIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4112 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#findIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4144 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#findIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#findIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int16Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4176 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#findIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4208 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#findIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#findIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint16Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4240 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#findIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4272 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#findIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#findIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4304 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#findIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4336 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#findIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#findIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4368 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint32Array#findIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4400 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint32Array#findIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#findIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $7) + if + local.get $i + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4432 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int64Array#findIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4464 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int64Array#findIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#findIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $7) + if + local.get $i + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4496 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint64Array#findIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4528 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint64Array#findIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#findIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Float32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $9) + if + local.get $i + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4560 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#findIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4592 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#findIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#findIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Float64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $10) + if + local.get $i + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4624 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float64Array#findIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4656 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float64Array#findIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $i + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4688 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#findLastIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4720 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#findLastIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint8Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4752 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8Array#findLastIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4784 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8Array#findLastIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4816 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#findLastIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4848 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#findLastIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $i + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4880 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#findLastIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4912 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#findLastIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint16Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $i + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4944 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#findLastIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4976 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#findLastIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5008 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#findLastIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5040 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#findLastIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint32Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + local.get $i + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5072 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint32Array#findLastIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5104 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint32Array#findLastIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $7) + if + local.get $i + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5136 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int64Array#findLastIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5168 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int64Array#findLastIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint64Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $7) + if + local.get $i + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5200 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint64Array#findLastIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5232 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint64Array#findLastIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Float32Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.get $i + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $9) + if + local.get $i + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5264 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#findLastIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5296 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#findLastIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#findLastIndex (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Float64Array#get:length + i32.const 1 + i32.sub + local.set $i + loop $for-loop|0 + local.get $i + i32.const 0 + i32.ge_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.get $i + local.get $array + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $10) + if + local.get $i + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.get $i + i32.const 1 + i32.sub + local.set $i + br $for-loop|0 + end + end + i32.const -1 + br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5328 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float64Array#findLastIndex + local.set $result + local.get $result + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5360 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float64Array#findLastIndex + local.set $failResult + local.get $failResult + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#every (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int8Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + block $for-continue|0 + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + br $for-continue|0 + end + i32.const 0 + br $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + br $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5392 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#every + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5424 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#every + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#every (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint8Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + block $for-continue|0 + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + br $for-continue|0 + end + i32.const 0 + br $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + br $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5456 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8Array#every + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5488 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8Array#every + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#every (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + block $for-continue|0 + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + br $for-continue|0 + end + i32.const 0 + br $"~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + br $"~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5520 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#every + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5552 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#every + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#every (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int16Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + block $for-continue|0 + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + br $for-continue|0 + end + i32.const 0 + br $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + br $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5584 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#every + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5616 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#every + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#every (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint16Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + block $for-continue|0 + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + br $for-continue|0 + end + i32.const 0 + br $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + br $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5648 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#every + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5680 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#every + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#every (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + block $for-continue|0 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + br $for-continue|0 + end + i32.const 0 + br $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + br $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5712 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#every + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5744 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#every + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#every (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + block $for-continue|0 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $1) + if + br $for-continue|0 + end + i32.const 0 + br $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + br $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5776 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint32Array#every + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5808 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint32Array#every + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#every (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + block $for-continue|0 + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $7) + if + br $for-continue|0 + end + i32.const 0 + br $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + br $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5840 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int64Array#every + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5872 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int64Array#every + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#every (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + block $for-continue|0 + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $7) + if + br $for-continue|0 + end + i32.const 0 + br $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + br $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5904 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint64Array#every + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5936 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint64Array#every + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#every (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Float32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + block $for-continue|0 + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $9) + if + br $for-continue|0 + end + i32.const 0 + br $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + br $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5968 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#every + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 6000 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#every + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#every (param $this i32) (param $fn i32) (result i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Float64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + block $for-continue|0 + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $10) + if + br $for-continue|0 + end + i32.const 0 + br $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 1 + br $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>" + (local $source i32) + (local $result i32) + (local $failResult i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 6032 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float64Array#every + local.set $result + local.get $result + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $source + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 6064 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float64Array#every + local.set $failResult + local.get $failResult + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $value i32) (param $index i32) (param $self i32) + (local $matchedValue i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $index + call $~lib/array/Array#__get + local.set $matchedValue + local.get $value + i32.extend8_s + local.get $matchedValue + i32.extend8_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $index + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $self + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#forEach (param $this i32) (param $fn i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int8Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $5) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $array + i32.store + local.get $array + global.set $std/typedarray/forEachSelf + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 6176 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $value i32) (param $index i32) (param $self i32) + (local $matchedValue i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $index + call $~lib/array/Array#__get + local.set $matchedValue + local.get $value + i32.const 255 + i32.and + local.get $matchedValue + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $index + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $self + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#forEach (param $this i32) (param $fn i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint8Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $5) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $array + i32.store + local.get $array + global.set $std/typedarray/forEachSelf + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 6208 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0" (param $value i32) (param $index i32) (param $self i32) + (local $matchedValue i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $index + call $~lib/array/Array#__get + local.set $matchedValue + local.get $value + i32.const 255 + i32.and + local.get $matchedValue + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $index + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $self + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#forEach (param $this i32) (param $fn i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $5) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $array + i32.store + local.get $array + global.set $std/typedarray/forEachSelf + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 6240 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $value i32) (param $index i32) (param $self i32) + (local $matchedValue i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $index + call $~lib/array/Array#__get + local.set $matchedValue + local.get $value + i32.extend16_s + local.get $matchedValue + i32.extend16_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $index + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $self + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#forEach (param $this i32) (param $fn i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int16Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $5) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $array + i32.store + local.get $array + global.set $std/typedarray/forEachSelf + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 6272 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $value i32) (param $index i32) (param $self i32) + (local $matchedValue i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $index + call $~lib/array/Array#__get + local.set $matchedValue + local.get $value + i32.const 65535 + i32.and + local.get $matchedValue + i32.const 65535 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $index + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $self + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#forEach (param $this i32) (param $fn i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint16Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $5) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $array + i32.store + local.get $array + global.set $std/typedarray/forEachSelf + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 6304 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint16Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $value i32) (param $index i32) (param $self i32) + (local $matchedValue i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $index + call $~lib/array/Array#__get + local.set $matchedValue + local.get $value + local.get $matchedValue + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $index + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $self + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#forEach (param $this i32) (param $fn i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $5) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $array + i32.store + local.get $array + global.set $std/typedarray/forEachSelf + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 6336 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int32Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $value i32) (param $index i32) (param $self i32) + (local $matchedValue i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $index + call $~lib/array/Array#__get + local.set $matchedValue + local.get $value + local.get $matchedValue + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $index + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $self + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#forEach (param $this i32) (param $fn i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $5) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $array + i32.store + local.get $array + global.set $std/typedarray/forEachSelf + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 6368 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint32Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $value i64) (param $index i32) (param $self i32) + (local $matchedValue i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $index + call $~lib/array/Array#__get + local.set $matchedValue + local.get $value + local.get $matchedValue + i64.extend_i32_s + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $index + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $self + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#forEach (param $this i32) (param $fn i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $26) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $array + i32.store + local.get $array + global.set $std/typedarray/forEachSelf + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 6400 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $value i64) (param $index i32) (param $self i32) + (local $matchedValue i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $index + call $~lib/array/Array#__get + local.set $matchedValue + local.get $value + local.get $matchedValue + i64.extend_i32_s + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $index + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $self + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#forEach (param $this i32) (param $fn i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Uint64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $26) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $array + i32.store + local.get $array + global.set $std/typedarray/forEachSelf + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 6432 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $value f32) (param $index i32) (param $self i32) + (local $matchedValue i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $index + call $~lib/array/Array#__get + local.set $matchedValue + local.get $value + local.get $matchedValue + f32.convert_i32_s + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $index + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $self + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#forEach (param $this i32) (param $fn i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Float32Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $37) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $array + i32.store + local.get $array + global.set $std/typedarray/forEachSelf + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 6464 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Float32Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $value f64) (param $index i32) (param $self i32) + (local $matchedValue i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $index + call $~lib/array/Array#__get + local.set $matchedValue + local.get $value + local.get $matchedValue + f64.convert_i32_s + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $index + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $self + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#forEach (param $this i32) (param $fn i32) + (local $array i32) + (local $fn|3 i32) + (local $ptr i32) + (local $i i32) + (local $k i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + global.get $~lib/memory/__stack_pointer + local.get $fn + local.tee $fn|3 + i32.store offset=4 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $ptr + i32.const 0 + local.set $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Float64Array#get:length + local.set $k + loop $for-loop|0 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.get $i + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $fn|3 + i32.load + call_indirect (type $38) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $array + i32.store + local.get $array + global.set $std/typedarray/forEachSelf + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 6496 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Float64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Int8Array#get:length + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $arrayWithOffset i32) + (local $i i32) + (local $i|5 i32) + (local $reversedSlice i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayReverseValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int8Array#constructor + local.tee $array + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int8Array#constructor + local.tee $arrayWithOffset + i32.store offset=12 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $i|5 + loop $for-loop|1 + local.get $i|5 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|5 + call $~lib/typedarray/Int8Array#__get + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $length + i32.const 1 + i32.sub + local.get $i|5 + i32.sub + call $~lib/array/Array#__get + i32.extend8_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|5 + i32.const 1 + i32.add + local.set $i|5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int8Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int8Array#reverse + local.tee $reversedSlice + i32.store offset=20 + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Uint8Array#get:length + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint8Array#subarray (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $array i32) + (local $begin|4 i32) + (local $end|5 i32) + (local $len 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 $out i32) + (local $buf i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $begin + local.set $begin|4 + local.get $end + local.set $end|5 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/typedarray/Uint8Array#get:length + local.set $len + local.get $begin|4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $begin|4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $begin|4 + local.tee $9 + local.get $len + local.tee $10 + local.get $9 + local.get $10 + i32.lt_s + select + end + local.set $begin|4 + local.get $end|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end|5 + i32.add + local.tee $11 + i32.const 0 + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $end|5 + local.tee $13 + local.get $len + local.tee $14 + local.get $13 + local.get $14 + i32.lt_s + select + end + local.set $end|5 + local.get $end|5 + local.tee $15 + local.get $begin|4 + local.tee $16 + local.get $15 + local.get $16 + i32.gt_s + select + local.set $end|5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $buf + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $begin|4 + i32.const 0 + i32.shl + i32.add + i32.store offset=4 + local.get $out + local.get $end|5 + local.get $begin|4 + i32.sub + i32.const 0 + i32.shl + i32.store offset=8 + local.get $out + br $"~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $arrayWithOffset i32) + (local $i i32) + (local $i|5 i32) + (local $reversedSlice i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayReverseValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint8Array#constructor + local.tee $array + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint8Array#constructor + local.tee $arrayWithOffset + i32.store offset=12 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint8Array#reverse + drop + i32.const 0 + local.set $i|5 + loop $for-loop|1 + local.get $i|5 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|5 + call $~lib/typedarray/Uint8Array#__get + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $length + i32.const 1 + i32.sub + local.get $i|5 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|5 + i32.const 1 + i32.add + local.set $i|5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Uint8Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint8Array#reverse + local.tee $reversedSlice + i32.store offset=20 + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#get:length + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint8ClampedArray#subarray (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $array i32) + (local $begin i32) + (local $end|5 i32) + (local $len 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 $out i32) + (local $buf i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $start + local.set $begin + local.get $end + local.set $end|5 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $len + local.get $begin + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $begin + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $begin + local.tee $9 + local.get $len + local.tee $10 + local.get $9 + local.get $10 + i32.lt_s + select + end + local.set $begin + local.get $end|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end|5 + i32.add + local.tee $11 + i32.const 0 + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $end|5 + local.tee $13 + local.get $len + local.tee $14 + local.get $13 + local.get $14 + i32.lt_s + select + end + local.set $end|5 + local.get $end|5 + local.tee $15 + local.get $begin + local.tee $16 + local.get $15 + local.get $16 + i32.gt_s + select + local.set $end|5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $buf + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $begin + i32.const 0 + i32.shl + i32.add + i32.store offset=4 + local.get $out + local.get $end|5 + local.get $begin + i32.sub + i32.const 0 + i32.shl + i32.store offset=8 + local.get $out + br $"~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $arrayWithOffset i32) + (local $i i32) + (local $i|5 i32) + (local $reversedSlice i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayReverseValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $array + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $arrayWithOffset + i32.store offset=12 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint8ClampedArray#reverse + drop + i32.const 0 + local.set $i|5 + loop $for-loop|1 + local.get $i|5 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|5 + call $~lib/typedarray/Uint8ClampedArray#__get + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $length + i32.const 1 + i32.sub + local.get $i|5 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|5 + i32.const 1 + i32.add + local.set $i|5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint8ClampedArray#reverse + local.tee $reversedSlice + i32.store offset=20 + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Int16Array#get:length + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Int16Array#subarray (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $array i32) + (local $begin|4 i32) + (local $end|5 i32) + (local $len 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 $out i32) + (local $buf i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SUBARRAY<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $begin + local.set $begin|4 + local.get $end + local.set $end|5 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/typedarray/Int16Array#get:length + local.set $len + local.get $begin|4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $begin|4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $begin|4 + local.tee $9 + local.get $len + local.tee $10 + local.get $9 + local.get $10 + i32.lt_s + select + end + local.set $begin|4 + local.get $end|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end|5 + i32.add + local.tee $11 + i32.const 0 + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $end|5 + local.tee $13 + local.get $len + local.tee $14 + local.get $13 + local.get $14 + i32.lt_s + select + end + local.set $end|5 + local.get $end|5 + local.tee $15 + local.get $begin|4 + local.tee $16 + local.get $15 + local.get $16 + i32.gt_s + select + local.set $end|5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $buf + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $begin|4 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $out + local.get $end|5 + local.get $begin|4 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 + local.get $out + br $"~lib/typedarray/SUBARRAY<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $arrayWithOffset i32) + (local $i i32) + (local $i|5 i32) + (local $reversedSlice i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayReverseValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int16Array#constructor + local.tee $array + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int16Array#constructor + local.tee $arrayWithOffset + i32.store offset=12 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int16Array#reverse + drop + i32.const 0 + local.set $i|5 + loop $for-loop|1 + local.get $i|5 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|5 + call $~lib/typedarray/Int16Array#__get + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $length + i32.const 1 + i32.sub + local.get $i|5 + i32.sub + call $~lib/array/Array#__get + i32.extend16_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|5 + i32.const 1 + i32.add + local.set $i|5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int16Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int16Array#reverse + local.tee $reversedSlice + i32.store offset=20 + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Uint16Array#get:length + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint16Array#subarray (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $array i32) + (local $begin|4 i32) + (local $end|5 i32) + (local $len 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 $out i32) + (local $buf i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SUBARRAY<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $begin + local.set $begin|4 + local.get $end + local.set $end|5 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/typedarray/Uint16Array#get:length + local.set $len + local.get $begin|4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $begin|4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $begin|4 + local.tee $9 + local.get $len + local.tee $10 + local.get $9 + local.get $10 + i32.lt_s + select + end + local.set $begin|4 + local.get $end|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end|5 + i32.add + local.tee $11 + i32.const 0 + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $end|5 + local.tee $13 + local.get $len + local.tee $14 + local.get $13 + local.get $14 + i32.lt_s + select + end + local.set $end|5 + local.get $end|5 + local.tee $15 + local.get $begin|4 + local.tee $16 + local.get $15 + local.get $16 + i32.gt_s + select + local.set $end|5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $buf + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $begin|4 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $out + local.get $end|5 + local.get $begin|4 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 + local.get $out + br $"~lib/typedarray/SUBARRAY<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $arrayWithOffset i32) + (local $i i32) + (local $i|5 i32) + (local $reversedSlice i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayReverseValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint16Array#constructor + local.tee $array + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint16Array#constructor + local.tee $arrayWithOffset + i32.store offset=12 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint16Array#reverse + drop + i32.const 0 + local.set $i|5 + loop $for-loop|1 + local.get $i|5 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|5 + call $~lib/typedarray/Uint16Array#__get + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $length + i32.const 1 + i32.sub + local.get $i|5 + i32.sub + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|5 + i32.const 1 + i32.add + local.set $i|5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Uint16Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint16Array#reverse + local.tee $reversedSlice + i32.store offset=20 + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Int32Array#get:length + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $arrayWithOffset i32) + (local $i i32) + (local $i|5 i32) + (local $reversedSlice i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayReverseValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int32Array#constructor + local.tee $array + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int32Array#constructor + local.tee $arrayWithOffset + i32.store offset=12 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int32Array#reverse + drop + i32.const 0 + local.set $i|5 + loop $for-loop|1 + local.get $i|5 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|5 + call $~lib/typedarray/Int32Array#__get + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $length + i32.const 1 + i32.sub + local.get $i|5 + i32.sub + call $~lib/array/Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|5 + i32.const 1 + i32.add + local.set $i|5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int32Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int32Array#reverse + local.tee $reversedSlice + i32.store offset=20 + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Int32Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Uint32Array#get:length + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint32Array#subarray (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $array i32) + (local $begin|4 i32) + (local $end|5 i32) + (local $len 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 $out i32) + (local $buf i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SUBARRAY<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $begin + local.set $begin|4 + local.get $end + local.set $end|5 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/typedarray/Uint32Array#get:length + local.set $len + local.get $begin|4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $begin|4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $begin|4 + local.tee $9 + local.get $len + local.tee $10 + local.get $9 + local.get $10 + i32.lt_s + select + end + local.set $begin|4 + local.get $end|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end|5 + i32.add + local.tee $11 + i32.const 0 + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $end|5 + local.tee $13 + local.get $len + local.tee $14 + local.get $13 + local.get $14 + i32.lt_s + select + end + local.set $end|5 + local.get $end|5 + local.tee $15 + local.get $begin|4 + local.tee $16 + local.get $15 + local.get $16 + i32.gt_s + select + local.set $end|5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $buf + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $begin|4 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $out + local.get $end|5 + local.get $begin|4 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $out + br $"~lib/typedarray/SUBARRAY<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $arrayWithOffset i32) + (local $i i32) + (local $i|5 i32) + (local $reversedSlice i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayReverseValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint32Array#constructor + local.tee $array + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint32Array#constructor + local.tee $arrayWithOffset + i32.store offset=12 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint32Array#reverse + drop + i32.const 0 + local.set $i|5 + loop $for-loop|1 + local.get $i|5 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|5 + call $~lib/typedarray/Uint32Array#__get + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $length + i32.const 1 + i32.sub + local.get $i|5 + i32.sub + call $~lib/array/Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|5 + i32.const 1 + i32.add + local.set $i|5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Uint32Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint32Array#reverse + local.tee $reversedSlice + i32.store offset=20 + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Int64Array#get:length + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Int64Array#subarray (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $array i32) + (local $begin|4 i32) + (local $end|5 i32) + (local $len 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 $out i32) + (local $buf i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SUBARRAY<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $begin + local.set $begin|4 + local.get $end + local.set $end|5 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/typedarray/Int64Array#get:length + local.set $len + local.get $begin|4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $begin|4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $begin|4 + local.tee $9 + local.get $len + local.tee $10 + local.get $9 + local.get $10 + i32.lt_s + select + end + local.set $begin|4 + local.get $end|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end|5 + i32.add + local.tee $11 + i32.const 0 + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $end|5 + local.tee $13 + local.get $len + local.tee $14 + local.get $13 + local.get $14 + i32.lt_s + select + end + local.set $end|5 + local.get $end|5 + local.tee $15 + local.get $begin|4 + local.tee $16 + local.get $15 + local.get $16 + i32.gt_s + select + local.set $end|5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $buf + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $begin|4 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $out + local.get $end|5 + local.get $begin|4 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $out + br $"~lib/typedarray/SUBARRAY<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $arrayWithOffset i32) + (local $i i32) + (local $i|5 i32) + (local $reversedSlice i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayReverseValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int64Array#constructor + local.tee $array + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int64Array#constructor + local.tee $arrayWithOffset + i32.store offset=12 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int64Array#reverse + drop + i32.const 0 + local.set $i|5 + loop $for-loop|1 + local.get $i|5 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|5 + call $~lib/typedarray/Int64Array#__get + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $length + i32.const 1 + i32.sub + local.get $i|5 + i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|5 + i32.const 1 + i32.add + local.set $i|5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int64Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int64Array#reverse + local.tee $reversedSlice + i32.store offset=20 + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 8 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 7 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 6 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Uint64Array#get:length + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint64Array#subarray (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $array i32) + (local $begin|4 i32) + (local $end|5 i32) + (local $len 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 $out i32) + (local $buf i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SUBARRAY<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $begin + local.set $begin|4 + local.get $end + local.set $end|5 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/typedarray/Uint64Array#get:length + local.set $len + local.get $begin|4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $begin|4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $begin|4 + local.tee $9 + local.get $len + local.tee $10 + local.get $9 + local.get $10 + i32.lt_s + select + end + local.set $begin|4 + local.get $end|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end|5 + i32.add + local.tee $11 + i32.const 0 + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $end|5 + local.tee $13 + local.get $len + local.tee $14 + local.get $13 + local.get $14 + i32.lt_s + select + end + local.set $end|5 + local.get $end|5 + local.tee $15 + local.get $begin|4 + local.tee $16 + local.get $15 + local.get $16 + i32.gt_s + select + local.set $end|5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $buf + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $begin|4 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $out + local.get $end|5 + local.get $begin|4 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $out + br $"~lib/typedarray/SUBARRAY<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $arrayWithOffset i32) + (local $i i32) + (local $i|5 i32) + (local $reversedSlice i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayReverseValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint64Array#constructor + local.tee $array + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint64Array#constructor + local.tee $arrayWithOffset + i32.store offset=12 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint64Array#reverse + drop + i32.const 0 + local.set $i|5 + loop $for-loop|1 + local.get $i|5 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|5 + call $~lib/typedarray/Uint64Array#__get + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $length + i32.const 1 + i32.sub + local.get $i|5 + i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|5 + i32.const 1 + i32.add + local.set $i|5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Uint64Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint64Array#reverse + local.tee $reversedSlice + i32.store offset=20 + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 8 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 7 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 6 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Float32Array#get:length + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Float32Array#subarray (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $array i32) + (local $begin|4 i32) + (local $end|5 i32) + (local $len 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 $out i32) + (local $buf i32) + (local $19 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SUBARRAY<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $begin + local.set $begin|4 + local.get $end + local.set $end|5 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/typedarray/Float32Array#get:length + local.set $len + local.get $begin|4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $begin|4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $begin|4 + local.tee $9 + local.get $len + local.tee $10 + local.get $9 + local.get $10 + i32.lt_s + select + end + local.set $begin|4 + local.get $end|5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $len + local.get $end|5 + i32.add + local.tee $11 + i32.const 0 + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $end|5 + local.tee $13 + local.get $len + local.tee $14 + local.get $13 + local.get $14 + i32.lt_s + select + end + local.set $end|5 + local.get $end|5 + local.tee $15 + local.get $begin|4 + local.tee $16 + local.get $15 + local.get $16 + i32.gt_s + select + local.set $end|5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $buf + local.get $out + local.get $buf + i32.store + local.get $out + local.get $buf + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $array + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store offset=4 + local.get $19 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $begin|4 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $out + local.get $end|5 + local.get $begin|4 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $out + br $"~lib/typedarray/SUBARRAY<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $arrayWithOffset i32) + (local $i i32) + (local $i|5 i32) + (local $reversedSlice i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayReverseValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Float32Array#constructor + local.tee $array + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Float32Array#constructor + local.tee $arrayWithOffset + i32.store offset=12 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Float32Array#reverse + drop + i32.const 0 + local.set $i|5 + loop $for-loop|1 + local.get $i|5 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|5 + call $~lib/typedarray/Float32Array#__get + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $length + i32.const 1 + i32.sub + local.get $i|5 + i32.sub + call $~lib/array/Array#__get + f32.convert_i32_s + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|5 + i32.const 1 + i32.add + local.set $i|5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Float32Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Float32Array#reverse + local.tee $reversedSlice + i32.store offset=20 + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 8 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 7 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 6 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#reverse (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Float64Array#get:length + call $~lib/util/bytes/REVERSE + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $arrayWithOffset i32) + (local $i i32) + (local $i|5 i32) + (local $reversedSlice i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayReverseValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Float64Array#constructor + local.tee $array + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Float64Array#constructor + local.tee $arrayWithOffset + i32.store offset=12 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $i + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Float64Array#reverse + drop + i32.const 0 + local.set $i|5 + loop $for-loop|1 + local.get $i|5 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|5 + call $~lib/typedarray/Float64Array#__get + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $length + i32.const 1 + i32.sub + local.get $i|5 + i32.sub + call $~lib/array/Array#__get + f64.convert_i32_s + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|5 + i32.const 1 + i32.add + local.set $i|5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $arrayWithOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Float64Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Float64Array#reverse + local.tee $reversedSlice + i32.store offset=20 + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 8 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $reversedSlice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#indexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $8 i32) + (local $9 i32) + (local $dataStart i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/typedarray/Int8Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $index + local.get $len + i32.ge_s + end + if + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $index + end + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $searchElement|4 + i32.extend8_s + i32.eq + if + local.get $index + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.get $index + i32.const 1 + i32.add + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Int8Array#lastIndexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $dataStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Int8Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.set $index + else + local.get $index + local.get $len + i32.ge_s + if + local.get $len + i32.const 1 + i32.sub + local.set $index + end + end + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + i32.const 0 + i32.ge_s + if + local.get $dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $searchElement|4 + i32.extend8_s + i32.eq + if + local.get $index + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.get $index + i32.const 1 + i32.sub + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Int8Array#lastIndexOf@varargs (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $fromIndex + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $searchElement + local.get $fromIndex + call $~lib/typedarray/Int8Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $sliced i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $values + i32.store + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int8Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int8Array#subarray + local.tee $sliced + i32.store offset=16 + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int8Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#indexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $8 i32) + (local $9 i32) + (local $dataStart i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $index + local.get $len + i32.ge_s + end + if + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $index + end + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $searchElement|4 + i32.const 255 + i32.and + i32.eq + if + local.get $index + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.get $index + i32.const 1 + i32.add + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Uint8Array#lastIndexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $dataStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint8Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.set $index + else + local.get $index + local.get $len + i32.ge_s + if + local.get $len + i32.const 1 + i32.sub + local.set $index + end + end + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + i32.const 0 + i32.ge_s + if + local.get $dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $searchElement|4 + i32.const 255 + i32.and + i32.eq + if + local.get $index + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.get $index + i32.const 1 + i32.sub + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Uint8Array#lastIndexOf@varargs (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $fromIndex + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $searchElement + local.get $fromIndex + call $~lib/typedarray/Uint8Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $sliced i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $values + i32.store + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint8Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Uint8Array#subarray + local.tee $sliced + i32.store offset=16 + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#indexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $8 i32) + (local $9 i32) + (local $dataStart i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $index + local.get $len + i32.ge_s + end + if + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $index + end + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $searchElement|4 + i32.const 255 + i32.and + i32.eq + if + local.get $index + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.get $index + i32.const 1 + i32.add + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $dataStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.set $index + else + local.get $index + local.get $len + i32.ge_s + if + local.get $len + i32.const 1 + i32.sub + local.set $index + end + end + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + i32.const 0 + i32.ge_s + if + local.get $dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $searchElement|4 + i32.const 255 + i32.and + i32.eq + if + local.get $index + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.get $index + i32.const 1 + i32.sub + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $fromIndex + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $searchElement + local.get $fromIndex + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $sliced i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $values + i32.store + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.tee $sliced + i32.store offset=16 + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#indexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $8 i32) + (local $9 i32) + (local $dataStart i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $index + local.get $len + i32.ge_s + end + if + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $index + end + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $searchElement|4 + i32.extend16_s + i32.eq + if + local.get $index + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.get $index + i32.const 1 + i32.add + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Int16Array#lastIndexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $dataStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Int16Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.set $index + else + local.get $index + local.get $len + i32.ge_s + if + local.get $len + i32.const 1 + i32.sub + local.set $index + end + end + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + i32.const 0 + i32.ge_s + if + local.get $dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $searchElement|4 + i32.extend16_s + i32.eq + if + local.get $index + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.get $index + i32.const 1 + i32.sub + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Int16Array#lastIndexOf@varargs (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $fromIndex + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $searchElement + local.get $fromIndex + call $~lib/typedarray/Int16Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $sliced i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $values + i32.store + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int16Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int16Array#subarray + local.tee $sliced + i32.store offset=16 + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int16Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#indexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $8 i32) + (local $9 i32) + (local $dataStart i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/typedarray/Uint16Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $index + local.get $len + i32.ge_s + end + if + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $index + end + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $searchElement|4 + i32.const 65535 + i32.and + i32.eq + if + local.get $index + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.get $index + i32.const 1 + i32.add + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Uint16Array#lastIndexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $dataStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint16Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.set $index + else + local.get $index + local.get $len + i32.ge_s + if + local.get $len + i32.const 1 + i32.sub + local.set $index + end + end + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + i32.const 0 + i32.ge_s + if + local.get $dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $searchElement|4 + i32.const 65535 + i32.and + i32.eq + if + local.get $index + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.get $index + i32.const 1 + i32.sub + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Uint16Array#lastIndexOf@varargs (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $fromIndex + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $searchElement + local.get $fromIndex + call $~lib/typedarray/Uint16Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $sliced i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $values + i32.store + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint16Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Uint16Array#subarray + local.tee $sliced + i32.store offset=16 + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#indexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $8 i32) + (local $9 i32) + (local $dataStart i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/typedarray/Int32Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $index + local.get $len + i32.ge_s + end + if + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $index + end + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.get $searchElement|4 + i32.eq + if + local.get $index + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.get $index + i32.const 1 + i32.add + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Int32Array#lastIndexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $dataStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Int32Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.set $index + else + local.get $index + local.get $len + i32.ge_s + if + local.get $len + i32.const 1 + i32.sub + local.set $index + end + end + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + i32.const 0 + i32.ge_s + if + local.get $dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.get $searchElement|4 + i32.eq + if + local.get $index + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.get $index + i32.const 1 + i32.sub + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Int32Array#lastIndexOf@varargs (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $fromIndex + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $searchElement + local.get $fromIndex + call $~lib/typedarray/Int32Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $sliced i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $values + i32.store + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int32Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int32Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int32Array#subarray + local.tee $sliced + i32.store offset=16 + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int32Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#indexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $8 i32) + (local $9 i32) + (local $dataStart i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/typedarray/Uint32Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $index + local.get $len + i32.ge_s + end + if + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $index + end + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.get $searchElement|4 + i32.eq + if + local.get $index + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.get $index + i32.const 1 + i32.add + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Uint32Array#lastIndexOf (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $dataStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint32Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.set $index + else + local.get $index + local.get $len + i32.ge_s + if + local.get $len + i32.const 1 + i32.sub + local.set $index + end + end + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + i32.const 0 + i32.ge_s + if + local.get $dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.get $searchElement|4 + i32.eq + if + local.get $index + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.get $index + i32.const 1 + i32.sub + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Uint32Array#lastIndexOf@varargs (param $this i32) (param $searchElement i32) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $fromIndex + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $searchElement + local.get $fromIndex + call $~lib/typedarray/Uint32Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $sliced i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $values + i32.store + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint32Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Uint32Array#subarray + local.tee $sliced + i32.store offset=16 + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#indexOf (param $this i32) (param $searchElement i64) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i64) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $8 i32) + (local $9 i32) + (local $dataStart i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $index + local.get $len + i32.ge_s + end + if + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $index + end + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.get $searchElement|4 + i64.eq + if + local.get $index + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.get $index + i32.const 1 + i32.add + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Int64Array#lastIndexOf (param $this i32) (param $searchElement i64) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i64) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $dataStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Int64Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.set $index + else + local.get $index + local.get $len + i32.ge_s + if + local.get $len + i32.const 1 + i32.sub + local.set $index + end + end + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + i32.const 0 + i32.ge_s + if + local.get $dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.get $searchElement|4 + i64.eq + if + local.get $index + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.get $index + i32.const 1 + i32.sub + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Int64Array#lastIndexOf@varargs (param $this i32) (param $searchElement i64) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $fromIndex + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $searchElement + local.get $fromIndex + call $~lib/typedarray/Int64Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $sliced i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $values + i32.store + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int64Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 0 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const -1 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 1 + i32.const 10 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 1 + i32.const -100 + call $~lib/typedarray/Int64Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 1 + i32.const 100 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 1 + i32.const -10 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 1 + i32.const -11 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int64Array#subarray + local.tee $sliced + i32.store offset=16 + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 4 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 5 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 9 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 10 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 5 + i32.const 1 + call $~lib/typedarray/Int64Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 5 + i32.const 2 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#indexOf (param $this i32) (param $searchElement i64) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i64) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $8 i32) + (local $9 i32) + (local $dataStart i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/typedarray/Uint64Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $index + local.get $len + i32.ge_s + end + if + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $index + end + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.get $searchElement|4 + i64.eq + if + local.get $index + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.get $index + i32.const 1 + i32.add + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Uint64Array#lastIndexOf (param $this i32) (param $searchElement i64) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 i64) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $dataStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint64Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.set $index + else + local.get $index + local.get $len + i32.ge_s + if + local.get $len + i32.const 1 + i32.sub + local.set $index + end + end + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + i32.const 0 + i32.ge_s + if + local.get $dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.get $searchElement|4 + i64.eq + if + local.get $index + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.get $index + i32.const 1 + i32.sub + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Uint64Array#lastIndexOf@varargs (param $this i32) (param $searchElement i64) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $fromIndex + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $searchElement + local.get $fromIndex + call $~lib/typedarray/Uint64Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $sliced i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $values + i32.store + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint64Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 0 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const -1 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 1 + i32.const 10 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 1 + i32.const -100 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 1 + i32.const 100 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 1 + i32.const -10 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 1 + i32.const -11 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Uint64Array#subarray + local.tee $sliced + i32.store offset=16 + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 4 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 5 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 9 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 10 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 5 + i32.const 1 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i64.const 5 + i32.const 2 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#indexOf (param $this i32) (param $searchElement f32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 f32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $8 i32) + (local $9 i32) + (local $dataStart i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/typedarray/Float32Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $index + local.get $len + i32.ge_s + end + if + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $index + end + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.get $searchElement|4 + f32.eq + if + local.get $index + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.get $index + i32.const 1 + i32.add + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Float32Array#lastIndexOf (param $this i32) (param $searchElement f32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 f32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $dataStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Float32Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.set $index + else + local.get $index + local.get $len + i32.ge_s + if + local.get $len + i32.const 1 + i32.sub + local.set $index + end + end + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + i32.const 0 + i32.ge_s + if + local.get $dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.get $searchElement|4 + f32.eq + if + local.get $index + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.get $index + i32.const 1 + i32.sub + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Float32Array#lastIndexOf@varargs (param $this i32) (param $searchElement f32) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $fromIndex + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $searchElement + local.get $fromIndex + call $~lib/typedarray/Float32Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $sliced i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $values + i32.store + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Float32Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 0 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 11 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const -1 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 3 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 3 + i32.const 2 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 3 + i32.const 3 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 3 + i32.const 4 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 1 + i32.const 10 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 1 + i32.const -100 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 3 + i32.const 4 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 3 + i32.const 3 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 3 + i32.const 2 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 1 + i32.const 100 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 1 + i32.const -10 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 1 + i32.const -11 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Float32Array#subarray + local.tee $sliced + i32.store offset=16 + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 3 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 4 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 5 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 9 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 10 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 11 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 5 + i32.const 1 + call $~lib/typedarray/Float32Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f32.const 5 + i32.const 2 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#indexOf (param $this i32) (param $searchElement f64) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 f64) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $8 i32) + (local $9 i32) + (local $dataStart i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/typedarray/Float64Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $index + local.get $len + i32.ge_s + end + if + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $index + end + local.get $array + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + f64.load + local.get $searchElement|4 + f64.eq + if + local.get $index + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.get $index + i32.const 1 + i32.add + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Float64Array#lastIndexOf (param $this i32) (param $searchElement f64) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 f64) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $dataStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Float64Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.set $index + else + local.get $index + local.get $len + i32.ge_s + if + local.get $len + i32.const 1 + i32.sub + local.set $index + end + end + local.get $array + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + i32.const 0 + i32.ge_s + if + local.get $dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + f64.load + local.get $searchElement|4 + f64.eq + if + local.get $index + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.get $index + i32.const 1 + i32.sub + local.set $index + br $while-continue|0 + end + end + i32.const -1 + br $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Float64Array#lastIndexOf@varargs (param $this i32) (param $searchElement f64) (param $fromIndex i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $fromIndex + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $searchElement + local.get $fromIndex + call $~lib/typedarray/Float64Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $sliced i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $values + i32.store + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Float64Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + local.get $values + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 0 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 11 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const -1 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 3 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 3 + i32.const 2 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 3 + i32.const 3 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 3 + i32.const 4 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 1 + i32.const 10 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 1 + i32.const -100 + call $~lib/typedarray/Float64Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 3 + i32.const 4 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 3 + i32.const 3 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 3 + i32.const 2 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 1 + i32.const 100 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 1 + i32.const -10 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 1 + i32.const -11 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Float64Array#subarray + local.tee $sliced + i32.store offset=16 + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 3 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 4 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 5 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 9 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 10 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 11 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 5 + i32.const 1 + call $~lib/typedarray/Float64Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $sliced + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + f64.const 5 + i32.const 2 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#includes (param $this i32) (param $searchElement f64) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 f64) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $8 i32) + (local $9 i32) + (local $dataStart i32) + (local $elem f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + i32.const 1 + drop + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Float64Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $index + local.get $len + i32.ge_s + end + if + i32.const 0 + br $"~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $index + end + local.get $array + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + f64.load + local.set $elem + local.get $elem + local.get $searchElement|4 + f64.eq + if (result i32) + i32.const 1 + else + local.get $elem + local.get $elem + f64.ne + local.get $searchElement|4 + local.get $searchElement|4 + f64.ne + i32.and + end + if + i32.const 1 + br $"~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.get $index + i32.const 1 + i32.add + local.set $index + br $while-continue|0 + end + end + i32.const 0 + br $"~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/typedarray/Float32Array#includes (param $this i32) (param $searchElement f32) (param $fromIndex i32) (result i32) + (local $array i32) + (local $searchElement|4 f32) + (local $fromIndex|5 i32) + (local $index i32) + (local $len i32) + (local $8 i32) + (local $9 i32) + (local $dataStart i32) + (local $elem f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $array + i32.store + local.get $searchElement + local.set $searchElement|4 + local.get $fromIndex + local.set $fromIndex|5 + i32.const 1 + drop + local.get $fromIndex|5 + local.set $index + local.get $array + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Float32Array#get:length + local.set $len + local.get $len + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $index + local.get $len + i32.ge_s + end + if + i32.const 0 + br $"~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.get $index + i32.const 0 + i32.lt_s + if + local.get $len + local.get $index + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $index + end + local.get $array + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $dataStart + loop $while-continue|0 + local.get $index + local.get $len + i32.lt_s + if + local.get $dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.set $elem + local.get $elem + local.get $searchElement|4 + f32.eq + if (result i32) + i32.const 1 + else + local.get $elem + local.get $elem + f32.ne + local.get $searchElement|4 + local.get $searchElement|4 + f32.ne + i32.and + end + if + i32.const 1 + br $"~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.get $index + i32.const 1 + i32.add + local.set $index + br $while-continue|0 + end + end + i32.const 0 + br $"~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/string/String#substring (param $this i32) (param $start i32) (param $end i32) (result i32) + (local $len i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $finalStart i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $finalEnd i32) + (local $14 i32) + (local $15 i32) + (local $fromPos i32) + (local $17 i32) + (local $18 i32) + (local $toPos i32) + (local $size i32) + (local $out i32) + (local $22 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $22 + global.get $~lib/memory/__stack_pointer + local.get $22 + i32.store + local.get $22 + call $~lib/string/String#get:length + local.set $len + local.get $start + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.tee $6 + local.get $len + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $finalStart + local.get $end + local.tee $9 + i32.const 0 + local.tee $10 + local.get $9 + local.get $10 + i32.gt_s + select + local.tee $11 + local.get $len + local.tee $12 + local.get $11 + local.get $12 + i32.lt_s + select + local.set $finalEnd + local.get $finalStart + local.tee $14 + local.get $finalEnd + local.tee $15 + local.get $14 + local.get $15 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $fromPos + local.get $finalStart + local.tee $17 + local.get $finalEnd + local.tee $18 + local.get $17 + local.get $18 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $toPos + local.get $toPos + local.get $fromPos + i32.sub + local.set $size + local.get $size + i32.eqz + if + i32.const 6752 + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + end + local.get $fromPos + i32.eqz + if (result i32) + local.get $toPos + local.get $len + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 + end + if + local.get $this + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + end + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $fromPos + i32.add + local.get $size + memory.copy + local.get $out + local.set $22 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $22 + return + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 6752 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i32.load8_s + local.set $value + i32.const 1 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/itoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 11 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 11 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Int8Array#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int8Array#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/typedarray/Int8Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 8560 + call $~lib/typedarray/Int8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + i32.const 0 + drop + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 8560 + call $~lib/typedarray/Int8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 675 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 676 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 6752 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i32.load8_u + local.set $value + i32.const 0 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/utoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 10 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 10 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Uint8Array#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint8Array#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Uint8Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 8560 + call $~lib/typedarray/Uint8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Uint8Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + i32.const 0 + drop + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 8560 + call $~lib/typedarray/Uint8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 675 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint8Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 676 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Uint8ClampedArray#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 8560 + call $~lib/typedarray/Uint8ClampedArray#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + i32.const 0 + drop + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 8560 + call $~lib/typedarray/Uint8ClampedArray#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 675 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 676 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 6752 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i32.load16_s + local.set $value + i32.const 1 + drop + i32.const 2 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/itoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 11 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 11 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Int16Array#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int16Array#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Int16Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 8560 + call $~lib/typedarray/Int16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int16Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + i32.const 0 + drop + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 8560 + call $~lib/typedarray/Int16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 675 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 676 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 6752 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i32.load16_u + local.set $value + i32.const 0 + drop + i32.const 2 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/utoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 10 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 10 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Uint16Array#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint16Array#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Uint16Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 8560 + call $~lib/typedarray/Uint16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Uint16Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + i32.const 0 + drop + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 8560 + call $~lib/typedarray/Uint16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 675 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint16Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 676 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 6752 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i32.load + local.set $value + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/itoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 11 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 11 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Int32Array#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int32Array#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Int32Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 8560 + call $~lib/typedarray/Int32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + i32.const 0 + drop + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 8560 + call $~lib/typedarray/Int32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 675 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int32Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 676 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i32) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 6752 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i32.load + local.set $value + i32.const 0 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/utoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 10 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 10 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Uint32Array#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint32Array#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Uint32Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 8560 + call $~lib/typedarray/Uint32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Uint32Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + i32.const 0 + drop + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 8560 + call $~lib/typedarray/Uint32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 675 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint32Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 676 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i64) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i64) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 6752 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i64.load + local.set $value + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $value + i32.wrap_i64 + i64.extend_i32_s + i32.const 10 + call $~lib/util/number/itoa64 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 21 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 21 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Int64Array#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int64Array#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Int64Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 8560 + call $~lib/typedarray/Int64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int64Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + i32.const 0 + drop + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 8560 + call $~lib/typedarray/Int64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 675 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 676 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $value i64) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value|9 i64) + (local $i i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 6752 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + i64.load + local.set $value + i32.const 0 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + local.get $value + i32.const 10 + call $~lib/util/number/utoa64 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $separator + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 20 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 20 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value|9 + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value|9 + call $~lib/util/number/itoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $result + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/typedarray/Uint64Array#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint64Array#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Uint64Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 8560 + call $~lib/typedarray/Uint64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Uint64Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + i32.const 0 + drop + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 8560 + call $~lib/typedarray/Uint64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 675 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint64Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 8592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 676 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinFloatArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value f32) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 6752 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + f32.load + call $~lib/util/number/dtoa + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $separator + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 28 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 28 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + call $~lib/util/number/dtoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + call $~lib/util/number/dtoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $result + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/typedarray/Float32Array#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Float32Array#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinFloatArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Float32Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 8560 + call $~lib/typedarray/Float32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Float32Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + i32.const 1 + drop + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 8560 + call $~lib/typedarray/Float32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 672 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Float32Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 673 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinFloatArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $sepLen i32) + (local $estLen i32) + (local $result i32) + (local $offset i32) + (local $value f64) + (local $i i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 6752 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $lastIndex + i32.eqz + if + local.get $dataStart + f64.load + call $~lib/util/number/dtoa + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $separator + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $sepLen + i32.const 28 + local.get $sepLen + i32.add + local.get $lastIndex + i32.mul + i32.const 28 + i32.add + local.set $estLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $offset + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $lastIndex + i32.lt_s + if + local.get $dataStart + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + call $~lib/util/number/dtoa_buffered + i32.add + local.set $offset + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $dataStart + local.get $lastIndex + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + local.get $offset + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + call $~lib/util/number/dtoa_buffered + i32.add + local.set $offset + local.get $estLen + local.get $offset + i32.gt_s + if + local.get $result + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + local.get $offset + call $~lib/string/String#substring + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $result + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/typedarray/Float64Array#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Float64Array#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinFloatArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Float64Array#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 8560 + call $~lib/typedarray/Float64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64>" + (local $array i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Float64Array#constructor + local.tee $array + i32.store + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + i32.const 1 + drop + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 8560 + call $~lib/typedarray/Float64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 672 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Float64Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 673 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array.wrap (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $buffer|3 i32) + (local $byteOffset|4 i32) + (local $len i32) + (local $byteLength i32) + (local $bufferByteLength i32) + (local $out i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/WRAP<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.tee $buffer|3 + i32.store + local.get $byteOffset + local.set $byteOffset|4 + local.get $length + local.set $len + local.get $buffer|3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bufferByteLength + local.get $byteOffset|4 + local.get $bufferByteLength + i32.gt_u + local.get $byteOffset|4 + i32.const 0 + i32.and + i32.or + if + i32.const 336 + i32.const 608 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $len + i32.const 0 + i32.lt_s + if + local.get $len + i32.const -1 + i32.eq + if + local.get $bufferByteLength + i32.const 0 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $bufferByteLength + local.get $byteOffset|4 + i32.sub + local.set $byteLength + else + i32.const 32 + i32.const 608 + i32.const 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + else + local.get $len + i32.const 0 + i32.shl + local.set $byteLength + local.get $byteOffset|4 + local.get $byteLength + i32.add + local.get $bufferByteLength + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $out + local.get $buffer|3 + i32.store + local.get $out + local.get $buffer|3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $buffer|3 + local.get $byteOffset|4 + i32.add + i32.store offset=4 + local.get $out + br $"~lib/typedarray/WRAP<~lib/typedarray/Uint8Array,u8>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Uint8Array.wrap@varargs (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $byteOffset + end + i32.const -1 + local.set $length + end + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $byteOffset + local.get $length + call $~lib/typedarray/Uint8Array.wrap + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/arraybuffer/ArrayBuffer#slice (param $this i32) (param $begin i32) (param $end i32) (result i32) + (local $length 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 $outSize i32) + (local $out i32) + (local $16 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $length + local.get $begin + i32.const 0 + i32.lt_s + if (result i32) + local.get $length + local.get $begin + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $begin + local.tee $6 + local.get $length + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $begin + local.get $end + i32.const 0 + i32.lt_s + if (result i32) + local.get $length + local.get $end + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + else + local.get $end + local.tee $10 + local.get $length + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $end + local.get $end + local.get $begin + i32.sub + local.tee $12 + i32.const 0 + local.tee $13 + local.get $12 + local.get $13 + i32.gt_s + select + local.set $outSize + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $begin + i32.add + local.get $outSize + memory.copy + local.get $out + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 + return + ) + (func $~lib/typedarray/Int8Array.wrap (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $buffer|3 i32) + (local $byteOffset|4 i32) + (local $len i32) + (local $byteLength i32) + (local $bufferByteLength i32) + (local $out i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/WRAP<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.tee $buffer|3 + i32.store + local.get $byteOffset + local.set $byteOffset|4 + local.get $length + local.set $len + local.get $buffer|3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bufferByteLength + local.get $byteOffset|4 + local.get $bufferByteLength + i32.gt_u + local.get $byteOffset|4 + i32.const 0 + i32.and + i32.or + if + i32.const 336 + i32.const 608 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $len + i32.const 0 + i32.lt_s + if + local.get $len + i32.const -1 + i32.eq + if + local.get $bufferByteLength + i32.const 0 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $bufferByteLength + local.get $byteOffset|4 + i32.sub + local.set $byteLength + else + i32.const 32 + i32.const 608 + i32.const 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + else + local.get $len + i32.const 0 + i32.shl + local.set $byteLength + local.get $byteOffset|4 + local.get $byteLength + i32.add + local.get $bufferByteLength + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $out + local.get $buffer|3 + i32.store + local.get $out + local.get $buffer|3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $buffer|3 + local.get $byteOffset|4 + i32.add + i32.store offset=4 + local.get $out + br $"~lib/typedarray/WRAP<~lib/typedarray/Int8Array,i8>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Int8Array.wrap@varargs (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $byteOffset + end + i32.const -1 + local.set $length + end + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $byteOffset + local.get $length + call $~lib/typedarray/Int8Array.wrap + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $buffer i32) + (local $result i32) + (local $i|6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayWrapValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int8Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $buffer + i32.store offset=16 + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array.wrap@varargs + local.tee $result + i32.store offset=20 + i32.const 0 + local.set $i|6 + loop $for-loop|1 + local.get $i|6 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Int8Array#__get + local.get $result + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Int8Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $buffer i32) + (local $result i32) + (local $i|6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayWrapValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint8Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $buffer + i32.store offset=16 + i32.const 0 + drop + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $result + i32.store offset=20 + i32.const 0 + local.set $i|6 + loop $for-loop|1 + local.get $i|6 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Uint8Array#__get + local.get $result + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Uint8Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray.wrap (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $buffer|3 i32) + (local $byteOffset|4 i32) + (local $len i32) + (local $byteLength i32) + (local $bufferByteLength i32) + (local $out i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/WRAP<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.tee $buffer|3 + i32.store + local.get $byteOffset + local.set $byteOffset|4 + local.get $length + local.set $len + local.get $buffer|3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bufferByteLength + local.get $byteOffset|4 + local.get $bufferByteLength + i32.gt_u + local.get $byteOffset|4 + i32.const 0 + i32.and + i32.or + if + i32.const 336 + i32.const 608 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $len + i32.const 0 + i32.lt_s + if + local.get $len + i32.const -1 + i32.eq + if + local.get $bufferByteLength + i32.const 0 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $bufferByteLength + local.get $byteOffset|4 + i32.sub + local.set $byteLength + else + i32.const 32 + i32.const 608 + i32.const 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + else + local.get $len + i32.const 0 + i32.shl + local.set $byteLength + local.get $byteOffset|4 + local.get $byteLength + i32.add + local.get $bufferByteLength + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $out + local.get $buffer|3 + i32.store + local.get $out + local.get $buffer|3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $buffer|3 + local.get $byteOffset|4 + i32.add + i32.store offset=4 + local.get $out + br $"~lib/typedarray/WRAP<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Uint8ClampedArray.wrap@varargs (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $byteOffset + end + i32.const -1 + local.set $length + end + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $byteOffset + local.get $length + call $~lib/typedarray/Uint8ClampedArray.wrap + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $buffer i32) + (local $result i32) + (local $i|6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayWrapValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $buffer + i32.store offset=16 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray.wrap@varargs + local.tee $result + i32.store offset=20 + i32.const 0 + local.set $i|6 + loop $for-loop|1 + local.get $i|6 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Uint8ClampedArray#__get + local.get $result + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array.wrap (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $buffer|3 i32) + (local $byteOffset|4 i32) + (local $len i32) + (local $byteLength i32) + (local $bufferByteLength i32) + (local $out i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/WRAP<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.tee $buffer|3 + i32.store + local.get $byteOffset + local.set $byteOffset|4 + local.get $length + local.set $len + local.get $buffer|3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bufferByteLength + local.get $byteOffset|4 + local.get $bufferByteLength + i32.gt_u + local.get $byteOffset|4 + i32.const 1 + i32.and + i32.or + if + i32.const 336 + i32.const 608 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $len + i32.const 0 + i32.lt_s + if + local.get $len + i32.const -1 + i32.eq + if + local.get $bufferByteLength + i32.const 1 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $bufferByteLength + local.get $byteOffset|4 + i32.sub + local.set $byteLength + else + i32.const 32 + i32.const 608 + i32.const 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + else + local.get $len + i32.const 1 + i32.shl + local.set $byteLength + local.get $byteOffset|4 + local.get $byteLength + i32.add + local.get $bufferByteLength + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $out + local.get $buffer|3 + i32.store + local.get $out + local.get $buffer|3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $buffer|3 + local.get $byteOffset|4 + i32.add + i32.store offset=4 + local.get $out + br $"~lib/typedarray/WRAP<~lib/typedarray/Int16Array,i16>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Int16Array.wrap@varargs (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $byteOffset + end + i32.const -1 + local.set $length + end + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $byteOffset + local.get $length + call $~lib/typedarray/Int16Array.wrap + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $buffer i32) + (local $result i32) + (local $i|6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayWrapValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int16Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $buffer + i32.store offset=16 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int16Array.wrap@varargs + local.tee $result + i32.store offset=20 + i32.const 0 + local.set $i|6 + loop $for-loop|1 + local.get $i|6 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Int16Array#__get + local.get $result + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Int16Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array.wrap (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $buffer|3 i32) + (local $byteOffset|4 i32) + (local $len i32) + (local $byteLength i32) + (local $bufferByteLength i32) + (local $out i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/WRAP<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.tee $buffer|3 + i32.store + local.get $byteOffset + local.set $byteOffset|4 + local.get $length + local.set $len + local.get $buffer|3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bufferByteLength + local.get $byteOffset|4 + local.get $bufferByteLength + i32.gt_u + local.get $byteOffset|4 + i32.const 1 + i32.and + i32.or + if + i32.const 336 + i32.const 608 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $len + i32.const 0 + i32.lt_s + if + local.get $len + i32.const -1 + i32.eq + if + local.get $bufferByteLength + i32.const 1 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $bufferByteLength + local.get $byteOffset|4 + i32.sub + local.set $byteLength + else + i32.const 32 + i32.const 608 + i32.const 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + else + local.get $len + i32.const 1 + i32.shl + local.set $byteLength + local.get $byteOffset|4 + local.get $byteLength + i32.add + local.get $bufferByteLength + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $out + local.get $buffer|3 + i32.store + local.get $out + local.get $buffer|3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $buffer|3 + local.get $byteOffset|4 + i32.add + i32.store offset=4 + local.get $out + br $"~lib/typedarray/WRAP<~lib/typedarray/Uint16Array,u16>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Uint16Array.wrap@varargs (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $byteOffset + end + i32.const -1 + local.set $length + end + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $byteOffset + local.get $length + call $~lib/typedarray/Uint16Array.wrap + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $buffer i32) + (local $result i32) + (local $i|6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayWrapValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint16Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $buffer + i32.store offset=16 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint16Array.wrap@varargs + local.tee $result + i32.store offset=20 + i32.const 0 + local.set $i|6 + loop $for-loop|1 + local.get $i|6 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Uint16Array#__get + local.get $result + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Uint16Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array.wrap (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $buffer|3 i32) + (local $byteOffset|4 i32) + (local $len i32) + (local $byteLength i32) + (local $bufferByteLength i32) + (local $out i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/WRAP<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.tee $buffer|3 + i32.store + local.get $byteOffset + local.set $byteOffset|4 + local.get $length + local.set $len + local.get $buffer|3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bufferByteLength + local.get $byteOffset|4 + local.get $bufferByteLength + i32.gt_u + local.get $byteOffset|4 + i32.const 3 + i32.and + i32.or + if + i32.const 336 + i32.const 608 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $len + i32.const 0 + i32.lt_s + if + local.get $len + i32.const -1 + i32.eq + if + local.get $bufferByteLength + i32.const 3 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $bufferByteLength + local.get $byteOffset|4 + i32.sub + local.set $byteLength + else + i32.const 32 + i32.const 608 + i32.const 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + else + local.get $len + i32.const 2 + i32.shl + local.set $byteLength + local.get $byteOffset|4 + local.get $byteLength + i32.add + local.get $bufferByteLength + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $out + local.get $buffer|3 + i32.store + local.get $out + local.get $buffer|3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $buffer|3 + local.get $byteOffset|4 + i32.add + i32.store offset=4 + local.get $out + br $"~lib/typedarray/WRAP<~lib/typedarray/Int32Array,i32>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Int32Array.wrap@varargs (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $byteOffset + end + i32.const -1 + local.set $length + end + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $byteOffset + local.get $length + call $~lib/typedarray/Int32Array.wrap + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $buffer i32) + (local $result i32) + (local $i|6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayWrapValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int32Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $i + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $buffer + i32.store offset=16 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array.wrap@varargs + local.tee $result + i32.store offset=20 + i32.const 0 + local.set $i|6 + loop $for-loop|1 + local.get $i|6 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Int32Array#__get + local.get $result + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Int32Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array.wrap (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $buffer|3 i32) + (local $byteOffset|4 i32) + (local $len i32) + (local $byteLength i32) + (local $bufferByteLength i32) + (local $out i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/WRAP<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.tee $buffer|3 + i32.store + local.get $byteOffset + local.set $byteOffset|4 + local.get $length + local.set $len + local.get $buffer|3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bufferByteLength + local.get $byteOffset|4 + local.get $bufferByteLength + i32.gt_u + local.get $byteOffset|4 + i32.const 3 + i32.and + i32.or + if + i32.const 336 + i32.const 608 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $len + i32.const 0 + i32.lt_s + if + local.get $len + i32.const -1 + i32.eq + if + local.get $bufferByteLength + i32.const 3 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $bufferByteLength + local.get $byteOffset|4 + i32.sub + local.set $byteLength + else + i32.const 32 + i32.const 608 + i32.const 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + else + local.get $len + i32.const 2 + i32.shl + local.set $byteLength + local.get $byteOffset|4 + local.get $byteLength + i32.add + local.get $bufferByteLength + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $out + local.get $buffer|3 + i32.store + local.get $out + local.get $buffer|3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $buffer|3 + local.get $byteOffset|4 + i32.add + i32.store offset=4 + local.get $out + br $"~lib/typedarray/WRAP<~lib/typedarray/Uint32Array,u32>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Uint32Array.wrap@varargs (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $byteOffset + end + i32.const -1 + local.set $length + end + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $byteOffset + local.get $length + call $~lib/typedarray/Uint32Array.wrap + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $buffer i32) + (local $result i32) + (local $i|6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayWrapValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint32Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $i + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $buffer + i32.store offset=16 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint32Array.wrap@varargs + local.tee $result + i32.store offset=20 + i32.const 0 + local.set $i|6 + loop $for-loop|1 + local.get $i|6 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Uint32Array#__get + local.get $result + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Uint32Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array.wrap (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $buffer|3 i32) + (local $byteOffset|4 i32) + (local $len i32) + (local $byteLength i32) + (local $bufferByteLength i32) + (local $out i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/WRAP<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.tee $buffer|3 + i32.store + local.get $byteOffset + local.set $byteOffset|4 + local.get $length + local.set $len + local.get $buffer|3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bufferByteLength + local.get $byteOffset|4 + local.get $bufferByteLength + i32.gt_u + local.get $byteOffset|4 + i32.const 7 + i32.and + i32.or + if + i32.const 336 + i32.const 608 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $len + i32.const 0 + i32.lt_s + if + local.get $len + i32.const -1 + i32.eq + if + local.get $bufferByteLength + i32.const 7 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $bufferByteLength + local.get $byteOffset|4 + i32.sub + local.set $byteLength + else + i32.const 32 + i32.const 608 + i32.const 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + else + local.get $len + i32.const 3 + i32.shl + local.set $byteLength + local.get $byteOffset|4 + local.get $byteLength + i32.add + local.get $bufferByteLength + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $out + local.get $buffer|3 + i32.store + local.get $out + local.get $buffer|3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $buffer|3 + local.get $byteOffset|4 + i32.add + i32.store offset=4 + local.get $out + br $"~lib/typedarray/WRAP<~lib/typedarray/Int64Array,i64>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Int64Array.wrap@varargs (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $byteOffset + end + i32.const -1 + local.set $length + end + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $byteOffset + local.get $length + call $~lib/typedarray/Int64Array.wrap + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $buffer i32) + (local $result i32) + (local $i|6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayWrapValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Int64Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $buffer + i32.store offset=16 + i32.const 0 + 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 + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int64Array.wrap@varargs + local.tee $result + i32.store offset=20 + i32.const 0 + local.set $i|6 + loop $for-loop|1 + local.get $i|6 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Int64Array#__get + local.get $result + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Int64Array#__get + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array.wrap (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $buffer|3 i32) + (local $byteOffset|4 i32) + (local $len i32) + (local $byteLength i32) + (local $bufferByteLength i32) + (local $out i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/WRAP<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.tee $buffer|3 + i32.store + local.get $byteOffset + local.set $byteOffset|4 + local.get $length + local.set $len + local.get $buffer|3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bufferByteLength + local.get $byteOffset|4 + local.get $bufferByteLength + i32.gt_u + local.get $byteOffset|4 + i32.const 7 + i32.and + i32.or + if + i32.const 336 + i32.const 608 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $len + i32.const 0 + i32.lt_s + if + local.get $len + i32.const -1 + i32.eq + if + local.get $bufferByteLength + i32.const 7 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $bufferByteLength + local.get $byteOffset|4 + i32.sub + local.set $byteLength + else + i32.const 32 + i32.const 608 + i32.const 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + else + local.get $len + i32.const 3 + i32.shl + local.set $byteLength + local.get $byteOffset|4 + local.get $byteLength + i32.add + local.get $bufferByteLength + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $out + local.get $buffer|3 + i32.store + local.get $out + local.get $buffer|3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $buffer|3 + local.get $byteOffset|4 + i32.add + i32.store offset=4 + local.get $out + br $"~lib/typedarray/WRAP<~lib/typedarray/Uint64Array,u64>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Uint64Array.wrap@varargs (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $byteOffset + end + i32.const -1 + local.set $length + end + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $byteOffset + local.get $length + call $~lib/typedarray/Uint64Array.wrap + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $buffer i32) + (local $result i32) + (local $i|6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayWrapValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Uint64Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $i + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $buffer + i32.store offset=16 + i32.const 0 + 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 + i32.const 0 + drop + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint64Array.wrap@varargs + local.tee $result + i32.store offset=20 + i32.const 0 + local.set $i|6 + loop $for-loop|1 + local.get $i|6 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Uint64Array#__get + local.get $result + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Uint64Array#__get + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array.wrap (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $buffer|3 i32) + (local $byteOffset|4 i32) + (local $len i32) + (local $byteLength i32) + (local $bufferByteLength i32) + (local $out i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/WRAP<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.tee $buffer|3 + i32.store + local.get $byteOffset + local.set $byteOffset|4 + local.get $length + local.set $len + local.get $buffer|3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bufferByteLength + local.get $byteOffset|4 + local.get $bufferByteLength + i32.gt_u + local.get $byteOffset|4 + i32.const 3 + i32.and + i32.or + if + i32.const 336 + i32.const 608 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $len + i32.const 0 + i32.lt_s + if + local.get $len + i32.const -1 + i32.eq + if + local.get $bufferByteLength + i32.const 3 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $bufferByteLength + local.get $byteOffset|4 + i32.sub + local.set $byteLength + else + i32.const 32 + i32.const 608 + i32.const 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + else + local.get $len + i32.const 2 + i32.shl + local.set $byteLength + local.get $byteOffset|4 + local.get $byteLength + i32.add + local.get $bufferByteLength + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $out + local.get $buffer|3 + i32.store + local.get $out + local.get $buffer|3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $buffer|3 + local.get $byteOffset|4 + i32.add + i32.store offset=4 + local.get $out + br $"~lib/typedarray/WRAP<~lib/typedarray/Float32Array,f32>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Float32Array.wrap@varargs (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $byteOffset + end + i32.const -1 + local.set $length + end + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $byteOffset + local.get $length + call $~lib/typedarray/Float32Array.wrap + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $buffer i32) + (local $result i32) + (local $i|6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayWrapValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Float32Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $i + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $buffer + i32.store offset=16 + i32.const 0 + 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 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float32Array.wrap@varargs + local.tee $result + i32.store offset=20 + i32.const 0 + local.set $i|6 + loop $for-loop|1 + local.get $i|6 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Float32Array#__get + local.get $result + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Float32Array#__get + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array.wrap (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $buffer|3 i32) + (local $byteOffset|4 i32) + (local $len i32) + (local $byteLength i32) + (local $bufferByteLength i32) + (local $out i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/WRAP<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.tee $buffer|3 + i32.store + local.get $byteOffset + local.set $byteOffset|4 + local.get $length + local.set $len + local.get $buffer|3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $bufferByteLength + local.get $byteOffset|4 + local.get $bufferByteLength + i32.gt_u + local.get $byteOffset|4 + i32.const 7 + i32.and + i32.or + if + i32.const 336 + i32.const 608 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $len + i32.const 0 + i32.lt_s + if + local.get $len + i32.const -1 + i32.eq + if + local.get $bufferByteLength + i32.const 7 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $bufferByteLength + local.get $byteOffset|4 + i32.sub + local.set $byteLength + else + i32.const 32 + i32.const 608 + i32.const 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + else + local.get $len + i32.const 3 + i32.shl + local.set $byteLength + local.get $byteOffset|4 + local.get $byteLength + i32.add + local.get $bufferByteLength + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=8 + local.get $out + local.get $buffer|3 + i32.store + local.get $out + local.get $buffer|3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $out + local.get $byteLength + i32.store offset=8 + local.get $out + local.get $buffer|3 + local.get $byteOffset|4 + i32.add + i32.store offset=4 + local.get $out + br $"~lib/typedarray/WRAP<~lib/typedarray/Float64Array,f64>|inlined.0" + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/typedarray/Float64Array.wrap@varargs (param $buffer i32) (param $byteOffset i32) (param $length i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $byteOffset + end + i32.const -1 + local.set $length + end + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $byteOffset + local.get $length + call $~lib/typedarray/Float64Array.wrap + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64>" + (local $values i32) + (local $length i32) + (local $array i32) + (local $i i32) + (local $buffer i32) + (local $result i32) + (local $i|6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayWrapValues + local.tee $values + i32.store + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $length + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $length + call $~lib/typedarray/Float64Array#constructor + local.tee $array + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i + local.get $values + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $i + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $buffer + i32.store offset=16 + i32.const 0 + 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 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + local.get $buffer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float64Array.wrap@varargs + local.tee $result + i32.store offset=20 + i32.const 0 + local.set $i|6 + loop $for-loop|1 + local.get $i|6 + local.get $length + i32.lt_s + if + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Float64Array#__get + local.get $result + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $i|6 + call $~lib/typedarray/Float64Array#__get + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $i|6 + i32.const 1 + i32.add + local.set $i|6 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 2 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#__uget (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + i32.load8_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#__uget (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $target i32) (param $compare i32) + (local $len i32) + (local $i i32) + (local $vala i32) + (local $valb i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/typedarray/Int8Array#get:length + local.set $len + local.get $len + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/typedarray/Int8Array#__uget + local.set $vala + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__uget + local.set $valb + local.get $vala + local.get $valb + i32.ne + if + i32.const 10320 + i32.const 3 + local.get $i + f64.convert_i32_s + local.get $vala + f64.convert_i32_s + local.get $valb + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $value + i32.trunc_sat_f32_s + else + i32.const 0 + end + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 3 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.wrap_i64 + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $value + i32.trunc_sat_f64_s + else + i32.const 0 + end + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint8Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.eqz + drop + local.get $targetStart + local.get $sourceStart + local.get $sourceLen + i32.const 0 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 0 + i32.eqz + drop + local.get $targetStart + local.get $sourceStart + local.get $sourceLen + i32.const 0 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + (local $setSource4 i32) + (local $setSource5 i32) + (local $setSource6 i32) + (local $a i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $setSource4 + i32.store + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $setSource5 + i32.store offset=8 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $setSource6 + i32.store offset=12 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Int8Array#constructor + local.tee $a + i32.store offset=16 + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 10288 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 3 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 10368 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 6 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 10400 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + i32.const 1 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 2 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 10432 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 4 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 7 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 10464 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 2 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint8Array#__uget (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + i32.load8_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#__uget (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $target i32) (param $compare i32) + (local $len i32) + (local $i i32) + (local $vala i32) + (local $valb i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/typedarray/Uint8Array#get:length + local.set $len + local.get $len + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/typedarray/Uint8Array#__uget + local.set $vala + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__uget + local.set $valb + local.get $vala + local.get $valb + i32.ne + if + i32.const 10528 + i32.const 3 + local.get $i + f64.convert_i32_s + local.get $vala + f64.convert_i32_u + local.get $valb + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $value + i32.trunc_sat_f32_u + else + i32.const 0 + end + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int64Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 3 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.wrap_i64 + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $value + i32.trunc_sat_f64_u + else + i32.const 0 + end + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#set<~lib/typedarray/Uint8Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint8Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.eqz + drop + local.get $targetStart + local.get $sourceStart + local.get $sourceLen + i32.const 0 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int16Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint8Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 0 + i32.eqz + drop + local.get $targetStart + local.get $sourceStart + local.get $sourceLen + i32.const 0 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + (local $setSource4 i32) + (local $setSource5 i32) + (local $setSource6 i32) + (local $a i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $setSource4 + i32.store + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $setSource5 + i32.store offset=8 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $setSource6 + i32.store offset=12 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Uint8Array#constructor + local.tee $a + i32.store offset=16 + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Uint8Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 10496 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 3 + call $~lib/typedarray/Uint8Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 10576 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 6 + call $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 10608 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + i32.const 1 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 2 + call $~lib/typedarray/Uint8Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 10640 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Uint8Array#set<~lib/typedarray/Uint8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 4 + call $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 7 + call $~lib/typedarray/Uint8Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 10672 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 2 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $ptr + local.get $value + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.const 255 + local.get $value + i32.sub + i32.const 31 + i32.shr_s + local.get $value + i32.or + i32.and + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#__uget (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.add + i32.load8_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $target i32) (param $compare i32) + (local $len i32) + (local $i i32) + (local $vala i32) + (local $valb i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $len + local.get $len + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/typedarray/Uint8ClampedArray#__uget + local.set $vala + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__uget + local.set $valb + local.get $vala + local.get $valb + i32.ne + if + i32.const 10736 + i32.const 3 + local.get $i + f64.convert_i32_s + local.get $vala + f64.convert_i32_u + local.get $valb + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 1 + drop + i32.const 1 + drop + local.get $ptr + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + if (result i32) + f32.const 0 + f32.const 255 + local.get $value + f32.min + f32.max + i32.trunc_sat_f32_u + else + i32.const 0 + end + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 3 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $ptr + local.get $value + i32.wrap_i64 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i64.extend_i32_s + i32.const 255 + local.get $value + i32.wrap_i64 + i32.sub + i32.const 31 + i32.shr_s + i64.extend_i32_s + local.get $value + i64.or + i64.and + i64.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 1 + drop + i32.const 1 + drop + local.get $ptr + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + if (result i32) + f64.const 0 + f64.const 255 + local.get $value + f64.min + f64.max + i32.trunc_sat_f64_u + else + i32.const 0 + end + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint8Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint8Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.eqz + drop + local.get $targetStart + local.get $sourceStart + local.get $sourceLen + i32.const 0 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $ptr + local.get $value + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.const 255 + local.get $value + i32.sub + i32.const 31 + i32.shr_s + local.get $value + i32.or + i32.and + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.eqz + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $ptr + local.get $value + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.const 255 + local.get $value + i32.sub + i32.const 31 + i32.shr_s + local.get $value + i32.or + i32.and + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + (local $setSource4 i32) + (local $setSource5 i32) + (local $setSource6 i32) + (local $a i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $setSource4 + i32.store + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $setSource5 + i32.store offset=8 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $setSource6 + i32.store offset=12 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $a + i32.store offset=16 + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 10704 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 10800 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 10832 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + i32.const 1 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 10864 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 7 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> + i32.const 1 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 10896 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 2 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Int16Array#__uget (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#__uget (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (param $target i32) (param $compare i32) + (local $len i32) + (local $i i32) + (local $vala i32) + (local $valb i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/typedarray/Int16Array#get:length + local.set $len + local.get $len + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/typedarray/Int16Array#__uget + local.set $vala + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__uget + local.set $valb + local.get $vala + local.get $valb + i32.ne + if + i32.const 10976 + i32.const 3 + local.get $i + f64.convert_i32_s + local.get $vala + f64.convert_i32_s + local.get $valb + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $value + i32.trunc_sat_f32_s + else + i32.const 0 + end + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 3 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.wrap_i64 + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $value + i32.trunc_sat_f64_s + else + i32.const 0 + end + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int16Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.eqz + drop + local.get $targetStart + local.get $sourceStart + local.get $sourceLen + i32.const 1 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + (local $setSource4 i32) + (local $setSource5 i32) + (local $setSource6 i32) + (local $a i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $setSource4 + i32.store + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $setSource5 + i32.store offset=8 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $setSource6 + i32.store offset=12 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Int16Array#constructor + local.tee $a + i32.store offset=16 + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 10928 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 3 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 11024 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 6 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 11072 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + i32.const 1 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 2 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 11120 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 4 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 7 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 11168 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 2 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint16Array#__uget (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#__uget (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (param $target i32) (param $compare i32) + (local $len i32) + (local $i i32) + (local $vala i32) + (local $valb i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/typedarray/Uint16Array#get:length + local.set $len + local.get $len + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/typedarray/Uint16Array#__uget + local.set $vala + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__uget + local.set $valb + local.get $vala + local.get $valb + i32.ne + if + i32.const 11264 + i32.const 3 + local.get $i + f64.convert_i32_s + local.get $vala + f64.convert_i32_u + local.get $valb + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $value + i32.trunc_sat_f32_u + else + i32.const 0 + end + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int64Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 3 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.wrap_i64 + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $value + i32.trunc_sat_f64_u + else + i32.const 0 + end + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#set<~lib/typedarray/Uint8Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int16Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int16Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.eqz + drop + local.get $targetStart + local.get $sourceStart + local.get $sourceLen + i32.const 1 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 1 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + (local $setSource4 i32) + (local $setSource5 i32) + (local $setSource6 i32) + (local $a i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $setSource4 + i32.store + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $setSource5 + i32.store offset=8 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $setSource6 + i32.store offset=12 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Uint16Array#constructor + local.tee $a + i32.store offset=16 + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Uint16Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 11216 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 3 + call $~lib/typedarray/Uint16Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 11312 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 6 + call $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 11360 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + i32.const 1 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 2 + call $~lib/typedarray/Uint16Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 11408 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Uint16Array#set<~lib/typedarray/Uint8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 4 + call $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 7 + call $~lib/typedarray/Uint16Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 11456 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 0 + i32.eqz + drop + local.get $targetStart + local.get $sourceStart + local.get $sourceLen + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#__uget (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#__uget (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $target i32) (param $compare i32) + (local $len i32) + (local $i i32) + (local $vala i32) + (local $valb i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/typedarray/Int32Array#get:length + local.set $len + local.get $len + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/typedarray/Int32Array#__uget + local.set $vala + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__uget + local.set $valb + local.get $vala + local.get $valb + i32.ne + if + i32.const 11568 + i32.const 3 + local.get $i + f64.convert_i32_s + local.get $vala + f64.convert_i32_s + local.get $valb + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $value + i32.trunc_sat_f32_s + else + i32.const 0 + end + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 2 + i32.const 3 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.wrap_i64 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $value + i32.trunc_sat_f64_s + else + i32.const 0 + end + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 2 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 2 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + (local $setSource4 i32) + (local $setSource5 i32) + (local $setSource6 i32) + (local $a i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $setSource4 + i32.store + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $setSource5 + i32.store offset=8 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $setSource6 + i32.store offset=12 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Int32Array#constructor + local.tee $a + i32.store offset=16 + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 11504 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 3 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 11616 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 6 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 11680 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + i32.const 1 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 2 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 11744 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 4 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 7 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 11808 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 0 + i32.eqz + drop + local.get $targetStart + local.get $sourceStart + local.get $sourceLen + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint32Array#__uget (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/array/Array#__uget (param $this i32) (param $index i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (param $target i32) (param $compare i32) + (local $len i32) + (local $i i32) + (local $vala i32) + (local $valb i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/typedarray/Uint32Array#get:length + local.set $len + local.get $len + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/typedarray/Uint32Array#__uget + local.set $vala + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__uget + local.set $valb + local.get $vala + local.get $valb + i32.ne + if + i32.const 11936 + i32.const 3 + local.get $i + f64.convert_i32_s + local.get $vala + f64.convert_i32_u + local.get $valb + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $value + i32.trunc_sat_f32_u + else + i32.const 0 + end + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int64Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 2 + i32.const 3 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.wrap_i64 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $value + i32.trunc_sat_f64_u + else + i32.const 0 + end + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/typedarray/Uint8Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 2 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int16Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 2 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + (local $setSource4 i32) + (local $setSource5 i32) + (local $setSource6 i32) + (local $a i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $setSource4 + i32.store + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $setSource5 + i32.store offset=8 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $setSource6 + i32.store offset=12 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Uint32Array#constructor + local.tee $a + i32.store offset=16 + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Uint32Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 11872 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 3 + call $~lib/typedarray/Uint32Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 11984 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 6 + call $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 12048 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + i32.const 1 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 2 + call $~lib/typedarray/Uint32Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 12112 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Uint32Array#set<~lib/typedarray/Uint8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 4 + call $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 7 + call $~lib/typedarray/Uint32Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 12176 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 3 + i32.const 2 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i64.extend_i32_s + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Int64Array#__uget (param $this i32) (param $index i32) (result i64) + (local $2 i32) + (local $3 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#__uget (param $this i32) (param $index i32) (result i64) + (local $2 i32) + (local $3 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $target i32) (param $compare i32) + (local $len i32) + (local $i i32) + (local $vala i64) + (local $valb i64) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/typedarray/Int64Array#get:length + local.set $len + local.get $len + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/typedarray/Int64Array#__uget + local.set $vala + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__uget + local.set $valb + local.get $vala + local.get $valb + i64.ne + if + i32.const 12352 + i32.const 3 + local.get $i + f64.convert_i32_s + local.get $vala + f64.convert_i64_s + local.get $valb + f64.convert_i64_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + if (result i64) + local.get $value + i64.trunc_sat_f32_s + else + i64.const 0 + end + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int64Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.eqz + drop + local.get $targetStart + local.get $sourceStart + local.get $sourceLen + i32.const 3 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + if (result i64) + local.get $value + i64.trunc_sat_f64_s + else + i64.const 0 + end + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 3 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i64.extend_i32_u + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 3 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i64.extend_i32_s + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 3 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i64.extend_i32_s + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + (local $setSource4 i32) + (local $setSource5 i32) + (local $setSource6 i32) + (local $a i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $setSource4 + i32.store + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $setSource5 + i32.store offset=8 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $setSource6 + i32.store offset=12 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Int64Array#constructor + local.tee $a + i32.store offset=16 + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 12240 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 3 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 12400 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 6 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 12512 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + i32.const 1 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 2 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 12624 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 4 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 7 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 12736 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 3 + i32.const 2 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i64.extend_i32_s + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/typedarray/Uint64Array#__uget (param $this i32) (param $index i32) (result i64) + (local $2 i32) + (local $3 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#__uget (param $this i32) (param $index i32) (result i64) + (local $2 i32) + (local $3 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $target i32) (param $compare i32) + (local $len i32) + (local $i i32) + (local $vala i64) + (local $valb i64) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/typedarray/Uint64Array#get:length + local.set $len + local.get $len + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/typedarray/Uint64Array#__uget + local.set $vala + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__uget + local.set $valb + local.get $vala + local.get $valb + i64.ne + if + i32.const 12960 + i32.const 3 + local.get $i + f64.convert_i32_s + local.get $vala + f64.convert_i64_u + local.get $valb + f64.convert_i64_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + if (result i64) + local.get $value + i64.trunc_sat_f32_u + else + i64.const 0 + end + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int64Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int64Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.eqz + drop + local.get $targetStart + local.get $sourceStart + local.get $sourceLen + i32.const 3 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $value + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + local.get $value + local.get $value + f64.sub + f64.const 0 + f64.eq + if (result i64) + local.get $value + i64.trunc_sat_f64_u + else + i64.const 0 + end + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/typedarray/Uint8Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 3 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i64.extend_i32_u + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int16Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 3 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i64.extend_i32_s + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 3 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + i64.extend_i32_s + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + (local $setSource4 i32) + (local $setSource5 i32) + (local $setSource6 i32) + (local $a i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $setSource4 + i32.store + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $setSource5 + i32.store offset=8 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $setSource6 + i32.store offset=12 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Uint64Array#constructor + local.tee $a + i32.store offset=16 + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Uint64Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 12848 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 3 + call $~lib/typedarray/Uint64Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 13008 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 6 + call $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 13120 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + i32.const 1 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 2 + call $~lib/typedarray/Uint64Array#set<~lib/array/Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 13232 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 0 + call $~lib/typedarray/Uint64Array#set<~lib/typedarray/Uint8Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $setSource6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 4 + call $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int16Array> + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + global.get $std/typedarray/setSource7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + i32.const 7 + call $~lib/typedarray/Uint64Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $a + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 13344 + call $~lib/rt/__newArray + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=20 + local.get $9 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + f32.convert_i32_s + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#__uget (param $this i32) (param $index i32) (result f32) + (local $2 i32) + (local $3 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#__uget (param $this i32) (param $index i32) (result f32) + (local $2 i32) + (local $3 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + f32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (param $target i32) (param $compare i32) + (local $len i32) + (local $i i32) + (local $vala f32) + (local $valb f32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/typedarray/Float32Array#get:length + local.set $len + local.get $len + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/typedarray/Float32Array#__uget + local.set $vala + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__uget + local.set $valb + local.get $vala + local.get $valb + f32.ne + if + i32.const 13520 + i32.const 3 + local.get $i + f64.convert_i32_s + local.get $vala + f64.promote_f32 + local.get $valb + f64.promote_f32 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Float32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 0 + i32.eqz + drop + local.get $targetStart + local.get $sourceStart + local.get $sourceLen + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Int64Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + f32.convert_i64_s + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Uint8Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + f32.convert_i32_u + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Int16Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + f32.convert_i32_s + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float32Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 2 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 2 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + f32.convert_i32_s + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + (local $setSource4 i32) + (local $setSource5 i32) + (local $setSource6 i32) + (local $a i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $setSource4 + i32.store + local.get $setSource4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $setSource5 + i32.store offset=8 + local.get $setSource5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $setSource6 + i32.store offset=12 + local.get $setSource6 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Float32Array#constructor + local.tee $a + i32.store offset=16 + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + global.get $std/typedarray/setSource1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + i32.const 0 + call $~lib/typedarray/Float32Array#set<~lib/array/Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 13456 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + global.get $std/typedarray/setSource2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + i32.const 3 + call $~lib/typedarray/Float32Array#set<~lib/array/Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 13568 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $setSource4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + i32.const 6 + call $~lib/typedarray/Float32Array#set<~lib/typedarray/Int64Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 13632 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + i32.const 0 + drop + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $setSource5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + i32.const 0 + call $~lib/typedarray/Float32Array#set<~lib/typedarray/Uint8Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $setSource6 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + i32.const 4 + call $~lib/typedarray/Float32Array#set<~lib/typedarray/Int16Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + global.get $std/typedarray/setSource7 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + i32.const 7 + call $~lib/typedarray/Float32Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 13696 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + f64.convert_i32_s + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#__uget (param $this i32) (param $index i32) (result f64) + (local $2 i32) + (local $3 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + f64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#__uget (param $this i32) (param $index i32) (result f64) + (local $2 i32) + (local $3 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 3 + i32.shl + i32.add + f64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (param $target i32) (param $compare i32) + (local $len i32) + (local $i i32) + (local $vala f64) + (local $valb f64) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/typedarray/Float64Array#get:length + local.set $len + local.get $len + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $len + i32.lt_s + if + local.get $target + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/typedarray/Float64Array#__uget + local.set $vala + local.get $compare + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__uget + local.set $valb + local.get $vala + local.get $valb + f64.ne + if + i32.const 13872 + i32.const 3 + local.get $i + f64.convert_i32_s + local.get $vala + local.get $valb + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 3 + i32.const 2 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 0 + drop + i32.const 1 + i32.eqz + drop + local.get $ptr + local.get $value + f64.promote_f32 + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Int64Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + f64.convert_i64_s + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Uint8Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + f64.convert_i32_u + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Int16Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + f64.convert_i32_s + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float64Array#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 3 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 1 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 3 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $value + i32.const 0 + drop + i32.const 0 + drop + local.get $ptr + local.get $value + f64.convert_i32_s + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + (local $setSource4 i32) + (local $setSource5 i32) + (local $setSource6 i32) + (local $a i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $setSource4 + i32.store + local.get $setSource4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $setSource4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $setSource5 + i32.store offset=8 + local.get $setSource5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $setSource5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $setSource6 + i32.store offset=12 + local.get $setSource6 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $setSource6 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Float64Array#constructor + local.tee $a + i32.store offset=16 + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + global.get $std/typedarray/setSource1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + i32.const 0 + call $~lib/typedarray/Float64Array#set<~lib/array/Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 13760 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + global.get $std/typedarray/setSource2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + i32.const 3 + call $~lib/typedarray/Float64Array#set<~lib/array/Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 13920 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $setSource4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + i32.const 6 + call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int64Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 14032 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + i32.const 0 + drop + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $setSource5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + i32.const 0 + call $~lib/typedarray/Float64Array#set<~lib/typedarray/Uint8Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $setSource6 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + i32.const 4 + call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int16Array> + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + global.get $std/typedarray/setSource7 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + i32.const 7 + call $~lib/typedarray/Float64Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $a + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 14144 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float32Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 1 + i32.const 0 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $value + i32.const 1 + drop + i32.const 1 + drop + local.get $ptr + local.get $value + local.get $value + f32.sub + f32.const 0 + f32.eq + if (result i32) + f32.const 0 + f32.const 255 + local.get $value + f32.min + f32.max + i32.trunc_sat_f32_u + else + i32.const 0 + end + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 2 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $ptr + local.get $value + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.const 255 + local.get $value + i32.sub + i32.const 31 + i32.shr_s + local.get $value + i32.or + i32.and + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> (param $this i32) (param $source i32) (param $offset i32) + (local $target i32) + (local $source|4 i32) + (local $offset|5 i32) + (local $sourceLen i32) + (local $targetStart i32) + (local $sourceStart i32) + (local $i i32) + (local $ptr i32) + (local $value i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $target + i32.store + global.get $~lib/memory/__stack_pointer + local.get $source + local.tee $source|4 + i32.store offset=4 + local.get $offset + local.set $offset|5 + i32.const 0 + drop + local.get $source|4 + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Uint32Array#get:length + local.set $sourceLen + local.get $offset|5 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $sourceLen + local.get $offset|5 + i32.add + local.get $target + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + end + if + i32.const 336 + i32.const 608 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $target + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $offset|5 + i32.const 0 + i32.shl + i32.add + local.set $targetStart + local.get $source|4 + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.set $sourceStart + i32.const 0 + i32.const 2 + i32.eq + drop + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $sourceLen + i32.lt_s + if + local.get $targetStart + local.get $i + i32.const 0 + i32.shl + i32.add + local.set $ptr + local.get $sourceStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 1 + drop + i32.const 0 + drop + i32.const 0 + i32.eqz + drop + local.get $ptr + i32.const 255 + local.tee $12 + local.get $value + local.tee $13 + local.get $12 + local.get $13 + i32.lt_u + select + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + i32.load8_s + local.set $a + local.get $ptr + i32.load8_s offset=1 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store8 + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + i32.load8_s offset=2 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store8 offset=1 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store8 offset=2 + end + local.get $ptr + i32.load8_s + local.set $a|7 + local.get $ptr + i32.load8_s offset=1 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store8 + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store8 offset=1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.1 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.1 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 0 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int8Array#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Int8Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + i32.const 14320 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int8Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array#sort@varargs + local.tee $result + i32.store offset=8 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 14352 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Int8Array#sort + drop + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + i32.load8_u + local.set $a + local.get $ptr + i32.load8_u offset=1 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store8 + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + i32.load8_u offset=2 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store8 offset=1 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store8 offset=2 + end + local.get $ptr + i32.load8_u + local.set $a|7 + local.get $ptr + i32.load8_u offset=1 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store8 + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store8 offset=1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.2 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.2 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 0 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint8Array#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Uint8Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 14384 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint8Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array#sort@varargs + local.tee $result + i32.store offset=8 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 14416 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint8Array#sort + drop + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Uint8ClampedArray#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 14448 + br $~lib/util/sort/COMPARATOR|inlined.1 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#sort@varargs + local.tee $result + i32.store offset=8 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 14480 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#sort + drop + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + i32.load16_s + local.set $a + local.get $ptr + i32.load16_s offset=2 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store16 + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + i32.load16_s offset=4 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store16 offset=2 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store16 offset=4 + end + local.get $ptr + i32.load16_s + local.set $a|7 + local.get $ptr + i32.load16_s offset=2 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store16 + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.3 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.3 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int16Array#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Int16Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 2 + i32.const 4 + i32.le_u + drop + i32.const 14512 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int16Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int16Array#sort@varargs + local.tee $result + i32.store offset=8 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 14544 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Int16Array#sort + drop + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + i32.load16_u + local.set $a + local.get $ptr + i32.load16_u offset=2 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store16 + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + i32.load16_u offset=4 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store16 offset=2 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store16 offset=4 + end + local.get $ptr + i32.load16_u + local.set $a|7 + local.get $ptr + i32.load16_u offset=2 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store16 + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.4 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.4 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint16Array#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Uint16Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 14576 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint16Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint16Array#sort@varargs + local.tee $result + i32.store offset=8 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 14608 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint16Array#sort + drop + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + i32.load + local.set $a + local.get $ptr + i32.load offset=4 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + i32.load offset=8 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store offset=8 + end + local.get $ptr + i32.load + local.set $a|7 + local.get $ptr + i32.load offset=4 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.5 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.5 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int32Array#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Int32Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + i32.const 14640 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int32Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#sort@varargs + local.tee $result + i32.store offset=8 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 14672 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Int32Array#sort + drop + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i32) + (local $b i32) + (local $c i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + i32.load + local.set $a + local.get $ptr + i32.load offset=4 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + i32.load offset=8 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i32.store offset=8 + end + local.get $ptr + i32.load + local.set $a|7 + local.get $ptr + i32.load offset=4 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.6 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.6 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint32Array#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Uint32Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 14704 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint32Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint32Array#sort@varargs + local.tee $result + i32.store offset=8 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 14736 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint32Array#sort + drop + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i64) + (local $b i64) + (local $c i32) + (local $a|7 i64) + (local $b|8 i64) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + i64.load + local.set $a + local.get $ptr + i64.load offset=8 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i64.store + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + i64.load offset=16 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i64.store offset=8 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i64.store offset=16 + end + local.get $ptr + i64.load + local.set $a|7 + local.get $ptr + i64.load offset=8 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i64.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.7 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.7 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 3 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int64Array#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Int64Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.le_u + drop + i32.const 14768 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int64Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int64Array#sort@varargs + local.tee $result + i32.store offset=8 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 2 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 14800 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Int64Array#sort + drop + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 2 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a i64) + (local $b i64) + (local $c i32) + (local $a|7 i64) + (local $b|8 i64) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + i64.load + local.set $a + local.get $ptr + i64.load offset=8 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i64.store + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + i64.load offset=16 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + i64.store offset=8 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + i64.store offset=16 + end + local.get $ptr + i64.load + local.set $a|7 + local.get $ptr + i64.load offset=8 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + i64.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.8 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.8 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 3 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint64Array#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Uint64Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 14832 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint64Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint64Array#sort@varargs + local.tee $result + i32.store offset=8 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 2 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 14864 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint64Array#sort + drop + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 2 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) + (local $3 i32) + (local $a f32) + (local $b f32) + (local $c i32) + (local $a|7 f32) + (local $b|8 f32) + (local $c|9 i32) + (local $n i32) + (local $lgPlus2 i32) + (local $lgPlus2Size i32) + (local $leftRunStartBuf i32) + (local $leftRunEndBuf i32) + (local $i i32) + (local $buffer i32) + (local $hi i32) + (local $endA i32) + (local $lenA i32) + (local $20 i32) + (local $21 i32) + (local $top i32) + (local $startA i32) + (local $startB i32) + (local $endB i32) + (local $lenB i32) + (local $27 i32) + (local $28 i32) + (local $k i32) + (local $i|30 i32) + (local $start i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $len + i32.const 48 + i32.le_s + if + local.get $len + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $len + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $ptr + f32.load + local.set $a + local.get $ptr + f32.load offset=4 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $13) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + f32.store + local.get $a + local.get $b + local.get $c + select + local.set $a + local.get $ptr + f32.load offset=8 + local.set $b + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $13) + i32.const 0 + i32.gt_s + local.set $c + local.get $ptr + local.get $b + local.get $a + local.get $c + select + f32.store offset=4 + local.get $ptr + local.get $a + local.get $b + local.get $c + select + f32.store offset=8 + end + local.get $ptr + f32.load + local.set $a|7 + local.get $ptr + f32.load offset=4 + local.set $b|8 + local.get $a|7 + local.get $b|8 + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $13) + i32.const 0 + i32.gt_s + local.set $c|9 + local.get $ptr + local.get $b|8 + local.get $a|7 + local.get $c|9 + select + f32.store + local.get $ptr + local.get $a|7 + local.get $b|8 + local.get $c|9 + select + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $ptr + i32.const 0 + local.get $len + i32.const 1 + i32.sub + i32.const 0 + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + block $~lib/util/sort/log2u|inlined.9 (result i32) + local.get $len + local.set $n + i32.const 31 + local.get $n + i32.clz + i32.sub + br $~lib/util/sort/log2u|inlined.9 + end + i32.const 2 + i32.add + local.set $lgPlus2 + local.get $lgPlus2 + i32.const 2 + i32.shl + local.set $lgPlus2Size + local.get $lgPlus2Size + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $leftRunStartBuf + local.get $leftRunStartBuf + local.get $lgPlus2Size + i32.add + local.set $leftRunEndBuf + i32.const 0 + local.set $i + loop $for-loop|1 + local.get $i + local.get $lgPlus2 + i32.lt_u + if + local.get $leftRunStartBuf + local.get $i + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|1 + end + end + local.get $len + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $buffer + local.get $len + i32.const 1 + i32.sub + local.set $hi + local.get $ptr + i32.const 0 + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endA + local.get $endA + i32.const 1 + i32.add + local.set $lenA + local.get $lenA + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $20 + i32.const 32 + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $endA + local.get $ptr + i32.const 0 + local.get $endA + local.get $lenA + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $top + i32.const 0 + local.set $startA + loop $while-continue|2 + local.get $endA + local.get $hi + i32.lt_s + if + local.get $endA + i32.const 1 + i32.add + local.set $startB + local.get $ptr + local.get $startB + local.get $hi + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/extendRunRight + local.set $endB + local.get $endB + local.get $startB + i32.sub + i32.const 1 + i32.add + local.set $lenB + local.get $lenB + i32.const 32 + i32.lt_s + if + local.get $hi + local.tee $27 + local.get $startB + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $28 + local.get $27 + local.get $28 + i32.lt_s + select + local.set $endB + local.get $ptr + local.get $startB + local.get $endB + local.get $lenB + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $hi + local.get $startA + local.get $startB + local.get $endB + call $~lib/util/sort/nodePower + local.set $k + local.get $top + local.set $i|30 + loop $for-loop|3 + local.get $i|30 + local.get $k + i32.gt_u + if + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start + local.get $start + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start + local.get $leftRunEndBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $endA + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + local.get $start + local.set $startA + local.get $leftRunStartBuf + local.get $i|30 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $i|30 + i32.const 1 + i32.sub + local.set $i|30 + br $for-loop|3 + end + end + local.get $leftRunStartBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $startA + i32.store + local.get $leftRunEndBuf + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $endA + i32.store + local.get $startB + local.set $startA + local.get $endB + local.set $endA + local.get $k + local.set $top + br $while-continue|2 + end + end + local.get $top + local.set $i|32 + loop $for-loop|4 + local.get $i|32 + i32.const 0 + i32.ne + if + local.get $leftRunStartBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $start|33 + local.get $start|33 + i32.const -1 + i32.ne + if + local.get $ptr + local.get $start|33 + local.get $leftRunEndBuf + local.get $i|32 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $hi + local.get $buffer + local.get $comparator + local.set $34 + global.get $~lib/memory/__stack_pointer + local.get $34 + i32.store + local.get $34 + call $~lib/util/sort/mergeRuns + end + local.get $i|32 + i32.const 1 + i32.sub + local.set $i|32 + br $for-loop|4 + end + end + local.get $buffer + call $~lib/rt/tlsf/__free + local.get $leftRunStartBuf + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#sort (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:dataStart + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Float32Array#get:length + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/sort/SORT + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/typedarray/Float32Array#sort@varargs (param $this i32) (param $comparator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + i32.const 14896 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $comparator + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $comparator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Float32Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float32Array#sort@varargs + local.tee $result + i32.store offset=8 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 2 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 14928 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Float32Array#sort + drop + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 2 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>" + (local $source i32) + (local $result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $source + i32.store + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $source + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float64Array#sort@varargs + local.tee $result + i32.store offset=8 + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 2 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 14960 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Float64Array#sort + drop + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 2 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $result + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/typedarray + (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) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 124 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 124 + memory.fill + global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT + i32.const 1 + i32.eq + drop + global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT + i32.const 1 + i32.eq + drop + global.get $~lib/typedarray/Uint8ClampedArray.BYTES_PER_ELEMENT + i32.const 1 + i32.eq + drop + global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT + i32.const 2 + i32.eq + drop + global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT + i32.const 2 + i32.eq + drop + global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT + i32.const 4 + i32.eq + drop + global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT + i32.const 4 + i32.eq + drop + global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT + i32.const 8 + i32.eq + drop + global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT + i32.const 8 + i32.eq + drop + global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT + i32.const 4 + i32.eq + drop + global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT + i32.const 8 + i32.eq + drop + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $std/typedarray/testInstantiate + i32.const 5 + call $std/typedarray/testInstantiate + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 99 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 100 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#subarray + local.tee $0 + i32.store + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + f64.const 7 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 6 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 7 + f64.const 8 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Float64Array#subarray + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Float64Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 2 + i32.const 8 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 4 + i32.const 8 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float64Array#sort@varargs + drop + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq + if (result i32) + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + else + i32.const 0 + end + if (result i32) + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.eq + else + i32.const 0 + end + if (result i32) + local.get $1 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const -32 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const 256 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 137 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int8Array#fill + drop + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 704 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array#fill@varargs + drop + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 784 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int8Array#fill + drop + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 816 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const -2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array#fill@varargs + drop + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 848 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 158 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int8Array#fill + drop + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 880 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 161 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $9 + i32.store offset=24 + local.get $9 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array#fill@varargs + drop + local.get $9 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 165 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 167 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + i32.const 0 + i32.const 16 + i32.const 912 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 168 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 944 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 169 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $12 + i32.store offset=28 + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#fill + drop + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 976 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 181 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#fill@varargs + drop + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1024 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int32Array#fill + drop + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1072 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const -2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#fill@varargs + drop + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1120 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 190 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int32Array#fill + drop + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1168 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $18 + i32.store offset=32 + local.get $18 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#fill@varargs + drop + local.get $18 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 197 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $18 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $18 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 199 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $18 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + i32.const 2 + i32.const 17 + i32.const 1216 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $12 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1248 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 201 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/typedarray/Int8Array#constructor + local.tee $21 + i32.store offset=36 + local.get $21 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $21 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $21 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $21 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $21 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $21 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $21 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 6 + call $~lib/typedarray/Int8Array#subarray + local.tee $22 + i32.store offset=40 + local.get $22 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 222 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $22 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int8Array#get:length + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $22 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 224 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $22 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $22 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 5 + call $~lib/typedarray/Int8Array#subarray + local.tee $23 + i32.store offset=44 + local.get $23 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 228 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $23 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int8Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 229 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $23 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $23 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 231 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $23 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $24 + i32.store offset=48 + local.get $24 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 234 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $24 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $24 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 236 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $24 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $26 + i32.store offset=56 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const 0 + i32.const 3 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#copyWithin@varargs + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1296 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 248 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $26 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const 1 + i32.const 3 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#copyWithin@varargs + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1344 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 250 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $26 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#copyWithin@varargs + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1392 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 252 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $26 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const 2 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#copyWithin@varargs + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1440 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 254 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $26 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1488 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 256 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $26 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const 1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1536 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 258 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $26 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1584 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 260 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $26 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const 0 + i32.const -2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#copyWithin@varargs + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1632 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 262 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $26 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1680 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 264 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $26 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/typedarray/Int32Array#copyWithin + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1728 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 266 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $26 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1776 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 268 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $26 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $25 + i32.store offset=52 + local.get $25 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=60 + local.get $64 + i32.const -4 + i32.const -3 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#copyWithin@varargs + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1824 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 270 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $39 + i32.store offset=64 + local.get $39 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $39 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $39 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $39 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $39 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $39 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $40 + i32.store offset=68 + local.get $40 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 282 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $40 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 283 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $40 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 284 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $39 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#slice + local.tee $41 + i32.store offset=72 + local.get $41 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 287 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $41 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 288 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $41 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int32Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 289 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $41 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 290 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $41 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 291 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $40 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#slice + local.tee $42 + i32.store offset=76 + local.get $42 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 294 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $42 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 295 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $42 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 296 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $42 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 297 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $39 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $43 + i32.store offset=80 + local.get $43 + local.get $39 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 300 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $43 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int32Array#get:length + local.get $39 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Int32Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 301 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $43 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $39 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 302 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $43 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $39 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 303 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + call $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testAt<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testAt<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testAt<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testAt<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testAt<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testAt<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testAt<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testAt<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testAt<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testAt<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testAt<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64>" + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/typedarray/Float64Array#constructor + local.tee $47 + i32.store offset=84 + local.get $47 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + f64.const nan:0x8000000000000 + call $~lib/typedarray/Float64Array#__set + local.get $47 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 653 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $47 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/typedarray/Float64Array#includes + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 654 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/typedarray/Float32Array#constructor + local.tee $48 + i32.store offset=88 + local.get $48 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + local.get $48 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + f32.const nan:0x400000 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 659 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $48 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + f32.const nan:0x400000 + i32.const 0 + call $~lib/typedarray/Float32Array#includes + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 660 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64>" + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $50 + i32.store offset=92 + global.get $~lib/memory/__stack_pointer + local.get $50 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $51 + i32.store offset=96 + local.get $51 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Uint8Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 737 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $50 + i32.store offset=92 + global.get $~lib/memory/__stack_pointer + local.get $50 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $51 + i32.store offset=96 + local.get $51 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + call $~lib/typedarray/Uint8Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 741 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + call $"std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64>" + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $56 + i32.store offset=100 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $57 + i32.store offset=104 + local.get $57 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + f32.const 400 + call $~lib/typedarray/Float32Array#__set + local.get $57 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + local.get $57 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + f32.const inf + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Int64Array#constructor + local.tee $58 + i32.store offset=108 + local.get $58 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i64.const -10 + call $~lib/typedarray/Int64Array#__set + local.get $58 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i64.const 100 + call $~lib/typedarray/Int64Array#__set + local.get $58 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i64.const 10 + call $~lib/typedarray/Int64Array#__set + local.get $58 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + i64.const 300 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#constructor + local.tee $59 + i32.store offset=112 + local.get $59 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 300 + call $~lib/typedarray/Int32Array#__set + local.get $59 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const -1 + call $~lib/typedarray/Int32Array#__set + local.get $56 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + local.get $57 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> + local.get $56 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + local.get $58 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + local.get $56 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + local.get $59 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> + local.get $56 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 14256 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $61 + i32.store offset=116 + local.get $61 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $61 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 300 + call $~lib/typedarray/Uint32Array#__set + local.get $61 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const 100 + call $~lib/typedarray/Uint32Array#__set + local.get $61 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + i32.const -1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Int16Array#constructor + local.tee $62 + i32.store offset=120 + local.get $62 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 0 + i32.const -10 + call $~lib/typedarray/Int16Array#__set + local.get $62 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int16Array#__set + local.get $62 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 2 + i32.const 10 + call $~lib/typedarray/Int16Array#__set + local.get $62 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 3 + i32.const 300 + call $~lib/typedarray/Int16Array#__set + local.get $56 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + local.get $61 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> + local.get $56 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + local.get $62 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + local.get $56 + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=4 + local.get $64 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 14288 + call $~lib/rt/__newArray + local.set $64 + global.get $~lib/memory/__stack_pointer + local.get $64 + i32.store offset=20 + local.get $64 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + call $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>" + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 124 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f64%2Cf64%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i8%2Ci8%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i8%2Ci8%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u8%2Cu8%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u8%2Cu8%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i16%2Ci16%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i16%2Ci16%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u16%2Cu16%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u16%2Cu16%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u32%2Cu32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i64%2Ci64%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i64%2Ci64%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28u64%2Cu64%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28u64%2Cu64%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28f32%2Cf32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) + (local $bufferSize i32) + (local $buffer i32) + (local $array i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + local.get $alignLog2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + local.get $data + call $~lib/rt/__newBuffer + local.tee $buffer + i32.store + i32.const 16 + local.get $id + call $~lib/rt/itcms/__new + local.set $array + local.get $array + local.get $buffer + i32.store + local.get $array + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + local.get $array + local.get $buffer + i32.store offset=4 + local.get $array + local.get $bufferSize + i32.store offset=8 + local.get $array + local.get $length + i32.store offset=12 + local.get $array + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i32) + (local $offset|11 i32) + (local $val32 i32) + (local $decimals|13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 6784 + i32.const 6912 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 6976 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + local.get $value + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + i64.extend_i32_u + local.get $offset|11 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.set $val32 + local.get $val32 + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $val32 + i64.extend_i32_u + local.get $decimals|13 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|7 i32) + (local $buffer|8 i32) + (local $num|9 i32) + (local $offset|10 i32) + (local $decimals|11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 6784 + i32.const 6912 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 6976 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|7 + global.get $~lib/memory/__stack_pointer + local.get $decimals|7 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|8 + local.get $value + local.set $num|9 + local.get $decimals|7 + local.set $offset|10 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|8 + local.get $num|9 + i64.extend_i32_u + local.get $offset|10 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|11 + global.get $~lib/memory/__stack_pointer + local.get $decimals|11 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + i64.extend_i32_u + local.get $decimals|11 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $~lib/util/number/itoa64 (param $value i64) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $val32 i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|9 i32) + (local $buffer|10 i32) + (local $num|11 i64) + (local $offset|12 i32) + (local $decimals|13 i32) + (local $buffer|14 i32) + (local $num|15 i64) + (local $offset|16 i32) + (local $decimals|17 i32) + (local $18 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 6784 + i32.const 6912 + i32.const 431 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i64.const 0 + i64.ne + i32.eqz + if + i32.const 6976 + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return + end + local.get $value + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i64.const 0 + local.get $value + i64.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + call $~lib/util/number/decimalCount64High + local.set $decimals|9 + global.get $~lib/memory/__stack_pointer + local.get $decimals|9 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|10 + local.get $value + local.set $num|11 + local.get $decimals|9 + local.set $offset|12 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|10 + local.get $num|11 + local.get $offset|12 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 63 + local.get $value + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|14 + local.get $value + local.set $num|15 + local.get $decimals|13 + local.set $offset|16 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|14 + local.get $num|15 + local.get $offset|16 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|17 + global.get $~lib/memory/__stack_pointer + local.get $decimals|17 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $value + local.get $decimals|17 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $18 + return + ) + (func $~lib/util/number/utoa64 (param $value i64) (param $radix i32) (result i32) + (local $out i32) + (local $val32 i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i64) + (local $offset|11 i32) + (local $decimals|12 i32) + (local $buffer|13 i32) + (local $num|14 i64) + (local $offset|15 i32) + (local $decimals|16 i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 6784 + i32.const 6912 + i32.const 401 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i64.const 0 + i64.ne + i32.eqz + if + i32.const 6976 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + global.get $~lib/builtins/u32.MAX_VALUE + i64.extend_i32_u + i64.le_u + if + local.get $value + i32.wrap_i64 + local.set $val32 + local.get $val32 + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer + local.get $val32 + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $value + call $~lib/util/number/decimalCount64High + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + local.get $offset|11 + call $~lib/util/number/utoa64_dec_lut + end + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 63 + local.get $value + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|12 + global.get $~lib/memory/__stack_pointer + local.get $decimals|12 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.set $buffer|13 + local.get $value + local.set $num|14 + local.get $decimals|12 + local.set $offset|15 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|13 + local.get $num|14 + local.get $offset|15 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|16 + global.get $~lib/memory/__stack_pointer + local.get $decimals|16 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $value + local.get $decimals|16 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $out + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + ) + (func $~lib/util/number/dtoa (param $value f32) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + local.get $value + f64.promote_f32 + local.set $value|1 + i32.const 1 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 8640 + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 8672 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 8704 + i32.const 8752 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 8784 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 8784 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/util/number/dtoa (param $value f64) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.1 (result i32) + local.get $value + local.set $value|1 + i32.const 0 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 8640 + br $~lib/util/number/dtoa_impl|inlined.1 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 8672 + br $~lib/util/number/dtoa_impl|inlined.1 + end + i32.const 8704 + i32.const 8752 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.1 + end + i32.const 8784 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 8784 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.1 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) +) diff --git a/tests/compiler/std/typedarray.json b/tests/compiler/std/typedarray.json index 59c251c705..b83788465e 100644 --- a/tests/compiler/std/typedarray.json +++ b/tests/compiler/std/typedarray.json @@ -1,7 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--explicitStart", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + ], + "asc_rtrace": true +} diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat deleted file mode 100644 index 3d7a75457b..0000000000 --- a/tests/compiler/std/typedarray.optimized.wat +++ /dev/null @@ -1,36185 +0,0 @@ -(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_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i64_i32_i32_=>_i32 (func (param i64 i32 i32) (result i32))) - (type $f32_i32_i32_=>_i32 (func (param f32 i32 i32) (result i32))) - (type $f64_i32_i32_=>_i32 (func (param f64 i32 i32) (result i32))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_i32_i32_=>_i64 (func (param i64 i32 i32) (result i64))) - (type $i64_i64_i32_i32_=>_i64 (func (param i64 i64 i32 i32) (result i64))) - (type $f32_f32_i32_i32_=>_f32 (func (param f32 f32 i32 i32) (result f32))) - (type $f64_f64_i32_i32_=>_f64 (func (param f64 f64 i32 i32) (result f64))) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i64_i32_i32_=>_none (func (param i64 i32 i32))) - (type $f32_i32_i32_=>_none (func (param f32 i32 i32))) - (type $f64_i32_i32_=>_none (func (param f64 i32 i32))) - (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $f32_i32_i32_=>_f32 (func (param f32 i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (type $f64_i32_i32_=>_f64 (func (param f64 i32 i32) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 1024) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1072) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1136) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1184) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1248) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1296) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1360) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1424) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1488) "\08\00\00\00\01\00\00\00\0e\00\00\00\08\00\00\00\01") - (data (i32.const 1520) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 1552) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1600) "\05\00\00\00\01\00\00\00\00\00\00\00\05") - (data (i32.const 1632) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01") - (data (i32.const 1664) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 1696) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 1728) "\03\00\00\00\01\00\00\00\00\00\00\00\03") - (data (i32.const 1760) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\00\00\00\02") - (data (i32.const 1792) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data (i32.const 1840) "\14\00\00\00\01\00\00\00\00\00\00\00\14") - (data (i32.const 1888) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01") - (data (i32.const 1936) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 1984) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 2032) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c") - (data (i32.const 2064) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01") - (data (i32.const 2096) "\02") - (data (i32.const 2112) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2160) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") - (data (i32.const 2208) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 2256) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2304) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2352) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2400) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 2448) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2496) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2544) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2592) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 2640) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 2688) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00\02") - (data (i32.const 2720) "\08\00\00\00\01\00\00\00\12\00\00\00\08\00\00\00\03") - (data (i32.const 2752) "\08\00\00\00\01\00\00\00\13\00\00\00\08\00\00\00\04") - (data (i32.const 2784) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\00\05") - (data (i32.const 2816) "\08\00\00\00\01\00\00\00\15\00\00\00\08\00\00\00\06") - (data (i32.const 2848) "\08\00\00\00\01\00\00\00\16\00\00\00\08\00\00\00\07") - (data (i32.const 2880) "\08\00\00\00\01\00\00\00\17\00\00\00\08\00\00\00\08") - (data (i32.const 2912) "\08\00\00\00\01\00\00\00\18\00\00\00\08\00\00\00\t") - (data (i32.const 2944) "\08\00\00\00\01\00\00\00\19\00\00\00\08\00\00\00\n") - (data (i32.const 2976) "\08\00\00\00\01\00\00\00\1a\00\00\00\08\00\00\00\0b") - (data (i32.const 3008) "\08\00\00\00\01\00\00\00\1b\00\00\00\08\00\00\00\0c") - (data (i32.const 3040) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00\0d") - (data (i32.const 3072) "\08\00\00\00\01\00\00\00\12\00\00\00\08\00\00\00\0e") - (data (i32.const 3104) "\08\00\00\00\01\00\00\00\13\00\00\00\08\00\00\00\0f") - (data (i32.const 3136) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\00\10") - (data (i32.const 3168) "\08\00\00\00\01\00\00\00\15\00\00\00\08\00\00\00\11") - (data (i32.const 3200) "\08\00\00\00\01\00\00\00\16\00\00\00\08\00\00\00\12") - (data (i32.const 3232) "\08\00\00\00\01\00\00\00\17\00\00\00\08\00\00\00\13") - (data (i32.const 3264) "\08\00\00\00\01\00\00\00\18\00\00\00\08\00\00\00\14") - (data (i32.const 3296) "\08\00\00\00\01\00\00\00\19\00\00\00\08\00\00\00\15") - (data (i32.const 3328) "\08\00\00\00\01\00\00\00\1a\00\00\00\08\00\00\00\16") - (data (i32.const 3360) "\08\00\00\00\01\00\00\00\1b\00\00\00\08\00\00\00\17") - (data (i32.const 3392) "\08\00\00\00\01\00\00\00\1c\00\00\00\08\00\00\00\18") - (data (i32.const 3424) "\08\00\00\00\01\00\00\00\1d\00\00\00\08\00\00\00\19") - (data (i32.const 3456) "\08\00\00\00\01\00\00\00\1e\00\00\00\08\00\00\00\1a") - (data (i32.const 3488) "\08\00\00\00\01\00\00\00\1f\00\00\00\08\00\00\00\1b") - (data (i32.const 3520) "\08\00\00\00\01\00\00\00 \00\00\00\08\00\00\00\1c") - (data (i32.const 3552) "\08\00\00\00\01\00\00\00!\00\00\00\08\00\00\00\1d") - (data (i32.const 3584) "\08\00\00\00\01\00\00\00\"\00\00\00\08\00\00\00\1e") - (data (i32.const 3616) "\08\00\00\00\01\00\00\00#\00\00\00\08\00\00\00\1f") - (data (i32.const 3648) "\08\00\00\00\01\00\00\00$\00\00\00\08\00\00\00 ") - (data (i32.const 3680) "\08\00\00\00\01\00\00\00%\00\00\00\08\00\00\00!") - (data (i32.const 3712) "\08\00\00\00\01\00\00\00&\00\00\00\08\00\00\00\"") - (data (i32.const 3744) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00#") - (data (i32.const 3776) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00$") - (data (i32.const 3808) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00%") - (data (i32.const 3840) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00&") - (data (i32.const 3872) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00\'") - (data (i32.const 3904) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00(") - (data (i32.const 3936) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00)") - (data (i32.const 3968) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00*") - (data (i32.const 4000) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00+") - (data (i32.const 4032) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00,") - (data (i32.const 4064) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00-") - (data (i32.const 4096) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00.") - (data (i32.const 4128) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00/") - (data (i32.const 4160) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\000") - (data (i32.const 4192) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\001") - (data (i32.const 4224) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\002") - (data (i32.const 4256) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\003") - (data (i32.const 4288) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\004") - (data (i32.const 4320) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\005") - (data (i32.const 4352) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\006") - (data (i32.const 4384) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\007") - (data (i32.const 4416) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\008") - (data (i32.const 4448) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\009") - (data (i32.const 4480) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00:") - (data (i32.const 4512) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00;") - (data (i32.const 4544) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00<") - (data (i32.const 4576) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00=") - (data (i32.const 4608) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00>") - (data (i32.const 4640) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00?") - (data (i32.const 4672) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00@") - (data (i32.const 4704) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00A") - (data (i32.const 4736) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00B") - (data (i32.const 4768) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00C") - (data (i32.const 4800) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00D") - (data (i32.const 4832) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00E") - (data (i32.const 4864) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00F") - (data (i32.const 4896) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00G") - (data (i32.const 4928) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00H") - (data (i32.const 4960) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00I") - (data (i32.const 4992) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00J") - (data (i32.const 5024) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00K") - (data (i32.const 5056) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00L") - (data (i32.const 5088) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00M") - (data (i32.const 5120) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00N") - (data (i32.const 5152) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00O") - (data (i32.const 5184) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00P") - (data (i32.const 5216) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00Q") - (data (i32.const 5248) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00R") - (data (i32.const 5280) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00S") - (data (i32.const 5312) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00T") - (data (i32.const 5344) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00U") - (data (i32.const 5376) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00V") - (data (i32.const 5408) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00W") - (data (i32.const 5440) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00X") - (data (i32.const 5472) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00Y") - (data (i32.const 5504) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00Z") - (data (i32.const 5536) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00[") - (data (i32.const 5568) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00\\") - (data (i32.const 5600) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00]") - (data (i32.const 5632) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00^") - (data (i32.const 5664) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00_") - (data (i32.const 5696) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00`") - (data (i32.const 5728) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00a") - (data (i32.const 5760) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00b") - (data (i32.const 5792) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00c") - (data (i32.const 5824) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00d") - (data (i32.const 5856) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00e") - (data (i32.const 5888) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00f") - (data (i32.const 5920) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00g") - (data (i32.const 5952) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00h") - (data (i32.const 5984) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00i") - (data (i32.const 6016) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00j") - (data (i32.const 6048) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00k") - (data (i32.const 6080) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00l") - (data (i32.const 6112) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00m") - (data (i32.const 6144) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00n") - (data (i32.const 6176) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00o") - (data (i32.const 6208) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") - (data (i32.const 6240) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00P\18\00\00P\18\00\00\0c\00\00\00\03") - (data (i32.const 6272) "\08\00\00\00\01\00\00\002\00\00\00\08\00\00\00p") - (data (i32.const 6304) "\08\00\00\00\01\00\00\003\00\00\00\08\00\00\00q") - (data (i32.const 6336) "\08\00\00\00\01\00\00\004\00\00\00\08\00\00\00r") - (data (i32.const 6368) "\08\00\00\00\01\00\00\005\00\00\00\08\00\00\00s") - (data (i32.const 6400) "\08\00\00\00\01\00\00\006\00\00\00\08\00\00\00t") - (data (i32.const 6432) "\08\00\00\00\01\00\00\007\00\00\00\08\00\00\00u") - (data (i32.const 6464) "\08\00\00\00\01\00\00\008\00\00\00\08\00\00\00v") - (data (i32.const 6496) "\08\00\00\00\01\00\00\009\00\00\00\08\00\00\00w") - (data (i32.const 6528) "\08\00\00\00\01\00\00\00:\00\00\00\08\00\00\00x") - (data (i32.const 6560) "\08\00\00\00\01\00\00\00;\00\00\00\08\00\00\00y") - (data (i32.const 6592) "\08\00\00\00\01\00\00\00<\00\00\00\08\00\00\00z") - (data (i32.const 6624) "$\00\00\00\01\00\00\00\00\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 6688) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00\f0\19\00\00\f0\19\00\00$\00\00\00\t") - (data (i32.const 6720) ",\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n") - (data (i32.const 6784) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00P\1a\00\00P\1a\00\00,\00\00\00\0b") - (data (i32.const 6820) "\01\00\00\00\01") - (data (i32.const 6832) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 6960) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 7024) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 7056) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 7152) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") - (data (i32.const 7184) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005") - (data (i32.const 7232) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 7264) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 7296) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7344) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 7376) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\10\00\00\00\90!\00\00\90!\00\00\18\00\00\00\03") - (data (i32.const 8656) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\92\91\90") - (data (i32.const 8688) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\e0!\00\00\e0!\00\00\03\00\00\00\03") - (data (i32.const 8720) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03") - (data (i32.const 8752) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y") - (data (i32.const 8800) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 8832) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 8864) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 8896) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 8928) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03") - (data (i32.const 8960) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y") - (data (i32.const 9008) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 9040) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 9072) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 9104) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 9136) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03") - (data (i32.const 9168) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y") - (data (i32.const 9232) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 9264) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 9296) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 9328) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00defg\ff\ff\ff") - (data (i32.const 9360) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03") - (data (i32.const 9408) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y") - (data (i32.const 9456) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data (i32.const 9504) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") - (data (i32.const 9552) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") - (data (i32.const 9600) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data (i32.const 9648) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03") - (data (i32.const 9696) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y") - (data (i32.const 9744) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data (i32.const 9792) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") - (data (i32.const 9840) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") - (data (i32.const 9888) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data (i32.const 9936) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 10000) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y") - (data (i32.const 10048) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") - (data (i32.const 10112) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 10176) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02") - (data (i32.const 10212) "\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 10240) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data (i32.const 10304) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 10368) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y") - (data (i32.const 10416) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") - (data (i32.const 10480) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 10544) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02") - (data (i32.const 10580) "\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 10608) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data (i32.const 10672) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") - (data (i32.const 10768) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y") - (data (i32.const 10816) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") - (data (i32.const 10912) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data (i32.const 11008) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") - (data (i32.const 11064) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data (i32.const 11104) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11200) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") - (data (i32.const 11296) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y") - (data (i32.const 11344) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") - (data (i32.const 11440) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data (i32.const 11536) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") - (data (i32.const 11592) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") - (data (i32.const 11632) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11728) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 11792) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y") - (data (i32.const 11840) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@") - (data (i32.const 11904) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A") - (data (i32.const 11968) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") - (data (i32.const 12032) "P\00\00\00\01\00\00\00\00\00\00\00P") - (data (i32.const 12054) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 12128) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y") - (data (i32.const 12176) "P\00\00\00\01\00\00\00\00\00\00\00P") - (data (i32.const 12198) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@") - (data (i32.const 12272) "P\00\00\00\01\00\00\00\00\00\00\00P") - (data (i32.const 12294) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@") - (data (i32.const 12368) "P\00\00\00\01\00\00\00\00\00\00\00P") - (data (i32.const 12390) "Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0") - (data (i32.const 12464) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff") - (data (i32.const 12496) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff") - (table $0 123 funcref) - (elem (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) - (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 12524 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1152 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1152 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 12528 - local.set $1 - i32.const 12528 - i32.const 0 - i32.store - i32.const 14096 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 12528 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 12528 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 12528 - i32.const 14112 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 12528 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 1200 - i32.const 1152 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.get $1 - local.get $1 - i32.const 536870904 - i32.lt_u - select - local.tee $1 - i32.clz - i32.sub - local.set $2 - local.get $1 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1152 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - local.get $1 - i32.const 16 - i32.add - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1152 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 16 - memory.size - local.tee $3 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.get $4 - local.get $4 - i32.const 536870904 - i32.lt_u - select - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $3 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $3 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $3 - i32.load - i32.const -4 - i32.and - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 1152 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - call $~lib/rt/rtrace/onalloc - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.tee $3 - local.get $1 - i32.store8 offset=3 - local.get $2 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - local.get $1 - i32.store8 offset=1 - local.get $0 - local.get $1 - i32.store8 offset=2 - local.get $3 - local.get $1 - i32.store8 offset=2 - local.get $3 - local.get $1 - i32.store8 offset=1 - local.get $2 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - local.get $1 - i32.store8 offset=3 - local.get $3 - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $5 - i32.add - local.tee $3 - local.get $1 - i32.const 255 - i32.and - i32.const 16843009 - i32.mul - local.tee $0 - i32.store - local.get $3 - local.get $2 - local.get $5 - i32.sub - i32.const -4 - i32.and - local.tee $2 - i32.add - i32.const 28 - i32.sub - local.tee $1 - local.get $0 - i32.store offset=24 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $3 - local.get $0 - i32.store offset=4 - local.get $3 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=16 - local.get $1 - local.get $0 - i32.store offset=20 - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $3 - local.get $0 - i32.store offset=12 - local.get $3 - local.get $0 - i32.store offset=16 - local.get $3 - local.get $0 - i32.store offset=20 - local.get $3 - local.get $0 - i32.store offset=24 - local.get $1 - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - local.get $3 - local.get $3 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.sub - local.set $2 - local.get $0 - i64.extend_i32_u - local.get $0 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $4 - loop $while-continue|0 - local.get $2 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $4 - i64.store - local.get $1 - local.get $4 - i64.store offset=8 - local.get $1 - local.get $4 - i64.store offset=16 - local.get $1 - local.get $4 - i64.store offset=24 - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $1 - i32.const 32 - i32.add - local.set $1 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 12524 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1264 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - call $~lib/rt/rtrace/onincrement - local.get $1 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1264 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 18 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.shl - local.tee $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $1 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - local.set $2 - local.get $1 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - ) - (func $~lib/typedarray/Int8Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - ) - (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint8ClampedArray#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Int16Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $0 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint16Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $0 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 8 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Int64Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 10 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 11 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Float32Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Float64Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 13 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $std/typedarray/testInstantiate (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.get $0 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 38 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=8 - local.get $0 - i32.const 1 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $4 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Uint16Array#constructor - local.tee $5 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 52 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=8 - local.get $0 - i32.const 1 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 53 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 54 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Int32Array#constructor - local.tee $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 57 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.load offset=8 - local.get $0 - i32.const 2 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $6 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Uint32Array#constructor - local.tee $7 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.load offset=8 - local.get $0 - i32.const 2 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.load offset=8 - local.get $0 - i32.const 3 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $8 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Uint64Array#constructor - local.tee $9 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.load offset=8 - local.get $0 - i32.const 3 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $9 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 74 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Float32Array#constructor - local.tee $10 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 77 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $10 - i32.load offset=8 - local.get $0 - i32.const 2 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 78 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $10 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 79 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Float64Array#constructor - local.tee $11 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $11 - i32.load offset=8 - local.get $0 - i32.const 3 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $11 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 675 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/typedarray/Int32Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 664 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/typedarray/Int32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $0 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.set $1 - i32.const 12 - i32.const 8 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $4 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $2 - local.get $1 - local.get $0 - local.get $1 - local.get $0 - i32.gt_s - select - local.get $0 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#__set (param $0 i32) (param $1 i32) (param $2 f64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 1315 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - f64.store - ) - (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $0 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.set $1 - i32.const 12 - i32.const 13 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $4 - i32.load offset=4 - local.get $0 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $2 - local.get $1 - local.get $0 - local.get $1 - local.get $0 - i32.gt_s - select - local.get $0 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $5 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - if - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $5 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $3 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $7 - f64.store - br $while-continue|1 - end - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const -268435456 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 f64) - (local $7 i32) - (local $8 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $7 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $5 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 1 - i32.and - local.get $5 - local.get $2 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $2 - i32.const 1 - i32.shr_s - local.set $2 - br $while-continue|1 - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.shr_s - local.tee $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $4 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $7 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $3 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $3 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 2 - i32.ge_s - if - local.get $0 - f64.load - local.set $4 - local.get $0 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $1 - f64.load - f64.store - local.get $1 - local.get $4 - f64.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - f64.load - local.set $4 - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $7 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const 1 - local.get $1 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - local.get $0 - local.get $6 - f64.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|2 - end - end - call $~lib/rt/tlsf/maybeInitialize - local.get $5 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - local.get $0 - f64.load offset=8 - local.set $4 - local.get $0 - local.get $0 - f64.load - f64.store offset=8 - local.get $0 - local.get $4 - f64.store - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $5 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - local.get $5 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $0 - i32.const 1 - i32.le_s - br_if $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $2 - i32.load offset=4 - local.set $1 - local.get $0 - i32.const 2 - i32.eq - if - local.get $1 - f64.load offset=8 - local.set $6 - local.get $1 - f64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $3 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $1 - local.get $7 - f64.store offset=8 - local.get $1 - local.get $6 - f64.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - i32.const 256 - i32.lt_s - if - local.get $1 - local.get $0 - local.get $4 - call $~lib/util/sort/insertionSort - else - local.get $1 - local.get $0 - local.get $4 - call $~lib/util/sort/weakHeapSort - end - local.get $4 - call $~lib/rt/pure/__release - end - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - local.get $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.tee $2 - local.get $1 - i64.reinterpret_f64 - local.tee $3 - local.get $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.tee $3 - i64.gt_s - local.get $2 - local.get $3 - i64.lt_s - i32.sub - ) - (func $~lib/typedarray/Float64Array#__get (param $0 i32) (param $1 i32) (result f64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 1304 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $~lib/typedarray/Uint8ClampedArray#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 291 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.const 255 - local.get $2 - i32.sub - i32.const 31 - i32.shr_s - i32.or - local.get $2 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.and - i32.store8 - ) - (func $~lib/typedarray/Uint8ClampedArray#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 280 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - ) - (func $~lib/typedarray/Int8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 35 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/typedarray/Int8Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $5 - i32.load offset=4 - local.set $6 - local.get $5 - i32.load offset=8 - local.set $4 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select - end - local.tee $0 - i32.lt_s - if - local.get $2 - local.get $6 - i32.add - local.get $1 - local.get $0 - local.get $2 - i32.sub - call $~lib/memory/memory.fill - end - local.get $5 - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - i32.const 16 - local.get $2 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - i32.shl - local.tee $1 - local.set $5 - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $3 - if - local.get $4 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy - end - local.get $4 - local.tee $3 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/typedarray/Int8Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 24 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_s - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_s - ) - (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner0 - local.get $0 - i32.load offset=8 - local.get $1 - i32.load offset=12 - i32.ne - br_if $folding-inner0 - local.get $0 - i32.load offset=8 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#__get - local.set $4 - local.get $2 - local.get $1 - i32.load offset=12 - i32.ge_u - if - i32.const 1376 - i32.const 1568 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/array/Array#__uget - local.get $4 - i32.ne - br_if $folding-inner0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=8 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $0 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.set $1 - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $0 - local.get $4 - i32.load offset=4 - i32.add - i32.store offset=4 - local.get $2 - local.get $1 - local.get $0 - local.get $1 - local.get $0 - i32.gt_s - select - local.get $0 - i32.sub - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - local.set $4 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $5 - i32.load offset=4 - local.set $6 - local.get $5 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.lt_s - select - end - local.set $0 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $1 - local.get $3 - local.get $1 - i32.lt_s - select - end - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $6 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $5 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1376 - i32.const 1568 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - ) - (func $std/typedarray/isInt32ArrayEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - block $folding-inner0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=12 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ne - br_if $folding-inner0 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne - br_if $folding-inner0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $0 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.get $0 - i32.sub - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.get $4 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int32Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $3 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $5 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.set $3 - local.get $5 - i32.load offset=4 - local.tee $6 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.tee $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $0 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select - end - local.get $0 - i32.sub - local.tee $2 - local.get $4 - local.get $1 - i32.sub - local.tee $0 - local.get $2 - local.get $0 - i32.lt_s - select - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $5 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 163 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/typedarray/Uint8Array#reduce (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $2 - local.get $5 - i32.add - i32.load8_u - local.set $7 - i32.const 4 - global.set $~argumentsLength - local.get $4 - local.get $7 - local.get $2 - local.get $0 - local.get $3 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $4 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 419 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/typedarray/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 547 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/typedarray/Int32Array#reduce (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - i32.const 4 - global.set $~argumentsLength - local.get $4 - local.get $7 - local.get $2 - local.get $0 - local.get $3 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $4 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 803 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/typedarray/Int64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 931 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - local.get $0 - local.get $1 - i64.add - ) - (func $~lib/typedarray/Int64Array#reduce (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $5 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 4 - global.set $~argumentsLength - local.get $4 - local.get $7 - local.get $2 - local.get $0 - local.get $3 - i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) - local.set $4 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 1059 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 1187 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - f32.store - ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) - local.get $0 - local.get $1 - f32.add - ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) - local.get $0 - local.get $1 - f64.add - ) - (func $~lib/typedarray/Uint8Array#reduceRight (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $5 - i32.add - i32.load8_u - local.set $6 - i32.const 4 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $0 - local.get $1 - local.get $3 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $4 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int32Array#reduceRight (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $5 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - i32.const 4 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $0 - local.get $1 - local.get $3 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $4 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int64Array#reduceRight (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $5 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $6 - i32.const 4 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $0 - local.get $1 - local.get $3 - i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) - local.set $4 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - local.get $0 - i32.mul - ) - (func $~lib/typedarray/Int8Array#map (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.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3408 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $2 - i32.load offset=4 - local.set $6 - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $0 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_s - if - local.get $1 - local.get $6 - i32.add - i32.load8_s - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $4 - i32.add - local.get $7 - local.get $1 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $0 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3408 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#map (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.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3440 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $2 - i32.load offset=4 - local.set $6 - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $0 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_s - if - local.get $1 - local.get $6 - i32.add - i32.load8_u - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $4 - i32.add - local.get $7 - local.get $1 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $0 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3440 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 152 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - ) - (func $~lib/typedarray/Uint8ClampedArray#map (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.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3472 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $2 - i32.load offset=4 - local.set $6 - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $0 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_s - if - local.get $1 - local.get $6 - i32.add - i32.load8_u - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $4 - i32.add - local.get $7 - local.get $1 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $0 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3472 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#map (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.get $0 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 3504 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $0 - local.get $1 - i32.load offset=4 - local.set $6 - i32.const 12 - i32.const 6 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $0 - i32.const 1 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 1 - i32.shl - local.tee $8 - i32.add - i32.load16_s - local.set $9 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $1 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store16 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $4 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3504 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 408 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - ) - (func $~lib/typedarray/Uint16Array#map (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.get $0 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 3536 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $0 - local.get $1 - i32.load offset=4 - local.set $6 - i32.const 12 - i32.const 7 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $0 - i32.const 1 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 1 - i32.shl - local.tee $8 - i32.add - i32.load16_u - local.set $9 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $1 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store16 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $4 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3536 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 536 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - ) - (func $~lib/typedarray/Int32Array#map (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.get $0 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 3568 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - local.get $1 - i32.load offset=4 - local.set $6 - i32.const 12 - i32.const 8 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $0 - i32.const 2 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 2 - i32.shl - local.tee $8 - i32.add - i32.load - local.set $9 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $1 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $4 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3568 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#map (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.get $0 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 3600 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - local.get $1 - i32.load offset=4 - local.set $6 - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $0 - i32.const 2 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 2 - i32.shl - local.tee $8 - i32.add - i32.load - local.set $9 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $1 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $4 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3600 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 792 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i64) - local.get $0 - local.get $0 - i64.mul - ) - (func $~lib/typedarray/Int64Array#map (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 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 3632 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - local.get $1 - i32.load offset=4 - local.set $6 - i32.const 12 - i32.const 10 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $0 - i32.const 3 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 3 - i32.shl - local.tee $8 - i32.add - i64.load - local.set $9 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $1 - local.get $5 - i32.load - call_indirect (type $i64_i32_i32_=>_i64) - i64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $4 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3632 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 920 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/typedarray/Uint64Array#map (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 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 3664 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - local.get $1 - i32.load offset=4 - local.set $6 - i32.const 12 - i32.const 11 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $0 - i32.const 3 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 3 - i32.shl - local.tee $8 - i32.add - i64.load - local.set $9 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $1 - local.get $5 - i32.load - call_indirect (type $i64_i32_i32_=>_i64) - i64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $4 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3664 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 1048 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result f32) - local.get $0 - local.get $0 - f32.mul - ) - (func $~lib/typedarray/Float32Array#map (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 f32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 3696 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - local.get $1 - i32.load offset=4 - local.set $6 - i32.const 12 - i32.const 12 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $0 - i32.const 2 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 2 - i32.shl - local.tee $8 - i32.add - f32.load - local.set $9 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $1 - local.get $5 - i32.load - call_indirect (type $f32_i32_i32_=>_f32) - f32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $4 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3696 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 1176 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result f64) - local.get $0 - local.get $0 - f64.mul - ) - (func $~lib/typedarray/Float64Array#map (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 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 3728 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - local.get $1 - i32.load offset=4 - local.set $6 - i32.const 12 - i32.const 13 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $0 - i32.const 3 - i32.shl - local.tee $7 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 3 - i32.shl - local.tee $8 - i32.add - f64.load - local.set $9 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $1 - local.get $5 - i32.load - call_indirect (type $f64_i32_i32_=>_f64) - f64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $4 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3728 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.gt_s - ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - local.get $1 - i32.load - local.tee $5 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $4 - i32.const 1 - i32.and - if - local.get $5 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - local.get $5 - i32.const 3 - i32.and - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - i32.const 12524 - i32.ge_u - if - local.get $1 - local.get $3 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $3 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/typedarray/Int8Array#filter (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.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3760 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=8 - local.set $0 - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $0 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $2 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $4 - local.get $0 - i32.lt_s - if - local.get $4 - local.get $8 - i32.add - i32.load8_s - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - local.get $6 - i32.add - local.get $7 - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - local.get $6 - local.get $1 - call $~lib/rt/tlsf/__realloc - local.tee $0 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - local.get $0 - i32.store offset=4 - local.get $3 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3760 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $0 - call $~lib/typedarray/Int8Array#filter - local.tee $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.gt_u - ) - (func $~lib/typedarray/Uint8Array#filter (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.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3792 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=8 - local.set $0 - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $0 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $2 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $4 - local.get $0 - i32.lt_s - if - local.get $4 - local.get $8 - i32.add - i32.load8_u - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - local.get $6 - i32.add - local.get $7 - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - local.get $6 - local.get $1 - call $~lib/rt/tlsf/__realloc - local.tee $0 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - local.get $0 - i32.store offset=4 - local.get $3 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3792 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - call $~lib/typedarray/Uint8Array#filter - local.tee $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#filter (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.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3824 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=8 - local.set $0 - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $0 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $2 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $4 - local.get $0 - i32.lt_s - if - local.get $4 - local.get $8 - i32.add - i32.load8_u - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - local.get $6 - i32.add - local.get $7 - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - local.get $6 - local.get $1 - call $~lib/rt/tlsf/__realloc - local.tee $0 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - local.get $0 - i32.store offset=4 - local.get $3 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3824 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#filter - local.tee $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.gt_s - ) - (func $~lib/typedarray/Int16Array#filter (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.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 3856 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $0 - i32.const 12 - i32.const 6 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - i32.const 1 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - if - local.get $8 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $4 - local.get $6 - local.get $1 - i32.const 1 - i32.shl - local.tee $0 - call $~lib/rt/tlsf/__realloc - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 3856 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - local.get $0 - call $~lib/typedarray/Int16Array#filter - local.tee $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.gt_u - ) - (func $~lib/typedarray/Uint16Array#filter (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.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 3888 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $0 - i32.const 12 - i32.const 7 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - i32.const 1 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - if - local.get $8 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $4 - local.get $6 - local.get $1 - i32.const 1 - i32.shl - local.tee $0 - call $~lib/rt/tlsf/__realloc - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 3888 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - call $~lib/typedarray/Uint16Array#filter - local.tee $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.gt_s - ) - (func $~lib/typedarray/Int32Array#filter (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.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 3920 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - i32.const 12 - i32.const 8 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - if - local.get $8 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $4 - local.get $6 - local.get $1 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/rt/tlsf/__realloc - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 3920 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $0 - call $~lib/typedarray/Int32Array#filter - local.tee $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.gt_u - ) - (func $~lib/typedarray/Uint32Array#filter (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.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 3952 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - if - local.get $8 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $4 - local.get $6 - local.get $1 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/rt/tlsf/__realloc - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 3952 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - call $~lib/typedarray/Uint32Array#filter - local.tee $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.const 2 - i64.gt_s - ) - (func $~lib/typedarray/Int64Array#filter (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 i64) - (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 3984 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - i32.const 12 - i32.const 10 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - i32.const 3 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - if - local.get $8 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $4 - local.get $6 - local.get $1 - i32.const 3 - i32.shl - local.tee $0 - call $~lib/rt/tlsf/__realloc - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 3984 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - local.get $0 - call $~lib/typedarray/Int64Array#filter - local.tee $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 3 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.const 2 - i64.gt_u - ) - (func $~lib/typedarray/Uint64Array#filter (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 i64) - (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 4016 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - i32.const 12 - i32.const 11 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - i32.const 3 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - if - local.get $8 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $4 - local.get $6 - local.get $1 - i32.const 3 - i32.shl - local.tee $0 - call $~lib/rt/tlsf/__realloc - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 4016 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - call $~lib/typedarray/Uint64Array#filter - local.tee $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 3 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f32.const 2 - f32.gt - ) - (func $~lib/typedarray/Float32Array#filter (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 f32) - (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 4048 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - i32.const 12 - i32.const 12 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - if - local.get $8 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $4 - local.get $6 - local.get $1 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/rt/tlsf/__realloc - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 4048 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 5 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - local.get $0 - call $~lib/typedarray/Float32Array#filter - local.tee $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 3 - f32.ne - if - i32.const 0 - i32.const 1312 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne - if - i32.const 0 - i32.const 1312 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne - if - i32.const 0 - i32.const 1312 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f64.const 2 - f64.gt - ) - (func $~lib/typedarray/Float64Array#filter (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 f64) - (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 4080 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - i32.const 12 - i32.const 13 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - i32.const 3 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - if - local.get $8 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $4 - local.get $6 - local.get $1 - i32.const 3 - i32.shl - local.tee $0 - call $~lib/rt/tlsf/__realloc - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 4080 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 5 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $0 - call $~lib/typedarray/Float64Array#filter - local.tee $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 3 - f64.ne - if - i32.const 0 - i32.const 1312 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - if - i32.const 0 - i32.const 1312 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.ne - if - i32.const 0 - i32.const 1312 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - ) - (func $~lib/typedarray/Int8Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.load8_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.eqz - ) - (func $~lib/typedarray/Uint8Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.eq - ) - (func $~lib/typedarray/Int16Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - i32.eqz - ) - (func $~lib/typedarray/Uint16Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.eq - ) - (func $~lib/typedarray/Int32Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.eqz - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.const 2 - i64.eq - ) - (func $~lib/typedarray/Int64Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.eqz - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f32.const 2 - f32.eq - ) - (func $~lib/typedarray/Float32Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f32.const 0 - f32.eq - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f64.const 2 - f64.eq - ) - (func $~lib/typedarray/Float64Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f64.const 0 - f64.eq - ) - (func $~lib/typedarray/Int8Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.load8_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const 4 - i32.eq - ) - (func $~lib/typedarray/Uint8Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Int16Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - i32.const 4 - i32.eq - ) - (func $~lib/typedarray/Uint16Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Int32Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 4 - i32.eq - ) - (func $~lib/typedarray/Int64Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.const 4 - i64.eq - ) - (func $~lib/typedarray/Float32Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f32.const 4 - f32.eq - ) - (func $~lib/typedarray/Float64Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f64.const 4 - f64.eq - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.rem_s - i32.eqz - local.set $0 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $~lib/typedarray/Int8Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.load8_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 1 - i32.and - i32.eqz - ) - (func $~lib/typedarray/Uint8Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.rem_s - i32.eqz - local.set $0 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $~lib/typedarray/Int16Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - i32.const 2 - i32.rem_s - i32.eqz - local.set $0 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $~lib/typedarray/Int32Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - i64.const 2 - i64.rem_s - i64.eqz - local.set $2 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Int64Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.const 1 - i64.and - i64.eqz - ) - (func $~lib/math/NativeMathf.mod (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const -2147483648 - i32.and - local.set $4 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $2 - i32.const 255 - i32.eq - if - local.get $0 - f32.const 2 - f32.mul - local.tee $0 - local.get $0 - f32.div - return - end - block $folding-inner0 - local.get $1 - i32.const 1 - i32.shl - local.tee $3 - i32.const -2147483648 - i32.le_u - if - local.get $3 - i32.const -2147483648 - i32.eq - br_if $folding-inner0 - local.get $0 - return - end - local.get $2 - if (result i32) - local.get $1 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $1 - i32.const 1 - local.get $2 - local.get $1 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $2 - i32.sub - i32.shl - end - local.set $1 - loop $while-continue|0 - local.get $2 - i32.const 128 - i32.gt_s - if - local.get $1 - i32.const 8388608 - i32.ge_u - if (result i32) - local.get $1 - i32.const 8388608 - i32.eq - br_if $folding-inner0 - local.get $1 - i32.const 8388608 - i32.sub - else - local.get $1 - end - i32.const 1 - i32.shl - local.set $1 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $1 - i32.const 8388608 - i32.ge_u - if - local.get $1 - i32.const 8388608 - i32.eq - br_if $folding-inner0 - local.get $1 - i32.const 8388608 - i32.sub - local.set $1 - end - local.get $1 - local.get $1 - i32.const 8 - i32.shl - i32.clz - local.tee $3 - i32.shl - local.set $1 - local.get $2 - local.get $3 - i32.sub - local.tee $2 - i32.const 0 - i32.gt_s - if (result i32) - local.get $1 - i32.const 8388608 - i32.sub - local.get $2 - i32.const 23 - i32.shl - i32.or - else - local.get $1 - i32.const 1 - local.get $2 - i32.sub - i32.shr_u - end - local.get $4 - i32.or - f32.reinterpret_i32 - return - end - f32.const 0 - local.get $0 - f32.mul - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/math/NativeMathf.mod - f32.const 0 - f32.eq - local.set $2 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Float32Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/math/NativeMath.mod (param $0 f64) (result f64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $1 - i64.const 63 - i64.shr_u - local.set $4 - local.get $1 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $2 - i64.const 2047 - i64.eq - if - local.get $0 - f64.const 2 - f64.mul - local.tee $0 - local.get $0 - f64.div - return - end - block $folding-inner0 - local.get $1 - i64.const 1 - i64.shl - local.tee $3 - i64.const -9223372036854775808 - i64.le_u - if - local.get $3 - i64.const -9223372036854775808 - i64.eq - br_if $folding-inner0 - local.get $0 - return - end - local.get $2 - i64.eqz - if (result i64) - local.get $1 - i64.const 0 - local.get $2 - local.get $1 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $2 - i64.sub - i64.const 1 - i64.add - i64.shl - else - local.get $1 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $1 - loop $while-continue|0 - local.get $2 - i64.const 1024 - i64.gt_s - if - local.get $1 - i64.const 4503599627370496 - i64.ge_u - if (result i64) - local.get $1 - i64.const 4503599627370496 - i64.eq - br_if $folding-inner0 - local.get $1 - i64.const 4503599627370496 - i64.sub - else - local.get $1 - end - i64.const 1 - i64.shl - local.set $1 - local.get $2 - i64.const 1 - i64.sub - local.set $2 - br $while-continue|0 - end - end - local.get $1 - i64.const 4503599627370496 - i64.ge_u - if - local.get $1 - i64.const 4503599627370496 - i64.eq - br_if $folding-inner0 - local.get $1 - i64.const 4503599627370496 - i64.sub - local.set $1 - end - local.get $1 - local.get $1 - i64.const 11 - i64.shl - i64.clz - local.tee $3 - i64.shl - local.set $1 - local.get $2 - local.get $3 - i64.sub - local.tee $2 - i64.const 0 - i64.gt_s - if (result i64) - local.get $1 - i64.const 4503599627370496 - i64.sub - local.get $2 - i64.const 52 - i64.shl - i64.or - else - local.get $1 - i64.const 0 - local.get $2 - i64.sub - i64.const 1 - i64.add - i64.shr_u - end - local.get $4 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 - return - end - f64.const 0 - local.get $0 - f64.mul - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/math/NativeMath.mod - f64.const 0 - f64.eq - local.set $2 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Float64Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 6256 - local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $3 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 6256 - local.get $1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6256 - local.get $1 - call $~lib/array/Array#__get - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $3 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 6256 - local.get $1 - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $3 - i32.load - call_indirect (type $i64_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 6256 - local.get $1 - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne - if - i32.const 0 - i32.const 1312 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 6256 - local.get $1 - call $~lib/array/Array#__get - f64.convert_i32_s - f64.ne - if - i32.const 0 - i32.const 1312 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_u - if - local.get $1 - local.get $4 - i32.add - local.tee $2 - i32.load8_s - local.set $5 - local.get $2 - local.get $0 - local.get $4 - i32.add - local.tee $2 - i32.load8_s - i32.store8 - local.get $2 - local.get $5 - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6716 - i32.load - local.tee $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $3 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Int8Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Int8Array#__get - i32.const 6704 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int8Array#subarray - local.tee $1 - call $~lib/typedarray/Int8Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6704 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_u - if - local.get $1 - local.get $4 - i32.add - local.tee $2 - i32.load8_u - local.set $5 - local.get $2 - local.get $0 - local.get $4 - i32.add - local.tee $2 - i32.load8_u - i32.store8 - local.get $2 - local.get $5 - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - ) - (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 4 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=8 - local.tee $0 - i32.const 4 - local.get $0 - i32.lt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $1 - local.get $0 - i32.lt_s - select - end - local.set $0 - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $1 - local.get $2 - local.get $3 - i32.load offset=4 - i32.add - i32.store offset=4 - local.get $1 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.sub - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6716 - i32.load - local.tee $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $3 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Uint8Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Uint8Array#__get - i32.const 6704 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint8Array#subarray - local.tee $1 - call $~lib/typedarray/Uint8Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6704 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 4 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=8 - local.tee $0 - i32.const 4 - local.get $0 - i32.lt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $1 - local.get $0 - i32.lt_s - select - end - local.set $0 - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $1 - local.get $2 - local.get $3 - i32.load offset=4 - i32.add - i32.store offset=4 - local.get $1 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.sub - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6716 - i32.load - local.tee $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Uint8Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6704 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.tee $1 - call $~lib/typedarray/Uint8Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6704 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_u - if - local.get $4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.load16_s - local.set $5 - local.get $2 - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.load16_s - i32.store16 - local.get $2 - local.get $5 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - ) - (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 4 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $0 - i32.const 4 - local.get $0 - i32.lt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $1 - local.get $0 - i32.lt_s - select - end - local.set $0 - i32.const 12 - i32.const 6 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $1 - local.get $3 - i32.load offset=4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $1 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6716 - i32.load - local.tee $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $3 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Int16Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Int16Array#__get - i32.const 6704 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 8 - call $~lib/typedarray/Int16Array#subarray - local.tee $1 - call $~lib/typedarray/Int16Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6704 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_u - if - local.get $4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.load16_u - local.set $5 - local.get $2 - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.load16_u - i32.store16 - local.get $2 - local.get $5 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - ) - (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 4 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $0 - i32.const 4 - local.get $0 - i32.lt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $1 - local.get $0 - i32.lt_s - select - end - local.set $0 - i32.const 12 - i32.const 7 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $1 - local.get $3 - i32.load offset=4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $1 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6716 - i32.load - local.tee $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $3 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Uint16Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Uint16Array#__get - i32.const 6704 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint16Array#subarray - local.tee $1 - call $~lib/typedarray/Uint16Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6704 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_u - if - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - local.set $5 - local.get $2 - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store - local.get $2 - local.get $5 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6716 - i32.load - local.tee $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $3 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Int32Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Int32Array#__get - i32.const 6704 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int32Array#subarray - local.tee $1 - call $~lib/typedarray/Int32Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Int32Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6704 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 4 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $0 - i32.const 4 - local.get $0 - i32.lt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $1 - local.get $0 - i32.lt_s - select - end - local.set $0 - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $1 - local.get $3 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $1 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6716 - i32.load - local.tee $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $3 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Int32Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - i32.const 6704 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint32Array#subarray - local.tee $1 - call $~lib/typedarray/Int32Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6704 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_u - if - local.get $4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $2 - i64.load - local.set $5 - local.get $2 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.tee $2 - i64.load - i64.store - local.get $2 - local.get $5 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - ) - (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 4 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $0 - i32.const 4 - local.get $0 - i32.lt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $1 - local.get $0 - i32.lt_s - select - end - local.set $0 - i32.const 12 - i32.const 10 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $1 - local.get $3 - i32.load offset=4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $1 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6716 - i32.load - local.tee $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $3 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Int64Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Int64Array#__get - i32.const 6704 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 8 - call $~lib/typedarray/Int64Array#subarray - local.tee $1 - call $~lib/typedarray/Int64Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 7 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 6 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6704 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 4 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $0 - i32.const 4 - local.get $0 - i32.lt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $1 - local.get $0 - i32.lt_s - select - end - local.set $0 - i32.const 12 - i32.const 11 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $1 - local.get $3 - i32.load offset=4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $1 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6716 - i32.load - local.tee $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $3 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Int64Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - i32.const 6704 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint64Array#subarray - local.tee $1 - call $~lib/typedarray/Int64Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 7 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 6 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6704 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_u - if - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $2 - f32.load - local.set $5 - local.get $2 - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.tee $2 - f32.load - f32.store - local.get $2 - local.get $5 - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - ) - (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 4 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $0 - i32.const 4 - local.get $0 - i32.lt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $1 - local.get $0 - i32.lt_s - select - end - local.set $0 - i32.const 12 - i32.const 12 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $1 - local.get $3 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $1 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6716 - i32.load - local.tee $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $3 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Float32Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Float32Array#__get - i32.const 6704 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne - if - i32.const 0 - i32.const 1312 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 8 - call $~lib/typedarray/Float32Array#subarray - local.tee $1 - call $~lib/typedarray/Float32Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 8 - f32.ne - if - i32.const 0 - i32.const 1312 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 7 - f32.ne - if - i32.const 0 - i32.const 1312 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 6 - f32.ne - if - i32.const 0 - i32.const 1312 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne - if - i32.const 0 - i32.const 1312 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6704 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $0 - i32.lt_u - if - local.get $4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $2 - f64.load - local.set $5 - local.get $2 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.tee $2 - f64.load - f64.store - local.get $2 - local.get $5 - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6716 - i32.load - local.tee $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $3 - local.get $0 - i32.const 6704 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Float64Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Float64Array#__get - i32.const 6704 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - f64.convert_i32_s - f64.ne - if - i32.const 0 - i32.const 1312 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Float64Array#subarray - local.tee $1 - call $~lib/typedarray/Float64Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 8 - f64.ne - if - i32.const 0 - i32.const 1312 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.ne - if - i32.const 0 - i32.const 1312 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.ne - if - i32.const 0 - i32.const 1312 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.ne - if - i32.const 0 - i32.const 1312 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6704 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $2 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Int8Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - local.tee $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Int8Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=8 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int8Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6812 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int8Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6800 - local.get $1 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1312 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int8Array#subarray - local.tee $1 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6800 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6812 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6800 - local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1312 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 9 - call $~lib/typedarray/Uint8Array#subarray - local.tee $1 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6800 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6812 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6800 - local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1312 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 9 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.tee $1 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6800 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $2 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Int16Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Int16Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6812 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6800 - local.get $1 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1312 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 11 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 9 - call $~lib/typedarray/Int16Array#subarray - local.tee $1 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6800 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6812 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Uint16Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6800 - local.get $1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1312 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 11 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 9 - call $~lib/typedarray/Uint16Array#subarray - local.tee $1 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6800 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $2 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Int32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Int32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int32Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6812 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6800 - local.get $1 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1312 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 11 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int32Array#subarray - local.tee $1 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6800 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6812 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Uint32Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6800 - local.get $1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1312 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 11 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 9 - call $~lib/typedarray/Uint32Array#subarray - local.tee $1 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6800 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $2 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i64.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Int64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i64.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Int64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6812 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6800 - local.get $1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i64.const 0 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const -1 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1312 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const 11 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const -1 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const -11 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 9 - call $~lib/typedarray/Int64Array#subarray - local.tee $1 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 9 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 10 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 5 - i32.const 1 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 5 - i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6800 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6812 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Uint64Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6800 - local.get $1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i64.const 0 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const -1 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1312 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const 11 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const -1 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const -11 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 9 - call $~lib/typedarray/Uint64Array#subarray - local.tee $1 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 9 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 10 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 5 - i32.const 1 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 5 - i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6800 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $2 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $1 - f32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Float32Array#lastIndexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $1 - f32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Float32Array#lastIndexOf@varargs (param $0 i32) (param $1 f32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float32Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6812 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Float32Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6800 - local.get $1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - f32.const 0 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 11 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const -1 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 3 - i32.const 2 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 3 - i32.const 3 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - i32.const 10 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - i32.const -100 - call $~lib/typedarray/Float32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - f32.const 0 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1312 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - f32.const 11 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - f32.const -1 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - f32.const 3 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 3 - i32.const 3 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 3 - i32.const 2 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - i32.const 100 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - i32.const -10 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 1 - i32.const -11 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 9 - call $~lib/typedarray/Float32Array#subarray - local.tee $1 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 4 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 5 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 9 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 10 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 11 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 5 - i32.const 1 - call $~lib/typedarray/Float32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 5 - i32.const 2 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6800 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $2 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $1 - f64.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Float64Array#lastIndexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $1 - f64.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Float64Array#lastIndexOf@varargs (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6812 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Float64Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6800 - local.get $1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - f64.const 0 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 11 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const -1 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 3 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 3 - i32.const 2 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 3 - i32.const 3 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 3 - i32.const 4 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - i32.const 10 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - i32.const -100 - call $~lib/typedarray/Float64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - f64.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1312 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - f64.const 11 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - f64.const -1 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - f64.const 3 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 3 - i32.const 4 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 3 - i32.const 3 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 3 - i32.const 2 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - i32.const 100 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - i32.const -10 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.const 1 - i32.const -11 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Float64Array#subarray - local.tee $1 - f64.const 3 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 4 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - if - i32.const 0 - i32.const 1312 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 5 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 9 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 10 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 11 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 5 - i32.const 1 - call $~lib/typedarray/Float64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 5 - i32.const 2 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6800 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $do-continue|0 - local.get $1 - i32.const 10 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 - local.get $1 - br_if $do-continue|0 - end - ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - i32.const 7040 - return - end - local.get $0 - i32.const 31 - i32.shr_u - local.tee $1 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $3 - call $~lib/util/number/utoa_dec_simple - local.get $1 - if - local.get $2 - i32.const 45 - i32.store16 - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $2 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.tee $2 - call $~lib/util/number/decimalCount32 - i32.add - local.set $1 - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - i32.const 0 - local.get $2 - i32.lt_s - select - local.tee $3 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - local.tee $1 - local.get $3 - local.get $1 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - local.get $1 - local.get $3 - local.get $1 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $1 - i32.sub - local.tee $3 - i32.eqz - if - i32.const 6832 - return - end - i32.const 0 - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.eq - local.get $1 - select - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $3 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 7168 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6832 - return - end - local.get $4 - i32.eqz - if - local.get $0 - i32.load8_s - call $~lib/util/number/itoa32 - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - call $~lib/string/String#get:length - local.tee $5 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Int8Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - call $~lib/util/string/joinIntegerArray - i32.const 7168 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - if - local.get $3 - i32.load16_u - local.tee $0 - local.get $1 - i32.load16_u - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - local.get $6 - i32.sub - return - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/util/number/utoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - i32.const 7040 - return - end - local.get $0 - call $~lib/util/number/decimalCount32 - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 255 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $1 - i32.const 255 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 7168 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6832 - return - end - local.get $4 - i32.eqz - if - local.get $0 - i32.load8_u - call $~lib/util/number/utoa32 - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - call $~lib/string/String#get:length - local.tee $5 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Uint8Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - call $~lib/util/string/joinIntegerArray - i32.const 7168 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $2 - call $~lib/util/number/decimalCount32 - i32.add - local.set $1 - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 7168 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6832 - return - end - local.get $4 - i32.eqz - if - local.get $0 - i32.load16_s - call $~lib/util/number/itoa32 - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - call $~lib/string/String#get:length - local.tee $5 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Int16Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - call $~lib/util/string/joinIntegerArray - i32.const 7168 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $1 - i32.const 65535 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 7168 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6832 - return - end - local.get $4 - i32.eqz - if - local.get $0 - i32.load16_u - call $~lib/util/number/utoa32 - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - call $~lib/string/String#get:length - local.tee $5 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Uint16Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - call $~lib/util/string/joinIntegerArray - i32.const 7168 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $0 - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 7168 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6832 - return - end - local.get $4 - i32.eqz - if - local.get $0 - i32.load - call $~lib/util/number/itoa32 - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - call $~lib/string/String#get:length - local.tee $5 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Int32Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - call $~lib/util/string/joinIntegerArray - i32.const 7168 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount32 - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $0 - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 7168 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6832 - return - end - local.get $4 - i32.eqz - if - local.get $0 - i32.load - call $~lib/util/number/utoa32 - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - call $~lib/string/String#get:length - local.tee $5 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Uint32Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - call $~lib/util/string/joinIntegerArray - i32.const 7168 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 - i64.const 1000000000000000 - i64.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - loop $do-continue|0 - local.get $1 - i64.const 10 - i64.rem_u - i32.wrap_i64 - local.set $3 - local.get $1 - i64.const 10 - i64.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 - local.get $1 - i64.const 0 - i64.ne - br_if $do-continue|0 - end - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i64.const 0 - i64.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i64.const 0 - local.get $1 - i64.sub - local.set $1 - end - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 48 - i64.or - i64.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $1 - i64.const 4294967295 - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.tee $3 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $2 - local.get $0 - local.get $3 - local.get $2 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount64High - local.get $2 - i32.add - local.tee $2 - call $~lib/util/number/utoa_dec_simple - end - local.get $2 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 7168 - call $~lib/rt/pure/__retain - local.set $4 - local.get $1 - i32.const 1 - i32.sub - local.tee $5 - i32.const 0 - i32.lt_s - if - local.get $4 - call $~lib/rt/pure/__release - i32.const 6832 - return - end - local.get $5 - i32.eqz - if - block $__inlined_func$~lib/util/number/itoa64 (result i32) - i32.const 7040 - local.get $0 - i64.load - i32.wrap_i64 - i64.extend_i32_s - local.tee $3 - i64.eqz - br_if $__inlined_func$~lib/util/number/itoa64 - drop - local.get $3 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $0 - if - i64.const 0 - local.get $3 - i64.sub - local.set $3 - end - local.get $3 - i64.const 4294967295 - i64.le_u - if - local.get $3 - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.get $0 - i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $2 - local.get $5 - call $~lib/util/number/utoa_dec_simple - else - local.get $3 - call $~lib/util/number/decimalCount64High - local.get $0 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $3 - local.get $2 - call $~lib/util/number/utoa_dec_simple - end - local.get $0 - if - local.get $1 - i32.const 45 - i32.store16 - end - local.get $1 - call $~lib/rt/pure/__retain - end - local.get $4 - call $~lib/rt/pure/__release - return - end - local.get $5 - local.get $4 - call $~lib/string/String#get:length - local.tee $6 - i32.const 21 - i32.add - i32.mul - i32.const 21 - i32.add - local.tee $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $7 - local.get $5 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $6 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $4 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $6 - i32.add - local.set $2 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $8 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - call $~lib/util/string/joinIntegerArray - i32.const 7168 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $0 - local.get $1 - i64.const 48 - i64.or - i64.store16 - i32.const 1 - return - end - local.get $1 - i64.const 4294967295 - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.tee $3 - call $~lib/util/number/decimalCount32 - local.set $2 - local.get $0 - local.get $3 - local.get $2 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount64High - local.tee $2 - call $~lib/util/number/utoa_dec_simple - end - local.get $2 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 7168 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6832 - return - end - local.get $4 - i32.eqz - if - block $__inlined_func$~lib/util/number/utoa64 (result i32) - i32.const 7040 - local.get $0 - i64.load - local.tee $5 - i64.eqz - br_if $__inlined_func$~lib/util/number/utoa64 - drop - local.get $5 - i64.const 4294967295 - i64.le_u - if - local.get $5 - i32.wrap_i64 - local.tee $1 - call $~lib/util/number/decimalCount32 - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa_dec_simple - else - local.get $5 - call $~lib/util/number/decimalCount64High - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $5 - local.get $1 - call $~lib/util/number/utoa_dec_simple - end - local.get $0 - call $~lib/rt/pure/__retain - end - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - call $~lib/string/String#get:length - local.tee $6 - i32.const 20 - i32.add - i32.mul - i32.const 20 - i32.add - local.tee $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $7 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $6 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $6 - i32.add - local.set $2 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $8 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - call $~lib/util/string/joinIntegerArray - i32.const 7168 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i64) - (local $11 i32) - (local $12 i64) - (local $13 i64) - local.get $3 - local.get $1 - i64.sub - local.set $8 - local.get $3 - i64.const 1 - i32.const 0 - local.get $4 - i32.sub - local.tee $11 - i64.extend_i32_s - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $12 - i64.and - local.set $7 - local.get $3 - local.get $11 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $9 - loop $while-continue|0 - local.get $9 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $9 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $2 - i32.const 1000000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100 - i32.div_u - local.set $4 - local.get $2 - i32.const 100 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10 - i32.div_u - local.set $4 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - local.set $4 - i32.const 0 - local.set $2 - br $break|1 - end - i32.const 0 - local.set $4 - end - local.get $4 - local.get $6 - i32.or - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $7 - local.get $2 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - i64.shl - i64.add - local.tee $1 - local.get $5 - i64.le_u - if - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 2 - i32.shl - i32.const 8248 - i32.add - i64.load32_u - local.get $11 - i64.extend_i32_s - i64.shl - local.set $10 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|3 - i32.const 1 - local.get $8 - local.get $1 - i64.sub - local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $10 - i64.ge_u - i32.const 0 - local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - return - end - br $while-continue|0 - end - end - local.get $11 - i64.extend_i32_s - local.set $13 - loop $while-continue|4 (result i32) - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $7 - i64.const 10 - i64.mul - local.tee $3 - local.get $13 - i64.shr_u - local.tee $1 - local.get $6 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $3 - local.get $12 - i64.and - local.tee $7 - local.get $5 - i64.ge_u - br_if $while-continue|4 - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - local.get $8 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 8248 - i32.add - i64.load32_u - i64.mul - local.set $8 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|6 - i32.const 1 - local.get $8 - local.get $1 - i64.sub - local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $10 - i64.ge_u - i32.const 0 - local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|6 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 - i32.const -6 - local.get $3 - i32.lt_s - select - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.add - end - end - end - end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - f64.const 0 - f64.lt - local.tee $9 - if (result f64) - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - else - local.get $1 - end - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $2 - i64.const 4503599627370495 - i64.and - i64.add - local.tee $3 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $4 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.tee $8 - i32.const 1 - i32.sub - local.get $4 - i32.sub - local.set $4 - local.get $3 - local.get $3 - i64.const 4503599627370496 - i64.eq - i32.const 1 - i32.add - local.tee $10 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $8 - local.get $10 - i32.sub - local.get $4 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $4 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_f64_s - local.tee $4 - local.get $4 - f64.convert_i32_s - local.get $1 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - local.tee $10 - i32.sub - global.set $~lib/util/number/_K - local.get $10 - i32.const 7376 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $4 - i32.const 1 - i32.shl - i32.const 8072 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $6 - i64.const 4294967295 - i64.and - local.set $2 - local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_plus - local.tee $5 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $5 - i64.const 4294967295 - i64.and - local.tee $5 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $5 - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - local.get $3 - local.get $3 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $8 - local.get $0 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $4 - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $6 - global.get $~lib/util/number/_frc_minus - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $5 - i64.mul - local.get $2 - local.get $5 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $2 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $3 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul - local.get $3 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $9 - call $~lib/util/number/genDigits - local.get $9 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $9 - i32.add - ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - f64.const 0 - f64.eq - if - i32.const 7248 - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne - if - local.get $0 - local.get $0 - f64.ne - if - i32.const 7280 - return - end - i32.const 7312 - i32.const 7360 - local.get $0 - f64.const 0 - f64.lt - select - call $~lib/rt/pure/__retain - return - end - i32.const 56 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $0 - call $~lib/util/number/dtoa_core - local.tee $2 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - return - end - local.get $1 - local.get $2 - call $~lib/string/String#substring - call $~lib/rt/tlsf/maybeInitialize - local.get $1 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - local.get $1 - f64.const 0 - f64.eq - if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - return - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne - if - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - return - else - local.get $1 - f64.const 0 - f64.lt - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $2 - i32.const 8 - i32.add - return - end - unreachable - end - local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core - ) - (func $~lib/util/string/joinFloatArray (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) - i32.const 7168 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6832 - return - end - local.get $4 - i32.eqz - if - local.get $0 - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - call $~lib/string/String#get:length - local.tee $5 - i32.const 28 - i32.add - i32.mul - i32.const 28 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Float32Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - call $~lib/util/string/joinFloatArray - i32.const 7168 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/joinFloatArray (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) - i32.const 7168 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6832 - return - end - local.get $4 - i32.eqz - if - local.get $0 - f64.load - call $~lib/util/number/dtoa - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - call $~lib/string/String#get:length - local.tee $5 - i32.const 28 - i32.add - i32.mul - i32.const 28 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $6 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - call $~lib/util/string/joinFloatArray - i32.const 7168 - call $~lib/rt/pure/__release - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 49 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $1 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - call $~lib/rt/pure/__retain - ) - (func $~lib/typedarray/Uint8Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 16 - i32.sub - i32.load offset=12 - local.tee $4 - i32.gt_u - if - i32.const 1376 - i32.const 1440 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - i32.const -1 - i32.eq - if (result i32) - local.get $4 - local.get $1 - i32.sub - else - i32.const 1040 - i32.const 1440 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.set $0 - else - local.get $2 - local.tee $0 - local.get $1 - i32.add - local.get $4 - i32.gt_s - if - i32.const 1040 - i32.const 1440 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $3 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $0 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $3 - i32.add - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint8Array.wrap - ) - (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $0 - local.get $1 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8444 - i32.load - local.tee $3 - call $~lib/typedarray/Int8Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $2 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 8432 - local.get $0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - i32.load - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $2 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - local.get $4 - call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.tee $1 - local.set $7 - i32.const 0 - local.get $1 - i32.gt_u - if - i32.const 1376 - i32.const 1440 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $1 - local.get $7 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Int8Array#__get - local.get $1 - local.get $0 - call $~lib/typedarray/Int8Array#__get - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8432 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 8444 - i32.load - local.tee $2 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8432 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $3 - i32.const 1 - global.set $~argumentsLength - local.get $3 - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.set $4 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint8Array#__get - local.get $4 - local.get $0 - call $~lib/typedarray/Uint8Array#__get - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8432 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8444 - i32.load - local.tee $3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $2 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 8432 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - i32.load - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $2 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - local.get $4 - call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.tee $1 - local.set $7 - i32.const 0 - local.get $1 - i32.gt_u - if - i32.const 1376 - i32.const 1440 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $1 - local.get $7 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - local.get $1 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8432 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8444 - i32.load - local.tee $3 - call $~lib/typedarray/Int16Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8432 - local.get $0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - local.get $4 - call $~lib/rt/pure/__retain - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.tee $5 - i32.gt_u - if - i32.const 1376 - i32.const 1440 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.and - if - i32.const 1040 - i32.const 1440 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 6 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $5 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Int16Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Int16Array#__get - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $6 - call $~lib/rt/pure/__release - i32.const 8432 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8444 - i32.load - local.tee $3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8432 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - local.get $4 - call $~lib/rt/pure/__retain - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.tee $5 - i32.gt_u - if - i32.const 1376 - i32.const 1440 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.and - if - i32.const 1040 - i32.const 1440 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 7 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $5 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint16Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Uint16Array#__get - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $6 - call $~lib/rt/pure/__release - i32.const 8432 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,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) - i32.const 8444 - i32.load - local.tee $3 - call $~lib/typedarray/Int32Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8432 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - local.get $4 - call $~lib/rt/pure/__retain - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.tee $5 - i32.gt_u - if - i32.const 1376 - i32.const 1440 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 3 - i32.and - if - i32.const 1040 - i32.const 1440 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 8 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $5 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Int32Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Int32Array#__get - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $6 - call $~lib/rt/pure/__release - i32.const 8432 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8444 - i32.load - local.tee $3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8432 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - local.get $4 - call $~lib/rt/pure/__retain - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.tee $5 - i32.gt_u - if - i32.const 1376 - i32.const 1440 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 3 - i32.and - if - i32.const 1040 - i32.const 1440 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $5 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $6 - call $~lib/rt/pure/__release - i32.const 8432 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8444 - i32.load - local.tee $3 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8432 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - local.get $4 - call $~lib/rt/pure/__retain - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.tee $5 - i32.gt_u - if - i32.const 1376 - i32.const 1440 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 7 - i32.and - if - i32.const 1040 - i32.const 1440 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 10 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $5 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Int64Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Int64Array#__get - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $6 - call $~lib/rt/pure/__release - i32.const 8432 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8444 - i32.load - local.tee $3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8432 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - local.get $4 - call $~lib/rt/pure/__retain - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.tee $5 - i32.gt_u - if - i32.const 1376 - i32.const 1440 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 7 - i32.and - if - i32.const 1040 - i32.const 1440 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 11 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $5 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - i64.ne - if - i32.const 0 - i32.const 1312 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $6 - call $~lib/rt/pure/__release - i32.const 8432 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8444 - i32.load - local.tee $3 - call $~lib/typedarray/Float32Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8432 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - local.get $4 - call $~lib/rt/pure/__retain - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.tee $5 - i32.gt_u - if - i32.const 1376 - i32.const 1440 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 3 - i32.and - if - i32.const 1040 - i32.const 1440 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 12 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $5 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Float32Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Float32Array#__get - f32.ne - if - i32.const 0 - i32.const 1312 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $6 - call $~lib/rt/pure/__release - i32.const 8432 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8444 - i32.load - local.tee $3 - call $~lib/typedarray/Float64Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8432 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $1 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - local.get $4 - call $~lib/rt/pure/__retain - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - i32.sub - i32.load offset=12 - local.tee $5 - i32.gt_u - if - i32.const 1376 - i32.const 1440 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 7 - i32.and - if - i32.const 1040 - i32.const 1440 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - i32.const 12 - i32.const 13 - call $~lib/rt/tlsf/__alloc - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $5 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Float64Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Float64Array#__get - f64.ne - if - i32.const 0 - i32.const 1312 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $6 - call $~lib/rt/pure/__release - i32.const 8432 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8496 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $1 - local.get $3 - i32.add - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8496 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_s - local.tee $4 - local.get $1 - local.get $2 - call $~lib/array/Array#__uget - local.tee $5 - i32.ne - if - i32.const 8768 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1312 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8560 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 3 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 3 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - local.get $4 - i32.add - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $3 - i32.trunc_f32_s - else - i32.const 0 - end - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8560 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 6 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.get $5 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8640 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - local.get $4 - i32.add - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $3 - i32.trunc_f64_s - else - i32.const 0 - end - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8640 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 4 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=12 - i32.const 7 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 7 - i32.add - local.get $1 - i32.load offset=4 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - (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) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Int8Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 8736 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 8816 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 8848 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 8880 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $3 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 8912 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_u - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Uint8Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/array/Array#__uget - local.tee $5 - i32.ne - if - i32.const 8976 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_u - local.get $5 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1312 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8560 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 3 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 3 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - local.get $4 - i32.add - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $3 - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8560 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8640 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - local.get $4 - i32.add - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $3 - i32.trunc_f64_u - else - i32.const 0 - end - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8640 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - (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) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 8944 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $0 - call $~lib/typedarray/Uint8Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9024 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9056 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $0 - call $~lib/typedarray/Uint8Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9088 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $3 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9120 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8496 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - local.get $4 - i32.add - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $3 - i32.const 255 - local.get $3 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8496 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Uint8Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/array/Array#__uget - local.tee $5 - i32.ne - if - i32.const 9184 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_u - local.get $5 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1312 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8560 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 3 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 3 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - local.get $4 - i32.add - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $3 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8560 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - i32.const 0 - i32.lt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.add - local.get $1 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - local.set $2 - local.get $0 - i32.load offset=4 - local.set $6 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $7 - loop $for-loop|0 - local.get $3 - local.get $7 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.get $6 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.tee $5 - i32.wrap_i64 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i64.extend_i32_s - local.get $5 - i32.const 255 - local.get $5 - i32.wrap_i64 - i32.sub - i32.const 31 - i32.shr_s - i64.extend_i32_s - i64.or - i64.and - i64.store8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8640 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - local.get $4 - i32.add - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - if (result i32) - f64.const 0 - f64.const 255 - local.get $3 - f64.min - f64.max - i32.trunc_f64_u - else - i32.const 0 - end - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8640 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - i32.const 0 - i32.lt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.add - local.get $1 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - local.set $5 - local.get $0 - i32.load offset=4 - local.set $6 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $7 - loop $for-loop|0 - local.get $3 - local.get $7 - i32.lt_s - if - local.get $3 - local.get $5 - i32.add - local.get $6 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.tee $2 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $2 - i32.const 255 - local.get $2 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 7 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 7 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - local.get $4 - i32.add - local.get $1 - local.get $5 - i32.add - i32.load8_s - local.tee $3 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $3 - i32.const 255 - local.get $3 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - (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) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9152 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9248 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $0 - local.get $3 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9280 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $10 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9312 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__retain - local.set $6 - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $6 - call $~lib/rt/pure/__retain - local.tee $5 - i32.load offset=8 - local.get $1 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - local.get $4 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9344 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8496 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8496 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Int16Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#__uget - local.tee $5 - i32.ne - if - i32.const 9424 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1312 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8560 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 3 - i32.add - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 6 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $3 - i32.trunc_f32_s - else - i32.const 0 - end - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8560 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 12 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8640 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $3 - i32.trunc_f64_s - else - i32.const 0 - end - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8640 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.add - i32.load8_u - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - local.get $1 - i32.load offset=4 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 7 - i32.add - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 14 - i32.add - local.set $3 - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_s - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> - (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) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9376 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9472 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $0 - local.get $2 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> - local.get $0 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9520 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9568 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $3 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9616 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Uint16Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint16Array#__uget - local.tee $5 - i32.ne - if - i32.const 9712 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_u - local.get $5 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1312 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8560 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 3 - i32.add - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 6 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $3 - i32.trunc_f32_u - else - i32.const 0 - end - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8560 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8640 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $3 - i32.trunc_f64_u - else - i32.const 0 - end - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8640 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> - (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) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Uint16Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 9664 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $0 - call $~lib/typedarray/Uint16Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 9760 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $0 - local.get $2 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> - local.get $0 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 9808 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $0 - call $~lib/typedarray/Uint16Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 9856 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $3 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 9904 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8496 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=12 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8496 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/array/Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/array/Array#__uget - local.tee $5 - i32.ne - if - i32.const 10016 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1312 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8560 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=12 - i32.const 3 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 12 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - local.tee $7 - i32.add - local.get $5 - local.get $7 - i32.add - f32.load - local.tee $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $3 - i32.trunc_f32_s - else - i32.const 0 - end - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8560 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store32 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8640 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $3 - i32.trunc_f64_s - else - i32.const 0 - end - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8640 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.add - i32.load8_u - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 16 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 7 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 28 - i32.add - local.set $3 - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_s - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - (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) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Int32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 9952 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10064 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> - local.get $0 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10128 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10192 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $3 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> - local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10256 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/array/Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/array/Array#__uget - local.tee $5 - i32.ne - if - i32.const 10384 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_u - local.get $5 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1312 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8560 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=12 - i32.const 3 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 12 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - local.tee $7 - i32.add - local.get $5 - local.get $7 - i32.add - f32.load - local.tee $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $3 - i32.trunc_f32_u - else - i32.const 0 - end - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8560 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8640 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $3 - i32.trunc_f64_u - else - i32.const 0 - end - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8640 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - (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) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Uint32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10320 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $0 - call $~lib/typedarray/Uint32Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10432 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> - local.get $0 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10496 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $0 - call $~lib/typedarray/Uint32Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10560 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $3 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> - local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10624 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8496 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i64.load32_s - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8496 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.tee $5 - i64.ne - if - i32.const 10784 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i64_s - local.get $5 - f64.convert_i64_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1312 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8560 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 3 - i32.add - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - if (result i64) - local.get $3 - i64.trunc_f32_s - else - i64.const 0 - end - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8560 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 48 - i32.add - local.get $1 - i32.load offset=4 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8640 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=12 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 16 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - local.tee $7 - i32.add - local.get $5 - local.get $7 - i32.add - f64.load - local.tee $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - if (result i64) - local.get $3 - i64.trunc_f64_s - else - i64.const 0 - end - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8640 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.add - i64.load8_u - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 32 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - i32.add - i64.load16_s - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 7 - i32.add - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 56 - i32.add - local.set $3 - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $1 - local.get $4 - i32.add - i64.load8_s - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - (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) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 10688 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 10832 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $0 - local.get $2 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> - local.get $0 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 10928 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11024 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $3 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11120 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.tee $5 - i64.ne - if - i32.const 11312 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i64_u - local.get $5 - f64.convert_i64_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1312 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8560 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 3 - i32.add - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - if (result i64) - local.get $3 - i64.trunc_f32_u - else - i64.const 0 - end - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8560 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8640 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=12 - i32.const 2 - i32.add - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 16 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - local.tee $7 - i32.add - local.get $5 - local.get $7 - i32.add - f64.load - local.tee $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - if (result i64) - local.get $3 - i64.trunc_f64_u - else - i64.const 0 - end - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8640 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - (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) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Uint64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 11216 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $0 - call $~lib/typedarray/Uint64Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 11360 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $0 - local.get $2 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> - local.get $0 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 11456 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $0 - call $~lib/typedarray/Uint64Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 11552 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $3 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $0 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 11648 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Float32Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Float32Array#__uget - local.tee $5 - f32.ne - if - i32.const 11808 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.promote_f32 - local.get $5 - f64.promote_f32 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1312 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - f32.convert_i64_s - f32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 16 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - f32.convert_i32_s - f32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - (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) - (local $14 i32) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $7 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $7 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $8 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $8 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $8 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Float32Array#constructor - local.tee $14 - call $~lib/rt/pure/__retain - local.tee $3 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner0 - i32.const 8496 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - local.set $9 - local.get $2 - i32.load offset=4 - local.set $10 - local.get $2 - i32.load offset=12 - local.set $11 - loop $for-loop|0 - local.get $0 - local.get $11 - i32.lt_s - if - local.get $9 - local.get $0 - i32.const 2 - i32.shl - local.tee $6 - i32.add - local.get $6 - local.get $10 - i32.add - i32.load - f32.convert_i32_s - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8496 - call $~lib/rt/pure/__release - local.get $3 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 11744 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8560 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=12 - i32.const 3 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - i32.const 12 - i32.add - local.get $1 - i32.load offset=4 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8560 - call $~lib/rt/pure/__release - local.get $3 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 11856 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $10 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - local.get $3 - local.get $7 - call $~lib/typedarray/Float32Array#set<~lib/typedarray/Int64Array> - local.get $3 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 11920 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $11 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - i32.const 0 - local.set $0 - local.get $5 - call $~lib/rt/pure/__retain - local.set $4 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=8 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=4 - local.set $12 - local.get $2 - i32.load offset=8 - local.set $13 - loop $for-loop|00 - local.get $0 - local.get $13 - i32.lt_s - if - local.get $6 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $12 - i32.add - i32.load8_u - f32.convert_i32_u - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - local.get $8 - call $~lib/typedarray/Float32Array#set<~lib/typedarray/Int16Array> - i32.const 0 - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 7 - i32.add - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 28 - i32.add - local.set $6 - local.get $2 - i32.load offset=4 - local.set $12 - local.get $2 - i32.load offset=12 - local.set $13 - loop $for-loop|01 - local.get $0 - local.get $13 - i32.lt_s - if - local.get $6 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $12 - i32.add - i32.load8_s - f32.convert_i32_s - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|01 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release - local.get $3 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 11984 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - return - end - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Float64Array#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/typedarray/Float64Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array#__uget - local.tee $5 - f64.ne - if - i32.const 12144 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - local.get $5 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1312 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Int64Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 48 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - local.tee $7 - i32.add - local.get $5 - local.get $7 - i32.add - i64.load - f64.convert_i64_s - f64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 32 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - f64.convert_i32_s - f64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - (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) - (local $14 i32) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $7 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $7 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $8 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $8 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $8 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Float64Array#constructor - local.tee $13 - call $~lib/rt/pure/__retain - local.tee $3 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner1 - i32.const 8496 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner1 - local.get $1 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=4 - local.set $9 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $9 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - f64.convert_i32_s - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8496 - call $~lib/rt/pure/__release - local.get $3 - i32.const 10 - i32.const 3 - i32.const 62 - i32.const 12048 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - i32.const 0 - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 8560 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 3 - i32.add - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner1 - local.get $1 - i32.load offset=4 - i32.const 24 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $10 - loop $for-loop|00 - local.get $0 - local.get $10 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $6 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - f64.promote_f32 - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8560 - call $~lib/rt/pure/__release - local.get $3 - i32.const 10 - i32.const 3 - i32.const 62 - i32.const 12192 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - local.get $3 - local.get $7 - call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int64Array> - local.get $3 - i32.const 10 - i32.const 3 - i32.const 62 - i32.const 12288 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $10 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - i32.const 0 - local.set $0 - local.get $5 - call $~lib/rt/pure/__retain - local.set $4 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=8 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner1 - local.get $1 - i32.load offset=4 - local.set $11 - local.get $2 - i32.load offset=4 - local.set $12 - local.get $2 - i32.load offset=8 - local.set $14 - loop $for-loop|001 - local.get $0 - local.get $14 - i32.lt_s - if - local.get $11 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $12 - i32.add - i32.load8_u - f64.convert_i32_u - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|001 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - local.get $8 - call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int16Array> - i32.const 0 - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 7 - i32.add - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner1 - local.get $1 - i32.load offset=4 - i32.const 56 - i32.add - local.set $4 - local.get $2 - i32.load offset=4 - local.set $11 - local.get $2 - i32.load offset=12 - local.set $12 - loop $for-loop|01 - local.get $0 - local.get $12 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $11 - i32.add - i32.load8_s - f64.convert_i32_s - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|01 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release - local.get $3 - i32.const 10 - i32.const 3 - i32.const 62 - i32.const 12384 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - return - end - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - local.set $5 - local.get $1 - i32.load offset=4 - local.set $6 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.lt_s - if - local.get $2 - local.get $5 - i32.add - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $4 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 8 - i32.add - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - local.set $5 - local.get $1 - i32.load offset=4 - local.set $6 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.lt_s - if - local.get $2 - local.get $5 - i32.add - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $4 - i32.const 255 - local.get $4 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.get $0 - i32.load offset=8 - i32.gt_s - if - i32.const 1376 - i32.const 1440 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.const 255 - local.get $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $7 - i32.const 255 - local.get $7 - i32.lt_u - select - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $start:std/typedarray - (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 f32) - (local $10 f64) - (local $11 i32) - (local $12 f32) - (local $13 f64) - (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) - i32.const 0 - call $std/typedarray/testInstantiate - i32.const 5 - call $std/typedarray/testInstantiate - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 99 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 100 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#subarray - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 106 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - i32.const 8 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 7 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 3 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 5 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 6 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 7 - f64.const 8 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Float64Array#subarray - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 16 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 32 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $~argumentsLength - local.get $1 - i32.const 1504 - call $~lib/typedarray/Float64Array#sort - i32.const 1504 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $1 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.eq - if (result i32) - local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.eq - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.const 0 - i32.const -32 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 256 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - if - i32.const 0 - i32.const 1312 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 136 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 255 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 137 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1536 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 149 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1616 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 152 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1648 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 155 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1680 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 158 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1712 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 161 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.tee $1 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 0 - i32.const 15 - i32.const 1744 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1776 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 169 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1808 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 181 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1856 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 184 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1904 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 187 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1952 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 190 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2000 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 193 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.tee $1 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 197 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 198 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 199 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 2 - i32.const 16 - i32.const 2048 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 200 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2080 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 201 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 5 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 6 - call $~lib/typedarray/Int8Array#subarray - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 222 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 223 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 224 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 225 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.const 5 - call $~lib/typedarray/Int8Array#subarray - local.tee $2 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 228 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 229 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 230 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 231 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.tee $3 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 234 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 235 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 236 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 237 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.set $2 - local.get $0 - i32.const 0 - i32.const 3 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $3 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2128 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 248 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.const 3 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $5 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2176 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 250 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 1 - i32.const 2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $7 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2224 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 252 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 2 - i32.const 2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $11 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2272 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $14 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 254 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $15 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2320 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $16 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 256 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $17 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2368 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $18 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 258 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 1 - i32.const 2 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $19 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2416 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $20 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 260 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 0 - i32.const -2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $21 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2464 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $22 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 262 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $23 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2512 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $24 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 264 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $25 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2560 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $26 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 266 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $27 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2608 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $28 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 268 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const -4 - i32.const -3 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $1 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2656 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $29 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 270 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.tee $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 282 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 283 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=8 - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 284 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 287 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 288 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 289 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 290 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 291 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#slice - local.tee $3 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 294 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 295 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1312 - i32.const 296 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 297 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $4 - i32.eq - if - i32.const 0 - i32.const 1312 - i32.const 300 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 301 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 302 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=8 - local.get $0 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 303 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - i32.const 0 - local.set $0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 2704 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - local.set $8 - loop $for-loop|0 - local.get $0 - local.get $8 - i32.lt_s - if - local.get $0 - local.get $7 - i32.add - i32.load8_s - local.set $11 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $11 - local.get $0 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 2704 - call $~lib/rt/pure/__release - block $folding-inner18 - block $folding-inner0 - block $folding-inner17 - block $folding-inner16 - block $folding-inner13 - block $folding-inner12 - block $folding-inner11 - block $folding-inner10 - block $folding-inner9 - block $folding-inner8 - block $folding-inner7 - block $folding-inner6 - block $folding-inner5 - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - local.get $3 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner2 - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2736 - call $~lib/typedarray/Uint8Array#reduce - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner2 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2768 - call $~lib/typedarray/Uint8Array#reduce - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner2 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 2800 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $8 - loop $for-loop|00 - local.get $0 - local.get $8 - i32.lt_s - if - local.get $7 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $11 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $11 - local.get $0 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 2800 - call $~lib/rt/pure/__release - local.get $3 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner2 - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 2832 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $8 - loop $for-loop|01 - local.get $0 - local.get $8 - i32.lt_s - if - local.get $7 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $11 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $11 - local.get $0 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|01 - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 2832 - call $~lib/rt/pure/__release - local.get $3 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner2 - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2864 - call $~lib/typedarray/Int32Array#reduce - i32.const 6 - i32.ne - br_if $folding-inner2 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2896 - call $~lib/typedarray/Int32Array#reduce - i32.const 6 - i32.ne - br_if $folding-inner2 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2928 - call $~lib/typedarray/Int64Array#reduce - i64.const 6 - i64.ne - br_if $folding-inner2 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2960 - call $~lib/typedarray/Int64Array#reduce - i64.const 6 - i64.ne - br_if $folding-inner2 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 2992 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $7 - loop $for-loop|02 - local.get $0 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $12 - i32.const 4 - global.set $~argumentsLength - local.get $9 - local.get $12 - local.get $0 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) - local.set $9 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|02 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 2992 - call $~lib/rt/pure/__release - local.get $9 - f32.const 6 - f32.ne - br_if $folding-inner2 - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3024 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $7 - loop $for-loop|03 - local.get $0 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $13 - i32.const 4 - global.set $~argumentsLength - local.get $10 - local.get $13 - local.get $0 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) - local.set $10 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|03 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3024 - call $~lib/rt/pure/__release - local.get $10 - f64.const 6 - f64.ne - br_if $folding-inner2 - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3056 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|04 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $7 - i32.add - i32.load8_s - local.set $8 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $8 - local.get $0 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|04 - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3056 - call $~lib/rt/pure/__release - local.get $3 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner3 - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 3088 - call $~lib/typedarray/Uint8Array#reduceRight - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner3 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 3120 - call $~lib/typedarray/Uint8Array#reduceRight - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner3 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3152 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|05 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $7 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $8 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $8 - local.get $0 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|05 - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3152 - call $~lib/rt/pure/__release - local.get $3 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner3 - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3184 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|06 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $7 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $8 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $8 - local.get $0 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|06 - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3184 - call $~lib/rt/pure/__release - local.get $3 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner3 - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - block $folding-inner1 - local.get $0 - i32.const 3216 - call $~lib/typedarray/Int32Array#reduceRight - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 3248 - call $~lib/typedarray/Int32Array#reduceRight - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 3280 - call $~lib/typedarray/Int64Array#reduceRight - i64.const 6 - i64.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 3312 - call $~lib/typedarray/Int64Array#reduceRight - i64.const 6 - i64.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - f32.const 0 - local.set $9 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3344 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|07 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $6 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $12 - i32.const 4 - global.set $~argumentsLength - local.get $9 - local.get $12 - local.get $0 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) - local.set $9 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|07 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3344 - call $~lib/rt/pure/__release - local.get $9 - f32.const 6 - f32.ne - br_if $folding-inner1 - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - f64.const 0 - local.set $10 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3376 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|08 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $6 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $13 - i32.const 4 - global.set $~argumentsLength - local.get $10 - local.get $13 - local.get $0 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) - local.set $10 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|08 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3376 - call $~lib/rt/pure/__release - local.get $10 - f64.const 6 - f64.ne - br_if $folding-inner1 - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - call $~lib/typedarray/Int8Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - call $~lib/typedarray/Uint8Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $0 - call $~lib/typedarray/Int16Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - call $~lib/typedarray/Uint16Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - call $~lib/typedarray/Int32Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - call $~lib/typedarray/Uint32Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 9 - i32.ne - br_if $folding-inner6 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - call $~lib/typedarray/Int64Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 9 - i64.ne - br_if $folding-inner6 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - call $~lib/typedarray/Uint64Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 9 - i64.ne - br_if $folding-inner6 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $0 - call $~lib/typedarray/Float32Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 9 - f32.ne - br_if $folding-inner6 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - call $~lib/typedarray/Float64Array#map - local.tee $1 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.ne - br_if $folding-inner4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - br_if $folding-inner5 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 9 - f64.ne - br_if $folding-inner6 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4112 - call $~lib/typedarray/Int8Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4144 - call $~lib/typedarray/Int8Array#some - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 4176 - call $~lib/typedarray/Uint8Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4208 - call $~lib/typedarray/Uint8Array#some - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 4240 - call $~lib/typedarray/Uint8Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4272 - call $~lib/typedarray/Uint8Array#some - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 4304 - call $~lib/typedarray/Int16Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4336 - call $~lib/typedarray/Int16Array#some - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 4368 - call $~lib/typedarray/Uint16Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4400 - call $~lib/typedarray/Uint16Array#some - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 4432 - call $~lib/typedarray/Int32Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4464 - call $~lib/typedarray/Int32Array#some - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 4496 - call $~lib/typedarray/Int32Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4528 - call $~lib/typedarray/Int32Array#some - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 4560 - call $~lib/typedarray/Int64Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4592 - call $~lib/typedarray/Int64Array#some - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 4624 - call $~lib/typedarray/Int64Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4656 - call $~lib/typedarray/Int64Array#some - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 4688 - call $~lib/typedarray/Float32Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4720 - call $~lib/typedarray/Float32Array#some - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 4752 - call $~lib/typedarray/Float64Array#some - i32.eqz - br_if $folding-inner7 - local.get $0 - i32.const 4784 - call $~lib/typedarray/Float64Array#some - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4816 - call $~lib/typedarray/Int8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 4848 - call $~lib/typedarray/Int8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 4880 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 4912 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 4944 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 4976 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 5008 - call $~lib/typedarray/Int16Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5040 - call $~lib/typedarray/Int16Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 5072 - call $~lib/typedarray/Uint16Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5104 - call $~lib/typedarray/Uint16Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 5136 - call $~lib/typedarray/Int32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5168 - call $~lib/typedarray/Int32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 5200 - call $~lib/typedarray/Int32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5232 - call $~lib/typedarray/Int32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 5264 - call $~lib/typedarray/Int64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5296 - call $~lib/typedarray/Int64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 5328 - call $~lib/typedarray/Int64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5360 - call $~lib/typedarray/Int64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 5392 - call $~lib/typedarray/Float32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5424 - call $~lib/typedarray/Float32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 5456 - call $~lib/typedarray/Float64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner9 - local.get $0 - i32.const 5488 - call $~lib/typedarray/Float64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 5520 - call $~lib/typedarray/Int8Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5552 - call $~lib/typedarray/Int8Array#every - br_if $folding-inner12 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 5584 - call $~lib/typedarray/Uint8Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5616 - call $~lib/typedarray/Uint8Array#every - br_if $folding-inner12 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 5648 - call $~lib/typedarray/Uint8Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5680 - call $~lib/typedarray/Uint8Array#every - br_if $folding-inner12 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 5712 - call $~lib/typedarray/Int16Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5744 - call $~lib/typedarray/Int16Array#every - br_if $folding-inner12 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 5776 - call $~lib/typedarray/Uint16Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5808 - call $~lib/typedarray/Uint16Array#every - br_if $folding-inner12 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 5840 - call $~lib/typedarray/Int32Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5872 - call $~lib/typedarray/Int32Array#every - br_if $folding-inner12 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 5904 - call $~lib/typedarray/Int32Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 5936 - call $~lib/typedarray/Int32Array#every - br_if $folding-inner12 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 5968 - call $~lib/typedarray/Int64Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 6000 - call $~lib/typedarray/Int64Array#every - br_if $folding-inner12 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 6032 - call $~lib/typedarray/Int64Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 6064 - call $~lib/typedarray/Int64Array#every - br_if $folding-inner12 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 6096 - call $~lib/typedarray/Float32Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 6128 - call $~lib/typedarray/Float32Array#every - br_if $folding-inner12 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 6160 - call $~lib/typedarray/Float64Array#every - i32.eqz - br_if $folding-inner11 - local.get $0 - i32.const 6192 - call $~lib/typedarray/Float64Array#every - br_if $folding-inner12 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6288 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - local.set $7 - loop $for-loop|09 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $1 - local.get $6 - i32.add - i32.load8_s - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|09 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6288 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 6320 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 6352 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6384 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $7 - loop $for-loop|010 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|010 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6384 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6416 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $7 - loop $for-loop|011 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|011 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6416 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 6448 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 6480 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 6512 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 6544 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6576 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $7 - loop $for-loop|012 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f32_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|012 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6576 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6256 - i32.const 0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - i32.const 6256 - i32.const 1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - i32.const 6256 - i32.const 2 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6608 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $7 - loop $for-loop|013 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f64_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|013 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6608 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner13 - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> - i32.const 1 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - i32.const 0 - f64.const nan:0x8000000000000 - call $~lib/typedarray/Float64Array#__set - local.get $2 - f64.const nan:0x8000000000000 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - i32.const 0 - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $1 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $3 - i32.lt_s - if - i32.const 1 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $10 - local.get $10 - f64.ne - local.get $10 - f64.const nan:0x8000000000000 - f64.eq - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - end - i32.const 0 - i32.ne - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/typedarray/Float32Array#constructor - local.tee $3 - i32.const 0 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $3 - f32.const nan:0x400000 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - i32.const 0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - i32.ge_s - i32.const 1 - local.get $4 - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $1 - i32.load offset=4 - local.set $5 - loop $while-continue|014 - local.get $0 - local.get $4 - i32.lt_s - if - i32.const 1 - local.get $5 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $9 - local.get $9 - f32.ne - local.get $9 - f32.const nan:0x400000 - f32.eq - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|014 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - end - i32.const 0 - i32.ne - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1312 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $0 - call $~lib/typedarray/Int8Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Int8Array#join - local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $3 - local.get $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $3 - local.get $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - local.get $0 - call $~lib/typedarray/Int16Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Int16Array#join - local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - call $~lib/typedarray/Uint16Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Uint16Array#join - local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $0 - call $~lib/typedarray/Int32Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Int32Array#join - local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - call $~lib/typedarray/Uint32Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Uint32Array#join - local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - local.get $0 - call $~lib/typedarray/Int64Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Int64Array#join - local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - call $~lib/typedarray/Uint64Array#join - local.tee $2 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner0 - local.get $0 - call $~lib/typedarray/Uint64Array#join - local.tee $3 - i32.const 7200 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner18 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 4 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - local.get $0 - call $~lib/typedarray/Float32Array#join - local.tee $2 - i32.const 8304 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner16 - local.get $0 - call $~lib/typedarray/Float32Array#join - local.tee $3 - i32.const 8304 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner17 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $0 - call $~lib/typedarray/Float64Array#join - local.tee $2 - i32.const 8304 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner16 - local.get $0 - call $~lib/typedarray/Float64Array#join - local.tee $3 - i32.const 8304 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner17 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $0 - i32.const 2 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.tee $2 - i32.load offset=8 - if - i32.const 0 - i32.const 1312 - i32.const 691 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - i32.load offset=8 - if - i32.const 0 - i32.const 1312 - i32.const 695 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $4 - i32.const 0 - f32.const 400 - call $~lib/typedarray/Float32Array#__set - local.get $4 - i32.const 1 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $4 - i32.const 2 - f32.const inf - call $~lib/typedarray/Float32Array#__set - i32.const 4 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.const 0 - i64.const -10 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 100 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 10 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 3 - i64.const 300 - call $~lib/typedarray/Int64Array#__set - i32.const 2 - call $~lib/typedarray/Int32Array#constructor - local.tee $5 - i32.const 0 - i32.const 300 - call $~lib/typedarray/Int32Array#__set - local.get $5 - i32.const 1 - i32.const -1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - local.get $4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> - local.get $0 - local.get $1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - local.get $0 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 12480 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 4 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 1 - i32.const 300 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 2 - i32.const 100 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 3 - i32.const -1 - call $~lib/typedarray/Uint32Array#__set - i32.const 4 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.const 0 - i32.const -10 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 2 - i32.const 10 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 3 - i32.const 300 - call $~lib/typedarray/Int16Array#__set - local.get $0 - local.get $2 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> - local.get $0 - local.get $3 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 12512 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - return - end - br $folding-inner3 - end - i32.const 0 - i32.const 1312 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 626 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 627 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1312 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:std/typedarray - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1264 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $folding-inner1 - block $folding-inner0 - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $0 - i32.load offset=20 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=16 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1264 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1264 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 12524 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) -) diff --git a/tests/compiler/std/typedarray.release.wat b/tests/compiler/std/typedarray.release.wat new file mode 100644 index 0000000000..b0cdfab0ca --- /dev/null +++ b/tests/compiler/std/typedarray.release.wat @@ -0,0 +1,68118 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32))) + (type $6 (func (param i32 i32 i32 i32) (result i32))) + (type $7 (func (param i64 i64) (result i32))) + (type $8 (func (param i64 i32 i32) (result i32))) + (type $9 (func (param i32))) + (type $10 (func (param f64 f64) (result i32))) + (type $11 (func (param f32 f32) (result i32))) + (type $12 (func (param i32 i32 i32 i32 i32))) + (type $13 (func (param i32 i32 i32 i32 i32 i32))) + (type $14 (func (param f32 i32 i32) (result i32))) + (type $15 (func (param f64 i32 i32) (result i32))) + (type $16 (func (param i32 i32) (result i64))) + (type $17 (func (param i64 i64 i32 i32) (result i64))) + (type $18 (func (param i32 i64) (result i32))) + (type $19 (func (param i32 i64 i32) (result i32))) + (type $20 (func (param i32 i32 i32 i32))) + (type $21 (func (param i32 i32 i64))) + (type $22 (func (param f32 f32 i32 i32) (result f32))) + (type $23 (func (param f64 f64 i32 i32) (result f64))) + (type $24 (func (param i64 i32 i32) (result i64))) + (type $25 (func (param i32 f64 i32) (result i32))) + (type $26 (func (param i32 i32) (result f64))) + (type $27 (func (param i32 i32) (result f32))) + (type $28 (func (param i64 i32 i32))) + (type $29 (func (param f32 i32 i32) (result f32))) + (type $30 (func (param f64 i32 i32) (result f64))) + (type $31 (func (param i32 f32) (result i32))) + (type $32 (func (param i32 f64) (result i32))) + (type $33 (func (param f32 i32 i32))) + (type $34 (func (param f64 i32 i32))) + (type $35 (func (param i32 f32 i32) (result i32))) + (type $36 (func (result i32))) + (type $37 (func (param i32 i64 i32))) + (type $38 (func (param i32 i64 i64 i32 i64 i32) (result i32))) + (type $39 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $40 (func (param i32 i32 f64))) + (type $41 (func (param i32 i32 f32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) + (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 49088)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $1 (i32.const 1084) "<") + (data $1.1 (i32.const 1096) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data $2 (i32.const 1148) "<") + (data $2.1 (i32.const 1160) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $3 (i32.const 1212) "<") + (data $3.1 (i32.const 1224) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $6 (i32.const 1340) "<") + (data $6.1 (i32.const 1352) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $7 (i32.const 1404) ",") + (data $7.1 (i32.const 1416) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $9 (i32.const 1484) "<") + (data $9.1 (i32.const 1496) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 1548) "<") + (data $10.1 (i32.const 1560) "\02\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data $11 (i32.const 1612) "<") + (data $11.1 (i32.const 1624) "\02\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data $12 (i32.const 1676) "\1c") + (data $12.1 (i32.const 1688) "\0f\00\00\00\08\00\00\00\01") + (data $13 (i32.const 1708) "\1c") + (data $13.1 (i32.const 1720) "\01\00\00\00\05\00\00\00\01\01\01\04\05") + (data $14 (i32.const 1740) ",") + (data $14.1 (i32.const 1752) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $15 (i32.const 1788) "\1c") + (data $15.1 (i32.const 1800) "\01\00\00\00\05") + (data $16 (i32.const 1820) "\1c") + (data $16.1 (i32.const 1832) "\01\00\00\00\05\00\00\00\01\01") + (data $17 (i32.const 1852) "\1c") + (data $17.1 (i32.const 1864) "\01\00\00\00\05\00\00\00\01\01\00\02\02") + (data $18 (i32.const 1884) "\1c") + (data $18.1 (i32.const 1896) "\01\00\00\00\05\00\00\00\01\01\00\02\02") + (data $19 (i32.const 1916) "\1c") + (data $19.1 (i32.const 1928) "\01\00\00\00\03") + (data $20 (i32.const 1948) "\1c") + (data $20.1 (i32.const 1960) "\01\00\00\00\05\00\00\00\01\00\00\00\02") + (data $21 (i32.const 1980) ",") + (data $21.1 (i32.const 1992) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") + (data $22 (i32.const 2028) ",") + (data $22.1 (i32.const 2040) "\01\00\00\00\14") + (data $23 (i32.const 2076) ",") + (data $23.1 (i32.const 2088) "\01\00\00\00\14\00\00\00\01\00\00\00\01") + (data $24 (i32.const 2124) ",") + (data $24.1 (i32.const 2136) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data $25 (i32.const 2172) ",") + (data $25.1 (i32.const 2184) "\01\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data $26 (i32.const 2220) "\1c") + (data $26.1 (i32.const 2232) "\01\00\00\00\0c") + (data $27 (i32.const 2252) ",") + (data $27.1 (i32.const 2264) "\01\00\00\00\14\00\00\00\01") + (data $27.2 (i32.const 2288) "\02") + (data $28 (i32.const 2300) ",") + (data $28.1 (i32.const 2312) "\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data $29 (i32.const 2348) ",") + (data $29.1 (i32.const 2360) "\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") + (data $30 (i32.const 2396) ",") + (data $30.1 (i32.const 2408) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data $31 (i32.const 2444) ",") + (data $31.1 (i32.const 2456) "\01\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $32 (i32.const 2492) ",") + (data $32.1 (i32.const 2504) "\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $33 (i32.const 2540) ",") + (data $33.1 (i32.const 2552) "\01\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") + (data $34 (i32.const 2588) ",") + (data $34.1 (i32.const 2600) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data $35 (i32.const 2636) ",") + (data $35.1 (i32.const 2648) "\01\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data $36 (i32.const 2684) ",") + (data $36.1 (i32.const 2696) "\01\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data $37 (i32.const 2732) ",") + (data $37.1 (i32.const 2744) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") + (data $38 (i32.const 2780) ",") + (data $38.1 (i32.const 2792) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data $39 (i32.const 2828) ",") + (data $39.1 (i32.const 2840) "\01\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data $40 (i32.const 2876) "\1c") + (data $40.1 (i32.const 2888) "\12\00\00\00\08\00\00\00\02") + (data $41 (i32.const 2908) "\1c") + (data $41.1 (i32.const 2920) "\13\00\00\00\08\00\00\00\03") + (data $42 (i32.const 2940) "\1c") + (data $42.1 (i32.const 2952) "\14\00\00\00\08\00\00\00\04") + (data $43 (i32.const 2972) "\1c") + (data $43.1 (i32.const 2984) "\15\00\00\00\08\00\00\00\05") + (data $44 (i32.const 3004) "\1c") + (data $44.1 (i32.const 3016) "\16\00\00\00\08\00\00\00\06") + (data $45 (i32.const 3036) "\1c") + (data $45.1 (i32.const 3048) "\17\00\00\00\08\00\00\00\07") + (data $46 (i32.const 3068) "\1c") + (data $46.1 (i32.const 3080) "\18\00\00\00\08\00\00\00\08") + (data $47 (i32.const 3100) "\1c") + (data $47.1 (i32.const 3112) "\19\00\00\00\08\00\00\00\t") + (data $48 (i32.const 3132) "\1c") + (data $48.1 (i32.const 3144) "\1a\00\00\00\08\00\00\00\n") + (data $49 (i32.const 3164) "\1c") + (data $49.1 (i32.const 3176) "\1b\00\00\00\08\00\00\00\0b") + (data $50 (i32.const 3196) "\1c") + (data $50.1 (i32.const 3208) "\1c\00\00\00\08\00\00\00\0c") + (data $51 (i32.const 3228) "\1c") + (data $51.1 (i32.const 3240) "\12\00\00\00\08\00\00\00\r") + (data $52 (i32.const 3260) "\1c") + (data $52.1 (i32.const 3272) "\13\00\00\00\08\00\00\00\0e") + (data $53 (i32.const 3292) "\1c") + (data $53.1 (i32.const 3304) "\14\00\00\00\08\00\00\00\0f") + (data $54 (i32.const 3324) "\1c") + (data $54.1 (i32.const 3336) "\15\00\00\00\08\00\00\00\10") + (data $55 (i32.const 3356) "\1c") + (data $55.1 (i32.const 3368) "\16\00\00\00\08\00\00\00\11") + (data $56 (i32.const 3388) "\1c") + (data $56.1 (i32.const 3400) "\17\00\00\00\08\00\00\00\12") + (data $57 (i32.const 3420) "\1c") + (data $57.1 (i32.const 3432) "\18\00\00\00\08\00\00\00\13") + (data $58 (i32.const 3452) "\1c") + (data $58.1 (i32.const 3464) "\19\00\00\00\08\00\00\00\14") + (data $59 (i32.const 3484) "\1c") + (data $59.1 (i32.const 3496) "\1a\00\00\00\08\00\00\00\15") + (data $60 (i32.const 3516) "\1c") + (data $60.1 (i32.const 3528) "\1b\00\00\00\08\00\00\00\16") + (data $61 (i32.const 3548) "\1c") + (data $61.1 (i32.const 3560) "\1c\00\00\00\08\00\00\00\17") + (data $62 (i32.const 3580) "\1c") + (data $62.1 (i32.const 3592) "\1d\00\00\00\08\00\00\00\18") + (data $63 (i32.const 3612) "\1c") + (data $63.1 (i32.const 3624) "\1e\00\00\00\08\00\00\00\19") + (data $64 (i32.const 3644) "\1c") + (data $64.1 (i32.const 3656) "\1f\00\00\00\08\00\00\00\1a") + (data $65 (i32.const 3676) "\1c") + (data $65.1 (i32.const 3688) " \00\00\00\08\00\00\00\1b") + (data $66 (i32.const 3708) "\1c") + (data $66.1 (i32.const 3720) "!\00\00\00\08\00\00\00\1c") + (data $67 (i32.const 3740) "\1c") + (data $67.1 (i32.const 3752) "\"\00\00\00\08\00\00\00\1d") + (data $68 (i32.const 3772) "\1c") + (data $68.1 (i32.const 3784) "#\00\00\00\08\00\00\00\1e") + (data $69 (i32.const 3804) "\1c") + (data $69.1 (i32.const 3816) "$\00\00\00\08\00\00\00\1f") + (data $70 (i32.const 3836) "\1c") + (data $70.1 (i32.const 3848) "%\00\00\00\08\00\00\00 ") + (data $71 (i32.const 3868) "\1c") + (data $71.1 (i32.const 3880) "&\00\00\00\08\00\00\00!") + (data $72 (i32.const 3900) "\1c") + (data $72.1 (i32.const 3912) "\'\00\00\00\08\00\00\00\"") + (data $73 (i32.const 3932) "\1c") + (data $73.1 (i32.const 3944) "(\00\00\00\08\00\00\00#") + (data $74 (i32.const 3964) "\1c") + (data $74.1 (i32.const 3976) ")\00\00\00\08\00\00\00$") + (data $75 (i32.const 3996) "\1c") + (data $75.1 (i32.const 4008) "*\00\00\00\08\00\00\00%") + (data $76 (i32.const 4028) "\1c") + (data $76.1 (i32.const 4040) "+\00\00\00\08\00\00\00&") + (data $77 (i32.const 4060) "\1c") + (data $77.1 (i32.const 4072) ",\00\00\00\08\00\00\00\'") + (data $78 (i32.const 4092) "\1c") + (data $78.1 (i32.const 4104) "-\00\00\00\08\00\00\00(") + (data $79 (i32.const 4124) "\1c") + (data $79.1 (i32.const 4136) ".\00\00\00\08\00\00\00)") + (data $80 (i32.const 4156) "\1c") + (data $80.1 (i32.const 4168) "/\00\00\00\08\00\00\00*") + (data $81 (i32.const 4188) "\1c") + (data $81.1 (i32.const 4200) "0\00\00\00\08\00\00\00+") + (data $82 (i32.const 4220) "\1c") + (data $82.1 (i32.const 4232) "1\00\00\00\08\00\00\00,") + (data $83 (i32.const 4252) "\1c") + (data $83.1 (i32.const 4264) "2\00\00\00\08\00\00\00-") + (data $84 (i32.const 4284) "\1c") + (data $84.1 (i32.const 4296) "(\00\00\00\08\00\00\00.") + (data $85 (i32.const 4316) "\1c") + (data $85.1 (i32.const 4328) "(\00\00\00\08\00\00\00/") + (data $86 (i32.const 4348) "\1c") + (data $86.1 (i32.const 4360) ")\00\00\00\08\00\00\000") + (data $87 (i32.const 4380) "\1c") + (data $87.1 (i32.const 4392) ")\00\00\00\08\00\00\001") + (data $88 (i32.const 4412) "\1c") + (data $88.1 (i32.const 4424) "*\00\00\00\08\00\00\002") + (data $89 (i32.const 4444) "\1c") + (data $89.1 (i32.const 4456) "*\00\00\00\08\00\00\003") + (data $90 (i32.const 4476) "\1c") + (data $90.1 (i32.const 4488) "+\00\00\00\08\00\00\004") + (data $91 (i32.const 4508) "\1c") + (data $91.1 (i32.const 4520) "+\00\00\00\08\00\00\005") + (data $92 (i32.const 4540) "\1c") + (data $92.1 (i32.const 4552) ",\00\00\00\08\00\00\006") + (data $93 (i32.const 4572) "\1c") + (data $93.1 (i32.const 4584) ",\00\00\00\08\00\00\007") + (data $94 (i32.const 4604) "\1c") + (data $94.1 (i32.const 4616) "-\00\00\00\08\00\00\008") + (data $95 (i32.const 4636) "\1c") + (data $95.1 (i32.const 4648) "-\00\00\00\08\00\00\009") + (data $96 (i32.const 4668) "\1c") + (data $96.1 (i32.const 4680) ".\00\00\00\08\00\00\00:") + (data $97 (i32.const 4700) "\1c") + (data $97.1 (i32.const 4712) ".\00\00\00\08\00\00\00;") + (data $98 (i32.const 4732) "\1c") + (data $98.1 (i32.const 4744) "/\00\00\00\08\00\00\00<") + (data $99 (i32.const 4764) "\1c") + (data $99.1 (i32.const 4776) "/\00\00\00\08\00\00\00=") + (data $100 (i32.const 4796) "\1c") + (data $100.1 (i32.const 4808) "0\00\00\00\08\00\00\00>") + (data $101 (i32.const 4828) "\1c") + (data $101.1 (i32.const 4840) "0\00\00\00\08\00\00\00?") + (data $102 (i32.const 4860) "\1c") + (data $102.1 (i32.const 4872) "1\00\00\00\08\00\00\00@") + (data $103 (i32.const 4892) "\1c") + (data $103.1 (i32.const 4904) "1\00\00\00\08\00\00\00A") + (data $104 (i32.const 4924) "\1c") + (data $104.1 (i32.const 4936) "2\00\00\00\08\00\00\00B") + (data $105 (i32.const 4956) "\1c") + (data $105.1 (i32.const 4968) "2\00\00\00\08\00\00\00C") + (data $106 (i32.const 4988) "\1c") + (data $106.1 (i32.const 5000) "(\00\00\00\08\00\00\00D") + (data $107 (i32.const 5020) "\1c") + (data $107.1 (i32.const 5032) "(\00\00\00\08\00\00\00E") + (data $108 (i32.const 5052) "\1c") + (data $108.1 (i32.const 5064) ")\00\00\00\08\00\00\00F") + (data $109 (i32.const 5084) "\1c") + (data $109.1 (i32.const 5096) ")\00\00\00\08\00\00\00G") + (data $110 (i32.const 5116) "\1c") + (data $110.1 (i32.const 5128) "*\00\00\00\08\00\00\00H") + (data $111 (i32.const 5148) "\1c") + (data $111.1 (i32.const 5160) "*\00\00\00\08\00\00\00I") + (data $112 (i32.const 5180) "\1c") + (data $112.1 (i32.const 5192) "+\00\00\00\08\00\00\00J") + (data $113 (i32.const 5212) "\1c") + (data $113.1 (i32.const 5224) "+\00\00\00\08\00\00\00K") + (data $114 (i32.const 5244) "\1c") + (data $114.1 (i32.const 5256) ",\00\00\00\08\00\00\00L") + (data $115 (i32.const 5276) "\1c") + (data $115.1 (i32.const 5288) ",\00\00\00\08\00\00\00M") + (data $116 (i32.const 5308) "\1c") + (data $116.1 (i32.const 5320) "-\00\00\00\08\00\00\00N") + (data $117 (i32.const 5340) "\1c") + (data $117.1 (i32.const 5352) "-\00\00\00\08\00\00\00O") + (data $118 (i32.const 5372) "\1c") + (data $118.1 (i32.const 5384) ".\00\00\00\08\00\00\00P") + (data $119 (i32.const 5404) "\1c") + (data $119.1 (i32.const 5416) ".\00\00\00\08\00\00\00Q") + (data $120 (i32.const 5436) "\1c") + (data $120.1 (i32.const 5448) "/\00\00\00\08\00\00\00R") + (data $121 (i32.const 5468) "\1c") + (data $121.1 (i32.const 5480) "/\00\00\00\08\00\00\00S") + (data $122 (i32.const 5500) "\1c") + (data $122.1 (i32.const 5512) "0\00\00\00\08\00\00\00T") + (data $123 (i32.const 5532) "\1c") + (data $123.1 (i32.const 5544) "0\00\00\00\08\00\00\00U") + (data $124 (i32.const 5564) "\1c") + (data $124.1 (i32.const 5576) "1\00\00\00\08\00\00\00V") + (data $125 (i32.const 5596) "\1c") + (data $125.1 (i32.const 5608) "1\00\00\00\08\00\00\00W") + (data $126 (i32.const 5628) "\1c") + (data $126.1 (i32.const 5640) "2\00\00\00\08\00\00\00X") + (data $127 (i32.const 5660) "\1c") + (data $127.1 (i32.const 5672) "2\00\00\00\08\00\00\00Y") + (data $128 (i32.const 5692) "\1c") + (data $128.1 (i32.const 5704) "(\00\00\00\08\00\00\00Z") + (data $129 (i32.const 5724) "\1c") + (data $129.1 (i32.const 5736) "(\00\00\00\08\00\00\00[") + (data $130 (i32.const 5756) "\1c") + (data $130.1 (i32.const 5768) ")\00\00\00\08\00\00\00\\") + (data $131 (i32.const 5788) "\1c") + (data $131.1 (i32.const 5800) ")\00\00\00\08\00\00\00]") + (data $132 (i32.const 5820) "\1c") + (data $132.1 (i32.const 5832) "*\00\00\00\08\00\00\00^") + (data $133 (i32.const 5852) "\1c") + (data $133.1 (i32.const 5864) "*\00\00\00\08\00\00\00_") + (data $134 (i32.const 5884) "\1c") + (data $134.1 (i32.const 5896) "+\00\00\00\08\00\00\00`") + (data $135 (i32.const 5916) "\1c") + (data $135.1 (i32.const 5928) "+\00\00\00\08\00\00\00a") + (data $136 (i32.const 5948) "\1c") + (data $136.1 (i32.const 5960) ",\00\00\00\08\00\00\00b") + (data $137 (i32.const 5980) "\1c") + (data $137.1 (i32.const 5992) ",\00\00\00\08\00\00\00c") + (data $138 (i32.const 6012) "\1c") + (data $138.1 (i32.const 6024) "-\00\00\00\08\00\00\00d") + (data $139 (i32.const 6044) "\1c") + (data $139.1 (i32.const 6056) "-\00\00\00\08\00\00\00e") + (data $140 (i32.const 6076) "\1c") + (data $140.1 (i32.const 6088) ".\00\00\00\08\00\00\00f") + (data $141 (i32.const 6108) "\1c") + (data $141.1 (i32.const 6120) ".\00\00\00\08\00\00\00g") + (data $142 (i32.const 6140) "\1c") + (data $142.1 (i32.const 6152) "/\00\00\00\08\00\00\00h") + (data $143 (i32.const 6172) "\1c") + (data $143.1 (i32.const 6184) "/\00\00\00\08\00\00\00i") + (data $144 (i32.const 6204) "\1c") + (data $144.1 (i32.const 6216) "0\00\00\00\08\00\00\00j") + (data $145 (i32.const 6236) "\1c") + (data $145.1 (i32.const 6248) "0\00\00\00\08\00\00\00k") + (data $146 (i32.const 6268) "\1c") + (data $146.1 (i32.const 6280) "1\00\00\00\08\00\00\00l") + (data $147 (i32.const 6300) "\1c") + (data $147.1 (i32.const 6312) "1\00\00\00\08\00\00\00m") + (data $148 (i32.const 6332) "\1c") + (data $148.1 (i32.const 6344) "2\00\00\00\08\00\00\00n") + (data $149 (i32.const 6364) "\1c") + (data $149.1 (i32.const 6376) "2\00\00\00\08\00\00\00o") + (data $150 (i32.const 6396) "\1c") + (data $150.1 (i32.const 6408) "(\00\00\00\08\00\00\00p") + (data $151 (i32.const 6428) "\1c") + (data $151.1 (i32.const 6440) "(\00\00\00\08\00\00\00q") + (data $152 (i32.const 6460) "\1c") + (data $152.1 (i32.const 6472) ")\00\00\00\08\00\00\00r") + (data $153 (i32.const 6492) "\1c") + (data $153.1 (i32.const 6504) ")\00\00\00\08\00\00\00s") + (data $154 (i32.const 6524) "\1c") + (data $154.1 (i32.const 6536) "*\00\00\00\08\00\00\00t") + (data $155 (i32.const 6556) "\1c") + (data $155.1 (i32.const 6568) "*\00\00\00\08\00\00\00u") + (data $156 (i32.const 6588) "\1c") + (data $156.1 (i32.const 6600) "+\00\00\00\08\00\00\00v") + (data $157 (i32.const 6620) "\1c") + (data $157.1 (i32.const 6632) "+\00\00\00\08\00\00\00w") + (data $158 (i32.const 6652) "\1c") + (data $158.1 (i32.const 6664) ",\00\00\00\08\00\00\00x") + (data $159 (i32.const 6684) "\1c") + (data $159.1 (i32.const 6696) ",\00\00\00\08\00\00\00y") + (data $160 (i32.const 6716) "\1c") + (data $160.1 (i32.const 6728) "-\00\00\00\08\00\00\00z") + (data $161 (i32.const 6748) "\1c") + (data $161.1 (i32.const 6760) "-\00\00\00\08\00\00\00{") + (data $162 (i32.const 6780) "\1c") + (data $162.1 (i32.const 6792) ".\00\00\00\08\00\00\00|") + (data $163 (i32.const 6812) "\1c") + (data $163.1 (i32.const 6824) ".\00\00\00\08\00\00\00}") + (data $164 (i32.const 6844) "\1c") + (data $164.1 (i32.const 6856) "/\00\00\00\08\00\00\00~") + (data $165 (i32.const 6876) "\1c") + (data $165.1 (i32.const 6888) "/\00\00\00\08\00\00\00\7f") + (data $166 (i32.const 6908) "\1c") + (data $166.1 (i32.const 6920) "0\00\00\00\08\00\00\00\80") + (data $167 (i32.const 6940) "\1c") + (data $167.1 (i32.const 6952) "0\00\00\00\08\00\00\00\81") + (data $168 (i32.const 6972) "\1c") + (data $168.1 (i32.const 6984) "1\00\00\00\08\00\00\00\82") + (data $169 (i32.const 7004) "\1c") + (data $169.1 (i32.const 7016) "1\00\00\00\08\00\00\00\83") + (data $170 (i32.const 7036) "\1c") + (data $170.1 (i32.const 7048) "2\00\00\00\08\00\00\00\84") + (data $171 (i32.const 7068) "\1c") + (data $171.1 (i32.const 7080) "2\00\00\00\08\00\00\00\85") + (data $172 (i32.const 7100) "\1c") + (data $172.1 (i32.const 7112) "\01\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") + (data $173 (i32.const 7132) ",") + (data $173.1 (i32.const 7144) "\11\00\00\00\10\00\00\00\d0\1b\00\00\d0\1b\00\00\0c\00\00\00\03") + (data $174 (i32.const 7180) "\1c") + (data $174.1 (i32.const 7192) "3\00\00\00\08\00\00\00\86") + (data $175 (i32.const 7212) "\1c") + (data $175.1 (i32.const 7224) "4\00\00\00\08\00\00\00\87") + (data $176 (i32.const 7244) "\1c") + (data $176.1 (i32.const 7256) "5\00\00\00\08\00\00\00\88") + (data $177 (i32.const 7276) "\1c") + (data $177.1 (i32.const 7288) "6\00\00\00\08\00\00\00\89") + (data $178 (i32.const 7308) "\1c") + (data $178.1 (i32.const 7320) "7\00\00\00\08\00\00\00\8a") + (data $179 (i32.const 7340) "\1c") + (data $179.1 (i32.const 7352) "8\00\00\00\08\00\00\00\8b") + (data $180 (i32.const 7372) "\1c") + (data $180.1 (i32.const 7384) "9\00\00\00\08\00\00\00\8c") + (data $181 (i32.const 7404) "\1c") + (data $181.1 (i32.const 7416) ":\00\00\00\08\00\00\00\8d") + (data $182 (i32.const 7436) "\1c") + (data $182.1 (i32.const 7448) ";\00\00\00\08\00\00\00\8e") + (data $183 (i32.const 7468) "\1c") + (data $183.1 (i32.const 7480) "<\00\00\00\08\00\00\00\8f") + (data $184 (i32.const 7500) "\1c") + (data $184.1 (i32.const 7512) "=\00\00\00\08\00\00\00\90") + (data $185 (i32.const 7532) "<") + (data $185.1 (i32.const 7544) "\01\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $186 (i32.const 7596) ",") + (data $186.1 (i32.const 7608) "\11\00\00\00\10\00\00\00\80\1d\00\00\80\1d\00\00$\00\00\00\t") + (data $187 (i32.const 7644) "<") + (data $187.1 (i32.const 7656) "\01\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n") + (data $188 (i32.const 7708) ",") + (data $188.1 (i32.const 7720) "\11\00\00\00\10\00\00\00\f0\1d\00\00\f0\1d\00\00,\00\00\00\0b") + (data $189 (i32.const 7756) "\1c") + (data $189.1 (i32.const 7768) "\02") + (data $190 (i32.const 7788) "|") + (data $190.1 (i32.const 7800) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $191 (i32.const 7916) "<") + (data $191.1 (i32.const 7928) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $192 (i32.const 7980) "\1c") + (data $192.1 (i32.const 7992) "\02\00\00\00\02\00\00\000") + (data $193 (i32.const 8012) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $194 (i32.const 8412) "\1c\04") + (data $194.1 (i32.const 8424) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $195 (i32.const 9468) "\\") + (data $195.1 (i32.const 9480) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $196 (i32.const 9564) "\1c") + (data $196.1 (i32.const 9576) "\02\00\00\00\02\00\00\00,") + (data $197 (i32.const 9596) ",") + (data $197.1 (i32.const 9608) "\02\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005") + (data $198 (i32.const 9644) "\1c") + (data $198.1 (i32.const 9656) "\02\00\00\00\06\00\00\000\00.\000") + (data $199 (i32.const 9676) "\1c") + (data $199.1 (i32.const 9688) "\02\00\00\00\06\00\00\00N\00a\00N") + (data $200 (i32.const 9708) ",") + (data $200.1 (i32.const 9720) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $201 (i32.const 9756) ",") + (data $201.1 (i32.const 9768) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data $203 (i32.const 9864) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\10\00\00\000+\00\000+\00\00\0c\00\00\00\03") + (data $213 (i32.const 11116) ",") + (data $213.1 (i32.const 11128) "\01\00\00\00\18") + (data $213.2 (i32.const 11142) "\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff") + (data $214 (i32.const 11164) ",") + (data $214.1 (i32.const 11176) "?\00\00\00\10\00\00\00\80+\00\00\80+\00\00\18\00\00\00\03") + (data $215 (i32.const 11212) "\1c") + (data $215.1 (i32.const 11224) "\01\00\00\00\03\00\00\00\92\91\90") + (data $216 (i32.const 11244) ",") + (data $216.1 (i32.const 11256) "\10\00\00\00\10\00\00\00\e0+\00\00\e0+\00\00\03\00\00\00\03") + (data $217 (i32.const 11292) "\1c") + (data $217.1 (i32.const 11304) "\01\00\00\00\n\00\00\00\01\02\03") + (data $218 (i32.const 11324) ",") + (data $218.1 (i32.const 11336) "\02\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y") + (data $219 (i32.const 11372) "\1c") + (data $219.1 (i32.const 11384) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") + (data $220 (i32.const 11404) "\1c") + (data $220.1 (i32.const 11416) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data $221 (i32.const 11436) "\1c") + (data $221.1 (i32.const 11448) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data $222 (i32.const 11468) "\1c") + (data $222.1 (i32.const 11480) "\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") + (data $223 (i32.const 11500) "\1c") + (data $223.1 (i32.const 11512) "\01\00\00\00\n\00\00\00\01\02\03") + (data $224 (i32.const 11532) ",") + (data $224.1 (i32.const 11544) "\02\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y") + (data $225 (i32.const 11580) "\1c") + (data $225.1 (i32.const 11592) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") + (data $226 (i32.const 11612) "\1c") + (data $226.1 (i32.const 11624) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data $227 (i32.const 11644) "\1c") + (data $227.1 (i32.const 11656) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data $228 (i32.const 11676) "\1c") + (data $228.1 (i32.const 11688) "\01\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") + (data $229 (i32.const 11708) "\1c") + (data $229.1 (i32.const 11720) "\01\00\00\00\n\00\00\00\01\02\03") + (data $230 (i32.const 11740) "<") + (data $230.1 (i32.const 11752) "\02\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y") + (data $231 (i32.const 11804) "\1c") + (data $231.1 (i32.const 11816) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06") + (data $232 (i32.const 11836) "\1c") + (data $232.1 (i32.const 11848) "\01\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data $233 (i32.const 11868) "\1c") + (data $233.1 (i32.const 11880) "\01\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data $234 (i32.const 11900) "\1c") + (data $234.1 (i32.const 11912) "\01\00\00\00\n\00\00\00defg\ff\ff\ff") + (data $235 (i32.const 11932) ",") + (data $235.1 (i32.const 11944) "\01\00\00\00\14\00\00\00\01\00\02\00\03") + (data $236 (i32.const 11980) ",") + (data $236.1 (i32.const 11992) "\02\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y") + (data $237 (i32.const 12028) ",") + (data $237.1 (i32.const 12040) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data $238 (i32.const 12076) ",") + (data $238.1 (i32.const 12088) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") + (data $239 (i32.const 12124) ",") + (data $239.1 (i32.const 12136) "\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") + (data $240 (i32.const 12172) ",") + (data $240.1 (i32.const 12184) "\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data $241 (i32.const 12220) ",") + (data $241.1 (i32.const 12232) "\01\00\00\00\14\00\00\00\01\00\02\00\03") + (data $242 (i32.const 12268) ",") + (data $242.1 (i32.const 12280) "\02\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y") + (data $243 (i32.const 12316) ",") + (data $243.1 (i32.const 12328) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data $244 (i32.const 12364) ",") + (data $244.1 (i32.const 12376) "\01\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") + (data $245 (i32.const 12412) ",") + (data $245.1 (i32.const 12424) "\01\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") + (data $246 (i32.const 12460) ",") + (data $246.1 (i32.const 12472) "\01\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data $247 (i32.const 12508) "<") + (data $247.1 (i32.const 12520) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") + (data $248 (i32.const 12572) ",") + (data $248.1 (i32.const 12584) "\02\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y") + (data $249 (i32.const 12620) "<") + (data $249.1 (i32.const 12632) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") + (data $250 (i32.const 12684) "<") + (data $250.1 (i32.const 12696) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $251 (i32.const 12748) "<") + (data $251.1 (i32.const 12760) "\01\00\00\00(\00\00\00\01\00\00\00\02") + (data $251.2 (i32.const 12788) "\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $252 (i32.const 12812) "<") + (data $252.1 (i32.const 12824) "\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") + (data $253 (i32.const 12876) "<") + (data $253.1 (i32.const 12888) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03") + (data $254 (i32.const 12940) ",") + (data $254.1 (i32.const 12952) "\02\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y") + (data $255 (i32.const 12988) "<") + (data $255.1 (i32.const 13000) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06") + (data $256 (i32.const 13052) "<") + (data $256.1 (i32.const 13064) "\01\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $257 (i32.const 13116) "<") + (data $257.1 (i32.const 13128) "\01\00\00\00(\00\00\00\01\00\00\00\02") + (data $257.2 (i32.const 13156) "\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data $258 (i32.const 13180) "<") + (data $258.1 (i32.const 13192) "\01\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") + (data $259 (i32.const 13244) "l") + (data $259.1 (i32.const 13256) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data $260 (i32.const 13356) ",") + (data $260.1 (i32.const 13368) "\02\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y") + (data $261 (i32.const 13404) "l") + (data $261.1 (i32.const 13416) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") + (data $262 (i32.const 13516) "l") + (data $262.1 (i32.const 13528) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data $263 (i32.const 13628) "l") + (data $263.1 (i32.const 13640) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") + (data $263.2 (i32.const 13688) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data $264 (i32.const 13740) "l") + (data $264.1 (i32.const 13752) "\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") + (data $265 (i32.const 13852) "l") + (data $265.1 (i32.const 13864) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data $266 (i32.const 13964) ",") + (data $266.1 (i32.const 13976) "\02\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y") + (data $267 (i32.const 14012) "l") + (data $267.1 (i32.const 14024) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06") + (data $268 (i32.const 14124) "l") + (data $268.1 (i32.const 14136) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data $269 (i32.const 14236) "l") + (data $269.1 (i32.const 14248) "\01\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02") + (data $269.2 (i32.const 14296) "\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t") + (data $270 (i32.const 14348) "l") + (data $270.1 (i32.const 14360) "\01\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") + (data $271 (i32.const 14460) "<") + (data $271.1 (i32.const 14472) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data $272 (i32.const 14524) ",") + (data $272.1 (i32.const 14536) "\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y") + (data $273 (i32.const 14572) "<") + (data $273.1 (i32.const 14584) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@") + (data $274 (i32.const 14636) "<") + (data $274.1 (i32.const 14648) "\01\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A") + (data $275 (i32.const 14700) "<") + (data $275.1 (i32.const 14712) "\01\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") + (data $276 (i32.const 14764) "l") + (data $276.1 (i32.const 14776) "\01\00\00\00P") + (data $276.2 (i32.const 14790) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data $277 (i32.const 14876) ",") + (data $277.1 (i32.const 14888) "\02\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y") + (data $278 (i32.const 14924) "l") + (data $278.1 (i32.const 14936) "\01\00\00\00P") + (data $278.2 (i32.const 14950) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@") + (data $279 (i32.const 15036) "l") + (data $279.1 (i32.const 15048) "\01\00\00\00P") + (data $279.2 (i32.const 15062) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@") + (data $280 (i32.const 15148) "l") + (data $280.1 (i32.const 15160) "\01\00\00\00P") + (data $280.2 (i32.const 15174) "Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0") + (data $281 (i32.const 15260) "\1c") + (data $281.1 (i32.const 15272) "\01\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff") + (data $282 (i32.const 15292) "\1c") + (data $282.1 (i32.const 15304) "\01\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff") + (data $283 (i32.const 15324) "\1c") + (data $283.1 (i32.const 15336) "F\00\00\00\08\00\00\00\91") + (data $284 (i32.const 15356) "\1c") + (data $284.1 (i32.const 15368) "F\00\00\00\08\00\00\00\92") + (data $285 (i32.const 15388) "\1c") + (data $285.1 (i32.const 15400) "G\00\00\00\08\00\00\00\93") + (data $286 (i32.const 15420) "\1c") + (data $286.1 (i32.const 15432) "G\00\00\00\08\00\00\00\94") + (data $287 (i32.const 15452) "\1c") + (data $287.1 (i32.const 15464) "G\00\00\00\08\00\00\00\95") + (data $288 (i32.const 15484) "\1c") + (data $288.1 (i32.const 15496) "G\00\00\00\08\00\00\00\96") + (data $289 (i32.const 15516) "\1c") + (data $289.1 (i32.const 15528) "H\00\00\00\08\00\00\00\97") + (data $290 (i32.const 15548) "\1c") + (data $290.1 (i32.const 15560) "H\00\00\00\08\00\00\00\98") + (data $291 (i32.const 15580) "\1c") + (data $291.1 (i32.const 15592) "I\00\00\00\08\00\00\00\99") + (data $292 (i32.const 15612) "\1c") + (data $292.1 (i32.const 15624) "I\00\00\00\08\00\00\00\9a") + (data $293 (i32.const 15644) "\1c") + (data $293.1 (i32.const 15656) "J\00\00\00\08\00\00\00\9b") + (data $294 (i32.const 15676) "\1c") + (data $294.1 (i32.const 15688) "J\00\00\00\08\00\00\00\9c") + (data $295 (i32.const 15708) "\1c") + (data $295.1 (i32.const 15720) "K\00\00\00\08\00\00\00\9d") + (data $296 (i32.const 15740) "\1c") + (data $296.1 (i32.const 15752) "K\00\00\00\08\00\00\00\9e") + (data $297 (i32.const 15772) "\1c") + (data $297.1 (i32.const 15784) "L\00\00\00\08\00\00\00\9f") + (data $298 (i32.const 15804) "\1c") + (data $298.1 (i32.const 15816) "L\00\00\00\08\00\00\00\a0") + (data $299 (i32.const 15836) "\1c") + (data $299.1 (i32.const 15848) "M\00\00\00\08\00\00\00\a1") + (data $300 (i32.const 15868) "\1c") + (data $300.1 (i32.const 15880) "M\00\00\00\08\00\00\00\a2") + (data $301 (i32.const 15900) "\1c") + (data $301.1 (i32.const 15912) "N\00\00\00\08\00\00\00\a3") + (data $302 (i32.const 15932) "\1c") + (data $302.1 (i32.const 15944) "N\00\00\00\08\00\00\00\a4") + (data $303 (i32.const 15964) "\1c") + (data $303.1 (i32.const 15976) "\0f\00\00\00\08\00\00\00\a5") + (data $304 (i32.const 16000) "O\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00B\08\00\00\02\t") + (data $304.1 (i32.const 16252) "\02\19\00\00\02\1a\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\01\00\00\02\n\00\00\02\02") + (table $0 166 166 funcref) + (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 7152 + call $~lib/rt/itcms/__visit + i32.const 7616 + call $~lib/rt/itcms/__visit + i32.const 7728 + call $~lib/rt/itcms/__visit + i32.const 10928 + call $~lib/rt/itcms/__visit + i32.const 11008 + call $~lib/rt/itcms/__visit + i32.const 11088 + call $~lib/rt/itcms/__visit + i32.const 11184 + call $~lib/rt/itcms/__visit + i32.const 11264 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 8432 + call $~lib/rt/itcms/__visit + i32.const 9488 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$1403 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 49088 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$1403 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 16000 + i32.load + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 16004 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 49088 + i32.const 0 + i32.store + i32.const 50656 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 49088 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 49088 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 49088 + i32.const 50660 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 49088 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 49088 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1504 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 49088 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 49088 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1168 + i32.const 1504 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1504 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1168 + i32.const 1232 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 f64) + (local $6 f64) + (local $7 i32) + (local $8 f64) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $7 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load offset=8 + local.tee $8 + local.set $6 + local.get $3 + f64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect (type $10) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + f64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $10) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + f64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store offset=16 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + f64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $10) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + f64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $6 + f64.store offset=8 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 f64) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load offset=8 + local.get $6 + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $10) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + f64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + f64.load offset=8 + local.get $1 + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $10) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $9 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + f64.load + f64.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + f64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $7 + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $10) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $8 + f64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + local.get $2 + i64.xor + local.tee $2 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + local.get $3 + i64.xor + local.tee $3 + i64.gt_s + local.get $2 + local.get $3 + i64.lt_s + i32.sub + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + local.get $0 + local.get $1 + f32.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + local.get $0 + local.get $1 + f64.add + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $0 + i32.mul + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + local.get $0 + local.get $0 + i64.mul + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + local.get $0 + local.get $0 + f32.mul + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + local.get $0 + local.get $0 + f64.mul + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend8_s + i32.const 2 + i32.gt_s + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $1 + i32.gt_u + select + memory.copy + local.get $2 + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.gt_u + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend16_s + i32.const 2 + i32.gt_s + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + i32.const 2 + i32.gt_u + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.gt_s + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.gt_u + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 2 + i64.gt_s + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 2 + i64.gt_u + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 2 + f32.gt + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 2 + f64.gt + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.eqz + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + i32.eqz + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.eqz + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 2 + i64.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.eqz + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 2 + f32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 0 + f32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 2 + f64.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 0 + f64.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 4 + i64.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 4 + f32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 4 + f64.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend8_s + i32.const 1 + i32.and + i32.eqz + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 1 + i32.and + i32.eqz + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend16_s + i32.const 1 + i32.and + i32.eqz + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 1 + i64.and + i64.eqz + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + block $__inlined_func$~lib/math/NativeMathf.mod (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $1 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $2 + i32.const 255 + i32.eq + if + local.get $0 + local.get $0 + f32.add + local.tee $0 + local.get $0 + f32.div + br $__inlined_func$~lib/math/NativeMathf.mod + end + local.get $1 + i32.const 1 + i32.shl + local.tee $3 + i32.const -2147483648 + i32.le_u + if + local.get $0 + local.get $3 + i32.const -2147483648 + i32.ne + f32.convert_i32_u + f32.mul + br $__inlined_func$~lib/math/NativeMathf.mod + end + local.get $1 + i32.const -2147483648 + i32.and + local.set $3 + local.get $2 + if (result i32) + local.get $1 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $1 + i32.const 1 + local.get $2 + local.get $1 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $2 + i32.sub + i32.shl + end + local.set $1 + loop $while-continue|0 + local.get $2 + i32.const 128 + i32.gt_s + if + local.get $1 + i32.const 8388608 + i32.ge_u + if (result i32) + local.get $0 + f32.const 0 + f32.mul + local.get $1 + i32.const 8388608 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod + drop + local.get $1 + i32.const 8388608 + i32.sub + else + local.get $1 + end + i32.const 1 + i32.shl + local.set $1 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + local.get $1 + i32.const 8388608 + i32.ge_u + if + local.get $0 + f32.const 0 + f32.mul + local.get $1 + i32.const 8388608 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod + drop + local.get $1 + i32.const 8388608 + i32.sub + local.set $1 + end + local.get $2 + local.get $1 + i32.const 8 + i32.shl + i32.clz + local.tee $4 + i32.sub + local.set $2 + local.get $1 + local.get $4 + i32.shl + local.set $1 + local.get $2 + i32.const 0 + i32.gt_s + if (result i32) + local.get $1 + i32.const 8388608 + i32.sub + local.get $2 + i32.const 23 + i32.shl + i32.or + else + local.get $1 + i32.const 1 + local.get $2 + i32.sub + i32.shr_u + end + local.get $3 + i32.or + f32.reinterpret_i32 + end + f32.const 0 + f32.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 i64) + block $__inlined_func$~lib/math/NativeMath.mod$1 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $6 + i64.const 2047 + i64.eq + if + local.get $0 + local.get $0 + f64.add + local.tee $0 + local.get $0 + f64.div + br $__inlined_func$~lib/math/NativeMath.mod$1 + end + local.get $4 + i64.const 1 + i64.shl + local.tee $3 + i64.const -9223372036854775808 + i64.le_u + if + local.get $0 + local.get $3 + i64.const -9223372036854775808 + i64.ne + f64.convert_i32_u + f64.mul + br $__inlined_func$~lib/math/NativeMath.mod$1 + end + local.get $4 + i64.const 63 + i64.shr_u + local.set $5 + local.get $6 + i64.eqz + if (result i64) + local.get $4 + i64.const 1 + local.get $6 + local.get $4 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $6 + i64.sub + i64.shl + else + local.get $4 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $3 + loop $while-continue|0 + local.get $6 + i64.const 1024 + i64.gt_s + if + local.get $3 + i64.const 4503599627370496 + i64.ge_u + if (result i64) + local.get $0 + f64.const 0 + f64.mul + local.get $3 + i64.const 4503599627370496 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$1 + drop + local.get $3 + i64.const 4503599627370496 + i64.sub + else + local.get $3 + end + i64.const 1 + i64.shl + local.set $3 + local.get $6 + i64.const 1 + i64.sub + local.set $6 + br $while-continue|0 + end + end + local.get $3 + i64.const 4503599627370496 + i64.ge_u + if + local.get $0 + f64.const 0 + f64.mul + local.get $3 + i64.const 4503599627370496 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$1 + drop + local.get $3 + i64.const 4503599627370496 + i64.sub + local.set $3 + end + local.get $6 + local.get $3 + i64.const 11 + i64.shl + i64.clz + local.tee $4 + i64.sub + local.set $6 + local.get $3 + local.get $4 + i64.shl + local.set $3 + local.get $6 + i64.const 0 + i64.gt_s + if (result i64) + local.get $3 + i64.const 4503599627370496 + i64.sub + local.get $6 + i64.const 52 + i64.shl + i64.or + else + local.get $3 + i64.const 1 + local.get $6 + i64.sub + i64.shr_u + end + local.get $5 + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + end + f64.const 0 + f64.eq + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.extend8_s + local.tee $3 + i32.const 0 + i32.lt_s + local.tee $2 + if + local.get $3 + i32.const -128 + i32.eq + if + local.get $0 + i64.const 15762813447372845 + i64.store + i32.const 4 + return + end + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.extend8_s + local.tee $3 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $3 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $1 + i32.extend8_s + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + local.get $3 + i32.add + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 255 + i32.and + local.tee $2 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $2 + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + local.get $1 + i32.const 255 + i32.and + local.set $1 + i32.const 3 + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + local.get $1 + i32.const 100 + i32.ge_u + select + local.set $2 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 0 + i32.lt_s + local.tee $2 + if + local.get $3 + i32.const -32768 + i32.eq + if + local.get $0 + i64.const 15481338470793261 + i64.store + local.get $0 + i32.const 3670070 + i32.store offset=8 + i32.const 6 + return + end + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $3 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $1 + i32.extend16_s + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + local.get $3 + i32.add + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 65535 + i32.and + local.tee $2 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $2 + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + local.get $1 + i32.const 65535 + i32.and + local.set $1 + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + local.set $2 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 0 + i32.lt_s + local.tee $2 + if + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $0 + local.get $1 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $0 + local.get $2 + i32.add + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + local.get $0 + local.get $1 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $0 + ) + (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + loop $while-continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + if + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $1 + i64.const 100000000 + i64.div_u + local.tee $1 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + local.get $1 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i64.const 0 + i64.lt_s + local.tee $3 + if + local.get $0 + i32.const 45 + i32.store16 + i64.const 0 + local.get $1 + i64.sub + local.set $1 + end + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $1 + i64.const 10 + i64.lt_u + if + local.get $4 + local.get $1 + i64.const 48 + i64.or + i64.store16 + local.get $3 + i32.const 1 + i32.add + return + end + local.get $1 + i64.const 4294967295 + i64.le_u + if + local.get $1 + i32.wrap_i64 + local.tee $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $0 + local.get $4 + local.get $2 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else + local.get $4 + local.get $1 + local.get $1 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $1 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $1 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $1 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $1 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $1 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa64_dec_lut + end + local.get $0 + local.get $3 + i32.add + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.set $2 + local.get $1 + i64.const 10 + i64.lt_u + if + local.get $0 + local.get $1 + i64.const 48 + i64.or + i64.store16 + i32.const 1 + return + end + local.get $1 + i64.const 4294967295 + i64.le_u + if + local.get $1 + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $0 + local.get $2 + local.get $3 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else + local.get $2 + local.get $1 + local.get $1 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $1 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $1 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $1 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $1 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $1 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa64_dec_lut + end + local.get $0 + ) + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i64) + (local $12 i64) + local.get $2 + local.get $1 + i64.sub + local.set $9 + i64.const 1 + i32.const 0 + local.get $3 + i32.sub + local.tee $10 + i64.extend_i32_s + local.tee $1 + i64.shl + local.tee $12 + i64.const 1 + i64.sub + local.tee $11 + local.get $2 + i64.and + local.set $8 + local.get $2 + local.get $1 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $7 + loop $while-continue|0 + local.get $7 + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $7 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $3 + i32.const 1000000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100 + i32.div_u + local.set $6 + local.get $3 + i32.const 100 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10 + i32.div_u + local.set $6 + local.get $3 + i32.const 10 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + local.set $6 + i32.const 0 + local.set $3 + br $break|1 + end + i32.const 0 + local.set $6 + end + local.get $5 + local.get $6 + i32.or + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $4 + local.get $3 + i64.extend_i32_u + local.get $10 + i64.extend_i32_s + local.tee $2 + i64.shl + local.get $8 + i64.add + local.tee $1 + i64.ge_u + if + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 10736 + i32.add + i64.load32_u + local.get $2 + i64.shl + local.set $2 + local.get $0 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|3 + local.get $1 + local.get $9 + i64.lt_u + local.get $4 + local.get $1 + i64.sub + local.get $2 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $1 + local.get $2 + i64.add + local.tee $8 + i64.gt_u + local.get $9 + local.get $1 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $1 + local.get $2 + i64.add + local.set $1 + br $while-continue|3 + end + end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + return + end + br $while-continue|0 + end + end + loop $while-continue|4 + local.get $4 + i64.const 10 + i64.mul + local.set $4 + local.get $8 + i64.const 10 + i64.mul + local.tee $1 + local.get $10 + i64.extend_i32_s + i64.shr_u + local.tee $2 + local.get $5 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $1 + local.get $11 + i64.and + local.tee $8 + local.get $4 + i64.ge_u + br_if $while-continue|4 + end + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 10736 + i32.add + i64.load32_u + i64.mul + local.set $1 + local.get $0 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|6 + local.get $1 + local.get $8 + i64.gt_u + local.get $4 + local.get $8 + i64.sub + local.get $12 + i64.ge_u + i32.and + if (result i32) + local.get $1 + local.get $8 + local.get $12 + i64.add + local.tee $2 + i64.gt_u + local.get $1 + local.get $8 + i64.sub + local.get $2 + local.get $1 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $8 + local.get $12 + i64.add + local.set $8 + br $while-continue|6 + end + end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.eqz + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add + return + end + local.get $1 + local.get $2 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + local.get $3 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add + local.get $0 + i32.const 0 + local.get $2 + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 46 + i32.store16 + local.get $1 + i32.const 1 + i32.add + else + local.get $3 + i32.const 0 + i32.le_s + local.get $3 + i32.const -6 + i32.gt_s + i32.and + if (result i32) + local.get $0 + i32.const 2 + local.get $3 + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 3014704 + i32.store + i32.const 2 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + local.get $3 + i32.add + else + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $3 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + else + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $1 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + i32.sub + memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $4 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $1 + end + local.get $1 + i32.const 2 + i32.add + end + end + end + ) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + (local $16 i64) + local.get $1 + f64.const 0 + f64.lt + local.tee $4 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $1 + f64.neg + local.set $1 + end + local.get $2 + if (result i64) + local.get $1 + f32.demote_f64 + i32.reinterpret_f32 + local.tee $8 + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.tee $9 + i32.const 1 + local.get $9 + select + i32.const 150 + i32.sub + local.set $5 + local.get $8 + i32.const 8388607 + i32.and + i64.extend_i32_u + local.get $9 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + i64.add + else + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $8 + i32.const 1 + local.get $8 + select + i32.const 1075 + i32.sub + local.set $5 + local.get $3 + i64.const 4503599627370495 + i64.and + local.get $8 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + i64.add + end + local.set $3 + local.get $5 + i32.const 1 + i32.sub + local.get $3 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $6 + i64.clz + i32.wrap_i64 + local.tee $8 + i32.sub + local.set $9 + local.get $6 + local.get $8 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $3 + local.get $3 + i64.const 8388608 + i64.const 4503599627370496 + local.get $2 + select + i64.eq + i32.const 1 + i32.add + local.tee $2 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $5 + local.get $2 + i32.sub + local.get $9 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $9 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $1 + i32.trunc_sat_f64_s + local.tee $2 + local.get $2 + f64.convert_i32_s + local.get $1 + f64.ne + i32.add + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.tee $2 + i32.const 3 + i32.shl + local.tee $5 + i32.sub + global.set $~lib/util/number/_K + local.get $5 + i32.const 9864 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $2 + i32.const 1 + i32.shl + i32.const 10560 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $3 + local.get $3 + i64.clz + i64.shl + local.tee $3 + i64.const 4294967295 + i64.and + local.set $10 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $6 + global.get $~lib/util/number/_frc_pow + local.tee $11 + i64.const 4294967295 + i64.and + local.tee $12 + i64.mul + local.get $10 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $13 + global.get $~lib/util/number/_frc_plus + local.tee $3 + i64.const 4294967295 + i64.and + local.set $14 + local.get $12 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $7 + i64.mul + local.get $12 + local.get $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $15 + global.get $~lib/util/number/_frc_minus + local.tee $16 + i64.const 4294967295 + i64.and + local.set $3 + local.get $12 + local.get $16 + i64.const 32 + i64.shr_u + local.tee $16 + i64.mul + local.get $3 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + local.get $11 + i64.const 32 + i64.shr_u + local.tee $11 + local.get $7 + i64.mul + local.get $15 + i64.const 32 + i64.shr_u + i64.add + local.get $11 + local.get $14 + i64.mul + local.get $15 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.set $7 + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + local.get $11 + i64.mul + local.get $13 + i64.const 32 + i64.shr_u + i64.add + local.get $10 + local.get $11 + i64.mul + local.get $13 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $7 + global.get $~lib/util/number/_exp_pow + global.get $~lib/util/number/_exp + i32.add + i32.const -64 + i32.sub + local.get $7 + local.get $11 + local.get $16 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $3 + local.get $11 + i64.mul + local.get $12 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + local.get $4 + call $~lib/util/number/genDigits + local.get $4 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $4 + i32.add + ) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f32) (result i32) + (local $2 f64) + (local $3 i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + local.get $1 + f64.promote_f32 + local.tee $2 + f64.const 0 + f64.eq + if + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + local.get $2 + local.get $2 + f64.sub + f64.const 0 + f64.ne + if + local.get $2 + local.get $2 + f64.ne + if + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + else + local.get $2 + f64.const 0 + f64.lt + local.tee $3 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $3 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + unreachable + end + local.get $0 + local.get $2 + i32.const 1 + call $~lib/util/number/dtoa_core + end + ) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result i32) + local.get $1 + f64.const 0 + f64.eq + if + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + end + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne + if + local.get $1 + local.get $1 + f64.ne + if + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + else + local.get $1 + f64.const 0 + f64.lt + local.tee $2 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + end + unreachable + end + local.get $0 + local.get $1 + i32.const 0 + call $~lib/util/number/dtoa_core + end + ) + (func $~lib/util/sort/insertionSort (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 $8 i32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.add + local.tee $3 + i32.load8_s offset=1 + local.tee $6 + local.set $5 + local.get $3 + i32.load8_s + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.add + local.tee $8 + i32.load8_s + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store8 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.add + local.get $3 + i32.store8 offset=2 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.add + local.tee $3 + i32.load8_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store8 offset=1 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.add + local.get $5 + i32.store8 offset=1 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.add + i32.load8_s + local.get $1 + i32.const 1 + i32.add + local.tee $4 + local.get $0 + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $5 + i32.load8_s offset=1 + local.get $5 + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.load8_s + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.load8_s + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $1 + i32.load8_s offset=1 + local.get $1 + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $4 + i32.add + local.get $0 + local.get $2 + i32.add + i32.load8_s + i32.store8 + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.add + local.get $0 + local.get $6 + i32.add + i32.load8_s offset=1 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.add + i32.load8_s + local.set $8 + local.get $2 + local.get $4 + i32.add + i32.load8_s + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $7 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.get $8 + i32.store8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.add + local.get $7 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.extend8_s + local.get $1 + i32.extend8_s + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.extend8_s + local.tee $1 + local.get $0 + i32.extend8_s + local.tee $0 + i32.gt_s + local.get $0 + local.get $1 + i32.gt_s + i32.sub + ) + (func $~lib/util/sort/insertionSort (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 $8 i32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.add + local.tee $3 + i32.load8_u offset=1 + local.tee $6 + local.set $5 + local.get $3 + i32.load8_u + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.add + local.tee $8 + i32.load8_u + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store8 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.add + local.get $3 + i32.store8 offset=2 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.add + local.tee $3 + i32.load8_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store8 offset=1 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.add + local.get $5 + i32.store8 offset=1 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.add + i32.load8_u + local.get $1 + i32.const 1 + i32.add + local.tee $4 + local.get $0 + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $5 + i32.load8_u offset=1 + local.get $5 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.load8_u + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $1 + i32.load8_u offset=1 + local.get $1 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $4 + i32.add + local.get $0 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.add + local.get $0 + local.get $6 + i32.add + i32.load8_u offset=1 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.add + i32.load8_u + local.set $8 + local.get $2 + local.get $4 + i32.add + i32.load8_u + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $7 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.get $8 + i32.store8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.add + local.get $7 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + local.tee $0 + local.get $1 + i32.const 255 + i32.and + local.tee $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 255 + i32.and + local.tee $1 + local.get $0 + i32.const 255 + i32.and + local.tee $0 + i32.gt_u + local.get $0 + local.get $1 + i32.gt_u + i32.sub + ) + (func $~lib/util/sort/insertionSort (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 $8 i32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s offset=2 + local.tee $6 + local.set $5 + local.get $3 + i32.load16_s + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $8 + i32.load16_s + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store16 offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 offset=4 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store16 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 offset=2 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_s offset=2 + local.get $5 + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_s offset=2 + local.get $1 + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load16_s + i32.store16 + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s offset=2 + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $7 + local.get $4 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.store16 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.extend16_s + local.get $1 + i32.extend16_s + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.extend16_s + local.tee $1 + local.get $0 + i32.extend16_s + local.tee $0 + i32.gt_s + local.get $0 + local.get $1 + i32.gt_s + i32.sub + ) + (func $~lib/util/sort/insertionSort (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 $8 i32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u offset=2 + local.tee $6 + local.set $5 + local.get $3 + i32.load16_u + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $8 + i32.load16_u + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store16 offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 offset=4 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store16 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 offset=2 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u offset=2 + local.get $5 + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_u offset=2 + local.get $1 + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load16_u + i32.store16 + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $7 + local.get $4 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.store16 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + local.tee $0 + local.get $1 + i32.const 65535 + i32.and + local.tee $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 65535 + i32.and + local.tee $1 + local.get $0 + i32.const 65535 + i32.and + local.tee $0 + i32.gt_u + local.get $0 + local.get $1 + i32.gt_u + i32.sub + ) + (func $~lib/util/sort/insertionSort (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 $8 i32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load offset=4 + local.tee $6 + local.set $5 + local.get $3 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.lt_s + local.get $0 + local.get $1 + i32.gt_s + i32.sub + ) + (func $~lib/util/sort/insertionSort (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 $8 i32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load offset=4 + local.tee $6 + local.set $5 + local.get $3 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.lt_u + local.get $0 + local.get $1 + i32.gt_u + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $7 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load offset=8 + local.tee $8 + local.set $6 + local.get $3 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + i64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store offset=16 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + i64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $6 + i64.store offset=8 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load offset=8 + local.get $6 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + i64.load offset=8 + local.get $1 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $9 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + i64.load + i64.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + i64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $7) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $8 + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + local.get $0 + local.get $1 + i64.gt_s + local.get $0 + local.get $1 + i64.lt_s + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i64) (result i32) + local.get $0 + local.get $1 + i64.lt_s + local.get $0 + local.get $1 + i64.gt_s + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $7 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load offset=8 + local.tee $8 + local.set $6 + local.get $3 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + i64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store offset=16 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + i64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $6 + i64.store offset=8 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load offset=8 + local.get $6 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + i64.load offset=8 + local.get $1 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $9 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + i64.load + i64.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + i64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $7) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $8 + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + local.get $0 + local.get $1 + i64.gt_u + local.get $0 + local.get $1 + i64.lt_u + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $0 i64) (param $1 i64) (result i32) + local.get $0 + local.get $1 + i64.lt_u + local.get $0 + local.get $1 + i64.gt_u + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 f32) + (local $6 f32) + (local $7 i32) + (local $8 f32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $7 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load offset=4 + local.tee $8 + local.set $6 + local.get $3 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect (type $11) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $11) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + f32.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $11) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + f32.store offset=4 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $6 + f32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load offset=4 + local.get $6 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $11) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + f32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + f32.load offset=4 + local.get $1 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $11) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 f32) + (local $8 f32) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $9 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + f32.load + f32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $7 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $11) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + f32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + local.get $1 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + local.get $3 + i32.xor + local.tee $3 + i32.gt_s + local.get $2 + local.get $3 + i32.lt_s + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 f32) (result i32) + local.get $0 + local.get $1 + f32.lt + local.get $0 + local.get $1 + f32.gt + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 f64) (result i32) + local.get $0 + local.get $1 + f64.lt + local.get $0 + local.get $1 + f64.gt + i32.sub + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:std/typedarray + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.shl + local.tee $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int8Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint8ClampedArray#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int16Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int32Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int64Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int64Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float32Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float64Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $std/typedarray/testInstantiate (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 48 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 38 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + local.get $0 + i32.const 1 + i32.shl + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + local.get $0 + i32.const 1 + i32.shl + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 53 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + local.get $0 + i32.const 2 + i32.shl + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + local.get $0 + i32.const 2 + i32.shl + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + local.get $0 + i32.const 3 + i32.shl + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + local.get $0 + i32.const 3 + i32.shl + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 77 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + local.get $0 + i32.const 2 + i32.shl + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 78 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 79 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + local.get $0 + i32.const 3 + i32.shl + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 747 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 736 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + i32.load + local.tee $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $4 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Float64Array#__set (param $0 i32) (param $1 i32) (param $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1457 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + f64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + i32.load + local.tee $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.tee $0 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $4 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i32) + (local $16 i32) + (local $17 f64) + (local $18 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f64.load + local.set $9 + local.get $0 + f64.load offset=8 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store + local.get $0 + f64.load offset=16 + local.set $18 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $18 + local.get $9 + local.get $17 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $18 + local.get $2 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store offset=8 + local.get $0 + local.get $9 + local.get $18 + local.get $1 + select + f64.store offset=16 + end + local.get $0 + f64.load + local.set $9 + local.get $0 + f64.load offset=8 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + f64.store offset=8 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $11 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 3 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $14 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $14 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $15 + local.get $11 + i32.add + local.tee $16 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $15 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $16 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 1696 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1696 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/typedarray/Float64Array#sort + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1446 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 320 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.const 255 + local.get $2 + i32.sub + i32.const 31 + i32.shr_s + local.get $2 + i32.or + local.get $2 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 309 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 36 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.tee $0 + local.get $2 + i32.add + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.gt_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.tee $2 + local.get $0 + local.get $3 + i32.add + local.get $3 + local.get $0 + local.get $0 + local.get $3 + i32.gt_s + select + local.get $3 + i32.const 0 + i32.lt_s + select + local.tee $0 + i32.lt_s + if + local.get $2 + local.get $4 + i32.add + local.get $1 + local.get $0 + local.get $2 + i32.sub + memory.fill + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 25 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.load offset=12 + i32.ge_u + if + i32.const 1360 + i32.const 1760 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.load offset=4 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.ne + br_if $folding-inner1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/typedarray/Int8Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + i32.const 2147483647 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/typedarray/Int8Array#fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + i32.load + local.tee $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.tee $0 + i32.add + i32.store offset=4 + local.get $4 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Int32Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $0 + i32.add + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.gt_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + local.get $3 + i32.add + local.get $3 + local.get $0 + local.get $0 + local.get $3 + i32.gt_s + select + local.get $3 + i32.const 0 + i32.lt_s + select + local.set $0 + block $__inlined_func$~lib/util/bytes/FILL$202 + local.get $1 + i32.eqz + local.get $1 + i32.const -1 + i32.eq + i32.or + if + local.get $0 + local.get $2 + i32.gt_s + if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $0 + local.get $2 + i32.sub + i32.const 2 + i32.shl + memory.fill + end + br $__inlined_func$~lib/util/bytes/FILL$202 + end + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1360 + i32.const 1760 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/isInt32ArrayEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner0 + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/typedarray/Int32Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + i32.const 2147483647 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/typedarray/Int32Array#fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Int32Array#slice@varargs (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $outOfRange + global.get $~argumentsLength + br_table $1of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $1 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + local.get $1 + call $~lib/typedarray/Int32Array#slice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.set $5 + local.get $0 + i32.load offset=4 + local.tee $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select + end + local.tee $1 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $4 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select + end + local.tee $2 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $4 + local.get $5 + i32.add + local.tee $3 + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + else + local.get $5 + local.get $4 + local.get $4 + local.get $5 + i32.gt_s + select + end + local.get $2 + i32.sub + local.tee $2 + local.get $4 + local.get $1 + i32.sub + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int32Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 2 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/typedarray/Int32Array#copyWithin + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 178 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#reduce (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $5 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $2 + local.get $4 + i32.add + i32.load8_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $6) + local.set $3 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 463 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 605 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 889 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1031 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1173 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1315 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 48 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 190 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 332 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 475 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 617 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 759 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 901 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#at (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1043 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#at (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1185 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#at (param $0 i32) (param $1 i32) (result f32) + (local $2 i32) + (local $3 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1327 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#at (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (local $3 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1469 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#reduceRight (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $2 + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $4 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $6) + local.set $3 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3600 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3600 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=16 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $6 + i32.add + i32.load8_s + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $3 + i32.add + local.get $7 + local.get $2 + local.get $0 + i32.const 3600 + i32.load + call_indirect (type $1) + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 167 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=16 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $6 + i32.add + i32.load8_u + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $3 + i32.add + local.get $7 + local.get $2 + local.get $0 + i32.const 3632 + i32.load + call_indirect (type $1) + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3664 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3664 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=16 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $6 + i32.add + i32.load8_u + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $3 + i32.add + local.get $7 + local.get $2 + local.get $0 + i32.const 3664 + i32.load + call_indirect (type $1) + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int16Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 452 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3696 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3696 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 1 + i32.shl + local.tee $8 + i32.add + i32.load16_s + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3696 + i32.load + call_indirect (type $1) + i32.store16 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint16Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 594 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3728 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3728 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 1 + i32.shl + local.tee $8 + i32.add + i32.load16_u + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3728 + i32.load + call_indirect (type $1) + i32.store16 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3760 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3760 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 2 + i32.shl + local.tee $8 + i32.add + i32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3760 + i32.load + call_indirect (type $1) + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint32Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 878 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3792 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3792 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 2 + i32.shl + local.tee $8 + i32.add + i32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3792 + i32.load + call_indirect (type $1) + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int64Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1020 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>" + (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 i64) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3824 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3824 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 3 + i32.shl + local.tee $8 + i32.add + i64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3824 + i32.load + call_indirect (type $24) + i64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 9 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint64Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1162 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>" + (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 i64) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3856 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3856 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 3 + i32.shl + local.tee $8 + i32.add + i64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3856 + i32.load + call_indirect (type $24) + i64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 9 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>" + (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 f32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3888 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3888 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 2 + i32.shl + local.tee $8 + i32.add + f32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3888 + i32.load + call_indirect (type $29) + f32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 9 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>" + (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 f64) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3920 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3920 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 3 + i32.shl + local.tee $8 + i32.add + f64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3920 + i32.load + call_indirect (type $30) + f64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 9 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Int8Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3952 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3952 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $7 + i32.add + i32.load8_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 3952 + i32.load + call_indirect (type $1) + if + local.get $0 + local.get $4 + i32.add + local.get $5 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Uint8Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3984 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3984 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $7 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 3984 + i32.load + call_indirect (type $1) + if + local.get $0 + local.get $4 + i32.add + local.get $5 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4016 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4016 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $7 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4016 + i32.load + call_indirect (type $1) + if + local.get $0 + local.get $4 + i32.add + local.get $5 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Int16Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4048 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4048 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4048 + i32.load + call_indirect (type $1) + if + local.get $4 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + i32.const 1 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Uint16Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4080 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4080 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4080 + i32.load + call_indirect (type $1) + if + local.get $4 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + i32.const 1 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Int32Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4112 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4112 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4112 + i32.load + call_indirect (type $1) + if + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + i32.const 2 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>" + (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Uint32Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4144 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4144 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4144 + i32.load + call_indirect (type $1) + if + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + i32.const 2 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4176 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4176 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4176 + i32.load + call_indirect (type $8) + if + local.get $4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + i32.const 3 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Uint64Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4208 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4208 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4208 + i32.load + call_indirect (type $8) + if + local.get $4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + i32.const 3 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Float32Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4240 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4240 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4240 + i32.load + call_indirect (type $14) + if + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + i32.const 2 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Float64Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4272 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4272 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4272 + i32.load + call_indirect (type $15) + if + local.get $4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + i32.const 3 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int8Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $8) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $8) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $14) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $15) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint8Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int16Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint16Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int32Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint32Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $8) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $8) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Float32Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $14) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Float64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $15) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int8Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint8Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int16Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint16Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int32Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint32Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $8) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $8) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Float32Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $14) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Float64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $15) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int8Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $8) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $8) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $14) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $15) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store + local.get $0 + i32.const 255 + i32.and + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $4) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store + local.get $0 + i32.const 65535 + i32.and + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + i64.extend_i32_s + local.get $0 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + f32.convert_i32_s + local.get $0 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + f64.convert_i32_s + local.get $0 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $4 + local.get $5 + i32.const 8 + i32.sub + local.set $6 + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.add + local.get $4 + i32.lt_u + if + local.get $1 + local.get $2 + i32.add + local.tee $7 + i64.load + local.tee $3 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $3 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.set $3 + local.get $7 + local.get $2 + local.get $6 + i32.add + local.get $1 + i32.sub + local.tee $7 + i64.load + local.tee $8 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $8 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $8 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $8 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + i64.store + local.get $7 + local.get $3 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $3 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + i64.store + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $5 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $4 + i32.lt_u + if + local.get $1 + local.get $2 + i32.add + local.tee $6 + i32.load8_u + local.set $7 + local.get $6 + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.add + local.tee $6 + i32.load8_u + i32.store8 + local.get $6 + local.get $7 + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Int8Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.extend8_s + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int8Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Uint8Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint8Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#reverse (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.tee $4 + i32.const 1 + i32.gt_u + if + local.get $4 + i32.const 1 + i32.shr_u + local.set $3 + local.get $4 + i32.const 2 + i32.sub + local.set $5 + loop $while-continue|0 + local.get $1 + i32.const 1 + i32.add + local.get $3 + i32.lt_u + if + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load + i32.const 16 + i32.rotr + local.set $7 + local.get $6 + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load + i32.const 16 + i32.rotr + i32.store + local.get $6 + local.get $7 + i32.store + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u + local.set $6 + local.get $5 + local.get $2 + local.get $4 + local.get $1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u + i32.store16 + local.get $5 + local.get $6 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int16Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Int16Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.extend16_s + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Int16Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint16Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int16Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Uint16Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint16Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $4 + i32.const 1 + i32.gt_u + if + local.get $4 + i32.const 1 + i32.shr_u + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $6 + i32.load + local.set $4 + local.get $6 + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.tee $6 + i32.load + i32.store + local.get $6 + local.get $4 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int32Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Int32Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + local.get $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int32Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int32Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Uint32Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + local.get $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint32Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $3 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load + local.set $4 + local.get $6 + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load + i64.store + local.get $6 + local.get $4 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64>" + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int64Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Int64Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Int64Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 8 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 7 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 6 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64>" + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint64Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int64Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Uint64Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint64Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 8 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 7 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 6 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $3 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load + local.set $4 + local.get $6 + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load + f32.store + local.get $6 + local.get $4 + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32>" + (local $0 i32) + (local $1 i32) + (local $2 f32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Float32Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Float32Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + f32.convert_i32_s + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Float32Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Float32Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 8 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 7 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 6 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $3 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + local.set $4 + local.get $6 + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + f64.store + local.get $6 + local.get $4 + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64>" + (local $0 i32) + (local $1 i32) + (local $2 f64) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Float64Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Float64Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Float64Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + f64.convert_i32_s + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Float64Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Float64Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 8 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + local.get $2 + i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Int8Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int8Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint8Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Int16Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Int16Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Uint16Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint16Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Int32Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int32Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int32Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint32Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Uint32Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint32Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $1 + i64.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $1 + i64.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Int64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const -1 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const 10 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const -100 + call $~lib/typedarray/Int64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 0 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 11 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const -1 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 3 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const 100 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const -10 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const -11 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Int64Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 4 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 9 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 10 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 1 + call $~lib/typedarray/Int64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 2 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $1 + i64.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $1 + i64.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const -1 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const 10 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const -100 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 0 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 11 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const -1 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 3 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const 100 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const -10 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const -11 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint64Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 4 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 9 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 10 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 1 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 2 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $1 + f32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#lastIndexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $1 + f32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#lastIndexOf@varargs (param $0 i32) (param $1 f32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Float32Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 0 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 11 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const -1 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 2 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 3 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 4 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 1 + i32.const 10 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 1 + i32.const -100 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const 0 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const 11 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const -1 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const 3 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 4 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 3 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 2 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 1 + i32.const 100 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 1 + i32.const -10 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 1 + i32.const -11 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Float32Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 3 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 4 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 5 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 9 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 10 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 11 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 5 + i32.const 1 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 5 + i32.const 2 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $1 + f64.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#lastIndexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $1 + f64.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#lastIndexOf@varargs (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Float64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Float64Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 0 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 11 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const -1 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 2 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 3 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 4 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const 10 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const -100 + call $~lib/typedarray/Float64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f64.const 0 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f64.const 11 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f64.const -1 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f64.const 3 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 4 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 3 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 2 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const 100 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const -10 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const -11 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Float64Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 3 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 4 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 5 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 9 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 10 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 11 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 5 + i32.const 1 + call $~lib/typedarray/Float64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 5 + i32.const 2 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.le_s + select + i32.const 1 + i32.shl + local.set $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.ge_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + i32.sub + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + return + end + local.get $3 + i32.eqz + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $3 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/typedarray/Int8Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1408 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1408 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load8_s + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1408 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + local.get $6 + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $5 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1408 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$714 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$714 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/typedarray/Uint8Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1409 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load8_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + local.get $6 + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $5 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Uint8Array#join + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1410 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load16_s + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + local.get $6 + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint16Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1411 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load16_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + local.get $6 + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int32Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1412 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + local.get $6 + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint32Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1413 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + local.get $6 + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$5 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$5 + end + block $folding-inner0 + local.get $6 + i32.eqz + if + block $__inlined_func$~lib/util/number/itoa64 (result i32) + local.get $5 + i64.load + i64.extend32_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8000 + br $__inlined_func$~lib/util/number/itoa64 + end + i64.const 0 + local.get $2 + i64.sub + local.get $2 + local.get $2 + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.const 1 + i32.shl + local.tee $0 + select + local.tee $2 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $4 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $0 + local.get $1 + i32.add + local.get $3 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $2 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $2 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $2 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $2 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $2 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $2 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $2 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $2 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $2 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $0 + local.get $1 + i32.add + local.get $2 + local.get $3 + call $~lib/util/number/utoa64_dec_lut + end + local.get $0 + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + end + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $7 + i32.const 21 + i32.add + local.get $6 + i32.mul + i32.const 21 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $7 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $7 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $7 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$5 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + return + end + local.get $7 + i32.eqz + if + local.get $0 + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64$749 + local.get $3 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8000 + local.set $1 + br $__inlined_func$~lib/util/number/utoa64$749 + end + local.get $3 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.wrap_i64 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $3 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $3 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $3 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $3 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $3 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $3 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $3 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + local.get $0 + call $~lib/util/number/utoa64_dec_lut + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 20 + i32.add + local.get $7 + i32.mul + i32.const 20 + i32.add + local.tee $5 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $1 + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $5 + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring + local.set $1 + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $8 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + return + end + local.get $8 + i32.eqz + if + local.get $0 + f32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 9664 + local.set $0 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $5 + f64.promote_f32 + local.tee $3 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.ne + if + i32.const 9696 + local.set $0 + local.get $3 + local.get $3 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 9728 + i32.const 9776 + local.get $3 + f64.const 0 + f64.lt + select + local.set $0 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 9808 + local.get $3 + i32.const 1 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 9808 + local.get $1 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 28 + i32.add + local.get $8 + i32.mul + i32.const 28 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $8 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $1 + if + local.get $7 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $6 + local.get $7 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + f32.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float32Array#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + call $~lib/util/string/joinFloatArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + return + end + local.get $7 + i32.eqz + if + local.get $0 + f64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 9664 + local.set $0 + block $~lib/util/number/dtoa_impl|inlined.1 + local.get $3 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.1 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.ne + if + i32.const 9696 + local.set $0 + local.get $3 + local.get $3 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.1 + i32.const 9728 + i32.const 9776 + local.get $3 + f64.const 0 + f64.lt + select + local.set $0 + br $~lib/util/number/dtoa_impl|inlined.1 + end + i32.const 9808 + local.get $3 + i32.const 0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 9808 + local.get $1 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 28 + i32.add + local.get $7 + i32.mul + i32.const 28 + i32.add + local.tee $5 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $1 + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $5 + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + call $~lib/util/string/joinFloatArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $3 + local.get $1 + i32.lt_u + if + i32.const 1360 + i32.const 1632 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + i32.const -1 + i32.eq + if (result i32) + local.get $3 + local.get $1 + i32.sub + else + i32.const 1056 + i32.const 1632 + i32.const 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.set $2 + else + local.get $1 + local.get $2 + i32.add + local.get $3 + i32.gt_s + if + i32.const 1056 + i32.const 1632 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + local.get $3 + local.get $0 + i32.store + local.get $3 + local.get $0 + call $~lib/rt/itcms/__link + local.get $3 + local.get $2 + i32.store offset=8 + local.get $3 + local.get $0 + local.get $1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 10928 + local.get $0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $0 + local.get $4 + local.get $5 + local.get $2 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store + local.get $5 + local.get $0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $4 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $~lib/typedarray/Int8Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + call $~lib/typedarray/Int8Array#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 10928 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $0 + local.get $4 + local.get $5 + local.get $2 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store + local.get $5 + local.get $0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $4 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 10928 + local.get $0 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $4 + local.get $5 + local.get $1 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store + local.get $5 + local.get $0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $4 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Int16Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + call $~lib/typedarray/Int16Array#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 10928 + local.get $0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $4 + local.get $5 + local.get $1 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store + local.get $5 + local.get $0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $4 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint16Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + call $~lib/typedarray/Uint16Array#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 10928 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $4 + local.get $5 + local.get $1 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $4 + i32.const 3 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store + local.get $5 + local.get $0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $4 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Int32Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + call $~lib/typedarray/Int32Array#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 10928 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $4 + local.get $5 + local.get $1 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $4 + i32.const 3 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store + local.get $5 + local.get $0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $4 + i32.store offset=8 + local.get $5 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint32Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + call $~lib/typedarray/Uint32Array#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 10928 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $5 + local.get $6 + local.get $1 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $5 + i32.const 7 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store + local.get $6 + local.get $0 + call $~lib/rt/itcms/__link + local.get $6 + local.get $5 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Int64Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + call $~lib/typedarray/Int64Array#__get + local.get $3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 10928 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $5 + local.get $6 + local.get $1 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $5 + i32.const 7 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store + local.get $6 + local.get $0 + call $~lib/rt/itcms/__link + local.get $6 + local.get $5 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint64Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + call $~lib/typedarray/Uint64Array#__get + local.get $3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 10928 + local.get $0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $5 + local.get $6 + local.get $1 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $5 + i32.const 3 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store + local.get $6 + local.get $0 + call $~lib/rt/itcms/__link + local.get $6 + local.get $5 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Float32Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + call $~lib/typedarray/Float32Array#__get + local.get $3 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 10928 + local.get $0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $5 + local.get $6 + local.get $1 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $5 + i32.const 7 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store + local.get $6 + local.get $0 + call $~lib/rt/itcms/__link + local.get $6 + local.get $5 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Float64Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + call $~lib/typedarray/Float64Array#__get + local.get $3 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $1 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $0 + local.get $2 + i32.add + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_s + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.load offset=4 + i32.add + i32.load8_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + i32.ne + if + i32.const 11344 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $2 + i32.const 6 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 6 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $2 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 4 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $1 + i32.const 7 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 7 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11312 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $8 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 + local.get $1 + local.get $8 + i32.lt_s + if + local.get $1 + local.get $6 + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + i32.trunc_sat_f32_s + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11392 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11424 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $1 + local.get $7 + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_s + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11456 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11488 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint8Array#__uget (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint8Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Uint8Array#__uget + local.tee $5 + local.get $4 + i32.ne + if + i32.const 11552 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_u + local.get $5 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11520 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $8 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 + local.get $1 + local.get $8 + i32.lt_s + if + local.get $1 + local.get $6 + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + i32.trunc_sat_f32_u + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11600 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11632 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $1 + local.get $7 + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_u + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11664 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11696 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint8Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Uint8Array#__uget + local.tee $5 + local.get $4 + i32.ne + if + i32.const 11760 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_u + local.get $5 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $2 + local.get $3 + i32.add + i32.lt_s + end + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + local.get $0 + i32.load offset=4 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.add + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + local.tee $4 + i32.wrap_i64 + local.tee $5 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i64.extend_i32_s + i32.const 255 + local.get $5 + i32.sub + i32.const 31 + i32.shr_s + i64.extend_i32_s + local.get $4 + i64.or + i64.and + i64.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $2 + local.get $3 + i32.add + i32.lt_s + end + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + local.get $0 + i32.load offset=4 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.add + i32.const 255 + local.get $4 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.tee $1 + i32.sub + i32.const 31 + i32.shr_s + local.get $1 + i32.or + local.get $1 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + (local $0 i32) + (local $1 i32) + (local $2 f32) + (local $3 f64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $8 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $10 + loop $for-loop|0 + local.get $1 + local.get $8 + i32.lt_s + if + local.get $1 + local.get $9 + i32.add + i32.const 255 + local.get $10 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.sub + i32.const 31 + i32.shr_s + local.get $4 + i32.or + local.get $4 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11728 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $4 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.add + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $8 + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $2 + local.get $2 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $2 + f32.const 255 + f32.min + f32.const 0 + f32.max + i32.trunc_sat_f32_u + else + i32.const 0 + end + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11824 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11856 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $4 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|01 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $5 + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $3 + f64.const 255 + f64.min + f64.const 0 + f64.max + i32.trunc_sat_f64_u + else + i32.const 0 + end + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|01 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11888 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $4 + i32.const 7 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 7 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $6 + i32.const 0 + local.set $1 + loop $for-loop|02 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $5 + i32.add + i32.const 255 + local.get $1 + local.get $6 + i32.add + i32.load8_s + local.tee $7 + i32.sub + i32.const 31 + i32.shr_s + local.get $7 + i32.or + local.get $7 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|02 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11920 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $1 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#__uget (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int16Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Int16Array#__uget + local.tee $5 + local.get $4 + i32.ne + if + i32.const 12000 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $2 + i32.const 6 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $2 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.add + i32.load8_u + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $2 + i32.const 1 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $1 + i32.const 7 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 14 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.add + i32.load8_s + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 11952 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $8 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 6 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 + local.get $1 + local.get $8 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + i32.trunc_sat_f32_s + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12048 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12096 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 4 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_s + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12144 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12192 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint16Array#__uget (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint16Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Uint16Array#__uget + local.tee $5 + local.get $4 + i32.ne + if + i32.const 12288 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_u + local.get $5 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 12240 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $8 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 6 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 + local.get $1 + local.get $8 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + i32.trunc_sat_f32_u + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 12336 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 12384 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 4 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_u + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 12432 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 12480 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/array/Array#get:length + local.set $3 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + local.get $3 + i32.add + i32.lt_s + end + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#__uget (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Int32Array#__uget + local.tee $5 + local.get $4 + i32.ne + if + i32.const 12592 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + i32.const 6 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store32 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.add + i32.load8_u + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 16 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $1 + i32.const 7 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 28 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.add + i32.load8_s + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + i32.const 11008 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12528 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $6 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.add + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $10 + loop $for-loop|0 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $10 + local.get $1 + i32.const 2 + i32.shl + local.tee $7 + i32.add + f32.load + local.set $3 + local.get $7 + local.get $9 + i32.add + local.get $3 + i32.trunc_sat_f32_s + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12640 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $0 + local.get $8 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12704 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_s + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12768 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12832 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint32Array#__uget (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint32Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Uint32Array#__uget + local.tee $5 + local.get $4 + i32.ne + if + i32.const 12960 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_u + local.get $5 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + i32.const 11008 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 12896 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $6 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.add + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $10 + loop $for-loop|0 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $10 + local.get $1 + i32.const 2 + i32.shl + local.tee $7 + i32.add + f32.load + local.set $3 + local.get $7 + local.get $9 + i32.add + local.get $3 + i32.trunc_sat_f32_u + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 13008 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $0 + local.get $8 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 13072 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_u + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 13136 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 13200 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $1 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i64.load32_s + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#__uget (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int64Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Int64Array#__uget + local.tee $5 + local.get $4 + i64.ne + if + i32.const 13376 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i64_s + local.get $5 + f64.convert_i64_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.const 6 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 48 + i32.add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $2 + i32.const 3 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.add + i64.load8_u + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 32 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i64.load16_s + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $1 + i32.const 7 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 56 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.add + i64.load8_s + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13264 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $7 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 + local.get $1 + local.get $7 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $4 + i64.trunc_sat_f32_s + i64.const 0 + local.get $4 + local.get $4 + f32.sub + f32.const 0 + f32.eq + select + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13424 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13536 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 16 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 3 + i32.shl + local.tee $9 + i32.add + f64.load + local.set $3 + local.get $7 + local.get $9 + i32.add + local.get $3 + i64.trunc_sat_f64_s + i64.const 0 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + select + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13648 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13760 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint64Array#__uget (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint64Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Uint64Array#__uget + local.tee $5 + local.get $4 + i64.ne + if + i32.const 13984 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i64_u + local.get $5 + f64.convert_i64_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 13872 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $7 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 + local.get $1 + local.get $7 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $4 + i64.trunc_sat_f32_u + i64.const 0 + local.get $4 + local.get $4 + f32.sub + f32.const 0 + f32.eq + select + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 14032 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 14144 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 16 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 3 + i32.shl + local.tee $9 + i32.add + f64.load + local.set $3 + local.get $7 + local.get $9 + i32.add + local.get $3 + i64.trunc_sat_f64_u + i64.const 0 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + select + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 14256 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 14368 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Float32Array#__uget (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Float32Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Float32Array#__uget + local.tee $5 + local.get $4 + f32.ne + if + i32.const 14544 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.promote_f32 + local.get $5 + f64.promote_f32 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + (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) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $4 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $8 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 2 + i32.shl + local.tee $5 + i32.add + local.get $5 + local.get $8 + i32.add + i32.load + f32.convert_i32_s + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 14480 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + local.get $0 + i32.const 11088 + i32.const 3 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 14592 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $4 + i32.const 6 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $6 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + f32.convert_i64_s + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 14656 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $4 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $1 + loop $for-loop|01 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + f32.convert_i32_u + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|01 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 16 + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $1 + loop $for-loop|02 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + f32.convert_i32_s + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|02 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + i32.const 7 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 28 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|03 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_s + f32.convert_i32_s + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|03 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 14720 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Float64Array#__uget (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Float64Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Float64Array#__uget + local.tee $5 + local.get $4 + f64.ne + if + i32.const 14896 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + local.get $5 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $5 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $7 + loop $for-loop|0 + local.get $1 + local.get $5 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + f64.convert_i32_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 14784 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $5 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $7 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $5 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + f64.promote_f32 + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 14944 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int64Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $5 + i32.const 6 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 48 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $1 + loop $for-loop|01 + local.get $1 + local.get $5 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 3 + i32.shl + local.tee $7 + i32.add + local.get $2 + local.get $7 + i32.add + i64.load + f64.convert_i64_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|01 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 15056 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $1 + loop $for-loop|02 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + f64.convert_i32_u + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|02 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 32 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|03 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + f64.convert_i32_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|03 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.const 7 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 56 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|04 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_s + f64.convert_i32_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|04 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 15168 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $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 i64) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load8_s + local.set $1 + local.get $0 + i32.load8_s offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store8 + local.get $0 + i32.load8_s offset=2 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store8 offset=1 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store8 offset=2 + end + local.get $0 + i32.load8_s + local.set $1 + local.get $0 + i32.load8_s offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store8 + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store8 offset=1 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $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 i64) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load8_u + local.set $1 + local.get $0 + i32.load8_u offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store8 + local.get $0 + i32.load8_u offset=2 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store8 offset=1 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store8 offset=2 + end + local.get $0 + i32.load8_u + local.set $1 + local.get $0 + i32.load8_u offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store8 + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store8 offset=1 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $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 i64) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load16_s + local.set $1 + local.get $0 + i32.load16_s offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store16 + local.get $0 + i32.load16_s offset=4 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store16 offset=2 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store16 offset=4 + end + local.get $0 + i32.load16_s + local.set $1 + local.get $0 + i32.load16_s offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store16 + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store16 offset=2 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 1 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $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 i64) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load16_u + local.set $1 + local.get $0 + i32.load16_u offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store16 + local.get $0 + i32.load16_u offset=4 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store16 offset=2 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store16 offset=4 + end + local.get $0 + i32.load16_u + local.set $1 + local.get $0 + i32.load16_u offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store16 + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store16 offset=2 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 1 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $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 i64) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store + local.get $0 + i32.load offset=8 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store offset=4 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $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 i64) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store + local.get $0 + i32.load offset=8 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store offset=4 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i64) + (local $17 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $9 + local.get $9 + local.get $16 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store + local.get $0 + i64.load offset=16 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $16 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store offset=8 + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + i64.store offset=16 + end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $9 + local.get $9 + local.get $16 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store + local.get $0 + local.get $9 + local.get $16 + local.get $1 + select + i64.store offset=8 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $11 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 3 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $11 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i64) + (local $17 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $9 + local.get $9 + local.get $16 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store + local.get $0 + i64.load offset=16 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $16 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store offset=8 + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + i64.store offset=16 + end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $9 + local.get $9 + local.get $16 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store + local.get $0 + local.get $9 + local.get $16 + local.get $1 + select + i64.store offset=8 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $11 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 3 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $11 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i32) + (local $16 i32) + (local $17 f32) + (local $18 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + f32.load offset=8 + local.set $18 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $18 + local.get $9 + local.get $17 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $18 + local.get $2 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store offset=4 + local.get $0 + local.get $9 + local.get $18 + local.get $1 + select + f32.store offset=8 + end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + f32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $11 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $14 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $14 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $15 + local.get $11 + i32.add + local.tee $16 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $15 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $16 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $start:std/typedarray + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 f32) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 f32) + (local $12 f64) + global.get $~lib/memory/__stack_pointer + i32.const 124 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner23 + block $folding-inner22 + block $folding-inner21 + block $folding-inner20 + block $folding-inner19 + block $folding-inner18 + block $folding-inner17 + block $folding-inner16 + block $folding-inner15 + block $folding-inner13 + block $folding-inner12 + block $folding-inner11 + block $folding-inner10 + block $folding-inner9 + block $folding-inner8 + block $folding-inner7 + block $folding-inner6 + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 124 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 49088 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1284 + i32.const 1280 + i32.store + i32.const 1288 + i32.const 1280 + i32.store + i32.const 1280 + global.set $~lib/rt/itcms/pinSpace + i32.const 1316 + i32.const 1312 + i32.store + i32.const 1320 + i32.const 1312 + i32.store + i32.const 1312 + global.set $~lib/rt/itcms/toSpace + i32.const 1460 + i32.const 1456 + i32.store + i32.const 1464 + i32.const 1456 + i32.store + i32.const 1456 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $std/typedarray/testInstantiate + i32.const 5 + call $std/typedarray/testInstantiate + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 99 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 100 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#subarray + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + call $~lib/typedarray/Float64Array#constructor + local.tee $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + f64.const 7 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 6 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 7 + f64.const 8 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Float64Array#subarray + local.tee $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/typedarray/Int64Array#get:length + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 16 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.load offset=8 + i32.const 32 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + local.get $6 + call $~lib/typedarray/Float64Array#sort@varargs + drop + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const -32 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 256 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + if + i32.const 0 + i32.const 1568 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 255 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 137 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $6 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int8Array#fill + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 1728 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $6 + local.get $7 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $6 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int8Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 1808 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $6 + local.get $7 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int8Array#fill + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 1840 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $6 + local.get $7 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $6 + i32.const 2 + i32.const -2 + call $~lib/typedarray/Int8Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 1872 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $6 + local.get $7 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 158 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int8Array#fill + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 1904 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $6 + local.get $7 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 161 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $7 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $7 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int8Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 165 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 167 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 3 + i32.const 0 + i32.const 16 + i32.const 1936 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $7 + local.get $8 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 168 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 0 + i32.const 16 + i32.const 1968 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $6 + local.get $7 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 169 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $6 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#fill + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2000 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $6 + local.get $7 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 181 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $6 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int32Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2048 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $6 + local.get $7 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int32Array#fill + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2096 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $6 + local.get $7 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $6 + i32.const 2 + i32.const -2 + call $~lib/typedarray/Int32Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2144 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $6 + local.get $7 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 190 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int32Array#fill + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2192 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $6 + local.get $7 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $7 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $7 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int32Array#fill@varargs + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 197 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 199 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 3 + i32.const 2 + i32.const 17 + i32.const 2240 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $7 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2272 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $6 + local.get $7 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 201 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Int8Array#constructor + local.tee $6 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 1 + i32.const 6 + call $~lib/typedarray/Int8Array#subarray + local.tee $6 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 222 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/typedarray/Int8Array#get:length + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 224 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.load offset=8 + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 1 + i32.const 5 + call $~lib/typedarray/Int8Array#subarray + local.tee $6 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 228 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/typedarray/Int8Array#get:length + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 229 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 231 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $6 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 234 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 236 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $6 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $6 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $7 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + i32.const 2 + global.set $~argumentsLength + local.get $6 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#copyWithin@varargs + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2320 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $6 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 248 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $7 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $6 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + i32.const 2 + global.set $~argumentsLength + local.get $6 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#copyWithin@varargs + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2368 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $6 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 250 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $7 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $6 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + i32.const 2 + global.set $~argumentsLength + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#copyWithin@varargs + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2416 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $6 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 252 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $7 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $6 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + i32.const 2 + global.set $~argumentsLength + local.get $6 + i32.const 2 + i32.const 2 + call $~lib/typedarray/Int32Array#copyWithin@varargs + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2464 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $6 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 254 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $7 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $6 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + local.get $6 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2512 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $6 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 256 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $7 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $6 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + local.get $6 + i32.const 1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2560 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $6 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 258 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $7 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $6 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + local.get $6 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2608 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $6 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 260 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $7 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $6 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + i32.const 2 + global.set $~argumentsLength + local.get $6 + i32.const 0 + i32.const -2 + call $~lib/typedarray/Int32Array#copyWithin@varargs + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2656 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $6 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 262 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $7 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $6 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + local.get $6 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2704 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $6 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 264 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $7 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $6 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + local.get $6 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/typedarray/Int32Array#copyWithin + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2752 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $6 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 266 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $7 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $6 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + local.get $6 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2800 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $6 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 268 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $7 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $6 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=60 + i32.const 2 + global.set $~argumentsLength + local.get $6 + i32.const -4 + i32.const -3 + call $~lib/typedarray/Int32Array#copyWithin@varargs + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2848 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $6 + local.get $7 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 270 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $6 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $7 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 282 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 283 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 284 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#slice + local.tee $8 + i32.store offset=72 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 287 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 288 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 289 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 290 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.load offset=8 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 291 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#slice + local.tee $7 + i32.store offset=76 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 294 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 295 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 296 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 297 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $6 + call $~lib/typedarray/Int32Array#slice@varargs + local.tee $7 + i32.store offset=80 + local.get $6 + local.get $7 + i32.eq + if + i32.const 0 + i32.const 1568 + i32.const 300 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int32Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/typedarray/Int32Array#get:length + local.get $8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 301 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 302 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.load offset=8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 303 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2896 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2896 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int8Array#get:length + local.set $8 + loop $for-loop|0 + local.get $0 + local.get $8 + i32.lt_s + if + local.get $0 + local.get $7 + i32.add + i32.load8_s + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $9 + local.get $0 + local.get $6 + i32.const 2896 + i32.load + call_indirect (type $6) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2928 + i32.store offset=8 + local.get $0 + i32.const 2928 + call $~lib/typedarray/Uint8Array#reduce + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2960 + i32.store offset=8 + local.get $0 + i32.const 2960 + call $~lib/typedarray/Uint8Array#reduce + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2992 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2992 + i32.store offset=4 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int16Array#get:length + local.set $8 + loop $for-loop|02 + local.get $0 + local.get $8 + i32.lt_s + if + local.get $7 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $9 + local.get $0 + local.get $6 + i32.const 2992 + i32.load + call_indirect (type $6) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|02 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3024 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3024 + i32.store offset=4 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int16Array#get:length + local.set $8 + loop $for-loop|04 + local.get $0 + local.get $8 + i32.lt_s + if + local.get $7 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $9 + local.get $0 + local.get $6 + i32.const 3024 + i32.load + call_indirect (type $6) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|04 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3056 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3056 + i32.store offset=4 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int32Array#get:length + local.set $8 + loop $for-loop|06 + local.get $0 + local.get $8 + i32.lt_s + if + local.get $7 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $9 + local.get $0 + local.get $6 + i32.const 3056 + i32.load + call_indirect (type $6) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|06 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 6 + i32.ne + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3088 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3088 + i32.store offset=4 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int32Array#get:length + local.set $8 + loop $for-loop|08 + local.get $0 + local.get $8 + i32.lt_s + if + local.get $7 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $9 + local.get $0 + local.get $6 + i32.const 3088 + i32.load + call_indirect (type $6) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|08 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 6 + i32.ne + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3120 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3120 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $7 + loop $for-loop|010 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $3 + local.get $10 + local.get $0 + local.get $1 + i32.const 3120 + i32.load + call_indirect (type $17) + local.set $3 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|010 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i64.const 6 + i64.ne + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + i64.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $7 + loop $for-loop|012 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $3 + local.get $10 + local.get $0 + local.get $1 + i32.const 3152 + i32.load + call_indirect (type $17) + local.set $3 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|012 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i64.const 6 + i64.ne + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3184 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + local.set $7 + loop $for-loop|014 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $4 + local.get $11 + local.get $0 + local.get $1 + i32.const 3184 + i32.load + call_indirect (type $22) + local.set $4 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|014 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + f32.const 6 + f32.ne + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3216 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3216 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $7 + loop $for-loop|016 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $5 + local.get $12 + local.get $0 + local.get $1 + i32.const 3216 + i32.load + call_indirect (type $23) + local.set $5 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|016 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + f64.const 6 + f64.ne + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#at + i32.const 1 + i32.ne + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + call $~lib/typedarray/Int8Array#at + i32.const 3 + i32.ne + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -3 + call $~lib/typedarray/Int8Array#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#at + i32.const 1 + i32.ne + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + call $~lib/typedarray/Uint8Array#at + i32.const 3 + i32.ne + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -3 + call $~lib/typedarray/Uint8Array#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#at + i32.const 1 + i32.ne + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + call $~lib/typedarray/Uint8ClampedArray#at + i32.const 3 + i32.ne + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -3 + call $~lib/typedarray/Uint8ClampedArray#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int16Array#at + i32.const 1 + i32.ne + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + call $~lib/typedarray/Int16Array#at + i32.const 3 + i32.ne + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -3 + call $~lib/typedarray/Int16Array#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint16Array#at + i32.const 1 + i32.ne + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + call $~lib/typedarray/Uint16Array#at + i32.const 3 + i32.ne + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -3 + call $~lib/typedarray/Uint16Array#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#at + i32.const 1 + i32.ne + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + call $~lib/typedarray/Int32Array#at + i32.const 3 + i32.ne + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -3 + call $~lib/typedarray/Int32Array#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint32Array#at + i32.const 1 + i32.ne + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + call $~lib/typedarray/Uint32Array#at + i32.const 3 + i32.ne + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -3 + call $~lib/typedarray/Uint32Array#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int64Array#at + i64.const 1 + i64.ne + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + call $~lib/typedarray/Int64Array#at + i64.const 3 + i64.ne + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -3 + call $~lib/typedarray/Int64Array#at + i64.const 1 + i64.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint64Array#at + i64.const 1 + i64.ne + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + call $~lib/typedarray/Uint64Array#at + i64.const 3 + i64.ne + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -3 + call $~lib/typedarray/Uint64Array#at + i64.const 1 + i64.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float32Array#at + f32.const 1 + f32.ne + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + call $~lib/typedarray/Float32Array#at + f32.const 3 + f32.ne + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -3 + call $~lib/typedarray/Float32Array#at + f32.const 1 + f32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float64Array#at + f64.const 1 + f64.ne + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + call $~lib/typedarray/Float64Array#at + f64.const 3 + f64.ne + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -3 + call $~lib/typedarray/Float64Array#at + f64.const 1 + f64.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store offset=4 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|018 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $0 + local.get $7 + i32.add + i32.load8_s + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $8 + local.get $0 + local.get $6 + i32.const 3248 + i32.load + call_indirect (type $6) + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|018 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner22 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3280 + i32.store offset=8 + local.get $0 + i32.const 3280 + call $~lib/typedarray/Uint8Array#reduceRight + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner22 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3312 + i32.store offset=8 + local.get $0 + i32.const 3312 + call $~lib/typedarray/Uint8Array#reduceRight + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner22 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3344 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3344 + i32.store offset=4 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|020 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $7 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $8 + local.get $0 + local.get $6 + i32.const 3344 + i32.load + call_indirect (type $6) + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|020 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner22 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3376 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3376 + i32.store offset=4 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|022 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $7 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $8 + local.get $0 + local.get $6 + i32.const 3376 + i32.load + call_indirect (type $6) + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|022 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner22 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=4 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|024 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $7 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $8 + local.get $0 + local.get $6 + i32.const 3408 + i32.load + call_indirect (type $6) + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|024 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 6 + i32.ne + br_if $folding-inner22 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3440 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3440 + i32.store offset=4 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|026 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $7 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $8 + local.get $0 + local.get $6 + i32.const 3440 + i32.load + call_indirect (type $6) + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|026 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 6 + i32.ne + br_if $folding-inner22 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i64.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|028 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $6 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $3 + local.get $10 + local.get $0 + local.get $1 + i32.const 3472 + i32.load + call_indirect (type $17) + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|028 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i64.const 6 + i64.ne + br_if $folding-inner22 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i64.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|030 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $6 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $3 + local.get $10 + local.get $0 + local.get $1 + i32.const 3504 + i32.load + call_indirect (type $17) + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|030 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i64.const 6 + i64.ne + br_if $folding-inner22 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + f32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|032 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $4 + local.get $11 + local.get $0 + local.get $1 + i32.const 3536 + i32.load + call_indirect (type $22) + local.set $4 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|032 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + f32.const 6 + f32.ne + br_if $folding-inner22 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + f64.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3568 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3568 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|034 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $6 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $5 + local.get $12 + local.get $0 + local.get $1 + i32.const 3568 + i32.load + call_indirect (type $23) + local.set $5 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|034 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + f64.const 6 + f64.ne + br_if $folding-inner22 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + call $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>" + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4304 + i32.store offset=8 + local.get $0 + i32.const 4304 + call $~lib/typedarray/Int8Array#some + i32.eqz + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4336 + i32.store offset=8 + local.get $0 + i32.const 4336 + call $~lib/typedarray/Int8Array#some + br_if $folding-inner7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4368 + i32.store offset=8 + local.get $0 + i32.const 4368 + call $~lib/typedarray/Uint8Array#some + i32.eqz + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4400 + i32.store offset=8 + local.get $0 + i32.const 4400 + call $~lib/typedarray/Uint8Array#some + br_if $folding-inner7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4432 + i32.store offset=8 + local.get $0 + i32.const 4432 + call $~lib/typedarray/Uint8Array#some + i32.eqz + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4464 + i32.store offset=8 + local.get $0 + i32.const 4464 + call $~lib/typedarray/Uint8Array#some + br_if $folding-inner7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4496 + i32.store offset=8 + local.get $0 + i32.const 4496 + call $~lib/typedarray/Int16Array#some + i32.eqz + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4528 + i32.store offset=8 + local.get $0 + i32.const 4528 + call $~lib/typedarray/Int16Array#some + br_if $folding-inner7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4560 + i32.store offset=8 + local.get $0 + i32.const 4560 + call $~lib/typedarray/Uint16Array#some + i32.eqz + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4592 + i32.store offset=8 + local.get $0 + i32.const 4592 + call $~lib/typedarray/Uint16Array#some + br_if $folding-inner7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4624 + i32.store offset=8 + local.get $0 + i32.const 4624 + call $~lib/typedarray/Int32Array#some + i32.eqz + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store offset=8 + local.get $0 + i32.const 4656 + call $~lib/typedarray/Int32Array#some + br_if $folding-inner7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4688 + i32.store offset=8 + local.get $0 + i32.const 4688 + call $~lib/typedarray/Uint32Array#some + i32.eqz + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4720 + i32.store offset=8 + local.get $0 + i32.const 4720 + call $~lib/typedarray/Uint32Array#some + br_if $folding-inner7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4752 + i32.store offset=8 + local.get $0 + i32.const 4752 + call $~lib/typedarray/Int64Array#some + i32.eqz + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4784 + i32.store offset=8 + local.get $0 + i32.const 4784 + call $~lib/typedarray/Int64Array#some + br_if $folding-inner7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4816 + i32.store offset=8 + local.get $0 + i32.const 4816 + call $~lib/typedarray/Uint64Array#some + i32.eqz + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4848 + i32.store offset=8 + local.get $0 + i32.const 4848 + call $~lib/typedarray/Uint64Array#some + br_if $folding-inner7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store offset=8 + local.get $0 + i32.const 4880 + call $~lib/typedarray/Float32Array#some + i32.eqz + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4912 + i32.store offset=8 + local.get $0 + i32.const 4912 + call $~lib/typedarray/Float32Array#some + br_if $folding-inner7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4944 + i32.store offset=8 + local.get $0 + i32.const 4944 + call $~lib/typedarray/Float64Array#some + i32.eqz + br_if $folding-inner6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=8 + local.get $0 + i32.const 4976 + call $~lib/typedarray/Float64Array#some + br_if $folding-inner7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5008 + i32.store offset=8 + local.get $0 + i32.const 5008 + call $~lib/typedarray/Int8Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5040 + i32.store offset=8 + local.get $0 + i32.const 5040 + call $~lib/typedarray/Int8Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5072 + i32.store offset=8 + local.get $0 + i32.const 5072 + call $~lib/typedarray/Uint8Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5104 + i32.store offset=8 + local.get $0 + i32.const 5104 + call $~lib/typedarray/Uint8Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5136 + i32.store offset=8 + local.get $0 + i32.const 5136 + call $~lib/typedarray/Uint8Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5168 + i32.store offset=8 + local.get $0 + i32.const 5168 + call $~lib/typedarray/Uint8Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5200 + i32.store offset=8 + local.get $0 + i32.const 5200 + call $~lib/typedarray/Int16Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5232 + i32.store offset=8 + local.get $0 + i32.const 5232 + call $~lib/typedarray/Int16Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5264 + i32.store offset=8 + local.get $0 + i32.const 5264 + call $~lib/typedarray/Uint16Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5296 + i32.store offset=8 + local.get $0 + i32.const 5296 + call $~lib/typedarray/Uint16Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5328 + i32.store offset=8 + local.get $0 + i32.const 5328 + call $~lib/typedarray/Int32Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5360 + i32.store offset=8 + local.get $0 + i32.const 5360 + call $~lib/typedarray/Int32Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5392 + i32.store offset=8 + local.get $0 + i32.const 5392 + call $~lib/typedarray/Uint32Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5424 + i32.store offset=8 + local.get $0 + i32.const 5424 + call $~lib/typedarray/Uint32Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store offset=8 + local.get $0 + i32.const 5456 + call $~lib/typedarray/Int64Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5488 + i32.store offset=8 + local.get $0 + i32.const 5488 + call $~lib/typedarray/Int64Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5520 + i32.store offset=8 + local.get $0 + i32.const 5520 + call $~lib/typedarray/Uint64Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5552 + i32.store offset=8 + local.get $0 + i32.const 5552 + call $~lib/typedarray/Uint64Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5584 + i32.store offset=8 + local.get $0 + i32.const 5584 + call $~lib/typedarray/Float32Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5616 + i32.store offset=8 + local.get $0 + i32.const 5616 + call $~lib/typedarray/Float32Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5648 + i32.store offset=8 + local.get $0 + i32.const 5648 + call $~lib/typedarray/Float64Array#findIndex + i32.const 1 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5680 + i32.store offset=8 + local.get $0 + i32.const 5680 + call $~lib/typedarray/Float64Array#findIndex + i32.const -1 + i32.ne + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5712 + i32.store offset=8 + local.get $0 + i32.const 5712 + call $~lib/typedarray/Int8Array#findLastIndex + i32.const 1 + i32.ne + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5744 + i32.store offset=8 + local.get $0 + i32.const 5744 + call $~lib/typedarray/Int8Array#findLastIndex + i32.const -1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5776 + i32.store offset=8 + local.get $0 + i32.const 5776 + call $~lib/typedarray/Uint8Array#findLastIndex + i32.const 1 + i32.ne + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5808 + i32.store offset=8 + local.get $0 + i32.const 5808 + call $~lib/typedarray/Uint8Array#findLastIndex + i32.const -1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5840 + i32.store offset=8 + local.get $0 + i32.const 5840 + call $~lib/typedarray/Uint8Array#findLastIndex + i32.const 1 + i32.ne + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5872 + i32.store offset=8 + local.get $0 + i32.const 5872 + call $~lib/typedarray/Uint8Array#findLastIndex + i32.const -1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.store offset=8 + local.get $0 + i32.const 5904 + call $~lib/typedarray/Int16Array#findLastIndex + i32.const 1 + i32.ne + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5936 + i32.store offset=8 + local.get $0 + i32.const 5936 + call $~lib/typedarray/Int16Array#findLastIndex + i32.const -1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5968 + i32.store offset=8 + local.get $0 + i32.const 5968 + call $~lib/typedarray/Uint16Array#findLastIndex + i32.const 1 + i32.ne + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6000 + i32.store offset=8 + local.get $0 + i32.const 6000 + call $~lib/typedarray/Uint16Array#findLastIndex + i32.const -1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6032 + i32.store offset=8 + local.get $0 + i32.const 6032 + call $~lib/typedarray/Int32Array#findLastIndex + i32.const 1 + i32.ne + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6064 + i32.store offset=8 + local.get $0 + i32.const 6064 + call $~lib/typedarray/Int32Array#findLastIndex + i32.const -1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6096 + i32.store offset=8 + local.get $0 + i32.const 6096 + call $~lib/typedarray/Uint32Array#findLastIndex + i32.const 1 + i32.ne + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6128 + i32.store offset=8 + local.get $0 + i32.const 6128 + call $~lib/typedarray/Uint32Array#findLastIndex + i32.const -1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6160 + i32.store offset=8 + local.get $0 + i32.const 6160 + call $~lib/typedarray/Int64Array#findLastIndex + i32.const 1 + i32.ne + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6192 + i32.store offset=8 + local.get $0 + i32.const 6192 + call $~lib/typedarray/Int64Array#findLastIndex + i32.const -1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6224 + i32.store offset=8 + local.get $0 + i32.const 6224 + call $~lib/typedarray/Uint64Array#findLastIndex + i32.const 1 + i32.ne + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6256 + i32.store offset=8 + local.get $0 + i32.const 6256 + call $~lib/typedarray/Uint64Array#findLastIndex + i32.const -1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6288 + i32.store offset=8 + local.get $0 + i32.const 6288 + call $~lib/typedarray/Float32Array#findLastIndex + i32.const 1 + i32.ne + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6320 + i32.store offset=8 + local.get $0 + i32.const 6320 + call $~lib/typedarray/Float32Array#findLastIndex + i32.const -1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6352 + i32.store offset=8 + local.get $0 + i32.const 6352 + call $~lib/typedarray/Float64Array#findLastIndex + i32.const 1 + i32.ne + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6384 + i32.store offset=8 + local.get $0 + i32.const 6384 + call $~lib/typedarray/Float64Array#findLastIndex + i32.const -1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6416 + i32.store offset=8 + local.get $0 + i32.const 6416 + call $~lib/typedarray/Int8Array#every + i32.eqz + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 6448 + call $~lib/typedarray/Int8Array#every + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6480 + i32.store offset=8 + local.get $0 + i32.const 6480 + call $~lib/typedarray/Uint8Array#every + i32.eqz + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6512 + i32.store offset=8 + local.get $0 + i32.const 6512 + call $~lib/typedarray/Uint8Array#every + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6544 + i32.store offset=8 + local.get $0 + i32.const 6544 + call $~lib/typedarray/Uint8Array#every + i32.eqz + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6576 + i32.store offset=8 + local.get $0 + i32.const 6576 + call $~lib/typedarray/Uint8Array#every + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6608 + i32.store offset=8 + local.get $0 + i32.const 6608 + call $~lib/typedarray/Int16Array#every + i32.eqz + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6640 + i32.store offset=8 + local.get $0 + i32.const 6640 + call $~lib/typedarray/Int16Array#every + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6672 + i32.store offset=8 + local.get $0 + i32.const 6672 + call $~lib/typedarray/Uint16Array#every + i32.eqz + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6704 + i32.store offset=8 + local.get $0 + i32.const 6704 + call $~lib/typedarray/Uint16Array#every + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6736 + i32.store offset=8 + local.get $0 + i32.const 6736 + call $~lib/typedarray/Int32Array#every + i32.eqz + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6768 + i32.store offset=8 + local.get $0 + i32.const 6768 + call $~lib/typedarray/Int32Array#every + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6800 + i32.store offset=8 + local.get $0 + i32.const 6800 + call $~lib/typedarray/Uint32Array#every + i32.eqz + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6832 + i32.store offset=8 + local.get $0 + i32.const 6832 + call $~lib/typedarray/Uint32Array#every + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6864 + i32.store offset=8 + local.get $0 + i32.const 6864 + call $~lib/typedarray/Int64Array#every + i32.eqz + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6896 + i32.store offset=8 + local.get $0 + i32.const 6896 + call $~lib/typedarray/Int64Array#every + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6928 + i32.store offset=8 + local.get $0 + i32.const 6928 + call $~lib/typedarray/Uint64Array#every + i32.eqz + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6960 + i32.store offset=8 + local.get $0 + i32.const 6960 + call $~lib/typedarray/Uint64Array#every + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6992 + i32.store offset=8 + local.get $0 + i32.const 6992 + call $~lib/typedarray/Float32Array#every + i32.eqz + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=8 + local.get $0 + i32.const 7024 + call $~lib/typedarray/Float32Array#every + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7056 + i32.store offset=8 + local.get $0 + i32.const 7056 + call $~lib/typedarray/Float64Array#every + i32.eqz + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7088 + i32.store offset=8 + local.get $0 + i32.const 7088 + call $~lib/typedarray/Float64Array#every + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.store + local.get $1 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7200 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7200 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.set $7 + loop $for-loop|036 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $0 + local.get $6 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 7200 + i32.load + call_indirect (type $4) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|036 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $0 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7232 + i32.store offset=8 + local.get $0 + i32.const 7232 + call $~lib/typedarray/Uint8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $0 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7264 + i32.store offset=8 + local.get $0 + i32.const 7264 + call $~lib/typedarray/Uint8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store + local.get $1 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7296 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7296 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $7 + loop $for-loop|038 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 7296 + i32.load + call_indirect (type $4) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|038 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store + local.get $1 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7328 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7328 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $7 + loop $for-loop|040 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 7328 + i32.load + call_indirect (type $4) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|040 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store + local.get $1 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7360 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7360 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + local.set $7 + loop $for-loop|042 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 7360 + i32.load + call_indirect (type $4) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|042 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store + local.get $1 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7392 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7392 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + local.set $7 + loop $for-loop|044 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 7392 + i32.load + call_indirect (type $4) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|044 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store + local.get $1 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $7 + loop $for-loop|046 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 7424 + i32.load + call_indirect (type $28) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|046 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store + local.get $1 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $7 + loop $for-loop|048 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 7456 + i32.load + call_indirect (type $28) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|048 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store + local.get $1 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7488 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7488 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + local.set $7 + loop $for-loop|050 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 7488 + i32.load + call_indirect (type $33) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|050 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store + local.get $1 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=8 + local.get $1 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7520 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7520 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $7 + loop $for-loop|052 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 7520 + i32.load + call_indirect (type $34) + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|052 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + call $"std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64>" + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=84 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f64.const nan:0x8000000000000 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 653 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.tee $6 + i32.eqz + local.get $6 + i32.const 0 + i32.le_s + i32.or + br_if $"~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $6 + i32.lt_s + if + i32.const 1 + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $5 + local.get $5 + f64.ne + br_if $"~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 654 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store offset=88 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + f32.const nan:0x400000 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 659 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $"~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + local.tee $6 + i32.eqz + local.get $6 + i32.const 0 + i32.le_s + i32.or + br_if $"~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|05 + local.get $0 + local.get $6 + i32.lt_s + if + i32.const 1 + local.get $1 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $4 + local.get $4 + f32.ne + br_if $"~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|05 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 660 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Uint8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Uint8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int16Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Uint16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Uint16Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Uint32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Uint32Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Uint64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Uint64Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9616 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner16 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Float32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 10800 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner17 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Float32Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10800 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner18 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Float64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 10800 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner17 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Float64Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10800 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner18 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=92 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $0 + i32.store offset=96 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + if + i32.const 0 + i32.const 1568 + i32.const 737 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=92 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $0 + i32.store offset=96 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + if + i32.const 0 + i32.const 1568 + i32.const 741 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + call $"std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8>" + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=4 + i32.const 10928 + call $~lib/array/Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|053 + local.get $0 + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store offset=12 + local.get $1 + local.get $2 + i32.const 10928 + local.get $2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|053 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $2 + local.get $7 + local.get $8 + local.get $1 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $6 + i32.store offset=20 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint8Array#__get + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $2 + call $~lib/typedarray/Uint8Array#__get + local.get $7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 730 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32>" + call $"std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64>" + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.store offset=100 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store offset=104 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 400 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const inf + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store offset=108 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const -10 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 100 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 10 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i64.const 300 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $~lib/typedarray/Int32Array#constructor + local.tee $7 + i32.store offset=112 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 300 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i32.const -1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.get $8 + i32.const 1 + i32.add + i32.lt_s + br_if $folding-inner19 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.add + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $0 + i32.const 0 + local.set $2 + loop $for-loop|0654 + local.get $2 + local.get $8 + i32.lt_s + if + local.get $2 + local.get $9 + i32.add + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $4 + local.get $4 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $4 + f32.const 255 + f32.min + f32.const 0 + f32.max + i32.trunc_sat_f32_u + else + i32.const 0 + end + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0654 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $1 + local.get $6 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + call $~lib/typedarray/Int32Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.get $0 + i32.const 8 + i32.add + i32.lt_s + br_if $folding-inner19 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + i32.const 8 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $2 + loop $for-loop|07 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $2 + local.get $6 + i32.add + i32.const 255 + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.sub + i32.const 31 + i32.shr_s + local.get $8 + i32.or + local.get $8 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|07 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 15280 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store offset=116 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 300 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 100 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const -1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=120 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const -10 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 10 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 300 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.get $6 + i32.lt_s + br_if $folding-inner19 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $8 + i32.const 0 + local.set $0 + loop $for-loop|0855 + local.get $0 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $7 + i32.add + i32.const 255 + local.get $8 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $9 + local.get $9 + i32.const 255 + i32.gt_u + select + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0855 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $1 + local.get $2 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 15312 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>" + block $folding-inner02 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner02 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner02 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 15344 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15344 + i32.store offset=8 + local.get $1 + i32.const 15344 + call $~lib/typedarray/Int8Array#sort + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15376 + i32.store offset=12 + local.get $1 + i32.const 15376 + call $~lib/typedarray/Int8Array#sort + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>" + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>$1" + block $folding-inner04 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner04 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner04 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 15408 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15408 + i32.store offset=8 + local.get $1 + i32.const 15408 + call $~lib/typedarray/Uint8Array#sort + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15440 + i32.store offset=12 + local.get $1 + i32.const 15440 + call $~lib/typedarray/Uint8Array#sort + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>$1" + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>$2" + block $folding-inner06 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner06 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner06 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 15472 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15472 + i32.store offset=8 + local.get $1 + i32.const 15472 + call $~lib/typedarray/Uint8Array#sort + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15504 + i32.store offset=12 + local.get $1 + i32.const 15504 + call $~lib/typedarray/Uint8Array#sort + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8>$2" + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>$3" + block $folding-inner08 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner08 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner08 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 15536 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15536 + i32.store offset=8 + local.get $1 + i32.const 15536 + call $~lib/typedarray/Int16Array#sort + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15568 + i32.store offset=12 + local.get $1 + i32.const 15568 + call $~lib/typedarray/Int16Array#sort + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>$3" + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>$4" + block $folding-inner010 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner010 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner010 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 15600 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15600 + i32.store offset=8 + local.get $1 + i32.const 15600 + call $~lib/typedarray/Uint16Array#sort + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15632 + i32.store offset=12 + local.get $1 + i32.const 15632 + call $~lib/typedarray/Uint16Array#sort + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>$4" + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>$5" + block $folding-inner012 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner012 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner012 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 15664 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15664 + i32.store offset=8 + local.get $1 + i32.const 15664 + call $~lib/typedarray/Int32Array#sort + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15696 + i32.store offset=12 + local.get $1 + i32.const 15696 + call $~lib/typedarray/Int32Array#sort + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>$5" + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>$6" + block $folding-inner014 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner014 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner014 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 15728 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15728 + i32.store offset=8 + local.get $1 + i32.const 15728 + call $~lib/typedarray/Uint32Array#sort + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15760 + i32.store offset=12 + local.get $1 + i32.const 15760 + call $~lib/typedarray/Uint32Array#sort + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>$6" + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>$7" + block $folding-inner016 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner016 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner016 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 15792 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15792 + i32.store offset=8 + local.get $1 + i32.const 15792 + call $~lib/typedarray/Int64Array#sort + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 2 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15824 + i32.store offset=12 + local.get $1 + i32.const 15824 + call $~lib/typedarray/Int64Array#sort + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 2 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>$7" + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>$8" + block $folding-inner018 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner018 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner018 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 15856 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15856 + i32.store offset=8 + local.get $1 + i32.const 15856 + call $~lib/typedarray/Uint64Array#sort + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 2 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15888 + i32.store offset=12 + local.get $1 + i32.const 15888 + call $~lib/typedarray/Uint64Array#sort + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 2 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>$8" + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>$9" + block $folding-inner020 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner020 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner020 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 15920 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15920 + i32.store offset=8 + local.get $1 + i32.const 15920 + call $~lib/typedarray/Float32Array#sort + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 2 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15952 + i32.store offset=12 + local.get $1 + i32.const 15952 + call $~lib/typedarray/Float32Array#sort + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 2 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>$9" + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Float64Array#sort@varargs + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 885 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 2 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 886 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15984 + i32.store offset=12 + local.get $0 + i32.const 15984 + call $~lib/typedarray/Float64Array#sort + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 889 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 2 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 890 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 891 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 49088 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|010 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|010 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 124 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1568 + i32.const 344 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 345 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 346 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 461 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 463 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 484 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 486 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 509 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 675 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 676 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 672 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 673 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 323 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1568 + i32.const 541 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.shl + local.tee $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $1 + local.get $3 + if + local.get $1 + local.get $3 + local.get $5 + memory.copy + end + local.get $1 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $1 + i32.store + local.get $2 + local.get $1 + call $~lib/rt/itcms/__link + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/number/itoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8000 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $0 + select + local.tee $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $0 + local.get $3 + i32.add + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + local.get $0 + if + local.get $3 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/util/number/utoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8000 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/std/typedarray.ts b/tests/compiler/std/typedarray.ts index 46286fdac9..05029b9be0 100644 --- a/tests/compiler/std/typedarray.ts +++ b/tests/compiler/std/typedarray.ts @@ -297,7 +297,7 @@ testInstantiate(5); assert(subsliced.byteLength == 4); let copy = arr.slice(); - assert(copy !== arr); + assert(copy != arr); assert(copy.length == arr.length); assert(copy.byteOffset == arr.byteOffset); assert(copy.byteLength == arr.byteLength); @@ -315,11 +315,11 @@ testInstantiate(5); // tests work. function testReduce, T extends number>(): void { - var array: ArrayType = instantiate(3); + var array = instantiate(3); array[0] = 1; array[1] = 2; array[2] = 3; - var result = array.reduce((acc: T, val: T) => (acc + val), 0); + var result = array.reduce((acc, val) => (acc + val), 0); assert(result == 6); } @@ -335,12 +335,35 @@ testReduce(); testReduce(); testReduce(); +function testAt, T extends number>(): void { + var array = instantiate(3); + array[0] = 1; + array[1] = 2; + array[2] = 3; + + assert(array.at( 0) == 1); + assert(array.at(-1) == 3); + assert(array.at(-3) == 1); +} + +testAt(); +testAt(); +testAt(); +testAt(); +testAt(); +testAt(); +testAt(); +testAt(); +testAt(); +testAt(); +testAt(); + function testReduceRight, T extends number>(): void { - var array: ArrayType = instantiate(3); + var array = instantiate(3); array[0] = 1; array[1] = 2; array[2] = 3; - var result = array.reduceRight((acc: T, val: T) => (acc + val), 0); + var result = array.reduceRight((acc, val) => (acc + val), 0); assert(result == 6); } @@ -357,11 +380,11 @@ testReduceRight(); testReduceRight(); function testArrayMap, T extends number>(): void { - var source: ArrayType = instantiate(3); + var source = instantiate(3); source[0] = 1; source[1] = 2; source[2] = 3; - var result = source.map((value: T) => (value * value)); + var result = source.map(value => (value * value)); assert(result[0] == 1); assert(result[1] == 4); assert(result[2] == 9); @@ -380,13 +403,13 @@ testArrayMap(); testArrayMap(); function testArrayFilter, T extends number>(): void { - var source: ArrayType = instantiate(6); + var source = instantiate(6); source[0] = 1; source[1] = 2; source[2] = 3; source[3] = 4; source[5] = 5; - var result = source.filter((value: T) => value > 2); + var result = source.filter(value => value > 2); assert(result.byteOffset == 0); assert(result.length == 3); assert(result[0] == 3); @@ -407,13 +430,13 @@ testArrayFilter(); testArrayFilter(); function testArraySome, T extends number>(): void { - var source: ArrayType = instantiate(3); + var source = instantiate(3); source[0] = 2; source[1] = 4; source[2] = 6; - var result: bool = source.some((value: T) => value == 2); + var result: bool = source.some(value => value == 2); assert(result); - var failResult = source.some((value: T) => value == 0); + var failResult = source.some(value => value == 0); assert(!failResult); } @@ -430,13 +453,13 @@ testArraySome(); testArraySome(); function testArrayFindIndex, T extends number>(): void { - var source: ArrayType = instantiate(3); + var source = instantiate(3); source[0] = 1; source[1] = 2; source[2] = 3; - var result = source.findIndex((value: T) => value == 2); + var result = source.findIndex(value => value == 2); assert(result == 1); - var failResult = source.findIndex((value: T) => value == 4); + var failResult = source.findIndex(value => value == 4); assert(failResult == -1); } @@ -452,14 +475,37 @@ testArrayFindIndex(); testArrayFindIndex(); testArrayFindIndex(); +function testArrayFindLastIndex, T extends number>(): void { + var source = instantiate(3); + source[0] = 1; + source[1] = 2; + source[2] = 3; + var result = source.findLastIndex(value => value == 2); + assert(result == 1); + var failResult = source.findLastIndex(value => value == 4); + assert(failResult == -1); +} + +testArrayFindLastIndex(); +testArrayFindLastIndex(); +testArrayFindLastIndex(); +testArrayFindLastIndex(); +testArrayFindLastIndex(); +testArrayFindLastIndex(); +testArrayFindLastIndex(); +testArrayFindLastIndex(); +testArrayFindLastIndex(); +testArrayFindLastIndex(); +testArrayFindLastIndex(); + function testArrayEvery, T extends number>(): void { - var source: ArrayType = instantiate(3); + var source = instantiate(3); source[0] = 2; source[1] = 4; source[2] = 6; - var result = source.every((value: T) => value % 2 == 0); + var result = source.every(value => value % 2 == 0); assert(result); - var failResult = source.every((value: T) => value == 2); + var failResult = source.every(value => value == 2); assert(!failResult); } @@ -707,7 +753,7 @@ testArrayWrap(); testArrayWrap(); testArrayWrap(); -function valuesEqual(target: T, compare: valueof[]): void { +function valuesEqual>(target: T, compare: valueof[]): void { let len = target.length; assert(len == compare.length); for (let i = 0; i < len; i++) { @@ -725,7 +771,7 @@ let setSource2: f32[] = [4, 5, 6]; let setSource3: f64[] = [Infinity, NaN, -Infinity]; let setSource7: i8[] = [-110, -111, -112]; -function testTypedArraySet(): void { +function testTypedArraySet>(): void { let setSource4 = new Int64Array(3); setSource4[0] = 7; setSource4[1] = 8; @@ -766,9 +812,16 @@ function testTypedArraySet(): void { valuesEqual(a, [100, 101, 102, 103, 255, 255, 255, 0, 0, 0]); } else { // explicitly case the input values to valueof - valuesEqual(a, [100, 101, 102, 103, >1000, >1001, >1002, >-110, >-111, >-112]); + valuesEqual(a, [ + 100, 101, 102, 103, + >1000, + >1001, + >1002, + >-110, + >-111, + >-112 + ]); } - } testTypedArraySet(); @@ -820,4 +873,36 @@ testTypedArraySet(); targetClampedArray.set(d, 0); targetClampedArray.set(e, 5); valuesEqual(targetClampedArray, [1, 255, 100, 255, 0, 0, 100, 10, 255, 0]); -} \ No newline at end of file +} + +function testArraySort, T extends number>(): void { + var source: ArrayType = instantiate(3); + source[2] = 1; + source[1] = 2; + source[0] = 3; + + let result = source.sort(); + assert(result[0] == 1); + assert(result[1] == 2); + assert(result[2] == 3); + result.sort((a, b) => i32(b > a) - i32(b < a)); + assert(result[0] == 3); + assert(result[1] == 2); + assert(result[2] == 1); +} + +testArraySort(); +testArraySort(); +testArraySort(); +testArraySort(); +testArraySort(); +testArraySort(); +testArraySort(); +testArraySort(); +testArraySort(); +testArraySort(); +testArraySort(); + + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat deleted file mode 100644 index 09e9e6da94..0000000000 --- a/tests/compiler/std/typedarray.untouched.wat +++ /dev/null @@ -1,58317 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i64_i32_i32_=>_i32 (func (param i64 i32 i32) (result i32))) - (type $f32_i32_i32_=>_i32 (func (param f32 i32 i32) (result i32))) - (type $f64_i32_i32_=>_i32 (func (param f64 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i64_i64_i32_i32_=>_i64 (func (param i64 i64 i32 i32) (result i64))) - (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $i64_i32_i32_=>_none (func (param i64 i32 i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) - (type $i32_i32_i64_=>_i64 (func (param i32 i32 i64) (result i64))) - (type $i64_i32_i32_=>_i64 (func (param i64 i32 i32) (result i64))) - (type $f32_f32_i32_i32_=>_f32 (func (param f32 f32 i32 i32) (result f32))) - (type $f64_f64_i32_i32_=>_f64 (func (param f64 f64 i32 i32) (result f64))) - (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $f32_i32_i32_=>_none (func (param f32 i32 i32))) - (type $f64_i32_i32_=>_none (func (param f64 i32 i32))) - (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_i32_f32_=>_f32 (func (param i32 i32 f32) (result f32))) - (type $f32_i32_i32_=>_f32 (func (param f32 i32 i32) (result f32))) - (type $i32_i32_f64_=>_f64 (func (param i32 i32 f64) (result f64))) - (type $f64_i32_i32_=>_f64 (func (param f64 i32 i32) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (import "rtrace" "onrealloc" (func $~lib/rt/rtrace/onrealloc (param i32 i32))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (memory $0 1) - (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 176) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 240) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 288) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 352) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 416) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 480) "\08\00\00\00\01\00\00\00\0e\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 512) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 544) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 592) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00") - (data (i32.const 624) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00") - (data (i32.const 656) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 688) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 720) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\00\00\00") - (data (i32.const 752) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\00\00\00\02") - (data (i32.const 784) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 832) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 880) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 928) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 976) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1056) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00") - (data (i32.const 1104) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1152) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1200) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 1248) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1296) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1344) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1392) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1440) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1488) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1536) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1584) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1632) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 1680) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 1712) "\08\00\00\00\01\00\00\00\12\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00") - (data (i32.const 1744) "\08\00\00\00\01\00\00\00\13\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 1776) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00") - (data (i32.const 1808) "\08\00\00\00\01\00\00\00\15\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00") - (data (i32.const 1840) "\08\00\00\00\01\00\00\00\16\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00") - (data (i32.const 1872) "\08\00\00\00\01\00\00\00\17\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00") - (data (i32.const 1904) "\08\00\00\00\01\00\00\00\18\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 1936) "\08\00\00\00\01\00\00\00\19\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00") - (data (i32.const 1968) "\08\00\00\00\01\00\00\00\1a\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00") - (data (i32.const 2000) "\08\00\00\00\01\00\00\00\1b\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00") - (data (i32.const 2032) "\08\00\00\00\01\00\00\00\11\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00") - (data (i32.const 2064) "\08\00\00\00\01\00\00\00\12\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00") - (data (i32.const 2096) "\08\00\00\00\01\00\00\00\13\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 2128) "\08\00\00\00\01\00\00\00\14\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 2160) "\08\00\00\00\01\00\00\00\15\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00") - (data (i32.const 2192) "\08\00\00\00\01\00\00\00\16\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00") - (data (i32.const 2224) "\08\00\00\00\01\00\00\00\17\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00") - (data (i32.const 2256) "\08\00\00\00\01\00\00\00\18\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00") - (data (i32.const 2288) "\08\00\00\00\01\00\00\00\19\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00") - (data (i32.const 2320) "\08\00\00\00\01\00\00\00\1a\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00") - (data (i32.const 2352) "\08\00\00\00\01\00\00\00\1b\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00") - (data (i32.const 2384) "\08\00\00\00\01\00\00\00\1c\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00") - (data (i32.const 2416) "\08\00\00\00\01\00\00\00\1d\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00") - (data (i32.const 2448) "\08\00\00\00\01\00\00\00\1e\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00") - (data (i32.const 2480) "\08\00\00\00\01\00\00\00\1f\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00") - (data (i32.const 2512) "\08\00\00\00\01\00\00\00 \00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00") - (data (i32.const 2544) "\08\00\00\00\01\00\00\00!\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00") - (data (i32.const 2576) "\08\00\00\00\01\00\00\00\"\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00") - (data (i32.const 2608) "\08\00\00\00\01\00\00\00#\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00") - (data (i32.const 2640) "\08\00\00\00\01\00\00\00$\00\00\00\08\00\00\00 \00\00\00\00\00\00\00") - (data (i32.const 2672) "\08\00\00\00\01\00\00\00%\00\00\00\08\00\00\00!\00\00\00\00\00\00\00") - (data (i32.const 2704) "\08\00\00\00\01\00\00\00&\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00") - (data (i32.const 2736) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00#\00\00\00\00\00\00\00") - (data (i32.const 2768) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00$\00\00\00\00\00\00\00") - (data (i32.const 2800) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00%\00\00\00\00\00\00\00") - (data (i32.const 2832) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00&\00\00\00\00\00\00\00") - (data (i32.const 2864) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00") - (data (i32.const 2896) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00(\00\00\00\00\00\00\00") - (data (i32.const 2928) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00)\00\00\00\00\00\00\00") - (data (i32.const 2960) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00*\00\00\00\00\00\00\00") - (data (i32.const 2992) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00+\00\00\00\00\00\00\00") - (data (i32.const 3024) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00,\00\00\00\00\00\00\00") - (data (i32.const 3056) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00-\00\00\00\00\00\00\00") - (data (i32.const 3088) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00.\00\00\00\00\00\00\00") - (data (i32.const 3120) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00/\00\00\00\00\00\00\00") - (data (i32.const 3152) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\000\00\00\00\00\00\00\00") - (data (i32.const 3184) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\001\00\00\00\00\00\00\00") - (data (i32.const 3216) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\002\00\00\00\00\00\00\00") - (data (i32.const 3248) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\003\00\00\00\00\00\00\00") - (data (i32.const 3280) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\004\00\00\00\00\00\00\00") - (data (i32.const 3312) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\005\00\00\00\00\00\00\00") - (data (i32.const 3344) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\006\00\00\00\00\00\00\00") - (data (i32.const 3376) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\007\00\00\00\00\00\00\00") - (data (i32.const 3408) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\008\00\00\00\00\00\00\00") - (data (i32.const 3440) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\009\00\00\00\00\00\00\00") - (data (i32.const 3472) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00:\00\00\00\00\00\00\00") - (data (i32.const 3504) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00;\00\00\00\00\00\00\00") - (data (i32.const 3536) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00<\00\00\00\00\00\00\00") - (data (i32.const 3568) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00=\00\00\00\00\00\00\00") - (data (i32.const 3600) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00>\00\00\00\00\00\00\00") - (data (i32.const 3632) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00?\00\00\00\00\00\00\00") - (data (i32.const 3664) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00@\00\00\00\00\00\00\00") - (data (i32.const 3696) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00A\00\00\00\00\00\00\00") - (data (i32.const 3728) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00B\00\00\00\00\00\00\00") - (data (i32.const 3760) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00C\00\00\00\00\00\00\00") - (data (i32.const 3792) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00D\00\00\00\00\00\00\00") - (data (i32.const 3824) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00E\00\00\00\00\00\00\00") - (data (i32.const 3856) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00F\00\00\00\00\00\00\00") - (data (i32.const 3888) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00G\00\00\00\00\00\00\00") - (data (i32.const 3920) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00H\00\00\00\00\00\00\00") - (data (i32.const 3952) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00I\00\00\00\00\00\00\00") - (data (i32.const 3984) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00J\00\00\00\00\00\00\00") - (data (i32.const 4016) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00K\00\00\00\00\00\00\00") - (data (i32.const 4048) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00L\00\00\00\00\00\00\00") - (data (i32.const 4080) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00M\00\00\00\00\00\00\00") - (data (i32.const 4112) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00N\00\00\00\00\00\00\00") - (data (i32.const 4144) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00O\00\00\00\00\00\00\00") - (data (i32.const 4176) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00P\00\00\00\00\00\00\00") - (data (i32.const 4208) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00Q\00\00\00\00\00\00\00") - (data (i32.const 4240) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00R\00\00\00\00\00\00\00") - (data (i32.const 4272) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00S\00\00\00\00\00\00\00") - (data (i32.const 4304) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00T\00\00\00\00\00\00\00") - (data (i32.const 4336) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00U\00\00\00\00\00\00\00") - (data (i32.const 4368) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00V\00\00\00\00\00\00\00") - (data (i32.const 4400) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00W\00\00\00\00\00\00\00") - (data (i32.const 4432) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00X\00\00\00\00\00\00\00") - (data (i32.const 4464) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00Y\00\00\00\00\00\00\00") - (data (i32.const 4496) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00Z\00\00\00\00\00\00\00") - (data (i32.const 4528) "\08\00\00\00\01\00\00\00\'\00\00\00\08\00\00\00[\00\00\00\00\00\00\00") - (data (i32.const 4560) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00\\\00\00\00\00\00\00\00") - (data (i32.const 4592) "\08\00\00\00\01\00\00\00(\00\00\00\08\00\00\00]\00\00\00\00\00\00\00") - (data (i32.const 4624) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00^\00\00\00\00\00\00\00") - (data (i32.const 4656) "\08\00\00\00\01\00\00\00)\00\00\00\08\00\00\00_\00\00\00\00\00\00\00") - (data (i32.const 4688) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00`\00\00\00\00\00\00\00") - (data (i32.const 4720) "\08\00\00\00\01\00\00\00*\00\00\00\08\00\00\00a\00\00\00\00\00\00\00") - (data (i32.const 4752) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00b\00\00\00\00\00\00\00") - (data (i32.const 4784) "\08\00\00\00\01\00\00\00+\00\00\00\08\00\00\00c\00\00\00\00\00\00\00") - (data (i32.const 4816) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00d\00\00\00\00\00\00\00") - (data (i32.const 4848) "\08\00\00\00\01\00\00\00,\00\00\00\08\00\00\00e\00\00\00\00\00\00\00") - (data (i32.const 4880) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00f\00\00\00\00\00\00\00") - (data (i32.const 4912) "\08\00\00\00\01\00\00\00-\00\00\00\08\00\00\00g\00\00\00\00\00\00\00") - (data (i32.const 4944) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00h\00\00\00\00\00\00\00") - (data (i32.const 4976) "\08\00\00\00\01\00\00\00.\00\00\00\08\00\00\00i\00\00\00\00\00\00\00") - (data (i32.const 5008) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00j\00\00\00\00\00\00\00") - (data (i32.const 5040) "\08\00\00\00\01\00\00\00/\00\00\00\08\00\00\00k\00\00\00\00\00\00\00") - (data (i32.const 5072) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00l\00\00\00\00\00\00\00") - (data (i32.const 5104) "\08\00\00\00\01\00\00\000\00\00\00\08\00\00\00m\00\00\00\00\00\00\00") - (data (i32.const 5136) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00n\00\00\00\00\00\00\00") - (data (i32.const 5168) "\08\00\00\00\01\00\00\001\00\00\00\08\00\00\00o\00\00\00\00\00\00\00") - (data (i32.const 5200) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") - (data (i32.const 5232) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00`\14\00\00`\14\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 5264) "\08\00\00\00\01\00\00\002\00\00\00\08\00\00\00p\00\00\00\00\00\00\00") - (data (i32.const 5296) "\08\00\00\00\01\00\00\003\00\00\00\08\00\00\00q\00\00\00\00\00\00\00") - (data (i32.const 5328) "\08\00\00\00\01\00\00\004\00\00\00\08\00\00\00r\00\00\00\00\00\00\00") - (data (i32.const 5360) "\08\00\00\00\01\00\00\005\00\00\00\08\00\00\00s\00\00\00\00\00\00\00") - (data (i32.const 5392) "\08\00\00\00\01\00\00\006\00\00\00\08\00\00\00t\00\00\00\00\00\00\00") - (data (i32.const 5424) "\08\00\00\00\01\00\00\007\00\00\00\08\00\00\00u\00\00\00\00\00\00\00") - (data (i32.const 5456) "\08\00\00\00\01\00\00\008\00\00\00\08\00\00\00v\00\00\00\00\00\00\00") - (data (i32.const 5488) "\08\00\00\00\01\00\00\009\00\00\00\08\00\00\00w\00\00\00\00\00\00\00") - (data (i32.const 5520) "\08\00\00\00\01\00\00\00:\00\00\00\08\00\00\00x\00\00\00\00\00\00\00") - (data (i32.const 5552) "\08\00\00\00\01\00\00\00;\00\00\00\08\00\00\00y\00\00\00\00\00\00\00") - (data (i32.const 5584) "\08\00\00\00\01\00\00\00<\00\00\00\08\00\00\00z\00\00\00\00\00\00\00") - (data (i32.const 5616) "$\00\00\00\01\00\00\00\00\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data (i32.const 5680) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00\00\16\00\00\00\16\00\00$\00\00\00\t\00\00\00") - (data (i32.const 5712) ",\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00") - (data (i32.const 5776) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00`\16\00\00`\16\00\00,\00\00\00\0b\00\00\00") - (data (i32.const 5808) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 5824) "d\00\00\00\01\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00") - (data (i32.const 5952) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00") - (data (i32.const 6016) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 6036) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 6448) "\00\04\00\00\01\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00") - (data (i32.const 7488) "H\00\00\00\01\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00") - (data (i32.const 7584) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") - (data (i32.const 7616) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005\00") - (data (i32.const 7664) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 7696) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 7728) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 7776) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 7808) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00\10\00\00\00@#\00\00@#\00\00\18\00\00\00\03\00\00\00") - (data (i32.const 9088) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\92\91\90") - (data (i32.const 9120) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\90#\00\00\90#\00\00\03\00\00\00\03\00\00\00") - (data (i32.const 9152) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00") - (data (i32.const 9184) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y\00") - (data (i32.const 9232) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00") - (data (i32.const 9264) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00") - (data (i32.const 9296) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00") - (data (i32.const 9328) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 9360) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00") - (data (i32.const 9392) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y\00") - (data (i32.const 9440) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00") - (data (i32.const 9472) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00") - (data (i32.const 9504) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00") - (data (i32.const 9536) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 9568) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00") - (data (i32.const 9600) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00U\00i\00n\00t\008\00C\00l\00a\00m\00p\00e\00d\00A\00r\00r\00a\00y\00") - (data (i32.const 9664) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00") - (data (i32.const 9696) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00") - (data (i32.const 9728) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00") - (data (i32.const 9760) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00defg\ff\ff\ff\00\00\00") - (data (i32.const 9792) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 9840) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y\00") - (data (i32.const 9888) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00") - (data (i32.const 9936) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00") - (data (i32.const 9984) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00") - (data (i32.const 10032) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data (i32.const 10080) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10128) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y\00") - (data (i32.const 10176) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\00\00\00\00\00\00\00\00") - (data (i32.const 10224) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\00\00") - (data (i32.const 10272) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t\00\00\00") - (data (i32.const 10320) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data (i32.const 10368) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10432) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y\00") - (data (i32.const 10480) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10544) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 10608) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 10672) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data (i32.const 10736) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10800) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y\00") - (data (i32.const 10848) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10912) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 10976) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00") - (data (i32.const 11040) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00\e8\03\00\00\e9\03\00\00\ea\03\00\00\92\ff\ff\ff\91\ff\ff\ff\90\ff\ff\ff") - (data (i32.const 11104) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11200) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y\00") - (data (i32.const 11248) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11344) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11440) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11536) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11632) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11728) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y\00") - (data (i32.const 11776) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11872) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11968) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\00\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12064) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00d\00\00\00\00\00\00\00e\00\00\00\00\00\00\00f\00\00\00\00\00\00\00g\00\00\00\00\00\00\00\e8\03\00\00\00\00\00\00\e9\03\00\00\00\00\00\00\ea\03\00\00\00\00\00\00\92\ff\ff\ff\ff\ff\ff\ff\91\ff\ff\ff\ff\ff\ff\ff\90\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 12160) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12224) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y\00") - (data (i32.const 12272) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12336) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@\00\00\e0@\00\00\00A\00\00\10A\00\00\00\00") - (data (i32.const 12400) "(\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\00\00\c8B\00\00\caB\00\00\ccB\00\00\ceB\00\00zD\00@zD\00\80zD\00\00\dc\c2\00\00\de\c2\00\00\e0\c2") - (data (i32.const 12464) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12560) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y\00") - (data (i32.const 12608) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12704) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@\00\00\00\00\00\00\10@\00\00\00\00\00\00\14@\00\00\00\00\00\00\18@\00\00\00\00\00\00\1c@\00\00\00\00\00\00 @\00\00\00\00\00\00\"@\00\00\00\00\00\00\00\00") - (data (i32.const 12800) "P\00\00\00\01\00\00\00\00\00\00\00P\00\00\00\00\00\00\00\00\00Y@\00\00\00\00\00@Y@\00\00\00\00\00\80Y@\00\00\00\00\00\c0Y@\00\00\00\00\00@\8f@\00\00\00\00\00H\8f@\00\00\00\00\00P\8f@\00\00\00\00\00\80[\c0\00\00\00\00\00\c0[\c0\00\00\00\00\00\00\\\c0") - (data (i32.const 12896) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff\00") - (data (i32.const 12928) "\n\00\00\00\01\00\00\00\00\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff\00") - (table $0 123 funcref) - (elem (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) - (global $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) - (global $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) - (global $~lib/typedarray/Uint8ClampedArray.BYTES_PER_ELEMENT i32 (i32.const 1)) - (global $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT i32 (i32.const 2)) - (global $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT i32 (i32.const 2)) - (global $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) - (global $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) - (global $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) - (global $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) - (global $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) - (global $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) - (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) - (global $std/typedarray/forEachValues i32 (i32.const 5248)) - (global $std/typedarray/testArrayReverseValues i32 (i32.const 5696)) - (global $std/typedarray/testArrayIndexOfAndLastIndexOfValues i32 (i32.const 5792)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) - (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp (mut i32) (i32.const 0)) - (global $~lib/util/number/_K (mut i32) (i32.const 0)) - (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) - (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $std/typedarray/testArrayWrapValues i32 (i32.const 8864)) - (global $std/typedarray/setSource1 (mut i32) (i32.const 8928)) - (global $std/typedarray/setSource2 (mut i32) (i32.const 8992)) - (global $std/typedarray/setSource3 (mut i32) (i32.const 9072)) - (global $std/typedarray/setSource7 (mut i32) (i32.const 9136)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 12956)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 192 - i32.const 144 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=1 - local.get $5 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=2 - local.get $6 - local.get $4 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $8 - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.set $6 - local.get $5 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=24 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $8 - i32.store offset=12 - local.get $5 - local.get $8 - i32.store offset=16 - local.get $5 - local.get $8 - i32.store offset=20 - local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 - i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.add - local.set $5 - local.get $3 - local.get $7 - i32.sub - local.set $3 - local.get $8 - i64.extend_i32_u - local.get $8 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $9 - loop $while-continue|0 - local.get $3 - i32.const 32 - i32.ge_u - local.set $10 - local.get $10 - if - local.get $5 - local.get $9 - i64.store - local.get $5 - local.get $9 - i64.store offset=8 - local.get $5 - local.get $9 - i64.store offset=16 - local.get $5 - local.get $9 - i64.store offset=24 - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 18 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.shl - local.tee $1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - ) - (func $~lib/typedarray/Int8Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - ) - (func $~lib/typedarray/Int8Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) - (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Uint8Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) - (func $~lib/typedarray/Uint8ClampedArray#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Uint8ClampedArray#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) - (func $~lib/typedarray/Int16Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - ) - (func $~lib/typedarray/Uint16Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Uint16Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - ) - (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 8 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Int32Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - ) - (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Uint32Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - ) - (func $~lib/typedarray/Int64Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 10 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Int64Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - ) - (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 11 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Uint64Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - ) - (func $~lib/typedarray/Float32Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Float32Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - ) - (func $~lib/typedarray/Float64Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 13 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Float64Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - ) - (func $std/typedarray/testInstantiate (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) - i32.const 0 - local.get $0 - call $~lib/typedarray/Int8Array#constructor - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Uint8Array#constructor - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 38 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Uint8Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $3 - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Int16Array#constructor - local.set $4 - local.get $4 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Uint16Array#constructor - local.set $5 - local.get $5 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 52 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 53 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 54 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Int32Array#constructor - local.set $6 - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 57 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/typedarray/Int32Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Uint32Array#constructor - local.set $7 - local.get $7 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $~lib/typedarray/Uint32Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Int64Array#constructor - local.set $8 - local.get $8 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $~lib/typedarray/Int64Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Uint64Array#constructor - local.set $9 - local.get $9 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - call $~lib/typedarray/Uint64Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 74 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Float32Array#constructor - local.set $10 - local.get $10 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 77 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $10 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 78 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $10 - call $~lib/typedarray/Float32Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 79 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Float64Array#constructor - local.set $11 - local.get $11 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $11 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $11 - call $~lib/typedarray/Float64Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 675 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/typedarray/Int32Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 664 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/typedarray/Int32Array#subarray (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.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 8 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Float64Array#__set (param $0 i32) (param $1 i32) (param $2 f64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 1315 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - f64.store - ) - (func $~lib/typedarray/Float64Array#subarray (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.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 13 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $8 - f64.store - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 16 - i32.sub - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.load offset=4 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 i32) - (local $12 f64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $9 - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.get $9 - f64.store - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - local.get $10 - f64.store - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 - if - local.get $0 - f64.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - f64.store - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.get $10 - f64.store - i32.const 1 - local.set $8 - loop $while-continue|3 - local.get $8 - i32.const 1 - i32.shl - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $8 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $7 - local.get $5 - i32.lt_s - local.set $11 - local.get $11 - if - local.get $7 - local.set $8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $8 - i32.const 0 - i32.gt_s - local.set $11 - local.get $11 - if - local.get $0 - f64.load - local.set $10 - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $9 - local.get $10 - local.get $9 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $8 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - local.get $10 - f64.store - local.get $0 - local.get $9 - f64.store - end - local.get $8 - i32.const 1 - i32.shr_s - local.set $8 - br $while-continue|4 - end - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 - end - end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - f64.load offset=8 - local.set $12 - local.get $0 - local.get $0 - f64.load - f64.store offset=8 - local.get $0 - local.get $12 - f64.store - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s - if - local.get $3 - local.set $5 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq - if - local.get $5 - f64.load offset=8 - local.set $6 - local.get $5 - f64.load - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - f64.store offset=8 - local.get $5 - local.get $6 - f64.store - end - local.get $3 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $5 - local.set $10 - local.get $4 - local.set $9 - local.get $2 - call $~lib/rt/pure/__retain - local.set $8 - i32.const 0 - drop - local.get $9 - i32.const 256 - i32.lt_s - if - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/sort/insertionSort - else - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/sort/weakHeapSort - end - local.get $8 - call $~lib/rt/pure/__release - local.get $3 - local.set $10 - local.get $2 - call $~lib/rt/pure/__release - local.get $10 - end - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 - local.get $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.set $2 - local.get $3 - local.get $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.set $3 - local.get $2 - local.get $3 - i64.gt_s - local.get $2 - local.get $3 - i64.lt_s - i32.sub - ) - (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 496 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float64Array#sort - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Float64Array#__get (param $0 i32) (param $1 i32) (result f64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 1304 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $~lib/typedarray/Uint8ClampedArray#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 291 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.const 255 - local.get $2 - i32.sub - i32.const 31 - i32.shr_s - local.get $2 - i32.or - i32.and - i32.store8 - ) - (func $~lib/typedarray/Uint8ClampedArray#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 280 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_u - ) - (func $~lib/typedarray/Int8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 35 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.store8 - ) - (func $~lib/typedarray/Int8Array#fill (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.get $0 - call $~lib/rt/pure/__retain - local.set $7 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $7 - i32.load offset=4 - local.set $8 - local.get $7 - call $~lib/typedarray/Int8Array#get:length - local.set $9 - local.get $5 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - local.get $5 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $5 - local.tee $10 - local.get $9 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $5 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - local.get $4 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $4 - local.tee $10 - local.get $9 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $4 - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $5 - local.get $4 - i32.lt_s - if - local.get $8 - local.get $5 - i32.add - local.get $6 - local.get $4 - local.get $5 - i32.sub - call $~lib/memory/memory.fill - end - local.get $7 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/rt/__allocBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end - local.get $3 - ) - (func $~lib/rt/__allocArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 16 - local.get $2 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.set $5 - local.get $5 - i32.const 0 - local.get $3 - call $~lib/rt/__allocBuffer - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Int8Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 24 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_s - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_s - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 368 - i32.const 560 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - i32.const 0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int8Array#subarray (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.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 0 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Int32Array#fill (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.get $0 - call $~lib/rt/pure/__retain - local.set $7 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $7 - i32.load offset=4 - local.set $8 - local.get $7 - call $~lib/typedarray/Int32Array#get:length - local.set $9 - local.get $5 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - local.get $5 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $5 - local.tee $10 - local.get $9 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $5 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - local.get $4 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $4 - local.tee $10 - local.get $9 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $4 - i32.const 4 - i32.const 1 - i32.eq - drop - loop $for-loop|0 - local.get $5 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $7 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 368 - i32.const 560 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $std/typedarray/isInt32ArrayEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - i32.const 0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int32Array#slice (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.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $4 - local.get $6 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $6 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.get $4 - i32.sub - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $6 - i32.const 0 - local.get $6 - call $~lib/typedarray/Int32Array#constructor - local.tee $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $8 - i32.load offset=4 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - ) - (func $~lib/typedarray/Int32Array#copyWithin (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 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $7 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $7 - call $~lib/typedarray/Int32Array#get:length - local.set $8 - local.get $7 - i32.load offset=4 - local.set $9 - local.get $4 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - local.set $4 - local.get $6 - i32.const 0 - i32.lt_s - if (result i32) - local.get $8 - local.get $6 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $6 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $10 - local.get $5 - i32.const 0 - i32.lt_s - if (result i32) - local.get $8 - local.get $5 - i32.add - local.tee $11 - i32.const 0 - local.tee $12 - local.get $11 - local.get $12 - i32.gt_s - select - else - local.get $5 - local.tee $11 - local.get $8 - local.tee $12 - local.get $11 - local.get $12 - i32.lt_s - select - end - local.set $11 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $8 - local.get $4 - i32.add - local.tee $12 - i32.const 0 - local.tee $13 - local.get $12 - local.get $13 - i32.gt_s - select - else - local.get $4 - local.tee $12 - local.get $8 - local.tee $13 - local.get $12 - local.get $13 - i32.lt_s - select - end - local.set $12 - local.get $12 - local.get $11 - i32.sub - local.tee $13 - local.get $8 - local.get $10 - i32.sub - local.tee $14 - local.get $13 - local.get $14 - i32.lt_s - select - local.set $13 - local.get $9 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $9 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $13 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $7 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int8Array#reduce (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $8 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1696 - i32.const 0 - call $~lib/typedarray/Int8Array#reduce - local.set $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 163 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.store8 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint8Array#reduce (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $8 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1728 - i32.const 0 - call $~lib/typedarray/Uint8Array#reduce - local.set $2 - local.get $2 - i32.const 255 - i32.and - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint8ClampedArray#reduce (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $8 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1760 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#reduce - local.set $2 - local.get $2 - i32.const 255 - i32.and - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 419 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int16Array#reduce (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $8 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/typedarray/Int16Array#reduce - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 547 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint16Array#reduce (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $8 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1824 - i32.const 0 - call $~lib/typedarray/Uint16Array#reduce - local.set $2 - local.get $2 - i32.const 65535 - i32.and - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int32Array#reduce (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $8 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1856 - i32.const 0 - call $~lib/typedarray/Int32Array#reduce - local.set $2 - local.get $2 - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 803 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint32Array#reduce (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $8 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1888 - i32.const 0 - call $~lib/typedarray/Uint32Array#reduce - local.set $2 - local.get $2 - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 931 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - (local $4 i64) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i64.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int64Array#reduce (param $0 i32) (param $1 i32) (param $2 i64) (result i64) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $10 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i64) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1920 - i64.const 0 - call $~lib/typedarray/Int64Array#reduce - local.set $2 - local.get $2 - i64.const 6 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 1059 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - (local $4 i64) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i64.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint64Array#reduce (param $0 i32) (param $1 i32) (param $2 i64) (result i64) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $10 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i64) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1952 - i64.const 0 - call $~lib/typedarray/Uint64Array#reduce - local.set $2 - local.get $2 - i64.const 6 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 1187 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - f32.store - ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) - (local $4 f32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - f32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Float32Array#reduce (param $0 i32) (param $1 i32) (param $2 f32) (result f32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $10 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 f32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1984 - f32.const 0 - call $~lib/typedarray/Float32Array#reduce - local.set $2 - local.get $2 - f32.const 6 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) - (local $4 f64) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - f64.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Float64Array#reduce (param $0 i32) (param $1 i32) (param $2 f64) (result f64) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $10 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 f64) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2016 - f64.const 0 - call $~lib/typedarray/Float64Array#reduce - local.set $2 - local.get $2 - f64.const 6 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int8Array#reduceRight (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2048 - i32.const 0 - call $~lib/typedarray/Int8Array#reduceRight - local.set $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint8Array#reduceRight (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2080 - i32.const 0 - call $~lib/typedarray/Uint8Array#reduceRight - local.set $2 - local.get $2 - i32.const 255 - i32.and - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint8ClampedArray#reduceRight (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2112 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#reduceRight - local.set $2 - local.get $2 - i32.const 255 - i32.and - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int16Array#reduceRight (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2144 - i32.const 0 - call $~lib/typedarray/Int16Array#reduceRight - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint16Array#reduceRight (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2176 - i32.const 0 - call $~lib/typedarray/Uint16Array#reduceRight - local.set $2 - local.get $2 - i32.const 65535 - i32.and - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int32Array#reduceRight (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2208 - i32.const 0 - call $~lib/typedarray/Int32Array#reduceRight - local.set $2 - local.get $2 - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint32Array#reduceRight (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2240 - i32.const 0 - call $~lib/typedarray/Uint32Array#reduceRight - local.set $2 - local.get $2 - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - (local $4 i64) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i64.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int64Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i64) (result i64) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $9 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i64) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2272 - i64.const 0 - call $~lib/typedarray/Int64Array#reduceRight - local.set $2 - local.get $2 - i64.const 6 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - (local $4 i64) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i64.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint64Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i64) (result i64) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $9 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i64) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2304 - i64.const 0 - call $~lib/typedarray/Uint64Array#reduceRight - local.set $2 - local.get $2 - i64.const 6 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) - (local $4 f32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - f32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Float32Array#reduceRight (param $0 i32) (param $1 i32) (param $2 f32) (result f32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $9 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 f32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2336 - f32.const 0 - call $~lib/typedarray/Float32Array#reduceRight - local.set $2 - local.get $2 - f32.const 6 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) - (local $4 f64) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - f64.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Float64Array#reduceRight (param $0 i32) (param $1 i32) (param $2 f64) (result f64) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $9 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 f64) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2368 - f64.const 0 - call $~lib/typedarray/Float64Array#reduceRight - local.set $2 - local.get $2 - f64.const 6 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int8Array#map (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 0 - i32.shl - local.set $6 - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2400 - call $~lib/typedarray/Int8Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint8Array#map (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 0 - i32.shl - local.set $6 - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 152 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_u - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2432 - call $~lib/typedarray/Uint8Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint8ClampedArray#map (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 0 - i32.shl - local.set $6 - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2464 - call $~lib/typedarray/Uint8ClampedArray#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int16Array#map (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 1 - i32.shl - local.set $6 - i32.const 12 - i32.const 6 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Int16Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 408 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2496 - call $~lib/typedarray/Int16Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint16Array#map (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 1 - i32.shl - local.set $6 - i32.const 12 - i32.const 7 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint16Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 536 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2528 - call $~lib/typedarray/Uint16Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int32Array#map (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.shl - local.set $6 - i32.const 12 - i32.const 8 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2560 - call $~lib/typedarray/Int32Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint32Array#map (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.shl - local.set $6 - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint32Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 792 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2592 - call $~lib/typedarray/Uint32Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i64) - (local $3 i64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $0 - i64.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int64Array#map (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 3 - i32.shl - local.set $6 - i32.const 12 - i32.const 10 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i64) - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Int64Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 920 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2624 - call $~lib/typedarray/Int64Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 9 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i64) - (local $3 i64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $0 - i64.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint64Array#map (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 3 - i32.shl - local.set $6 - i32.const 12 - i32.const 11 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i64) - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint64Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 1048 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2656 - call $~lib/typedarray/Uint64Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 9 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result f32) - (local $3 f32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $0 - f32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Float32Array#map (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.shl - local.set $6 - i32.const 12 - i32.const 12 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_i32_i32_=>_f32) - f32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 368 - i32.const 432 - i32.const 1176 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2688 - call $~lib/typedarray/Float32Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 9 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result f64) - (local $3 f64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $0 - f64.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Float64Array#map (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 3 - i32.shl - local.set $6 - i32.const 12 - i32.const 13 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_i32_i32_=>_f64) - f64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2720 - call $~lib/typedarray/Float64Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 9 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.gt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/rt/tlsf/reallocateBlock (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.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $3 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $6 - local.get $6 - i32.load - local.set $7 - local.get $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $5 - local.get $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - local.get $1 - i32.load offset=8 - call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $8 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/heap/__heap_base - i32.ge_u - if - i32.const 1 - drop - local.get $1 - local.get $8 - call $~lib/rt/rtrace/onrealloc - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock - end - local.get $8 - ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/typedarray/Int8Array#filter (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $4 - i32.const 0 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.store8 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 - i32.const 0 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/tlsf/__realloc - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2752 - call $~lib/typedarray/Int8Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.gt_u - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint8Array#filter (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $4 - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $4 - i32.const 0 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.store8 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 - i32.const 0 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/tlsf/__realloc - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2784 - call $~lib/typedarray/Uint8Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Uint8Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.gt_u - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint8ClampedArray#filter (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $4 - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $4 - i32.const 0 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.store8 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 - i32.const 0 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/tlsf/__realloc - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2816 - call $~lib/typedarray/Uint8ClampedArray#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.gt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int16Array#filter (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - i32.const 12 - i32.const 6 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $4 - i32.const 1 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 - i32.const 1 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/tlsf/__realloc - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2848 - call $~lib/typedarray/Int16Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Int16Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.gt_u - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint16Array#filter (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $4 - i32.const 12 - i32.const 7 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $4 - i32.const 1 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 - i32.const 1 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/tlsf/__realloc - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2880 - call $~lib/typedarray/Uint16Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Uint16Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.gt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int32Array#filter (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - i32.const 12 - i32.const 8 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $4 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 - i32.const 2 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/tlsf/__realloc - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2912 - call $~lib/typedarray/Int32Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.gt_u - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint32Array#filter (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $4 - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $4 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 - i32.const 2 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/tlsf/__realloc - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2944 - call $~lib/typedarray/Uint32Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Uint32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.gt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int64Array#filter (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 i64) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - i32.const 12 - i32.const 10 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $4 - i32.const 3 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 3 - i32.shl - i32.add - local.get $11 - i64.store - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 - i32.const 3 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/tlsf/__realloc - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $12 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $12 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2976 - call $~lib/typedarray/Int64Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Int64Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 3 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.gt_u - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint64Array#filter (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 i64) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $4 - i32.const 12 - i32.const 11 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $4 - i32.const 3 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 3 - i32.shl - i32.add - local.get $11 - i64.store - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 - i32.const 3 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/tlsf/__realloc - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $12 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $12 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 3008 - call $~lib/typedarray/Uint64Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Uint64Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 3 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.const 2 - f32.gt - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Float32Array#filter (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 f32) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $4 - i32.const 12 - i32.const 12 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $4 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $11 - f32.store - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 - i32.const 2 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/tlsf/__realloc - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $12 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $12 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 5 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 3040 - call $~lib/typedarray/Float32Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Float32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 3 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 2 - f64.gt - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Float64Array#filter (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 f64) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $4 - i32.const 12 - i32.const 13 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $4 - i32.const 3 - i32.shl - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 3 - i32.shl - i32.add - local.get $11 - f64.store - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 - i32.const 3 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/tlsf/__realloc - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $12 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $12 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 5 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 3072 - call $~lib/typedarray/Float64Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Float64Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 3 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int8Array#some (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 3104 - call $~lib/typedarray/Int8Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3136 - call $~lib/typedarray/Int8Array#some - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint8Array#some (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3168 - call $~lib/typedarray/Uint8Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3200 - call $~lib/typedarray/Uint8Array#some - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint8ClampedArray#some (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 3232 - call $~lib/typedarray/Uint8ClampedArray#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3264 - call $~lib/typedarray/Uint8ClampedArray#some - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int16Array#some (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 3296 - call $~lib/typedarray/Int16Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3328 - call $~lib/typedarray/Int16Array#some - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint16Array#some (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 3360 - call $~lib/typedarray/Uint16Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3392 - call $~lib/typedarray/Uint16Array#some - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int32Array#some (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 3424 - call $~lib/typedarray/Int32Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3456 - call $~lib/typedarray/Int32Array#some - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint32Array#some (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 3488 - call $~lib/typedarray/Uint32Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3520 - call $~lib/typedarray/Uint32Array#some - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int64Array#some (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 0 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 3552 - call $~lib/typedarray/Int64Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3584 - call $~lib/typedarray/Int64Array#some - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint64Array#some (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 0 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 3616 - call $~lib/typedarray/Uint64Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3648 - call $~lib/typedarray/Uint64Array#some - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.const 2 - f32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Float32Array#some (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.const 0 - f32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 3680 - call $~lib/typedarray/Float32Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3712 - call $~lib/typedarray/Float32Array#some - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 2 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Float64Array#some (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 0 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 3744 - call $~lib/typedarray/Float64Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3776 - call $~lib/typedarray/Float64Array#some - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int8Array#findIndex (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 3808 - call $~lib/typedarray/Int8Array#findIndex - local.set $2 - local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3840 - call $~lib/typedarray/Int8Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint8Array#findIndex (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3872 - call $~lib/typedarray/Uint8Array#findIndex - local.set $2 - local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3904 - call $~lib/typedarray/Uint8Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint8ClampedArray#findIndex (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 3936 - call $~lib/typedarray/Uint8ClampedArray#findIndex - local.set $2 - local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3968 - call $~lib/typedarray/Uint8ClampedArray#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int16Array#findIndex (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 4000 - call $~lib/typedarray/Int16Array#findIndex - local.set $2 - local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4032 - call $~lib/typedarray/Int16Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint16Array#findIndex (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 4064 - call $~lib/typedarray/Uint16Array#findIndex - local.set $2 - local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4096 - call $~lib/typedarray/Uint16Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int32Array#findIndex (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 4128 - call $~lib/typedarray/Int32Array#findIndex - local.set $2 - local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4160 - call $~lib/typedarray/Int32Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint32Array#findIndex (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 4192 - call $~lib/typedarray/Uint32Array#findIndex - local.set $2 - local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4224 - call $~lib/typedarray/Uint32Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int64Array#findIndex (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 4 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 4256 - call $~lib/typedarray/Int64Array#findIndex - local.set $2 - local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4288 - call $~lib/typedarray/Int64Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint64Array#findIndex (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 4 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 4320 - call $~lib/typedarray/Uint64Array#findIndex - local.set $2 - local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4352 - call $~lib/typedarray/Uint64Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.const 2 - f32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Float32Array#findIndex (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.const 4 - f32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 4384 - call $~lib/typedarray/Float32Array#findIndex - local.set $2 - local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4416 - call $~lib/typedarray/Float32Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 2 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Float64Array#findIndex (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 4 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 4448 - call $~lib/typedarray/Float64Array#findIndex - local.set $2 - local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4480 - call $~lib/typedarray/Float64Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 440 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.rem_s - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int8Array#every (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 4512 - call $~lib/typedarray/Int8Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4544 - call $~lib/typedarray/Int8Array#every - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.rem_u - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint8Array#every (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 4576 - call $~lib/typedarray/Uint8Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4608 - call $~lib/typedarray/Uint8Array#every - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.rem_u - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint8ClampedArray#every (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 4640 - call $~lib/typedarray/Uint8ClampedArray#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4672 - call $~lib/typedarray/Uint8ClampedArray#every - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.rem_s - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int16Array#every (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 4704 - call $~lib/typedarray/Int16Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4736 - call $~lib/typedarray/Int16Array#every - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.rem_u - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint16Array#every (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 4768 - call $~lib/typedarray/Uint16Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4800 - call $~lib/typedarray/Uint16Array#every - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.rem_s - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int32Array#every (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 4832 - call $~lib/typedarray/Int32Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4864 - call $~lib/typedarray/Int32Array#every - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.rem_u - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint32Array#every (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 4896 - call $~lib/typedarray/Uint32Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4928 - call $~lib/typedarray/Uint32Array#every - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.rem_s - i64.const 0 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int64Array#every (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 4960 - call $~lib/typedarray/Int64Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4992 - call $~lib/typedarray/Int64Array#every - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.rem_u - i64.const 0 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint64Array#every (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 5024 - call $~lib/typedarray/Uint64Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5056 - call $~lib/typedarray/Uint64Array#every - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - f32.abs - f32.const 1 - f32.eq - if - local.get $0 - local.get $0 - f32.trunc - f32.sub - local.get $0 - f32.copysign - return - end - local.get $0 - i32.reinterpret_f32 - local.set $2 - local.get $1 - i32.reinterpret_f32 - local.set $3 - local.get $2 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $4 - local.get $3 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $5 - local.get $2 - i32.const -2147483648 - i32.and - local.set $6 - local.get $3 - i32.const 1 - i32.shl - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $4 - i32.const 255 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f32.ne - end - if - local.get $0 - local.get $1 - f32.mul - local.set $8 - local.get $8 - local.get $8 - f32.div - return - end - local.get $2 - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $7 - i32.le_u - if - local.get $9 - local.get $7 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $0 - return - end - local.get $4 - i32.eqz - if - local.get $4 - local.get $2 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $4 - local.get $2 - i32.const 0 - local.get $4 - i32.sub - i32.const 1 - i32.add - i32.shl - local.set $2 - else - local.get $2 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $2 - local.get $2 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $2 - end - local.get $5 - i32.eqz - if - local.get $5 - local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $5 - local.get $3 - i32.const 0 - local.get $5 - i32.sub - i32.const 1 - i32.add - i32.shl - local.set $3 - else - local.get $3 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $3 - local.get $3 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $3 - end - loop $while-continue|0 - local.get $4 - local.get $5 - i32.gt_s - local.set $10 - local.get $10 - if - local.get $2 - local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 - end - local.get $2 - i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 - end - local.get $2 - i32.const 8 - i32.shl - i32.clz - local.set $11 - local.get $4 - local.get $11 - i32.sub - local.set $4 - local.get $2 - local.get $11 - i32.shl - local.set $2 - local.get $4 - i32.const 0 - i32.gt_s - if - local.get $2 - i32.const 1 - i32.const 23 - i32.shl - i32.sub - local.set $2 - local.get $2 - local.get $4 - i32.const 23 - i32.shl - i32.or - local.set $2 - else - local.get $2 - i32.const 0 - local.get $4 - i32.sub - i32.const 1 - i32.add - i32.shr_u - local.set $2 - end - local.get $2 - local.get $6 - i32.or - local.set $2 - local.get $2 - f32.reinterpret_i32 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.const 2 - call $~lib/math/NativeMathf.mod - f32.const 0 - f32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Float32Array#every (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.const 2 - f32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 5088 - call $~lib/typedarray/Float32Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5120 - call $~lib/typedarray/Float32Array#every - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/math/NativeMath.mod (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 f64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - local.get $1 - f64.abs - f64.const 1 - f64.eq - if - local.get $0 - local.get $0 - f64.trunc - f64.sub - local.get $0 - f64.copysign - return - end - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $4 - local.get $3 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $5 - local.get $2 - i64.const 63 - i64.shr_u - local.set $6 - local.get $3 - i64.const 1 - i64.shl - local.set $7 - local.get $7 - i64.const 0 - i64.eq - if (result i32) - i32.const 1 - else - local.get $4 - i64.const 2047 - i64.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f64.ne - end - if - local.get $0 - local.get $1 - f64.mul - local.set $8 - local.get $8 - local.get $8 - f64.div - return - end - local.get $2 - i64.const 1 - i64.shl - local.set $9 - local.get $9 - local.get $7 - i64.le_u - if - local.get $9 - local.get $7 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $0 - return - end - local.get $4 - i64.const 0 - i64.ne - i32.eqz - if - local.get $4 - local.get $2 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $4 - local.get $2 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shl - local.set $2 - else - local.get $2 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $2 - local.get $2 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $2 - end - local.get $5 - i64.const 0 - i64.ne - i32.eqz - if - local.get $5 - local.get $3 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $5 - local.get $3 - i64.const 0 - local.get $5 - i64.sub - i64.const 1 - i64.add - i64.shl - local.set $3 - else - local.get $3 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $3 - local.get $3 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $3 - end - loop $while-continue|0 - local.get $4 - local.get $5 - i64.gt_s - local.set $10 - local.get $10 - if - local.get $2 - local.get $3 - i64.ge_u - if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 - end - local.get $2 - i64.const 1 - i64.shl - local.set $2 - local.get $4 - i64.const 1 - i64.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i64.ge_u - if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 - end - local.get $2 - i64.const 11 - i64.shl - i64.clz - local.set $11 - local.get $4 - local.get $11 - i64.sub - local.set $4 - local.get $2 - local.get $11 - i64.shl - local.set $2 - local.get $4 - i64.const 0 - i64.gt_s - if - local.get $2 - i64.const 1 - i64.const 52 - i64.shl - i64.sub - local.set $2 - local.get $2 - local.get $4 - i64.const 52 - i64.shl - i64.or - local.set $2 - else - local.get $2 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shr_u - local.set $2 - end - local.get $2 - local.get $6 - i64.const 63 - i64.shl - i64.or - local.set $2 - local.get $2 - f64.reinterpret_i64 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 2 - call $~lib/math/NativeMath.mod - f64.const 0 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Float64Array#every (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 2 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 5152 - call $~lib/typedarray/Float64Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5184 - call $~lib/typedarray/Float64Array#every - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#forEach (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 5280 - call $~lib/typedarray/Int8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 255 - i32.and - local.get $3 - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#forEach (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 5312 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 255 - i32.and - local.get $3 - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#forEach (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 5344 - call $~lib/typedarray/Uint8ClampedArray#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#forEach (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 5376 - call $~lib/typedarray/Int16Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 65535 - i32.and - local.get $3 - i32.const 65535 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#forEach (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 5408 - call $~lib/typedarray/Uint16Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#forEach (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 5440 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#forEach (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 5472 - call $~lib/typedarray/Uint32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 - i64.extend_i32_s - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#forEach (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 5504 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 - i64.extend_i32_s - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#forEach (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 5536 - call $~lib/typedarray/Uint64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 - f32.convert_i32_s - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#forEach (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 5568 - call $~lib/typedarray/Float32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 - f64.convert_i32_s - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#forEach (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 5600 - call $~lib/typedarray/Float64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#reverse (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.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 0 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load8_s - local.set $8 - local.get $6 - local.get $7 - i32.load8_s - i32.store8 - local.get $7 - local.get $8 - i32.store8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - (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) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Int8Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Int8Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int8Array#subarray - local.tee $6 - call $~lib/typedarray/Int8Array#reverse - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 7 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#reverse (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.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint8Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 0 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load8_u - local.set $8 - local.get $6 - local.get $7 - i32.load8_u - i32.store8 - local.get $7 - local.get $8 - i32.store8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Uint8Array#subarray (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.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 0 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> - (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) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Uint8Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Uint8Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Uint8Array#subarray - local.tee $6 - call $~lib/typedarray/Uint8Array#reverse - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 7 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#reverse (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.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 0 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load8_u - local.set $8 - local.get $6 - local.get $7 - i32.load8_u - i32.store8 - local.get $7 - local.get $8 - i32.store8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (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.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 0 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> - (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) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Uint8ClampedArray#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.tee $6 - call $~lib/typedarray/Uint8ClampedArray#reverse - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 7 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#reverse (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.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load16_s - local.set $8 - local.get $6 - local.get $7 - i32.load16_s - i32.store16 - local.get $7 - local.get $8 - i32.store16 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Int16Array#subarray (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.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 6 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> - (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) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Int16Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Int16Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int16Array#subarray - local.tee $6 - call $~lib/typedarray/Int16Array#reverse - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 7 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#reverse (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.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint16Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load16_u - local.set $8 - local.get $6 - local.get $7 - i32.load16_u - i32.store16 - local.get $7 - local.get $8 - i32.store16 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Uint16Array#subarray (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.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 7 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> - (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) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Uint16Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Uint16Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Uint16Array#subarray - local.tee $6 - call $~lib/typedarray/Uint16Array#reverse - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 7 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#reverse (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.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load - local.set $8 - local.get $6 - local.get $7 - i32.load - i32.store - local.get $7 - local.get $8 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,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) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Int32Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Int32Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int32Array#subarray - local.tee $6 - call $~lib/typedarray/Int32Array#reverse - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 7 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - call $~lib/typedarray/Int32Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#reverse (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.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint32Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load - local.set $8 - local.get $6 - local.get $7 - i32.load - i32.store - local.get $7 - local.get $8 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Uint32Array#subarray (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.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - (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) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Uint32Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Uint32Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Uint32Array#subarray - local.tee $6 - call $~lib/typedarray/Uint32Array#reverse - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 7 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#reverse (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 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $6 - i64.load - local.set $8 - local.get $6 - local.get $7 - i64.load - i64.store - local.get $7 - local.get $8 - i64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Int64Array#subarray (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.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 10 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - (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) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Int64Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Int64Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int64Array#subarray - local.tee $6 - call $~lib/typedarray/Int64Array#reverse - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 8 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 7 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 6 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#reverse (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 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint64Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $6 - i64.load - local.set $8 - local.get $6 - local.get $7 - i64.load - i64.store - local.get $7 - local.get $8 - i64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Uint64Array#subarray (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.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 11 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - (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) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Uint64Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Uint64Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Uint64Array#subarray - local.tee $6 - call $~lib/typedarray/Uint64Array#reverse - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 8 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 7 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 6 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#reverse (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 f32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Float32Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.set $7 - local.get $6 - f32.load - local.set $8 - local.get $6 - local.get $7 - f32.load - f32.store - local.get $7 - local.get $8 - f32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/typedarray/Float32Array#subarray (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.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 12 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - (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) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Float32Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Float32Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - f32.convert_i32_s - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Float32Array#subarray - local.tee $6 - call $~lib/typedarray/Float32Array#reverse - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 8 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 7 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 6 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#reverse (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 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Float64Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $6 - f64.load - local.set $8 - local.get $6 - local.get $7 - f64.load - f64.store - local.get $7 - local.get $8 - f64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - (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) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Float64Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Float64Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - f64.convert_i32_s - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Float64Array#subarray - local.tee $6 - call $~lib/typedarray/Float64Array#reverse - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 8 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#indexOf (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) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $4 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int8Array#lastIndexOf (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) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $4 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int8Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int8Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int8Array#subarray - local.set $6 - local.get $6 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#indexOf (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) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $4 - i32.const 255 - i32.and - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint8Array#lastIndexOf (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) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $4 - i32.const 255 - i32.and - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint8Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - call $~lib/typedarray/Uint8Array#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint8Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array#lastIndexOf@varargs - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint8Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint8Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Uint8Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Uint8Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Uint8Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Uint8Array#subarray - local.set $6 - local.get $6 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#indexOf (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) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $4 - i32.const 255 - i32.and - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf (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) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $4 - i32.const 255 - i32.and - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.set $6 - local.get $6 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#indexOf (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) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $4 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int16Array#lastIndexOf (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) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $4 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int16Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int16Array#subarray - local.set $6 - local.get $6 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int16Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#indexOf (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) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $4 - i32.const 65535 - i32.and - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint16Array#lastIndexOf (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) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $4 - i32.const 65535 - i32.and - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint16Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - call $~lib/typedarray/Uint16Array#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint16Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint16Array#lastIndexOf@varargs - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint16Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint16Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint16Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint16Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint16Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Uint16Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Uint16Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Uint16Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Uint16Array#subarray - local.set $6 - local.get $6 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#indexOf (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) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int32Array#lastIndexOf (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) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int32Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int32Array#subarray - local.set $6 - local.get $6 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int32Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#indexOf (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) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint32Array#lastIndexOf (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) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - call $~lib/typedarray/Uint32Array#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint32Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Uint32Array#subarray - local.set $6 - local.get $6 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $4 - i64.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $4 - i64.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i64.const 0 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const -1 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 1 - i32.const -11 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int64Array#subarray - local.set $6 - local.get $6 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 9 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 10 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 5 - i32.const 1 - call $~lib/typedarray/Int64Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 5 - i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $4 - i64.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $4 - i64.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - call $~lib/typedarray/Uint64Array#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint64Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i64.const 0 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const -1 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 1 - i32.const -11 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Uint64Array#subarray - local.set $6 - local.get $6 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 9 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 10 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 5 - i32.const 1 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 5 - i32.const 2 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $4 - f32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Float32Array#lastIndexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $4 - f32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Float32Array#lastIndexOf@varargs (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - call $~lib/typedarray/Float32Array#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float32Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - f32.const 0 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 11 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const -1 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 3 - i32.const 2 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 3 - i32.const 3 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 1 - i32.const 10 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 1 - i32.const -100 - call $~lib/typedarray/Float32Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 3 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 3 - i32.const 3 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 3 - i32.const 2 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 1 - i32.const 100 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 1 - i32.const -10 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 1 - i32.const -11 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Float32Array#subarray - local.set $6 - local.get $6 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f32.const 4 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f32.const 5 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f32.const 9 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f32.const 10 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f32.const 11 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f32.const 5 - i32.const 1 - call $~lib/typedarray/Float32Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f32.const 5 - i32.const 2 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $4 - f64.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Float64Array#lastIndexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $4 - f64.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Float64Array#lastIndexOf@varargs (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - call $~lib/typedarray/Float64Array#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - f64.const 0 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 11 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const -1 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 3 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 3 - i32.const 2 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 3 - i32.const 3 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 3 - i32.const 4 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 1 - i32.const 10 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 1 - i32.const -100 - call $~lib/typedarray/Float64Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 3 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 3 - i32.const 4 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 3 - i32.const 3 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 3 - i32.const 2 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 1 - i32.const 100 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 1 - i32.const -10 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 1 - i32.const -11 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Float64Array#subarray - local.set $6 - local.get $6 - f64.const 3 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f64.const 4 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f64.const 5 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f64.const 9 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f64.const 10 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f64.const 11 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f64.const 5 - i32.const 1 - call $~lib/typedarray/Float64Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f64.const 5 - i32.const 2 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#includes (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 f64) - (local $11 i32) - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 1 - drop - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const 0 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $10 - local.get $10 - local.get $4 - f64.eq - if (result i32) - i32.const 1 - else - local.get $10 - local.get $10 - f64.ne - local.get $4 - local.get $4 - f64.ne - i32.and - end - if - i32.const 1 - local.set $11 - local.get $5 - call $~lib/rt/pure/__release - local.get $11 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const 0 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - end - ) - (func $~lib/typedarray/Float32Array#includes (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 f32) - (local $11 i32) - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 1 - drop - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const 0 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $10 - local.get $10 - local.get $4 - f32.eq - if (result i32) - i32.const 1 - else - local.get $10 - local.get $10 - f32.ne - local.get $4 - local.get $4 - f32.ne - i32.and - end - if - i32.const 1 - local.set $11 - local.get $5 - call $~lib/rt/pure/__release - local.get $11 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const 0 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - end - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 100000 - i32.lt_u - if - local.get $0 - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $0 - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $0 - i32.const 10000 - i32.ge_u - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $0 - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - i32.const 6036 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - i32.const 6036 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $1 - i32.const 100 - i32.div_u - local.set $3 - local.get $1 - i32.const 100 - i32.rem_u - local.set $10 - local.get $3 - local.set $1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 6036 - local.get $10 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 6036 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store - else - local.get $2 - i32.const 1 - i32.sub - local.set $2 - i32.const 48 - local.get $1 - i32.add - local.set $11 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - ) - (func $~lib/util/number/utoa_hex_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $2 - i32.const 2 - i32.ge_u - local.set $3 - local.get $3 - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 6464 - local.get $1 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i64.const 8 - i64.shr_u - local.set $1 - br $while-continue|0 - end - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - i32.const 6464 - local.get $1 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end - ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - local.get $1 - local.set $2 - local.get $2 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $1 - i64.extend_i32_s - local.set $3 - local.get $3 - local.set $4 - i32.const 1 - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $4 - i64.div_u - local.set $0 - local.get $4 - local.get $4 - i64.mul - local.set $4 - local.get $5 - i32.const 1 - i32.shl - local.set $5 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $0 - i64.const 1 - i64.ge_u - local.set $2 - local.get $2 - if - local.get $0 - local.get $3 - i64.div_u - local.set $0 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $while-continue|1 - end - end - local.get $5 - i32.const 1 - i32.sub - ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i32) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and - i32.const 0 - i32.eq - if - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $5 - local.get $4 - i64.const 1 - i64.sub - local.set $6 - loop $do-continue|0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7504 - local.get $1 - local.get $6 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $5 - i64.shr_u - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|0 - end - else - loop $do-continue|1 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $4 - i64.div_u - local.set $6 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7504 - local.get $1 - local.get $6 - local.get $4 - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $6 - local.set $1 - local.get $1 - i64.const 0 - i64.ne - local.set $7 - local.get $7 - br_if $do-continue|1 - end - end - ) - (func $~lib/util/number/itoa32 (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.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 5840 - i32.const 5968 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 6032 - return - end - local.get $0 - i32.const 31 - i32.shr_u - local.set $2 - local.get $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - i64.extend_i32_u - local.get $5 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.set $4 - local.get $4 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.get $4 - i64.extend_i32_u - local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 1 - drop - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 0 - i32.lt_s - local.set $2 - local.get $2 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 1 - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 48 - i32.or - i32.store16 - i32.const 1 - local.get $2 - i32.add - return - end - local.get $2 - local.set $3 - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/string/String#substring (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.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $6 - local.get $2 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $7 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $8 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $8 - i32.sub - local.set $10 - local.get $10 - i32.eqz - if - i32.const 5824 - call $~lib/rt/pure/__retain - return - end - local.get $8 - i32.eqz - if (result i32) - local.get $9 - local.get $3 - i32.const 1 - i32.shl - i32.eq - else - i32.const 0 - end - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $10 - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $11 - local.get $11 - local.get $0 - local.get $8 - i32.add - local.get $10 - call $~lib/memory/memory.copy - local.get $11 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5824 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i32.load8_s - local.set $4 - i32.const 1 - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 11 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 11 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int8Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Int8Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7600 - call $~lib/typedarray/Int8Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - i32.const 0 - drop - local.get $1 - i32.const 7600 - call $~lib/typedarray/Int8Array#join - local.tee $2 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Int8Array#toString - local.tee $3 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 5840 - i32.const 5968 - i32.const 350 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 6032 - return - end - i32.const 0 - local.set $2 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - i64.extend_i32_u - local.get $4 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.get $0 - i64.extend_i32_u - local.get $3 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 255 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - i32.const 255 - i32.and - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - i32.const 255 - i32.and - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5824 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i32.load8_u - local.set $4 - i32.const 0 - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 10 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 10 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint8Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Uint8Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7600 - call $~lib/typedarray/Uint8Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - drop - local.get $1 - i32.const 7600 - call $~lib/typedarray/Uint8Array#join - local.tee $2 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Uint8Array#toString - local.tee $3 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Uint8ClampedArray#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7600 - call $~lib/typedarray/Uint8ClampedArray#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - i32.const 0 - drop - local.get $1 - i32.const 7600 - call $~lib/typedarray/Uint8ClampedArray#join - local.tee $2 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#toString - local.tee $3 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 0 - i32.lt_s - local.set $2 - local.get $2 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 1 - drop - i32.const 2 - i32.const 4 - i32.le_u - drop - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 48 - i32.or - i32.store16 - i32.const 1 - local.get $2 - i32.add - return - end - local.get $2 - local.set $3 - i32.const 2 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5824 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i32.load16_s - local.set $4 - i32.const 1 - drop - i32.const 2 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 11 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 11 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int16Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Int16Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7600 - call $~lib/typedarray/Int16Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - drop - local.get $1 - i32.const 7600 - call $~lib/typedarray/Int16Array#join - local.tee $2 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Int16Array#toString - local.tee $3 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 - i32.const 2 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - i32.const 65535 - i32.and - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5824 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i32.load16_u - local.set $4 - i32.const 0 - drop - i32.const 2 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 10 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 10 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint16Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Uint16Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Uint16Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7600 - call $~lib/typedarray/Uint16Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - drop - local.get $1 - i32.const 7600 - call $~lib/typedarray/Uint16Array#join - local.tee $2 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Uint16Array#toString - local.tee $3 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 1 - drop - local.get $1 - i32.const 0 - i32.lt_s - local.set $2 - local.get $2 - if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - local.get $2 - i32.add - return - end - local.get $2 - local.set $3 - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5824 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i32.load - local.set $4 - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 11 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 11 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int32Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Int32Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7600 - call $~lib/typedarray/Int32Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - i32.const 0 - drop - local.get $1 - i32.const 7600 - call $~lib/typedarray/Int32Array#join - local.tee $2 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Int32Array#toString - local.tee $3 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5824 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i32.load - local.set $4 - i32.const 0 - drop - i32.const 4 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 10 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 10 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint32Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Uint32Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Uint32Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7600 - call $~lib/typedarray/Uint32Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - i32.const 0 - drop - local.get $1 - i32.const 7600 - call $~lib/typedarray/Uint32Array#join - local.tee $2 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Uint32Array#toString - local.tee $3 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if - local.get $0 - i64.const 1000000000000 - i64.lt_u - if - i32.const 10 - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - return - else - i32.const 13 - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if - i32.const 16 - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.add - return - else - i32.const 18 - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - loop $while-continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u - local.set $3 - local.get $3 - if - local.get $1 - i64.const 100000000 - i64.div_u - local.set $4 - local.get $1 - local.get $4 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 - local.get $6 - i32.const 100 - i32.div_u - local.set $8 - local.get $6 - i32.const 100 - i32.rem_u - local.set $9 - local.get $7 - i32.const 100 - i32.div_u - local.set $10 - local.get $7 - i32.const 100 - i32.rem_u - local.set $11 - i32.const 6036 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 6036 - local.get $11 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - i32.const 6036 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 6036 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $0 - local.get $1 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - ) - (func $~lib/util/number/itoa64 (param $0 i64) (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 i64) - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 5840 - i32.const 5968 - i32.const 431 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 0 - i64.ne - i32.eqz - if - i32.const 6032 - return - end - local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $2 - local.get $2 - if - i64.const 0 - local.get $0 - i64.sub - local.set $0 - end - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.set $4 - local.get $4 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $8 - local.get $4 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/number/utoa32_dec_lut - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $9 - local.get $5 - local.set $6 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $9 - local.get $6 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.set $4 - local.get $0 - local.set $9 - local.get $5 - local.set $8 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $4 - local.get $9 - local.get $8 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.get $0 - local.get $5 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - i32.const 0 - local.set $2 - i32.const 1 - drop - local.get $1 - i64.const 0 - i64.lt_s - local.set $2 - local.get $2 - if - i64.const 0 - local.get $1 - i64.sub - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 48 - i64.or - i64.store16 - i32.const 1 - local.get $2 - i32.add - return - end - local.get $2 - local.set $3 - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $1 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.set $4 - local.get $3 - local.get $4 - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $7 - local.get $4 - local.set $6 - local.get $3 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $3 - local.get $1 - call $~lib/util/number/decimalCount64High - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - local.set $8 - local.get $3 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_dec_lut - end - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5824 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i64.load - local.set $5 - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $5 - i32.wrap_i64 - i64.extend_i32_s - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $4 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 21 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 21 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int64Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Int64Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7600 - call $~lib/typedarray/Int64Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - drop - local.get $1 - i32.const 7600 - call $~lib/typedarray/Int64Array#join - local.tee $2 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Int64Array#toString - local.tee $3 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/utoa64 (param $0 i64) (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 i64) - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - i32.const 5840 - i32.const 5968 - i32.const 401 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 0 - i64.ne - i32.eqz - if - i32.const 6032 - return - end - i32.const 0 - local.set $2 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.set $3 - local.get $3 - call $~lib/util/number/decimalCount32 - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $7 - local.get $3 - local.set $6 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $8 - local.get $4 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_dec_lut - end - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.set $3 - local.get $0 - local.set $8 - local.get $4 - local.set $7 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $3 - local.get $8 - local.get $7 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - local.get $0 - local.get $4 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $0 - local.get $1 - i64.const 48 - i64.or - i64.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $1 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.set $4 - local.get $3 - local.get $4 - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 - local.set $7 - local.get $4 - local.set $6 - local.get $3 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_dec_lut - else - local.get $3 - local.get $1 - call $~lib/util/number/decimalCount64High - i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - local.set $8 - local.get $3 - local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_dec_lut - end - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5824 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i64.load - local.set $5 - i32.const 0 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $5 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $4 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 20 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 20 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint64Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Uint64Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Uint64Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7600 - call $~lib/typedarray/Uint64Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - i32.const 0 - drop - local.get $1 - i32.const 7600 - call $~lib/typedarray/Uint64Array#join - local.tee $2 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 629 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Uint64Array#toString - local.tee $3 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 630 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i64) - i32.const 0 - local.get $4 - i32.sub - local.set $7 - i64.const 1 - local.get $7 - i64.extend_i32_s - i64.shl - local.set $8 - local.get $8 - i64.const 1 - i64.sub - local.set $9 - local.get $3 - local.get $1 - i64.sub - local.set $10 - local.get $3 - local.get $7 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.set $11 - local.get $3 - local.get $9 - i64.and - local.set $12 - local.get $11 - call $~lib/util/number/decimalCount32 - local.set $13 - local.get $6 - local.set $14 - loop $while-continue|0 - local.get $13 - i32.const 0 - i32.gt_s - local.set $15 - local.get $15 - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $13 - local.set $17 - local.get $17 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $17 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $17 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $17 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $17 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $17 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $17 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $17 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $17 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $17 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - local.get $11 - i32.const 1000000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 1000000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 100000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 100000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 10000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 10000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 1000000 - i32.div_u - local.set $16 - local.get $11 - i32.const 1000000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 100000 - i32.div_u - local.set $16 - local.get $11 - i32.const 100000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 10000 - i32.div_u - local.set $16 - local.get $11 - i32.const 10000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 1000 - i32.div_u - local.set $16 - local.get $11 - i32.const 1000 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 100 - i32.div_u - local.set $16 - local.get $11 - i32.const 100 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - i32.const 10 - i32.div_u - local.set $16 - local.get $11 - i32.const 10 - i32.rem_u - local.set $11 - br $break|1 - end - local.get $11 - local.set $16 - i32.const 0 - local.set $11 - br $break|1 - end - i32.const 0 - local.set $16 - br $break|1 - end - local.get $16 - local.get $14 - i32.or - if - local.get $0 - local.get $14 - local.tee $17 - i32.const 1 - i32.add - local.set $14 - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $16 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - i32.const 1 - i32.sub - local.set $13 - local.get $11 - i64.extend_i32_u - local.get $7 - i64.extend_i32_s - i64.shl - local.get $12 - i64.add - local.set $18 - local.get $18 - local.get $5 - i64.le_u - if - global.get $~lib/util/number/_K - local.get $13 - i32.add - global.set $~lib/util/number/_K - local.get $0 - local.set $23 - local.get $14 - local.set $17 - local.get $5 - local.set $22 - local.get $18 - local.set $21 - i32.const 8680 - local.get $13 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $7 - i64.extend_i32_s - i64.shl - local.set $20 - local.get $10 - local.set $19 - local.get $23 - local.get $17 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $24 - local.get $24 - i32.load16_u - local.set $25 - loop $while-continue|3 - local.get $21 - local.get $19 - i64.lt_u - if (result i32) - local.get $22 - local.get $21 - i64.sub - local.get $20 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $19 - local.get $21 - i64.sub - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - local.set $26 - local.get $26 - if - local.get $25 - i32.const 1 - i32.sub - local.set $25 - local.get $21 - local.get $20 - i64.add - local.set $21 - br $while-continue|3 - end - end - local.get $24 - local.get $25 - i32.store16 - local.get $14 - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - i32.const 1 - local.set $15 - local.get $15 - if - local.get $12 - i64.const 10 - i64.mul - local.set $12 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $12 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $22 - local.get $22 - local.get $14 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $14 - local.tee $25 - i32.const 1 - i32.add - local.set $14 - local.get $25 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $22 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $12 - local.get $9 - i64.and - local.set $12 - local.get $13 - i32.const 1 - i32.sub - local.set $13 - local.get $12 - local.get $5 - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $13 - i32.add - global.set $~lib/util/number/_K - local.get $10 - i32.const 8680 - i32.const 0 - local.get $13 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $10 - local.get $0 - local.set $17 - local.get $14 - local.set $26 - local.get $5 - local.set $27 - local.get $12 - local.set $21 - local.get $8 - local.set $20 - local.get $10 - local.set $19 - local.get $17 - local.get $26 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $25 - local.get $25 - i32.load16_u - local.set $24 - loop $while-continue|6 - local.get $21 - local.get $19 - i64.lt_u - if (result i32) - local.get $27 - local.get $21 - i64.sub - local.get $20 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $19 - local.get $21 - i64.sub - local.get $21 - local.get $20 - i64.add - local.get $19 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - local.set $23 - local.get $23 - if - local.get $24 - i32.const 1 - i32.sub - local.set $24 - local.get $21 - local.get $20 - i64.add - local.set $21 - br $while-continue|6 - end - end - local.get $25 - local.get $24 - i32.store16 - local.get $14 - return - end - br $while-continue|4 - end - end - unreachable - ) - (func $~lib/util/number/prettify (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.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.set $3 - local.get $1 - local.get $3 - i32.le_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $1 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 2 - i32.add - return - else - local.get $3 - i32.const 0 - i32.gt_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $4 - local.get $4 - i32.const 2 - i32.add - local.get $4 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - return - else - i32.const -6 - local.get $3 - i32.lt_s - if (result i32) - local.get $3 - i32.const 0 - i32.le_s - else - i32.const 0 - end - if - i32.const 2 - local.get $3 - i32.sub - local.set $4 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or - i32.store - i32.const 2 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $4 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $1 - local.get $4 - i32.add - return - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - local.get $6 - i32.const 0 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 - local.get $6 - i32.sub - local.set $6 - end - local.get $6 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $7 - local.get $5 - local.set $10 - local.get $6 - local.set $9 - local.get $7 - local.set $8 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/number/utoa32_dec_lut - local.get $5 - i32.const 45 - i32.const 43 - local.get $4 - select - i32.store16 - local.get $7 - local.set $1 - local.get $1 - i32.const 2 - i32.add - return - else - local.get $1 - i32.const 1 - i32.shl - local.set $7 - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $7 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $7 - i32.add - i32.const 101 - i32.store16 offset=2 - local.get $1 - local.get $0 - local.get $7 - i32.add - i32.const 4 - i32.add - local.set $9 - local.get $3 - i32.const 1 - i32.sub - local.set $8 - local.get $8 - i32.const 0 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 - local.get $8 - i32.sub - local.set $8 - end - local.get $8 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $5 - local.get $9 - local.set $11 - local.get $8 - local.set $6 - local.get $5 - local.set $10 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $11 - local.get $6 - local.get $10 - call $~lib/util/number/utoa32_dec_lut - local.get $9 - i32.const 45 - i32.const 43 - local.get $4 - select - i32.store16 - local.get $5 - i32.add - local.set $1 - local.get $1 - i32.const 2 - i32.add - return - end - unreachable - end - unreachable - end - unreachable - end - unreachable - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i64) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 f64) - (local $17 i64) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i64) - (local $24 i64) - (local $25 i64) - (local $26 i32) - (local $27 i64) - (local $28 i32) - local.get $1 - f64.const 0 - f64.lt - local.set $2 - local.get $2 - if - local.get $1 - f64.neg - local.set $1 - local.get $0 - i32.const 45 - i32.store16 - end - local.get $1 - local.set $5 - local.get $0 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i64.reinterpret_f64 - local.set $6 - local.get $6 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $7 - local.get $6 - i64.const 4503599627370495 - i64.and - local.set $8 - local.get $7 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $8 - i64.add - local.set $9 - local.get $7 - i32.const 1 - local.get $7 - select - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $7 - local.get $9 - local.set $11 - local.get $7 - local.set $10 - local.get $11 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $12 - local.get $10 - i32.const 1 - i32.sub - local.set $13 - local.get $12 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $12 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $12 - local.get $13 - local.get $14 - i32.sub - local.set $13 - i32.const 1 - local.get $11 - i64.const 4503599627370496 - i64.eq - i32.add - local.set $15 - local.get $12 - global.set $~lib/util/number/_frc_plus - local.get $11 - local.get $15 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $10 - local.get $15 - i32.sub - local.get $13 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $13 - global.set $~lib/util/number/_exp - global.get $~lib/util/number/_exp - local.set $10 - i32.const -61 - local.get $10 - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $16 - local.get $16 - i32.trunc_f64_s - local.set $15 - local.get $15 - local.get $15 - f64.convert_i32_s - local.get $16 - f64.ne - i32.add - local.set $15 - local.get $15 - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $14 - i32.const 348 - local.get $14 - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 7808 - local.get $14 - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 8504 - local.get $14 - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $9 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $9 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $9 - local.get $7 - local.get $14 - i32.sub - local.set $7 - global.get $~lib/util/number/_frc_pow - local.set $12 - global.get $~lib/util/number/_exp_pow - local.set $15 - local.get $9 - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $24 - local.get $24 - i64.const 2147483647 - i64.add - local.set $24 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $24 - i64.const 32 - i64.shr_u - local.set $24 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $24 - i64.add - local.set $24 - local.get $7 - local.set $10 - local.get $15 - local.set $13 - local.get $10 - local.get $13 - i32.add - i32.const 64 - i32.add - local.set $10 - global.get $~lib/util/number/_frc_plus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $23 - local.get $11 - i64.const 4294967295 - i64.and - local.set $22 - local.get $17 - i64.const 32 - i64.shr_u - local.set $21 - local.get $11 - i64.const 32 - i64.shr_u - local.set $20 - local.get $23 - local.get $22 - i64.mul - local.set $19 - local.get $21 - local.get $22 - i64.mul - local.get $19 - i64.const 32 - i64.shr_u - i64.add - local.set $18 - local.get $23 - local.get $20 - i64.mul - local.get $18 - i64.const 4294967295 - i64.and - i64.add - local.set $25 - local.get $25 - i64.const 2147483647 - i64.add - local.set $25 - local.get $18 - i64.const 32 - i64.shr_u - local.set $18 - local.get $25 - i64.const 32 - i64.shr_u - local.set $25 - local.get $21 - local.get $20 - i64.mul - local.get $18 - i64.add - local.get $25 - i64.add - i64.const 1 - i64.sub - local.set $25 - global.get $~lib/util/number/_exp - local.set $26 - local.get $15 - local.set $13 - local.get $26 - local.get $13 - i32.add - i32.const 64 - i32.add - local.set $26 - global.get $~lib/util/number/_frc_minus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $27 - local.get $27 - i64.const 2147483647 - i64.add - local.set $27 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $27 - i64.const 32 - i64.shr_u - local.set $27 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $27 - i64.add - i64.const 1 - i64.add - local.set $27 - local.get $25 - local.get $27 - i64.sub - local.set $23 - local.get $4 - local.get $24 - local.get $10 - local.get $25 - local.get $26 - local.get $23 - local.get $3 - call $~lib/util/number/genDigits - local.set $28 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $28 - local.get $2 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $28 - local.get $28 - local.get $2 - i32.add - ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - f64.const 0 - f64.eq - if - i32.const 7680 - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $0 - local.get $0 - f64.ne - if - i32.const 7712 - return - end - i32.const 7744 - i32.const 7792 - local.get $0 - f64.const 0 - f64.lt - select - call $~lib/rt/pure/__retain - return - end - i32.const 28 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $1 - local.get $1 - local.get $0 - call $~lib/util/number/dtoa_core - local.set $2 - local.get $2 - i32.const 28 - i32.eq - if - local.get $1 - call $~lib/rt/pure/__retain - return - end - local.get $1 - i32.const 0 - local.get $2 - call $~lib/string/String#substring - local.set $3 - local.get $1 - call $~lib/rt/tlsf/__free - local.get $3 - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - local.get $1 - f64.const 0 - f64.eq - if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - return - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.eq - i32.eqz - if - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - return - else - local.get $1 - f64.const 0 - f64.lt - local.set $2 - local.get $2 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - i32.const 8 - local.get $2 - i32.add - return - end - unreachable - end - local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core - ) - (func $~lib/util/string/joinFloatArray (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 f32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5824 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa - local.tee $4 - local.set $5 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $6 - i32.const 28 - local.get $6 - i32.add - local.get $3 - i32.mul - i32.const 28 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $8 - i32.const 0 - local.set $9 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $10 - f64.promote_f32 - call $~lib/util/number/dtoa_buffered - i32.add - local.set $9 - local.get $6 - if - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $6 - i32.add - local.set $9 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $10 - f64.promote_f32 - call $~lib/util/number/dtoa_buffered - i32.add - local.set $9 - local.get $7 - local.get $9 - i32.gt_s - if - local.get $8 - i32.const 0 - local.get $9 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $8 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Float32Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Float32Array#get:length - local.get $1 - call $~lib/util/string/joinFloatArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Float32Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7600 - call $~lib/typedarray/Float32Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 4 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - i32.const 1 - drop - local.get $1 - i32.const 7600 - call $~lib/typedarray/Float32Array#join - local.tee $2 - i32.const 8736 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 626 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Float32Array#toString - local.tee $3 - i32.const 8736 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 627 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/joinFloatArray (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 f64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5824 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - f64.load - call $~lib/util/number/dtoa - local.tee $4 - local.set $5 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $6 - i32.const 28 - local.get $6 - i32.add - local.get $3 - i32.mul - i32.const 28 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $8 - i32.const 0 - local.set $9 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $10 - call $~lib/util/number/dtoa_buffered - i32.add - local.set $9 - local.get $6 - if - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $6 - i32.add - local.set $9 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $10 - call $~lib/util/number/dtoa_buffered - i32.add - local.set $9 - local.get $7 - local.get $9 - i32.gt_s - if - local.get $8 - i32.const 0 - local.get $9 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $8 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Float64Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Float64Array#get:length - local.get $1 - call $~lib/util/string/joinFloatArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Float64Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7600 - call $~lib/typedarray/Float64Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - i32.const 1 - drop - local.get $1 - i32.const 7600 - call $~lib/typedarray/Float64Array#join - local.tee $2 - i32.const 8736 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 626 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Float64Array#toString - local.tee $3 - i32.const 8736 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 627 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.const 1073741808 - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 49 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $2 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - ) - (func $~lib/typedarray/Uint8Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 0 - i32.and - i32.or - if - i32.const 368 - i32.const 432 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 0 - i32.and - if - i32.const 32 - i32.const 432 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 432 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 0 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 432 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 - local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add - i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint8Array.wrap - ) - (func $~lib/arraybuffer/ArrayBuffer#slice (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.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $1 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - else - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - end - local.set $2 - local.get $2 - local.get $1 - i32.sub - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.get $0 - local.get $1 - i32.add - local.get $6 - call $~lib/memory/memory.copy - local.get $7 - call $~lib/rt/pure/__retain - ) - (func $~lib/typedarray/Int8Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 0 - i32.and - i32.or - if - i32.const 368 - i32.const 432 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 0 - i32.and - if - i32.const 32 - i32.const 432 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 432 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 0 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 432 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 - local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add - i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Int8Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int8Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - i32.const 1 - drop - local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int8Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Int8Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Int8Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - drop - i32.const 1 - drop - local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Uint8Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Uint8Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 0 - i32.and - i32.or - if - i32.const 368 - i32.const 432 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 0 - i32.and - if - i32.const 32 - i32.const 432 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 432 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 0 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 432 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 - local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add - i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint8ClampedArray.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint8ClampedArray.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 1 - i32.and - i32.or - if - i32.const 368 - i32.const 432 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 1 - i32.and - if - i32.const 32 - i32.const 432 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 432 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 1 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 432 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - i32.const 12 - i32.const 6 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 - local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add - i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Int16Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int16Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Int16Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Int16Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 1 - i32.and - i32.or - if - i32.const 368 - i32.const 432 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 1 - i32.and - if - i32.const 32 - i32.const 432 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 432 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 1 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 432 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - i32.const 12 - i32.const 7 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 - local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add - i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint16Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint16Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint16Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Uint16Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Uint16Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 3 - i32.and - i32.or - if - i32.const 368 - i32.const 432 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 3 - i32.and - if - i32.const 32 - i32.const 432 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 432 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 2 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 432 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - i32.const 12 - i32.const 8 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 - local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add - i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Int32Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int32Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,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) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Int32Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Int32Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 3 - i32.and - i32.or - if - i32.const 368 - i32.const 432 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 3 - i32.and - if - i32.const 32 - i32.const 432 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 432 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 2 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 432 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 - local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add - i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint32Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint32Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint32Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Uint32Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Uint32Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 7 - i32.and - i32.or - if - i32.const 368 - i32.const 432 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 7 - i32.and - if - i32.const 32 - i32.const 432 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 432 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 3 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 432 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - i32.const 12 - i32.const 10 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 - local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add - i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Int64Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - 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 - i32.const 1 - drop - local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int64Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Int64Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Int64Array#__get - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 7 - i32.and - i32.or - if - i32.const 368 - i32.const 432 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 7 - i32.and - if - i32.const 32 - i32.const 432 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 432 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 3 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 432 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - i32.const 12 - i32.const 11 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 - local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add - i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint64Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint64Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - 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 - i32.const 0 - drop - i32.const 1 - drop - local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint64Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Uint64Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Uint64Array#__get - i64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 3 - i32.and - i32.or - if - i32.const 368 - i32.const 432 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 3 - i32.and - if - i32.const 32 - i32.const 432 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 432 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 2 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 432 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - i32.const 12 - i32.const 12 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 - local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add - i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Float32Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float32Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - 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 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float32Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Float32Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Float32Array#__get - f32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 7 - i32.and - i32.or - if - i32.const 368 - i32.const 432 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 7 - i32.and - if - i32.const 32 - i32.const 432 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 432 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 3 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 432 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - i32.const 12 - i32.const 13 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 - local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add - i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Float64Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - 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 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float64Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Float64Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Float64Array#__get - f64.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_s - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/typedarray/Int8Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i32.ne - if - i32.const 9200 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - local.get $6 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 0 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - i32.trunc_f32_s - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 0 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_s - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - (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) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Int8Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9168 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9248 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9280 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9312 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9344 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Uint8Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_u - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_u - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/typedarray/Uint8Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/typedarray/Uint8Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i32.ne - if - i32.const 9408 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_u - local.get $6 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 0 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 0 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_u - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - (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) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Uint8Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9376 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Uint8Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9456 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9488 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Uint8Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9520 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Uint8Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9552 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 1 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 1 - drop - i32.const 0 - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - i32.const 1 - i32.eqz - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.const 255 - local.get $11 - i32.sub - i32.const 31 - i32.shr_s - local.get $11 - i32.or - i32.and - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - i32.load8_u - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i32.ne - if - i32.const 9616 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_u - local.get $6 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 0 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 1 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 1 - drop - i32.const 1 - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $11 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $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 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 1 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 1 - drop - i32.const 0 - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - i32.const 1 - i32.eqz - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.wrap_i64 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i64.extend_i32_s - i32.const 255 - local.get $11 - i32.wrap_i64 - i32.sub - i32.const 31 - i32.shr_s - i64.extend_i32_s - local.get $11 - i64.or - i64.and - i64.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 0 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 1 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 1 - drop - i32.const 1 - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - f64.const 0 - f64.const 255 - local.get $11 - f64.min - f64.max - i32.trunc_f64_u - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 1 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 1 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 1 - drop - i32.const 0 - drop - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $11 - i32.const 1 - i32.eqz - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.const 255 - local.get $11 - i32.sub - i32.const 31 - i32.shr_s - local.get $11 - i32.or - i32.and - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 1 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 1 - drop - i32.const 0 - drop - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $11 - i32.const 1 - i32.eqz - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.const 255 - local.get $11 - i32.sub - i32.const 31 - i32.shr_s - local.get $11 - i32.or - i32.and - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - (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) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9584 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9680 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9712 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9744 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> - i32.const 1 - drop - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9776 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Int16Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/typedarray/Int16Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i32.ne - if - i32.const 9856 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - local.get $6 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - i32.trunc_f32_s - else - i32.const 0 - end - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_s - else - i32.const 0 - end - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> - (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) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9808 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9904 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9952 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 10000 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 10048 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Uint16Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/typedarray/Uint16Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/typedarray/Uint16Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i32.ne - if - i32.const 10144 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_u - local.get $6 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - i32.trunc_f32_u - else - i32.const 0 - end - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_u - else - i32.const 0 - end - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> - (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) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Uint16Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Uint16Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10096 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Uint16Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10192 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10240 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Uint16Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10288 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint16Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Uint16Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10336 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/typedarray/Int32Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i32.ne - if - i32.const 10448 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - local.get $6 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 2 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - i32.trunc_f32_s - else - i32.const 0 - end - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store32 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 2 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_s - else - i32.const 0 - end - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - (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) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10384 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10496 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10560 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10624 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10688 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Uint32Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/typedarray/Uint32Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/typedarray/Uint32Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i32.ne - if - i32.const 10816 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_u - local.get $6 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 2 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - i32.trunc_f32_u - else - i32.const 0 - end - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store32 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 2 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_u - else - i32.const 0 - end - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - (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) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Uint32Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Uint32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10752 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Uint32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10864 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10928 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Uint32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10992 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint32Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Uint32Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 11056 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_s - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Int64Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/typedarray/Int64Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i64.ne - if - i32.const 11216 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i64_s - local.get $6 - f64.convert_i64_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 3 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i64) - local.get $11 - i64.trunc_f32_s - else - i64.const 0 - end - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 3 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i64) - local.get $11 - i64.trunc_f64_s - else - i64.const 0 - end - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i64.load8_u - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i64.load16_s - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i64.load8_s - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - (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) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11120 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11264 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11360 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11456 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11552 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_s - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Uint64Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/typedarray/Uint64Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/typedarray/Uint64Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i64.ne - if - i32.const 11744 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i64_u - local.get $6 - f64.convert_i64_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 3 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i64) - local.get $11 - i64.trunc_f32_u - else - i64.const 0 - end - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 3 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i64) - local.get $11 - i64.trunc_f64_u - else - i64.const 0 - end - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i64.load8_u - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i64.load16_s - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i64.load8_s - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - (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) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Uint64Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Uint64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 11648 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Uint64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 11792 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 11888 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Uint64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 11984 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint64Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Uint64Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 12080 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - f32.convert_i32_s - f32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 f32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/typedarray/Float32Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/typedarray/Float32Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - f32.ne - if - i32.const 12240 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.promote_f32 - local.get $6 - f64.promote_f32 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - i32.eq - if (result i32) - i32.const 2 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - f32.convert_i64_s - f32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - f32.convert_i32_u - f32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - f32.convert_i32_s - f32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float32Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - f32.convert_i32_s - f32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - (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) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Float32Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Float32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 12176 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Float32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 12288 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Float32Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 12352 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - i32.const 0 - drop - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Float32Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Float32Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Float32Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 12416 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - f64.convert_i32_s - f64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/typedarray/Float64Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/typedarray/Float64Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - f64.ne - if - i32.const 12576 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - local.get $6 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 0 - i32.eq - if (result i32) - i32.const 3 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - f64.promote_f32 - f64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - f64.convert_i64_s - f64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - f64.convert_i32_u - f64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - f64.convert_i32_s - f64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float64Array#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - f64.convert_i32_s - f64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - (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) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Float64Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Float64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 62 - i32.const 12480 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Float64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 62 - i32.const 12624 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 62 - i32.const 12720 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - i32.const 0 - drop - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Float64Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Float64Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 3 - i32.const 62 - i32.const 12816 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) (param $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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Float32Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 0 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 1 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Float32Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 1 - drop - i32.const 1 - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $11 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int32Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 1 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int32Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 1 - drop - i32.const 0 - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - i32.const 1 - i32.eqz - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.const 255 - local.get $11 - i32.sub - i32.const 31 - i32.shr_s - local.get $11 - i32.or - i32.and - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) (param $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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 368 - i32.const 432 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint32Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s - if - i32.const 368 - i32.const 432 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 0 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 1 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Uint32Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 1 - drop - i32.const 0 - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - i32.const 0 - i32.eqz - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.const 255 - local.tee $12 - local.get $11 - local.tee $13 - local.get $12 - local.get $13 - i32.lt_u - select - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $start:std/typedarray - (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) - (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) - global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT - i32.const 1 - i32.eq - drop - global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT - i32.const 1 - i32.eq - drop - global.get $~lib/typedarray/Uint8ClampedArray.BYTES_PER_ELEMENT - i32.const 1 - i32.eq - drop - global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT - i32.const 2 - i32.eq - drop - global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT - i32.const 2 - i32.eq - drop - global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT - i32.const 4 - i32.eq - drop - global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT - i32.const 4 - i32.eq - drop - global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT - i32.const 8 - i32.eq - drop - global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT - i32.const 8 - i32.eq - drop - global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT - i32.const 4 - i32.eq - drop - global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT - i32.const 8 - i32.eq - drop - i32.const 0 - call $std/typedarray/testInstantiate - i32.const 5 - call $std/typedarray/testInstantiate - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 99 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 100 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#subarray - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - local.set $0 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 106 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 8 - call $~lib/typedarray/Float64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 7 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 3 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 5 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 6 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 7 - f64.const 8 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Float64Array#subarray - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - local.set $0 - local.get $0 - call $~lib/typedarray/Float64Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 2 - i32.const 8 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 4 - i32.const 8 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float64Array#sort@varargs - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.eq - if (result i32) - local.get $0 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq - else - i32.const 0 - end - if (result i32) - local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.eq - else - i32.const 0 - end - if (result i32) - local.get $0 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.const -32 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 256 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 136 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 137 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 528 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 149 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 608 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 152 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 640 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 155 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 672 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 158 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 704 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 161 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.set $1 - local.get $1 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 0 - i32.const 15 - i32.const 736 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 768 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 169 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.set $9 - local.get $9 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 800 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 181 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 848 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 184 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 896 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 187 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 944 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 190 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 992 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 193 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.set $8 - local.get $8 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $8 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 197 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 198 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.load offset=8 - i32.const 3 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 199 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - i32.const 2 - i32.const 16 - i32.const 1040 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 200 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1072 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 201 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - local.set $7 - local.get $7 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 5 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 1 - i32.const 6 - call $~lib/typedarray/Int8Array#subarray - local.set $0 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 222 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Int8Array#get:length - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 223 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 224 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 225 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 5 - call $~lib/typedarray/Int8Array#subarray - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 228 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $~lib/typedarray/Int8Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 229 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 230 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.load offset=8 - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 231 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.set $3 - local.get $3 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 234 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 235 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 236 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 237 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.set $3 - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $8 - local.get $3 - i32.const 0 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#copyWithin - local.tee $0 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1120 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 248 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - local.set $3 - local.get $3 - i32.const 1 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#copyWithin - local.tee $2 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1168 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 250 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $9 - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $3 - local.get $3 - i32.const 1 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#copyWithin - local.tee $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1216 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 252 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - local.set $3 - local.get $3 - i32.const 2 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#copyWithin - local.tee $1 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1264 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $10 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 254 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $7 - local.get $3 - call $~lib/rt/pure/__release - local.get $7 - local.set $3 - local.get $3 - i32.const 0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $7 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1312 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $12 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 256 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $11 - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $3 - local.get $3 - i32.const 1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $11 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1360 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $14 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 258 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $13 - local.get $3 - call $~lib/rt/pure/__release - local.get $13 - local.set $3 - local.get $3 - i32.const 1 - i32.const 2 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $13 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1408 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $16 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 260 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $15 - local.get $3 - call $~lib/rt/pure/__release - local.get $15 - local.set $3 - local.get $3 - i32.const 0 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#copyWithin - local.tee $15 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1456 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $18 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 262 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $17 - local.get $3 - call $~lib/rt/pure/__release - local.get $17 - local.set $3 - local.get $3 - i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $17 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1504 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $20 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 264 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $19 - local.get $3 - call $~lib/rt/pure/__release - local.get $19 - local.set $3 - local.get $3 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $19 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1552 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $22 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 266 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $21 - local.get $3 - call $~lib/rt/pure/__release - local.get $21 - local.set $3 - local.get $3 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $21 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1600 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $24 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 268 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $23 - local.get $3 - call $~lib/rt/pure/__release - local.get $23 - local.set $3 - local.get $3 - i32.const -4 - i32.const -3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#copyWithin - local.tee $23 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1648 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $26 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 270 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.set $26 - local.get $26 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $26 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $26 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $26 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $26 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $26 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.set $23 - local.get $23 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 282 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $23 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 283 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $23 - i32.load offset=8 - i32.const 12 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 284 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $26 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int32Array#slice - local.set $24 - local.get $24 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 287 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $24 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 288 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $24 - call $~lib/typedarray/Int32Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 289 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $24 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 290 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $24 - i32.load offset=8 - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 291 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $23 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#slice - local.set $21 - local.get $21 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 294 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $21 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 295 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $21 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 296 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $21 - i32.load offset=8 - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 297 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $26 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $22 - local.get $22 - local.get $26 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 300 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $22 - call $~lib/typedarray/Int32Array#get:length - local.get $26 - call $~lib/typedarray/Int32Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 301 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $22 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $26 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 302 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $22 - i32.load offset=8 - local.get $26 - i32.load offset=8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 303 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $26 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> - i32.const 0 - i32.const 1 - call $~lib/typedarray/Float64Array#constructor - local.set $21 - local.get $21 - i32.const 0 - f64.const nan:0x8000000000000 - call $~lib/typedarray/Float64Array#__set - local.get $21 - f64.const nan:0x8000000000000 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $21 - f64.const nan:0x8000000000000 - i32.const 0 - call $~lib/typedarray/Float64Array#includes - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - call $~lib/typedarray/Float32Array#constructor - local.set $22 - local.get $22 - i32.const 0 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $22 - f32.const nan:0x400000 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $22 - f32.const nan:0x400000 - i32.const 0 - call $~lib/typedarray/Float32Array#includes - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $21 - local.get $21 - i32.const 0 - i32.const 2 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.set $22 - local.get $22 - call $~lib/typedarray/Uint8Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 691 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $25 - local.get $21 - call $~lib/rt/pure/__release - local.get $25 - local.set $21 - local.get $21 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.set $3 - local.get $22 - call $~lib/rt/pure/__release - local.get $3 - local.set $22 - local.get $22 - call $~lib/typedarray/Uint8Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 304 - i32.const 695 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - i32.const 0 - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $22 - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.set $21 - local.get $21 - i32.const 0 - f32.const 400 - call $~lib/typedarray/Float32Array#__set - local.get $21 - i32.const 1 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $21 - i32.const 2 - f32.const inf - call $~lib/typedarray/Float32Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Int64Array#constructor - local.set $3 - local.get $3 - i32.const 0 - i64.const -10 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 100 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 10 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 3 - i64.const 300 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#constructor - local.set $25 - local.get $25 - i32.const 0 - i32.const 300 - call $~lib/typedarray/Int32Array#__set - local.get $25 - i32.const 1 - i32.const -1 - call $~lib/typedarray/Int32Array#__set - local.get $22 - local.get $21 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> - local.get $22 - local.get $3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - local.get $22 - local.get $25 - i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> - local.get $22 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 12912 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $23 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint32Array#constructor - local.set $24 - local.get $24 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $24 - i32.const 1 - i32.const 300 - call $~lib/typedarray/Uint32Array#__set - local.get $24 - i32.const 2 - i32.const 100 - call $~lib/typedarray/Uint32Array#__set - local.get $24 - i32.const 3 - i32.const -1 - call $~lib/typedarray/Uint32Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Int16Array#constructor - local.set $26 - local.get $26 - i32.const 0 - i32.const -10 - call $~lib/typedarray/Int16Array#__set - local.get $26 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#__set - local.get $26 - i32.const 2 - i32.const 10 - call $~lib/typedarray/Int16Array#__set - local.get $26 - i32.const 3 - i32.const 300 - call $~lib/typedarray/Int16Array#__set - local.get $22 - local.get $24 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> - local.get $22 - local.get $26 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - local.get $22 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 12944 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $20 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $22 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:std/typedarray - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 256 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#__visit_impl (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array#__visit_impl (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$70 - block $switch$1$case$69 - block $switch$1$case$68 - block $switch$1$case$67 - block $switch$1$case$66 - block $switch$1$case$65 - block $switch$1$case$64 - block $switch$1$case$63 - block $switch$1$case$62 - block $switch$1$case$61 - block $switch$1$case$60 - block $switch$1$case$59 - block $switch$1$case$58 - block $switch$1$case$57 - block $switch$1$case$56 - block $switch$1$case$55 - block $switch$1$case$54 - block $switch$1$case$53 - block $switch$1$case$52 - block $switch$1$case$51 - block $switch$1$case$50 - block $switch$1$case$49 - block $switch$1$case$48 - block $switch$1$case$47 - block $switch$1$case$46 - block $switch$1$case$45 - block $switch$1$case$44 - block $switch$1$case$43 - block $switch$1$case$42 - block $switch$1$case$41 - block $switch$1$case$40 - block $switch$1$case$39 - block $switch$1$case$38 - block $switch$1$case$37 - block $switch$1$case$36 - block $switch$1$case$35 - block $switch$1$case$34 - block $switch$1$case$33 - block $switch$1$case$32 - block $switch$1$case$31 - block $switch$1$case$30 - block $switch$1$case$29 - block $switch$1$case$28 - block $switch$1$case$27 - block $switch$1$case$26 - block $switch$1$case$25 - block $switch$1$case$24 - block $switch$1$case$23 - block $switch$1$case$22 - block $switch$1$case$21 - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$18 - block $switch$1$case$17 - block $switch$1$case$16 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$case$28 $switch$1$case$29 $switch$1$case$30 $switch$1$case$31 $switch$1$case$32 $switch$1$case$33 $switch$1$case$34 $switch$1$case$35 $switch$1$case$36 $switch$1$case$37 $switch$1$case$38 $switch$1$case$39 $switch$1$case$40 $switch$1$case$41 $switch$1$case$42 $switch$1$case$43 $switch$1$case$44 $switch$1$case$45 $switch$1$case$46 $switch$1$case$47 $switch$1$case$48 $switch$1$case$49 $switch$1$case$50 $switch$1$case$51 $switch$1$case$52 $switch$1$case$53 $switch$1$case$54 $switch$1$case$55 $switch$1$case$56 $switch$1$case$57 $switch$1$case$58 $switch$1$case$59 $switch$1$case$60 $switch$1$case$61 $switch$1$case$62 $switch$1$case$63 $switch$1$case$64 $switch$1$case$65 $switch$1$case$66 $switch$1$case$67 $switch$1$case$68 $switch$1$case$69 $switch$1$case$70 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - return - end - unreachable - ) -) diff --git a/tests/compiler/std/uri.debug.wat b/tests/compiler/std/uri.debug.wat new file mode 100644 index 0000000000..3351c851af --- /dev/null +++ b/tests/compiler/std/uri.debug.wat @@ -0,0 +1,4617 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/util/uri/URL_UNSAFE i32 (i32.const 44)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/util/uri/URI_UNSAFE i32 (i32.const 2364)) + (global $~lib/util/uri/URI_RESERVED i32 (i32.const 2572)) + (global $~lib/rt/__rtti_base i32 (i32.const 3312)) + (global $~lib/memory/__data_end i32 (i32.const 3332)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36100)) + (global $~lib/memory/__heap_base i32 (i32.const 36100)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\00\01\01\01\01\01\00\00\00\00\01\01\00\00\01\00\00\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\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\00\00\00\01\01\01\00") + (data $2 (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $3 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 272) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 332) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 396) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00U\00R\00I\00 \00m\00a\00l\00f\00o\00r\00m\00e\00d\00\00\00") + (data $11 (i32.const 588) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00u\00r\00i\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 652) "0123456789ABCDEF") + (data $13 (i32.const 668) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00s\00t\00d\00/\00u\00r\00i\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\001\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00a\00b\00_\00\00\00\00\00\00\00") + (data $17 (i32.const 812) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00A\00B\00C\00D\00X\00Y\00Z\00a\00f\00g\00k\00l\00m\00n\00w\00y\00z\000\001\002\003\004\005\006\007\008\009\00-\00_\00.\00!\00~\00*\00\'\00(\00)\00\00\00\00\00") + (data $18 (i32.const 908) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 940) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\000\000\00\00\00\00\00\00\00") + (data $20 (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 1004) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\002\00B\00\00\00\00\00\00\00") + (data $22 (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00#\000\00=\00\00\00\00\00\00\00") + (data $23 (i32.const 1068) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00%\002\003\000\00%\003\00D\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 1116) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00 \001\002\003\00 \00\00\00") + (data $25 (i32.const 1148) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00%\002\000\001\002\003\00%\002\000\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 1196) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00?\00+\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 1228) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00%\003\00F\00%\002\00B\00") + (data $28 (i32.const 1260) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00-\00?\001\00.\00-\00\00\00") + (data $29 (i32.const 1292) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00-\00%\003\00F\001\00.\00-\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 1340) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00<\d8\ed\dd<\d8\fa\dd<\d8N\df") + (data $31 (i32.const 1372) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\00%\00F\000\00%\009\00F\00%\008\007\00%\00A\00D\00%\00F\000\00%\009\00F\00%\008\007\00%\00B\00A\00%\00F\000\00%\009\00F\00%\008\00D\00%\008\00E\00\00\00\00\00") + (data $32 (i32.const 1468) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00H\c5U\b1X\d58\c1\94\c6\00\00") + (data $33 (i32.const 1500) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00Z\00\00\00%\00E\00C\00%\009\005\00%\008\008\00%\00E\00B\00%\008\005\00%\009\005\00%\00E\00D\00%\009\005\00%\009\008\00%\00E\00C\00%\008\004\00%\00B\008\00%\00E\00C\00%\009\00A\00%\009\004\00\00\00") + (data $34 (i32.const 1612) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00~\00\7f\00\80\00\00\00\00\00\00\00") + (data $35 (i32.const 1644) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00%\007\00F\00%\00C\002\00%\008\000\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 1692) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00\00\d8\ff\df\00\00\00\00\00\00\00\00") + (data $37 (i32.const 1724) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00%\00F\000\00%\009\000\00%\008\00F\00%\00B\00F\00\00\00\00\00") + (data $38 (i32.const 1772) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00{\da\01\dc-\00P\da\02\dc\00\00") + (data $39 (i32.const 1804) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\002\00\00\00%\00F\002\00%\00A\00E\00%\00B\000\00%\008\001\00-\00%\00F\002\00%\00A\004\00%\008\000\00%\008\002\00\00\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 1884) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00\n\00\t\00\0b\00\0c\00\r\00\00\00") + (data $41 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00%\000\00A\00%\000\009\00%\000\00B\00%\000\00C\00%\000\00D\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 1980) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00;\00/\00?\00:\00@\00&\00=\00+\00$\00,\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 2028) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00<\00\00\00%\003\00B\00%\002\00F\00%\003\00F\00%\003\00A\00%\004\000\00%\002\006\00%\003\00D\00%\002\00B\00%\002\004\00%\002\00C\00") + (data $44 (i32.const 2108) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\\\00\00\00h\00t\00t\00p\00:\00/\00/\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00/\00w\00i\00k\00i\00/\00U\00T\00F\00-\008\00#\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n\00") + (data $45 (i32.const 2220) "\8c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00t\00\00\00h\00t\00t\00p\00%\003\00A\00%\002\00F\00%\002\00F\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00%\002\00F\00w\00i\00k\00i\00%\002\00F\00U\00T\00F\00-\008\00%\002\003\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n\00\00\00\00\00\00\00\00\00") + (data $46 (i32.const 2364) "\00\01\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\01\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\00\00\00\00\00\01\01\01\01\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\00\00\00\01\01\01\00") + (data $47 (i32.const 2460) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00;\00,\00/\00?\00:\00@\00&\00=\00+\00$\00#\00\00\00\00\00\00\00") + (data $48 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $49 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\002\000\00\00\00\00\00\00\00") + (data $50 (i32.const 2572) "\01\01\00\01\00\00\00\00\01\01\00\00\01\00\00\00\00\00\00\00\00\00\00\01\01\00\01\00\01\01") + (data $51 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\002\006\00\00\00\00\00\00\00") + (data $52 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") + (data $53 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00%\005\00E\00\00\00\00\00\00\00") + (data $54 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00^\00\00\00\00\00\00\00\00\00\00\00") + (data $55 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\00\d8\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 2764) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00<\00\00\00%\003\00b\00%\002\00f\00%\003\00f\00%\003\00a\00%\004\000\00%\003\00d\00%\002\00b\00%\002\004\00%\002\00c\00%\002\003\00") + (data $57 (i32.const 2844) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00;\00/\00?\00:\00@\00=\00+\00$\00,\00#\00\00\00\00\00\00\00\00\00") + (data $58 (i32.const 2892) "L\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00<\00\00\00%\003\00B\00%\002\00F\00%\003\00F\00%\003\00A\00%\004\000\00%\003\00D\00%\002\00B\00%\002\004\00%\002\00C\00%\002\003\00") + (data $59 (i32.const 2972) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00h\00\00\00h\00t\00t\00p\00:\00%\002\00F\00%\002\00F\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00/\00w\00i\00k\00i\00/\00U\00T\00F\00-\008\00%\002\003\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n\00\00\00\00\00") + (data $60 (i32.const 3100) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00%\00D\00F\00%\008\000\00") + (data $61 (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\c0\07\00\00\00\00\00\00\00\00\00\00") + (data $62 (i32.const 3164) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00%\00C\002\00%\00B\00F\00") + (data $63 (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00\bf\00\00\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 3228) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00\f7\00\b8\00W\00\ef\00\0f\00\f4\00V\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 3276) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00\f4\00\b8\00\ef\00\00\00\00\00\00\00") + (data $66 (i32.const 3312) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 352 + i32.const 416 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 224 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 224 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 160 + i32.const 496 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 160 + i32.const 224 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/util/uri/storeHex (param $dst i32) (param $offset i32) (param $ch i32) + local.get $dst + local.get $offset + i32.add + i32.const 37 + i32.store16 + local.get $dst + local.get $offset + i32.add + i32.const 652 + local.get $ch + i32.const 4 + i32.shr_u + i32.const 15 + i32.and + i32.add + i32.load8_u + i32.const 652 + local.get $ch + i32.const 15 + i32.and + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + ) + (func $~lib/util/uri/encode (param $src i32) (param $len i32) (param $table i32) (result i32) + (local $i i32) + (local $offset i32) + (local $outSize i32) + (local $dst i32) + (local $org i32) + (local $c i32) + (local $c1 i32) + (local $size i32) + (local $estSize i32) + local.get $len + i32.eqz + if + local.get $src + return + end + i32.const 0 + local.set $i + i32.const 0 + local.set $offset + local.get $len + i32.const 1 + i32.shl + local.set $outSize + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.set $dst + block $while-break|0 + loop $while-continue|0 + local.get $i + local.get $len + i32.lt_u + if + local.get $i + local.set $org + block $do-break|1 + loop $do-loop|1 + local.get $src + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $c + local.get $c + i32.const 33 + i32.sub + i32.const 94 + i32.lt_u + if + local.get $table + local.get $c + i32.const 33 + i32.sub + i32.add + i32.load8_u + if + br $do-break|1 + end + else + br $do-break|1 + end + local.get $i + i32.const 1 + i32.add + local.tee $i + local.get $len + i32.lt_u + br_if $do-loop|1 + end + end + local.get $i + local.get $org + i32.gt_u + if + local.get $i + local.get $org + i32.sub + i32.const 1 + i32.shl + local.set $size + local.get $offset + local.get $size + i32.add + local.get $outSize + i32.gt_u + if + local.get $offset + local.get $size + i32.add + local.set $outSize + local.get $dst + local.get $outSize + call $~lib/rt/itcms/__renew + local.set $dst + end + local.get $dst + local.get $offset + i32.add + local.get $src + local.get $org + i32.const 1 + i32.shl + i32.add + local.get $size + memory.copy + local.get $offset + local.get $size + i32.add + local.set $offset + local.get $i + local.get $len + i32.ge_u + if + br $while-break|0 + end + end + local.get $c + i32.const 55296 + i32.ge_u + if + local.get $c + i32.const 56320 + i32.ge_u + if (result i32) + local.get $c + i32.const 57343 + i32.le_u + else + i32.const 0 + end + if + i32.const 560 + i32.const 608 + i32.const 81 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $c + i32.const 56319 + i32.le_u + if + local.get $i + local.get $len + i32.ge_u + if + i32.const 560 + i32.const 608 + i32.const 85 + i32.const 11 + call $~lib/builtins/abort + unreachable + end + local.get $src + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $c1 + local.get $c1 + i32.const 56320 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $c1 + i32.const 57343 + i32.gt_u + end + if + i32.const 560 + i32.const 608 + i32.const 89 + i32.const 11 + call $~lib/builtins/abort + unreachable + end + local.get $c + i32.const 1023 + i32.and + i32.const 10 + i32.shl + local.get $c1 + i32.const 1023 + i32.and + i32.or + i32.const 65536 + i32.add + local.set $c + end + end + local.get $offset + local.get $c + i32.const 128 + i32.lt_u + if (result i32) + i32.const 1 + i32.const 6 + i32.mul + else + i32.const 4 + i32.const 6 + i32.mul + end + i32.add + local.set $estSize + local.get $estSize + local.get $outSize + i32.gt_u + if + local.get $len + i32.const 1 + i32.gt_u + if (result i32) + local.get $estSize + i32.const 1 + i32.shl + else + local.get $estSize + end + local.set $outSize + local.get $dst + local.get $outSize + call $~lib/rt/itcms/__renew + local.set $dst + end + local.get $c + i32.const 128 + i32.lt_u + if + local.get $dst + local.get $offset + local.get $c + call $~lib/util/uri/storeHex + local.get $offset + i32.const 6 + i32.add + local.set $offset + else + local.get $c + i32.const 2048 + i32.lt_u + if + local.get $dst + local.get $offset + local.get $c + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + call $~lib/util/uri/storeHex + local.get $offset + i32.const 6 + i32.add + local.set $offset + else + local.get $c + i32.const 65536 + i32.lt_u + if + local.get $dst + local.get $offset + local.get $c + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + call $~lib/util/uri/storeHex + local.get $offset + i32.const 6 + i32.add + local.set $offset + else + local.get $dst + local.get $offset + local.get $c + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + call $~lib/util/uri/storeHex + local.get $offset + i32.const 6 + i32.add + local.set $offset + local.get $dst + local.get $offset + local.get $c + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + call $~lib/util/uri/storeHex + local.get $offset + i32.const 6 + i32.add + local.set $offset + end + local.get $dst + local.get $offset + local.get $c + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + call $~lib/util/uri/storeHex + local.get $offset + i32.const 6 + i32.add + local.set $offset + end + local.get $dst + local.get $offset + local.get $c + i32.const 63 + i32.and + i32.const 128 + i32.or + call $~lib/util/uri/storeHex + local.get $offset + i32.const 6 + i32.add + local.set $offset + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $while-continue|0 + end + end + end + local.get $outSize + local.get $offset + i32.gt_u + if + local.get $dst + local.get $offset + call $~lib/rt/itcms/__renew + local.set $dst + end + local.get $dst + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/util/uri/loadHex (param $src i32) (param $offset i32) (result i32) + (local $c0 i32) + (local $c1 i32) + (local $ch i32) + (local $ch|5 i32) + (local $ch|6 i32) + (local $ch|7 i32) + local.get $src + local.get $offset + i32.add + i32.load16_u + local.set $c0 + local.get $src + local.get $offset + i32.add + i32.load16_u offset=2 + local.set $c1 + block $~lib/util/uri/isHex|inlined.0 (result i32) + local.get $c0 + local.set $ch + local.get $ch + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $ch + i32.const 32 + i32.or + i32.const 97 + i32.sub + i32.const 6 + i32.lt_u + end + br $~lib/util/uri/isHex|inlined.0 + end + if (result i32) + block $~lib/util/uri/isHex|inlined.1 (result i32) + local.get $c1 + local.set $ch|5 + local.get $ch|5 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $ch|5 + i32.const 32 + i32.or + i32.const 97 + i32.sub + i32.const 6 + i32.lt_u + end + br $~lib/util/uri/isHex|inlined.1 + end + else + i32.const 0 + end + if (result i32) + block $~lib/util/uri/fromHex|inlined.0 (result i32) + local.get $c0 + local.set $ch|6 + local.get $ch|6 + i32.const 32 + i32.or + i32.const 39 + i32.rem_u + i32.const 9 + i32.sub + br $~lib/util/uri/fromHex|inlined.0 + end + i32.const 4 + i32.shl + block $~lib/util/uri/fromHex|inlined.1 (result i32) + local.get $c1 + local.set $ch|7 + local.get $ch|7 + i32.const 32 + i32.or + i32.const 39 + i32.rem_u + i32.const 9 + i32.sub + br $~lib/util/uri/fromHex|inlined.1 + end + i32.or + else + i32.const -1 + end + return + ) + (func $~lib/util/uri/decode (param $src i32) (param $len i32) (param $component i32) (result i32) + (local $i i32) + (local $offset i32) + (local $ch i32) + (local $dst i32) + (local $org i32) + (local $size i32) + (local $ch|9 i32) + (local $c0 i32) + (local $nb i32) + (local $lo i32) + (local $c1 i32) + (local $lo|14 i32) + (local $hi i32) + local.get $len + i32.eqz + if + local.get $src + return + end + i32.const 0 + local.set $i + i32.const 0 + local.set $offset + i32.const 0 + local.set $ch + local.get $len + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.set $dst + block $while-break|0 + loop $while-continue|0 + local.get $i + local.get $len + i32.lt_u + if + local.get $i + local.set $org + loop $while-continue|1 + local.get $i + local.get $len + i32.lt_u + if (result i32) + local.get $src + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.tee $ch + i32.const 37 + i32.ne + else + i32.const 0 + end + if + local.get $i + i32.const 1 + i32.add + local.set $i + br $while-continue|1 + end + end + local.get $i + local.get $org + i32.gt_u + if + local.get $i + local.get $org + i32.sub + i32.const 1 + i32.shl + local.set $size + local.get $dst + local.get $offset + i32.add + local.get $src + local.get $org + i32.const 1 + i32.shl + i32.add + local.get $size + memory.copy + local.get $offset + local.get $size + i32.add + local.set $offset + local.get $i + local.get $len + i32.ge_u + if + br $while-break|0 + end + end + local.get $i + i32.const 2 + i32.add + local.get $len + i32.ge_u + if (result i32) + i32.const 1 + else + local.get $ch + i32.const 37 + i32.ne + end + if (result i32) + i32.const 1 + else + local.get $src + local.get $i + i32.const 1 + i32.add + i32.const 1 + i32.shl + call $~lib/util/uri/loadHex + local.tee $ch + i32.const -1 + i32.eq + end + if + i32.const 560 + i32.const 608 + i32.const 164 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $i + i32.const 3 + i32.add + local.set $i + local.get $ch + i32.const 128 + i32.lt_u + if + local.get $component + i32.eqz + if (result i32) + block $~lib/util/uri/isReserved|inlined.0 (result i32) + local.get $ch + local.set $ch|9 + local.get $ch|9 + i32.const 35 + i32.sub + i32.const 30 + i32.lt_u + if (result i32) + global.get $~lib/util/uri/URI_RESERVED + local.get $ch|9 + i32.const 35 + i32.sub + i32.add + i32.load8_u + else + i32.const 0 + end + br $~lib/util/uri/isReserved|inlined.0 + end + else + i32.const 0 + end + if + i32.const 37 + local.set $ch + local.get $i + i32.const 2 + i32.sub + local.set $i + end + else + block $~lib/util/uri/utf8LenFromUpperByte|inlined.0 (result i32) + local.get $ch + local.set $c0 + local.get $c0 + i32.const 192 + i32.sub + i32.const 56 + i32.lt_u + if (result i32) + local.get $c0 + i32.const 24 + i32.shl + i32.const -1 + i32.xor + i32.clz + else + i32.const 0 + end + br $~lib/util/uri/utf8LenFromUpperByte|inlined.0 + end + local.set $nb + i32.const 1 + i32.const 17 + local.get $nb + i32.mul + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + i32.shl + local.set $lo + local.get $ch + local.get $nb + if (result i32) + i32.const 128 + local.get $nb + i32.shr_u + i32.const 1 + i32.sub + else + i32.const 0 + end + i32.and + local.set $ch + block $while-break|2 + loop $while-continue|2 + local.get $nb + i32.const 1 + i32.sub + local.tee $nb + i32.const 0 + i32.ne + if + local.get $i + i32.const 2 + i32.add + local.get $len + i32.ge_u + if (result i32) + i32.const 1 + else + local.get $src + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 37 + i32.ne + end + if (result i32) + i32.const 1 + else + local.get $src + local.get $i + i32.const 1 + i32.add + i32.const 1 + i32.shl + call $~lib/util/uri/loadHex + local.tee $c1 + i32.const -1 + i32.eq + end + if + i32.const 560 + i32.const 608 + i32.const 187 + i32.const 11 + call $~lib/builtins/abort + unreachable + end + local.get $i + i32.const 3 + i32.add + local.set $i + local.get $c1 + i32.const 192 + i32.and + i32.const 128 + i32.ne + if + i32.const 0 + local.set $ch + br $while-break|2 + end + local.get $ch + i32.const 6 + i32.shl + local.get $c1 + i32.const 63 + i32.and + i32.or + local.set $ch + br $while-continue|2 + end + end + end + local.get $ch + local.get $lo + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $lo + i32.const -1 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $ch + i32.const 1114111 + i32.gt_u + end + if (result i32) + i32.const 1 + else + local.get $ch + i32.const 55296 + i32.ge_u + if (result i32) + local.get $ch + i32.const 57344 + i32.lt_u + else + i32.const 0 + end + end + if + i32.const 560 + i32.const 608 + i32.const 199 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $ch + i32.const 65536 + i32.ge_u + if + local.get $ch + i32.const 65536 + i32.sub + local.set $ch + local.get $ch + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.set $lo|14 + local.get $ch + i32.const 1023 + i32.and + i32.const 56320 + i32.or + local.set $hi + local.get $dst + local.get $offset + i32.add + local.get $lo|14 + local.get $hi + i32.const 16 + i32.shl + i32.or + i32.store + local.get $offset + i32.const 4 + i32.add + local.set $offset + br $while-continue|0 + end + end + local.get $dst + local.get $offset + i32.add + local.get $ch + i32.store16 + local.get $offset + i32.const 2 + i32.add + local.set $offset + br $while-continue|0 + end + end + end + local.get $offset + local.get $len + i32.const 1 + i32.shl + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 216 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $len + i32.const 1 + i32.shl + local.get $offset + i32.gt_u + if + local.get $dst + local.get $offset + call $~lib/rt/itcms/__renew + local.set $dst + end + local.get $dst + return + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 160 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 560 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) + (func $~start + call $start:std/uri + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 36128 + i32.const 36176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/uri/encodeURIComponent (param $str i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + local.get $str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String#get:length + global.get $~lib/util/uri/URL_UNSAFE + call $~lib/util/uri/encode + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/uri/encodeURI (param $str i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + local.get $str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String#get:length + global.get $~lib/util/uri/URI_UNSAFE + call $~lib/util/uri/encode + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/uri/decodeURIComponent (param $str i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + local.get $str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String#get:length + i32.const 1 + call $~lib/util/uri/decode + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/uri/decodeURI (param $str i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $str + local.get $str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String#get:length + i32.const 0 + call $~lib/util/uri/decode + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $start:std/uri + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 272 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 32 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 736 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 768 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 800 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 800 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 832 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 928 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 992 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1024 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1136 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1216 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1280 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1312 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1360 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1488 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1632 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1792 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1824 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1904 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2000 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2128 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 736 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2480 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2480 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 832 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2528 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1632 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1904 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2128 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 736 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2624 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2656 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2688 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2720 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 65 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2752 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2784 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2912 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2992 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1392 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 75 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 85 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 736 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 86 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2624 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3120 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 88 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3184 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2752 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 91 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2784 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1392 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3248 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3296 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2992 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/std/uri.json b/tests/compiler/std/uri.json new file mode 100644 index 0000000000..b83788465e --- /dev/null +++ b/tests/compiler/std/uri.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + ], + "asc_rtrace": true +} diff --git a/tests/compiler/std/uri.release.wat b/tests/compiler/std/uri.release.wat new file mode 100644 index 0000000000..d6410645a6 --- /dev/null +++ b/tests/compiler/std/uri.release.wat @@ -0,0 +1,3934 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37124)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02") + (data $1 (i32.const 1069) "\01\01\01\01\01\00\00\00\00\01\01\00\00\01") + (data $1.1 (i32.const 1093) "\01\01\01\01\01\01\01") + (data $1.2 (i32.const 1126) "\01\01\01\01\00\01") + (data $1.3 (i32.const 1158) "\01\01\01") + (data $2 (i32.const 1164) "<") + (data $2.1 (i32.const 1176) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $3 (i32.const 1228) "<") + (data $3.1 (i32.const 1240) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $6 (i32.const 1356) "<") + (data $6.1 (i32.const 1368) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $7 (i32.const 1420) ",") + (data $7.1 (i32.const 1432) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $9 (i32.const 1500) "<") + (data $9.1 (i32.const 1512) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $10 (i32.const 1564) ",") + (data $10.1 (i32.const 1576) "\02\00\00\00\1a\00\00\00U\00R\00I\00 \00m\00a\00l\00f\00o\00r\00m\00e\00d") + (data $11 (i32.const 1612) "<") + (data $11.1 (i32.const 1624) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00u\00r\00i\00.\00t\00s") + (data $12 (i32.const 1676) "0123456789ABCDEF") + (data $13 (i32.const 1692) ",") + (data $13.1 (i32.const 1704) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00u\00r\00i\00.\00t\00s") + (data $14 (i32.const 1740) "\1c") + (data $14.1 (i32.const 1752) "\02\00\00\00\02\00\00\00a") + (data $15 (i32.const 1772) "\1c") + (data $15.1 (i32.const 1784) "\02\00\00\00\04\00\00\00a\001") + (data $16 (i32.const 1804) "\1c") + (data $16.1 (i32.const 1816) "\02\00\00\00\06\00\00\00a\00b\00_") + (data $17 (i32.const 1836) "\\") + (data $17.1 (i32.const 1848) "\02\00\00\00H\00\00\00A\00B\00C\00D\00X\00Y\00Z\00a\00f\00g\00k\00l\00m\00n\00w\00y\00z\000\001\002\003\004\005\006\007\008\009\00-\00_\00.\00!\00~\00*\00\'\00(\00)") + (data $18 (i32.const 1932) "\1c") + (data $18.1 (i32.const 1944) "\02\00\00\00\02") + (data $19 (i32.const 1964) "\1c") + (data $19.1 (i32.const 1976) "\02\00\00\00\06\00\00\00%\000\000") + (data $20 (i32.const 1996) "\1c") + (data $20.1 (i32.const 2008) "\02\00\00\00\02\00\00\00+") + (data $21 (i32.const 2028) "\1c") + (data $21.1 (i32.const 2040) "\02\00\00\00\06\00\00\00%\002\00B") + (data $22 (i32.const 2060) "\1c") + (data $22.1 (i32.const 2072) "\02\00\00\00\06\00\00\00#\000\00=") + (data $23 (i32.const 2092) ",") + (data $23.1 (i32.const 2104) "\02\00\00\00\0e\00\00\00%\002\003\000\00%\003\00D") + (data $24 (i32.const 2140) "\1c") + (data $24.1 (i32.const 2152) "\02\00\00\00\n\00\00\00 \001\002\003\00 ") + (data $25 (i32.const 2172) ",") + (data $25.1 (i32.const 2184) "\02\00\00\00\12\00\00\00%\002\000\001\002\003\00%\002\000") + (data $26 (i32.const 2220) "\1c") + (data $26.1 (i32.const 2232) "\02\00\00\00\04\00\00\00?\00+") + (data $27 (i32.const 2252) "\1c") + (data $27.1 (i32.const 2264) "\02\00\00\00\0c\00\00\00%\003\00F\00%\002\00B") + (data $28 (i32.const 2284) "\1c") + (data $28.1 (i32.const 2296) "\02\00\00\00\n\00\00\00-\00?\001\00.\00-") + (data $29 (i32.const 2316) ",") + (data $29.1 (i32.const 2328) "\02\00\00\00\0e\00\00\00-\00%\003\00F\001\00.\00-") + (data $30 (i32.const 2364) "\1c") + (data $30.1 (i32.const 2376) "\02\00\00\00\0c\00\00\00<\d8\ed\dd<\d8\fa\dd<\d8N\df") + (data $31 (i32.const 2396) "\\") + (data $31.1 (i32.const 2408) "\02\00\00\00H\00\00\00%\00F\000\00%\009\00F\00%\008\007\00%\00A\00D\00%\00F\000\00%\009\00F\00%\008\007\00%\00B\00A\00%\00F\000\00%\009\00F\00%\008\00D\00%\008\00E") + (data $32 (i32.const 2492) "\1c") + (data $32.1 (i32.const 2504) "\02\00\00\00\n\00\00\00H\c5U\b1X\d58\c1\94\c6") + (data $33 (i32.const 2524) "l") + (data $33.1 (i32.const 2536) "\02\00\00\00Z\00\00\00%\00E\00C\00%\009\005\00%\008\008\00%\00E\00B\00%\008\005\00%\009\005\00%\00E\00D\00%\009\005\00%\009\008\00%\00E\00C\00%\008\004\00%\00B\008\00%\00E\00C\00%\009\00A\00%\009\004") + (data $34 (i32.const 2636) "\1c") + (data $34.1 (i32.const 2648) "\02\00\00\00\06\00\00\00~\00\7f\00\80") + (data $35 (i32.const 2668) ",") + (data $35.1 (i32.const 2680) "\02\00\00\00\14\00\00\00~\00%\007\00F\00%\00C\002\00%\008\000") + (data $36 (i32.const 2716) "\1c") + (data $36.1 (i32.const 2728) "\02\00\00\00\04\00\00\00\00\d8\ff\df") + (data $37 (i32.const 2748) ",") + (data $37.1 (i32.const 2760) "\02\00\00\00\18\00\00\00%\00F\000\00%\009\000\00%\008\00F\00%\00B\00F") + (data $38 (i32.const 2796) "\1c") + (data $38.1 (i32.const 2808) "\02\00\00\00\n\00\00\00{\da\01\dc-\00P\da\02\dc") + (data $39 (i32.const 2828) "L") + (data $39.1 (i32.const 2840) "\02\00\00\002\00\00\00%\00F\002\00%\00A\00E\00%\00B\000\00%\008\001\00-\00%\00F\002\00%\00A\004\00%\008\000\00%\008\002") + (data $40 (i32.const 2908) "\1c") + (data $40.1 (i32.const 2920) "\02\00\00\00\n\00\00\00\n\00\t\00\0b\00\0c\00\r") + (data $41 (i32.const 2940) "<") + (data $41.1 (i32.const 2952) "\02\00\00\00\1e\00\00\00%\000\00A\00%\000\009\00%\000\00B\00%\000\00C\00%\000\00D") + (data $42 (i32.const 3004) ",") + (data $42.1 (i32.const 3016) "\02\00\00\00\14\00\00\00;\00/\00?\00:\00@\00&\00=\00+\00$\00,") + (data $43 (i32.const 3052) "L") + (data $43.1 (i32.const 3064) "\02\00\00\00<\00\00\00%\003\00B\00%\002\00F\00%\003\00F\00%\003\00A\00%\004\000\00%\002\006\00%\003\00D\00%\002\00B\00%\002\004\00%\002\00C") + (data $44 (i32.const 3132) "l") + (data $44.1 (i32.const 3144) "\02\00\00\00\\\00\00\00h\00t\00t\00p\00:\00/\00/\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00/\00w\00i\00k\00i\00/\00U\00T\00F\00-\008\00#\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n") + (data $45 (i32.const 3244) "\8c") + (data $45.1 (i32.const 3256) "\02\00\00\00t\00\00\00h\00t\00t\00p\00%\003\00A\00%\002\00F\00%\002\00F\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00%\002\00F\00w\00i\00k\00i\00%\002\00F\00U\00T\00F\00-\008\00%\002\003\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n") + (data $46 (i32.const 3389) "\01\00\00\01") + (data $46.1 (i32.const 3415) "\01\00\01") + (data $46.2 (i32.const 3446) "\01\01\01\01\00\01") + (data $46.3 (i32.const 3478) "\01\01\01") + (data $47 (i32.const 3484) ",") + (data $47.1 (i32.const 3496) "\02\00\00\00\16\00\00\00;\00,\00/\00?\00:\00@\00&\00=\00+\00$\00#") + (data $48 (i32.const 3532) "\1c") + (data $48.1 (i32.const 3544) "\02\00\00\00\02\00\00\00 ") + (data $49 (i32.const 3564) "\1c") + (data $49.1 (i32.const 3576) "\02\00\00\00\06\00\00\00%\002\000") + (data $50 (i32.const 3596) "\01\01\00\01\00\00\00\00\01\01\00\00\01") + (data $50.1 (i32.const 3619) "\01\01\00\01\00\01\01") + (data $51 (i32.const 3628) "\1c") + (data $51.1 (i32.const 3640) "\02\00\00\00\06\00\00\00%\002\006") + (data $52 (i32.const 3660) "\1c") + (data $52.1 (i32.const 3672) "\02\00\00\00\02\00\00\00&") + (data $53 (i32.const 3692) "\1c") + (data $53.1 (i32.const 3704) "\02\00\00\00\06\00\00\00%\005\00E") + (data $54 (i32.const 3724) "\1c") + (data $54.1 (i32.const 3736) "\02\00\00\00\02\00\00\00^") + (data $55 (i32.const 3756) "\1c") + (data $55.1 (i32.const 3768) "\02\00\00\00\02\00\00\00\00\d8") + (data $56 (i32.const 3788) "L") + (data $56.1 (i32.const 3800) "\02\00\00\00<\00\00\00%\003\00b\00%\002\00f\00%\003\00f\00%\003\00a\00%\004\000\00%\003\00d\00%\002\00b\00%\002\004\00%\002\00c\00%\002\003") + (data $57 (i32.const 3868) ",") + (data $57.1 (i32.const 3880) "\02\00\00\00\14\00\00\00;\00/\00?\00:\00@\00=\00+\00$\00,\00#") + (data $58 (i32.const 3916) "L") + (data $58.1 (i32.const 3928) "\02\00\00\00<\00\00\00%\003\00B\00%\002\00F\00%\003\00F\00%\003\00A\00%\004\000\00%\003\00D\00%\002\00B\00%\002\004\00%\002\00C\00%\002\003") + (data $59 (i32.const 3996) "|") + (data $59.1 (i32.const 4008) "\02\00\00\00h\00\00\00h\00t\00t\00p\00:\00%\002\00F\00%\002\00F\00e\00n\00.\00w\00i\00k\00i\00p\00e\00d\00i\00a\00.\00o\00r\00g\00/\00w\00i\00k\00i\00/\00U\00T\00F\00-\008\00%\002\003\00D\00e\00s\00c\00r\00i\00p\00t\00i\00o\00n") + (data $60 (i32.const 4124) "\1c") + (data $60.1 (i32.const 4136) "\02\00\00\00\0c\00\00\00%\00D\00F\00%\008\000") + (data $61 (i32.const 4156) "\1c") + (data $61.1 (i32.const 4168) "\02\00\00\00\02\00\00\00\c0\07") + (data $62 (i32.const 4188) "\1c") + (data $62.1 (i32.const 4200) "\02\00\00\00\0c\00\00\00%\00C\002\00%\00B\00F") + (data $63 (i32.const 4220) "\1c") + (data $63.1 (i32.const 4232) "\02\00\00\00\02\00\00\00\bf") + (data $64 (i32.const 4252) ",") + (data $64.1 (i32.const 4264) "\02\00\00\00\0e\00\00\00\f7\00\b8\00W\00\ef\00\0f\00\f4\00V") + (data $65 (i32.const 4300) "\1c") + (data $65.1 (i32.const 4312) "\02\00\00\00\06\00\00\00\f4\00\b8\00\ef") + (data $66 (i32.const 4336) "\04\00\00\00 \00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1376 + call $~lib/rt/itcms/__visit + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 1584 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 37124 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 4336 + i32.load + i32.gt_u + if + i32.const 1376 + i32.const 1440 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 4340 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37136 + i32.const 0 + i32.store + i32.const 38704 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 37136 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 37136 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 37136 + i32.const 38708 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37136 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 37124 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 37124 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 37124 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1520 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1184 + i32.const 1248 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1184 + i32.const 1520 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1520 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $1 + i32.gt_u + select + memory.copy + local.get $2 + ) + (func $~lib/util/uri/encode (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.get $1 + i32.eqz + if + local.get $0 + return + end + local.get $1 + i32.const 1 + i32.shl + local.tee $5 + i32.const 2 + call $~lib/rt/itcms/__new + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $4 + i32.gt_u + if + block $while-break|0 + local.get $4 + local.set $6 + loop $do-loop|1 + block $do-break|1 + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.tee $7 + i32.const 33 + i32.sub + local.tee $8 + i32.const 94 + i32.ge_u + br_if $do-break|1 + local.get $2 + local.get $8 + i32.add + i32.load8_u + br_if $do-break|1 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + local.get $1 + i32.lt_u + br_if $do-loop|1 + end + end + local.get $4 + local.get $6 + i32.gt_u + if + local.get $4 + local.get $6 + i32.sub + i32.const 1 + i32.shl + local.tee $10 + local.get $9 + i32.add + local.tee $8 + local.get $5 + i32.gt_u + if + local.get $3 + local.get $8 + local.tee $5 + call $~lib/rt/itcms/__renew + local.set $3 + end + local.get $3 + local.get $9 + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $10 + memory.copy + local.get $9 + local.get $10 + i32.add + local.set $9 + local.get $1 + local.get $4 + i32.le_u + br_if $while-break|0 + end + local.get $7 + i32.const 55296 + i32.ge_u + if + local.get $7 + i32.const 57343 + i32.le_u + local.get $7 + i32.const 56320 + i32.ge_u + i32.and + if + i32.const 1584 + i32.const 1632 + i32.const 81 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 56319 + i32.le_u + if + local.get $1 + local.get $4 + i32.le_u + if + i32.const 1584 + i32.const 1632 + i32.const 85 + i32.const 11 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.tee $6 + i32.const 56320 + i32.lt_u + local.get $6 + i32.const 57343 + i32.gt_u + i32.or + if + i32.const 1584 + i32.const 1632 + i32.const 89 + i32.const 11 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 1023 + i32.and + local.get $7 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.or + i32.const 65536 + i32.add + local.set $7 + end + end + local.get $9 + i32.const 6 + i32.const 24 + local.get $7 + i32.const 128 + i32.lt_u + select + i32.add + local.tee $6 + local.get $5 + i32.gt_u + if + local.get $3 + local.get $6 + i32.const 1 + i32.shl + local.get $6 + local.get $1 + i32.const 1 + i32.gt_u + select + local.tee $5 + call $~lib/rt/itcms/__renew + local.set $3 + end + local.get $7 + i32.const 128 + i32.lt_u + if + local.get $3 + local.get $9 + i32.add + local.tee $6 + i32.const 37 + i32.store16 + local.get $6 + local.get $7 + i32.const 4 + i32.shr_u + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + local.get $7 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + else + local.get $7 + i32.const 2048 + i32.lt_u + if + local.get $3 + local.get $9 + i32.add + local.tee $6 + i32.const 37 + i32.store16 + local.get $6 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.tee $6 + i32.const 4 + i32.shr_u + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + local.get $6 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + else + local.get $7 + i32.const 65536 + i32.lt_u + if + local.get $3 + local.get $9 + i32.add + local.tee $6 + i32.const 37 + i32.store16 + local.get $6 + local.get $7 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.tee $6 + i32.const 4 + i32.shr_u + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + local.get $6 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + else + local.get $3 + local.get $9 + i32.add + local.tee $6 + i32.const 37 + i32.store16 + local.get $6 + local.get $7 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + local.tee $6 + i32.const 4 + i32.shr_u + i32.const 1676 + i32.add + i32.load8_u + local.get $6 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + local.get $3 + local.get $9 + i32.const 6 + i32.add + local.tee $9 + i32.add + local.tee $6 + i32.const 37 + i32.store16 + local.get $6 + local.get $7 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.tee $6 + i32.const 4 + i32.shr_u + i32.const 1676 + i32.add + i32.load8_u + local.get $6 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + end + local.get $3 + local.get $9 + i32.const 6 + i32.add + local.tee $9 + i32.add + local.tee $6 + i32.const 37 + i32.store16 + local.get $6 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.tee $6 + i32.const 4 + i32.shr_u + i32.const 1676 + i32.add + i32.load8_u + local.get $6 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + end + local.get $3 + local.get $9 + i32.const 6 + i32.add + local.tee $9 + i32.add + local.tee $6 + i32.const 37 + i32.store16 + local.get $6 + local.get $7 + i32.const 63 + i32.and + i32.const 128 + i32.or + local.tee $6 + i32.const 4 + i32.shr_u + i32.const 1676 + i32.add + i32.load8_u + local.get $6 + i32.const 15 + i32.and + i32.const 1676 + i32.add + i32.load8_u + i32.const 16 + i32.shl + i32.or + i32.store offset=2 + end + local.get $9 + i32.const 6 + i32.add + local.set $9 + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + end + local.get $5 + local.get $9 + i32.gt_u + if (result i32) + local.get $3 + local.get $9 + call $~lib/rt/itcms/__renew + else + local.get $3 + end + ) + (func $~lib/util/uri/decode (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.get $1 + i32.eqz + if + local.get $0 + return + end + local.get $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.set $9 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.gt_u + if + block $while-break|0 + local.get $3 + local.set $4 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.gt_u + if (result i32) + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.tee $5 + i32.const 37 + i32.ne + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|1 + end + end + local.get $3 + local.get $4 + i32.gt_u + if + local.get $6 + local.get $9 + i32.add + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $4 + i32.sub + i32.const 1 + i32.shl + local.tee $4 + memory.copy + local.get $4 + local.get $6 + i32.add + local.set $6 + local.get $1 + local.get $3 + i32.le_u + br_if $while-break|0 + end + local.get $5 + i32.const 37 + i32.ne + local.get $3 + i32.const 2 + i32.add + local.get $1 + i32.ge_u + i32.or + if (result i32) + i32.const 1 + else + local.get $0 + local.get $3 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.tee $4 + i32.load16_u offset=2 + local.set $5 + local.get $4 + i32.load16_u + local.tee $4 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $4 + i32.const 32 + i32.or + i32.const 97 + i32.sub + i32.const 6 + i32.lt_u + end + if (result i32) + local.get $5 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $5 + i32.const 32 + i32.or + i32.const 97 + i32.sub + i32.const 6 + i32.lt_u + end + else + i32.const 0 + end + if (result i32) + local.get $5 + i32.const 32 + i32.or + i32.const 39 + i32.rem_u + i32.const 9 + i32.sub + local.get $4 + i32.const 32 + i32.or + i32.const 39 + i32.rem_u + i32.const 9 + i32.sub + i32.const 4 + i32.shl + i32.or + else + i32.const -1 + end + local.tee $5 + i32.const -1 + i32.eq + end + if + i32.const 1584 + i32.const 1632 + i32.const 164 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.add + local.set $3 + local.get $5 + i32.const 128 + i32.lt_u + if + local.get $2 + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 35 + i32.sub + i32.const 30 + i32.lt_u + if (result i32) + local.get $5 + i32.const 3561 + i32.add + i32.load8_u + else + i32.const 0 + end + end + if + i32.const 37 + local.set $5 + local.get $3 + i32.const 2 + i32.sub + local.set $3 + end + else + i32.const 1 + local.get $5 + i32.const 192 + i32.sub + i32.const 56 + i32.lt_u + if (result i32) + local.get $5 + i32.const 24 + i32.shl + i32.const -1 + i32.xor + i32.clz + else + i32.const 0 + end + local.tee $4 + i32.const 17 + i32.mul + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + i32.shl + local.set $8 + local.get $5 + i32.const 128 + local.get $4 + i32.shr_u + i32.const 1 + i32.sub + i32.const 0 + local.get $4 + select + i32.and + local.set $5 + loop $while-continue|2 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + if + block $while-break|2 + local.get $3 + i32.const 2 + i32.add + local.get $1 + i32.ge_u + if (result i32) + i32.const 1 + else + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 37 + i32.ne + end + if (result i32) + i32.const 1 + else + local.get $0 + local.get $3 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + local.tee $10 + i32.load16_u offset=2 + local.set $7 + local.get $10 + i32.load16_u + local.tee $10 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $10 + i32.const 32 + i32.or + i32.const 97 + i32.sub + i32.const 6 + i32.lt_u + end + if (result i32) + local.get $7 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $7 + i32.const 32 + i32.or + i32.const 97 + i32.sub + i32.const 6 + i32.lt_u + end + else + i32.const 0 + end + if (result i32) + local.get $7 + i32.const 32 + i32.or + i32.const 39 + i32.rem_u + i32.const 9 + i32.sub + local.get $10 + i32.const 32 + i32.or + i32.const 39 + i32.rem_u + i32.const 9 + i32.sub + i32.const 4 + i32.shl + i32.or + else + i32.const -1 + end + local.tee $7 + i32.const -1 + i32.eq + end + if + i32.const 1584 + i32.const 1632 + i32.const 187 + i32.const 11 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.add + local.set $3 + local.get $7 + i32.const 192 + i32.and + i32.const 128 + i32.ne + if + i32.const 0 + local.set $5 + br $while-break|2 + end + local.get $7 + i32.const 63 + i32.and + local.get $5 + i32.const 6 + i32.shl + i32.or + local.set $5 + br $while-continue|2 + end + end + end + local.get $8 + i32.const -1 + i32.eq + local.get $5 + local.get $8 + i32.lt_u + i32.or + local.get $5 + i32.const 1114111 + i32.gt_u + i32.or + if (result i32) + i32.const 1 + else + local.get $5 + i32.const 57344 + i32.lt_u + local.get $5 + i32.const 55296 + i32.ge_u + i32.and + end + if + i32.const 1584 + i32.const 1632 + i32.const 199 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 65536 + i32.ge_u + if + local.get $6 + local.get $9 + i32.add + local.get $5 + i32.const 65536 + i32.sub + local.tee $5 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $5 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + local.get $6 + i32.const 4 + i32.add + local.set $6 + br $while-continue|0 + end + end + local.get $6 + local.get $9 + i32.add + local.get $5 + i32.store16 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|0 + end + end + end + local.get $1 + i32.const 1 + i32.shl + local.get $6 + i32.lt_u + if + i32.const 0 + i32.const 1632 + i32.const 216 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.shl + local.get $6 + i32.gt_u + if (result i32) + local.get $9 + local.get $6 + call $~lib/rt/itcms/__renew + else + local.get $9 + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + call $start:std/uri + ) + (func $~lib/uri/encodeURIComponent (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4356 + i32.lt_s + if + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4356 + i32.lt_s + if + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$88 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$88 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/uri/encodeURI (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4356 + i32.lt_s + if + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 3388 + call $~lib/util/uri/encode + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/uri/decodeURIComponent (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4356 + i32.lt_s + if + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + call $~lib/util/uri/decode + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/uri/decodeURI (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4356 + i32.lt_s + if + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/uri + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4356 + i32.lt_s + if + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 37124 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/pinSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/toSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/fromSpace + i32.const 1056 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1760 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1792 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1824 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1824 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1856 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1952 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1984 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2016 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2080 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2160 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2240 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2304 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2384 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2512 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2656 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2736 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2816 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2848 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2928 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3024 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3152 + call $~lib/uri/encodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1760 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3504 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3504 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1856 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3552 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2656 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2688 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2736 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 48 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2928 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3152 + call $~lib/uri/encodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1760 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3648 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3712 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 65 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3776 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2736 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3808 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3936 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4016 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3152 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2416 + call $~lib/uri/decodeURIComponent + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2384 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 75 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 85 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1760 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 86 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3648 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4144 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4176 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 88 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4208 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3776 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2736 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 91 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3808 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2416 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2384 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4272 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4320 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4320 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4016 + call $~lib/uri/decodeURI + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4016 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1712 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 37124 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/std/uri.ts b/tests/compiler/std/uri.ts new file mode 100644 index 0000000000..b165c8815b --- /dev/null +++ b/tests/compiler/std/uri.ts @@ -0,0 +1,107 @@ + +// encodeURIComponent + +assert(encodeURIComponent("") == ""); +assert(encodeURIComponent("a") == "a"); +assert(encodeURIComponent("a1") == "a1"); +assert(encodeURIComponent("ab_") == "ab_"); +assert( + encodeURIComponent("ABCDXYZafgklmnwyz0123456789-_.!~*'()") == + "ABCDXYZafgklmnwyz0123456789-_.!~*'()" +); +assert(encodeURIComponent("\0") == "%00"); +assert(encodeURIComponent("+") == "%2B"); +assert(encodeURIComponent("#0=") == "%230%3D"); +assert(encodeURIComponent(" 123 ") == "%20123%20"); +assert(encodeURIComponent("?+") == "%3F%2B"); +assert(encodeURIComponent("-?1.-") == "-%3F1.-"); +assert(encodeURIComponent("🇭🇺🍎") == "%F0%9F%87%AD%F0%9F%87%BA%F0%9F%8D%8E"); +assert(encodeURIComponent("안녕하세요") == "%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94"); +assert(encodeURIComponent("\x7E\x7F\x80") == "~%7F%C2%80"); +assert(encodeURIComponent("\uD800\uDFFF") == "%F0%90%8F%BF"); +assert(encodeURIComponent('\uDA7B\uDC01-\uDA50\uDC02') == "%F2%AE%B0%81-%F2%A4%80%82"); +// line terminators +assert(encodeURIComponent("\n\t\v\f\r") == "%0A%09%0B%0C%0D"); +// From test262/test/built-ins/encodeURIComponent/S15.1.3.4_A4_T1.js +assert(encodeURIComponent(";/?:@&=+$,") == "%3B%2F%3F%3A%40%26%3D%2B%24%2C"); +// From test262/test/built-ins/encodeURIComponent/S15.1.3.4_A4_T4.js +assert( + encodeURIComponent("http://en.wikipedia.org/wiki/UTF-8#Description") == + "http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FUTF-8%23Description" +); + +// assert(encodeURIComponent("\uD800")); // malformed URI sequence (ok) +// assert(encodeURIComponent("\uDFFF")); // malformed URI sequence (ok) + + +// encodeURI + +assert(encodeURI("") == ""); +assert(encodeURI("a") == "a"); +assert(encodeURI(";,/?:@&=+$#") == ";,/?:@&=+$#"); +assert( + encodeURI("ABCDXYZafgklmnwyz0123456789-_.!~*'()") == + "ABCDXYZafgklmnwyz0123456789-_.!~*'()" +); +assert(encodeURI(" ") == "%20"); +assert(encodeURI("\x7E\x7F\x80") == "~%7F%C2%80"); +assert(encodeURI("\uD800\uDFFF") == "%F0%90%8F%BF"); +// line terminators +assert(encodeURI("\n\t\v\f\r") == "%0A%09%0B%0C%0D"); +assert( + encodeURI("http://en.wikipedia.org/wiki/UTF-8#Description") == + "http://en.wikipedia.org/wiki/UTF-8#Description" +); + +// assert(encodeURI("\uD800")); // malformed URI sequence (ok) +// assert(encodeURI("\uDFFF")); // malformed URI sequence (ok) + + +// decodeURIComponent + +assert(decodeURIComponent("") == ""); +assert(decodeURIComponent("a") == "a"); +assert(decodeURIComponent("%26") == "&"); +assert(decodeURIComponent('%5E') == "^"); +assert(decodeURIComponent("\uD800") == "\uD800"); +assert(decodeURIComponent("\uD800\uDFFF") == "\uD800\uDFFF"); +assert(decodeURIComponent("%3b%2f%3f%3a%40%3d%2b%24%2c%23") == ";/?:@=+$,#"); +assert(decodeURIComponent("%3B%2F%3F%3A%40%3D%2B%24%2C%23") == ";/?:@=+$,#"); +assert( + decodeURIComponent("http:%2F%2Fen.wikipedia.org/wiki/UTF-8%23Description") == + "http://en.wikipedia.org/wiki/UTF-8#Description" +); + +assert(decodeURIComponent("%F0%9F%87%AD%F0%9F%87%BA%F0%9F%8D%8E") == "🇭🇺🍎"); + +// assert(decodeURIComponent("%1")); // malformed URI sequence (ok) +// assert(decodeURIComponent("%1/")); // malformed URI sequence (ok) +// assert(decodeURIComponent("%1`")); // malformed URI sequence (ok) +// assert(decodeURIComponent("%1g")); // malformed URI sequence (ok) +// assert(decodeURIComponent("%\uFFFF")); // malformed URI sequence (ok) + +// decodeURI + +assert(decodeURI("") == ""); +assert(decodeURI("a") == "a"); +assert(decodeURI("%26") == "%26"); +assert(decodeURI("%DF%80") == "߀"); +assert(decodeURI("%C2%BF") == "¿"); +assert(decodeURI("\uD800") == "\uD800"); +assert(decodeURI("\uD800\uDFFF") == "\uD800\uDFFF"); +assert(decodeURI("%3b%2f%3f%3a%40%3d%2b%24%2c%23") == "%3b%2f%3f%3a%40%3d%2b%24%2c%23"); +assert(decodeURI("%F0%9F%87%AD%F0%9F%87%BA%F0%9F%8D%8E") == "🇭🇺🍎"); +assert(decodeURI("\xf7\xb8W\xef\x0f\xf4V") == "÷¸WïôV"); +assert(decodeURI("\xF4\xB8\xEF") == "ô¸ï"); +assert( + decodeURI("http:%2F%2Fen.wikipedia.org/wiki/UTF-8%23Description") == + "http:%2F%2Fen.wikipedia.org/wiki/UTF-8%23Description" +); + +// assert(decodeURI("%\x10")); // malformed URI sequence (ok) +// assert(decodeURI("%\x10\x10")); // malformed URI sequence (ok) +// assert(decodeURI("%C2%0x80")); // malformed URI sequence (ok) +// assert(decodeURI("%80%BF")); // malformed URI sequence (ok) + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/super-inline.debug.wat b/tests/compiler/super-inline.debug.wat new file mode 100644 index 0000000000..dc1722f0ec --- /dev/null +++ b/tests/compiler/super-inline.debug.wat @@ -0,0 +1,2542 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i64) (result i32))) + (type $8 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $super-inline/foo (mut i32) (i32.const 0)) + (global $super-inline/bar (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 416)) + (global $~lib/memory/__data_end i32 (i32.const 444)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33212)) + (global $~lib/memory/__heap_base i32 (i32.const 33212)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 416) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $super-inline/Foo#a (param $this i32) (result i32) + i32.const 1 + return + ) + (func $super-inline/Foo#a@override (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 5 + i32.eq + br_if $case0 + br $default + end + local.get $0 + call $super-inline/Bar#a + return + end + local.get $0 + call $super-inline/Foo#a + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $super-inline/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $super-inline/bar + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $super-inline/Bar + block $super-inline/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $super-inline/Foo $super-inline/Bar $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:super-inline + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33232 + i32.const 33280 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $super-inline/Foo#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $super-inline/Bar#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $super-inline/Foo#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:super-inline + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $super-inline/Foo#constructor + global.set $super-inline/foo + global.get $super-inline/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $super-inline/Foo#a@override + drop + i32.const 0 + call $super-inline/Bar#constructor + global.set $super-inline/bar + global.get $super-inline/bar + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $super-inline/Bar#a + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $super-inline/Bar#a (param $this i32) (result i32) + (local $this|1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $super-inline/Foo#a|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $this + local.tee $this|1 + i32.store + i32.const 1 + br $super-inline/Foo#a|inlined.0 + end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) +) diff --git a/tests/compiler/super-inline.json b/tests/compiler/super-inline.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/super-inline.json +++ b/tests/compiler/super-inline.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.optimized.wat deleted file mode 100644 index 3a7a9f164b..0000000000 --- a/tests/compiler/super-inline.optimized.wat +++ /dev/null @@ -1,104 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (memory $0 0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $super-inline/foo (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - i32.const 16 - i32.add - local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - local.tee $2 - i32.gt_u - if - local.get $4 - local.get $1 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $4 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $1 - global.set $~lib/rt/stub/offset - local.get $3 - i32.const 16 - i32.sub - local.tee $1 - i32.const 16 - i32.store - local.get $1 - i32.const 1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $3 - ) - (func $super-inline/Foo#constructor (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 3 - call $~lib/rt/stub/__alloc - end - ) - (func $~start - i32.const 1024 - global.set $~lib/rt/stub/offset - i32.const 0 - call $super-inline/Foo#constructor - global.set $super-inline/foo - block $__inlined_func$super-inline/Foo#a@virtual - global.get $super-inline/foo - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.ne - br_if $__inlined_func$super-inline/Foo#a@virtual - end - i32.const 4 - call $~lib/rt/stub/__alloc - call $super-inline/Foo#constructor - drop - ) -) diff --git a/tests/compiler/super-inline.release.wat b/tests/compiler/super-inline.release.wat new file mode 100644 index 0000000000..35da8ff691 --- /dev/null +++ b/tests/compiler/super-inline.release.wat @@ -0,0 +1,1615 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $super-inline/foo (mut i32) (i32.const 0)) + (global $super-inline/bar (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34236)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1440) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $super-inline/foo + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $super-inline/bar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$116 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34236 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$116 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34236 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $super-inline/Bar + block $super-inline/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $super-inline/Foo $super-inline/Bar $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34236 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $super-inline/Foo#constructor + global.set $super-inline/foo + global.get $~lib/memory/__stack_pointer + global.get $super-inline/foo + local.tee $0 + i32.store + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.eq + if + local.get $0 + call $super-inline/Bar#a + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $super-inline/Foo#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $super-inline/bar + global.get $~lib/memory/__stack_pointer + global.get $super-inline/bar + local.tee $0 + i32.store + local.get $0 + call $super-inline/Bar#a + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $super-inline/Foo#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $super-inline/Bar#a (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + if + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/super-inline.untouched.wat b/tests/compiler/super-inline.untouched.wat deleted file mode 100644 index 798dcad8b1..0000000000 --- a/tests/compiler/super-inline.untouched.wat +++ /dev/null @@ -1,212 +0,0 @@ -(module - (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 0) - (table $0 1 funcref) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $super-inline/foo (mut i32) (i32.const 0)) - (global $super-inline/bar (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 8)) - (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $super-inline/Foo#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $super-inline/Foo#a (param $0 i32) (result i32) - i32.const 1 - ) - (func $super-inline/Bar#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $super-inline/Foo#constructor - local.set $0 - local.get $0 - ) - (func $super-inline/Bar#a (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - local.set $1 - i32.const 1 - ) - (func $start:super-inline - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - call $super-inline/Foo#constructor - global.set $super-inline/foo - global.get $super-inline/foo - call $super-inline/Foo#a@virtual - drop - i32.const 0 - call $super-inline/Bar#constructor - global.set $super-inline/bar - global.get $super-inline/bar - call $super-inline/Bar#a - drop - ) - (func $~start - call $start:super-inline - ) - (func $super-inline/Foo#a@virtual (param $0 i32) (result i32) - (local $1 i32) - block $default - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $1 - local.get $1 - i32.const 4 - i32.eq - br_if $case0 - br $default - end - local.get $0 - call $super-inline/Bar#a - return - end - local.get $0 - call $super-inline/Foo#a - ) -) diff --git a/tests/compiler/switch.debug.wat b/tests/compiler/switch.debug.wat new file mode 100644 index 0000000000..dea9957b59 --- /dev/null +++ b/tests/compiler/switch.debug.wat @@ -0,0 +1,4970 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i64) (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param f32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $switch/Foo.A i32 (i32.const 1)) + (global $switch/Foo.B i32 (i32.const 2)) + (global $switch/Foo.C i32 (i32.const 3)) + (global $switch/Foo.D i32 (i32.const 4)) + (global $switch/foo1 (mut i32) (i32.const 0)) + (global $switch/foo2 (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 912)) + (global $~lib/memory/__data_end i32 (i32.const 940)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33708)) + (global $~lib/memory/__heap_base i32 (i32.const 33708)) + (memory $0 1) + (data $0 (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") + (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") + (data $3 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") + (data $4 (i32.const 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") + (data $5 (i32.const 188) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00o\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 220) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00n\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 284) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $9 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 540) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 592) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 620) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 684) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00e\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 716) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00t\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 748) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00w\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 780) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 812) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00r\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 844) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00f\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 876) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00u\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 912) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $switch/doSwitch (param $n i32) (result i32) + (local $1 i32) + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 0 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 3 + i32.eq + br_if $case4|0 + br $case2|0 + end + i32.const 1 + return + end + end + i32.const 0 + return + end + end + i32.const 23 + return + ) + (func $switch/doSwitchDefaultFirst (param $n i32) (result i32) + (local $1 i32) + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 3 + i32.eq + br_if $case3|0 + br $case0|0 + end + i32.const 0 + return + end + i32.const 1 + return + end + end + i32.const 23 + return + ) + (func $switch/doSwitchDefaultOmitted (param $n i32) (result i32) + (local $1 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 3 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + return + end + end + i32.const 23 + return + end + i32.const 0 + return + ) + (func $switch/doSwitchBreakCase (param $n i32) (result i32) + (local $1 i32) + block $break|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case0|0 + br $case1|0 + end + br $break|0 + end + i32.const 2 + return + end + i32.const 1 + return + ) + (func $switch/doSwitchBreakDefault (param $n i32) (result i32) + (local $1 i32) + block $break|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case0|0 + br $case1|0 + end + i32.const 1 + return + end + br $break|0 + end + i32.const 2 + return + ) + (func $switch/doSwitchFallThroughCase (param $n i32) (result i32) + (local $1 i32) + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + br $case0|0 + end + i32.const 2 + return + end + i32.const 1 + return + ) + (func $switch/doSwitchFallThroughDefault (param $n i32) (result i32) + (local $1 i32) + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case0|0 + br $case1|0 + end + i32.const 1 + return + end + i32.const 2 + return + ) + (func $switch/doSwitchEmpty (param $n i32) (result i32) + local.get $n + drop + i32.const 2 + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 496 + i32.const 560 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 368 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 304 + i32.const 640 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 640 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 304 + i32.const 368 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $switch/doSwitchBoolean (param $b i32) (result i32) + (local $1 i32) + block $break|0 + block $case1|0 + block $case0|0 + local.get $b + local.set $1 + local.get $1 + i32.const 0 + i32.ne + i32.const 1 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 0 + i32.ne + i32.const 0 + i32.eq + br_if $case1|0 + br $break|0 + end + i32.const 1 + return + end + i32.const 2 + return + end + i32.const 0 + return + ) + (func $switch/doSwitchUInt32 (param $n i32) (result i32) + (local $1 i32) + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 3 + i32.eq + br_if $case2|0 + br $case3|0 + end + i32.const 1 + return + end + i32.const 2 + return + end + i32.const 3 + return + end + i32.const 0 + return + ) + (func $switch/doSwitchEnum (param $n i32) (result i32) + (local $1 i32) + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + global.get $switch/Foo.A + i32.eq + br_if $case0|0 + local.get $1 + global.get $switch/Foo.B + i32.eq + br_if $case1|0 + local.get $1 + global.get $switch/Foo.C + i32.eq + br_if $case2|0 + br $case3|0 + end + i32.const 1 + return + end + i32.const 2 + return + end + i32.const 3 + return + end + i32.const 0 + return + ) + (func $switch/doSwitchUint8 (param $n i32) (result i32) + (local $1 i32) + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i32.const 255 + i32.and + i32.const 1 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 255 + i32.and + i32.const 2 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 255 + i32.and + i32.const 3 + i32.eq + br_if $case2|0 + br $case3|0 + end + i32.const 1 + return + end + i32.const 2 + return + end + i32.const 3 + return + end + i32.const 0 + return + ) + (func $switch/doSwitchFloat (param $n f32) (result i32) + (local $1 f32) + block $case2|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + f32.const 1 + f32.eq + br_if $case0|0 + local.get $1 + f32.const 2 + f32.eq + br_if $case1|0 + br $case2|0 + end + i32.const 1 + return + end + i32.const 2 + return + end + i32.const 0 + return + ) + (func $switch/doSwitchInt64 (param $n i64) (result i32) + (local $1 i64) + block $case2|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i64.const 1 + i64.eq + br_if $case0|0 + local.get $1 + i64.const 2 + i64.eq + br_if $case1|0 + br $case2|0 + end + i32.const 1 + return + end + i32.const 2 + return + end + i32.const 0 + return + ) + (func $switch/doSwitchUInt64 (param $n i64) (result i32) + (local $1 i64) + block $case2|0 + block $case1|0 + block $case0|0 + local.get $n + local.set $1 + local.get $1 + i64.const 1 + i64.eq + br_if $case0|0 + local.get $1 + i64.const 2 + i64.eq + br_if $case1|0 + br $case2|0 + end + i32.const 1 + return + end + i32.const 2 + return + end + i32.const 0 + return + ) + (func $switch/FooClass#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $switch/FooClass#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $switch/BarClass#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $switch/BarClass#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $switch/foo1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $switch/foo2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 496 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 304 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $switch/BarClass + block $switch/FooClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $switch/FooClass $switch/BarClass $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:switch + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33728 + i32.const 33776 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $switch/doSwitchString (param $s i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/memory/__stack_pointer + local.get $s + local.tee $1 + i32.store + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 80 + call $~lib/string/String.__eq + br_if $case0|0 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 112 + call $~lib/string/String.__eq + br_if $case1|0 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 144 + call $~lib/string/String.__eq + br_if $case2|0 + br $case3|0 + end + i32.const 1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 2 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 3 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 4 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 272 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $switch/doSwitchNullableString (param $s i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/memory/__stack_pointer + local.get $s + local.tee $1 + i32.store + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/string/String.__eq + br_if $case0|0 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 80 + call $~lib/string/String.__eq + br_if $case1|0 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 112 + call $~lib/string/String.__eq + br_if $case2|0 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 144 + call $~lib/string/String.__eq + br_if $case3|0 + br $case4|0 + end + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 2 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 3 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 4 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $switch/FooClass#constructor (param $this i32) (param $value i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $switch/FooClass#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $value + call $switch/FooClass#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $switch/doSwitchClassMember (param $foo i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $case2|0 + block $case1|0 + block $case0|0 + local.get $foo + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $switch/FooClass#get:value + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $case2|0 + end + i32.const 1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 2 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 3 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $switch/BarClass.__eq (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $left + i32.eqz + if (result i32) + i32.const 1 + else + local.get $right + i32.eqz + end + if + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $switch/BarClass#get:value + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $switch/BarClass#get:value + i32.eq + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $switch/BarClass#constructor (param $this i32) (param $value i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $switch/BarClass#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $value + call $switch/BarClass#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $switch/doSwitchClassInstanceWithOverload (param $foo i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/memory/__stack_pointer + local.get $foo + local.tee $1 + i32.store + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $switch/BarClass.__eq + br_if $case0|0 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1 + call $switch/BarClass#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $switch/BarClass.__eq + br_if $case1|0 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 2 + call $switch/BarClass#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $switch/BarClass.__eq + br_if $case2|0 + br $case3|0 + end + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 2 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 3 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $start:switch + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 0 + call $switch/doSwitch + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/doSwitch + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $switch/doSwitch + i32.const 23 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $switch/doSwitch + i32.const 23 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + call $switch/doSwitch + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchDefaultFirst + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/doSwitchDefaultFirst + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $switch/doSwitchDefaultFirst + i32.const 23 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $switch/doSwitchDefaultFirst + i32.const 23 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + call $switch/doSwitchDefaultFirst + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchDefaultOmitted + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/doSwitchDefaultOmitted + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $switch/doSwitchDefaultOmitted + i32.const 23 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $switch/doSwitchDefaultOmitted + i32.const 23 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + call $switch/doSwitchDefaultOmitted + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchBreakCase + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/doSwitchBreakCase + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 52 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $switch/doSwitchBreakCase + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchBreakDefault + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/doSwitchBreakDefault + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $switch/doSwitchBreakDefault + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchFallThroughCase + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/doSwitchFallThroughCase + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $switch/doSwitchFallThroughCase + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 75 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchFallThroughDefault + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/doSwitchFallThroughDefault + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 85 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $switch/doSwitchFallThroughDefault + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 86 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchEmpty + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/doSwitchEmpty + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $switch/doSwitchEmpty + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 80 + call $switch/doSwitchString + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 112 + call $switch/doSwitchString + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 144 + call $switch/doSwitchString + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 176 + call $switch/doSwitchString + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 592 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 208 + i32.const 240 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 704 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchString + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 736 + i32.const 768 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 208 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchString + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 736 + i32.const 800 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 832 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 704 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 704 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchString + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 864 + i32.const 208 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 896 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 832 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchString + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchNullableString + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 80 + call $switch/doSwitchNullableString + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 112 + call $switch/doSwitchNullableString + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 130 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 144 + call $switch/doSwitchNullableString + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 176 + call $switch/doSwitchNullableString + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 132 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 208 + i32.const 240 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 704 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchNullableString + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 135 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 736 + i32.const 768 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 208 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchNullableString + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 136 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 736 + i32.const 800 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 832 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 704 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 704 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchNullableString + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 864 + i32.const 208 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 896 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 832 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchNullableString + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 138 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/doSwitchBoolean + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 148 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchBoolean + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 149 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchUInt32 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 159 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/doSwitchUInt32 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 160 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $switch/doSwitchUInt32 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $switch/doSwitchUInt32 + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + call $switch/doSwitchUInt32 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 163 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $switch/Foo.A + call $switch/doSwitchEnum + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 180 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $switch/Foo.B + call $switch/doSwitchEnum + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 181 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $switch/Foo.C + call $switch/doSwitchEnum + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 182 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $switch/Foo.D + call $switch/doSwitchEnum + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchUint8 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 193 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/doSwitchUint8 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 194 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $switch/doSwitchUint8 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 195 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $switch/doSwitchUint8 + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 196 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + call $switch/doSwitchUint8 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 197 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $switch/doSwitchFloat + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 206 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 1 + call $switch/doSwitchFloat + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 207 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f32.const 2 + call $switch/doSwitchFloat + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 208 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + call $switch/doSwitchInt64 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 217 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + call $switch/doSwitchInt64 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 218 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + call $switch/doSwitchInt64 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 219 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + call $switch/doSwitchUInt64 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 230 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + call $switch/doSwitchUInt64 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 231 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 2 + call $switch/doSwitchUInt64 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 232 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + call $switch/FooClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassMember + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 251 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + call $switch/FooClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassMember + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 252 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 3 + call $switch/FooClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassMember + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 253 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + call $switch/FooClass#constructor + global.set $switch/foo1 + i32.const 0 + i32.const 2 + call $switch/FooClass#constructor + global.set $switch/foo2 + global.get $switch/foo1 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassInstance + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 266 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $switch/foo2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassInstance + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 267 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + call $switch/FooClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassInstance + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 268 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchClassInstanceWithOverload + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 293 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + call $switch/BarClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassInstanceWithOverload + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 294 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + call $switch/BarClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassInstanceWithOverload + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 295 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 3 + call $switch/BarClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassInstanceWithOverload + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 296 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $switch/doSwitchClassInstance (param $foo i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/memory/__stack_pointer + local.get $foo + local.tee $1 + i32.store + local.get $1 + global.get $switch/foo1 + i32.eq + br_if $case0|0 + local.get $1 + global.get $switch/foo2 + i32.eq + br_if $case1|0 + br $case2|0 + end + i32.const 1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 2 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 3 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) +) diff --git a/tests/compiler/switch.json b/tests/compiler/switch.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/switch.json +++ b/tests/compiler/switch.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/switch.optimized.wat b/tests/compiler/switch.optimized.wat deleted file mode 100644 index 03c10321f8..0000000000 --- a/tests/compiler/switch.optimized.wat +++ /dev/null @@ -1,400 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s") - (export "memory" (memory $0)) - (start $~start) - (func $switch/doSwitch (param $0 i32) (result i32) - block $case4|0 - block $case2|0 - local.get $0 - i32.const 1 - i32.ne - if - local.get $0 - i32.eqz - br_if $case2|0 - local.get $0 - i32.const 2 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.or - br_if $case4|0 - br $case2|0 - end - i32.const 1 - return - end - i32.const 0 - return - end - i32.const 23 - ) - (func $switch/doSwitchDefaultOmitted (param $0 i32) (result i32) - block $break|0 - block $case2|0 - local.get $0 - i32.const 1 - i32.ne - if - local.get $0 - i32.const 2 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.or - br_if $case2|0 - br $break|0 - end - i32.const 1 - return - end - i32.const 23 - return - end - i32.const 0 - ) - (func $switch/doSwitchBreakCase (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.ne - if - i32.const 2 - return - end - i32.const 1 - ) - (func $switch/doSwitchBreakDefault (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.eq - if - i32.const 1 - return - end - i32.const 2 - ) - (func $start:switch - i32.const 0 - call $switch/doSwitch - if - i32.const 0 - i32.const 1040 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitch - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitch - i32.const 23 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $switch/doSwitch - i32.const 23 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $switch/doSwitch - if - i32.const 0 - i32.const 1040 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitch - if - i32.const 0 - i32.const 1040 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitch - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitch - i32.const 23 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $switch/doSwitch - i32.const 23 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $switch/doSwitch - if - i32.const 0 - i32.const 1040 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchDefaultOmitted - if - i32.const 0 - i32.const 1040 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchDefaultOmitted - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchDefaultOmitted - i32.const 23 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $switch/doSwitchDefaultOmitted - i32.const 23 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $switch/doSwitchDefaultOmitted - if - i32.const 0 - i32.const 1040 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchBreakCase - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchBreakCase - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchBreakCase - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 53 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchBreakDefault - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchBreakDefault - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchBreakDefault - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchBreakCase - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchBreakCase - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 74 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchBreakCase - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 75 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchBreakDefault - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchBreakDefault - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 85 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchBreakDefault - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 86 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:switch - ) -) diff --git a/tests/compiler/switch.release.wat b/tests/compiler/switch.release.wat new file mode 100644 index 0000000000..2b5172a5ea --- /dev/null +++ b/tests/compiler/switch.release.wat @@ -0,0 +1,2969 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $switch/foo1 (mut i32) (i32.const 0)) + (global $switch/foo2 (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34732)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s") + (data $1 (i32.const 1084) "\1c") + (data $1.1 (i32.const 1096) "\02\00\00\00\06\00\00\00o\00n\00e") + (data $2 (i32.const 1116) "\1c") + (data $2.1 (i32.const 1128) "\02\00\00\00\06\00\00\00t\00w\00o") + (data $3 (i32.const 1148) "\1c") + (data $3.1 (i32.const 1160) "\02\00\00\00\n\00\00\00t\00h\00r\00e\00e") + (data $4 (i32.const 1180) "\1c") + (data $4.1 (i32.const 1192) "\02\00\00\00\08\00\00\00f\00o\00u\00r") + (data $5 (i32.const 1212) "\1c") + (data $5.1 (i32.const 1224) "\02\00\00\00\02\00\00\00o") + (data $6 (i32.const 1244) "\1c") + (data $6.1 (i32.const 1256) "\02\00\00\00\02\00\00\00n") + (data $7 (i32.const 1276) "\1c") + (data $7.1 (i32.const 1288) "\02") + (data $8 (i32.const 1308) "<") + (data $8.1 (i32.const 1320) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $9 (i32.const 1372) "<") + (data $9.1 (i32.const 1384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $12 (i32.const 1500) "<") + (data $12.1 (i32.const 1512) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $13 (i32.const 1564) ",") + (data $13.1 (i32.const 1576) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $15 (i32.const 1644) "<") + (data $15.1 (i32.const 1656) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $16 (i32.const 1708) "\1c") + (data $16.1 (i32.const 1720) "\02\00\00\00\02\00\00\00e") + (data $17 (i32.const 1740) "\1c") + (data $17.1 (i32.const 1752) "\02\00\00\00\02\00\00\00t") + (data $18 (i32.const 1772) "\1c") + (data $18.1 (i32.const 1784) "\02\00\00\00\02\00\00\00w") + (data $19 (i32.const 1804) "\1c") + (data $19.1 (i32.const 1816) "\02\00\00\00\02\00\00\00h") + (data $20 (i32.const 1836) "\1c") + (data $20.1 (i32.const 1848) "\02\00\00\00\02\00\00\00r") + (data $21 (i32.const 1868) "\1c") + (data $21.1 (i32.const 1880) "\02\00\00\00\02\00\00\00f") + (data $22 (i32.const 1900) "\1c") + (data $22.1 (i32.const 1912) "\02\00\00\00\02\00\00\00u") + (data $23 (i32.const 1936) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $switch/foo1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $switch/foo2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1520 + call $~lib/rt/itcms/__visit + i32.const 1328 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$186 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34732 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$186 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1936 + i32.load + i32.gt_u + if + i32.const 1520 + i32.const 1584 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1940 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1664 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1664 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1664 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1664 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1664 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1664 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34736 + i32.const 0 + i32.store + i32.const 36304 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34736 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34736 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34736 + i32.const 36308 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34736 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34732 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34732 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34732 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1664 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1328 + i32.const 1392 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1328 + i32.const 1664 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + memory.size + local.tee $2 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1664 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1664 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $switch/BarClass + block $switch/FooClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $switch/FooClass $switch/BarClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:switch + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$76 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$76 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $switch/doSwitchString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $0 + i32.const 1104 + call $~lib/string/String.__eq + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1136 + call $~lib/string/String.__eq + br_if $case1|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1168 + call $~lib/string/String.__eq + br_if $case2|0 + br $case3|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$191 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1296 + local.set $0 + br $__inlined_func$~lib/string/String#concat$191 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $switch/doSwitchNullableString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1104 + call $~lib/string/String.__eq + br_if $case1|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1136 + call $~lib/string/String.__eq + br_if $case2|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1168 + call $~lib/string/String.__eq + br_if $case3|0 + br $case4|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4 + ) + (func $switch/FooClass#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $switch/doSwitchClassMember (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $case2|0 + block $case1|0 + local.get $0 + i32.load + local.tee $0 + i32.const 1 + i32.ne + if + local.get $0 + i32.const 2 + i32.eq + br_if $case1|0 + br $case2|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + ) + (func $switch/BarClass.__eq (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $switch/BarClass#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $switch/doSwitchClassInstanceWithOverload (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $0 + i32.const 0 + call $switch/BarClass.__eq + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + call $switch/BarClass#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $switch/BarClass.__eq + br_if $case1|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 2 + call $switch/BarClass#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $switch/BarClass.__eq + br_if $case2|0 + br $case3|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + ) + (func $start:switch + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 1104 + call $switch/doSwitchString + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1136 + call $switch/doSwitchString + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1168 + call $switch/doSwitchString + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1200 + call $switch/doSwitchString + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 34732 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/pinSpace + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/toSpace + i32.const 1620 + i32.const 1616 + i32.store + i32.const 1624 + i32.const 1616 + i32.store + i32.const 1616 + global.set $~lib/rt/itcms/fromSpace + i32.const 1232 + i32.const 1264 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1728 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchString + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1760 + i32.const 1792 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1232 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchString + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1760 + i32.const 1824 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 1856 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1728 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1728 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchString + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1888 + i32.const 1232 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1920 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1856 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchString + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchNullableString + if + i32.const 0 + i32.const 1056 + i32.const 128 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1104 + call $switch/doSwitchNullableString + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 129 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1136 + call $switch/doSwitchNullableString + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 130 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1168 + call $switch/doSwitchNullableString + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1200 + call $switch/doSwitchNullableString + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 132 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1232 + i32.const 1264 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1728 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchNullableString + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 135 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1760 + i32.const 1792 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1232 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchNullableString + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 136 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1760 + i32.const 1824 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 1856 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1728 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1728 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchNullableString + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1888 + i32.const 1232 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1920 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1856 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchNullableString + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 138 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/FooClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassMember + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 251 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $switch/FooClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassMember + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 252 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $switch/FooClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassMember + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 253 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/FooClass#constructor + global.set $switch/foo1 + i32.const 2 + call $switch/FooClass#constructor + global.set $switch/foo2 + global.get $~lib/memory/__stack_pointer + global.get $switch/foo1 + local.tee $0 + i32.store + local.get $0 + call $switch/doSwitchClassInstance + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 266 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $switch/foo2 + local.tee $0 + i32.store + local.get $0 + call $switch/doSwitchClassInstance + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 267 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/FooClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassInstance + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 268 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $switch/doSwitchClassInstanceWithOverload + if + i32.const 0 + i32.const 1056 + i32.const 293 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $switch/BarClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassInstanceWithOverload + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 294 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $switch/BarClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassInstanceWithOverload + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 295 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + call $switch/BarClass#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $switch/doSwitchClassInstanceWithOverload + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 296 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $switch/doSwitchClassInstance (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $case2|0 + block $case1|0 + global.get $switch/foo1 + local.get $0 + i32.ne + if + local.get $0 + global.get $switch/foo2 + i32.eq + br_if $case1|0 + br $case2|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + ) +) diff --git a/tests/compiler/switch.ts b/tests/compiler/switch.ts index bd73eb7051..11167dc19f 100644 --- a/tests/compiler/switch.ts +++ b/tests/compiler/switch.ts @@ -21,11 +21,11 @@ function doSwitchDefaultFirst(n: i32): i32 { case 3: return 23; } } -assert(doSwitch(0) == 0); -assert(doSwitch(1) == 1); -assert(doSwitch(2) == 23); -assert(doSwitch(3) == 23); -assert(doSwitch(4) == 0); +assert(doSwitchDefaultFirst(0) == 0); +assert(doSwitchDefaultFirst(1) == 1); +assert(doSwitchDefaultFirst(2) == 23); +assert(doSwitchDefaultFirst(3) == 23); +assert(doSwitchDefaultFirst(4) == 0); function doSwitchDefaultOmitted(n: i32): i32 { switch (n) { @@ -92,3 +92,205 @@ function doSwitchEmpty(n: i32): i32 { assert(doSwitchEmpty(0) == 2); assert(doSwitchEmpty(1) == 2); assert(doSwitchEmpty(2) == 2); + +function doSwitchString(s: string): i32 { + switch (s) { + case "one": return 1; + case "two": return 2; + case "three": return 3; + default: return 4; + } +} + +// these will pass regardless of whether the comparison is done by value or reference +assert(doSwitchString("one") == 1); +assert(doSwitchString("two") == 2); +assert(doSwitchString("three") == 3); +assert(doSwitchString("four") == 4); + +// these would fail if the comparison was done by reference +assert(doSwitchString("o" + "n" + "e") == 1); +assert(doSwitchString("t" + "w" + "o") == 2); +assert(doSwitchString("t" + "h" + "r" + "e" + "e") == 3); +assert(doSwitchString("f" + "o" + "u" + "r") == 4); + +function doSwitchNullableString(s: string | null): i32 { + switch (s) { + case null: return 0; + case "one": return 1; + case "two": return 2; + case "three": return 3; + default: return 4; + } +} + +// these will pass regardless of whether the comparison is done by value or reference +assert(doSwitchNullableString(null) == 0); +assert(doSwitchNullableString("one") == 1); +assert(doSwitchNullableString("two") == 2); +assert(doSwitchNullableString("three") == 3); +assert(doSwitchNullableString("four") == 4); + +// these would fail if the comparison was done by reference +assert(doSwitchNullableString("o" + "n" + "e") == 1); +assert(doSwitchNullableString("t" + "w" + "o") == 2); +assert(doSwitchNullableString("t" + "h" + "r" + "e" + "e") == 3); +assert(doSwitchNullableString("f" + "o" + "u" + "r") == 4); + +function doSwitchBoolean(b: bool): i32 { + switch (b) { + case true: return 1; + case false: return 2; + } + return 0; +} + +assert(doSwitchBoolean(true) == 1); +assert(doSwitchBoolean(false) == 2); + +function doSwitchUInt32(n: u32): i32 { + switch (n) { + case 1: return 1; + case 2: return 2; + case 3: return 3; + default: return 0; + } +} +assert(doSwitchUInt32(0) == 0); +assert(doSwitchUInt32(1) == 1); +assert(doSwitchUInt32(2) == 2); +assert(doSwitchUInt32(3) == 3); +assert(doSwitchUInt32(4) == 0); + +enum Foo { + A = 1, + B = 2, + C = 3, + D = 4, +} + +function doSwitchEnum(n: Foo): i32 { + switch (n) { + case Foo.A: return 1; + case Foo.B: return 2; + case Foo.C: return 3; + default: return 0; + } +} +assert(doSwitchEnum(Foo.A) == 1); +assert(doSwitchEnum(Foo.B) == 2); +assert(doSwitchEnum(Foo.C) == 3); +assert(doSwitchEnum(Foo.D) == 0); + +function doSwitchUint8(n: u8): i32 { + switch (n) { + case 1: return 1; + case 2: return 2; + case 3: return 3; + default: return 0; + } +} +assert(doSwitchUint8(0) == 0); +assert(doSwitchUint8(1) == 1); +assert(doSwitchUint8(2) == 2); +assert(doSwitchUint8(3) == 3); +assert(doSwitchUint8(4) == 0); + +function doSwitchFloat(n: f32): i32 { + switch (n) { + case 1.0: return 1; + case 2.0: return 2; + default: return 0; + } +} +assert(doSwitchFloat(0.0) == 0); +assert(doSwitchFloat(1.0) == 1); +assert(doSwitchFloat(2.0) == 2); + +function doSwitchInt64(n: i64): i32 { + switch (n) { + case (1): return 1; + case (2): return 2; + default: return 0; + } +} +assert(doSwitchInt64(0) == 0); +assert(doSwitchInt64(1) == 1); +assert(doSwitchInt64(2) == 2); + +function doSwitchUInt64(n: u64): i32 { + const one: u64 = 1; + const two: u64 = 2; + switch (n) { + case one: return 1; + case two: return 2; + default: return 0; + } +} +assert(doSwitchUInt64(0) == 0); +assert(doSwitchUInt64(1) == 1); +assert(doSwitchUInt64(2) == 2); + + +// class members should switch like any other expression +class FooClass { + value: i32; + + constructor(value: i32) { + this.value = value; + } +} + +function doSwitchClassMember(foo: FooClass): i32 { + switch (foo.value) { + case 1: return 1; + case 2: return 2; + default: return 3; + } +} +assert(doSwitchClassMember(new FooClass(1)) == 1); +assert(doSwitchClassMember(new FooClass(2)) == 2); +assert(doSwitchClassMember(new FooClass(3)) == 3); + + +// class instances switch using reference equality by default +const foo1 = new FooClass(1); +const foo2 = new FooClass(2); +function doSwitchClassInstance(foo: FooClass): i32 { + switch (foo) { + case foo1: return 1; + case foo2: return 2; + default: return 3; + } +} +assert(doSwitchClassInstance(foo1) == 1); +assert(doSwitchClassInstance(foo2) == 2); +assert(doSwitchClassInstance(new FooClass(1)) == 3); + +// class instances can switch using value equality with an operator overload +class BarClass { + value: i32; + + constructor(value: i32) { + this.value = value; + } + + @operator("==") private static __eq(left: BarClass | null, right: BarClass | null): bool { + if (changetype(left) == changetype(right)) return true; + if (!left || !right) return false; + return left.value == right.value; + } +} + +function doSwitchClassInstanceWithOverload(foo: BarClass | null): i32 { + switch (foo) { + case null: return 0; + case new BarClass(1): return 1; + case new BarClass(2): return 2; + default: return 3; + } +} +assert(doSwitchClassInstanceWithOverload(null) == 0); +assert(doSwitchClassInstanceWithOverload(new BarClass(1)) == 1); +assert(doSwitchClassInstanceWithOverload(new BarClass(2)) == 2); +assert(doSwitchClassInstanceWithOverload(new BarClass(3)) == 3); diff --git a/tests/compiler/switch.untouched.wat b/tests/compiler/switch.untouched.wat deleted file mode 100644 index bfd0176246..0000000000 --- a/tests/compiler/switch.untouched.wat +++ /dev/null @@ -1,554 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s\00") - (table $0 1 funcref) - (export "memory" (memory $0)) - (start $~start) - (func $switch/doSwitch (param $0 i32) (result i32) - (local $1 i32) - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $0 - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $1 - i32.const 0 - i32.eq - br_if $case1|0 - local.get $1 - i32.const 2 - i32.eq - br_if $case3|0 - local.get $1 - i32.const 3 - i32.eq - br_if $case4|0 - br $case2|0 - end - i32.const 1 - return - end - end - i32.const 0 - return - end - end - i32.const 23 - return - ) - (func $switch/doSwitchDefaultOmitted (param $0 i32) (result i32) - (local $1 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $0 - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $1 - i32.const 3 - i32.eq - br_if $case2|0 - br $break|0 - end - i32.const 1 - return - end - end - i32.const 23 - return - end - i32.const 0 - ) - (func $switch/doSwitchBreakCase (param $0 i32) (result i32) - (local $1 i32) - block $break|0 - block $case1|0 - block $case0|0 - local.get $0 - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case0|0 - br $case1|0 - end - br $break|0 - end - i32.const 2 - return - end - i32.const 1 - ) - (func $switch/doSwitchBreakDefault (param $0 i32) (result i32) - (local $1 i32) - block $break|0 - block $case1|0 - block $case0|0 - local.get $0 - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case0|0 - br $case1|0 - end - i32.const 1 - return - end - br $break|0 - end - i32.const 2 - ) - (func $switch/doSwitchFallThroughCase (param $0 i32) (result i32) - (local $1 i32) - block $case1|0 - block $case0|0 - local.get $0 - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case1|0 - br $case0|0 - end - i32.const 2 - return - end - i32.const 1 - ) - (func $switch/doSwitchFallThroughDefault (param $0 i32) (result i32) - (local $1 i32) - block $case1|0 - block $case0|0 - local.get $0 - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case0|0 - br $case1|0 - end - i32.const 1 - return - end - i32.const 2 - ) - (func $switch/doSwitchEmpty (param $0 i32) (result i32) - local.get $0 - drop - i32.const 2 - ) - (func $start:switch - i32.const 0 - call $switch/doSwitch - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitch - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitch - i32.const 23 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $switch/doSwitch - i32.const 23 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $switch/doSwitch - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitch - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitch - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitch - i32.const 23 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $switch/doSwitch - i32.const 23 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $switch/doSwitch - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchDefaultOmitted - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchDefaultOmitted - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchDefaultOmitted - i32.const 23 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - call $switch/doSwitchDefaultOmitted - i32.const 23 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - call $switch/doSwitchDefaultOmitted - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchBreakCase - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchBreakCase - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchBreakCase - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 53 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchBreakDefault - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchBreakDefault - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchBreakDefault - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchFallThroughCase - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchFallThroughCase - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 74 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchFallThroughCase - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 75 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchFallThroughDefault - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 84 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchFallThroughDefault - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 85 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchFallThroughDefault - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 86 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $switch/doSwitchEmpty - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $switch/doSwitchEmpty - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 93 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $switch/doSwitchEmpty - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 94 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:switch - ) -) diff --git a/tests/compiler/tablebase.debug.wat b/tests/compiler/tablebase.debug.wat new file mode 100644 index 0000000000..be867f2190 --- /dev/null +++ b/tests/compiler/tablebase.debug.wat @@ -0,0 +1,78 @@ +(module + (type $0 (func)) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $tablebase/staticFunction i32 (i32.const 32)) + (global $~lib/native/ASC_TABLE_BASE i32 (i32.const 32)) + (global $~lib/memory/__data_end i32 (i32.const 92)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32860)) + (global $~lib/memory/__heap_base i32 (i32.const 32860)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s\00\00\00\00\00") + (table $0 33 33 funcref) + (elem $0 (i32.const 32) $tablebase/foo) + (export "memory" (memory $0)) + (start $~start) + (func $tablebase/foo + ) + (func $~lib/function/Function<%28%29=>void>#get:index (param $this i32) (result i32) + local.get $this + i32.load + return + ) + (func $~start + call $start:tablebase + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 32880 + i32.const 32928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:tablebase + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 32 + i32.const 32 + i32.eq + drop + global.get $tablebase/staticFunction + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/function/Function<%28%29=>void>#get:index + i32.const 32 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/tablebase.json b/tests/compiler/tablebase.json index 03526388ff..3e8ac20bfe 100644 --- a/tests/compiler/tablebase.json +++ b/tests/compiler/tablebase.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--tableBase 32" ] -} \ No newline at end of file +} diff --git a/tests/compiler/tablebase.optimized.wat b/tests/compiler/tablebase.optimized.wat deleted file mode 100644 index f786312187..0000000000 --- a/tests/compiler/tablebase.optimized.wat +++ /dev/null @@ -1,24 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00 ") - (data (i32.const 1056) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s") - (export "memory" (memory $0)) - (start $~start) - (func $~start - i32.const 1040 - i32.load - i32.const 32 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) -) diff --git a/tests/compiler/tablebase.release.wat b/tests/compiler/tablebase.release.wat new file mode 100644 index 0000000000..6ed678709b --- /dev/null +++ b/tests/compiler/tablebase.release.wat @@ -0,0 +1,52 @@ +(module + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33884)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00 ") + (data $1 (i32.const 1068) ",") + (data $1.1 (i32.const 1080) "\02\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s") + (export "memory" (memory $0)) + (start $~start) + (func $~start + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1116 + i32.lt_s + if + i32.const 33904 + i32.const 33952 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.load + i32.const 32 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/tablebase.untouched.wat b/tests/compiler/tablebase.untouched.wat deleted file mode 100644 index f62ea6e078..0000000000 --- a/tests/compiler/tablebase.untouched.wat +++ /dev/null @@ -1,44 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00 \00\00\00\00\00\00\00") - (data (i32.const 48) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s\00") - (table $0 33 funcref) - (elem (i32.const 32) $tablebase/foo) - (global $tablebase/staticFunction i32 (i32.const 32)) - (global $~lib/ASC_TABLE_BASE i32 (i32.const 32)) - (export "memory" (memory $0)) - (start $~start) - (func $tablebase/foo - nop - ) - (func $~lib/function/Function<%28%29=>void>#get:index (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $start:tablebase - i32.const 32 - i32.const 32 - i32.eq - drop - global.get $tablebase/staticFunction - call $~lib/function/Function<%28%29=>void>#get:index - i32.const 32 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 6 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - call $start:tablebase - ) -) diff --git a/tests/compiler/templateliteral.debug.wat b/tests/compiler/templateliteral.debug.wat new file mode 100644 index 0000000000..ace4b98b35 --- /dev/null +++ b/tests/compiler/templateliteral.debug.wat @@ -0,0 +1,6454 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i64) (result i32))) + (type $10 (func (result i32))) + (type $11 (func (param i32 i64 i32))) + (type $12 (func (param i64 i32) (result i32))) + (type $13 (func (param i32 i64 i32 i32))) + (type $14 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $15 (func (param i32 f64 i32) (result i32))) + (type $16 (func (param f64 i32) (result i32))) + (type $17 (func (param f64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 4848)) + (global $~lib/memory/__data_end i32 (i32.const 4880)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37648)) + (global $~lib/memory/__heap_base i32 (i32.const 37648)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00t\00e\00m\00p\00l\00a\00t\00e\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 172) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 336) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 364) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 428) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00(\00A\00=\00\00\00\00\00\00\00") + (data $14 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00,\00 \00B\00=\00\00\00\00\00") + (data $15 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 700) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 748) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00(\00A\00=\00a\00,\00 \00B\00=\00b\00)\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 796) "|\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 924) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data $20 (i32.const 988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 1020) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data $22 (i32.const 1420) "\1c\04\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 2476) "\\\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data $24 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\04\00\00\001\002\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 2636) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 2684) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00(\00A\00=\001\00,\00 \00B\00=\002\00)\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data $29 (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data $30 (i32.const 2796) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 2844) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 2896) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 2952) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#__uset (param $this i32) (param $index i32) (param $value i32) + local.get $this + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 2 + i32.shr_u + return + ) + (func $~lib/util/number/decimalCount32 (param $value i32) (result i32) + local.get $value + i32.const 100000 + i32.lt_u + if + local.get $value + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $value + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $value + i32.const 10000 + i32.ge_u + i32.add + local.get $value + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $value + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $value + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $value + i32.const 1000000000 + i32.ge_u + i32.add + local.get $value + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $buffer i32) (param $num i32) (param $offset i32) + (local $t i32) + (local $r i32) + (local $d1 i32) + (local $d2 i32) + (local $digits1 i64) + (local $digits2 i64) + (local $t|9 i32) + (local $d1|10 i32) + (local $digits i32) + (local $digits|12 i32) + (local $digit i32) + loop $while-continue|0 + local.get $num + i32.const 10000 + i32.ge_u + if + local.get $num + i32.const 10000 + i32.div_u + local.set $t + local.get $num + i32.const 10000 + i32.rem_u + local.set $r + local.get $t + local.set $num + local.get $r + i32.const 100 + i32.div_u + local.set $d1 + local.get $r + i32.const 100 + i32.rem_u + local.set $d2 + i32.const 1020 + local.get $d1 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits1 + i32.const 1020 + local.get $d2 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $digits2 + local.get $offset + i32.const 4 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits1 + local.get $digits2 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $num + i32.const 100 + i32.ge_u + if + local.get $num + i32.const 100 + i32.div_u + local.set $t|9 + local.get $num + i32.const 100 + i32.rem_u + local.set $d1|10 + local.get $t|9 + local.set $num + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 1020 + local.get $d1|10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits + i32.store + end + local.get $num + i32.const 10 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + i32.const 1020 + local.get $num + i32.const 2 + i32.shl + i32.add + i32.load + local.set $digits|12 + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digits|12 + i32.store + else + local.get $offset + i32.const 1 + i32.sub + local.set $offset + i32.const 48 + local.get $num + i32.add + local.set $digit + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $digit + i32.store16 + end + ) + (func $~lib/util/number/utoa_hex_lut (param $buffer i32) (param $num i64) (param $offset i32) + loop $while-continue|0 + local.get $offset + i32.const 2 + i32.ge_u + if + local.get $offset + i32.const 2 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 1440 + local.get $num + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $num + i64.const 8 + i64.shr_u + local.set $num + br $while-continue|0 + end + end + local.get $offset + i32.const 1 + i32.and + if + local.get $buffer + i32.const 1440 + local.get $num + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end + ) + (func $~lib/util/number/ulog_base (param $num i64) (param $base i32) (result i32) + (local $value i32) + (local $b64 i64) + (local $b i64) + (local $e i32) + block $~lib/util/number/isPowerOf2|inlined.0 (result i32) + local.get $base + local.set $value + local.get $value + i32.popcnt + i32.const 1 + i32.eq + br $~lib/util/number/isPowerOf2|inlined.0 + end + if + i32.const 63 + local.get $num + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $base + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + return + end + local.get $base + i64.extend_i32_s + local.set $b64 + local.get $b64 + local.set $b + i32.const 1 + local.set $e + loop $while-continue|0 + local.get $num + local.get $b + i64.ge_u + if + local.get $num + local.get $b + i64.div_u + local.set $num + local.get $b + local.get $b + i64.mul + local.set $b + local.get $e + i32.const 1 + i32.shl + local.set $e + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $num + i64.const 1 + i64.ge_u + if + local.get $num + local.get $b64 + i64.div_u + local.set $num + local.get $e + i32.const 1 + i32.add + local.set $e + br $while-continue|1 + end + end + local.get $e + i32.const 1 + i32.sub + return + ) + (func $~lib/util/number/utoa64_any_core (param $buffer i32) (param $num i64) (param $offset i32) (param $radix i32) + (local $base i64) + (local $shift i64) + (local $mask i64) + (local $q i64) + local.get $radix + i64.extend_i32_s + local.set $base + local.get $radix + local.get $radix + i32.const 1 + i32.sub + i32.and + i32.const 0 + i32.eq + if + local.get $radix + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $shift + local.get $base + i64.const 1 + i64.sub + local.set $mask + loop $do-loop|0 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2496 + local.get $num + local.get $mask + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $num + local.get $shift + i64.shr_u + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|0 + end + else + loop $do-loop|1 + local.get $offset + i32.const 1 + i32.sub + local.set $offset + local.get $num + local.get $base + i64.div_u + local.set $q + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + i32.const 2496 + local.get $num + local.get $q + local.get $base + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $q + local.set $num + local.get $num + i64.const 0 + i64.ne + br_if $do-loop|1 + end + end + ) + (func $~lib/number/I32#toString (param $this i32) (param $radix i32) (result i32) + local.get $this + local.get $radix + call $~lib/util/number/itoa32 + return + ) + (func $~lib/util/number/genDigits (param $buffer i32) (param $w_frc i64) (param $w_exp i32) (param $mp_frc i64) (param $mp_exp i32) (param $delta i64) (param $sign i32) (result i32) + (local $one_exp i32) + (local $one_frc i64) + (local $mask i64) + (local $wp_w_frc i64) + (local $p1 i32) + (local $p2 i64) + (local $kappa i32) + (local $len i32) + (local $d i32) + (local $16 i32) + (local $17 i32) + (local $tmp i64) + (local $buffer|19 i32) + (local $len|20 i32) + (local $delta|21 i64) + (local $rest i64) + (local $ten_kappa i64) + (local $wp_w i64) + (local $lastp i32) + (local $digit i32) + (local $d|27 i64) + (local $28 i32) + (local $buffer|29 i32) + (local $len|30 i32) + (local $delta|31 i64) + (local $rest|32 i64) + (local $ten_kappa|33 i64) + (local $wp_w|34 i64) + (local $lastp|35 i32) + (local $digit|36 i32) + i32.const 0 + local.get $mp_exp + i32.sub + local.set $one_exp + i64.const 1 + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $one_frc + local.get $one_frc + i64.const 1 + i64.sub + local.set $mask + local.get $mp_frc + local.get $w_frc + i64.sub + local.set $wp_w_frc + local.get $mp_frc + local.get $one_exp + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.set $p1 + local.get $mp_frc + local.get $mask + i64.and + local.set $p2 + local.get $p1 + call $~lib/util/number/decimalCount32 + local.set $kappa + local.get $sign + local.set $len + loop $while-continue|0 + local.get $kappa + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $kappa + local.set $16 + local.get $16 + i32.const 10 + i32.eq + br_if $case0|1 + local.get $16 + i32.const 9 + i32.eq + br_if $case1|1 + local.get $16 + i32.const 8 + i32.eq + br_if $case2|1 + local.get $16 + i32.const 7 + i32.eq + br_if $case3|1 + local.get $16 + i32.const 6 + i32.eq + br_if $case4|1 + local.get $16 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $16 + i32.const 4 + i32.eq + br_if $case6|1 + local.get $16 + i32.const 3 + i32.eq + br_if $case7|1 + local.get $16 + i32.const 2 + i32.eq + br_if $case8|1 + local.get $16 + i32.const 1 + i32.eq + br_if $case9|1 + br $case10|1 + end + local.get $p1 + i32.const 1000000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100000 + i32.div_u + local.set $d + local.get $p1 + i32.const 100000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10000 + i32.div_u + local.set $d + local.get $p1 + i32.const 10000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 1000 + i32.div_u + local.set $d + local.get $p1 + i32.const 1000 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 100 + i32.div_u + local.set $d + local.get $p1 + i32.const 100 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + i32.const 10 + i32.div_u + local.set $d + local.get $p1 + i32.const 10 + i32.rem_u + local.set $p1 + br $break|1 + end + local.get $p1 + local.set $d + i32.const 0 + local.set $p1 + br $break|1 + end + i32.const 0 + local.set $d + br $break|1 + end + local.get $d + local.get $len + i32.or + if + local.get $buffer + local.get $len + local.tee $17 + i32.const 1 + i32.add + local.set $len + local.get $17 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p1 + i64.extend_i32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.get $p2 + i64.add + local.set $tmp + local.get $tmp + local.get $delta + i64.le_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $buffer + local.set $buffer|19 + local.get $len + local.set $len|20 + local.get $delta + local.set $delta|21 + local.get $tmp + local.set $rest + i32.const 3824 + local.get $kappa + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $one_exp + i64.extend_i32_s + i64.shl + local.set $ten_kappa + local.get $wp_w_frc + local.set $wp_w + local.get $buffer|19 + local.get $len|20 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp + local.get $lastp + i32.load16_u + local.set $digit + loop $while-continue|3 + local.get $rest + local.get $wp_w + i64.lt_u + if (result i32) + local.get $delta|21 + local.get $rest + i64.sub + local.get $ten_kappa + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w + local.get $rest + i64.sub + local.get $rest + local.get $ten_kappa + i64.add + local.get $wp_w + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit + i32.const 1 + i32.sub + local.set $digit + local.get $rest + local.get $ten_kappa + i64.add + local.set $rest + br $while-continue|3 + end + end + local.get $lastp + local.get $digit + i32.store16 + local.get $len + return + end + br $while-continue|0 + end + end + loop $while-continue|4 + i32.const 1 + if + local.get $p2 + i64.const 10 + i64.mul + local.set $p2 + local.get $delta + i64.const 10 + i64.mul + local.set $delta + local.get $p2 + local.get $one_exp + i64.extend_i32_s + i64.shr_u + local.set $d|27 + local.get $d|27 + local.get $len + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $buffer + local.get $len + local.tee $28 + i32.const 1 + i32.add + local.set $len + local.get $28 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $d|27 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $p2 + local.get $mask + i64.and + local.set $p2 + local.get $kappa + i32.const 1 + i32.sub + local.set $kappa + local.get $p2 + local.get $delta + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $kappa + i32.add + global.set $~lib/util/number/_K + local.get $wp_w_frc + i32.const 3824 + i32.const 0 + local.get $kappa + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $wp_w_frc + local.get $buffer + local.set $buffer|29 + local.get $len + local.set $len|30 + local.get $delta + local.set $delta|31 + local.get $p2 + local.set $rest|32 + local.get $one_frc + local.set $ten_kappa|33 + local.get $wp_w_frc + local.set $wp_w|34 + local.get $buffer|29 + local.get $len|30 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $lastp|35 + local.get $lastp|35 + i32.load16_u + local.set $digit|36 + loop $while-continue|6 + local.get $rest|32 + local.get $wp_w|34 + i64.lt_u + if (result i32) + local.get $delta|31 + local.get $rest|32 + i64.sub + local.get $ten_kappa|33 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $wp_w|34 + local.get $rest|32 + i64.sub + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.get $wp_w|34 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + if + local.get $digit|36 + i32.const 1 + i32.sub + local.set $digit|36 + local.get $rest|32 + local.get $ten_kappa|33 + i64.add + local.set $rest|32 + br $while-continue|6 + end + end + local.get $lastp|35 + local.get $digit|36 + i32.store16 + local.get $len + return + end + br $while-continue|4 + end + end + unreachable + ) + (func $~lib/util/number/prettify (param $buffer i32) (param $length i32) (param $k i32) (result i32) + (local $kk i32) + (local $i i32) + (local $ptr i32) + (local $offset i32) + (local $i|7 i32) + (local $buffer|8 i32) + (local $k|9 i32) + (local $sign i32) + (local $decimals i32) + (local $buffer|12 i32) + (local $num i32) + (local $offset|14 i32) + (local $len i32) + (local $buffer|16 i32) + (local $k|17 i32) + (local $sign|18 i32) + (local $decimals|19 i32) + (local $buffer|20 i32) + (local $num|21 i32) + (local $offset|22 i32) + local.get $k + i32.eqz + if + local.get $buffer + local.get $length + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $length + i32.const 2 + i32.add + return + end + local.get $length + local.get $k + i32.add + local.set $kk + local.get $length + local.get $kk + i32.le_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $length + local.set $i + loop $for-loop|0 + local.get $i + local.get $kk + i32.lt_s + if + local.get $buffer + local.get $i + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.const 48 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $kk + i32.const 2 + i32.add + return + else + local.get $kk + i32.const 0 + i32.gt_s + if (result i32) + local.get $kk + i32.const 21 + i32.le_s + else + i32.const 0 + end + if + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + local.set $ptr + local.get $ptr + i32.const 2 + i32.add + local.get $ptr + i32.const 0 + local.get $k + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $buffer + local.get $kk + i32.const 1 + i32.shl + i32.add + i32.const 46 + i32.store16 + local.get $length + i32.const 1 + i32.add + return + else + i32.const -6 + local.get $kk + i32.lt_s + if (result i32) + local.get $kk + i32.const 0 + i32.le_s + else + i32.const 0 + end + if + i32.const 2 + local.get $kk + i32.sub + local.set $offset + local.get $buffer + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $buffer + local.get $length + i32.const 1 + i32.shl + memory.copy + local.get $buffer + i32.const 48 + i32.const 46 + i32.const 16 + i32.shl + i32.or + i32.store + i32.const 2 + local.set $i|7 + loop $for-loop|1 + local.get $i|7 + local.get $offset + i32.lt_s + if + local.get $buffer + local.get $i|7 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $i|7 + i32.const 1 + i32.add + local.set $i|7 + br $for-loop|1 + end + end + local.get $length + local.get $offset + i32.add + return + else + local.get $length + i32.const 1 + i32.eq + if + local.get $buffer + i32.const 101 + i32.store16 offset=2 + block $~lib/util/number/genExponent|inlined.0 (result i32) + local.get $buffer + i32.const 4 + i32.add + local.set $buffer|8 + local.get $kk + i32.const 1 + i32.sub + local.set $k|9 + local.get $k|9 + i32.const 0 + i32.lt_s + local.set $sign + local.get $sign + if + i32.const 0 + local.get $k|9 + i32.sub + local.set $k|9 + end + local.get $k|9 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals + local.get $buffer|8 + local.set $buffer|12 + local.get $k|9 + local.set $num + local.get $decimals + local.set $offset|14 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|12 + local.get $num + local.get $offset|14 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|8 + i32.const 45 + i32.const 43 + local.get $sign + select + i32.store16 + local.get $decimals + br $~lib/util/number/genExponent|inlined.0 + end + local.set $length + local.get $length + i32.const 2 + i32.add + return + else + local.get $length + i32.const 1 + i32.shl + local.set $len + local.get $buffer + i32.const 4 + i32.add + local.get $buffer + i32.const 2 + i32.add + local.get $len + i32.const 2 + i32.sub + memory.copy + local.get $buffer + i32.const 46 + i32.store16 offset=2 + local.get $buffer + local.get $len + i32.add + i32.const 101 + i32.store16 offset=2 + local.get $length + block $~lib/util/number/genExponent|inlined.1 (result i32) + local.get $buffer + local.get $len + i32.add + i32.const 4 + i32.add + local.set $buffer|16 + local.get $kk + i32.const 1 + i32.sub + local.set $k|17 + local.get $k|17 + i32.const 0 + i32.lt_s + local.set $sign|18 + local.get $sign|18 + if + i32.const 0 + local.get $k|17 + i32.sub + local.set $k|17 + end + local.get $k|17 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $decimals|19 + local.get $buffer|16 + local.set $buffer|20 + local.get $k|17 + local.set $num|21 + local.get $decimals|19 + local.set $offset|22 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|20 + local.get $num|21 + local.get $offset|22 + call $~lib/util/number/utoa32_dec_lut + local.get $buffer|16 + i32.const 45 + i32.const 43 + local.get $sign|18 + select + i32.store16 + local.get $decimals|19 + br $~lib/util/number/genExponent|inlined.1 + end + i32.add + local.set $length + local.get $length + i32.const 2 + i32.add + return + end + unreachable + end + unreachable + end + unreachable + end + unreachable + ) + (func $~lib/util/number/dtoa_core (param $buffer i32) (param $value f64) (param $isSingle i32) (result i32) + (local $sign i32) + (local $value|4 f64) + (local $buffer|5 i32) + (local $sign|6 i32) + (local $isSingle|7 i32) + (local $frc i64) + (local $exp i32) + (local $uv i32) + (local $sid i32) + (local $uv|12 i64) + (local $sid|13 i64) + (local $f i64) + (local $e i32) + (local $isSingle|16 i32) + (local $frc|17 i64) + (local $exp|18 i32) + (local $off i32) + (local $m i32) + (local $minExp i32) + (local $dk f64) + (local $k i32) + (local $index i32) + (local $off|25 i32) + (local $frc_pow i64) + (local $exp_pow i32) + (local $u i64) + (local $v i64) + (local $u0 i64) + (local $v0 i64) + (local $u1 i64) + (local $v1 i64) + (local $l i64) + (local $t i64) + (local $w i64) + (local $w_frc i64) + (local $e1 i32) + (local $e2 i32) + (local $w_exp i32) + (local $u|41 i64) + (local $v|42 i64) + (local $u0|43 i64) + (local $v0|44 i64) + (local $u1|45 i64) + (local $v1|46 i64) + (local $l|47 i64) + (local $t|48 i64) + (local $w|49 i64) + (local $wp_frc i64) + (local $e1|51 i32) + (local $e2|52 i32) + (local $wp_exp i32) + (local $u|54 i64) + (local $v|55 i64) + (local $u0|56 i64) + (local $v0|57 i64) + (local $u1|58 i64) + (local $v1|59 i64) + (local $l|60 i64) + (local $t|61 i64) + (local $w|62 i64) + (local $wm_frc i64) + (local $delta i64) + (local $len i32) + local.get $value + f64.const 0 + f64.lt + local.set $sign + local.get $sign + if + local.get $value + f64.neg + local.set $value + local.get $buffer + i32.const 45 + i32.store16 + end + block $~lib/util/number/grisu2|inlined.0 (result i32) + local.get $value + local.set $value|4 + local.get $buffer + local.set $buffer|5 + local.get $sign + local.set $sign|6 + local.get $isSingle + local.set $isSingle|7 + local.get $isSingle|7 + if + local.get $value|4 + f32.demote_f64 + i32.reinterpret_f32 + local.set $uv + local.get $uv + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.set $exp + local.get $uv + i32.const 8388607 + i32.and + local.set $sid + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + local.get $sid + i64.extend_i32_u + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 127 + i32.const 23 + i32.add + i32.sub + local.set $exp + else + local.get $value|4 + i64.reinterpret_f64 + local.set $uv|12 + local.get $uv|12 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $exp + local.get $uv|12 + i64.const 4503599627370495 + i64.and + local.set $sid|13 + local.get $exp + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $sid|13 + i64.add + local.set $frc + local.get $exp + if (result i32) + local.get $exp + else + i32.const 1 + end + i32.const 1023 + i32.const 52 + i32.add + i32.sub + local.set $exp + end + local.get $frc + local.set $f + local.get $exp + local.set $e + local.get $isSingle|7 + local.set $isSingle|16 + local.get $f + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.set $frc|17 + local.get $e + i32.const 1 + i32.sub + local.set $exp|18 + local.get $frc|17 + i64.clz + i32.wrap_i64 + local.set $off + local.get $frc|17 + local.get $off + i64.extend_i32_s + i64.shl + local.set $frc|17 + local.get $exp|18 + local.get $off + i32.sub + local.set $exp|18 + i32.const 1 + local.get $f + local.get $isSingle|16 + if (result i64) + i64.const 8388608 + else + i64.const 4503599627370496 + end + i64.eq + i32.add + local.set $m + local.get $frc|17 + global.set $~lib/util/number/_frc_plus + local.get $f + local.get $m + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $e + local.get $m + i32.sub + local.get $exp|18 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $exp|18 + global.set $~lib/util/number/_exp + global.get $~lib/util/number/_exp + local.set $minExp + i32.const -61 + local.get $minExp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.set $dk + local.get $dk + i32.trunc_sat_f64_s + local.set $k + local.get $k + local.get $k + f64.convert_i32_s + local.get $dk + f64.ne + i32.add + local.set $k + local.get $k + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.set $index + i32.const 348 + local.get $index + i32.const 3 + i32.shl + i32.sub + global.set $~lib/util/number/_K + i32.const 2952 + local.get $index + i32.const 3 + i32.shl + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 3648 + local.get $index + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $frc + i64.clz + i32.wrap_i64 + local.set $off|25 + local.get $frc + local.get $off|25 + i64.extend_i32_s + i64.shl + local.set $frc + local.get $exp + local.get $off|25 + i32.sub + local.set $exp + global.get $~lib/util/number/_frc_pow + local.set $frc_pow + global.get $~lib/util/number/_exp_pow + local.set $exp_pow + block $~lib/util/number/umul64f|inlined.0 (result i64) + local.get $frc + local.set $u + local.get $frc_pow + local.set $v + local.get $u + i64.const 4294967295 + i64.and + local.set $u0 + local.get $v + i64.const 4294967295 + i64.and + local.set $v0 + local.get $u + i64.const 32 + i64.shr_u + local.set $u1 + local.get $v + i64.const 32 + i64.shr_u + local.set $v1 + local.get $u0 + local.get $v0 + i64.mul + local.set $l + local.get $u1 + local.get $v0 + i64.mul + local.get $l + i64.const 32 + i64.shr_u + i64.add + local.set $t + local.get $u0 + local.get $v1 + i64.mul + local.get $t + i64.const 4294967295 + i64.and + i64.add + local.set $w + local.get $w + i64.const 2147483647 + i64.add + local.set $w + local.get $t + i64.const 32 + i64.shr_u + local.set $t + local.get $w + i64.const 32 + i64.shr_u + local.set $w + local.get $u1 + local.get $v1 + i64.mul + local.get $t + i64.add + local.get $w + i64.add + br $~lib/util/number/umul64f|inlined.0 + end + local.set $w_frc + block $~lib/util/number/umul64e|inlined.0 (result i32) + local.get $exp + local.set $e1 + local.get $exp_pow + local.set $e2 + local.get $e1 + local.get $e2 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.0 + end + local.set $w_exp + block $~lib/util/number/umul64f|inlined.1 (result i64) + global.get $~lib/util/number/_frc_plus + local.set $u|41 + local.get $frc_pow + local.set $v|42 + local.get $u|41 + i64.const 4294967295 + i64.and + local.set $u0|43 + local.get $v|42 + i64.const 4294967295 + i64.and + local.set $v0|44 + local.get $u|41 + i64.const 32 + i64.shr_u + local.set $u1|45 + local.get $v|42 + i64.const 32 + i64.shr_u + local.set $v1|46 + local.get $u0|43 + local.get $v0|44 + i64.mul + local.set $l|47 + local.get $u1|45 + local.get $v0|44 + i64.mul + local.get $l|47 + i64.const 32 + i64.shr_u + i64.add + local.set $t|48 + local.get $u0|43 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.const 4294967295 + i64.and + i64.add + local.set $w|49 + local.get $w|49 + i64.const 2147483647 + i64.add + local.set $w|49 + local.get $t|48 + i64.const 32 + i64.shr_u + local.set $t|48 + local.get $w|49 + i64.const 32 + i64.shr_u + local.set $w|49 + local.get $u1|45 + local.get $v1|46 + i64.mul + local.get $t|48 + i64.add + local.get $w|49 + i64.add + br $~lib/util/number/umul64f|inlined.1 + end + i64.const 1 + i64.sub + local.set $wp_frc + block $~lib/util/number/umul64e|inlined.1 (result i32) + global.get $~lib/util/number/_exp + local.set $e1|51 + local.get $exp_pow + local.set $e2|52 + local.get $e1|51 + local.get $e2|52 + i32.add + i32.const 64 + i32.add + br $~lib/util/number/umul64e|inlined.1 + end + local.set $wp_exp + block $~lib/util/number/umul64f|inlined.2 (result i64) + global.get $~lib/util/number/_frc_minus + local.set $u|54 + local.get $frc_pow + local.set $v|55 + local.get $u|54 + i64.const 4294967295 + i64.and + local.set $u0|56 + local.get $v|55 + i64.const 4294967295 + i64.and + local.set $v0|57 + local.get $u|54 + i64.const 32 + i64.shr_u + local.set $u1|58 + local.get $v|55 + i64.const 32 + i64.shr_u + local.set $v1|59 + local.get $u0|56 + local.get $v0|57 + i64.mul + local.set $l|60 + local.get $u1|58 + local.get $v0|57 + i64.mul + local.get $l|60 + i64.const 32 + i64.shr_u + i64.add + local.set $t|61 + local.get $u0|56 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.const 4294967295 + i64.and + i64.add + local.set $w|62 + local.get $w|62 + i64.const 2147483647 + i64.add + local.set $w|62 + local.get $t|61 + i64.const 32 + i64.shr_u + local.set $t|61 + local.get $w|62 + i64.const 32 + i64.shr_u + local.set $w|62 + local.get $u1|58 + local.get $v1|59 + i64.mul + local.get $t|61 + i64.add + local.get $w|62 + i64.add + br $~lib/util/number/umul64f|inlined.2 + end + i64.const 1 + i64.add + local.set $wm_frc + local.get $wp_frc + local.get $wm_frc + i64.sub + local.set $delta + local.get $buffer|5 + local.get $w_frc + local.get $w_exp + local.get $wp_frc + local.get $wp_exp + local.get $delta + local.get $sign|6 + call $~lib/util/number/genDigits + br $~lib/util/number/grisu2|inlined.0 + end + local.set $len + local.get $buffer + local.get $sign + i32.const 1 + i32.shl + i32.add + local.get $len + local.get $sign + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.set $len + local.get $len + local.get $sign + i32.add + return + ) + (func $~lib/number/F64#toString (param $this f64) (param $radix i32) (result i32) + local.get $this + call $~lib/util/number/dtoa + return + ) + (func $templateliteral/Ref#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $templateliteral/Ref#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $templateliteral/RecursiveObject#set:key (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store + local.get $this + local.get $key + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $templateliteral/RecursiveObject#set:val (param $this i32) (param $val i32) + local.get $this + local.get $val + i32.store offset=4 + local.get $this + local.get $val + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $templateliteral/RecursiveObject#get:val (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $templateliteral/RecursiveObject#get:key (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $start:templateliteral + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 304 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 336 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 480 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $templateliteral/test_string + call $templateliteral/test_integer + call $templateliteral/test_float + call $templateliteral/test_fast_paths_string + call $templateliteral/test_ref + call $templateliteral/test_null + call $templateliteral/test_recursive + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 384 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 192 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1440 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2496 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + i32.const 1 + drop + local.get $this + local.set $cur + local.get $cur + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__visit + ) + (func $templateliteral/RecursiveObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $templateliteral/RecursiveObject + block $templateliteral/Ref + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>~visit + return + end + return + end + local.get $0 + local.get $1 + call $templateliteral/RecursiveObject~visit + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:templateliteral + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 37680 + i32.const 37728 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 160 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/util/string/joinStringArray (param $dataStart i32) (param $length i32) (param $separator i32) (result i32) + (local $lastIndex i32) + (local $4 i32) + (local $estLen i32) + (local $value i32) + (local $i i32) + (local $offset i32) + (local $sepLen i32) + (local $result i32) + (local $i|11 i32) + (local $valueLen i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $length + i32.const 1 + i32.sub + local.set $lastIndex + local.get $lastIndex + i32.const 0 + i32.lt_s + if + i32.const 160 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + end + local.get $lastIndex + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + i32.load + local.tee $4 + i32.store + local.get $4 + if (result i32) + local.get $4 + else + i32.const 160 + end + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + end + i32.const 0 + local.set $estLen + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $length + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne + if + local.get $estLen + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + i32.add + local.set $estLen + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $offset + local.get $separator + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + local.set $sepLen + global.get $~lib/memory/__stack_pointer + local.get $estLen + local.get $sepLen + local.get $lastIndex + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store offset=12 + i32.const 0 + local.set $i|11 + loop $for-loop|1 + local.get $i|11 + local.get $lastIndex + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $i|11 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne + if + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + local.set $valueLen + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + local.get $valueLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $valueLen + i32.add + local.set $offset + end + local.get $sepLen + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $separator + local.get $sepLen + i32.const 1 + i32.shl + memory.copy + local.get $offset + local.get $sepLen + i32.add + local.set $offset + end + local.get $i|11 + i32.const 1 + i32.add + local.set $i|11 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $dataStart + local.get $lastIndex + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + local.get $value + i32.const 0 + i32.ne + if + local.get $result + local.get $offset + i32.const 1 + i32.shl + i32.add + local.get $value + local.get $value + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + memory.copy + end + local.get $result + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $this i32) (param $separator i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 1 + drop + local.get $this + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.get $separator + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinStringArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $templateliteral/test_string + (local $a i32) + (local $b i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 32 + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 64 + local.tee $b + i32.store offset=4 + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + call $~lib/string/String#concat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 5 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $a + local.tee $2 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $b + local.tee $3 + i32.store offset=24 + i32.const 720 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + i32.const 1 + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 720 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + i32.const 3 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 720 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + i32.const 160 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $templateliteral/test_integer + (local $a i32) + (local $b i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + i32.const 1 + local.set $a + i32.const 2 + local.set $b + local.get $a + i32.const 10 + call $~lib/number/I32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + i32.const 10 + call $~lib/number/I32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $b + i32.const 10 + call $~lib/number/I32#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String#concat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 14 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $a + i32.const 10 + call $~lib/number/I32#toString + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $b + i32.const 10 + call $~lib/number/I32#toString + local.tee $3 + i32.store offset=16 + i32.const 2656 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 2656 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 2656 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 160 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2704 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $templateliteral/test_float + (local $a f64) + (local $b f64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + f64.const 1 + local.set $a + f64.const 2 + local.set $b + local.get $a + i32.const 0 + call $~lib/number/F64#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + i32.const 0 + call $~lib/number/F64#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $b + i32.const 0 + call $~lib/number/F64#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String#concat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $a + i32.const 0 + call $~lib/number/F64#toString + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $b + i32.const 0 + call $~lib/number/F64#toString + local.tee $3 + i32.store offset=16 + i32.const 3952 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 3952 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 3952 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 160 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 4000 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $templateliteral/test_fast_paths_string + (local $a i32) + (local $b i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 2 + local.set $a + global.get $~lib/memory/__stack_pointer + i32.const 64 + local.tee $b + i32.store + local.get $a + i32.const 10 + call $~lib/number/I32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 64 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4080 + local.get $a + i32.const 10 + call $~lib/number/I32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 4080 + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + i32.const 10 + call $~lib/number/I32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 4176 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 4176 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + i32.const 10 + call $~lib/number/I32#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + local.get $b + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 4272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $templateliteral/Ref#constructor (param $this i32) (param $value i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $value + call $templateliteral/Ref#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $templateliteral/Ref#toString (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 4304 + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $templateliteral/Ref#get:value + i32.const 10 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $templateliteral/test_ref + (local $a i32) + (local $b i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $templateliteral/Ref#constructor + local.tee $a + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + call $templateliteral/Ref#constructor + local.tee $b + i32.store offset=4 + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $templateliteral/Ref#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 4336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 51 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $4 + call $templateliteral/Ref#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $4 + call $templateliteral/Ref#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + call $~lib/string/String#concat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 4368 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $a + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $templateliteral/Ref#toString + local.tee $2 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $b + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $templateliteral/Ref#toString + local.tee $3 + i32.store offset=28 + i32.const 4416 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + i32.const 1 + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4416 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + i32.const 3 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4416 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + i32.const 160 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 4464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 53 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $templateliteral/test_null + (local $c i32) + (local $d i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $templateliteral/Ref#constructor + local.tee $c + i32.store + i32.const 0 + local.set $d + global.get $~lib/memory/__stack_pointer + local.get $c + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $templateliteral/Ref#toString + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $d + local.tee $4 + i32.store offset=16 + local.get $4 + if (result i32) + local.get $4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $templateliteral/Ref#toString + else + i32.const 4640 + end + local.tee $3 + i32.store offset=20 + i32.const 4592 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + i32.const 1 + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4592 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + i32.const 3 + local.get $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4592 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + i32.const 160 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 4672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $templateliteral/RecursiveObject#constructor (param $this i32) (param $key i32) (param $val i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $key + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $templateliteral/RecursiveObject#set:key + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $val + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $templateliteral/RecursiveObject#set:val + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $templateliteral/RecursiveObject#toString (param $this i32) (result i32) + (local $val i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $templateliteral/RecursiveObject#get:val + local.tee $val + i32.store offset=4 + local.get $val + i32.eqz + if + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $templateliteral/RecursiveObject#get:key + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $templateliteral/RecursiveObject#get:key + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $val + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $templateliteral/RecursiveObject#toString + local.tee $3 + i32.store offset=12 + i32.const 4800 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4800 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 4800 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 160 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $templateliteral/test_recursive + (local $c i32) + (local $b i32) + (local $a i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4736 + i32.const 0 + call $templateliteral/RecursiveObject#constructor + local.tee $c + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 64 + local.get $c + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $templateliteral/RecursiveObject#constructor + local.tee $b + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + local.get $b + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $templateliteral/RecursiveObject#constructor + local.tee $a + i32.store offset=12 + local.get $a + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + call $templateliteral/RecursiveObject#toString + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 125 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/itoa32 (param $value i32) (param $radix i32) (result i32) + (local $sign i32) + (local $out i32) + (local $decimals i32) + (local $buffer i32) + (local $num i32) + (local $offset i32) + (local $decimals|8 i32) + (local $buffer|9 i32) + (local $num|10 i32) + (local $offset|11 i32) + (local $val32 i32) + (local $decimals|13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $radix + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $radix + i32.const 36 + i32.gt_s + end + if + i32.const 816 + i32.const 944 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $value + i32.eqz + if + i32.const 1008 + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + end + local.get $value + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.set $sign + local.get $sign + if + i32.const 0 + local.get $value + i32.sub + local.set $value + end + local.get $radix + i32.const 10 + i32.eq + if + local.get $value + call $~lib/util/number/decimalCount32 + local.set $decimals + global.get $~lib/memory/__stack_pointer + local.get $decimals + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer + local.get $value + local.set $num + local.get $decimals + local.set $offset + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer + local.get $num + local.get $offset + call $~lib/util/number/utoa32_dec_lut + else + local.get $radix + i32.const 16 + i32.eq + if + i32.const 31 + local.get $value + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.set $decimals|8 + global.get $~lib/memory/__stack_pointer + local.get $decimals|8 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.set $buffer|9 + local.get $value + local.set $num|10 + local.get $decimals|8 + local.set $offset|11 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $buffer|9 + local.get $num|10 + i64.extend_i32_u + local.get $offset|11 + call $~lib/util/number/utoa_hex_lut + else + local.get $value + local.set $val32 + local.get $val32 + i64.extend_i32_u + local.get $radix + call $~lib/util/number/ulog_base + local.set $decimals|13 + global.get $~lib/memory/__stack_pointer + local.get $decimals|13 + i32.const 1 + i32.shl + local.get $sign + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store + local.get $out + local.get $sign + i32.add + local.get $val32 + i64.extend_i32_u + local.get $decimals|13 + local.get $radix + call $~lib/util/number/utoa64_any_core + end + end + local.get $sign + if + local.get $out + i32.const 45 + i32.store16 + end + local.get $out + local.set $14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $14 + return + ) + (func $~lib/util/number/dtoa (param $value f64) (result i32) + (local $value|1 f64) + (local $isSingle i32) + (local $size i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $~lib/util/number/dtoa_impl|inlined.0 (result i32) + local.get $value + local.set $value|1 + i32.const 0 + local.set $isSingle + local.get $value|1 + f64.const 0 + f64.eq + if + i32.const 2752 + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.get $value|1 + local.get $value|1 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $value|1 + local.get $value|1 + f64.ne + if + i32.const 2784 + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 2816 + i32.const 2864 + local.get $value|1 + f64.const 0 + f64.lt + select + br $~lib/util/number/dtoa_impl|inlined.0 + end + i32.const 2896 + local.get $value|1 + local.get $isSingle + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $size + global.get $~lib/memory/__stack_pointer + local.get $size + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $result + i32.store + local.get $result + i32.const 2896 + local.get $size + memory.copy + local.get $result + br $~lib/util/number/dtoa_impl|inlined.0 + end + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) +) diff --git a/tests/compiler/templateliteral.json b/tests/compiler/templateliteral.json new file mode 100644 index 0000000000..d89aa6d3b8 --- /dev/null +++ b/tests/compiler/templateliteral.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--exportStart", "_start" + ] +} diff --git a/tests/compiler/templateliteral.release.wat b/tests/compiler/templateliteral.release.wat new file mode 100644 index 0000000000..9256be15f6 --- /dev/null +++ b/tests/compiler/templateliteral.release.wat @@ -0,0 +1,4716 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param f64) (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64))) + (type $9 (func (result i32))) + (type $10 (func (param i64 i64 i32 i64 i32) (result i32))) + (type $11 (func (param i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) + (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp (mut i32) (i32.const 0)) + (global $~lib/util/number/_K (mut i32) (i32.const 0)) + (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) + (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 38672)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\02\00\00\00a") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\02\00\00\00b") + (data $2 (i32.const 1100) "<") + (data $2.1 (i32.const 1112) "\02\00\00\00$\00\00\00t\00e\00m\00p\00l\00a\00t\00e\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (data $3 (i32.const 1164) "\1c") + (data $3.1 (i32.const 1176) "\02") + (data $4 (i32.const 1196) "<") + (data $4.1 (i32.const 1208) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $5 (i32.const 1260) "<") + (data $5.1 (i32.const 1272) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $8 (i32.const 1388) "<") + (data $8.1 (i32.const 1400) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $9 (i32.const 1452) ",") + (data $9.1 (i32.const 1464) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $11 (i32.const 1532) "<") + (data $11.1 (i32.const 1544) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $12 (i32.const 1596) "\1c") + (data $12.1 (i32.const 1608) "\02\00\00\00\04\00\00\00a\00b") + (data $13 (i32.const 1628) "\1c") + (data $13.1 (i32.const 1640) "\02\00\00\00\06\00\00\00(\00A\00=") + (data $14 (i32.const 1660) "\1c") + (data $14.1 (i32.const 1672) "\02\00\00\00\08\00\00\00,\00 \00B\00=") + (data $15 (i32.const 1692) "\1c") + (data $15.1 (i32.const 1704) "\02\00\00\00\02\00\00\00)") + (data $16 (i32.const 1724) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06") + (data $17 (i32.const 1772) ",") + (data $17.1 (i32.const 1784) "\02\00\00\00\14\00\00\00(\00A\00=\00a\00,\00 \00B\00=\00b\00)") + (data $18 (i32.const 1820) "|") + (data $18.1 (i32.const 1832) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $19 (i32.const 1948) "<") + (data $19.1 (i32.const 1960) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $20 (i32.const 2012) "\1c") + (data $20.1 (i32.const 2024) "\02\00\00\00\02\00\00\000") + (data $21 (i32.const 2044) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $22 (i32.const 2444) "\1c\04") + (data $22.1 (i32.const 2456) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $23 (i32.const 3500) "\\") + (data $23.1 (i32.const 3512) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $24 (i32.const 3596) "\1c") + (data $24.1 (i32.const 3608) "\02\00\00\00\02\00\00\001") + (data $25 (i32.const 3628) "\1c") + (data $25.1 (i32.const 3640) "\02\00\00\00\04\00\00\001\002") + (data $26 (i32.const 3660) ",\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06") + (data $27 (i32.const 3708) ",") + (data $27.1 (i32.const 3720) "\02\00\00\00\14\00\00\00(\00A\00=\001\00,\00 \00B\00=\002\00)") + (data $28 (i32.const 3756) "\1c") + (data $28.1 (i32.const 3768) "\02\00\00\00\06\00\00\000\00.\000") + (data $29 (i32.const 3788) "\1c") + (data $29.1 (i32.const 3800) "\02\00\00\00\06\00\00\00N\00a\00N") + (data $30 (i32.const 3820) ",") + (data $30.1 (i32.const 3832) "\02\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data $31 (i32.const 3868) ",") + (data $31.1 (i32.const 3880) "\02\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data $33 (i32.const 3976) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\rXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + i32.const 1 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 2 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 14 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/number/I32#toString + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $~lib/number/I32#toString + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3680 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3684 + local.get $0 + i32.store + i32.const 3680 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3680 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 3692 + local.get $1 + i32.store + i32.const 3680 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3680 + i32.store offset=4 + i32.const 3680 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3728 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + f64.const 1 + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + f64.const 2 + call $~lib/number/F64#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + f64.const 1 + call $~lib/number/F64#toString + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + f64.const 2 + call $~lib/number/F64#toString + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 4980 + local.get $0 + i32.store + i32.const 4976 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 4988 + local.get $1 + i32.store + i32.const 4976 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=4 + i32.const 4976 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 5024 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 2 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 5104 + local.get $0 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=8 + i32.const 5104 + i32.const 1088 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 5200 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=8 + i32.const 1088 + i32.const 5200 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=12 + local.get $0 + i32.const 1088 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $templateliteral/Ref#constructor + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $templateliteral/Ref#constructor + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $templateliteral/Ref#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 5360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 51 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + call $templateliteral/Ref#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + call $templateliteral/Ref#toString + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $1 + local.get $3 + call $~lib/string/String#concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 5392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $templateliteral/Ref#toString + local.tee $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $templateliteral/Ref#toString + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + i32.const 5440 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + i32.const 5444 + local.get $1 + i32.store + i32.const 5440 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5440 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + i32.const 5452 + local.get $0 + i32.store + i32.const 5440 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5440 + i32.store offset=12 + i32.const 5440 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 5488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 53 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $templateliteral/Ref#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $templateliteral/Ref#toString + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 5664 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 5616 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + i32.const 5620 + local.get $0 + i32.store + i32.const 5616 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5616 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5664 + i32.store offset=24 + i32.const 5628 + i32.const 5664 + i32.store + i32.const 5616 + i32.const 5664 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5616 + i32.store offset=8 + i32.const 5616 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 5760 + i32.const 0 + call $templateliteral/RecursiveObject#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1088 + local.get $0 + call $templateliteral/RecursiveObject#constructor + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + local.get $0 + call $templateliteral/RecursiveObject#constructor + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + call $templateliteral/RecursiveObject#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 125 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + block $invalid + block $templateliteral/RecursiveObject + block $templateliteral/Ref + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:templateliteral + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$91 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$91 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + local.get $2 + i32.add + local.tee $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1184 + return + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $0 + local.get $2 + memory.copy + local.get $2 + local.get $4 + i32.add + local.get $1 + local.get $3 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1184 + return + end + local.get $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 1184 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + i32.store offset=4 + local.get $5 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $2 + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $2 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1180 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + local.get $4 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $6 + i32.const 1 + i32.shl + memory.copy + local.get $3 + local.get $6 + i32.add + local.set $3 + end + local.get $1 + if + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $3 + i32.add + local.set $3 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + local.get $0 + local.get $1 + call $~lib/util/string/joinStringArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $templateliteral/Ref#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $templateliteral/Ref#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5328 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5328 + local.get $0 + call $~lib/string/String#concat + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $templateliteral/RecursiveObject#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $templateliteral/RecursiveObject#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + call $templateliteral/RecursiveObject#toString + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 5824 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + i32.const 5824 + local.get $0 + i32.store + i32.const 5824 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5824 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + i32.const 5832 + local.get $1 + i32.store + i32.const 5824 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5824 + i32.store + i32.const 5824 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/templateliteral.ts b/tests/compiler/templateliteral.ts new file mode 100644 index 0000000000..7ced6c8454 --- /dev/null +++ b/tests/compiler/templateliteral.ts @@ -0,0 +1,127 @@ +function test_string(): void { + var a = "a"; + var b = "b"; + assert(`${a}` == "a"); + assert(`${a}${b}` == "ab"); + assert(`(A=${a}, B=${b})` == "(A=a, B=b)"); +} +test_string(); + +function test_integer(): void { + var a = 1; + var b = 2; + assert(`${a}` == "1"); + assert(`${a}${b}` == "12"); + assert(`(A=${a}, B=${b})` == "(A=1, B=2)"); +} +test_integer(); + +function test_float(): void { + var a = 1.0; + var b = 2.0; + assert(`${a}` == "1.0"); + assert(`${a}${b}` == "1.02.0"); + assert(`(A=${a}, B=${b})` == "(A=1.0, B=2.0)"); +} +test_float(); + +function test_fast_paths_string(): void { + var a = 2; + var b = "b"; + assert(`${a}` == "2"); + assert(`${b}` == "b"); + assert(`pref${a}` == "pref2"); + assert(`pref${b}` == "prefb"); + assert(`${a}suff` == "2suff"); + assert(`${b}suff` == "bsuff"); + assert(`${a}${b}` == "2b"); +} +test_fast_paths_string(); + +class Ref { + constructor(public value: i32) {} + toString(): string { + return "ref#" + this.value.toString(); + } +} + +function test_ref(): void { + var a = new Ref(1); + var b = new Ref(2); + assert(`${a}` == "ref#1"); + assert(`${a}${b}` == "ref#1ref#2"); + assert(`(A=${a}, B=${b})` == "(A=ref#1, B=ref#2)"); +} +test_ref(); + +function test_null(): void { + var c: Ref | null = new Ref(3); + var d: Ref | null = null; + assert(`c: ${c}; d: ${d}` == "c: ref#3; d: null"); +} +test_null(); + +function tag(parts: TemplateStringsArray, a: i32): string { + var raw = parts.raw; + assert(parts.length == 2); + assert(raw.length == 2); + assert(parts[0] == "a"); + assert(raw[0] == "a"); + assert(parts[1] == "b"); + assert(raw[1] == "b"); + assert(a == 1); + return parts[0] + a.toString() + parts[1]; +} + +namespace ns { + export function tag(parts: string[] /* ! */, a: i32, b: i32): string { + assert(!(parts instanceof TemplateStringsArray)); // optimized away + assert(parts.length == 3); + assert(parts[0] == "r"); + assert(parts[1] == "d"); + assert(parts[2] == ""); + assert(a == 2); + assert(b == 2); + return parts[0] + a.toString() + parts[1] + b.toString(); + } +} + +function test_tag(): void { + assert(tag`a${1}b` == "a1b"); + assert(ns.tag`r${2}d${2}` == "r2d2"); +} +// test_tag(); // TODO: Requires ReadonlyArray to be safe + +function raw(parts: TemplateStringsArray): string { + return parts.raw.join(""); +} + +function test_raw(): void { + assert(raw`` == ""); + assert(raw`\u` == "\\u"); + assert(raw`\u1` == "\\u1"); + assert(raw`\u1000` == "\\u1000"); +} +// test_raw(); // TODO: Requires ReadonlyArray to be safe + +class RecursiveObject { + constructor( + public key: string, + public val: RecursiveObject | null = null + ) {} + toString(): string { + let val = this.val; + if (!val) return this.key; + // see: https://github.com/AssemblyScript/assemblyscript/issues/1944 + // trigger general case by wrapping three times below (2x with value) + return `${this.key}:${val}`; + } +} + +function test_recursive(): void { + const c = new RecursiveObject("c"); + const b = new RecursiveObject("b", c); + const a = new RecursiveObject("a", b); + assert(a.toString() == "a:b:c"); +} +test_recursive(); diff --git a/tests/compiler/ternary.debug.wat b/tests/compiler/ternary.debug.wat new file mode 100644 index 0000000000..91a380b1f5 --- /dev/null +++ b/tests/compiler/ternary.debug.wat @@ -0,0 +1,146 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32 i32 i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $ternary/a (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 44)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32812)) + (global $~lib/memory/__heap_base i32 (i32.const 32812)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "test" (func $ternary/test)) + (export "testDropWithTypeMismatch" (func $ternary/testDropWithTypeMismatch)) + (export "memory" (memory $0)) + (export "testVoidInclTypeMismatch" (func $export:ternary/testVoidInclTypeMismatch)) + (start $~start) + (func $start:ternary + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + drop + i32.const 1 + global.set $ternary/a + i32.const 1 + global.set $ternary/a + i32.const 1 + global.set $ternary/a + ) + (func $ternary/test (param $x i32) (param $y i32) (param $z i32) (result i32) + local.get $x + if (result i32) + local.get $y + else + local.get $z + end + return + ) + (func $ternary/testDropWithTypeMismatch (param $cond i32) + (local $x i32) + (local $y i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + local.set $x + global.get $~lib/memory/__stack_pointer + i32.const 32 + local.tee $y + i32.store + local.get $cond + if + local.get $x + drop + else + local.get $y + drop + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $ternary/testVoidInclTypeMismatch (param $cond i32) (param $nop i32) + local.get $cond + if + i32.const 0 + global.set $~argumentsLength + local.get $nop + i32.load + call_indirect (type $0) + else + i32.const 0 + global.set $~argumentsLength + local.get $nop + i32.load + call_indirect (type $0) + end + local.get $cond + if + i32.const 0 + global.set $~argumentsLength + local.get $nop + i32.load + call_indirect (type $0) + else + i32.const 1 + drop + end + local.get $cond + if + i32.const 1 + drop + else + i32.const 0 + global.set $~argumentsLength + local.get $nop + i32.load + call_indirect (type $0) + end + ) + (func $~start + call $start:ternary + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 32832 + i32.const 32880 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $export:ternary/testVoidInclTypeMismatch (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $0 + local.get $1 + call $ternary/testVoidInclTypeMismatch + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/ternary.json b/tests/compiler/ternary.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/ternary.json +++ b/tests/compiler/ternary.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/ternary.optimized.wat b/tests/compiler/ternary.optimized.wat deleted file mode 100644 index 13620adaac..0000000000 --- a/tests/compiler/ternary.optimized.wat +++ /dev/null @@ -1,12 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (memory $0 0) - (export "memory" (memory $0)) - (export "test" (func $ternary/test)) - (func $ternary/test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 - local.get $2 - local.get $0 - select - ) -) diff --git a/tests/compiler/ternary.release.wat b/tests/compiler/ternary.release.wat new file mode 100644 index 0000000000..fda76df259 --- /dev/null +++ b/tests/compiler/ternary.release.wat @@ -0,0 +1,90 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\02\00\00\00a") + (table $0 1 1 funcref) + (export "test" (func $ternary/test)) + (export "testDropWithTypeMismatch" (func $ternary/testDropWithTypeMismatch)) + (export "memory" (memory $0)) + (export "testVoidInclTypeMismatch" (func $export:ternary/testVoidInclTypeMismatch)) + (func $ternary/test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + local.get $2 + local.get $0 + select + ) + (func $ternary/testDropWithTypeMismatch (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:ternary/testVoidInclTypeMismatch (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + call_indirect (type $0) + local.get $0 + if + local.get $1 + i32.load + call_indirect (type $0) + end + local.get $0 + i32.eqz + if + local.get $1 + i32.load + call_indirect (type $0) + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/ternary.ts b/tests/compiler/ternary.ts index c3010ead74..4f0a7fd892 100644 --- a/tests/compiler/ternary.ts +++ b/tests/compiler/ternary.ts @@ -11,3 +11,15 @@ a = (0 ? unreachable() : 1) ? 1 : unreachable(); export function test(x: i32, y: i32, z: i32): i32 { return x ? y : z; } + +export function testDropWithTypeMismatch(cond: bool): void { + var x = 1; + var y = "a"; + cond ? x : y; +} + +export function testVoidInclTypeMismatch(cond: bool, nop: () => void): void { + cond ? nop() : nop(); + cond ? nop() : true; + cond ? true : nop(); +} diff --git a/tests/compiler/ternary.untouched.wat b/tests/compiler/ternary.untouched.wat deleted file mode 100644 index 20218f8bf0..0000000000 --- a/tests/compiler/ternary.untouched.wat +++ /dev/null @@ -1,35 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (memory $0 0) - (table $0 1 funcref) - (global $ternary/a (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "test" (func $ternary/test)) - (start $~start) - (func $start:ternary - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - drop - i32.const 1 - global.set $ternary/a - i32.const 1 - global.set $ternary/a - i32.const 1 - global.set $ternary/a - ) - (func $ternary/test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - if (result i32) - local.get $1 - else - local.get $2 - end - ) - (func $~start - call $start:ternary - ) -) diff --git a/tests/compiler/throw.debug.wat b/tests/compiler/throw.debug.wat new file mode 100644 index 0000000000..0b8420d409 --- /dev/null +++ b/tests/compiler/throw.debug.wat @@ -0,0 +1,1864 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64) (result i32))) + (type $7 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 704)) + (global $~lib/memory/__data_end i32 (i32.const 724)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33492)) + (global $~lib/memory/__heap_base i32 (i32.const 33492)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\001\002\003\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\002\003\004\00\00\00\00\00\00\00") + (data $2 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\003\004\005\00\00\00\00\00\00\00") + (data $5 (i32.const 204) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p\00\00\00") + (data $6 (i32.const 252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\004\005\006\00\00\00\00\00\00\00") + (data $7 (i32.const 284) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\005\006\007\00\00\00\00\00\00\00") + (data $8 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 508) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 560) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 588) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 652) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 704) "\04\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00") + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "doThrow" (func $throw/doThrow)) + (export "memory" (memory $0)) + (start $~start) + (func $throw/doThrowIf (param $cond i32) + (local $a i32) + (local $b i32) + (local $c i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 32 + local.tee $a + i32.store + local.get $cond + if + global.get $~lib/memory/__stack_pointer + i32.const 64 + local.tee $b + i32.store offset=4 + i32.const 96 + i32.const 144 + i32.const 10 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 192 + local.tee $c + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $throw/doThrowIfLoop (param $max i32) + (local $a i32) + (local $i i32) + (local $b i32) + (local $c i32) + (local $d i32) + (local $e i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 32 + local.tee $a + i32.store + i32.const 0 + local.set $i + loop $while-continue|0 + local.get $i + i32.const 1 + i32.add + local.tee $i + local.get $max + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 64 + local.tee $b + i32.store offset=4 + local.get $i + local.get $max + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 192 + local.tee $c + i32.store offset=8 + i32.const 224 + i32.const 144 + i32.const 23 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 272 + local.tee $d + i32.store offset=12 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 304 + local.tee $e + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 464 + i32.const 528 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 368 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/__collect + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $start:throw + i32.const 0 + call $throw/doThrowIf + i32.const 10 + call $throw/doThrowIfLoop + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 416 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 560 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + call $~lib/rt/itcms/__collect + ) + (func $throw/doThrow + (local $a i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 32 + local.tee $a + i32.store + i32.const 672 + i32.const 144 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 464 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) + (func $~start + call $start:throw + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33520 + i32.const 33568 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/throw.json b/tests/compiler/throw.json index 9f7878d475..b83788465e 100644 --- a/tests/compiler/throw.json +++ b/tests/compiler/throw.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half", - "--use ASC_RTRACE=1" - ] -} \ No newline at end of file + ], + "asc_rtrace": true +} diff --git a/tests/compiler/throw.optimized.wat b/tests/compiler/throw.optimized.wat deleted file mode 100644 index c17e8c24be..0000000000 --- a/tests/compiler/throw.optimized.wat +++ /dev/null @@ -1,53 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 1056) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\003\004") - (data (i32.const 1088) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f") - (data (i32.const 1136) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s") - (data (i32.const 1168) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\003\004\005") - (data (i32.const 1200) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p") - (data (i32.const 1248) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\004\005\006") - (data (i32.const 1280) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\005\006\007") - (data (i32.const 1312) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w") - (data (i32.const 1344) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1392) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (export "memory" (memory $0)) - (export "doThrow" (func $throw/doThrow)) - (start $~start) - (func $throw/doThrow - i32.const 1328 - i32.const 1152 - i32.const 3 - i32.const 3 - call $~lib/builtins/abort - unreachable - ) - (func $~start - (local $0 i32) - loop $while-continue|0 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.lt_s - if - local.get $0 - i32.const 10 - i32.gt_s - if - i32.const 1216 - i32.const 1152 - i32.const 26 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - br $while-continue|0 - end - end - ) -) diff --git a/tests/compiler/throw.release.wat b/tests/compiler/throw.release.wat new file mode 100644 index 0000000000..d1427154ca --- /dev/null +++ b/tests/compiler/throw.release.wat @@ -0,0 +1,1243 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34516)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\06\00\00\001\002\003") + (data $1 (i32.const 1068) "\1c") + (data $1.1 (i32.const 1080) "\02\00\00\00\06\00\00\002\003\004") + (data $2 (i32.const 1100) ",") + (data $2.1 (i32.const 1112) "\02\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f") + (data $3 (i32.const 1148) ",") + (data $3.1 (i32.const 1160) "\02\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s") + (data $4 (i32.const 1196) "\1c") + (data $4.1 (i32.const 1208) "\02\00\00\00\06\00\00\003\004\005") + (data $5 (i32.const 1228) ",") + (data $5.1 (i32.const 1240) "\02\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p") + (data $6 (i32.const 1276) "\1c") + (data $6.1 (i32.const 1288) "\02\00\00\00\06\00\00\004\005\006") + (data $7 (i32.const 1308) "\1c") + (data $7.1 (i32.const 1320) "\02\00\00\00\06\00\00\005\006\007") + (data $9 (i32.const 1372) "<") + (data $9.1 (i32.const 1384) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $11 (i32.const 1468) "<") + (data $11.1 (i32.const 1480) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $12 (i32.const 1532) ",") + (data $12.1 (i32.const 1544) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $14 (i32.const 1612) "<") + (data $14.1 (i32.const 1624) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $15 (i32.const 1676) ",") + (data $15.1 (i32.const 1688) "\02\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w") + (data $16 (i32.const 1728) "\04\00\00\00 \00\00\00 \00\00\00 ") + (export "doThrow" (func $throw/doThrow)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1488 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$92 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34516 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$92 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1728 + i32.load + i32.gt_u + if + i32.const 1488 + i32.const 1552 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1732 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1632 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1632 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1632 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/step + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $3 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34516 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $3 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $3 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34516 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $3 + i32.const 34516 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + memory.size + local.tee $0 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34528 + i32.const 0 + i32.store + i32.const 36096 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + i32.const 34528 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 16 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shl + local.get $0 + i32.add + i32.const 2 + i32.shl + i32.const 34528 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + local.tee $2 + i32.wrap_i64 + local.get $2 + i64.const 36100 + i64.lt_u + if + i32.const 0 + i32.const 1632 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 36108 + local.set $1 + i32.const 36096 + i32.load + local.tee $0 + if (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 36108 + i32.gt_u + if + i32.const 0 + i32.const 1632 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36092 + i32.eq + if (result i32) + i32.const 36092 + local.set $1 + local.get $0 + i32.load + else + i32.const 0 + end + else + i32.const 0 + end + local.set $0 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $4 + i32.const 20 + i32.ge_u + if + local.get $1 + local.get $0 + i32.const 2 + i32.and + local.get $4 + i32.const 8 + i32.sub + local.tee $0 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.add + local.tee $0 + i32.const 2 + i32.store + i32.const 36096 + local.get $0 + i32.store + i32.const 34528 + local.get $1 + call $~lib/rt/tlsf/insertBlock + end + i32.const 34528 + global.set $~lib/rt/tlsf/ROOT + end + global.get $~lib/rt/tlsf/ROOT + local.get $3 + i32.const 4 + i32.sub + local.set $1 + local.get $3 + i32.const 15 + i32.and + i32.const 1 + local.get $3 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1632 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $1 + call $~lib/rt/tlsf/insertBlock + end + end + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + ) + (func $throw/doThrow + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1696 + i32.const 1168 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + (local $0 i32) + block $__inlined_func$start:throw$1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + loop $while-continue|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store offset=8 + i32.const 1248 + i32.const 1168 + i32.const 23 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=12 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/pinSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/toSpace + i32.const 1588 + i32.const 1584 + i32.store + i32.const 1592 + i32.const 1584 + i32.store + i32.const 1584 + global.set $~lib/rt/itcms/fromSpace + memory.size + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|05 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + br $while-continue|05 + end + end + end + call $~lib/rt/itcms/step + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + br $while-continue|1 + end + end + br $__inlined_func$start:throw$1 + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/compiler/throw.ts b/tests/compiler/throw.ts index a11206af62..a70be6173a 100644 --- a/tests/compiler/throw.ts +++ b/tests/compiler/throw.ts @@ -1,7 +1,6 @@ export function doThrow(): void { var a = "123"; throw new Error("doThrow"); - // __release(a) - DCE'd } function doThrowIf(cond: bool): void { @@ -9,10 +8,8 @@ function doThrowIf(cond: bool): void { if (cond) { let b = "234"; throw new Error("doThrowIf"); - // __release(a+b) - DCE'd } var c = "345"; - // __release(a+c) } doThrowIf(false); @@ -24,12 +21,11 @@ function doThrowIfLoop(max: i32): void { if (i > max) { // never let c = "345"; throw new Error("doThrowIfLoop"); - // __release(a+b+c) - DCE'd } let d = "456"; - // __release(b+d) } var e = "567"; - // __release(a+e) } doThrowIfLoop(10); + +__collect(); diff --git a/tests/compiler/throw.untouched.wat b/tests/compiler/throw.untouched.wat deleted file mode 100644 index 383394d55d..0000000000 --- a/tests/compiler/throw.untouched.wat +++ /dev/null @@ -1,878 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 48) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\002\003\004\00") - (data (i32.const 80) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00") - (data (i32.const 128) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s\00") - (data (i32.const 160) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\003\004\005\00") - (data (i32.const 192) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p\00") - (data (i32.const 240) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\004\005\006\00") - (data (i32.const 272) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\005\006\007\00") - (data (i32.const 304) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w\00") - (data (i32.const 336) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 384) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 432)) - (export "memory" (memory $0)) - (export "doThrow" (func $throw/doThrow)) - (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $throw/doThrowIf (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 32 - local.set $1 - local.get $0 - if - i32.const 64 - local.set $2 - i32.const 96 - i32.const 144 - i32.const 11 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 176 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $throw/doThrowIfLoop (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 32 - local.set $1 - i32.const 0 - local.set $2 - loop $while-continue|0 - local.get $2 - i32.const 1 - i32.add - local.tee $2 - local.get $0 - i32.lt_s - local.set $3 - local.get $3 - if - i32.const 64 - local.set $4 - local.get $2 - local.get $0 - i32.gt_s - if - i32.const 176 - local.set $5 - i32.const 208 - i32.const 144 - i32.const 26 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - i32.const 256 - local.set $5 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - br $while-continue|0 - end - end - i32.const 288 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $start:throw - i32.const 0 - call $throw/doThrowIf - i32.const 10 - call $throw/doThrowIfLoop - ) - (func $throw/doThrow - (local $0 i32) - i32.const 32 - local.set $0 - i32.const 320 - i32.const 144 - i32.const 3 - i32.const 3 - call $~lib/builtins/abort - unreachable - ) - (func $~start - call $start:throw - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 400 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 352 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 352 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 352 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 352 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/compiler/tsconfig.json b/tests/compiler/tsconfig.json index c588333581..9807551662 100644 --- a/tests/compiler/tsconfig.json +++ b/tests/compiler/tsconfig.json @@ -1,9 +1,14 @@ { "extends": "../../std/assembly.json", "compilerOptions": { - "module": "ES6" + "module": "ES6", + "moduleDetection": "force" }, "include": [ "./**/*.ts" + ], + "exclude": [ + "./**/*.d.ts", + "./**/_*.ts" ] } diff --git a/tests/compiler/typealias-errors.json b/tests/compiler/typealias-errors.json new file mode 100644 index 0000000000..91a3ef17ac --- /dev/null +++ b/tests/compiler/typealias-errors.json @@ -0,0 +1,7 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS2300: Duplicate identifier 'A'." + ] +} diff --git a/tests/compiler/typealias-errors.ts b/tests/compiler/typealias-errors.ts new file mode 100644 index 0000000000..988e058572 --- /dev/null +++ b/tests/compiler/typealias-errors.ts @@ -0,0 +1,4 @@ +export function DuplicateTypeAlias(): void { + type A = i32; + type A = i32; +} diff --git a/tests/compiler/typealias.debug.wat b/tests/compiler/typealias.debug.wat new file mode 100644 index 0000000000..a32c177783 --- /dev/null +++ b/tests/compiler/typealias.debug.wat @@ -0,0 +1,334 @@ +(module + (type $0 (func)) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $3 (func (param i32 i32 i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 156)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32924)) + (global $~lib/memory/__heap_base i32 (i32.const 32924)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00i\006\004\00\00\00\00\00\00\00") + (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\18\00\00\00t\00y\00p\00e\00a\00l\00i\00a\00s\00.\00t\00s\00\00\00\00\00") + (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00f\006\004\00\00\00\00\00\00\00") + (data $3 (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $typealias/outer_function~inner_function) + (export "alias" (func $typealias/alias)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $typealias/outer_function~inner_function + (local $alias f64) + f64.const 1 + local.set $alias + i32.const 112 + i32.const 112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 17 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + ) + (func $typealias/outer_function + (local $alias i64) + (local $inner_function i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i64.const 1 + local.set $alias + i32.const 32 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 144 + local.tee $inner_function + i32.store + local.get $inner_function + drop + i32.const 0 + global.set $~argumentsLength + local.get $inner_function + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $typealias/generic_type_alias + i32.const 5 + i32.const 5 + i32.eq + drop + ) + (func $typealias/alias_in_type_arguments + i32.const 6 + i32.const 6 + i32.eq + drop + ) + (func $start:typealias + call $typealias/outer_function + call $typealias/generic_type_alias + call $typealias/alias_in_type_arguments + ) + (func $typealias/alias (param $a i32) (result i32) + local.get $a + return + ) + (func $~start + call $start:typealias + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 32944 + i32.const 32992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) +) diff --git a/tests/compiler/typealias.json b/tests/compiler/typealias.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/typealias.json +++ b/tests/compiler/typealias.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/typealias.optimized.wat b/tests/compiler/typealias.optimized.wat deleted file mode 100644 index e71850c543..0000000000 --- a/tests/compiler/typealias.optimized.wat +++ /dev/null @@ -1,9 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (memory $0 0) - (export "memory" (memory $0)) - (export "alias" (func $typealias/alias)) - (func $typealias/alias (param $0 i32) (result i32) - local.get $0 - ) -) diff --git a/tests/compiler/typealias.release.wat b/tests/compiler/typealias.release.wat new file mode 100644 index 0000000000..997ab9cfcc --- /dev/null +++ b/tests/compiler/typealias.release.wat @@ -0,0 +1,243 @@ +(module + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33948)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\06\00\00\00i\006\004") + (data $1 (i32.const 1068) ",") + (data $1.1 (i32.const 1080) "\02\00\00\00\18\00\00\00t\00y\00p\00e\00a\00l\00i\00a\00s\00.\00t\00s") + (data $2 (i32.const 1116) "\1c") + (data $2.1 (i32.const 1128) "\02\00\00\00\06\00\00\00f\006\004") + (data $3 (i32.const 1148) "\1c") + (data $3.1 (i32.const 1160) "\04\00\00\00\08\00\00\00\01") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $typealias/outer_function~inner_function) + (export "alias" (func $typealias/alias)) + (export "memory" (memory $0)) + (start $~start) + (func $typealias/outer_function~inner_function + i32.const 1136 + i32.const 1136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 17 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + ) + (func $typealias/alias (param $0 i32) (result i32) + local.get $0 + ) + (func $~start + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1180 + i32.lt_s + if + i32.const 33968 + i32.const 34016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1168 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1180 + i32.lt_s + if + i32.const 33968 + i32.const 34016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$5 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) +) diff --git a/tests/compiler/typealias.ts b/tests/compiler/typealias.ts index b6b1449047..a28013ffa6 100644 --- a/tests/compiler/typealias.ts +++ b/tests/compiler/typealias.ts @@ -6,3 +6,29 @@ export type alias = i32; export function alias(a: alias): alias { return a; } + +function outer_function(): void { + type alias = i64; + let alias: alias = 1; + assert(nameof(alias) == nameof()); + function inner_function(): void { + type alias = f64; + let alias: alias = 1; + assert(nameof(alias) == nameof()); + } + inner_function(); +} +outer_function(); + +function generic_type_alias(): void { + type V = Array; + assert(idof>() == idof>()); +} +generic_type_alias(); + + +function alias_in_type_arguments(): void { + type alias = i64; + assert(idof>() == idof>()); +} +alias_in_type_arguments(); diff --git a/tests/compiler/typealias.untouched.wat b/tests/compiler/typealias.untouched.wat deleted file mode 100644 index e76fa8224c..0000000000 --- a/tests/compiler/typealias.untouched.wat +++ /dev/null @@ -1,10 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (memory $0 0) - (table $0 1 funcref) - (export "memory" (memory $0)) - (export "alias" (func $typealias/alias)) - (func $typealias/alias (param $0 i32) (result i32) - local.get $0 - ) -) diff --git a/tests/compiler/typeof-regexp.json b/tests/compiler/typeof-regexp.json new file mode 100644 index 0000000000..5fc499d9a9 --- /dev/null +++ b/tests/compiler/typeof-regexp.json @@ -0,0 +1,7 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "AS100: Not implemented: Regular expressions" + ] +} diff --git a/tests/compiler/typeof-regexp.ts b/tests/compiler/typeof-regexp.ts new file mode 100644 index 0000000000..d4efeb76c4 --- /dev/null +++ b/tests/compiler/typeof-regexp.ts @@ -0,0 +1 @@ +typeof / /; diff --git a/tests/compiler/typeof.debug.wat b/tests/compiler/typeof.debug.wat new file mode 100644 index 0000000000..5d02f023cd --- /dev/null +++ b/tests/compiler/typeof.debug.wat @@ -0,0 +1,3081 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (type $9 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $typeof/SomeNamespace.a i32 (i32.const 1)) + (global $typeof/b (mut i32) (i32.const 1)) + (global $typeof/i (mut i32) (i32.const 1)) + (global $typeof/f (mut f32) (f32.const 1)) + (global $typeof/I (mut i64) (i64.const 1)) + (global $typeof/F (mut f64) (f64.const 1)) + (global $typeof/s (mut i32) (i32.const 240)) + (global $typeof/fn (mut i32) (i32.const 304)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $typeof/c (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 768)) + (global $~lib/memory/__data_end i32 (i32.const 796)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33564)) + (global $~lib/memory/__heap_base i32 (i32.const 33564)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r\00") + (data $1 (i32.const 44) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 92) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t\00") + (data $3 (i32.const 124) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 172) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 220) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 252) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") + (data $7 (i32.const 284) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 316) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data $9 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 448) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 480) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 508) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 572) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 624) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 716) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 768) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\00\00\00\00 \00\00\00") + (table $0 2 2 funcref) + (elem $0 (i32.const 1) $start:typeof~anonymous|0) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $start:typeof~anonymous|0 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 528 + i32.const 592 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 400 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + i32.const 200 + i32.const 100 + i32.rem_u + i32.const 0 + i32.eq + drop + global.get $~lib/rt/itcms/total + i32.const 200 + i32.const 100 + i32.div_u + i32.mul + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 336 + i32.const 672 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 672 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 336 + i32.const 400 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $typeof/s + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $typeof/c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 528 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 336 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $typeof/SomeClass + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $typeof/SomeClass $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:typeof + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33584 + i32.const 33632 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $typeof/SomeClass#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:typeof + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + i32.const 32 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 112 + i32.const 112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 112 + i32.const 112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 112 + i32.const 112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 144 + i32.const 144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 144 + i32.const 144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + i32.const 192 + i32.const 192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 112 + i32.const 112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + i32.const 32 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + drop + i32.const 32 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i64.const 1 + drop + i32.const 32 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 240 + drop + i32.const 272 + i32.const 272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $typeof/b + drop + i32.const 192 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $typeof/i + drop + i32.const 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $typeof/f + drop + i32.const 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $typeof/I + drop + i32.const 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $typeof/F + drop + i32.const 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 32 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $typeof/s + drop + i32.const 272 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $typeof/fn + drop + i32.const 144 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 480 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 624 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $typeof/SomeClass#constructor + global.set $typeof/c + global.get $typeof/c + drop + i32.const 112 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 144 + i32.const 144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 736 + i32.const 736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $typeof/c + drop + i32.const 736 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 45 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $typeof/c + drop + i32.const 736 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/typeof.json b/tests/compiler/typeof.json index bf222c4d2d..d89aa6d3b8 100644 --- a/tests/compiler/typeof.json +++ b/tests/compiler/typeof.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", - "--explicitStart" + "--exportStart", "_start" ] -} \ No newline at end of file +} diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat deleted file mode 100644 index b51c195178..0000000000 --- a/tests/compiler/typeof.optimized.wat +++ /dev/null @@ -1,473 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 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" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r") - (data (i32.const 1056) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t") - (data (i32.const 1088) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s") - (data (i32.const 1136) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") - (data (i32.const 1168) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n") - (data (i32.const 1200) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1232) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") - (data (i32.const 1264) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1296) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d") - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - local.get $0 - i32.load16_u - local.tee $3 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $3 - local.get $4 - i32.sub - return - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - return - end - i32.const 0 - ) - (func $start:typeof - (local $0 i32) - (local $1 i32) - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1152 - i32.const 1152 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1152 - i32.const 1152 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1184 - i32.const 1184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1248 - i32.const 1248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1184 - i32.const 1184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1040 - i32.const 1040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1248 - i32.const 1248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1152 - i32.const 1152 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1376 - memory.size - local.tee $1 - i32.const 16 - i32.shl - local.tee $0 - i32.gt_u - if - local.get $1 - i32.const 66911 - local.get $0 - i32.sub - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $1 - local.get $0 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - i32.const 1344 - i32.const 16 - i32.store - i32.const 1348 - i32.const 1 - i32.store - i32.const 1352 - i32.const 4 - i32.store - i32.const 1356 - i32.const 0 - i32.store - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1152 - i32.const 1152 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1312 - i32.const 1312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1312 - i32.const 1312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1312 - i32.const 1312 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:typeof - ) -) diff --git a/tests/compiler/typeof.release.wat b/tests/compiler/typeof.release.wat new file mode 100644 index 0000000000..5a767c425a --- /dev/null +++ b/tests/compiler/typeof.release.wat @@ -0,0 +1,2054 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) + (type $7 (func (param i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $typeof/c (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34588)) + (global $~started (mut i32) (i32.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\02\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r") + (data $1 (i32.const 1068) ",") + (data $1.1 (i32.const 1080) "\02\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s") + (data $2 (i32.const 1116) "\1c") + (data $2.1 (i32.const 1128) "\02\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t") + (data $3 (i32.const 1148) ",") + (data $3.1 (i32.const 1160) "\02\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") + (data $4 (i32.const 1196) ",") + (data $4.1 (i32.const 1208) "\02\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n") + (data $5 (i32.const 1244) "\1c") + (data $5.1 (i32.const 1256) "\02\00\00\00\02\00\00\001") + (data $6 (i32.const 1276) "\1c") + (data $6.1 (i32.const 1288) "\02\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") + (data $7 (i32.const 1308) "\1c") + (data $7.1 (i32.const 1320) "\04\00\00\00\08\00\00\00\01") + (data $8 (i32.const 1340) "<") + (data $8.1 (i32.const 1352) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $9 (i32.const 1404) "<") + (data $9.1 (i32.const 1416) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $12 (i32.const 1532) "<") + (data $12.1 (i32.const 1544) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $13 (i32.const 1596) ",") + (data $13.1 (i32.const 1608) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $15 (i32.const 1676) "<") + (data $15.1 (i32.const 1688) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $16 (i32.const 1740) ",") + (data $16.1 (i32.const 1752) "\02\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d") + (data $17 (i32.const 1792) "\06\00\00\00 \00\00\00 \00\00\00 ") + (data $17.1 (i32.const 1816) " ") + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1264 + call $~lib/rt/itcms/__visit + global.get $typeof/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1552 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34588 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1792 + i32.load + i32.gt_u + if + i32.const 1552 + i32.const 1616 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34592 + i32.const 0 + i32.store + i32.const 36160 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34592 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34592 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34592 + i32.const 36164 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34592 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34588 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34588 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34588 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1696 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $typeof/SomeClass + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $typeof/SomeClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1820 + i32.lt_s + if + i32.const 34608 + i32.const 34656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:typeof + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1820 + i32.lt_s + if + i32.const 34608 + i32.const 34656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$78 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$78 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $start:typeof + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1820 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1136 + i32.const 1136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1136 + i32.const 1136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1136 + i32.const 1136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1168 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1168 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1216 + i32.const 1216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1136 + i32.const 1136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1296 + i32.const 1296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store + i32.const 1216 + i32.const 1216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 33 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store + i32.const 1296 + i32.const 1296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1168 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 34588 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/pinSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/toSpace + i32.const 1652 + i32.const 1648 + i32.store + i32.const 1656 + i32.const 1648 + i32.store + i32.const 1648 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1820 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1820 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $typeof/c + global.get $~lib/memory/__stack_pointer + i32.const 1136 + i32.store + i32.const 1136 + i32.const 1136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 39 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1168 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1760 + i32.const 1760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store + i32.const 1760 + i32.const 1760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 45 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store + i32.const 1760 + i32.const 1760 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 46 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34608 + i32.const 34656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/typeof.ts b/tests/compiler/typeof.ts index a54c04db72..b29d88663b 100644 --- a/tests/compiler/typeof.ts +++ b/tests/compiler/typeof.ts @@ -1,6 +1,4 @@ -assert(typeof 1 === "number"); // static string === static string precomputes - -// non-precomputed +assert(typeof 1 == "number"); class SomeClass { static someStaticMethod(): void {} diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat deleted file mode 100644 index bb5d963873..0000000000 --- a/tests/compiler/typeof.untouched.wat +++ /dev/null @@ -1,711 +0,0 @@ -(module - (type $none_=>_none (func)) - (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 $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r\00") - (data (i32.const 48) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t\00") - (data (i32.const 80) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s\00") - (data (i32.const 128) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00") - (data (i32.const 160) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n\00") - (data (i32.const 192) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") - (data (i32.const 224) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 256) "\08\00\00\00\01\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 288) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00") - (table $0 2 funcref) - (elem (i32.const 1) $start:typeof~anonymous|0) - (global $typeof/SomeNamespace.a i32 (i32.const 1)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $typeof/b (mut i32) (i32.const 1)) - (global $typeof/i (mut i32) (i32.const 1)) - (global $typeof/f (mut f32) (f32.const 1)) - (global $typeof/I (mut i64) (i64.const 1)) - (global $typeof/F (mut f64) (f64.const 1)) - (global $typeof/s (mut i32) (i32.const 208)) - (global $typeof/fn (mut i32) (i32.const 272)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $typeof/c (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 324)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (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) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $start:typeof~anonymous|0 - nop - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $3 - i32.const 16 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - local.set $5 - local.get $2 - local.get $5 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.const 16 - i32.sub - local.set $6 - local.get $6 - local.get $5 - i32.store - i32.const 1 - drop - local.get $6 - i32.const 1 - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $6 - local.get $0 - i32.store offset=12 - local.get $2 - ) - (func $typeof/SomeClass#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $start:typeof - i32.const 1 - drop - i32.const 32 - i32.const 32 - i32.eq - drop - i32.const 64 - i32.const 64 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 64 - i32.const 64 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 64 - i32.const 64 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 144 - i32.const 144 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 144 - i32.const 144 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - i32.const 176 - i32.const 176 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 64 - i32.const 64 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - i32.const 32 - i32.const 32 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1 - drop - i32.const 32 - i32.const 32 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i64.const 1 - drop - i32.const 32 - i32.const 32 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 208 - drop - i32.const 240 - i32.const 240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $typeof/b - drop - i32.const 176 - i32.const 176 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $typeof/i - drop - i32.const 32 - i32.const 32 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $typeof/f - drop - i32.const 32 - i32.const 32 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $typeof/I - drop - i32.const 32 - i32.const 32 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 33 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $typeof/F - drop - i32.const 32 - i32.const 32 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $typeof/s - drop - i32.const 240 - i32.const 240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $typeof/fn - drop - i32.const 144 - i32.const 144 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - i32.const 0 - call $typeof/SomeClass#constructor - global.set $typeof/c - global.get $typeof/c - drop - i32.const 64 - i32.const 64 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 144 - i32.const 144 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 304 - i32.const 304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $typeof/c - drop - i32.const 304 - i32.const 304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $typeof/c - drop - i32.const 304 - i32.const 304 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:typeof - ) -) diff --git a/tests/compiler/typerecursion.json b/tests/compiler/typerecursion.json new file mode 100644 index 0000000000..947d847ebb --- /dev/null +++ b/tests/compiler/typerecursion.json @@ -0,0 +1,6 @@ +{ + "stderr": [ + "AS100: Not implemented: Recursive types", + "EOF" + ] +} \ No newline at end of file diff --git a/tests/compiler/typerecursion.ts b/tests/compiler/typerecursion.ts new file mode 100644 index 0000000000..d4ad3579ba --- /dev/null +++ b/tests/compiler/typerecursion.ts @@ -0,0 +1,6 @@ +type RecMethod = () => RecReturn; +type RecReturn = RecMethod | null; + +const test: RecMethod = () => null; + +ERROR("EOF"); diff --git a/tests/compiler/unary-errors.json b/tests/compiler/unary-errors.json new file mode 100644 index 0000000000..a855e5c66a --- /dev/null +++ b/tests/compiler/unary-errors.json @@ -0,0 +1,40 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "AS234: Expression does not compile to a value at runtime.", + "const a = (Foo++);", + "TS2541: The target of an assignment must be a variable or a property access.", + "const a = (Foo++);", + "AS234: Expression does not compile to a value at runtime.", + "const b = (++Foo);", + "TS2541: The target of an assignment must be a variable or a property access.", + "const b = (++Foo);", + "AS234: Expression does not compile to a value at runtime.", + "const d = (Foo--);", + "TS2541: The target of an assignment must be a variable or a property access.", + "const d = (Foo--);", + "AS234: Expression does not compile to a value at runtime.", + "const e = (--Foo);", + "TS2541: The target of an assignment must be a variable or a property access.", + "const e = (--Foo);", + "AS234: Expression does not compile to a value at runtime.", + "const g = (Bar++);", + "TS2541: The target of an assignment must be a variable or a property access.", + "const g = (Bar++);", + "AS234: Expression does not compile to a value at runtime.", + "const h = (++Bar);", + "TS2541: The target of an assignment must be a variable or a property access.", + "const h = (++Bar);", + "AS234: Expression does not compile to a value at runtime.", + "const j = (Bar--);", + "TS2541: The target of an assignment must be a variable or a property access.", + "const j = (Bar--);", + "AS234: Expression does not compile to a value at runtime.", + "const k = (--Bar);", + "TS2541: The target of an assignment must be a variable or a property access.", + "const k = (--Bar);", + "AS102: User-defined: \"EOF\"", + "ERROR(\"EOF\");" + ] +} diff --git a/tests/compiler/unary-errors.ts b/tests/compiler/unary-errors.ts new file mode 100644 index 0000000000..4e42d032a7 --- /dev/null +++ b/tests/compiler/unary-errors.ts @@ -0,0 +1,23 @@ +/* eslint-disable no-class-assign */ +/* eslint-disable no-global-assign */ + +class Foo {} +namespace Bar {} + +const a = (Foo++); +const b = (++Foo); +// const c = (Foo += 1); + +const d = (Foo--); +const e = (--Foo); +// const f = (Foo -= 1); + +const g = (Bar++); +const h = (++Bar); +// const i = (Bar += 1); + +const j = (Bar--); +const k = (--Bar); +// const l = (Bar -= 1); + +ERROR("EOF"); \ No newline at end of file diff --git a/tests/compiler/unary.debug.wat b/tests/compiler/unary.debug.wat new file mode 100644 index 0000000000..d29944250f --- /dev/null +++ b/tests/compiler/unary.debug.wat @@ -0,0 +1,393 @@ +(module + (type $0 (func)) + (global $unary/i (mut i32) (i32.const 0)) + (global $unary/I (mut i64) (i64.const 0)) + (global $unary/f (mut f32) (f32.const 0)) + (global $unary/F (mut f64) (f64.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $start:unary + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i64) + (local $4 f32) + (local $5 f32) + (local $6 f64) + (local $7 f64) + i32.const 1 + drop + i32.const -1 + drop + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.const -1 + i32.xor + drop + f64.const 1.25 + drop + f64.const -1.25 + drop + f64.const 1.25 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.eqz + drop + global.get $unary/i + drop + i32.const 0 + global.get $unary/i + i32.sub + drop + global.get $unary/i + i32.eqz + drop + global.get $unary/i + i32.const -1 + i32.xor + drop + global.get $unary/i + i32.const 1 + i32.add + global.set $unary/i + global.get $unary/i + i32.const 1 + i32.sub + global.set $unary/i + global.get $unary/i + i32.const 1 + i32.add + global.set $unary/i + global.get $unary/i + i32.const 1 + i32.sub + global.set $unary/i + i32.const 1 + global.set $unary/i + i32.const -1 + global.set $unary/i + i32.const 1 + i32.eqz + global.set $unary/i + i32.const 1 + i32.const -1 + i32.xor + global.set $unary/i + global.get $unary/i + global.set $unary/i + i32.const 0 + global.get $unary/i + i32.sub + global.set $unary/i + global.get $unary/i + i32.eqz + global.set $unary/i + global.get $unary/i + i32.const -1 + i32.xor + global.set $unary/i + global.get $unary/i + i32.const 1 + i32.add + global.set $unary/i + global.get $unary/i + global.set $unary/i + global.get $unary/i + i32.const 1 + i32.sub + global.set $unary/i + global.get $unary/i + global.set $unary/i + global.get $unary/i + local.tee $0 + i32.const 1 + i32.add + global.set $unary/i + local.get $0 + global.set $unary/i + global.get $unary/i + local.tee $1 + i32.const 1 + i32.sub + global.set $unary/i + local.get $1 + global.set $unary/i + global.get $unary/I + drop + i64.const 0 + global.get $unary/I + i64.sub + drop + global.get $unary/I + i64.const 0 + i64.ne + i32.eqz + drop + global.get $unary/I + i64.const -1 + i64.xor + drop + global.get $unary/I + i64.const 1 + i64.add + global.set $unary/I + global.get $unary/I + i64.const 1 + i64.sub + global.set $unary/I + global.get $unary/I + i64.const 1 + i64.add + global.set $unary/I + global.get $unary/I + i64.const 1 + i64.sub + global.set $unary/I + i64.const 1 + global.set $unary/I + i64.const -1 + global.set $unary/I + i64.const 1 + i64.const 0 + i64.ne + i32.eqz + i64.extend_i32_u + global.set $unary/I + i64.const 1 + i64.const -1 + i64.xor + global.set $unary/I + global.get $unary/I + global.set $unary/I + i64.const 0 + global.get $unary/I + i64.sub + global.set $unary/I + global.get $unary/I + i64.const 0 + i64.ne + i32.eqz + i64.extend_i32_u + global.set $unary/I + global.get $unary/I + i64.const -1 + i64.xor + global.set $unary/I + global.get $unary/I + i64.const 1 + i64.add + global.set $unary/I + global.get $unary/I + global.set $unary/I + global.get $unary/I + i64.const 1 + i64.sub + global.set $unary/I + global.get $unary/I + global.set $unary/I + global.get $unary/I + local.tee $2 + i64.const 1 + i64.add + global.set $unary/I + local.get $2 + global.set $unary/I + global.get $unary/I + local.tee $3 + i64.const 1 + i64.sub + global.set $unary/I + local.get $3 + global.set $unary/I + global.get $unary/f + drop + global.get $unary/f + f32.neg + drop + global.get $unary/f + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.eqz + drop + global.get $unary/f + f32.const 1 + f32.add + global.set $unary/f + global.get $unary/f + f32.const 1 + f32.sub + global.set $unary/f + global.get $unary/f + f32.const 1 + f32.add + global.set $unary/f + global.get $unary/f + f32.const 1 + f32.sub + global.set $unary/f + f32.const 1.25 + global.set $unary/f + f32.const -1.25 + global.set $unary/f + f64.const 1.25 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.eqz + global.set $unary/i + global.get $unary/f + global.set $unary/f + global.get $unary/f + f32.neg + global.set $unary/f + global.get $unary/f + i32.reinterpret_f32 + i32.const 1 + i32.shl + i32.const 2 + i32.sub + i32.const -16777218 + i32.le_u + i32.eqz + global.set $unary/i + global.get $unary/f + f32.const 1 + f32.add + global.set $unary/f + global.get $unary/f + global.set $unary/f + global.get $unary/f + f32.const 1 + f32.sub + global.set $unary/f + global.get $unary/f + global.set $unary/f + global.get $unary/f + local.tee $4 + f32.const 1 + f32.add + global.set $unary/f + local.get $4 + global.set $unary/f + global.get $unary/f + local.tee $5 + f32.const 1 + f32.sub + global.set $unary/f + local.get $5 + global.set $unary/f + global.get $unary/F + drop + global.get $unary/F + f64.neg + drop + global.get $unary/F + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.eqz + drop + global.get $unary/F + f64.const 1 + f64.add + global.set $unary/F + global.get $unary/F + f64.const 1 + f64.sub + global.set $unary/F + global.get $unary/F + f64.const 1 + f64.add + global.set $unary/F + global.get $unary/F + f64.const 1 + f64.sub + global.set $unary/F + f64.const 1.25 + global.set $unary/F + f64.const -1.25 + global.set $unary/F + f64.const 1.25 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.eqz + i64.extend_i32_u + global.set $unary/I + global.get $unary/F + global.set $unary/F + global.get $unary/F + f64.neg + global.set $unary/F + global.get $unary/F + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.eqz + i64.extend_i32_u + global.set $unary/I + global.get $unary/F + f64.const 1 + f64.add + global.set $unary/F + global.get $unary/F + global.set $unary/F + global.get $unary/F + f64.const 1 + f64.sub + global.set $unary/F + global.get $unary/F + global.set $unary/F + global.get $unary/F + local.tee $6 + f64.const 1 + f64.add + global.set $unary/F + local.get $6 + global.set $unary/F + global.get $unary/F + local.tee $7 + f64.const 1 + f64.sub + global.set $unary/F + local.get $7 + global.set $unary/F + ) + (func $~start + call $start:unary + ) +) diff --git a/tests/compiler/unary.json b/tests/compiler/unary.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/unary.json +++ b/tests/compiler/unary.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/unary.optimized.wat b/tests/compiler/unary.optimized.wat deleted file mode 100644 index 28b5241b22..0000000000 --- a/tests/compiler/unary.optimized.wat +++ /dev/null @@ -1,193 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (global $unary/i (mut i32) (i32.const 0)) - (global $unary/I (mut i64) (i64.const 0)) - (global $unary/f (mut f32) (f32.const 0)) - (global $unary/F (mut f64) (f64.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $start:unary - (local $0 i32) - (local $1 i64) - global.get $unary/i - i32.const 1 - i32.add - global.set $unary/i - global.get $unary/i - i32.const 1 - i32.sub - global.set $unary/i - global.get $unary/i - i32.const 1 - i32.add - global.set $unary/i - global.get $unary/i - i32.const 1 - i32.sub - global.set $unary/i - i32.const 1 - global.set $unary/i - i32.const -1 - global.set $unary/i - i32.const 0 - global.set $unary/i - i32.const -2 - global.set $unary/i - i32.const 2 - global.set $unary/i - i32.const 0 - global.set $unary/i - i32.const -1 - global.set $unary/i - i32.const 0 - global.set $unary/i - i32.const -1 - global.set $unary/i - i32.const -1 - local.tee $0 - i32.const 1 - i32.add - global.set $unary/i - local.get $0 - global.set $unary/i - global.get $unary/i - local.tee $0 - i32.const 1 - i32.sub - global.set $unary/i - local.get $0 - global.set $unary/i - global.get $unary/I - i64.const 1 - i64.add - global.set $unary/I - global.get $unary/I - i64.const 1 - i64.sub - global.set $unary/I - global.get $unary/I - i64.const 1 - i64.add - global.set $unary/I - global.get $unary/I - i64.const 1 - i64.sub - global.set $unary/I - i64.const 1 - global.set $unary/I - i64.const -1 - global.set $unary/I - i64.const 0 - global.set $unary/I - i64.const -2 - global.set $unary/I - i64.const 2 - global.set $unary/I - i64.const 0 - global.set $unary/I - i64.const -1 - global.set $unary/I - i64.const 0 - global.set $unary/I - i64.const -1 - global.set $unary/I - i64.const -1 - local.tee $1 - i64.const 1 - i64.add - global.set $unary/I - local.get $1 - global.set $unary/I - global.get $unary/I - local.tee $1 - i64.const 1 - i64.sub - global.set $unary/I - local.get $1 - global.set $unary/I - global.get $unary/f - f32.const 1 - f32.add - global.set $unary/f - global.get $unary/f - f32.const 1 - f32.sub - global.set $unary/f - global.get $unary/f - f32.const 1 - f32.add - global.set $unary/f - global.get $unary/f - f32.const 1 - f32.sub - global.set $unary/f - f32.const 1.25 - global.set $unary/f - f32.const -1.25 - global.set $unary/f - i32.const 0 - global.set $unary/i - f32.const -1.25 - global.set $unary/f - f32.const 1.25 - global.set $unary/f - i32.const 0 - global.set $unary/i - f32.const 2.25 - global.set $unary/f - f32.const 1.25 - global.set $unary/f - f32.const 2.25 - global.set $unary/f - f32.const 1.25 - global.set $unary/f - f32.const 0.25 - global.set $unary/f - f32.const 1.25 - global.set $unary/f - global.get $unary/F - f64.const 1 - f64.add - global.set $unary/F - global.get $unary/F - f64.const 1 - f64.sub - global.set $unary/F - global.get $unary/F - f64.const 1 - f64.add - global.set $unary/F - global.get $unary/F - f64.const 1 - f64.sub - global.set $unary/F - f64.const 1.25 - global.set $unary/F - f64.const -1.25 - global.set $unary/F - i64.const 0 - global.set $unary/I - f64.const -1.25 - global.set $unary/F - f64.const 1.25 - global.set $unary/F - i64.const 0 - global.set $unary/I - f64.const 2.25 - global.set $unary/F - f64.const 1.25 - global.set $unary/F - f64.const 2.25 - global.set $unary/F - f64.const 1.25 - global.set $unary/F - f64.const 0.25 - global.set $unary/F - f64.const 1.25 - global.set $unary/F - ) - (func $~start - call $start:unary - ) -) diff --git a/tests/compiler/unary.release.wat b/tests/compiler/unary.release.wat new file mode 100644 index 0000000000..202341c088 --- /dev/null +++ b/tests/compiler/unary.release.wat @@ -0,0 +1,178 @@ +(module + (type $0 (func)) + (global $unary/i (mut i32) (i32.const 0)) + (global $unary/I (mut i64) (i64.const 0)) + (global $unary/f (mut f32) (f32.const 0)) + (global $unary/F (mut f64) (f64.const 0)) + (memory $0 0) + (export "memory" (memory $0)) + (start $~start) + (func $~start + (local $0 i32) + (local $1 i64) + global.get $unary/i + i32.const 1 + i32.add + global.set $unary/i + global.get $unary/i + i32.const 1 + i32.sub + global.set $unary/i + global.get $unary/i + i32.const 1 + i32.add + global.set $unary/i + global.get $unary/i + i32.const 1 + i32.sub + global.set $unary/i + i32.const 1 + global.set $unary/i + i32.const -1 + global.set $unary/i + i32.const 0 + global.set $unary/i + i32.const -2 + global.set $unary/i + i32.const 2 + global.set $unary/i + i32.const 0 + global.set $unary/i + i32.const -1 + global.set $unary/i + i32.const 0 + global.set $unary/i + i32.const -1 + global.set $unary/i + i32.const 0 + global.set $unary/i + i32.const -1 + global.set $unary/i + i32.const -2 + global.set $unary/i + i32.const -1 + global.set $unary/i + global.get $unary/I + i64.const 1 + i64.add + global.set $unary/I + global.get $unary/I + i64.const 1 + i64.sub + global.set $unary/I + global.get $unary/I + i64.const 1 + i64.add + global.set $unary/I + global.get $unary/I + i64.const 1 + i64.sub + global.set $unary/I + i64.const 1 + global.set $unary/I + i64.const -1 + global.set $unary/I + i64.const 0 + global.set $unary/I + i64.const -2 + global.set $unary/I + i64.const 2 + global.set $unary/I + i64.const 0 + global.set $unary/I + i64.const -1 + global.set $unary/I + i64.const 0 + global.set $unary/I + i64.const -1 + global.set $unary/I + i64.const 0 + global.set $unary/I + i64.const -1 + global.set $unary/I + i64.const -2 + global.set $unary/I + i64.const -1 + global.set $unary/I + global.get $unary/f + f32.const 1 + f32.add + global.set $unary/f + global.get $unary/f + f32.const -1 + f32.add + global.set $unary/f + global.get $unary/f + f32.const 1 + f32.add + global.set $unary/f + global.get $unary/f + f32.const -1 + f32.add + global.set $unary/f + f32.const 1.25 + global.set $unary/f + f32.const -1.25 + global.set $unary/f + i32.const 0 + global.set $unary/i + f32.const -1.25 + global.set $unary/f + f32.const 1.25 + global.set $unary/f + i32.const 0 + global.set $unary/i + f32.const 2.25 + global.set $unary/f + f32.const 1.25 + global.set $unary/f + f32.const 2.25 + global.set $unary/f + f32.const 1.25 + global.set $unary/f + f32.const 0.25 + global.set $unary/f + f32.const 1.25 + global.set $unary/f + global.get $unary/F + f64.const 1 + f64.add + global.set $unary/F + global.get $unary/F + f64.const -1 + f64.add + global.set $unary/F + global.get $unary/F + f64.const 1 + f64.add + global.set $unary/F + global.get $unary/F + f64.const -1 + f64.add + global.set $unary/F + f64.const 1.25 + global.set $unary/F + f64.const -1.25 + global.set $unary/F + i64.const 0 + global.set $unary/I + f64.const -1.25 + global.set $unary/F + f64.const 1.25 + global.set $unary/F + i64.const 0 + global.set $unary/I + f64.const 2.25 + global.set $unary/F + f64.const 1.25 + global.set $unary/F + f64.const 2.25 + global.set $unary/F + f64.const 1.25 + global.set $unary/F + f64.const 0.25 + global.set $unary/F + f64.const 1.25 + global.set $unary/F + ) +) diff --git a/tests/compiler/unary.untouched.wat b/tests/compiler/unary.untouched.wat deleted file mode 100644 index 30b1e390ab..0000000000 --- a/tests/compiler/unary.untouched.wat +++ /dev/null @@ -1,385 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (global $unary/i (mut i32) (i32.const 0)) - (global $unary/I (mut i64) (i64.const 0)) - (global $unary/f (mut f32) (f32.const 0)) - (global $unary/F (mut f64) (f64.const 0)) - (export "memory" (memory $0)) - (start $~start) - (func $start:unary - (local $0 i32) - (local $1 i64) - (local $2 f32) - (local $3 f64) - i32.const 1 - drop - i32.const -1 - drop - i32.const 1 - i32.eqz - drop - i32.const 1 - i32.const -1 - i32.xor - drop - f64.const 1.25 - drop - f64.const -1.25 - drop - f64.const 1.25 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.eqz - drop - global.get $unary/i - drop - i32.const 0 - global.get $unary/i - i32.sub - drop - global.get $unary/i - i32.eqz - drop - global.get $unary/i - i32.const -1 - i32.xor - drop - global.get $unary/i - i32.const 1 - i32.add - global.set $unary/i - global.get $unary/i - i32.const 1 - i32.sub - global.set $unary/i - global.get $unary/i - i32.const 1 - i32.add - global.set $unary/i - global.get $unary/i - i32.const 1 - i32.sub - global.set $unary/i - i32.const 1 - global.set $unary/i - i32.const -1 - global.set $unary/i - i32.const 1 - i32.eqz - global.set $unary/i - i32.const 1 - i32.const -1 - i32.xor - global.set $unary/i - global.get $unary/i - global.set $unary/i - i32.const 0 - global.get $unary/i - i32.sub - global.set $unary/i - global.get $unary/i - i32.eqz - global.set $unary/i - global.get $unary/i - i32.const -1 - i32.xor - global.set $unary/i - global.get $unary/i - i32.const 1 - i32.add - global.set $unary/i - global.get $unary/i - global.set $unary/i - global.get $unary/i - i32.const 1 - i32.sub - global.set $unary/i - global.get $unary/i - global.set $unary/i - global.get $unary/i - local.tee $0 - i32.const 1 - i32.add - global.set $unary/i - local.get $0 - global.set $unary/i - global.get $unary/i - local.tee $0 - i32.const 1 - i32.sub - global.set $unary/i - local.get $0 - global.set $unary/i - global.get $unary/I - drop - i64.const 0 - global.get $unary/I - i64.sub - drop - global.get $unary/I - i64.const 0 - i64.ne - i32.eqz - drop - global.get $unary/I - i64.const -1 - i64.xor - drop - global.get $unary/I - i64.const 1 - i64.add - global.set $unary/I - global.get $unary/I - i64.const 1 - i64.sub - global.set $unary/I - global.get $unary/I - i64.const 1 - i64.add - global.set $unary/I - global.get $unary/I - i64.const 1 - i64.sub - global.set $unary/I - i64.const 1 - global.set $unary/I - i64.const -1 - global.set $unary/I - i64.const 1 - i64.const 0 - i64.ne - i32.eqz - i64.extend_i32_u - global.set $unary/I - i64.const 1 - i64.const -1 - i64.xor - global.set $unary/I - global.get $unary/I - global.set $unary/I - i64.const 0 - global.get $unary/I - i64.sub - global.set $unary/I - global.get $unary/I - i64.const 0 - i64.ne - i32.eqz - i64.extend_i32_u - global.set $unary/I - global.get $unary/I - i64.const -1 - i64.xor - global.set $unary/I - global.get $unary/I - i64.const 1 - i64.add - global.set $unary/I - global.get $unary/I - global.set $unary/I - global.get $unary/I - i64.const 1 - i64.sub - global.set $unary/I - global.get $unary/I - global.set $unary/I - global.get $unary/I - local.tee $1 - i64.const 1 - i64.add - global.set $unary/I - local.get $1 - global.set $unary/I - global.get $unary/I - local.tee $1 - i64.const 1 - i64.sub - global.set $unary/I - local.get $1 - global.set $unary/I - global.get $unary/f - drop - global.get $unary/f - f32.neg - drop - global.get $unary/f - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.eqz - drop - global.get $unary/f - f32.const 1 - f32.add - global.set $unary/f - global.get $unary/f - f32.const 1 - f32.sub - global.set $unary/f - global.get $unary/f - f32.const 1 - f32.add - global.set $unary/f - global.get $unary/f - f32.const 1 - f32.sub - global.set $unary/f - f32.const 1.25 - global.set $unary/f - f32.const -1.25 - global.set $unary/f - f64.const 1.25 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.eqz - global.set $unary/i - global.get $unary/f - global.set $unary/f - global.get $unary/f - f32.neg - global.set $unary/f - global.get $unary/f - i32.reinterpret_f32 - i32.const 1 - i32.shl - i32.const 2 - i32.sub - i32.const -16777218 - i32.le_u - i32.eqz - global.set $unary/i - global.get $unary/f - f32.const 1 - f32.add - global.set $unary/f - global.get $unary/f - global.set $unary/f - global.get $unary/f - f32.const 1 - f32.sub - global.set $unary/f - global.get $unary/f - global.set $unary/f - global.get $unary/f - local.tee $2 - f32.const 1 - f32.add - global.set $unary/f - local.get $2 - global.set $unary/f - global.get $unary/f - local.tee $2 - f32.const 1 - f32.sub - global.set $unary/f - local.get $2 - global.set $unary/f - global.get $unary/F - drop - global.get $unary/F - f64.neg - drop - global.get $unary/F - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.eqz - drop - global.get $unary/F - f64.const 1 - f64.add - global.set $unary/F - global.get $unary/F - f64.const 1 - f64.sub - global.set $unary/F - global.get $unary/F - f64.const 1 - f64.add - global.set $unary/F - global.get $unary/F - f64.const 1 - f64.sub - global.set $unary/F - f64.const 1.25 - global.set $unary/F - f64.const -1.25 - global.set $unary/F - f64.const 1.25 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.eqz - i64.extend_i32_u - global.set $unary/I - global.get $unary/F - global.set $unary/F - global.get $unary/F - f64.neg - global.set $unary/F - global.get $unary/F - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.eqz - i64.extend_i32_u - global.set $unary/I - global.get $unary/F - f64.const 1 - f64.add - global.set $unary/F - global.get $unary/F - global.set $unary/F - global.get $unary/F - f64.const 1 - f64.sub - global.set $unary/F - global.get $unary/F - global.set $unary/F - global.get $unary/F - local.tee $3 - f64.const 1 - f64.add - global.set $unary/F - local.get $3 - global.set $unary/F - global.get $unary/F - local.tee $3 - f64.const 1 - f64.sub - global.set $unary/F - local.get $3 - global.set $unary/F - ) - (func $~start - call $start:unary - ) -) diff --git a/tests/compiler/unicode-identifier.debug.wat b/tests/compiler/unicode-identifier.debug.wat new file mode 100644 index 0000000000..7e69185a00 --- /dev/null +++ b/tests/compiler/unicode-identifier.debug.wat @@ -0,0 +1,12 @@ +(module + (global $"unicode-identifier/\c3\80\c3\88" (mut i32) (i32.const 0)) + (global $"unicode-identifier/\e5\8f\98\e9\87\8f" (mut i32) (i32.const 0)) + (global $"unicode-identifier/\f0\a0\9c\8e\f0\a0\9c\b1" (mut i32) (i32.const 0)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "\c3\80\c3\88" (global $"unicode-identifier/\c3\80\c3\88")) + (export "\e5\8f\98\e9\87\8f" (global $"unicode-identifier/\e5\8f\98\e9\87\8f")) + (export "\f0\a0\9c\8e\f0\a0\9c\b1" (global $"unicode-identifier/\f0\a0\9c\8e\f0\a0\9c\b1")) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/unicode-identifier.json b/tests/compiler/unicode-identifier.json new file mode 100644 index 0000000000..8e0a066281 --- /dev/null +++ b/tests/compiler/unicode-identifier.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--runtime", "stub" + ] +} diff --git a/tests/compiler/unicode-identifier.release.wat b/tests/compiler/unicode-identifier.release.wat new file mode 100644 index 0000000000..35ea64349a --- /dev/null +++ b/tests/compiler/unicode-identifier.release.wat @@ -0,0 +1,10 @@ +(module + (global $"unicode-identifier/\c3\80\c3\88" (mut i32) (i32.const 0)) + (global $"unicode-identifier/\e5\8f\98\e9\87\8f" (mut i32) (i32.const 0)) + (global $"unicode-identifier/\f0\a0\9c\8e\f0\a0\9c\b1" (mut i32) (i32.const 0)) + (memory $0 0) + (export "\c3\80\c3\88" (global $"unicode-identifier/\c3\80\c3\88")) + (export "\e5\8f\98\e9\87\8f" (global $"unicode-identifier/\e5\8f\98\e9\87\8f")) + (export "\f0\a0\9c\8e\f0\a0\9c\b1" (global $"unicode-identifier/\f0\a0\9c\8e\f0\a0\9c\b1")) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/unicode-identifier.ts b/tests/compiler/unicode-identifier.ts new file mode 100644 index 0000000000..f576d58459 --- /dev/null +++ b/tests/compiler/unicode-identifier.ts @@ -0,0 +1,3 @@ +export var ÀÈ: i32 = 0; // c3_80 c3_88 +export var 变量: i32 = 0; // e5_8f_98 e9_87_8f +export var 𠜎𠜱: i32 = 0; // f0_a0_9c_8e f0_a0_9c_b1 diff --git a/tests/compiler/unify-local-flags.debug.wat b/tests/compiler/unify-local-flags.debug.wat new file mode 100644 index 0000000000..d7acc2209e --- /dev/null +++ b/tests/compiler/unify-local-flags.debug.wat @@ -0,0 +1,80 @@ +(module + (type $0 (func)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "testFor" (func $unify-local-flags/testFor)) + (export "testWhile" (func $unify-local-flags/testWhile)) + (export "testDo" (func $unify-local-flags/testDo)) + (export "memory" (memory $0)) + (func $unify-local-flags/testFor + (local $x i32) + (local $i i32) + i32.const 0 + local.set $x + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + i32.const 255 + i32.lt_u + if + local.get $i + local.set $x + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + ) + (func $unify-local-flags/testWhile + (local $x i32) + (local $i i32) + i32.const 0 + local.set $x + i32.const 0 + local.set $i + loop $while-continue|2 + local.get $i + i32.const 255 + i32.and + i32.const 255 + i32.lt_u + if + local.get $i + local.set $x + local.get $i + i32.const 1 + i32.add + local.set $i + br $while-continue|2 + end + end + ) + (func $unify-local-flags/testDo + (local $x i32) + (local $i i32) + i32.const 0 + local.set $x + i32.const 0 + local.set $i + loop $do-loop|2 + local.get $i + local.set $x + local.get $i + i32.const 1 + i32.add + local.tee $i + i32.const 255 + i32.and + i32.const 255 + i32.lt_u + br_if $do-loop|2 + end + ) +) diff --git a/tests/compiler/unify-local-flags.json b/tests/compiler/unify-local-flags.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/unify-local-flags.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/unify-local-flags.release.wat b/tests/compiler/unify-local-flags.release.wat new file mode 100644 index 0000000000..25c3a2b4ca --- /dev/null +++ b/tests/compiler/unify-local-flags.release.wat @@ -0,0 +1,54 @@ +(module + (type $0 (func)) + (memory $0 0) + (export "testFor" (func $unify-local-flags/testFor)) + (export "testWhile" (func $unify-local-flags/testWhile)) + (export "testDo" (func $unify-local-flags/testDo)) + (export "memory" (memory $0)) + (func $unify-local-flags/testFor + (local $0 i32) + loop $for-loop|0 + local.get $0 + i32.const 255 + i32.lt_u + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + ) + (func $unify-local-flags/testWhile + (local $0 i32) + loop $while-continue|2 + local.get $0 + i32.const 255 + i32.and + i32.const 255 + i32.lt_u + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|2 + end + end + ) + (func $unify-local-flags/testDo + (local $0 i32) + loop $do-loop|2 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 255 + i32.and + i32.const 255 + i32.lt_u + br_if $do-loop|2 + end + ) +) diff --git a/tests/compiler/unify-local-flags.ts b/tests/compiler/unify-local-flags.ts new file mode 100644 index 0000000000..cc43254676 --- /dev/null +++ b/tests/compiler/unify-local-flags.ts @@ -0,0 +1,34 @@ +// Test that locals depending on each other don't break recompilation of loops +// when local flags must be unified. In the test cases below, x depends on i's +// wrapped state, so triggers recompilation twice, in this order: +// +// * i WRAPPED, x WRAPPED +// -> recompile with i not WRAPPED due to ++i +// * i not WRAPPED, x WRAPPED +// -> recompile with x not WRAPPED due to x=i +// * i not WRAPPED, x not WRAPPED +// -> success + +export function testFor(): void { + let x: u8 = 0; + for (let i: u8 = 0; i < 255; ++i) { + x = i; + } +} + +export function testWhile(): void { + let x: u8 = 0; + let i: u8 = 0; + while (i < 255) { + x = i; + ++i; + } +} + +export function testDo(): void { + let x: u8 = 0; + let i: u8 = 0; + do { + x = i; + } while (++i < 255); +} diff --git a/tests/compiler/unknown-bool-ident.json b/tests/compiler/unknown-bool-ident.json new file mode 100644 index 0000000000..9808373e96 --- /dev/null +++ b/tests/compiler/unknown-bool-ident.json @@ -0,0 +1,8 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS2304: Cannot find name 'unknown_var'.", + "EOF" + ] +} diff --git a/tests/compiler/unknown-bool-ident.ts b/tests/compiler/unknown-bool-ident.ts new file mode 100644 index 0000000000..2b6c3b4f05 --- /dev/null +++ b/tests/compiler/unknown-bool-ident.ts @@ -0,0 +1,2 @@ +if (1 <= unknown_var) {} +ERROR("EOF"); \ No newline at end of file diff --git a/tests/compiler/unmanaged-errors.json b/tests/compiler/unmanaged-errors.json new file mode 100644 index 0000000000..a636c438c9 --- /dev/null +++ b/tests/compiler/unmanaged-errors.json @@ -0,0 +1,9 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "AS207: Unmanaged classes cannot extend managed classes and vice-versa.", "UnmanagedFoo extends ManagedBase", + "AS207: Unmanaged classes cannot extend managed classes and vice-versa.", "ManagedFoo extends UnmanagedBase", + "EOF" + ] +} diff --git a/tests/compiler/unmanaged-errors.ts b/tests/compiler/unmanaged-errors.ts new file mode 100644 index 0000000000..2e73894bb7 --- /dev/null +++ b/tests/compiler/unmanaged-errors.ts @@ -0,0 +1,12 @@ +class ManagedBase {} +@unmanaged class UnmanagedFoo extends ManagedBase {} // AS207 + +// see: https://github.com/AssemblyScript/assemblyscript/issues/2067 + +@unmanaged class UnmanagedBase {} +class ManagedBaz {} +class ManagedFoo extends UnmanagedBase { // AS207 + constructor(public baz: ManagedBaz) { super(); } +} + +ERROR("EOF"); diff --git a/tests/compiler/unsafe.json b/tests/compiler/unsafe.json index 810a0486df..f44bd65446 100644 --- a/tests/compiler/unsafe.json +++ b/tests/compiler/unsafe.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--noUnsafe" ], "stderr": [ @@ -30,4 +29,4 @@ "AS101: Operation is unsafe.", "foo.baz += 1;", "EOF" ] -} \ No newline at end of file +} diff --git a/tests/compiler/variable-access-in-initializer.json b/tests/compiler/variable-access-in-initializer.json index 500017b069..824a0f8e52 100644 --- a/tests/compiler/variable-access-in-initializer.json +++ b/tests/compiler/variable-access-in-initializer.json @@ -1,10 +1,10 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "TS2448: Variable 'variable-access-in-initializer/a' used before its declaration.", + "TS2448: Variable 'variable-access-in-initializer/c' used before its declaration.", "TS2448: Variable 'variable-access-in-initializer/test~b' used before its declaration.", "EOF" ] -} \ No newline at end of file +} diff --git a/tests/compiler/variable-access-in-initializer.ts b/tests/compiler/variable-access-in-initializer.ts index 3d3ce749e4..85cfbe80ed 100644 --- a/tests/compiler/variable-access-in-initializer.ts +++ b/tests/compiler/variable-access-in-initializer.ts @@ -1,4 +1,5 @@ var a = (a = 4, 3); // TS2448 +let c = typeof c; function test(): void { let b = (b = 4, 3); // TS2448 diff --git a/tests/compiler/void-type-callback-param.json b/tests/compiler/void-type-callback-param.json new file mode 100644 index 0000000000..1d3032d9ea --- /dev/null +++ b/tests/compiler/void-type-callback-param.json @@ -0,0 +1,7 @@ +{ + "asc_flags": [], + "stderr": [ + "AS214: Type 'void' is illegal in this context.", + "EOF" + ] +} diff --git a/tests/compiler/void-type-callback-param.ts b/tests/compiler/void-type-callback-param.ts new file mode 100644 index 0000000000..533c766831 --- /dev/null +++ b/tests/compiler/void-type-callback-param.ts @@ -0,0 +1,7 @@ +class C1 { + then(cb: (value: T) => void): void {} +} + +new C1().then(function (): void {}); + +ERROR("EOF"); diff --git a/tests/compiler/void.debug.wat b/tests/compiler/void.debug.wat new file mode 100644 index 0000000000..3be201b7be --- /dev/null +++ b/tests/compiler/void.debug.wat @@ -0,0 +1,31 @@ +(module + (type $0 (func)) + (type $1 (func (result i32))) + (global $void/u8Val1 (mut i32) (i32.const 1)) + (global $void/u8Val2 (mut i32) (i32.const 255)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32776)) + (global $~lib/memory/__heap_base i32 (i32.const 32776)) + (memory $0 0) + (table $0 1 1 funcref) + (elem $0 (i32.const 1)) + (export "memory" (memory $0)) + (start $~start) + (func $void/anInt (result i32) + i32.const 2 + return + ) + (func $start:void + i32.const 1 + drop + call $void/anInt + drop + global.get $void/u8Val1 + global.get $void/u8Val2 + i32.add + drop + ) + (func $~start + call $start:void + ) +) diff --git a/tests/compiler/void.json b/tests/compiler/void.json index b1da366ff4..1bdd02b1be 100644 --- a/tests/compiler/void.json +++ b/tests/compiler/void.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] -} \ No newline at end of file +} diff --git a/tests/compiler/void.release.wat b/tests/compiler/void.release.wat new file mode 100644 index 0000000000..23da3862e2 --- /dev/null +++ b/tests/compiler/void.release.wat @@ -0,0 +1,4 @@ +(module + (memory $0 0) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/void.untouched.wat b/tests/compiler/void.untouched.wat deleted file mode 100644 index e4ad0c197a..0000000000 --- a/tests/compiler/void.untouched.wat +++ /dev/null @@ -1,26 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (memory $0 0) - (table $0 1 funcref) - (global $void/u8Val1 (mut i32) (i32.const 1)) - (global $void/u8Val2 (mut i32) (i32.const 255)) - (export "memory" (memory $0)) - (start $~start) - (func $void/anInt (result i32) - i32.const 2 - ) - (func $start:void - i32.const 1 - drop - call $void/anInt - drop - global.get $void/u8Val1 - global.get $void/u8Val2 - i32.add - drop - ) - (func $~start - call $start:void - ) -) diff --git a/tests/compiler/wasi/abort.js b/tests/compiler/wasi/abort.js deleted file mode 100644 index 2b08412d0b..0000000000 --- a/tests/compiler/wasi/abort.js +++ /dev/null @@ -1,31 +0,0 @@ -var memory; -var failed; - -exports.preInstantiate = function(imports, exports) { - imports["wasi_snapshot_preview1"] = { - fd_write: function(fd, iov, iov_len, nptr) { - if (fd != 2) failed = "unexpected fd: " + fd; - const messagePtr = new Uint32Array(memory.buffer)[ iov >>> 2 ]; - const messageLen = new Uint32Array(memory.buffer)[(iov >>> 2) + 1]; - const message = Array.from(new Uint8Array(memory.buffer, messagePtr, messageLen)).map(c => String.fromCharCode(c)).join(""); - if (message != "abort: the message in wasi/abort.ts(4:3)\n") failed = "unexpected message: " + message; - }, - proc_exit: function(code) { - if (code != 255) failed = "unexpected exit code: " + code; - } - }; - if (failed) throw Error(failed); -}; - -exports.postInstantiate = function(instance) { - const exports = instance.exports; - memory = exports.memory; - var thrown = false; - try { - exports.test(); - } catch (e) { - thrown = true; - } - if (!thrown) failed = "unexpected missing throw"; - if (failed) throw Error(failed); -}; diff --git a/tests/compiler/wasi/abort.json b/tests/compiler/wasi/abort.json deleted file mode 100644 index 453cb07770..0000000000 --- a/tests/compiler/wasi/abort.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} diff --git a/tests/compiler/wasi/abort.optimized.wat b/tests/compiler/wasi/abort.optimized.wat deleted file mode 100644 index 1f8d5069ad..0000000000 --- a/tests/compiler/wasi/abort.optimized.wat +++ /dev/null @@ -1,359 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param 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 "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) - (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) - (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e") - (data (i32.const 1072) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s") - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "test" (func $wasi/abort/test)) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $4 - local.get $2 - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - if - local.get $0 - i32.load16_u - local.tee $3 - i32.const 128 - i32.lt_u - if (result i32) - local.get $1 - local.get $3 - i32.store8 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 2048 - i32.lt_u - if (result i32) - local.get $1 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - local.get $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 - local.get $1 - i32.const 2 - i32.add - else - local.get $0 - i32.const 2 - i32.add - local.get $4 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - select - if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $1 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $5 - i32.const 1023 - i32.and - i32.or - local.tee $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 24 - i32.shl - local.get $3 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 16 - i32.shl - i32.or - local.get $3 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - local.get $3 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $1 - local.get $3 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - local.get $3 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 - local.get $1 - local.get $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $1 - i32.const 3 - i32.add - end - end - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $1 - local.get $2 - i32.sub - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/wasi/index/abort - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 3 - local.set $1 - i32.const 4 - local.set $0 - i32.const 0 - i32.const 12 - i32.store - i32.const 12 - i64.const 9071471065260641 - i64.store - i32.const 1040 - i32.const 1040 - call $~lib/string/String#get:length - i32.const 19 - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 19 - i32.add - local.tee $3 - i32.const 544106784 - i32.store - local.get $3 - i32.const 4 - i32.add - local.tee $3 - i32.const 1088 - i32.const 1088 - call $~lib/string/String#get:length - local.get $3 - call $~lib/string/String.UTF8.encodeUnsafe - i32.add - local.tee $3 - i32.const 40 - i32.store8 - i32.const 4 - call $~lib/util/number/decimalCount32 - local.tee $4 - local.get $3 - i32.const 1 - i32.add - i32.add - local.set $3 - loop $do-continue|0 - local.get $0 - i32.const 10 - i32.div_u - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - local.get $0 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store8 - local.tee $0 - br_if $do-continue|0 - end - local.get $3 - local.get $4 - i32.add - local.tee $0 - i32.const 58 - i32.store8 - i32.const 3 - call $~lib/util/number/decimalCount32 - local.tee $2 - local.get $0 - i32.const 1 - i32.add - i32.add - local.set $3 - loop $do-continue|1 - local.get $1 - i32.const 10 - i32.div_u - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store8 - local.tee $1 - br_if $do-continue|1 - end - local.get $2 - local.get $3 - i32.add - local.tee $1 - i32.const 2601 - i32.store16 - i32.const 4 - local.get $1 - i32.const -10 - i32.add - i32.store - i32.const 2 - i32.const 0 - i32.const 1 - i32.const 8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - i32.const 255 - call $~lib/bindings/wasi_snapshot_preview1/proc_exit - ) - (func $wasi/abort/test - call $~lib/wasi/index/abort - unreachable - ) - (func $~start - nop - ) -) diff --git a/tests/compiler/wasi/abort.ts b/tests/compiler/wasi/abort.ts deleted file mode 100644 index 731925477b..0000000000 --- a/tests/compiler/wasi/abort.ts +++ /dev/null @@ -1,5 +0,0 @@ -import "wasi"; - -export function test(): void { - assert(false, "the message"); -} diff --git a/tests/compiler/wasi/abort.untouched.wat b/tests/compiler/wasi/abort.untouched.wat deleted file mode 100644 index 44144138d2..0000000000 --- a/tests/compiler/wasi/abort.untouched.wat +++ /dev/null @@ -1,482 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) - (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) - (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e\00") - (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s\00") - (table $0 1 funcref) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "test" (func $wasi/abort/test)) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/string/String.UTF8.encodeUnsafe (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.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $4 - local.get $2 - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - local.set $6 - local.get $6 - if - local.get $0 - i32.load16_u - local.set $7 - local.get $7 - i32.const 128 - i32.lt_u - if - local.get $5 - local.get $7 - i32.store8 - local.get $5 - i32.const 1 - i32.add - local.set $5 - else - local.get $7 - i32.const 2048 - i32.lt_u - if - local.get $7 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - local.set $8 - local.get $7 - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $9 - local.get $5 - local.get $9 - i32.const 8 - i32.shl - local.get $8 - i32.or - i32.store16 - local.get $5 - i32.const 2 - i32.add - local.set $5 - else - local.get $7 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - if (result i32) - local.get $0 - i32.const 2 - i32.add - local.get $4 - i32.lt_u - else - i32.const 0 - end - if - local.get $0 - i32.load16_u offset=2 - local.set $9 - local.get $9 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - i32.const 65536 - local.get $7 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.add - local.get $9 - i32.const 1023 - i32.and - i32.or - local.set $7 - local.get $7 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - local.set $8 - local.get $7 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $10 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $11 - local.get $7 - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $12 - local.get $5 - local.get $12 - i32.const 24 - i32.shl - local.get $11 - i32.const 16 - i32.shl - i32.or - local.get $10 - i32.const 8 - i32.shl - i32.or - local.get $8 - i32.or - i32.store - local.get $5 - i32.const 4 - i32.add - local.set $5 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $7 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - local.set $9 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $12 - local.get $7 - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $11 - local.get $5 - local.get $12 - i32.const 8 - i32.shl - local.get $9 - i32.or - i32.store16 - local.get $5 - local.get $11 - i32.store8 offset=2 - local.get $5 - i32.const 3 - i32.add - local.set $5 - end - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $3 - if - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - i32.const 0 - i32.store8 - end - local.get $5 - local.get $2 - i32.sub - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 100000 - i32.lt_u - if - local.get $0 - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $0 - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $0 - i32.const 10000 - i32.ge_u - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $0 - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - i32.const 12 - i32.store - i32.const 12 - local.set $4 - local.get $4 - i64.const 9071471065260641 - i64.store - local.get $4 - i32.const 7 - i32.add - local.set $4 - local.get $0 - i32.const 0 - i32.ne - if - local.get $4 - local.get $0 - local.get $0 - call $~lib/string/String#get:length - local.get $4 - i32.const 0 - call $~lib/string/String.UTF8.encodeUnsafe - i32.add - local.set $4 - end - local.get $4 - i32.const 544106784 - i32.store - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $1 - i32.const 0 - i32.ne - if - local.get $4 - local.get $1 - local.get $1 - call $~lib/string/String#get:length - local.get $4 - i32.const 0 - call $~lib/string/String.UTF8.encodeUnsafe - i32.add - local.set $4 - end - local.get $4 - local.tee $5 - i32.const 1 - i32.add - local.set $4 - local.get $5 - i32.const 40 - i32.store8 - local.get $2 - call $~lib/util/number/decimalCount32 - local.set $6 - local.get $4 - local.get $6 - i32.add - local.set $4 - loop $do-continue|0 - local.get $2 - i32.const 10 - i32.div_u - local.set $5 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.const 48 - local.get $2 - i32.const 10 - i32.rem_u - i32.add - i32.store8 - local.get $5 - local.set $2 - local.get $2 - local.set $7 - local.get $7 - br_if $do-continue|0 - end - local.get $4 - local.get $6 - i32.add - local.set $4 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.const 58 - i32.store8 - local.get $3 - call $~lib/util/number/decimalCount32 - local.set $6 - local.get $4 - local.get $6 - i32.add - local.set $4 - loop $do-continue|1 - local.get $3 - i32.const 10 - i32.div_u - local.set $7 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.const 48 - local.get $3 - i32.const 10 - i32.rem_u - i32.add - i32.store8 - local.get $7 - local.set $3 - local.get $3 - local.set $8 - local.get $8 - br_if $do-continue|1 - end - local.get $4 - local.get $6 - i32.add - local.set $4 - local.get $4 - i32.const 2601 - i32.store16 - local.get $4 - i32.const 2 - i32.add - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.sub - i32.store offset=4 - i32.const 2 - i32.const 0 - i32.const 1 - i32.const 8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - i32.const 255 - call $~lib/bindings/wasi_snapshot_preview1/proc_exit - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $wasi/abort/test - i32.const 0 - i32.eqz - if - i32.const 32 - i32.const 80 - i32.const 4 - i32.const 3 - call $~lib/wasi/index/abort - unreachable - end - ) - (func $~start - nop - ) -) diff --git a/tests/compiler/wasi/seed.js b/tests/compiler/wasi/seed.js deleted file mode 100644 index 710ac9af40..0000000000 --- a/tests/compiler/wasi/seed.js +++ /dev/null @@ -1,27 +0,0 @@ -var memory; -var failed; - -exports.preInstantiate = function(imports, exports) { - imports["wasi_snapshot_preview1"] = { - fd_write: function(fd, iov, iov_len, nptr) { - if (fd != 2) failed = "unexpected fd: " + fd; - const messagePtr = new Uint32Array(memory.buffer)[ iov >>> 2 ]; - const messageLen = new Uint32Array(memory.buffer)[(iov >>> 2) + 1]; - const message = Array.from(new Uint8Array(memory.buffer, messagePtr, messageLen)).map(c => String.fromCharCode(c)).join(""); - (fd == 1 ? process.stdout : process.stderr).write(message); - }, - proc_exit: function(code) { - console.log("exit: " + code); - }, - random_get: function(buf, len) { - new Uint8Array(memory.buffer, buf, len).set(require("crypto").randomBytes(len)); - } - }; -}; - -exports.postInstantiate = function(instance) { - const exports = instance.exports; - memory = exports.memory; - console.log("Math.random = " + exports.test()); - if (failed) throw Error(failed); -}; diff --git a/tests/compiler/wasi/seed.json b/tests/compiler/wasi/seed.json deleted file mode 100644 index 453cb07770..0000000000 --- a/tests/compiler/wasi/seed.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat deleted file mode 100644 index 1d8aa7d06c..0000000000 --- a/tests/compiler/wasi/seed.optimized.wat +++ /dev/null @@ -1,499 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $none_=>_f64 (func (result f64))) - (type $i32_=>_none (func (param 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 $i64_=>_i64 (func (param i64) (result i64))) - (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) - (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) - (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) - (memory $0 1) - (data (i32.const 1024) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") - (global $~lib/math/random_seeded (mut i32) (i32.const 0)) - (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) - (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) - (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) - (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "test" (func $wasi/seed/test)) - (func $~lib/math/murmurHash3 (param $0 i64) (result i64) - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - ) - (func $~lib/math/splitMix32 (param $0 i32) (result i32) - local.get $0 - i32.const 1831565813 - i32.add - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - local.get $0 - i32.const 1 - i32.or - i32.mul - local.tee $0 - local.get $0 - local.get $0 - i32.const 61 - i32.or - local.get $0 - local.get $0 - i32.const 7 - i32.shr_u - i32.xor - i32.mul - i32.add - i32.xor - local.tee $0 - local.get $0 - i32.const 14 - i32.shr_u - i32.xor - ) - (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1040 - local.set $2 - local.get $0 - i32.const 1 - i32.shl - i32.const 1040 - i32.add - local.set $3 - i32.const 23 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load16_u - local.tee $1 - i32.const 128 - i32.lt_u - if (result i32) - local.get $0 - local.get $1 - i32.store8 - local.get $0 - i32.const 1 - i32.add - else - local.get $1 - i32.const 2048 - i32.lt_u - if (result i32) - local.get $0 - local.get $1 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - local.get $1 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 - local.get $0 - i32.const 2 - i32.add - else - local.get $2 - i32.const 2 - i32.add - local.get $3 - i32.lt_u - i32.const 0 - local.get $1 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - select - if - local.get $2 - i32.load16_u offset=2 - local.tee $4 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $0 - local.get $1 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $4 - i32.const 1023 - i32.and - i32.or - local.tee $1 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 24 - i32.shl - local.get $1 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 16 - i32.shl - i32.or - local.get $1 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - local.get $1 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - local.get $1 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - local.get $1 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 - local.get $0 - local.get $1 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $0 - i32.const 3 - i32.add - end - end - local.set $0 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 23 - i32.sub - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/wasi/index/abort - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 5 - local.set $1 - i32.const 1399 - local.set $0 - i32.const 0 - i32.const 12 - i32.store - i32.const 12 - i64.const 9071471065260641 - i64.store - i32.const 19 - i32.const 544106784 - i32.store - i32.const 1036 - i32.load - i32.const 1 - i32.shr_u - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 23 - i32.add - local.tee $2 - i32.const 40 - i32.store8 - i32.const 1399 - call $~lib/util/number/decimalCount32 - local.tee $4 - local.get $2 - i32.const 1 - i32.add - i32.add - local.set $3 - loop $do-continue|0 - local.get $0 - i32.const 10 - i32.div_u - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - local.get $0 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store8 - local.tee $0 - br_if $do-continue|0 - end - local.get $3 - local.get $4 - i32.add - local.tee $0 - i32.const 58 - i32.store8 - i32.const 5 - call $~lib/util/number/decimalCount32 - local.tee $2 - local.get $0 - i32.const 1 - i32.add - i32.add - local.set $3 - loop $do-continue|1 - local.get $1 - i32.const 10 - i32.div_u - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store8 - local.tee $1 - br_if $do-continue|1 - end - local.get $2 - local.get $3 - i32.add - local.tee $1 - i32.const 2601 - i32.store16 - i32.const 4 - local.get $1 - i32.const -10 - i32.add - i32.store - i32.const 2 - i32.const 0 - i32.const 1 - i32.const 8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - i32.const 255 - call $~lib/bindings/wasi_snapshot_preview1/proc_exit - ) - (func $~lib/math/NativeMath.random (result f64) - (local $0 i64) - (local $1 i64) - global.get $~lib/math/random_seeded - i32.eqz - if - i32.const 0 - i64.load - local.set $0 - loop $do-continue|0 - i32.const 0 - i32.const 8 - call $~lib/bindings/wasi_snapshot_preview1/random_get - drop - i32.const 0 - i64.load - local.tee $1 - i64.eqz - br_if $do-continue|0 - end - i32.const 0 - local.get $0 - i64.store - i32.const 1 - global.set $~lib/math/random_seeded - local.get $1 - f64.reinterpret_i64 - i64.reinterpret_f64 - local.tee $0 - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state1_64 - local.get $0 - i32.wrap_i64 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state0_32 - global.get $~lib/math/random_state0_32 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state1_32 - global.get $~lib/math/random_state1_32 - i32.const 0 - i32.ne - i32.const 0 - global.get $~lib/math/random_state0_32 - i32.const 0 - global.get $~lib/math/random_state1_64 - i64.const 0 - i64.ne - i32.const 0 - global.get $~lib/math/random_state0_64 - i64.const 0 - i64.ne - select - select - select - i32.eqz - if - call $~lib/wasi/index/abort - unreachable - end - end - global.get $~lib/math/random_state0_64 - local.set $1 - global.get $~lib/math/random_state1_64 - local.tee $0 - global.set $~lib/math/random_state0_64 - local.get $0 - local.get $1 - local.get $1 - i64.const 23 - i64.shl - i64.xor - local.tee $1 - local.get $1 - i64.const 17 - i64.shr_u - i64.xor - i64.xor - local.get $0 - i64.const 26 - i64.shr_u - i64.xor - global.set $~lib/math/random_state1_64 - local.get $0 - i64.const 12 - i64.shr_u - i64.const 4607182418800017408 - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - ) - (func $wasi/seed/test (result f64) - call $~lib/math/NativeMath.random - ) - (func $~start - nop - ) -) diff --git a/tests/compiler/wasi/seed.ts b/tests/compiler/wasi/seed.ts deleted file mode 100644 index a315eddef3..0000000000 --- a/tests/compiler/wasi/seed.ts +++ /dev/null @@ -1,5 +0,0 @@ -import "wasi"; - -export function test(): f64 { - return Math.random(); -} diff --git a/tests/compiler/wasi/seed.untouched.wat b/tests/compiler/wasi/seed.untouched.wat deleted file mode 100644 index 1dec2cce96..0000000000 --- a/tests/compiler/wasi/seed.untouched.wat +++ /dev/null @@ -1,679 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_f64 (func (result f64))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i64_=>_none (func (param i64))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) - (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) - (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) - (memory $0 1) - (data (i32.const 16) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") - (table $0 1 funcref) - (global $~lib/math/random_seeded (mut i32) (i32.const 0)) - (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) - (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) - (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) - (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (export "test" (func $wasi/seed/test)) - (func $~lib/wasi/index/seed (result f64) - (local $0 i64) - (local $1 i64) - (local $2 i32) - i32.const 0 - i64.load - local.set $0 - loop $do-continue|0 - i32.const 0 - i32.const 8 - call $~lib/bindings/wasi_snapshot_preview1/random_get - drop - i32.const 0 - i64.load - local.set $1 - local.get $1 - i64.const 0 - i64.ne - i32.eqz - local.set $2 - local.get $2 - br_if $do-continue|0 - end - i32.const 0 - local.get $0 - i64.store - local.get $1 - f64.reinterpret_i64 - ) - (func $~lib/math/murmurHash3 (param $0 i64) (result i64) - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - i64.const -49064778989728563 - i64.mul - local.set $0 - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - i64.const -4265267296055464877 - i64.mul - local.set $0 - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - ) - (func $~lib/math/splitMix32 (param $0 i32) (result i32) - local.get $0 - i32.const 1831565813 - i32.add - local.set $0 - local.get $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - local.get $0 - i32.const 1 - i32.or - i32.mul - local.set $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - i32.const 7 - i32.shr_u - i32.xor - local.get $0 - i32.const 61 - i32.or - i32.mul - i32.add - i32.xor - local.set $0 - local.get $0 - local.get $0 - i32.const 14 - i32.shr_u - i32.xor - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/string/String.UTF8.encodeUnsafe (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.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $4 - local.get $2 - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - local.set $6 - local.get $6 - if - local.get $0 - i32.load16_u - local.set $7 - local.get $7 - i32.const 128 - i32.lt_u - if - local.get $5 - local.get $7 - i32.store8 - local.get $5 - i32.const 1 - i32.add - local.set $5 - else - local.get $7 - i32.const 2048 - i32.lt_u - if - local.get $7 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - local.set $8 - local.get $7 - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $9 - local.get $5 - local.get $9 - i32.const 8 - i32.shl - local.get $8 - i32.or - i32.store16 - local.get $5 - i32.const 2 - i32.add - local.set $5 - else - local.get $7 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - if (result i32) - local.get $0 - i32.const 2 - i32.add - local.get $4 - i32.lt_u - else - i32.const 0 - end - if - local.get $0 - i32.load16_u offset=2 - local.set $9 - local.get $9 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - i32.const 65536 - local.get $7 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.add - local.get $9 - i32.const 1023 - i32.and - i32.or - local.set $7 - local.get $7 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - local.set $8 - local.get $7 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $10 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $11 - local.get $7 - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $12 - local.get $5 - local.get $12 - i32.const 24 - i32.shl - local.get $11 - i32.const 16 - i32.shl - i32.or - local.get $10 - i32.const 8 - i32.shl - i32.or - local.get $8 - i32.or - i32.store - local.get $5 - i32.const 4 - i32.add - local.set $5 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $7 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - local.set $9 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $12 - local.get $7 - i32.const 63 - i32.and - i32.const 128 - i32.or - local.set $11 - local.get $5 - local.get $12 - i32.const 8 - i32.shl - local.get $9 - i32.or - i32.store16 - local.get $5 - local.get $11 - i32.store8 offset=2 - local.get $5 - i32.const 3 - i32.add - local.set $5 - end - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $3 - if - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - i32.const 0 - i32.store8 - end - local.get $5 - local.get $2 - i32.sub - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 100000 - i32.lt_u - if - local.get $0 - i32.const 100 - i32.lt_u - if - i32.const 1 - local.get $0 - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $0 - i32.const 10000 - i32.ge_u - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - return - end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $0 - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable - end - unreachable - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - i32.const 12 - i32.store - i32.const 12 - local.set $4 - local.get $4 - i64.const 9071471065260641 - i64.store - local.get $4 - i32.const 7 - i32.add - local.set $4 - local.get $0 - i32.const 0 - i32.ne - if - local.get $4 - local.get $0 - local.get $0 - call $~lib/string/String#get:length - local.get $4 - i32.const 0 - call $~lib/string/String.UTF8.encodeUnsafe - i32.add - local.set $4 - end - local.get $4 - i32.const 544106784 - i32.store - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $1 - i32.const 0 - i32.ne - if - local.get $4 - local.get $1 - local.get $1 - call $~lib/string/String#get:length - local.get $4 - i32.const 0 - call $~lib/string/String.UTF8.encodeUnsafe - i32.add - local.set $4 - end - local.get $4 - local.tee $5 - i32.const 1 - i32.add - local.set $4 - local.get $5 - i32.const 40 - i32.store8 - local.get $2 - call $~lib/util/number/decimalCount32 - local.set $6 - local.get $4 - local.get $6 - i32.add - local.set $4 - loop $do-continue|0 - local.get $2 - i32.const 10 - i32.div_u - local.set $5 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.const 48 - local.get $2 - i32.const 10 - i32.rem_u - i32.add - i32.store8 - local.get $5 - local.set $2 - local.get $2 - local.set $7 - local.get $7 - br_if $do-continue|0 - end - local.get $4 - local.get $6 - i32.add - local.set $4 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.const 58 - i32.store8 - local.get $3 - call $~lib/util/number/decimalCount32 - local.set $6 - local.get $4 - local.get $6 - i32.add - local.set $4 - loop $do-continue|1 - local.get $3 - i32.const 10 - i32.div_u - local.set $7 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.const 48 - local.get $3 - i32.const 10 - i32.rem_u - i32.add - i32.store8 - local.get $7 - local.set $3 - local.get $3 - local.set $8 - local.get $8 - br_if $do-continue|1 - end - local.get $4 - local.get $6 - i32.add - local.set $4 - local.get $4 - i32.const 2601 - i32.store16 - local.get $4 - i32.const 2 - i32.add - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.sub - i32.store offset=4 - i32.const 2 - i32.const 0 - i32.const 1 - i32.const 8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - i32.const 255 - call $~lib/bindings/wasi_snapshot_preview1/proc_exit - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) - i32.const 1 - global.set $~lib/math/random_seeded - local.get $0 - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - call $~lib/math/murmurHash3 - global.set $~lib/math/random_state1_64 - local.get $0 - i32.wrap_i64 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state0_32 - global.get $~lib/math/random_state0_32 - call $~lib/math/splitMix32 - global.set $~lib/math/random_state1_32 - global.get $~lib/math/random_state0_64 - i64.const 0 - i64.ne - if (result i32) - global.get $~lib/math/random_state1_64 - i64.const 0 - i64.ne - else - i32.const 0 - end - if (result i32) - global.get $~lib/math/random_state0_32 - i32.const 0 - i32.ne - else - i32.const 0 - end - if (result i32) - global.get $~lib/math/random_state1_32 - i32.const 0 - i32.ne - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1399 - i32.const 5 - call $~lib/wasi/index/abort - unreachable - end - ) - (func $~lib/math/NativeMath.random (result f64) - (local $0 i64) - (local $1 i64) - (local $2 i64) - global.get $~lib/math/random_seeded - i32.eqz - if - call $~lib/wasi/index/seed - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - end - global.get $~lib/math/random_state0_64 - local.set $0 - global.get $~lib/math/random_state1_64 - local.set $1 - local.get $1 - global.set $~lib/math/random_state0_64 - local.get $0 - local.get $0 - i64.const 23 - i64.shl - i64.xor - local.set $0 - local.get $0 - local.get $0 - i64.const 17 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - local.get $1 - i64.xor - local.set $0 - local.get $0 - local.get $1 - i64.const 26 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - global.set $~lib/math/random_state1_64 - local.get $1 - i64.const 12 - i64.shr_u - i64.const 4607182418800017408 - i64.or - local.set $2 - local.get $2 - f64.reinterpret_i64 - f64.const 1 - f64.sub - ) - (func $wasi/seed/test (result f64) - call $~lib/math/NativeMath.random - ) - (func $~start - nop - ) -) diff --git a/tests/compiler/wasi/snapshot_preview1.json b/tests/compiler/wasi/snapshot_preview1.json deleted file mode 100644 index b1da366ff4..0000000000 --- a/tests/compiler/wasi/snapshot_preview1.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} \ No newline at end of file diff --git a/tests/compiler/wasi/snapshot_preview1.ts b/tests/compiler/wasi/snapshot_preview1.ts deleted file mode 100644 index 1ee34b7877..0000000000 --- a/tests/compiler/wasi/snapshot_preview1.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { - dirent, - event, - event_fd_readwrite, - fdstat, - filestat, - iovec, - subscription, - subscription_clock, - subscription_fd_readwrite, - signal, - prestat, - prestat_dir -} from "bindings/wasi"; - -import { Target } from "shared/target"; - -assert(offsetof("next") == 0); -assert(offsetof("ino") == 8); -assert(offsetof("namlen") == 16); -assert(offsetof("type") == 20); -assert(offsetof() == 24); - -assert(offsetof("userdata") == 0); -assert(offsetof("error") == 8); -assert(offsetof("type") == 10); -assert(offsetof("nbytes") == 16); -assert(offsetof("flags") == 24); -assert(offsetof() == 32); - -assert(offsetof() == 32); - -assert(offsetof("filetype") == 0); -assert(offsetof("flags") == 2); -assert(offsetof("rights_base") == 8); -assert(offsetof("rights_inheriting") == 16); -assert(offsetof() == 24); - -assert(offsetof("dev") == 0); -assert(offsetof("ino") == 8); -assert(offsetof("filetype") == 16); -assert(offsetof("nlink") == 24); -assert(offsetof("size") == 32); -assert(offsetof("atim") == 40); -assert(offsetof("mtim") == 48); -assert(offsetof("ctim") == 56); -assert(offsetof() == 64); - -assert(offsetof("buf") == 0); -if (ASC_TARGET == Target.WASM32) { - assert(offsetof("buf_len") == 4); - assert(offsetof() == 8); -} else if (ASC_TARGET == Target.WASM64) { - assert(offsetof("buf_len") == 8); - assert(offsetof() == 16); -} else { - assert(false); -} - -assert(offsetof("userdata") == 0); -assert(offsetof("type") == 8); -assert(offsetof("clock_id") == 16); -assert(offsetof("timeout") == 24); -assert(offsetof("precision") == 32); -assert(offsetof("flags") == 40); -assert(offsetof() == 48); - -assert(offsetof("userdata") == 0); -assert(offsetof("type") == 8); -assert(offsetof("file_descriptor") == 16); -assert(offsetof() == 48); - -assert(offsetof() == 48); - -assert(offsetof("type") == 0); -if (ASC_TARGET == Target.WASM32) { - assert(offsetof("name_len") == 4); - assert(offsetof() == 8); - assert(offsetof() == 8); -} else if (ASC_TARGET == Target.WASM64) { - assert(offsetof("name_len") == 8); - assert(offsetof() == 16); - assert(offsetof() == 16); -} else { - assert(false); -} - -// check assignability of mimicked typed enums -var sig: signal = signal.HUP; -sig = signal.KILL; diff --git a/tests/compiler/wasi/snapshot_preview1.untouched.wat b/tests/compiler/wasi/snapshot_preview1.untouched.wat deleted file mode 100644 index 350359727e..0000000000 --- a/tests/compiler/wasi/snapshot_preview1.untouched.wat +++ /dev/null @@ -1,207 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 0) - (table $0 1 funcref) - (global $~lib/shared/target/Target.JS i32 (i32.const 0)) - (global $~lib/shared/target/Target.WASM32 i32 (i32.const 1)) - (global $~lib/shared/target/Target.WASM64 i32 (i32.const 2)) - (global $~lib/ASC_TARGET i32 (i32.const 1)) - (global $wasi/snapshot_preview1/sig (mut i32) (i32.const 1)) - (export "memory" (memory $0)) - (start $~start) - (func $start:wasi/snapshot_preview1 - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 16 - i32.const 16 - i32.eq - drop - i32.const 20 - i32.const 20 - i32.eq - drop - i32.const 24 - i32.const 24 - i32.eq - drop - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 10 - i32.const 10 - i32.eq - drop - i32.const 16 - i32.const 16 - i32.eq - drop - i32.const 24 - i32.const 24 - i32.eq - drop - i32.const 32 - i32.const 32 - i32.eq - drop - i32.const 32 - i32.const 32 - i32.eq - drop - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 16 - i32.const 16 - i32.eq - drop - i32.const 24 - i32.const 24 - i32.eq - drop - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 16 - i32.const 16 - i32.eq - drop - i32.const 24 - i32.const 24 - i32.eq - drop - i32.const 32 - i32.const 32 - i32.eq - drop - i32.const 40 - i32.const 40 - i32.eq - drop - i32.const 48 - i32.const 48 - i32.eq - drop - i32.const 56 - i32.const 56 - i32.eq - drop - i32.const 64 - i32.const 64 - i32.eq - drop - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 1 - global.get $~lib/shared/target/Target.WASM32 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 16 - i32.const 16 - i32.eq - drop - i32.const 24 - i32.const 24 - i32.eq - drop - i32.const 32 - i32.const 32 - i32.eq - drop - i32.const 40 - i32.const 40 - i32.eq - drop - i32.const 48 - i32.const 48 - i32.eq - drop - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 16 - i32.const 16 - i32.eq - drop - i32.const 48 - i32.const 48 - i32.eq - drop - i32.const 48 - i32.const 48 - i32.eq - drop - i32.const 0 - i32.const 0 - i32.eq - drop - i32.const 1 - global.get $~lib/shared/target/Target.WASM32 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - i32.const 9 - global.set $wasi/snapshot_preview1/sig - ) - (func $~start - call $start:wasi/snapshot_preview1 - ) -) diff --git a/tests/compiler/wasi/trace.js b/tests/compiler/wasi/trace.js deleted file mode 100644 index 9a3d00de50..0000000000 --- a/tests/compiler/wasi/trace.js +++ /dev/null @@ -1,23 +0,0 @@ -var memory; -var failed; - -exports.preInstantiate = function(imports, exports) { - imports["wasi_snapshot_preview1"] = { - fd_write: function(fd, iov, iov_len, nptr) { - if (fd != 2) failed = "unexpected fd: " + fd; - const messagePtr = new Uint32Array(memory.buffer)[ iov >>> 2 ]; - const messageLen = new Uint32Array(memory.buffer)[(iov >>> 2) + 1]; - const message = Array.from(new Uint8Array(memory.buffer, messagePtr, messageLen)).map(c => String.fromCharCode(c)).join(""); - process.stderr.write(message); - }, - proc_exit: function(code) { - console.log("exit: " + code); - } - }; -}; - -exports.postInstantiate = function(instance) { - const exports = instance.exports; - memory = exports.memory; - if (failed) throw Error(failed); -}; diff --git a/tests/compiler/wasi/trace.json b/tests/compiler/wasi/trace.json deleted file mode 100644 index 453cb07770..0000000000 --- a/tests/compiler/wasi/trace.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat deleted file mode 100644 index 2b9679f067..0000000000 --- a/tests/compiler/wasi/trace.optimized.wat +++ /dev/null @@ -1,1944 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_f64_f64_f64_f64_f64_=>_none (func (param i32 f64 f64 f64 f64 f64))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) - (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) - (memory $0 1) - (data (i32.const 1024) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e") - (data (i32.const 1064) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $do-continue|0 - local.get $1 - i32.const 10 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 48 - i32.add - i32.store16 - local.get $1 - br_if $do-continue|0 - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 - i32.const -6 - local.get $3 - i32.lt_s - select - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - call $~lib/memory/memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 - i32.const 4 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 offset=4 - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.add - end - end - end - end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - f64.const 0 - f64.lt - local.tee $9 - if (result f64) - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - else - local.get $1 - end - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $2 - i64.const 4503599627370495 - i64.and - i64.add - local.tee $3 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $4 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.tee $8 - i32.const 1 - i32.sub - local.get $4 - i32.sub - local.set $4 - local.get $3 - local.get $3 - i64.const 4503599627370496 - i64.eq - i32.const 1 - i32.add - local.tee $10 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $8 - local.get $10 - i32.sub - local.get $4 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $4 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_f64_s - local.tee $4 - local.get $4 - f64.convert_i32_s - local.get $1 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - local.tee $10 - i32.sub - global.set $~lib/util/number/_K - local.get $10 - i32.const 1064 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $4 - i32.const 1 - i32.shl - i32.const 1760 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $6 - i64.const 4294967295 - i64.and - local.set $2 - local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_plus - local.tee $5 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $5 - i64.const 4294967295 - i64.and - local.tee $5 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $5 - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - local.get $3 - local.get $3 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $8 - local.get $0 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $4 - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $6 - global.get $~lib/util/number/_frc_minus - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $5 - i64.mul - local.get $2 - local.get $5 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $2 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $3 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul - local.get $3 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $9 - call $~lib/util/number/genDigits - local.get $9 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $9 - i32.add - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - local.get $1 - f64.const 0 - f64.eq - if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - return - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne - if - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - return - else - local.get $1 - f64.const 0 - f64.lt - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $2 - i32.const 8 - i32.add - return - end - unreachable - end - local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core - ) - (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - i32.const 12 - i32.store - i32.const 12 - i64.const 9071471065260641 - i64.store - i32.const 19 - i32.const 544106784 - i32.store - i32.const 2000 - i32.const 2000 - call $~lib/string/String#get:length - i32.const 23 - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 23 - i32.add - local.tee $3 - i32.const 40 - i32.store8 - local.get $0 - call $~lib/util/number/decimalCount32 - local.tee $4 - local.get $3 - i32.const 1 - i32.add - i32.add - local.set $3 - loop $do-continue|0 - local.get $0 - i32.const 10 - i32.div_u - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - local.get $0 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store8 - local.tee $0 - br_if $do-continue|0 - end - local.get $3 - local.get $4 - i32.add - local.tee $0 - i32.const 58 - i32.store8 - local.get $1 - call $~lib/util/number/decimalCount32 - local.tee $2 - local.get $0 - i32.const 1 - i32.add - i32.add - local.set $3 - loop $do-continue|1 - local.get $1 - i32.const 10 - i32.div_u - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store8 - local.tee $1 - br_if $do-continue|1 - end - local.get $2 - local.get $3 - i32.add - local.tee $0 - i32.const 2601 - i32.store16 - i32.const 4 - local.get $0 - i32.const -10 - i32.add - i32.store - i32.const 2 - i32.const 0 - i32.const 1 - i32.const 8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - i32.const 255 - call $~lib/bindings/wasi_snapshot_preview1/proc_exit - ) - (func $~lib/wasi/index/trace (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - call $~lib/string/String.UTF8.byteLength - local.tee $7 - i32.const 56 - i32.gt_s - local.set $6 - local.get $7 - i32.const 56 - local.get $6 - select - i32.const 13 - i32.add - call $~lib/rt/stub/__alloc - local.tee $7 - i32.const 8 - i32.add - local.tee $8 - i32.const 4 - i32.add - local.set $6 - local.get $7 - local.get $6 - i32.store - local.get $6 - i64.const 9071406388179572 - i64.store - local.get $7 - i32.const 7 - i32.store offset=4 - i32.const 2 - local.get $7 - i32.const 1 - local.get $8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - local.get $7 - i32.const 1040 - i32.const 1040 - call $~lib/string/String#get:length - local.get $6 - call $~lib/string/String.UTF8.encodeUnsafe - i32.store offset=4 - i32.const 2 - local.get $7 - i32.const 1 - local.get $8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - local.get $0 - if (result i32) - local.get $6 - i32.const 32 - i32.store8 - local.get $6 - i32.const 1 - i32.add - local.tee $6 - local.get $1 - call $~lib/util/number/dtoa_buffered - local.set $9 - local.get $7 - local.get $6 - local.get $9 - local.get $6 - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 1 - i32.add - i32.store offset=4 - i32.const 2 - local.get $7 - i32.const 1 - local.get $8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - local.get $0 - i32.const 1 - i32.gt_s - if - local.get $7 - local.get $6 - local.get $6 - local.get $2 - call $~lib/util/number/dtoa_buffered - local.get $6 - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 1 - i32.add - i32.store offset=4 - i32.const 2 - local.get $7 - i32.const 1 - local.get $8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - local.get $0 - i32.const 2 - i32.gt_s - if - local.get $7 - local.get $6 - local.get $6 - local.get $3 - call $~lib/util/number/dtoa_buffered - local.get $6 - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 1 - i32.add - i32.store offset=4 - i32.const 2 - local.get $7 - i32.const 1 - local.get $8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - local.get $0 - i32.const 3 - i32.gt_s - if - local.get $7 - local.get $6 - local.get $6 - local.get $4 - call $~lib/util/number/dtoa_buffered - local.get $6 - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 1 - i32.add - i32.store offset=4 - i32.const 2 - local.get $7 - i32.const 1 - local.get $8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - local.get $0 - i32.const 4 - i32.gt_s - if - local.get $7 - local.get $6 - local.get $6 - local.get $5 - call $~lib/util/number/dtoa_buffered - local.get $6 - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 1 - i32.add - i32.store offset=4 - i32.const 2 - local.get $7 - i32.const 1 - local.get $8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - end - end - end - end - local.get $6 - i32.const 1 - i32.sub - else - local.get $6 - end - i32.const 10 - i32.store8 - local.get $7 - i32.const 1 - i32.store offset=4 - i32.const 2 - local.get $7 - i32.const 1 - local.get $8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - local.get $7 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $7 - select - i32.eqz - if - i32.const 68 - i32.const 3 - call $~lib/wasi/index/abort - unreachable - end - local.get $7 - i32.const 16 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 1 - i32.ne - if - i32.const 70 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/rt/stub/offset - local.get $7 - local.get $0 - i32.load - i32.add - i32.eq - if - local.get $0 - global.set $~lib/rt/stub/offset - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - i32.const 2032 - global.set $~lib/rt/stub/offset - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/wasi/index/trace - i32.const 1 - f64.const 1.5 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/wasi/index/trace - i32.const 5 - f64.const -2.00001 - f64.const 3 - f64.const nan:0x8000000000000 - f64.const inf - f64.const -inf - call $~lib/wasi/index/trace - ) -) diff --git a/tests/compiler/wasi/trace.ts b/tests/compiler/wasi/trace.ts deleted file mode 100644 index 82eb28d680..0000000000 --- a/tests/compiler/wasi/trace.ts +++ /dev/null @@ -1,5 +0,0 @@ -import "wasi"; - -trace("the message"); -trace("the message", 1, 1.5); -trace("the message", 5, -2.00001, 3, NaN, Infinity, -Infinity); diff --git a/tests/compiler/wasi/trace.untouched.wat b/tests/compiler/wasi/trace.untouched.wat deleted file mode 100644 index 78bd45543a..0000000000 --- a/tests/compiler/wasi/trace.untouched.wat +++ /dev/null @@ -1,3726 +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))) - (type $none_=>_none (func)) - (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_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) - (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) - (memory $0 1) - (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e\00") - (data (i32.const 56) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 1024) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s") - (data (i32.const 1056) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1104) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 1168) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (global $while/ran (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $while/testNested - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 10 - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - loop $while-continue|1 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|1 - end - end - local.get $0 - if - i32.const 0 - i32.const 1040 - i32.const 29 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 30 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - br $while-continue|0 - end - end - local.get $0 - if - i32.const 0 - i32.const 1040 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const -4 - i32.and - local.tee $2 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 - end - local.get $2 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.get $2 - local.get $3 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.set $1 - local.get $4 - local.get $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $5 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - local.get $4 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $5 - i32.load - local.set $2 - end - end - local.get $4 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $4 - i32.const -4 - i32.and - i32.add - local.tee $8 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $8 - local.get $7 - i32.const 3 - i32.and - i32.or - local.tee $4 - i32.store - local.get $3 - else - local.get $1 - end - local.set $1 - end - local.get $5 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const -4 - i32.and - local.tee $3 - i32.const 1073741808 - i32.lt_u - i32.const 0 - local.get $3 - i32.const 16 - i32.ge_u - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.add - i32.add - local.get $5 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 256 - i32.lt_u - if - local.get $3 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $3 - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.tee $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $3 - local.get $4 - i32.const 7 - i32.sub - local.set $6 - end - local.get $3 - i32.const 16 - i32.lt_u - i32.const 0 - local.get $6 - i32.const 23 - i32.lt_u - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $4 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $4 - i32.store offset=20 - local.get $4 - if - local.get $4 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $6 - i32.shl - i32.or - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1072 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 1072 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/maybeInitialize (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - i32.const 1 - memory.size - local.tee $1 - i32.gt_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1216 - local.set $1 - i32.const 1216 - i32.const 0 - i32.store - i32.const 2784 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1216 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 1216 - i32.const 2800 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1216 - global.set $~lib/rt/tlsf/ROOT - end - local.get $1 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 - if (result i32) - local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/collectLock - if - i32.const 0 - i32.const 1072 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 16 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - i32.load offset=1568 - i32.ne - i32.shl - i32.const 65551 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $1 - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1072 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.lt_u - if - i32.const 0 - i32.const 1072 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $2 - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.tee $3 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - i32.const 2 - i32.and - i32.const 16 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $2 - local.get $3 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.tee $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $0 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - call $~lib/rt/rtrace/onalloc - local.get $1 - ) - (func $while/Ref#constructor (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - call $~lib/rt/tlsf/maybeInitialize - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - local.tee $1 - i32.const 1216 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - local.tee $0 - i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 1184 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/rtrace/onincrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1184 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1216 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $start:while - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - global.set $while/ran - i32.const 10 - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - if - i32.const 0 - i32.const 1040 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran - call $while/testNested - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - i32.const 1 - local.set $0 - loop $while-continue|00 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - if (result i32) - local.get $3 - i32.const 1 - i32.add - local.tee $3 - else - i32.const 0 - end - br_if $while-continue|00 - end - local.get $0 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran - loop $while-continue|01 - local.get $2 - i32.const 1 - i32.add - local.tee $2 - i32.const 10 - i32.ne - br_if $while-continue|01 - end - local.get $2 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - i32.const 0 - local.set $2 - loop $while-continue|002 - local.get $2 - i32.const 1 - i32.add - local.tee $2 - i32.const 10 - i32.ne - br_if $while-continue|002 - end - local.get $2 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran - i32.const 10 - local.set $2 - loop $while-continue|013 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|013 - end - end - local.get $2 - if - i32.const 0 - i32.const 1040 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran - i32.const 10 - local.set $0 - i32.const 10 - local.set $1 - loop $while-continue|04 - local.get $0 - if - loop $while-continue|1 - local.get $1 - if - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $while-continue|1 - end - end - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|04 - end - end - local.get $0 - if - i32.const 0 - i32.const 1040 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - if - i32.const 0 - i32.const 1040 - i32.const 136 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran - i32.const 0 - local.set $2 - call $while/Ref#constructor - local.set $0 - loop $while-continue|05 - local.get $0 - if - local.get $2 - i32.const 1 - i32.add - local.tee $2 - i32.const 10 - i32.eq - if - i32.const 0 - local.set $1 - local.get $0 - if - local.get $0 - call $~lib/rt/pure/__release - end - else - call $while/Ref#constructor - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - end - local.get $1 - local.set $0 - br $while-continue|05 - end - end - local.get $2 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 151 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - if - i32.const 0 - i32.const 1040 - i32.const 152 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - local.get $0 - call $~lib/rt/pure/__release - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - i32.const 0 - local.set $2 - call $while/Ref#constructor - local.set $0 - loop $while-continue|06 - block $while-break|0 - call $while/Ref#constructor - local.tee $1 - call $~lib/rt/pure/__release - local.get $1 - if - local.get $2 - i32.const 1 - i32.add - local.tee $2 - i32.const 10 - i32.eq - if - local.get $0 - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 0 - local.set $0 - br $while-break|0 - end - br $while-continue|06 - end - end - end - local.get $2 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1040 - i32.const 171 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - if - i32.const 0 - i32.const 1040 - i32.const 172 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - local.get $0 - call $~lib/rt/pure/__release - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - i32.const 0 - local.set $2 - loop $while-continue|02 - local.get $2 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.lt_s - br_if $while-continue|02 - end - i32.const 1 - global.set $while/ran - i32.const 0 - global.set $while/ran - i32.const 0 - local.set $2 - loop $while-continue|03 - local.get $2 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - i32.lt_s - br_if $while-continue|03 - end - i32.const 1 - global.set $while/ran - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:while - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/rtrace/ondecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1184 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 8 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$default - end - local.get $0 - i32.load offset=16 - local.tee $1 - if - local.get $1 - i32.const 1216 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1184 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.or - i32.store - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/insertBlock - local.get $0 - call $~lib/rt/rtrace/onfree - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 1184 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) -) diff --git a/tests/compiler/while.release.wat b/tests/compiler/while.release.wat new file mode 100644 index 0000000000..c90bf786b3 --- /dev/null +++ b/tests/compiler/while.release.wat @@ -0,0 +1,1975 @@ +(module + (type $0 (func)) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34280)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s") + (data $1 (i32.const 1084) "<") + (data $1.1 (i32.const 1096) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $2 (i32.const 1148) "<") + (data $2.1 (i32.const 1160) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1276) "<") + (data $5.1 (i32.const 1288) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1340) ",") + (data $6.1 (i32.const 1352) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1420) "<") + (data $8.1 (i32.const 1432) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1488) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$128 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34280 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$128 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34288 + i32.const 0 + i32.store + i32.const 35856 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34288 + i32.const 35860 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34288 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34280 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $start:while + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 10 + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + i32.const 0 + local.set $1 + loop $while-continue|01 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + loop $while-continue|1 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|1 + end + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 29 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 30 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + br $while-continue|01 + end + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + local.set $0 + i32.const 0 + local.set $2 + loop $while-continue|03 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + if (result i32) + local.get $2 + i32.const 1 + i32.add + local.tee $2 + else + i32.const 0 + end + br_if $while-continue|03 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $while-continue|05 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $while-continue|05 + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $while-continue|07 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $while-continue|07 + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $while-continue|013 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|013 + end + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + i32.const 10 + local.set $1 + loop $while-continue|015 + local.get $0 + if + loop $while-continue|117 + local.get $1 + if + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|117 + end + end + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|015 + end + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + if + i32.const 0 + i32.const 1056 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 34280 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + call $while/Ref#constructor + local.tee $0 + i32.store + loop $while-continue|15 + local.get $0 + if + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $0 + else + global.get $~lib/memory/__stack_pointer + call $while/Ref#constructor + local.tee $0 + i32.store + end + br $while-continue|15 + end + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 151 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + call $while/Ref#constructor + local.tee $1 + i32.store + loop $while-continue|08 + call $while/Ref#constructor + if + block $while-break|07 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $1 + br $while-break|07 + end + br $while-continue|08 + end + end + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 171 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + if + i32.const 0 + i32.const 1056 + i32.const 172 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + loop $while-continue|019 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 0 + i32.le_s + br_if $while-continue|019 + end + i32.const 0 + local.set $0 + loop $while-continue|021 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 0 + i32.le_s + br_if $while-continue|021 + end + i32.const 0 + local.set $0 + loop $do-loop|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 3 + i32.lt_s + br_if $do-loop|0 + end + local.get $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 217 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|023 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|023 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|125 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|125 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + return + end + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $while/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $while/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + call $start:while + ) + (func $while/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) +) diff --git a/tests/compiler/while.ts b/tests/compiler/while.ts index cd0f4ffd46..1133b27c9f 100644 --- a/tests/compiler/while.ts +++ b/tests/compiler/while.ts @@ -207,3 +207,18 @@ function testIfImplicitContinueElse(): void { ran = false; testIfImplicitContinueElse(); assert(ran); + +function testConditionalContinue(): void { + let i = 0; + do { + i++; + continue; + } while (i < 3); + assert(i == 3); + ran = true; +} +ran = false; +testConditionalContinue(); +assert(ran); + +__collect(); diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat deleted file mode 100644 index 4886d25300..0000000000 --- a/tests/compiler/while.untouched.wat +++ /dev/null @@ -1,2581 +0,0 @@ -(module - (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))) - (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_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) - (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) - (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) - (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) - (memory $0 1) - (data (i32.const 16) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s\00") - (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (table $0 1 funcref) - (global $while/ran (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) - (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) - (global $~started (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 208)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) - (func $while/testSimple - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 10 - local.set $0 - i32.const 0 - local.set $1 - loop $while-continue|0 - local.get $0 - local.set $2 - local.get $2 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - ) - (func $while/testNested - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 10 - local.set $0 - i32.const 0 - local.set $1 - i32.const 0 - local.set $2 - loop $while-continue|0 - local.get $0 - local.set $3 - local.get $3 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - loop $while-continue|1 - local.get $0 - local.set $4 - local.get $4 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|1 - end - end - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 29 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 30 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - br $while-continue|0 - end - end - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - ) - (func $while/testEmpty - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 1 - local.set $0 - i32.const 0 - local.set $1 - loop $while-continue|0 - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - if (result i32) - local.get $1 - i32.const 1 - i32.add - local.tee $1 - else - i32.const 0 - end - local.set $2 - local.get $2 - if - nop - br $while-continue|0 - end - end - local.get $0 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - ) - (func $while/testAlwaysTrue - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - block $while-break|0 - loop $while-continue|0 - i32.const 1 - local.set $1 - local.get $1 - if - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.eq - if - br $while-break|0 - end - br $while-continue|0 - end - end - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - ) - (func $while/testAlwaysTrueNeverBreaks (result i32) - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - loop $while-continue|0 - i32.const 1 - local.set $1 - local.get $1 - if - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.eq - if - local.get $0 - return - end - br $while-continue|0 - end - end - unreachable - ) - (func $while/testAlwaysFalse - (local $0 i32) - i32.const 0 - local.set $0 - i32.const 0 - drop - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - ) - (func $while/testAlwaysBreaks - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - block $while-break|0 - loop $while-continue|0 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.set $1 - local.get $1 - if - br $while-break|0 - end - end - end - local.get $0 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 92 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - ) - (func $while/testAlwaysReturns - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.set $1 - local.get $1 - if - i32.const 1 - global.set $while/ran - return - end - end - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $while/testContinue - (local $0 i32) - (local $1 i32) - i32.const 10 - local.set $0 - loop $while-continue|0 - local.get $0 - local.set $1 - local.get $1 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 - end - end - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - ) - (func $while/testNestedContinue - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 10 - local.set $0 - i32.const 10 - local.set $1 - loop $while-continue|0 - local.get $0 - local.set $2 - local.get $2 - if - loop $while-continue|1 - local.get $1 - local.set $3 - local.get $3 - if - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $while-continue|1 - end - end - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 - end - end - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 136 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - ) - (func $~lib/rt/tlsf/removeBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 277 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 279 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 292 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - i32.eq - if - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - local.get $7 - i32.eqz - if - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 1 - drop - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 205 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 207 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - local.set $6 - local.get $6 - i32.load - local.set $3 - i32.const 1 - drop - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 228 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - i32.const 1 - drop - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 243 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 244 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - i32.const 1 - drop - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 260 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (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) - i32.const 1 - drop - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 386 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - i32.const 1 - drop - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 396 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - i32.const 1 - drop - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 408 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 16 - i32.const 1 - i32.shl - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/maybeInitialize (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) - global.get $~lib/rt/tlsf/ROOT - local.set $0 - local.get $0 - i32.eqz - if - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $1 - memory.size - local.set $2 - local.get $1 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $3 - local.get $2 - i32.gt_s - if (result i32) - local.get $3 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $1 - local.set $0 - local.get $0 - i32.const 0 - i32.store - local.get $0 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 23 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $8 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $8 - loop $for-loop|1 - local.get $8 - i32.const 16 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $0 - local.set $11 - local.get $5 - local.set $10 - local.get $8 - local.set $9 - i32.const 0 - local.set $6 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|1 - end - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 - i32.const 0 - drop - local.get $0 - local.get $5 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $0 - global.set $~lib/rt/tlsf/ROOT - end - local.get $0 - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 112 - i32.const 64 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - i32.const 1 - drop - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 338 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.set $6 - i32.const 1 - drop - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 351 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - else - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 0 - drop - local.get $1 - i32.const 536870904 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - local.set $1 - end - memory.size - local.set $2 - local.get $1 - i32.const 16 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.sub - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $4 - local.get $2 - local.tee $3 - local.get $4 - local.tee $5 - local.get $3 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - i32.const 1 - drop - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 365 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 16 - i32.const 16 - i32.add - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - drop - global.get $~lib/rt/tlsf/collectLock - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 500 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - global.get $~lib/gc/gc.auto - if - i32.const 1 - drop - i32.const 1 - global.set $~lib/rt/tlsf/collectLock - call $~lib/rt/pure/__collect - i32.const 1 - drop - i32.const 0 - global.set $~lib/rt/tlsf/collectLock - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 512 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - end - else - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $4 - i32.const 1 - drop - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 517 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - end - end - i32.const 1 - drop - local.get $4 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 520 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop - local.get $4 - call $~lib/rt/rtrace/onalloc - local.get $4 - ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (param $1 i32) (result i32) - call $~lib/rt/tlsf/maybeInitialize - local.get $0 - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/onincrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $while/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $while/testRef - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.set $0 - i32.const 0 - call $while/Ref#constructor - local.set $1 - loop $while-continue|0 - local.get $1 - local.set $2 - local.get $2 - if - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.eq - if - i32.const 0 - local.tee $3 - local.get $1 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $3 - local.set $1 - else - i32.const 0 - call $while/Ref#constructor - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - local.set $1 - end - br $while-continue|0 - end - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 151 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 152 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - local.get $1 - call $~lib/rt/pure/__release - ) - (func $while/getRef (result i32) - i32.const 0 - call $while/Ref#constructor - ) - (func $while/testRefAutorelease - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.set $0 - i32.const 0 - call $while/Ref#constructor - local.set $1 - block $while-break|0 - loop $while-continue|0 - call $while/getRef - local.tee $2 - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - if - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.eq - if - i32.const 0 - local.tee $2 - local.get $1 - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - br $while-break|0 - end - br $while-continue|0 - end - end - end - local.get $0 - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 171 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 172 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $while/ran - local.get $1 - call $~lib/rt/pure/__release - ) - (func $while/testIfImplicitContinueThen - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - block $while-break|0 - loop $while-continue|0 - i32.const 1 - local.set $1 - local.get $1 - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $0 - i32.const 1 - i32.lt_s - if - nop - else - br $while-break|0 - end - br $while-continue|0 - end - end - end - i32.const 1 - global.set $while/ran - ) - (func $while/testIfImplicitContinueElse - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - block $while-break|0 - loop $while-continue|0 - i32.const 1 - local.set $1 - local.get $1 - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $0 - i32.const 1 - i32.ge_s - if - br $while-break|0 - else - nop - end - br $while-continue|0 - end - end - end - i32.const 1 - global.set $while/ran - ) - (func $start:while - i32.const 0 - global.set $while/ran - call $while/testSimple - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testNested - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 39 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testEmpty - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testAlwaysTrue - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $while/testAlwaysTrueNeverBreaks - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testAlwaysFalse - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 85 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testAlwaysBreaks - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 97 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testAlwaysReturns - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 109 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testContinue - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 122 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testNestedContinue - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 141 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testRef - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testRefAutorelease - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testIfImplicitContinueThen - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 193 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $while/ran - call $while/testIfImplicitContinueElse - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 209 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~start - global.get $~started - if - return - else - i32.const 1 - global.set $~started - end - call $start:while - ) - (func $~lib/rt/pure/__collect - i32.const 1 - drop - return - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop - local.get $1 - call $~lib/rt/rtrace/onfree - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - i32.const 1 - drop - local.get $0 - call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) -) diff --git a/tests/decompiler.js b/tests/decompiler.js deleted file mode 100644 index e8ca8922bf..0000000000 --- a/tests/decompiler.js +++ /dev/null @@ -1,25 +0,0 @@ -var binaryen = global.binaryen = require("../lib/binaryen"); - -require("ts-node").register({ project: require("path").join(__dirname, "..", "src", "tsconfig.json") }); -require("../src/glue/js"); - -var mod = new binaryen.Module(); -var ftype = mod.addFunctionType("i", binaryen.i32, [ ]); -var fn = mod.addFunction("main", ftype, [], - mod.block(null, [ - mod.return( - mod.i32.add( - mod.i32.const(1), - mod.i32.const(2) - ) - ) - ]) -); - -mod.validate(); -mod.emitText(); - -var Decompiler = require("../src/decompiler").Decompiler; -var decompiler = new Decompiler(); -decompiler.decompileFunction(fn); -console.log(decompiler.finish()); diff --git a/tests/extension/assembly/index.as b/tests/extension/assembly/index.as deleted file mode 100644 index 923334a12e..0000000000 --- a/tests/extension/assembly/index.as +++ /dev/null @@ -1,2 +0,0 @@ -import { add } from "./other"; -add(1, 2); diff --git a/tests/extension/assembly/other.as b/tests/extension/assembly/other.as deleted file mode 100644 index caed355404..0000000000 --- a/tests/extension/assembly/other.as +++ /dev/null @@ -1,3 +0,0 @@ -export function add(a: i32, b: i32): i32 { - return a + b; -} diff --git a/tests/extension/package.json b/tests/extension/package.json deleted file mode 100644 index 070b239379..0000000000 --- a/tests/extension/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "scripts": { - "test": "npm run asbuild", - "asbuild": "node ../../bin/asc assembly/index.as --extension .as --runtime none --noEmit" - } -} \ No newline at end of file diff --git a/tests/features.json b/tests/features.json index aa20113fe6..5c47772500 100644 --- a/tests/features.json +++ b/tests/features.json @@ -1,14 +1,4 @@ { - "mutable-globals": { - }, - "simd": { - "asc_flags": [ - "--enable simd" - ], - "v8_flags": [ - "--experimental-wasm-simd" - ] - }, "threads": { "asc_flags": [ "--enable threads" @@ -22,12 +12,14 @@ "--enable reference-types" ], "v8_flags": [ - "--experimental-wasm-reftypes" ] }, - "bigint-integration": { + "gc": { + "asc_flags": [ + "--enable gc" + ], "v8_flags": [ - "--experimental-wasm-bigint" + "--experimental-wasm-gc" ] }, "exception-handling": { @@ -35,7 +27,21 @@ "--enable exception-handling" ], "v8_flags": [ - "--experimental-wasm-eh" + ] + }, + "simd": { + "asc_flags": [ + "--enable simd" + ], + "v8_flags": [ + ] + }, + "relaxed-simd": { + "asc_flags": [ + "--enable relaxed-simd" + ], + "v8_flags": [ + "--experimental-wasm-relaxed-simd" ] } } diff --git a/tests/import/index.ts b/tests/import/index.ts new file mode 100644 index 0000000000..46098f7ece --- /dev/null +++ b/tests/import/index.ts @@ -0,0 +1,3 @@ +import * as as from "../../dist/assemblyscript.js"; +var program: as.Program = as.newProgram(as.newOptions()); +as.parse(program, "", "empty"); diff --git a/tests/packages/.gitignore b/tests/packages/.gitignore deleted file mode 100644 index be98dd7167..0000000000 --- a/tests/packages/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -packages/*/package-lock.json -package-lock.json -!node_modules/ -!packages/**/*/node_modules/ \ No newline at end of file diff --git a/tests/packages/package.json b/tests/packages/package.json deleted file mode 100644 index b3044e2a2a..0000000000 --- a/tests/packages/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "scripts": { - "test": "npm run a && npm run b && npm run c && npm run d && npm run e && npm run f && npm run g && npm run as && npm run h", - "a": "cd ./packages/a && node ../../../../bin/asc assembly/index.ts --noEmit --runtime stub", - "as": "cd ./packages/as && node ../../../../bin/asc as/index.ts --noEmit --runtime stub", - "b": "cd ./packages/b && node ../../../../bin/asc assembly/index.ts --noEmit --runtime stub && node ../../../../bin/asc assembly/index.ts --noEmit --runtime stub --listFiles", - "c": "cd ./packages/c && node ../../../../bin/asc assembly/index.ts --noEmit --runtime stub", - "d": "cd ./packages/d && node ../../../../bin/asc assembly/index.ts --path packages --noEmit --runtime stub --traceResolution", - "e": "cd ./packages/d/packages/e && node ../../../../../../bin/asc assembly/index.ts --noEmit --runtime stub", - "f": "cd ./packages/d/packages/e/packages/f && node ../../../../../../../../bin/asc assembly/index.ts --noEmit --runtime stub", - "g": "cd ./packages/g && node test.js", - "h": "cd ./packages/h && node ../../../../bin/asc assembly/index.ts --noEmit --runtime none --traceResolution" - }, - "author": "Willem Wyndham", - "license": "Apache-2.0" -} diff --git a/tests/packages/packages/a/assembly/a.ts b/tests/packages/packages/a/assembly/a.ts deleted file mode 100644 index 3b795e86cb..0000000000 --- a/tests/packages/packages/a/assembly/a.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function A(): string { - return "A"; -} diff --git a/tests/packages/packages/a/assembly/index.ts b/tests/packages/packages/a/assembly/index.ts deleted file mode 100644 index f1c054c099..0000000000 --- a/tests/packages/packages/a/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./a"; \ No newline at end of file diff --git a/tests/packages/packages/as/as/as.ts b/tests/packages/packages/as/as/as.ts deleted file mode 100644 index 3a3f725f66..0000000000 --- a/tests/packages/packages/as/as/as.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function AS(str: string): string { - return str + "S"; -} diff --git a/tests/packages/packages/as/as/index.ts b/tests/packages/packages/as/as/index.ts deleted file mode 100644 index 74dad6ad7a..0000000000 --- a/tests/packages/packages/as/as/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./as"; diff --git a/tests/packages/packages/as/package.json b/tests/packages/packages/as/package.json deleted file mode 100644 index 1d7d981fe4..0000000000 --- a/tests/packages/packages/as/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "ascMain": "as/index.ts" -} diff --git a/tests/packages/packages/b/assembly/b.ts b/tests/packages/packages/b/assembly/b.ts deleted file mode 100644 index 65b46079da..0000000000 --- a/tests/packages/packages/b/assembly/b.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { A } from "a"; - -export function B(): string { - return "B"; -} - -export function AB(): string { - return A() + B(); -} diff --git a/tests/packages/packages/b/assembly/index.ts b/tests/packages/packages/b/assembly/index.ts deleted file mode 100644 index 14065b7bb3..0000000000 --- a/tests/packages/packages/b/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./b"; diff --git a/tests/packages/packages/b/node_modules/a/assembly/a.ts b/tests/packages/packages/b/node_modules/a/assembly/a.ts deleted file mode 100644 index 3b795e86cb..0000000000 --- a/tests/packages/packages/b/node_modules/a/assembly/a.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function A(): string { - return "A"; -} diff --git a/tests/packages/packages/b/node_modules/a/assembly/index.ts b/tests/packages/packages/b/node_modules/a/assembly/index.ts deleted file mode 100644 index 378dcf843c..0000000000 --- a/tests/packages/packages/b/node_modules/a/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./a"; diff --git a/tests/packages/packages/c/assembly/c.ts b/tests/packages/packages/c/assembly/c.ts deleted file mode 100644 index f1e862d4c5..0000000000 --- a/tests/packages/packages/c/assembly/c.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { B, AB } from "b"; - -export function C(): string { - return "C"; -} - -export function BC(): string { - return B() + C(); -} - -export function ABC(): string { - return AB() + C(); -} diff --git a/tests/packages/packages/c/assembly/index.ts b/tests/packages/packages/c/assembly/index.ts deleted file mode 100644 index 6531c23265..0000000000 --- a/tests/packages/packages/c/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./c"; diff --git a/tests/packages/packages/c/node_modules/b/assembly/b.ts b/tests/packages/packages/c/node_modules/b/assembly/b.ts deleted file mode 100644 index 65b46079da..0000000000 --- a/tests/packages/packages/c/node_modules/b/assembly/b.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { A } from "a"; - -export function B(): string { - return "B"; -} - -export function AB(): string { - return A() + B(); -} diff --git a/tests/packages/packages/c/node_modules/b/assembly/index.ts b/tests/packages/packages/c/node_modules/b/assembly/index.ts deleted file mode 100644 index 14065b7bb3..0000000000 --- a/tests/packages/packages/c/node_modules/b/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./b"; diff --git a/tests/packages/packages/c/node_modules/b/node_modules/a/assembly/a.ts b/tests/packages/packages/c/node_modules/b/node_modules/a/assembly/a.ts deleted file mode 100644 index 3b795e86cb..0000000000 --- a/tests/packages/packages/c/node_modules/b/node_modules/a/assembly/a.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function A(): string { - return "A"; -} diff --git a/tests/packages/packages/c/node_modules/b/node_modules/a/assembly/index.ts b/tests/packages/packages/c/node_modules/b/node_modules/a/assembly/index.ts deleted file mode 100644 index f1c054c099..0000000000 --- a/tests/packages/packages/c/node_modules/b/node_modules/a/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./a"; \ No newline at end of file diff --git a/tests/packages/packages/d/assembly/d.ts b/tests/packages/packages/d/assembly/d.ts deleted file mode 100644 index 34974286d8..0000000000 --- a/tests/packages/packages/d/assembly/d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { C, BC, ABC } from "c"; -import { E } from "e"; -import { AS } from "as"; - -export function D(): string { - return "D"; -} - -export function CD(): string { - return C() + D(); -} - -export function BCD(): string { - return BC() + D(); -} - -export function ABCD(): string { - return ABC() + D(); -} - -export function ABCDE(): string { - return ABCD() + E(); -} - -export function ABCDS(): string { - return AS(ABCD()); -} diff --git a/tests/packages/packages/d/assembly/index.ts b/tests/packages/packages/d/assembly/index.ts deleted file mode 100644 index bc24287205..0000000000 --- a/tests/packages/packages/d/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./d"; diff --git a/tests/packages/packages/d/node_modules/as/notassembly/as.ts b/tests/packages/packages/d/node_modules/as/notassembly/as.ts deleted file mode 100644 index 3a3f725f66..0000000000 --- a/tests/packages/packages/d/node_modules/as/notassembly/as.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function AS(str: string): string { - return str + "S"; -} diff --git a/tests/packages/packages/d/node_modules/as/notassembly/index.ts b/tests/packages/packages/d/node_modules/as/notassembly/index.ts deleted file mode 100644 index 74dad6ad7a..0000000000 --- a/tests/packages/packages/d/node_modules/as/notassembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./as"; diff --git a/tests/packages/packages/d/node_modules/as/package.json b/tests/packages/packages/d/node_modules/as/package.json deleted file mode 100644 index 080e0e0975..0000000000 --- a/tests/packages/packages/d/node_modules/as/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "ascMain": "./notassembly/index.ts" -} \ No newline at end of file diff --git a/tests/packages/packages/d/node_modules/c/assembly/c.ts b/tests/packages/packages/d/node_modules/c/assembly/c.ts deleted file mode 100644 index f1e862d4c5..0000000000 --- a/tests/packages/packages/d/node_modules/c/assembly/c.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { B, AB } from "b"; - -export function C(): string { - return "C"; -} - -export function BC(): string { - return B() + C(); -} - -export function ABC(): string { - return AB() + C(); -} diff --git a/tests/packages/packages/d/node_modules/c/assembly/index.ts b/tests/packages/packages/d/node_modules/c/assembly/index.ts deleted file mode 100644 index 6531c23265..0000000000 --- a/tests/packages/packages/d/node_modules/c/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./c"; diff --git a/tests/packages/packages/d/node_modules/c/node_modules/b/assembly/b.ts b/tests/packages/packages/d/node_modules/c/node_modules/b/assembly/b.ts deleted file mode 100644 index 65b46079da..0000000000 --- a/tests/packages/packages/d/node_modules/c/node_modules/b/assembly/b.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { A } from "a"; - -export function B(): string { - return "B"; -} - -export function AB(): string { - return A() + B(); -} diff --git a/tests/packages/packages/d/node_modules/c/node_modules/b/assembly/index.ts b/tests/packages/packages/d/node_modules/c/node_modules/b/assembly/index.ts deleted file mode 100644 index 14065b7bb3..0000000000 --- a/tests/packages/packages/d/node_modules/c/node_modules/b/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./b"; diff --git a/tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts b/tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts deleted file mode 100644 index 3b795e86cb..0000000000 --- a/tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function A(): string { - return "A"; -} diff --git a/tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts b/tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts deleted file mode 100644 index 378dcf843c..0000000000 --- a/tests/packages/packages/d/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./a"; diff --git a/tests/packages/packages/d/packages/e/assembly/e.ts b/tests/packages/packages/d/packages/e/assembly/e.ts deleted file mode 100644 index 5b9ffc04f8..0000000000 --- a/tests/packages/packages/d/packages/e/assembly/e.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { C } from "c"; - -export function E(): string { - return "E"; -} - -export function EC(): string { - return C() + E(); -} diff --git a/tests/packages/packages/d/packages/e/assembly/index.ts b/tests/packages/packages/d/packages/e/assembly/index.ts deleted file mode 100644 index 1b294003b9..0000000000 --- a/tests/packages/packages/d/packages/e/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./e"; diff --git a/tests/packages/packages/d/packages/e/packages/f/assembly/f.ts b/tests/packages/packages/d/packages/e/packages/f/assembly/f.ts deleted file mode 100644 index b727d02584..0000000000 --- a/tests/packages/packages/d/packages/e/packages/f/assembly/f.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function F(): string { - return "F"; -} diff --git a/tests/packages/packages/d/packages/e/packages/f/assembly/index.ts b/tests/packages/packages/d/packages/e/packages/f/assembly/index.ts deleted file mode 100644 index ec8b811dc9..0000000000 --- a/tests/packages/packages/d/packages/e/packages/f/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./f"; diff --git a/tests/packages/packages/g/assembly/g.ts b/tests/packages/packages/g/assembly/g.ts deleted file mode 100644 index 7e67700d37..0000000000 --- a/tests/packages/packages/g/assembly/g.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ABC } from "c"; -import { A } from "a"; - -export function AAG(): string { - return A() + A() + "G"; -} - -export function ABCG(): string { - return ABC() + "G"; -} diff --git a/tests/packages/packages/g/assembly/index.ts b/tests/packages/packages/g/assembly/index.ts deleted file mode 100644 index 434c8fb2be..0000000000 --- a/tests/packages/packages/g/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./g"; diff --git a/tests/packages/packages/g/node_modules/c/assembly/c.ts b/tests/packages/packages/g/node_modules/c/assembly/c.ts deleted file mode 100644 index f1e862d4c5..0000000000 --- a/tests/packages/packages/g/node_modules/c/assembly/c.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { B, AB } from "b"; - -export function C(): string { - return "C"; -} - -export function BC(): string { - return B() + C(); -} - -export function ABC(): string { - return AB() + C(); -} diff --git a/tests/packages/packages/g/node_modules/c/assembly/index.ts b/tests/packages/packages/g/node_modules/c/assembly/index.ts deleted file mode 100644 index 6531c23265..0000000000 --- a/tests/packages/packages/g/node_modules/c/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./c"; diff --git a/tests/packages/packages/g/node_modules/c/node_modules/b/assembly/b.ts b/tests/packages/packages/g/node_modules/c/node_modules/b/assembly/b.ts deleted file mode 100644 index 65b46079da..0000000000 --- a/tests/packages/packages/g/node_modules/c/node_modules/b/assembly/b.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { A } from "a"; - -export function B(): string { - return "B"; -} - -export function AB(): string { - return A() + B(); -} diff --git a/tests/packages/packages/g/node_modules/c/node_modules/b/assembly/index.ts b/tests/packages/packages/g/node_modules/c/node_modules/b/assembly/index.ts deleted file mode 100644 index 14065b7bb3..0000000000 --- a/tests/packages/packages/g/node_modules/c/node_modules/b/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./b"; diff --git a/tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts b/tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts deleted file mode 100644 index 3b795e86cb..0000000000 --- a/tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/a.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function A(): string { - return "A"; -} diff --git a/tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts b/tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts deleted file mode 100644 index 378dcf843c..0000000000 --- a/tests/packages/packages/g/node_modules/c/node_modules/b/node_modules/a/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./a"; diff --git a/tests/packages/packages/g/test.js b/tests/packages/packages/g/test.js deleted file mode 100644 index 677082bdbb..0000000000 --- a/tests/packages/packages/g/test.js +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env node -const asc = require("../../../../cli/asc"); - -const stderr = asc.createMemoryStream(); -asc.main([ - "assembly/index.ts", - "--noEmit", - "--runtime", "stub", - "--traceResolution" -], { stderr }, err => { - if (stderr.toString().includes("File '~lib/a.ts' not found.")) { - process.exit(0); - } - console.error("Failed!\n" + err); - process.exit(1); -}); diff --git a/tests/packages/packages/h/assembly/index.ts b/tests/packages/packages/h/assembly/index.ts deleted file mode 100644 index 20091e99f3..0000000000 --- a/tests/packages/packages/h/assembly/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { h } from "@foo/bar"; - -export function getH(): i32 { - return h; -} diff --git a/tests/packages/packages/h/node_modules/@foo/bar/assembly/index.ts b/tests/packages/packages/h/node_modules/@foo/bar/assembly/index.ts deleted file mode 100644 index 5cf0d3fbdf..0000000000 --- a/tests/packages/packages/h/node_modules/@foo/bar/assembly/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { h2 } from "@bar/baz"; - -export const h = h2; diff --git a/tests/packages/packages/h/node_modules/@foo/bar/node_modules/@bar/baz/assembly/index.ts b/tests/packages/packages/h/node_modules/@foo/bar/node_modules/@bar/baz/assembly/index.ts deleted file mode 100644 index 0d49ca8468..0000000000 --- a/tests/packages/packages/h/node_modules/@foo/bar/node_modules/@bar/baz/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export const h2 = 3; diff --git a/tests/packages/tsconfig.json b/tests/packages/tsconfig.json deleted file mode 100644 index 21cef40f1d..0000000000 --- a/tests/packages/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../../std/assembly.json", - "include": ["**/*/assembly/**/*.ts"] -} diff --git a/tests/parser.js b/tests/parser.js index c17aa82862..ec3d89f0d9 100644 --- a/tests/parser.js +++ b/tests/parser.js @@ -1,10 +1,14 @@ -const fs = require("fs"); -const path = require("path"); -const os = require("os"); -const glob = require("glob"); -const colorsUtil = require("../cli/util/colors"); -const optionsUtil = require("../cli/util/options"); -const diff = require("./util/diff"); +import fs from "fs"; +import path from "path"; +import os from "os"; +import { fileURLToPath } from "url"; +import { globSync } from "glob"; +import { diff } from "../util/text.js"; +import { stdoutColors } from "../util/terminal.js"; +import * as optionsUtil from "../util/options.js"; +import { Program, Options, ASTBuilder } from "../dist/assemblyscript.js"; + +const dirname = path.dirname(fileURLToPath(import.meta.url)); const config = { "create": { @@ -26,19 +30,19 @@ const argv = opts.arguments; if (args.help) { console.log([ - colorsUtil.white("SYNTAX"), - " " + colorsUtil.cyan("npm run test:parser --") + " [test1, test2 ...] [options]", + stdoutColors.white("SYNTAX"), + " " + stdoutColors.cyan("npm run test:parser --") + " [test1, test2 ...] [options]", "", - colorsUtil.white("OPTIONS"), + stdoutColors.white("OPTIONS"), optionsUtil.help(config) ].join(os.EOL) + os.EOL); process.exit(0); } -const basedir = path.join(__dirname, "parser"); +const basedir = path.join(dirname, "parser"); // Get a list of all tests -var tests = glob.sync("**/!(_*).ts", { cwd: basedir }); +let tests = globSync("**/!(_*).ts", { cwd: basedir, posix: true }); // Run specific tests only if arguments are provided if (argv.length) { @@ -49,50 +53,44 @@ if (argv.length) { } } -require("ts-node").register({ project: path.join(__dirname, "..", "src", "tsconfig.json") }); -require("../src/glue/js"); - -const { Program, Options } = require("../src"); -const ASTBuilder = require("../src/extra/ast").ASTBuilder; - -var failures = 0; +let failures = 0; -tests.forEach(filename => { - if (filename.charAt(0) == "_" || filename.endsWith(".fixture.ts")) return; +for (const filename of tests) { + if (filename.charAt(0) == "_" || filename.endsWith(".fixture.ts")) continue; - console.log(colorsUtil.white("Testing parser/" + filename)); + console.log(stdoutColors.white("Testing parser/" + filename)); - var failed = false; - var program = new Program(new Options()); - var parser = program.parser; - var sourceText = fs.readFileSync(basedir + "/" + filename, { encoding: "utf8" }).replace(/\r?\n/g, "\n"); + let failed = false; + const program = new Program(new Options()); + const parser = program.parser; + const sourceText = fs.readFileSync(basedir + "/" + filename, { encoding: "utf8" }).replace(/\r?\n/g, "\n"); parser.parseFile(sourceText, filename, true); - var serializedSourceText = ASTBuilder.build(program.sources[0]); - var actual = serializedSourceText + parser.diagnostics.map(diagnostic => "// " + diagnostic +"\n").join(""); - var fixture = filename + ".fixture.ts"; + const serializedSourceText = ASTBuilder.build(program.sources[0]); + const actual = serializedSourceText + parser.diagnostics.map(diagnostic => "// " + diagnostic +"\n").join(""); + const fixture = filename + ".fixture.ts"; if (args.create) { fs.writeFileSync(basedir + "/" + fixture, actual, { encoding: "utf8" }); console.log("Created\n"); } else { - var expected = fs.readFileSync(basedir + "/" + fixture, { encoding: "utf8" }).replace(/\r\n/g, "\n"); - var diffs = diff("parser/" + fixture, expected, actual); + const expected = fs.readFileSync(basedir + "/" + fixture, { encoding: "utf8" }).replace(/\r\n/g, "\n"); + const diffs = diff("parser/" + fixture, expected, actual); if (diffs !== null) { failed = true; console.log(diffs); - console.log(colorsUtil.red("diff ERROR")); + console.log(stdoutColors.red("diff ERROR")); } else { - console.log(colorsUtil.green("diff OK")); + console.log(stdoutColors.green("diff OK")); } } console.log(); - if (failed) - ++failures; -}); + if (failed) ++failures; +} if (failures) { process.exitCode = 1; - console.log(colorsUtil.red("ERROR: ") + failures + " parser tests failed"); -} else - console.log("[ " + colorsUtil.white("SUCCESS") + " ]"); + console.log(stdoutColors.red("ERROR: ") + failures + " parser tests failed"); +} else { + console.log("[ " + stdoutColors.white("SUCCESS") + " ]"); +} diff --git a/tests/parser/also-identifier.ts b/tests/parser/also-identifier.ts index 39b5477bba..702cead65b 100644 --- a/tests/parser/also-identifier.ts +++ b/tests/parser/also-identifier.ts @@ -1,6 +1,6 @@ class Foo { as: i32; - declare: i32; + //declare: i32; delete: i32; from: i32; for: i32; @@ -19,7 +19,7 @@ class Foo { var as: i32; var constructor: i32; -var declare: i32; +//var declare: i32; var from: i32; var get: i32; var is: i32; diff --git a/tests/parser/also-identifier.ts.fixture.ts b/tests/parser/also-identifier.ts.fixture.ts index 8de8b51707..8d3188b81e 100644 --- a/tests/parser/also-identifier.ts.fixture.ts +++ b/tests/parser/also-identifier.ts.fixture.ts @@ -1,6 +1,5 @@ class Foo { as: i32; - declare: i32; delete: i32; from: i32; for: i32; @@ -18,7 +17,6 @@ class Foo { } var as: i32; var constructor: i32; -var declare: i32; var from: i32; var get: i32; var is: i32; diff --git a/tests/parser/arrow-functions.ts b/tests/parser/arrow-functions.ts index 8c842f65c2..f6d0b4b98b 100644 --- a/tests/parser/arrow-functions.ts +++ b/tests/parser/arrow-functions.ts @@ -5,7 +5,10 @@ (x?, y?) => x; (x?: i32) => x; x => x; +() => {}; // not an array function (b ? x : y); +b ? (x) : y; +b ? (x):i32=>1 : y; (b ? f : g)(); diff --git a/tests/parser/arrow-functions.ts.fixture.ts b/tests/parser/arrow-functions.ts.fixture.ts index 3f049b2a6a..2a74453d9c 100644 --- a/tests/parser/arrow-functions.ts.fixture.ts +++ b/tests/parser/arrow-functions.ts.fixture.ts @@ -4,5 +4,8 @@ (x?, y?) => x; (x?: i32) => x; x => x; +() => {}; (b ? x : y); +b ? (x) : y; +b ? (x): i32 => 1 : y; (b ? f : g)(); diff --git a/tests/parser/asi.ts b/tests/parser/asi.ts new file mode 100644 index 0000000000..cb15d11762 --- /dev/null +++ b/tests/parser/asi.ts @@ -0,0 +1,25 @@ +function failLet(y: i32): i32 { + let x = y 234; + return x + y; +} + +function failReturn(): i32 { + return 123 456; +} + +function failThrow(): i32 { + throw 123 456; +} + +function successCloseBrace(): i32 { + return 123 } + +function successCloseParen(): i32 { + return ( 123 ) +} + +function successAfterLet(): i32 { + // multiple tn.peeks + let a = 0 + return a +} diff --git a/tests/parser/asi.ts.fixture.ts b/tests/parser/asi.ts.fixture.ts new file mode 100644 index 0000000000..8db95c3eaf --- /dev/null +++ b/tests/parser/asi.ts.fixture.ts @@ -0,0 +1,26 @@ +function failLet(y: i32): i32 { + let x = y; + 234; + return x + y; +} +function failReturn(): i32 { + return 123; + 456; +} +function failThrow(): i32 { + throw 123; + 456; +} +function successCloseBrace(): i32 { + return 123; +} +function successCloseParen(): i32 { + return (123); +} +function successAfterLet(): i32 { + let a = 0; + return a; +} +// ERROR 1012: "Unexpected token." in asi.ts(2,13+0) +// ERROR 1012: "Unexpected token." in asi.ts(7,14+0) +// ERROR 1012: "Unexpected token." in asi.ts(11,13+0) diff --git a/tests/parser/class.ts b/tests/parser/class.ts index e80a34b527..8f9c997e6f 100644 --- a/tests/parser/class.ts +++ b/tests/parser/class.ts @@ -26,4 +26,18 @@ export class Invalid { // 1049: A 'set' accessor must have exactly one parameter. // 1095: A 'set' accessor cannot have a return type annotation. set instanceSetter(): i32 {} + + // 100: Not implemented: Ambient fields + declare declareField: i32; + + // 100: Not implemented: Ambient fields + // 1039: Initializers are not allowed in ambient contexts. + declare declareInitializer: i32 = 0; + + // 1031: 'declare' modifier cannot appear on class elements of this kind. + // 1183: An implementation cannot be declared in ambient contexts. + declare declareMethod(): i32 {} + + // ERROR 1042: "'override' modifier cannot be used here." + override overrideMethod(): void {} } diff --git a/tests/parser/class.ts.fixture.ts b/tests/parser/class.ts.fixture.ts index dfdd064c5b..8d429d4f5c 100644 --- a/tests/parser/class.ts.fixture.ts +++ b/tests/parser/class.ts.fixture.ts @@ -14,6 +14,10 @@ export class Invalid { instanceFunction() {} get instanceGetter(a: i32) {} set instanceSetter() {} + declare declareField: i32; + declare declareInitializer: i32 = 0; + declare declareMethod(): i32 {} + overrideMethod(): void {} } // ERROR 1092: "Type parameters cannot appear on a constructor declaration." in class.ts(15,14+3) // ERROR 1110: "Type expected." in class.ts(18,21+0) @@ -23,3 +27,9 @@ export class Invalid { // ERROR 1094: "An accessor cannot have type parameters." in class.ts(28,21+3) // ERROR 1049: "A 'set' accessor must have exactly one parameter." in class.ts(28,7+14) // ERROR 1095: "A 'set' accessor cannot have a return type annotation." in class.ts(28,26+1) +// ERROR 100: "Not implemented: Ambient fields" in class.ts(31,3+7) +// ERROR 100: "Not implemented: Ambient fields" in class.ts(35,3+7) +// ERROR 1039: "Initializers are not allowed in ambient contexts." in class.ts(35,35+1) +// ERROR 1031: "'declare' modifier cannot appear on class elements of this kind." in class.ts(39,3+7) +// ERROR 1183: "An implementation cannot be declared in ambient contexts." in class.ts(39,32+1) +// ERROR 1042: "'override' modifier cannot be used here." in class.ts(42,3+8) diff --git a/tests/parser/definite-assignment-assertion.ts b/tests/parser/definite-assignment-assertion.ts index 05b3cd4f62..3b22d50510 100644 --- a/tests/parser/definite-assignment-assertion.ts +++ b/tests/parser/definite-assignment-assertion.ts @@ -1,9 +1,20 @@ +let x!: i32; +let x!: i32 = 0; // invalid +function f(): void { + let x!: i32; + let x!: i32 = 0; // invalid +} class C { x!: i32; x!: i32 = 0; // invalid - static x!: i32; // invlaid + static x!: i32; + static x!: i32 = 0; // invalid } -function f(): void { - let x!: i32; - let x!: i32 = 0; // invalid +interface I { + x!: i32; // not permitted + x!: i32 = 0; // invalid, not permitted +} +declare class C2 { + x!: i32; // not permitted + x!: i32 = 0; // invalid, not permitted, initializer generally not allowed } diff --git a/tests/parser/definite-assignment-assertion.ts.fixture.ts b/tests/parser/definite-assignment-assertion.ts.fixture.ts index 0d4b0e0405..5767c70868 100644 --- a/tests/parser/definite-assignment-assertion.ts.fixture.ts +++ b/tests/parser/definite-assignment-assertion.ts.fixture.ts @@ -1,12 +1,31 @@ +let x!: i32; +let x!: i32 = 0; +function f(): void { + let x!: i32; + let x!: i32 = 0; +} class C { x!: i32; x!: i32 = 0; static x!: i32; + static x!: i32 = 0; } -function f(): void { - let x!: i32; - let x!: i32 = 0; +interface I { + x!: i32; + x!: i32 = 0; +} +declare class C2 { + x!: i32; + x!: i32 = 0; } -// ERROR 1255: "A definite assignment assertion '!' is not permitted in this context." in definite-assignment-assertion.ts(3,3+11) -// ERROR 1255: "A definite assignment assertion '!' is not permitted in this context." in definite-assignment-assertion.ts(4,3+14) -// ERROR 1255: "A definite assignment assertion '!' is not permitted in this context." in definite-assignment-assertion.ts(8,7+11) +// ERROR 1263: "Declarations with initializers cannot also have definite assignment assertions." in definite-assignment-assertion.ts(2,15+1) +// ERROR 1263: "Declarations with initializers cannot also have definite assignment assertions." in definite-assignment-assertion.ts(5,17+1) +// ERROR 1263: "Declarations with initializers cannot also have definite assignment assertions." in definite-assignment-assertion.ts(9,3+1) +// ERROR 1263: "Declarations with initializers cannot also have definite assignment assertions." in definite-assignment-assertion.ts(11,10+1) +// ERROR 1255: "A definite assignment assertion '!' is not permitted in this context." in definite-assignment-assertion.ts(14,3+7) +// ERROR 1263: "Declarations with initializers cannot also have definite assignment assertions." in definite-assignment-assertion.ts(15,3+1) +// ERROR 1255: "A definite assignment assertion '!' is not permitted in this context." in definite-assignment-assertion.ts(15,3+11) +// ERROR 1255: "A definite assignment assertion '!' is not permitted in this context." in definite-assignment-assertion.ts(18,3+7) +// ERROR 1039: "Initializers are not allowed in ambient contexts." in definite-assignment-assertion.ts(19,11+1) +// ERROR 1263: "Declarations with initializers cannot also have definite assignment assertions." in definite-assignment-assertion.ts(19,3+1) +// ERROR 1255: "A definite assignment assertion '!' is not permitted in this context." in definite-assignment-assertion.ts(19,3+11) diff --git a/tests/parser/export-default-in-namespace.ts b/tests/parser/export-default-in-namespace.ts new file mode 100644 index 0000000000..a9f1432bb6 --- /dev/null +++ b/tests/parser/export-default-in-namespace.ts @@ -0,0 +1,3 @@ +namespace Foo { + export default bar; +} diff --git a/tests/parser/export-default-in-namespace.ts.fixture.ts b/tests/parser/export-default-in-namespace.ts.fixture.ts new file mode 100644 index 0000000000..2874bfc249 --- /dev/null +++ b/tests/parser/export-default-in-namespace.ts.fixture.ts @@ -0,0 +1 @@ +// ERROR 1319: "A default export can only be used in a module." in export-default-in-namespace.ts(2,3+18) diff --git a/tests/parser/function-type.ts b/tests/parser/function-type.ts index 39f741eaf4..f547cdeefa 100644 --- a/tests/parser/function-type.ts +++ b/tests/parser/function-type.ts @@ -1,4 +1,6 @@ var a: () => void; var b: (a: i32, b: i32) => void; var c: (a: i32, b: i32) => (a: i32, b: i32) => void; -var d: (a) => void; // TS1110 +var d: (a: i32, a: i32) => void; // NOTE: duplicates in type signatures doesn't in TypeScript +var e: (a) => void; // TS1110 +var f: (a: i32, b: i32,) => (a: i32, b: i32,) => void; diff --git a/tests/parser/function-type.ts.fixture.ts b/tests/parser/function-type.ts.fixture.ts index da4cc376b9..e4e6aa7888 100644 --- a/tests/parser/function-type.ts.fixture.ts +++ b/tests/parser/function-type.ts.fixture.ts @@ -1,5 +1,7 @@ var a: () => void; var b: (a: i32, b: i32) => void; var c: (a: i32, b: i32) => (a: i32, b: i32) => void; -var d: (a) => void; -// ERROR 1110: "Type expected." in function-type.ts(4,10+0) +var d: (a: i32, a: i32) => void; +var e: (a) => void; +var f: (a: i32, b: i32) => (a: i32, b: i32) => void; +// ERROR 1110: "Type expected." in function-type.ts(5,10+0) diff --git a/tests/parser/literals.ts b/tests/parser/literals.ts index 1ea260c480..086346090b 100644 --- a/tests/parser/literals.ts +++ b/tests/parser/literals.ts @@ -45,6 +45,18 @@ 0b0; 0b1; 0b1111111111111111111111111111111; +18446744073709551615; +0x7FFFFFFFFFFFFFFF; +0x8000000000000000; +0x9E19DB92B4E31BA9; +0xFFFFFFFFFFFFFFFF; +-9223372036854775807; +-9223372036854775808; +-0x7FFFFFFFFFFFFFFF; +-0x8000000000000000; +-1; +-0x1; +-123; 0.0; 0.123; .0; @@ -56,7 +68,52 @@ 1.0e+1; 1e-1; 1.0e-1; +""; +"\""; "123"; "1\"23"; "1\"2\\3"; "\0\n\\n\r"; +``; +`123`; +`123${a}`; +`123${a}456`; +`123${a}456${b}`; +`123${a}456${b}789`; +`${a}`; +`${a}456`; +`${a}456${b}`; +`${a}456${b}789`; +`${a}${b}`; +`${a}456${b}`; +`123${a}${b}`; +`${a}${b}789`; +`\``; +`\`${a}\`${b}\``; +tag`123`; +ns.tag`123`; +tag`\unicode\xGG\u\x`; // see https://tc39.es/proposal-template-literal-revision/ + +// invalid +1..; +3u8; +4b; +5-; +6=; +7_; +1.a; +2.0b; +`\unicode\xGG\u\x`; + +// doesn't fit into i64 / u64 +18446744073709551616; +0x10000000000000000; +0xFFF000000000000FFF; +0o2000000000000000000000; +0b10000000000000000000000000000000000000000000000000000000000000000; + +// technically invalid, but not handled by AS yet, TS1005: ';' expected +3 4; +5 c; +6.7 d; +a b; diff --git a/tests/parser/literals.ts.fixture.ts b/tests/parser/literals.ts.fixture.ts index dde9856d2d..3f71d572ae 100644 --- a/tests/parser/literals.ts.fixture.ts +++ b/tests/parser/literals.ts.fixture.ts @@ -45,6 +45,18 @@ 0; 1; 2147483647; +18446744073709551615; +9223372036854775807; +9223372036854775808; +11392378155556871081; +18446744073709551615; +-9223372036854775807; +-9223372036854775808; +-9223372036854775807; +-9223372036854775808; +-1; +-1; +-123; 0; 0.123; 0; @@ -56,7 +68,64 @@ 10; 0.1; 0.1; +""; +"\""; "123"; "1\"23"; "1\"2\\3"; "\0\n\\n\r"; +``; +`123`; +`123${a}`; +`123${a}456`; +`123${a}456${b}`; +`123${a}456${b}789`; +`${a}`; +`${a}456`; +`${a}456${b}`; +`${a}456${b}789`; +`${a}${b}`; +`${a}456${b}`; +`123${a}${b}`; +`${a}${b}789`; +`\``; +`\`${a}\`${b}\``; +tag`123`; +ns.tag`123`; +tag`\\unicode\\xGG\\u\\x`; +4; +b; +7; +1; +a; +2; +b; +`icodeGx`; +0; +0; +17293822569102708735; +0; +0; +3; +4; +5; +c; +6.7; +d; +a; +b; +// ERROR 1109: "Expression expected." in literals.ts(98,4+1) +// ERROR 1351: "An identifier or keyword cannot immediately follow a numeric literal." in literals.ts(99,2+0) +// ERROR 1351: "An identifier or keyword cannot immediately follow a numeric literal." in literals.ts(100,2+0) +// ERROR 1109: "Expression expected." in literals.ts(101,3+1) +// ERROR 6188: "Numeric separators are not allowed here." in literals.ts(103,2+0) +// ERROR 1351: "An identifier or keyword cannot immediately follow a numeric literal." in literals.ts(104,3+0) +// ERROR 1351: "An identifier or keyword cannot immediately follow a numeric literal." in literals.ts(105,4+0) +// ERROR 1125: "Hexadecimal digit expected." in literals.ts(106,4+1) +// ERROR 1125: "Hexadecimal digit expected." in literals.ts(106,12+1) +// ERROR 1125: "Hexadecimal digit expected." in literals.ts(106,16+1) +// ERROR 236: "Literal '18446744073709551616' does not fit into 'i64' or 'u64' types." in literals.ts(109,1+20) +// ERROR 236: "Literal '0x10000000000000000' does not fit into 'i64' or 'u64' types." in literals.ts(110,1+19) +// ERROR 236: "Literal '0xFFF000000000000FFF' does not fit into 'i64' or 'u64' types." in literals.ts(111,1+20) +// ERROR 236: "Literal '0o2000000000000000000000' does not fit into 'i64' or 'u64' types." in literals.ts(112,1+24) +// ERROR 236: "Literal '0b10000000000000000000000000000000000000000000000000000000000000000' does not fit into 'i64' or 'u64' types." in literals.ts(113,1+67) diff --git a/tests/parser/module.ts b/tests/parser/module.ts new file mode 100644 index 0000000000..c22817d3ea --- /dev/null +++ b/tests/parser/module.ts @@ -0,0 +1,2 @@ +module "abc"; +declare module "abc"; diff --git a/tests/parser/module.ts.fixture.ts b/tests/parser/module.ts.fixture.ts new file mode 100644 index 0000000000..c22817d3ea --- /dev/null +++ b/tests/parser/module.ts.fixture.ts @@ -0,0 +1,2 @@ +module "abc"; +declare module "abc"; diff --git a/tests/parser/namespace.ts b/tests/parser/namespace.ts index 63fb767f7d..93ee68a315 100644 --- a/tests/parser/namespace.ts +++ b/tests/parser/namespace.ts @@ -1,7 +1,9 @@ +let outerVar:i32 = 0; declare namespace A { namespace B { export namespace C { var aVar: i32; + outerVar = 42; // 2695: Namespace can only have declarations. const aConst: i32; const aConstInvalid: i32 = 0; // 1039: Initializers are not allowed in ambient contexts. function aFunc(): void; diff --git a/tests/parser/namespace.ts.fixture.ts b/tests/parser/namespace.ts.fixture.ts index 8ef853742f..bcce2c0167 100644 --- a/tests/parser/namespace.ts.fixture.ts +++ b/tests/parser/namespace.ts.fixture.ts @@ -1,3 +1,4 @@ +let outerVar: i32 = 0; declare namespace A { namespace B { export namespace C { @@ -14,5 +15,6 @@ declare namespace A { } } } -// ERROR 1039: "Initializers are not allowed in ambient contexts." in namespace.ts(6,32+1) -// ERROR 1183: "An implementation cannot be declared in ambient contexts." in namespace.ts(8,37+1) +// ERROR 2695: "Namespace can only have declarations." in namespace.ts(6,7+0) +// ERROR 1039: "Initializers are not allowed in ambient contexts." in namespace.ts(8,32+1) +// ERROR 1183: "An implementation cannot be declared in ambient contexts." in namespace.ts(10,37+1) diff --git a/tests/parser/type-signature.ts b/tests/parser/type-signature.ts index 1e28ea4bf5..3e3dc2e49a 100644 --- a/tests/parser/type-signature.ts +++ b/tests/parser/type-signature.ts @@ -1,5 +1,9 @@ type foo = () => void; type foo = (() => void) | null; +type foo = null | (() => void); +type foo = (() => void)[]; +type foo = (() => void)[] | null; +type foo = null | (() => void)[]; type foo = (a: i32) => i32; type foo = (a?: i32) => i32; type foo = (this: AClass, a: i32) => i32; diff --git a/tests/parser/type-signature.ts.fixture.ts b/tests/parser/type-signature.ts.fixture.ts index 1e28ea4bf5..731c9cde40 100644 --- a/tests/parser/type-signature.ts.fixture.ts +++ b/tests/parser/type-signature.ts.fixture.ts @@ -1,5 +1,9 @@ type foo = () => void; type foo = (() => void) | null; +type foo = (() => void) | null; +type foo = Array<() => void>; +type foo = Array<() => void> | null; +type foo = Array<() => void> | null; type foo = (a: i32) => i32; type foo = (a?: i32) => i32; type foo = (this: AClass, a: i32) => i32; diff --git a/tests/parser/type.ts b/tests/parser/type.ts index ed301e91d2..609e12c9a3 100644 --- a/tests/parser/type.ts +++ b/tests/parser/type.ts @@ -1,3 +1,22 @@ type int32_t = i32; @nonportable() export type uint64_t = u64; + +// with leading `|` +export type T1 = | int32_t; +export type T2 = + | int32_t; + +// disallow type recursion +export type T3 = T3 | null; +export type T4 = (x: T4) => i32; +export type T5 = () => T5; +export type T6 = () => T6; +export type T7 = Array; +export type T8 = Map>; +export type T9 = Array<() => T9>; +export type T10 = T6; + +export type T11 = T1 | null +export type T12 = null | T1 + diff --git a/tests/parser/type.ts.fixture.ts b/tests/parser/type.ts.fixture.ts index ed301e91d2..6ae9202e32 100644 --- a/tests/parser/type.ts.fixture.ts +++ b/tests/parser/type.ts.fixture.ts @@ -1,3 +1,15 @@ type int32_t = i32; @nonportable() export type uint64_t = u64; +export type T1 = int32_t; +export type T2 = int32_t; +export type T11 = T1 | null; +export type T12 = T1 | null; +// ERROR 2456: "Type alias 'T3' circularly references itself." in type.ts(11,13+2) +// ERROR 2456: "Type alias 'T4' circularly references itself." in type.ts(12,13+2) +// ERROR 2456: "Type alias 'T5' circularly references itself." in type.ts(13,13+2) +// ERROR 2456: "Type alias 'T6' circularly references itself." in type.ts(14,13+2) +// ERROR 2456: "Type alias 'T7' circularly references itself." in type.ts(15,13+2) +// ERROR 2456: "Type alias 'T8' circularly references itself." in type.ts(16,13+2) +// ERROR 2456: "Type alias 'T9' circularly references itself." in type.ts(17,13+2) +// ERROR 2456: "Type alias 'T10' circularly references itself." in type.ts(18,13+3) diff --git a/tests/parser/unicode-identifier.ts b/tests/parser/unicode-identifier.ts new file mode 100644 index 0000000000..947d508bc7 --- /dev/null +++ b/tests/parser/unicode-identifier.ts @@ -0,0 +1,3 @@ +var ÀÈ: string; // c3_80 c3_88 +var 变量: string; // e5_8f_98 e9_87_8f +var 𠜎𠜱: string; // f0_a0_9c_8e f0_a0_9c_b1 diff --git a/tests/parser/unicode-identifier.ts.fixture.ts b/tests/parser/unicode-identifier.ts.fixture.ts new file mode 100644 index 0000000000..06c2792ccd --- /dev/null +++ b/tests/parser/unicode-identifier.ts.fixture.ts @@ -0,0 +1,3 @@ +var ÀÈ: string; +var 变量: string; +var 𠜎𠜱: string; diff --git a/tests/parser/union.ts b/tests/parser/union.ts new file mode 100644 index 0000000000..3d947fe09a --- /dev/null +++ b/tests/parser/union.ts @@ -0,0 +1,9 @@ +export function foo(a: aaa | bbb | ccc): i32 { + return 1; +} + +export function bar(a: i32 | u32 | f32): i32 { + return 1; +} + +export let a: i32 | u32 | f32 | null = 1; diff --git a/tests/parser/union.ts.fixture.ts b/tests/parser/union.ts.fixture.ts new file mode 100644 index 0000000000..b2fb8611bf --- /dev/null +++ b/tests/parser/union.ts.fixture.ts @@ -0,0 +1,4 @@ +export let a = 1; +// ERROR 100: "Not implemented: union types" in union.ts(1,36+3) +// ERROR 100: "Not implemented: union types" in union.ts(5,36+3) +// ERROR 100: "Not implemented: union types" in union.ts(9,27+10) diff --git a/tests/require/index-release.ts b/tests/require/index-release.ts deleted file mode 100644 index e535d1c99f..0000000000 --- a/tests/require/index-release.ts +++ /dev/null @@ -1,6 +0,0 @@ -// used to check `require`ing distribution files -// - dist/assemblyscript.js -// - dist/assemblyscript.d.ts -import * as as from "../../index.release"; -var program: as.Program = as.newProgram(as.newOptions()); -as.parse(program, "", "empty"); diff --git a/tests/require/index.ts b/tests/require/index.ts deleted file mode 100644 index 2fdcb82c5e..0000000000 --- a/tests/require/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -// used to check `require`ing portable sources -// - src/glue/js/index.ts -// - src/index.ts -import * as as from "../../index"; -var program: as.Program = as.newProgram(as.newOptions()); -as.parse(program, "", "empty"); diff --git a/tests/resolve-ternary.json b/tests/resolve-ternary.json deleted file mode 100644 index 453cb07770..0000000000 --- a/tests/resolve-ternary.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} diff --git a/tests/runtime/.gitignore b/tests/runtime/.gitignore deleted file mode 100644 index ffd0555121..0000000000 --- a/tests/runtime/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -!untouched.wasm -node_modules/ -package-lock.json diff --git a/tests/runtime/assembly/index.ts b/tests/runtime/assembly/index.ts deleted file mode 100644 index 19456ac7fd..0000000000 --- a/tests/runtime/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { __free }; diff --git a/tests/runtime/assembly/tsconfig.json b/tests/runtime/assembly/tsconfig.json deleted file mode 100644 index 6e52b21c48..0000000000 --- a/tests/runtime/assembly/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../../std/assembly.json", - "include": [ - "./**/*.ts" - ] -} diff --git a/tests/runtime/index.html b/tests/runtime/index.html deleted file mode 100644 index fd9dd09213..0000000000 --- a/tests/runtime/index.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - -

AssemblyScript Runtime Visualizer / TLSF

-

- Notes: -

    -
  • It is expected that there is exactly one block on initialization. This is the remaining space (< 64K) within the last page after static data.
  • -
  • It is expected that if two adjacent blocks of size K are freed, the merged block doesn't go into the first level list for K*2 because its size is actually larger than that (K + OVERHEAD + K).
  • -
  • It is expected that if memory grows beyond 1GB, that even if all blocks are free'd there are at least two (or even three if the largest block is in the middle) remaining blocks, because a single block must not be larger than 1GB.
  • -
  • It is expected that after other operations have already been performed, being able to allocate 1GB can't be guaranteed anymore, even if there should be enough space left in absolute terms, if prior subdivision prevents it.
  • -
  • It is expected that the second level 0 in first level 0 isn't ever used due to alignment guarantees. Smallest block is 32 bytes (16 bytes overhead + 16 bytes payload if used, respectively linking information if free) in this implementation.
  • -
-

-

Implementation constants: ? bits alignment, ? bits first level, ? bits second level, ? B overhead

- -

First level bitmap

-

The first level map is a bitmap determining whether free blocks exist in at least one of its respective second levels. In this implementation, the first bit indicates whether a small block (< 256B) exists. Each bit doubles the size.

-
-
- -

Second level maps

-

Second level maps subdivide each first level into multiple lists of subsizes. Each one works similar to the first level bitmap.

-
-
- -

Heads

-

The heads of the actual free lists, one per second level per first level. Values here are pointers into memory. Last item is the address of the special zero-size "used" tail block, which is usually the end of WASM memory minus block overhead.

-
-
- -

Allocator

-

Chose a size to allocate. Annotated list indexes depend on implementation constants but match those of this implementation.

-

-   -

-

- Small blocks: - - - - - - ... - - (δ ≙ block overhead) -

-

- Common blocks: - - - - - - (e.g. allocate 3, free middle, check second level) -

-

- Large blocks: - - - - - -

-

- -

Segments

-

Allocations performed above are tracked here so you can free them again. Note that TLSF alone does not keep track of used blocks (unless free'd and put in a free list again). It is expected that adjacent free blocks become merged automatically.

-
-
diff --git a/tests/runtime/optimized.wat b/tests/runtime/optimized.wat deleted file mode 100644 index 2743486a17..0000000000 --- a/tests/runtime/optimized.wat +++ /dev/null @@ -1,1457 +0,0 @@ -(module - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 64) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 112) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 168) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 208) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 208)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (export "__free" (func $~lib/rt/tlsf/__free)) - (func $~lib/rt/tlsf/removeBlock (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - i32.const -4 - i32.and - local.tee $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - local.set $4 - i32.const 0 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $4 - local.get $3 - i32.const 7 - i32.sub - end - local.set $3 - local.get $1 - i32.load offset=20 - local.set $2 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $2 - i32.store offset=20 - end - local.get $2 - if - local.get $2 - local.get $5 - i32.store offset=16 - end - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.get $1 - i32.eq - if - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $2 - i32.store offset=96 - local.get $2 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (; 2 ;) (type $FUNCSIG$vii) (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.get $1 - i32.load - local.set $3 - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $5 - i32.const 1 - i32.and - if - local.get $3 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const -4 - i32.and - i32.add - local.tee $2 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 3 - i32.and - local.get $2 - i32.or - local.tee $3 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $5 - end - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $2 - i32.load - local.tee $6 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - local.get $6 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $3 - i32.store - local.get $2 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - local.set $4 - i32.const 0 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $4 - local.get $2 - i32.const 7 - i32.sub - end - local.set $3 - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.set $2 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $2 - i32.store offset=20 - local.get $2 - if - local.get $2 - local.get $1 - i32.store offset=16 - end - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const 1 - local.get $4 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - block (result i32) - local.get $0 - i32.load offset=1568 - local.tee $2 - if - local.get $1 - i32.const 16 - i32.sub - local.get $2 - i32.eq - if - local.get $2 - i32.load - local.set $3 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - end - local.get $1 - end - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initializeRoot (; 4 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1 - memory.size - local.tee $0 - i32.gt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 240 - i32.const 0 - i32.store - i32.const 1808 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 240 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 - local.get $1 - i32.const 16 - i32.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 240 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const 240 - i32.const 1824 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 240 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 24 - i32.const 80 - i32.const 447 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - i32.const 0 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $0 - local.get $1 - i32.ctz - local.tee $0 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.ctz - local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/growMemory (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - memory.size - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $2 - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $2 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $2 - ) - (func $~lib/rt/tlsf/__alloc (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - if (result i32) - local.get $2 - else - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - end - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 236 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 - end - local.get $0 - ) - (func $~lib/rt/tlsf/freeBlock (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/__typeinfo (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 208 - i32.load - i32.gt_u - if - i32.const 128 - i32.const 184 - i32.const 22 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.shl - i32.const 212 - i32.add - i32.load - ) - (func $~lib/memory/memory.copy (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $3 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - br $continue|0 - end - end - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $continue|1 - end - end - end - loop $continue|2 - local.get $3 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $continue|3 - local.get $0 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $1 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.add - local.get $1 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - loop $continue|5 - local.get $3 - if - local.get $0 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $1 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/__free (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/growRoots (; 16 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/pure/CUR - global.get $~lib/rt/pure/ROOTS - local.tee $1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - local.tee $0 - i32.const 256 - local.get $0 - i32.const 256 - i32.gt_u - select - local.tee $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $1 - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - if - local.get $1 - call $~lib/rt/tlsf/__free - end - local.get $0 - global.set $~lib/rt/pure/ROOTS - local.get $0 - local.get $2 - i32.add - global.set $~lib/rt/pure/CUR - local.get $0 - local.get $3 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/appendRoot (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.tee $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/decrement (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 268435455 - i32.and - local.tee $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $1 - i32.const -2147483648 - i32.and - if - local.get $0 - i32.const -2147483648 - i32.store offset=4 - else - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - else - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 16 - i32.and - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.get $1 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const -1342177280 - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - end - end - ) - (func $~lib/rt/pure/__release (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 236 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/pure/markGray (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - ) - (func $~lib/rt/pure/__collect (; 24 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.tee $5 - local.tee $2 - local.set $3 - global.get $~lib/rt/pure/CUR - local.set $0 - loop $repeat|0 - block $break|0 - local.get $3 - local.get $0 - i32.ge_u - br_if $break|0 - local.get $3 - i32.load - local.tee $4 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $4 - call $~lib/rt/pure/markGray - local.get $2 - local.get $4 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - else - i32.const 0 - local.get $1 - i32.const 268435455 - i32.and - i32.eqz - local.get $1 - i32.const 1879048192 - i32.and - select - if - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/freeBlock - else - local.get $4 - local.get $1 - i32.const 2147483647 - i32.and - i32.store offset=4 - end - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $repeat|0 - end - end - local.get $2 - global.set $~lib/rt/pure/CUR - local.get $5 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - local.get $2 - i32.ge_u - br_if $break|1 - local.get $0 - i32.load - call $~lib/rt/pure/scan - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $repeat|1 - end - end - local.get $5 - local.set $0 - loop $repeat|2 - block $break|2 - local.get $0 - local.get $2 - i32.ge_u - br_if $break|2 - local.get $0 - i32.load - local.tee $1 - local.get $1 - i32.load offset=4 - i32.const 2147483647 - i32.and - i32.store offset=4 - local.get $1 - call $~lib/rt/pure/collectWhite - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $repeat|2 - end - end - local.get $5 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/__visit (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $0 - i32.const 236 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - local.set $0 - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $1 - i32.const 1 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - block $tablify|0 - local.get $1 - i32.const 3 - i32.sub - br_table $case2|0 $case3|0 $case4|0 $tablify|0 - end - br $break|0 - end - local.get $0 - call $~lib/rt/pure/decrement - br $break|0 - end - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/markGray - br $break|0 - end - local.get $0 - call $~lib/rt/pure/scan - br $break|0 - end - local.get $0 - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.const 1879048192 - i32.and - if - local.get $0 - call $~lib/rt/pure/scanBlack - end - br $break|0 - end - local.get $0 - call $~lib/rt/pure/collectWhite - end - ) - (func $~lib/rt/__visit_members (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - return - end - unreachable - ) - (func $null (; 27 ;) (type $FUNCSIG$v) - nop - ) -) diff --git a/tests/runtime/package.json b/tests/runtime/package.json deleted file mode 100644 index 966d2fb8c4..0000000000 --- a/tests/runtime/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "private": true, - "scripts": { - "server": "http-server . -o -c-1", - "build": "npm run build:untouched && npm run build:optimized", - "build:untouched": "node ../../bin/asc assembly/index.ts -t untouched.wat -b untouched.wasm --runtime full --sourceMap --measure", - "build:optimized": "node ../../bin/asc assembly/index.ts -t optimized.wat -b optimized.wasm --runtime full --sourceMap --measure --noAssert --optimize" - }, - "devDependencies": { - "http-server": "^0.11.1" - } -} diff --git a/tests/runtime/untouched.wasm b/tests/runtime/untouched.wasm deleted file mode 100644 index b00317d791..0000000000 Binary files a/tests/runtime/untouched.wasm and /dev/null differ diff --git a/tests/runtime/untouched.wat b/tests/runtime/untouched.wat deleted file mode 100644 index 628180b86e..0000000000 --- a/tests/runtime/untouched.wat +++ /dev/null @@ -1,3608 +0,0 @@ -(module - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 256) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") - (table $0 1 funcref) - (elem (i32.const 0) $null) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 256)) - (global $~lib/heap/__heap_base i32 (i32.const 284)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (export "__free" (func $~lib/rt/tlsf/__free)) - (func $~lib/rt/tlsf/removeBlock (; 1 ;) (type $FUNCSIG$vii) (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 276 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 278 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 291 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end - local.get $7 - i32.eqz - if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end - local.get $9 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (; 2 ;) (type $FUNCSIG$vii) (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 204 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 206 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end - local.set $6 - local.get $6 - i32.load - local.set $3 - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 227 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $3 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $6 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 242 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 243 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 259 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end - ) - (func $~lib/rt/tlsf/addMemory (; 3 ;) (type $FUNCSIG$iiii) (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.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 385 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 395 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 407 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 4 ;) (type $FUNCSIG$v) - (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) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - memory.size - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $7 - loop $repeat|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|1 - unreachable - end - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 72 - i32.const 24 - i32.const 447 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 6 ;) (type $FUNCSIG$iii) (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.get $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 337 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - i32.const 0 - local.set $7 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 350 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - memory.size - local.set $2 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 364 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 477 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 479 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 104 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 107 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/freeBlock (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 531 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/__typeinfo (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/__rtti_base - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 176 - i32.const 232 - i32.const 22 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/util/memory/memcpy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|5 - end - end - end - br $break|2 - unreachable - end - unreachable - end - end - local.get $2 - i32.const 16 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $4 - local.get $3 - i32.add - local.get $5 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $5 - local.get $3 - i32.add - local.get $4 - i32.le_u - end - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 - end - end - end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end - end - end - end - block $break|2 - loop $continue|2 - local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end - end - end - else - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|5 - end - end - end - end - end - ) - (func $~lib/rt/tlsf/__free (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 561 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 562 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/growRoots (; 18 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.set $0 - global.get $~lib/rt/pure/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul - local.tee $2 - i32.const 64 - i32.const 2 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - local.set $4 - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $0 - if - local.get $0 - call $~lib/rt/tlsf/__free - end - local.get $5 - global.set $~lib/rt/pure/ROOTS - local.get $5 - local.get $1 - i32.add - global.set $~lib/rt/pure/CUR - local.get $5 - local.get $4 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/appendRoot (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.set $1 - local.get $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/decrement (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 115 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 - end - else - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 124 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 16 - i32.and - i32.eqz - if - local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/pure/__release (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/pure/markGray (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - ) - (func $~lib/rt/pure/__collect (; 26 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.set $0 - local.get $0 - local.set $1 - block $break|0 - block - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - end - loop $repeat|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $2 - i32.load - local.set $4 - local.get $4 - i32.load offset=4 - local.set $5 - local.get $5 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $5 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $4 - call $~lib/rt/pure/markGray - local.get $1 - local.get $4 - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - else - local.get $5 - i32.const 1879048192 - i32.and - i32.const 0 - i32.eq - if (result i32) - local.get $5 - i32.const 268435455 - i32.and - i32.eqz - else - i32.const 0 - end - if - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/freeBlock - else - local.get $4 - local.get $5 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - end - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $5 - loop $repeat|1 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 - local.get $5 - i32.load - call $~lib/rt/pure/scan - local.get $5 - i32.const 4 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - block $break|2 - local.get $0 - local.set $5 - loop $repeat|2 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 - local.get $5 - i32.load - local.set $4 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/collectWhite - local.get $5 - i32.const 4 - i32.add - local.set $5 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/__visit (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - local.set $2 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 - br $case5|0 - end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - call $~lib/rt/pure/scan - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - call $~lib/rt/pure/collectWhite - br $break|0 - unreachable - end - unreachable - end - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 97 - i32.const 24 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $~lib/rt/__visit_members (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - ) - (func $null (; 29 ;) (type $FUNCSIG$v) - ) -) diff --git a/tests/tokenizer.js b/tests/tokenizer.js index 96004617ca..a81df43467 100644 --- a/tests/tokenizer.js +++ b/tests/tokenizer.js @@ -1,29 +1,28 @@ -const fs = require("fs"); -const path = require("path"); +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; +import { Tokenizer, Token, Source, SourceKind } from "../dist/assemblyscript.js"; -require("ts-node").register({ project: path.join(__dirname, "..", "src", "tsconfig.json") }); -require("../src/glue/js"); +const dirname = path.dirname(fileURLToPath(import.meta.url)); -const { Tokenizer, Token } = require("../src/tokenizer"); -const { Source, SourceKind } = require("../src/ast"); - -var file = process.argv.length > 2 ? process.argv[2] : path.join(__dirname, "..", "src", "tokenizer.ts"); +const file = process.argv.length > 2 ? process.argv[2] : path.join(dirname, "..", "src", "tokenizer.ts"); const text = fs.readFileSync(file).toString(); -const tn = new Tokenizer(new Source("compiler.ts", text, SourceKind.ENTRY)); +const source = new Source(SourceKind.Entry, "tokenizer.ts", text); +const tn = new Tokenizer(source); do { - let token = tn.next(); - let range = tn.range(); - process.stdout.write(Token[token] + " @ " + range.line + ":" + range.column); - if (token == Token.IDENTIFIER) { + const token = tn.next(); + const range = tn.range(); + process.stdout.write(Token[token] + " @ " + source.lineAt(range.start) + ":" + source.columnAt()); + if (token == Token.Identifier) { process.stdout.write(" > " + tn.readIdentifier()); - } else if (token == Token.INTEGERLITERAL) { + } else if (token == Token.IntegerLiteral) { process.stdout.write(" > " + tn.readInteger()); - } else if (token == Token.FLOATLITERAL) { + } else if (token == Token.FloatLiteral) { process.stdout.write(" > " + tn.readFloat()); - } else if (token == Token.STRINGLITERAL) { + } else if (token == Token.StringLiteral) { process.stdout.write(" > " + tn.readString()); - } else if (token == Token.ENDOFFILE) { + } else if (token == Token.EndOfFile) { process.stdout.write("\n"); break; } else { diff --git a/tests/transform/cjs/index.js b/tests/transform/cjs/index.js new file mode 100644 index 0000000000..1df40f5de4 --- /dev/null +++ b/tests/transform/cjs/index.js @@ -0,0 +1,21 @@ +const Transform = require("../../../dist/transform.cjs"); + +console.log("CommonJS transform loaded"); + +class MyTransform extends Transform { + constructor() { + super(); + this.log("- constructor"); + } + afterParse () { + this.log("- afterParse"); + } + afterInitialize() { + this.log("- afterInitialize"); + } + afterCompile() { + this.log("- afterCompile"); + } +} + +module.exports = MyTransform; diff --git a/tests/transform/cjs/package.json b/tests/transform/cjs/package.json new file mode 100644 index 0000000000..5bbefffbab --- /dev/null +++ b/tests/transform/cjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/tests/transform/cjs/simple.js b/tests/transform/cjs/simple.js new file mode 100644 index 0000000000..79ede6ad6c --- /dev/null +++ b/tests/transform/cjs/simple.js @@ -0,0 +1,18 @@ +const assert = require("assert"); + +console.log("Simple CommonJS transform loaded"); + +exports.afterParse = (parser) => { + assert(typeof parser === "object" && parser !== null); + console.log("- afterParse"); +}; + +exports.afterInitialize = (program) => { + assert(typeof program === "object" && program !== null); + console.log("- afterInitialize"); +}; + +exports.afterCompile = (module) => { + assert(typeof module === "object" && module !== null); + console.log("- afterCompile"); +}; diff --git a/tests/transform/index.js b/tests/transform/index.js new file mode 100644 index 0000000000..fca2bd7fa3 --- /dev/null +++ b/tests/transform/index.js @@ -0,0 +1,63 @@ +import assert from "assert"; +import { Transform } from "../../dist/transform.js"; + +var constructorCalled = false; +var afterParseCalled = false; +var afterInitializeCalled = false; +var afterCompileCalled = false; + +console.log("Transform loaded"); + +export default class MyTransform extends Transform { + constructor() { + assert(!constructorCalled && !afterParseCalled && !afterInitializeCalled && !afterCompileCalled); + constructorCalled = true; + super(); + check(this); + this.log("- constructor"); + assert(constructorCalled && !afterParseCalled && !afterInitializeCalled && !afterCompileCalled); + } + async afterParse() { + check(this); + assert(constructorCalled && !afterParseCalled && !afterInitializeCalled && !afterCompileCalled); + afterParseCalled = true; + this.log("- afterParse"); + await defer(); + await defer(); + await defer(); + this.log(" complete"); + assert(constructorCalled && afterParseCalled && !afterInitializeCalled && !afterCompileCalled); + } + afterInitialize() { + check(this); + assert(constructorCalled && afterParseCalled && !afterInitializeCalled && !afterCompileCalled); + afterInitializeCalled = true; + this.log("- afterInitialize"); + assert(constructorCalled && afterParseCalled && afterInitializeCalled && !afterCompileCalled); + return defer(); + } + afterCompile() { + check(this); + assert(constructorCalled && afterParseCalled && afterInitializeCalled && !afterCompileCalled); + afterCompileCalled = true; + this.log("- afterCompile"); + } +} + +function check(transform) { + assert(typeof transform.program === "object" && transform.program !== null); + assert(typeof transform.baseDir === "string"); + assert(typeof transform.stdout === "object" && transform.stdout !== null); + assert(typeof transform.stderr === "object" && transform.stderr !== null); + assert(typeof transform.log === "function"); + assert(typeof transform.readFile === "function"); + assert(typeof transform.writeFile === "function"); + assert(typeof transform.listFiles === "function"); +} + +function defer() { + return new Promise((resolve, reject) => { + console.log(" defer"); + setTimeout(() => { console.log(" resolve"); resolve(); }, 100); + }); +} diff --git a/tests/transform/simple.js b/tests/transform/simple.js new file mode 100644 index 0000000000..352212fd78 --- /dev/null +++ b/tests/transform/simple.js @@ -0,0 +1,18 @@ +import assert from "assert"; + +console.log("Simple transform loaded"); + +export function afterParse(parser) { + assert(typeof parser === "object" && parser !== null); + console.log("- afterParse"); +} + +export function afterInitialize(program) { + assert(typeof program === "object" && program !== null); + console.log("- afterInitialize"); +} + +export function afterCompile(module) { + assert(typeof module === "object" && module !== null); + console.log("- afterCompile"); +} diff --git a/tests/util-path.js b/tests/util-path.js deleted file mode 100644 index d3324f2dce..0000000000 --- a/tests/util-path.js +++ /dev/null @@ -1,12 +0,0 @@ -const path = require("path"); -const assert = require("assert"); - -require("ts-node").register({ project: path.join(__dirname, "..", "src", "tsconfig.json") }); -require("../src/glue/js"); - -const { normalize, resolve } = require("../src/util/path"); - -var test = "./Y/./N/./N/../../././../Y/./."; -assert.strictEqual(normalize(test), path.posix.normalize(test)); - -assert.strictEqual(resolve("../../..", "lib/util/i64.ts"), ".."); diff --git a/tests/util/diff.js b/tests/util/diff.js deleted file mode 100644 index 744420e895..0000000000 --- a/tests/util/diff.js +++ /dev/null @@ -1,30 +0,0 @@ -var JsDiff = require("diff"); -var colors = require("../../cli/util/colors"); - -module.exports = function diff(filename, expected, actual) { - var diff = JsDiff.structuredPatch(filename, filename, expected, actual, "expected", "actual", { context: 5 }); - if (!diff.hunks.length) - return null; - - var ret = []; - ret.push('--- ' + diff.oldHeader); - ret.push('+++ ' + diff.newHeader); - - for (var i = 0; i < diff.hunks.length; i++) { - var hunk = diff.hunks[i]; - ret.push( - '@@ -' + hunk.oldStart + ',' + hunk.oldLines - + ' +' + hunk.newStart + ',' + hunk.newLines - + ' @@' - ); - ret.push.apply(ret, hunk.lines.map(line => - line.charAt(0) === "+" - ? colors.green(line) - : line.charAt(0) === "-" - ? line = colors.red(line) - : line - )); - } - - return ret.join('\n') + '\n'; -}; diff --git a/tsconfig-base.json b/tsconfig-base.json index 415a5fb820..10a2d884e4 100644 --- a/tsconfig-base.json +++ b/tsconfig-base.json @@ -1,11 +1,14 @@ { "compilerOptions": { + "strict": true, "alwaysStrict": true, "noImplicitAny": true, "noImplicitReturns": true, "noImplicitThis": true, "noEmitOnError": true, "strictNullChecks": true, - "experimentalDecorators": true + "experimentalDecorators": true, + "preserveConstEnums": false, + "downlevelIteration": true } } diff --git a/tsconfig-docs.json b/tsconfig-docs.json deleted file mode 100644 index 90405cb1ef..0000000000 --- a/tsconfig-docs.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./src/tsconfig.json", - "include": [ - "./src/**/*.ts" - ], - "exclude": [ - "./std/**" - ] -} diff --git a/util/README.md b/util/README.md new file mode 100644 index 0000000000..bcc9d83cf2 --- /dev/null +++ b/util/README.md @@ -0,0 +1,23 @@ +Utility +======= + +Various utility functions shared accross the codebase. + +| Utility | Description +|----------|------------------------------------------- +| cpu | Obtains information about the CPU +| find | Provides support for finding files etc. +| node | Minimal polyfills for Node.js builtins +| options | Support for command line options parsing +| terminal | Provides support for terminal colors +| text | Utility for text processing +| web | Minimal polyfills for browser builtins + +It is possible to reuse the utility in your own project like so: + +```ts +import { ... } from "assemblyscript/util/terminal.js"; +... +``` + +Keep in mind, however, that utility can change at any time. diff --git a/util/browser/fs.js b/util/browser/fs.js new file mode 100644 index 0000000000..1339856fa2 --- /dev/null +++ b/util/browser/fs.js @@ -0,0 +1 @@ +export const promises = {}; diff --git a/util/browser/module.js b/util/browser/module.js new file mode 100644 index 0000000000..88cb1de288 --- /dev/null +++ b/util/browser/module.js @@ -0,0 +1,5 @@ +export function createRequire() { + return function require(path) { + throw new Error(`Cannot find module: '${path}'`); + }; +} diff --git a/util/browser/path.js b/util/browser/path.js new file mode 100644 index 0000000000..113b4b08dd --- /dev/null +++ b/util/browser/path.js @@ -0,0 +1,520 @@ +import * as process from "./process.js"; + +// https://github.com/browserify/path-browserify v1.0.1 +// +// Copyright (c) 2013 James Halliday +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function assertPath(path) { + if (typeof path !== 'string') { + throw new TypeError('Path must be a string. Received ' + JSON.stringify(path)); + } +} + +// Resolves . and .. elements in a path with directory names +function normalizeStringPosix(path, allowAboveRoot) { + var res = ''; + var lastSegmentLength = 0; + var lastSlash = -1; + var dots = 0; + var code; + for (var i = 0; i <= path.length; ++i) { + if (i < path.length) + code = path.charCodeAt(i); + else if (code === 47 /*/*/) + break; + else + code = 47 /*/*/; + if (code === 47 /*/*/) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) { + if (res.length > 2) { + var lastSlashIndex = res.lastIndexOf('/'); + if (lastSlashIndex !== res.length - 1) { + if (lastSlashIndex === -1) { + res = ''; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf('/'); + } + lastSlash = i; + dots = 0; + continue; + } + } else if (res.length === 2 || res.length === 1) { + res = ''; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) + res += '/..'; + else + res = '..'; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) + res += '/' + path.slice(lastSlash + 1, i); + else + res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === 46 && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} + +function _format(sep, pathObject) { + var dir = pathObject.dir || pathObject.root; + var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || ''); + if (!dir) { + return base; + } + if (dir === pathObject.root) { + return dir + base; + } + return dir + sep + base; +} + +// path.resolve([from ...], to) +export function resolve() { + var resolvedPath = ''; + var resolvedAbsolute = false; + var cwd; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path; + if (i >= 0) + path = arguments[i]; + else { + if (cwd === undefined) + cwd = process.cwd(); + path = cwd; + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) + return '/' + resolvedPath; + else + return '/'; + } else if (resolvedPath.length > 0) { + return resolvedPath; + } else { + return '.'; + } +} + +export function normalize(path) { + assertPath(path); + + if (path.length === 0) return '.'; + + var isAbsolute = path.charCodeAt(0) === 47 /*/*/; + var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/; + + // Normalize the path + path = normalizeStringPosix(path, !isAbsolute); + + if (path.length === 0 && !isAbsolute) path = '.'; + if (path.length > 0 && trailingSeparator) path += '/'; + + if (isAbsolute) return '/' + path; + return path; +} + +export function isAbsolute(path) { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === 47 /*/*/; +} + +export function join() { + if (arguments.length === 0) + return '.'; + var joined; + for (var i = 0; i < arguments.length; ++i) { + var arg = arguments[i]; + assertPath(arg); + if (arg.length > 0) { + if (joined === undefined) + joined = arg; + else + joined += '/' + arg; + } + } + if (joined === undefined) + return '.'; + return normalize(joined); +} + +export function relative(from, to) { + assertPath(from); + assertPath(to); + + if (from === to) return ''; + + from = resolve(from); + to = resolve(to); + + if (from === to) return ''; + + if (from === ".") return to; // FIX for 'odule.ts' (see issue #1398) + + // Trim any leading backslashes + var fromStart = 1; + for (; fromStart < from.length; ++fromStart) { + if (from.charCodeAt(fromStart) !== 47 /*/*/) + break; + } + var fromEnd = from.length; + var fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + var toStart = 1; + for (; toStart < to.length; ++toStart) { + if (to.charCodeAt(toStart) !== 47 /*/*/) + break; + } + var toEnd = to.length; + var toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + var length = fromLen < toLen ? fromLen : toLen; + var lastCommonSep = -1; + var i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === 47 /*/*/) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === 47 /*/*/) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + var fromCode = from.charCodeAt(fromStart + i); + var toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) + break; + else if (fromCode === 47 /*/*/) + lastCommonSep = i; + } + + var out = ''; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) { + if (out.length === 0) + out += '..'; + else + out += '/..'; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) + return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === 47 /*/*/) + ++toStart; + return to.slice(toStart); + } +} + +export function dirname(path) { + assertPath(path); + if (path.length === 0) return '.'; + var code = path.charCodeAt(0); + var hasRoot = code === 47 /*/*/; + var end = -1; + var matchedSlash = true; + for (var i = path.length - 1; i >= 1; --i) { + code = path.charCodeAt(i); + if (code === 47 /*/*/) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? '/' : '.'; + if (hasRoot && end === 1) return '//'; + return path.slice(0, end); +} + +export function basename(path, ext) { + if (ext !== undefined && typeof ext !== 'string') throw new TypeError('"ext" argument must be a string'); + assertPath(path); + + var start = 0; + var end = -1; + var matchedSlash = true; + var i; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ''; + var extIdx = ext.length - 1; + var firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + var code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ''; + return path.slice(start, end); + } +} + +export function extname(path) { + assertPath(path); + var startDot = -1; + var startPart = 0; + var end = -1; + var matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + var preDotState = 0; + for (var i = path.length - 1; i >= 0; --i) { + var code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) + startDot = i; + else if (preDotState !== 1) + preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if (startDot === -1 || end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ''; + } + return path.slice(startDot, end); +} + +export function format(pathObject) { + if (pathObject === null || typeof pathObject !== 'object') { + throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject); + } + return _format('/', pathObject); +} + +export function parse(path) { + assertPath(path); + + var ret = { root: '', dir: '', base: '', ext: '', name: '' }; + if (path.length === 0) return ret; + var code = path.charCodeAt(0); + var isAbsolute = code === 47 /*/*/; + var start; + if (isAbsolute) { + ret.root = '/'; + start = 1; + } else { + start = 0; + } + var startDot = -1; + var startPart = 0; + var end = -1; + var matchedSlash = true; + var i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + var preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if (startDot === -1 || end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end); + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/'; + + return ret; +} + +export const sep = '/'; +export const delimiter = ':'; +export const win32 = null; diff --git a/cli/shim/process.js b/util/browser/process.js similarity index 81% rename from cli/shim/process.js rename to util/browser/process.js index ccf3bcc1a5..c0bd36494f 100644 --- a/cli/shim/process.js +++ b/util/browser/process.js @@ -1,13 +1,18 @@ -module.exports = { - platform: "linux", - cwd() { - return "."; - }, - umask() { - return 0; - }, - hrtime -}; +export const platform = "linux"; + +export function cwd() { + return "."; +} + +export function umask() { + return 0; +} + +export const argv = []; + +export function exit(code = 0) { + throw Error(`exit ${code}`); +} // https://github.com/kumavis/browser-process-hrtime v1.0.0 // @@ -35,16 +40,10 @@ module.exports = { // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -var performance = global.performance || {}; -var performanceNow = - performance.now || - performance.mozNow || - performance.msNow || - performance.oNow || - performance.webkitNow || - function(){ return (new Date()).getTime(); }; +var performance = globalThis.performance || {}; +var performanceNow = performance.now || function() { return new Date().getTime(); }; -function hrtime(previousTimestamp) { +export function hrtime(previousTimestamp) { var clocktime = performanceNow.call(performance); var seconds = Math.floor(clocktime * 1e-3); var nanoseconds = Math.floor(clocktime * 1e6 - seconds * 1e9); diff --git a/util/browser/url.js b/util/browser/url.js new file mode 100644 index 0000000000..a8297255c2 --- /dev/null +++ b/util/browser/url.js @@ -0,0 +1,23 @@ +import * as path from "./path.js"; + +function encodePathChars(filepath) { + return filepath + .replace(/%/g, "%25") + .replace(/\\/g, "%5C") + .replace(/\n/g, "%0A") + .replace(/\r/g, "%0D") + .replace(/\t/g, "%09"); +} + +export function pathToFileURL(filepath) { + let resolved = path.resolve(filepath); + if ( + filepath.charCodeAt(filepath.length - 1) === /* SLASH */ 47 && + resolved[resolved.length - 1] !== path.sep + ) { + resolved += "/"; + } + const url = new URL("file://"); + url.pathname = encodePathChars(resolved); + return url; +} diff --git a/util/cpu.d.ts b/util/cpu.d.ts new file mode 100644 index 0000000000..0d77616017 --- /dev/null +++ b/util/cpu.d.ts @@ -0,0 +1,9 @@ +/** + * @fileoverview CPU utility definitions. + * @license Apache-2.0 + */ + +/** Number of threads. */ +export const threadCount: number; +/** Number of cores. */ +export const coreCount: number; diff --git a/util/cpu.js b/util/cpu.js new file mode 100644 index 0000000000..0f140e3d0e --- /dev/null +++ b/util/cpu.js @@ -0,0 +1,42 @@ +/** + * @fileoverview CPU utility. + * @license Apache-2.0 + */ + +// https://www.npmjs.com/package/physical-cpu-count + +import os from "os"; +import childProcess from "child_process"; + +const cpus = os.cpus(); + +function exec(command) { + return childProcess.execSync(command, {encoding: 'utf8'}); +} + +var coreCount; + +const platform = os.platform(); +if (platform === "linux") { + const output = exec("lscpu -p | egrep -v \"^#\" | sort -u -t, -k 2,4 | wc -l"); + coreCount = parseInt(output.trim(), 10); +} else if (platform === "darwin") { + const output = exec("sysctl -n hw.physicalcpu_max"); + coreCount = parseInt(output.trim(), 10); +} else if (platform === "windows") { + const output = exec("WMIC CPU Get NumberOfCores"); + coreCount = output.split(os.EOL) + .map(line => parseInt(line)) + .filter(value => !isNaN(value)) + .reduce((sum, number) => sum + number, 0); +} else { + const cores = cpus.filter(function (cpu, index) { + const hasHyperthreading = cpu.model.includes("Intel"); + const isOdd = index % 2 === 1; + return !hasHyperthreading || isOdd; + }); + coreCount = cores.length; +} + +export const threadCount = cpus.length; +export { coreCount }; diff --git a/util/find.d.ts b/util/find.d.ts new file mode 100644 index 0000000000..5d7e219abb --- /dev/null +++ b/util/find.d.ts @@ -0,0 +1,6 @@ +/** + * @fileoverview File finding utility definitions. + * @license Apache-2.0 + */ + +export function findFiles(dirname: string, filter?: ((name: string) => boolean) | RegExp): string[]; diff --git a/cli/util/find.js b/util/find.js similarity index 78% rename from cli/util/find.js rename to util/find.js index 57230109a7..8e1ed7881e 100644 --- a/cli/util/find.js +++ b/util/find.js @@ -3,10 +3,9 @@ * @license Apache-2.0 */ -const fs = require("fs"); -const path = require("path"); +import { fs, path } from "./node.js"; -function findFiles(dirname, filter) { +export function findFiles(dirname, filter) { var out = []; fs.readdirSync(dirname).forEach(name => { if (fs.statSync(path.join(dirname, name)).isDirectory()) { @@ -18,4 +17,4 @@ function findFiles(dirname, filter) { return out; } -exports.files = findFiles; +export default findFiles; diff --git a/util/node.d.ts b/util/node.d.ts new file mode 100644 index 0000000000..25575020ff --- /dev/null +++ b/util/node.d.ts @@ -0,0 +1,21 @@ +/** + * @fileoverview Node polyfill definitions. + * @license Apache-2.0 + */ + +import fs from "fs"; +import module from "module"; +import path from "path"; +import process from "process"; +import url from "url"; + +/** Whether the environment is Node.js. */ +export const isNode: boolean; + +export { + fs, + module, + path, + process, + url +}; diff --git a/util/node.js b/util/node.js new file mode 100644 index 0000000000..29953de11b --- /dev/null +++ b/util/node.js @@ -0,0 +1,34 @@ +/** + * @fileoverview Node.js polyfills. + * @license Apache-2.0 + */ + +export const isNode = Object.prototype.toString.call(typeof globalThis.process !== 'undefined' ? globalThis.process : 0) === '[object process]'; + +var fs; +var module; +var path; +var process; +var url; + +if (isNode) { + fs = await import("fs"); + module = await import("module"); + path = await import("path"); + process = globalThis.process; + url = await import("url"); +} else { + fs = await import("./browser/fs.js"); + module = await import("./browser/module.js"); + path = await import("./browser/path.js"); + process = await import("./browser/process.js"); + url = await import("./browser/url.js"); +} + +export { + fs, + module, + path, + process, + url +}; diff --git a/cli/util/options.d.ts b/util/options.d.ts similarity index 92% rename from cli/util/options.d.ts rename to util/options.d.ts index 6a727628e9..facc36d622 100644 --- a/cli/util/options.d.ts +++ b/util/options.d.ts @@ -25,12 +25,12 @@ export interface OptionDescription { } /** Configuration object. */ -interface Config { +export interface Config { [key: string]: OptionDescription; } /** Parsing result. */ -interface Result { +export interface Result { /** Parsed options. */ options: OptionSet, /** Unknown options. */ @@ -45,7 +45,7 @@ interface Result { export function parse(argv: string[], config: Config, propagateDefaults?: boolean): Result; /** Help formatting options. */ -interface HelpOptions { +export interface HelpOptions { /** Leading indent. Defaults to 2. */ indent?: number, /** Table padding. Defaults to 24. */ @@ -60,6 +60,9 @@ export function help(config: Config, options?: HelpOptions): string; /** Merges two sets of options into one, preferring the current over the parent set. */ export function merge(config: Config, currentOptions: OptionSet, parentOptions: OptionSet, parentBaseDir: string): OptionSet; +/** Normalizes a path. */ +export function normalizePath(path: string): string; + /** Resolves a single relative path. Keeps absolute paths, otherwise prepends baseDir. */ export function resolvePath(path: string, baseDir: string, useNodeResolution?: boolean): string; diff --git a/cli/util/options.js b/util/options.js similarity index 89% rename from cli/util/options.js rename to util/options.js index ee23563de9..7b1c2de69a 100644 --- a/cli/util/options.js +++ b/util/options.js @@ -3,8 +3,10 @@ * @license Apache-2.0 */ -const path = require("path"); -const colorsUtil = require("./colors"); +import { path, module } from "./node.js"; +import { stdoutColors } from "./terminal.js"; + +const require = module.createRequire(import.meta.url); // type | meaning // -----|--------------- @@ -17,7 +19,7 @@ const colorsUtil = require("./colors"); // S | string array /** Parses the specified command line arguments according to the given configuration. */ -function parse(argv, config, propagateDefaults = true) { +export function parse(argv, config, propagateDefaults = true) { var options = {}; var unknown = []; var args = []; @@ -93,10 +95,8 @@ function parse(argv, config, propagateDefaults = true) { return { options, unknown, arguments: args, trailing }; } -exports.parse = parse; - /** Generates the help text for the specified configuration. */ -function help(config, options) { +export function help(config, options) { if (!options) options = {}; var indent = options.indent || 2; var padding = options.padding || 24; @@ -130,18 +130,16 @@ function help(config, options) { var hasCategories = false; Object.keys(sbCategories).forEach(category => { hasCategories = true; - sb.push(eol + " " + colorsUtil.gray(category) + eol); + sb.push(eol + " " + stdoutColors.gray(category) + eol); sb.push(sbCategories[category].join(eol)); }); - if (hasCategories) { - sb.push(eol + " " + colorsUtil.gray("Other") + eol); + if (hasCategories && sbOther.length) { + sb.push(eol + " " + stdoutColors.gray("Other") + eol); } sb.push(sbOther.join(eol)); return sb.join(eol); } -exports.help = help; - /** Sanitizes an option value to be a valid value of the option's type. */ function sanitizeValue(value, type) { if (value != null) { @@ -152,6 +150,7 @@ function sanitizeValue(value, type) { case "f": return Number(value) || 0; case "s": { if (value === true) return ""; + if (value === false) return null; return String(value); } case "I": { @@ -172,7 +171,7 @@ function sanitizeValue(value, type) { } /** Merges two sets of options into one, preferring the current over the parent set. */ -function merge(config, currentOptions, parentOptions, parentBaseDir) { +export function merge(config, currentOptions, parentOptions, parentBaseDir) { const mergedOptions = {}; for (const [key, { type, mutuallyExclusive, isPath, useNodeResolution, cliOnly }] of Object.entries(config)) { let currentValue = sanitizeValue(currentOptions[key], type); @@ -235,30 +234,29 @@ function merge(config, currentOptions, parentOptions, parentBaseDir) { return mergedOptions; } -exports.merge = merge; - -const dynrequire = typeof __webpack_require__ === "function" - ? __non_webpack_require__ - : require; +/** Normalizes a path. */ +export function normalizePath(p) { + const parsed = path.parse(p); + if (!parsed.root) { + parsed.root = "./"; + } + return path.format(parsed); +} /** Resolves a single possibly relative path. Keeps absolute paths, otherwise prepends baseDir. */ -function resolvePath(p, baseDir, useNodeResolution = false) { +export function resolvePath(p, baseDir, useNodeResolution = false) { if (path.isAbsolute(p)) return p; - if (useNodeResolution && !p.startsWith(".")) { - return dynrequire.resolve(p, { paths: [ baseDir ] }); + if (useNodeResolution && !p.startsWith(".") && require.resolve) { + return require.resolve(p, { paths: [ baseDir ] }); } - return path.join(baseDir, p); + return normalizePath(path.join(baseDir, p)); } -exports.resolvePath = resolvePath; - /** Populates default values on a parsed options result. */ -function addDefaults(config, options) { +export function addDefaults(config, options) { for (const [key, { default: defaultValue }] of Object.entries(config)) { if (options[key] == null && defaultValue != null) { options[key] = defaultValue; } } } - -exports.addDefaults = addDefaults; diff --git a/util/terminal.d.ts b/util/terminal.d.ts new file mode 100644 index 0000000000..2adc19bde2 --- /dev/null +++ b/util/terminal.d.ts @@ -0,0 +1,52 @@ +/** + * @fileoverview Terminal colors utility definitions. + * @license Apache-2.0 + */ + +/** Color code for gray. */ +export const GRAY: string; +/** Color code for red. */ +export const RED: string; +/** Color code for green. */ +export const GREEN: string; +/** Color code for yellow. */ +export const YELLOW: string; +/** Color code for blue. */ +export const BLUE: string; +/** Color code for magenta. */ +export const MAGENTA: string; +/** Color code for cyan. */ +export const CYAN: string; +/** Color code for white. */ +export const WHITE: string; +/** Code to reset any colors. */ +export const RESET: string; + +/** Color utility class. */ +export class Colors { + /** Constructs a new instance for the given stream. */ + constructor(stream: { isTTY: boolean }); + /** Whether terminal colors are enabled. */ + enabled: boolean; + /** Colors a string in gray if {@link enabled}. */ + gray(text: string): string; + /** Colors a string in red if {@link enabled}. */ + red(text: string): string; + /** Colors a string in green if {@link enabled}. */ + green(text: string): string; + /** Colors a string in yellow if {@link enabled}. */ + yellow(text: string): string; + /** Colors a string in blue if {@link enabled}. */ + blue(text: string): string; + /** Colors a string in magenta if {@link enabled}. */ + magenta(text: string): string; + /** Colors a string in cyan if {@link enabled}. */ + cyan(text: string): string; + /** Colors a string in white if {@link enabled}. */ + white(text: string): string; +} + +/** Color utility for stdout. */ +export const stdoutColors: Colors; +/** Color utility for stderr. */ +export const stderrColors: Colors; diff --git a/util/terminal.js b/util/terminal.js new file mode 100644 index 0000000000..93ceee94ee --- /dev/null +++ b/util/terminal.js @@ -0,0 +1,35 @@ +/** + * @fileoverview Terminal utility. + * @license Apache-2.0 + */ + +var proc = typeof process !== "undefined" && process || {}; +var isCI = proc.env && "CI" in proc.env; + +export const GRAY = "\u001b[90m"; +export const RED = "\u001b[91m"; +export const GREEN = "\u001b[92m"; +export const YELLOW = "\u001b[93m"; +export const BLUE = "\u001b[94m"; +export const MAGENTA = "\u001b[95m"; +export const CYAN = "\u001b[96m"; +export const WHITE = "\u001b[97m"; +export const RESET = "\u001b[0m"; + +export class Colors { + constructor(stream) { + this.stream = stream; + this.enabled = Boolean((this.stream && this.stream.isTTY) || isCI); + } + gray(text) { return this.enabled ? GRAY + text + RESET : text; } + red(text) { return this.enabled ? RED + text + RESET : text; } + green(text) { return this.enabled ? GREEN + text + RESET : text; } + yellow(text) { return this.enabled ? YELLOW + text + RESET : text; } + blue(text) { return this.enabled ? BLUE + text + RESET : text; } + magenta(text) { return this.enabled ? MAGENTA + text + RESET : text; } + cyan(text) { return this.enabled ? CYAN + text + RESET : text; } + white(text) { return this.enabled ? WHITE + text + RESET : text; } +} + +export const stdoutColors = new Colors(proc.stdout); +export const stderrColors = new Colors(proc.stderr); diff --git a/util/text.d.ts b/util/text.d.ts new file mode 100644 index 0000000000..d2eec9e27c --- /dev/null +++ b/util/text.d.ts @@ -0,0 +1,26 @@ +/** + * @fileoverview Text utility definitions. + * @license Apache-2.0 + */ + +/** Calculates the UTF-8 byte length of a string. */ +export function utf8Length(string: string): number; + +/** Reads UTF-8 bytes as a string. */ +export function utf8Read(buffer: Uint8Array, start: number, end: number): string; + +/** Writes a string as UTF-8 bytes. */ +export function utf8Write(string: string, buffer: Uint8Array, offset: number): number; + +/** UTF-8 utility. */ +export const utf8: { + /** Calculates the UTF8 byte length of a string. */ + length: typeof utf8Length; + /** Reads UTF8 bytes as a string. */ + read: typeof utf8Read; + /** Writes a string as UTF8 bytes. */ + write: typeof utf8Write; +}; + +/** Computes the difference between an expected and its actual text. */ +export function diff(filename: string, expected: string, actual: string): string; diff --git a/util/text.js b/util/text.js new file mode 100644 index 0000000000..7f3fa91b4b --- /dev/null +++ b/util/text.js @@ -0,0 +1,114 @@ +/** + * @fileoverview Text utility. + * @license Apache-2.0 + */ + +import * as Diff from "diff"; +import { stdoutColors } from "./terminal.js"; + +export function utf8Length(string) { + var len = 0; + for (var i = 0, k = string.length; i < k; ++i) { + let c = string.charCodeAt(i); + if (c < 128) { + len += 1; + } else if (c < 2048) { + len += 2; + } else if ((c & 0xFC00) === 0xD800 && i + 1 < k && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) { + ++i; + len += 4; + } else { + len += 3; + } + } + return len; +} + +export function utf8Read(buffer, start, end) { + var len = end - start; + if (len < 1) return ""; + var parts = null, + chunk = [], + i = 0, // char offset + t; // temporary + while (start < end) { + t = buffer[start++]; + if (t < 128) { + chunk[i++] = t; + } else if (t > 191 && t < 224) { + chunk[i++] = (t & 31) << 6 | buffer[start++] & 63; + } else if (t > 239 && t < 365) { + t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000; + chunk[i++] = 0xD800 + (t >> 10); + chunk[i++] = 0xDC00 + (t & 1023); + } else { + chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63; + } + if (i >= 8192) { + (parts || (parts = [])).push(String.fromCharCode(...chunk)); + i = 0; + } + } + if (parts) { + if (i) parts.push(String.fromCharCode(...chunk.slice(0, i))); + return parts.join(""); + } + return String.fromCharCode(...chunk.slice(0, i)); +} + +export function utf8Write(string, buffer, offset) { + var start = offset; + for (var i = 0, k = string.length; i < k; ++i) { + let c1 = string.charCodeAt(i), c2; + if (c1 < 128) { + buffer[offset++] = c1; + } else if (c1 < 2048) { + buffer[offset++] = c1 >> 6 | 192; + buffer[offset++] = c1 & 63 | 128; + } else if ((c1 & 0xFC00) === 0xD800 && i + 1 < k && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) { + c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF); + ++i; + buffer[offset++] = c1 >> 18 | 240; + buffer[offset++] = c1 >> 12 & 63 | 128; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } else { + buffer[offset++] = c1 >> 12 | 224; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } + } + return offset - start; +} + +export const utf8 = { + length: utf8Length, + read: utf8Read, + write: utf8Write +}; + +export function diff(filename, expected, actual) { + const diff = Diff.structuredPatch(filename, filename, expected, actual, "expected", "actual", { context: 5 }); + if (!diff.hunks.length) return null; + + const out = [ + '--- ' + diff.oldHeader, + '+++ ' + diff.newHeader + ]; + for (const hunk of diff.hunks) { + out.push( + '@@ -' + hunk.oldStart + ',' + hunk.oldLines + + ' +' + hunk.newStart + ',' + hunk.newLines + + ' @@' + ); + out.push(...hunk.lines.map(line => + line.charAt(0) === "+" + ? stdoutColors.green(line) + : line.charAt(0) === "-" + ? stdoutColors.red(line) + : line + )); + } + + return out.join('\n') + '\n'; +} diff --git a/util/tsconfig.json b/util/tsconfig.json new file mode 100644 index 0000000000..36ec54edc7 --- /dev/null +++ b/util/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig-base.json", + "compilerOptions": { + "esModuleInterop": true + }, + "include": [ + "./**/*.ts" + ] +} diff --git a/util/web.d.ts b/util/web.d.ts new file mode 100644 index 0000000000..4433ca2315 --- /dev/null +++ b/util/web.d.ts @@ -0,0 +1,11 @@ +/** + * @fileoverview Web polyfill definitions. + * @license Apache-2.0 + */ + +/** Fetches a file. */ +export function fetch(url: string): Promise<{ + arrayBuffer(): Promise; + text(): Promise; + json(): Promise; // eslint-disable-line @typescript-eslint/no-explicit-any +}>; diff --git a/util/web.js b/util/web.js new file mode 100644 index 0000000000..5f9664866a --- /dev/null +++ b/util/web.js @@ -0,0 +1,33 @@ +/** + * @fileoverview Web polyfills. + * @license Apache-2.0 + */ + +import { fs } from "./node.js"; + +var _fetch = typeof fetch === "function" ? fetch : + url => new Promise((resolve, reject) => { + fs.readFile(url, (err, data) => { + if (err) reject(err); + resolve({ + arrayBuffer() { + let offset = data.byteOffset; + return Promise.resolve(data.buffer.slice(offset, offset + data.byteLength)); + }, + text() { + return Promise.resolve(data.toString()); + }, + json() { + try { + return Promise.resolve(JSON.parse(data.toString())); + } catch (err) { + return Promise.reject(err); + } + } + }); + }); + }); + +export { + _fetch as fetch +}; diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 939fdcf879..0000000000 --- a/webpack.config.js +++ /dev/null @@ -1,135 +0,0 @@ -const path = require("path"); -const fs = require("fs"); -const webpack = require("webpack"); -const TerserPlugin = require('terser-webpack-plugin'); - -function preamble(name) { - return [ - "/**", - " * @license", - " * " + name, - " * Copyright Daniel Wirtz / The AssemblyScript Authors.", - " * SPDX-License-Identifier: Apache-2.0", - " */" - ].join("\n"); -} - -// Build the C-like library -const lib = { - entry: [ "./src/glue/js", "./src/index.ts" ], - module: { - rules: [ - { - test: /\.ts$/, - use: "ts-loader", - exclude: /node_modules/ - } - ] - }, - externals: [ - "binaryen" - ], - resolve: { - extensions: [ ".ts", ".js" ] - }, - output: { - filename: "assemblyscript.js", - path: path.resolve(__dirname, "dist"), - library: "assemblyscript", - libraryTarget: "umd", - globalObject: "typeof self !== 'undefined' ? self : this" - }, - devtool: "source-map", - performance: { - hints : false - }, - optimization: { - minimize: true, - minimizer: [ - new TerserPlugin({ - terserOptions: { - output: { - comments: false, - preamble: preamble("The AssemblyScript Compiler.") - } - }, - parallel: true, - sourceMap: true - }) - ], - } -}; - -// Build asc for browser usage -const shimDir = path.join(__dirname, "cli", "shim"); -const bin = { - context: path.join(__dirname, "cli"), - entry: [ "./asc.js" ], - externals: [ - "binaryen", - "assemblyscript" - ], - node: { - "buffer": false, - "fs": false, - "global": true, - "os": false, - "path": false, - "process": false, - "crypto": false - }, - output: { - filename: "asc.js", - path: path.resolve(__dirname, "dist"), - library: "asc", - libraryTarget: "umd", - globalObject: "typeof self !== 'undefined' ? self : this" - }, - devtool: "source-map", - performance: { - hints : false - }, - plugins: [ - new webpack.DefinePlugin({ - BUNDLE_VERSION: JSON.stringify(require("./package.json").version), - BUNDLE_LIBRARY: (() => { - const libDir = path.join(__dirname, "std", "assembly"); - const libFiles = require("glob").sync("**/!(*.d).ts", { cwd: libDir }); - const lib = {}; - libFiles.forEach(file => lib[file.replace(/\.ts$/, "")] = bundleFile(path.join(libDir, file))); - return lib; - })(), - BUNDLE_DEFINITIONS: { - "assembly": bundleFile(path.join(__dirname, "std", "assembly", "index.d.ts")), - "portable": bundleFile(path.join(__dirname, "std", "portable", "index.d.ts")) - }, - __dirname: JSON.stringify(".") - }), - - // Browser shims - new webpack.NormalModuleReplacementPlugin(/^path$/, path.join(shimDir, "path")), - new webpack.NormalModuleReplacementPlugin(/^process$/, path.join(shimDir, "process")), - new webpack.NormalModuleReplacementPlugin(/^fs$/, path.join(shimDir, "fs")) - ], - optimization: { - minimize: true, - minimizer: [ - new TerserPlugin({ - terserOptions: { - output: { - comments: false, - preamble: preamble("The AssemblyScript Compiler Frontend.") - } - }, - parallel: true, - sourceMap: true - }) - ], - } -}; - -function bundleFile(filename) { - return JSON.stringify(fs.readFileSync(filename, { encoding: "utf8" }).replace(/\r\n/g, "\n")); -} - -module.exports = [ lib, bin ];